1 #ifndef PhysicsTools_Utilities_SimplifySum_h 2 #define PhysicsTools_Utilities_SimplifySum_h 10 #include <type_traits> 11 #include <boost/mpl/if.hpp> 79 struct ParametricSimplifiedSum<1, 1, A, false> {
86 public ParametricSimplifiedSum<n, m, A> { };
90 public ParametricSimplifiedSum<1, n, A> { };
94 public ParametricSimplifiedSum<n, 1, A> { };
98 public ParametricSimplifiedSum<1, 1, A> { };
123 template <
typename Prod,
bool simplify = Prod::value>
126 COMBINE(typename Prod::AB, typename Prod::
C, _1 + _2);
132 COMBINE(typename Prod::AB, typename Prod::C, type(_1, _2));
138 typedef F
A;
typedef G
B;
typedef H C;
140 inline static const A&
a(const F&
f, const G&
g, const
H&
h) {
return f; }
141 inline static const B&
b(
const F&
f,
const G&
g,
const H&
h) {
return g; }
142 inline static const C&
c(
const F&
f,
const G&
g,
const H&
h) {
return h; }
146 typedef F
A;
typedef H B;
typedef G
C;
149 inline static const A&
a(const F&
f, const G&
g, const
H&
h) {
return f; }
150 inline static const B&
b(
const F&
f,
const G&
g,
const H&
h) {
return h; }
151 inline static const C&
c(
const F&
f,
const G&
g,
const H&
h) {
return g; }
155 typedef G
A;
typedef H B;
typedef F
C;
158 inline static const A&
a(const F&
f, const G&
g, const
H&
h) {
return g; }
159 inline static const B&
b(
const F&
f,
const G&
g,
const H&
h) {
return h; }
160 inline static const C&
c(
const F&
f,
const G&
g,
const H&
h) {
return f; }
165 ::boost::mpl::if_ <
prod1,
167 typename ::boost::mpl::if_ <
prod2,
185 public SimplSumOrd<A, B, C> { };
::boost::mpl::if_< prod1, prod1, typename::boost::mpl::if_< prod2, prod2, prod0 >::type >::type prod
AuxSum< prod >::type type
const Numerical< n > & num()
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)
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
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)
def template(fileName, svg, replaceme="REPLACEME")
static const std::string B
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)
static type get(const PROD_S(A, B)&_)