1 #ifndef PhysicsTools_Utilities_SimplifySum_h
2 #define PhysicsTools_Utilities_SimplifySum_h
10 #include <type_traits>
75 struct ParametricSimplifiedSum<1, 1, A, false> {
84 struct
Sum<A,
PROD_S(
NUM(n), A)> : public ParametricSimplifiedSum<1, n, A> {};
87 struct
Sum<
PROD_S(
NUM(n), A), A> : public ParametricSimplifiedSum<n, 1, A> {};
90 struct
Sum<A, A> : public ParametricSimplifiedSum<1, 1, A> {};
97 : public ParametricSimplifiedSum<1, 1,
MINUS_S(
PROD_S(A, B))> {};
100 struct
Sum<
NUM(n),
NUM(n)> : public ParametricSimplifiedSum<1, 1,
NUM(n)> {};
109 template <
typename Prod,
bool simplify = Prod::value>
112 COMBINE(typename Prod::AB, typename Prod::
C, _1 + _2);
118 COMBINE(typename Prod::AB, typename Prod::C, type(_1, _2));
129 inline static const B&
b(
const F&
f,
const G&
g,
const H&
h) {
return g; }
130 inline static const C&
c(
const F&
f,
const G&
g,
const H&
h) {
return h; }
140 inline static const B&
b(
const F&
f,
const G&
g,
const H&
h) {
return h; }
141 inline static const C&
c(
const F&
f,
const G&
g,
const H&
h) {
return g; }
151 inline static const B&
b(
const F&
f,
const G&
g,
const H&
h) {
return h; }
152 inline static const C&
c(
const F&
f,
const G&
g,
const H&
h) {
return f; }
171 struct
Sum<
SUM_S(A,
B), C> : public SimplSumOrd<A, B, C> {};
AuxSum< prod >::type type
const Numerical< n > & num()
const edm::EventSetup & c
static const B & b(const F &f, const G &g, const H &h)
static const B & b(const F &f, const G &g, const H &h)
static const C & c(const F &f, const G &g, const H &h)
static const C & c(const F &f, const G &g, const H &h)
SumStruct< arg1, arg2 > type
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
static type combine(const SumStruct< F, G > &fg, const H &h)
#define SUM_RULE(TMPL, T1, T2, RES, COMB)
static type combine(const typename Prod::AB &_1, const typename Prod::C &_2)
static const B & b(const F &f, const G &g, const H &h)
static const C & c(const F &f, const G &g, const H &h)
TEMPL(T1) struct Divides0
#define DIFF_RULE(TMPL, T1, T2, RES, COMB)
typedef PROD(F, SUM(RATIO(A, F), RATIO(B, F))) type
#define COMBINE(A, B, RES)
static uInt32 F(BLOWFISH_CTX *ctx, uInt32 x)
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
static type get(const PROD_S(A, B)&_)
std::conditional< prod1::value, prod1, typename std::conditional< prod2::value, prod2, prod0 >::type >::type prod