1 #ifndef PhysicsTools_Utilities_SimplifyRatio_h
2 #define PhysicsTools_Utilities_SimplifyRatio_h
14 #include <type_traits>
28 template <
int n,
typename A,
bool positive = (n >= 0)>
142 template <
typename Prod,
bool simplify = Prod::value>
150 template <
typename Prod>
154 return type(a * b, c);
158 template <
typename F,
typename G,
typename H>
166 inline static const B&
b(
const F&
f,
const G&
g,
const H&
h) {
return g; }
167 inline static const C&
c(
const F&
f,
const G&
g,
const H&
h) {
return h; }
177 inline static const B&
b(
const F&
f,
const G&
g,
const H&
h) {
return h; }
178 inline static const C&
c(
const F&
f,
const G&
g,
const H&
h) {
return g; }
188 inline static const B&
b(
const F&
f,
const G&
g,
const H&
h) {
return h; }
189 inline static const C&
c(
const F&
f,
const G&
g,
const H&
h) {
return f; }
210 template <
typename Prod,
bool simplify = Prod::value>
218 template <
typename Prod>
222 return type(c, a * b);
226 template <
typename F,
typename G,
typename H>
234 inline static const B&
b(
const F&
f,
const G&
g,
const H&
h) {
return g; }
235 inline static const C&
c(
const F&
f,
const G&
g,
const H&
h) {
return h; }
245 inline static const B&
b(
const F&
f,
const G&
g,
const H&
h) {
return h; }
246 inline static const C&
c(
const F&
f,
const G&
g,
const H&
h) {
return g; }
256 inline static const B&
b(
const F&
f,
const G&
g,
const H&
h) {
return h; }
257 inline static const C&
c(
const F&
f,
const G&
g,
const H&
h) {
return f; }
284 template <TYPT3,
bool simplify = false>
const Numerical< n > & num()
const edm::EventSetup & c
AuxSumRatio< A, B, C, ratio1::value or ratio2::value > aux
typedef POWER(A, NUM(n)) arg
static const B & b(const F &f, const G &g, const H &h)
#define RATIO_RULE(TMPL, T1, T2, RES, COMB)
static type combine(const typename Sum< A, B >::type &_1, const typename Sum< B, A >::type &_2)
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)
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 const C & c(const F &f, const G &g, const H &h)
AuxProductRatio< prod >::type type
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 B & b(const F &f, const G &g, const H &h)
static type combine(const A &_1, const B &_2)
static type combine(const typename Prod::A &a, const typename Prod::B &b, const typename Prod::C &c)
std::conditional< prod1::value, prod1, typename std::conditional< prod2::value, prod2, prod0 >::type >::type prod
static const std::string B
static type combine(const typename Prod::A &a, const typename Prod::B &b, const typename Prod::C &c)
std::conditional< prod1::value, prod1, typename std::conditional< prod2::value, prod2, prod0 >::type >::type prod
static type combine(const H &h, const ProductStruct< F, G > &fg)
TEMPL(T1) struct Divides0
static const B & b(const F &f, const G &g, const H &h)
AuxProductRatio2< prod >::type type
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)
typedef PROD(F, SUM(RATIO(A, F), RATIO(B, F))) type
RatioStruct< typename Sum< A, B >::type, typename Sum< B, A >::type > type
#define COMBINE(A, B, RES)
static type combine(const ProductStruct< F, G > &fg, const H &h)
typedef DIFF(PROD(A, B1), PRIMIT(X, PROD(A1, B1))) type
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 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)
Power< A, B >::type pow(const A &a, const B &b)