10 #ifndef ROOT_Minuit2_LaSum
11 #define ROOT_Minuit2_LaSum
22 #define OP_ADD1(MT,MAT1,T) \
23 inline ABObj<MT,MAT1,T> operator-(const ABObj<MT,MAT1,T>& m) {\
24 return ABObj<MT,MAT1,T> (m.Obj(), T(-1.)*m.f());\
27 inline ABObj<MT,ABSum<ABObj<MT,MAT1,T>, ABObj<MT,MAT1,T> >,T> operator+(const ABObj<MT,MAT1,T>& a, const ABObj<MT,MAT1,T>& b) { \
28 return ABObj<MT,ABSum<ABObj<MT,MAT1,T>, ABObj<MT,MAT1,T> >,T>(ABSum<ABObj<MT,MAT1,T>, ABObj<MT,MAT1,T> >(a, b)); \
30 inline ABObj<MT,ABSum<ABObj<MT,MAT1,T>, ABObj<MT,MAT1,T> >,T> operator-(const ABObj<MT,MAT1,T>& a, const ABObj<MT,MAT1,T>& b) { \
31 return ABObj<MT,ABSum<ABObj<MT,MAT1,T>, ABObj<MT,MAT1,T> >,T>(ABSum<ABObj<MT,MAT1,T>, ABObj<MT,MAT1,T> >(a,ABObj<MT,MAT1,T> (b.Obj(),T(-1.)*b.f()))); \
37 #define OP_SCALE(MT,MAT1,T) \
38 inline ABObj<MT,MAT1,T> operator*(T f, const MAT1& obj) { \
39 return ABObj<MT,MAT1,T>(obj, f); \
45 #define OP_SCALE1(MT,MAT1,T) \
46 inline ABObj<MT,MAT1,T> operator/(const MAT1& obj, T f) { \
47 return ABObj<MT,MAT1,T>(obj, 1./f); \
53 #define OP_MIN(MT,MAT1,T) \
54 inline ABObj<MT,MAT1,T> operator-(const MAT1& obj) { \
55 return ABObj<MT,MAT1,T>(obj, T(-1.)); \
58 OP_MIN(sym,LASymMatrix,
double)
59 OP_MIN(vec,LAVector,
double)
65 #endif // ROOT_Minuit2_LaSum
Namespace for new ROOT classes and functions.
#define OP_SCALE(MT, MAT1, T)
#define OP_SCALE1(MT, MAT1, T)
#define OP_ADD1(MT, MAT1, T)
#define OP_MIN(MT, MAT1, T)