10 #ifndef ROOT_Minuit2_ABProd
11 #define ROOT_Minuit2_ABProd
20 template<
class M1,
class M2>
25 ABProd() : fA(M1()), fB(M2()) {}
27 ABProd& operator=(
const ABProd&) {
return *
this;}
29 template<
class MI1,
class MI2>
30 ABProd& operator=(
const ABProd<MI1,MI2>&) {
return *
this;}
34 ABProd(
const M1& a,
const M2& b): fA(a), fB(b) {}
38 ABProd(
const ABProd& prod) : fA(prod.fA), fB(prod.fB) {}
40 template<
class MI1,
class MI2>
41 ABProd(
const ABProd<MI1,MI2>& prod) : fA(M1(prod.A() )), fB(M2(prod.B() )) {}
43 const M1& A()
const {
return fA;}
44 const M2& B()
const {
return fB;}
53 template<
class atype,
class A,
class btype,
class B,
class T>
54 inline ABObj<typename AlgebraicProdType<atype, btype>::Type, ABProd<ABObj<atype,A,T>, ABObj<btype,B,T> >,T> operator*(
const ABObj<atype,A,T>& a,
const ABObj<btype,B,T>& b) {
56 return ABObj<typename AlgebraicProdType<atype,btype>::Type, ABProd<ABObj<atype,A,T>, ABObj<btype,B,T> >,T>(ABProd<ABObj<atype,A,T>, ABObj<btype,B,T> >(a, b));
63 #endif // ROOT_Minuit2_ABProd