8 #include "RooAbsReal.h" 9 #include "RooRealVar.h" 12 RooHORNSdini_misID::RooHORNSdini_misID(
const char *name,
const char *title, RooAbsReal& _m, RooAbsReal& _a, RooAbsReal& _b, RooAbsReal& _csi, RooAbsReal& _m1, RooAbsReal& _s1, RooAbsReal& _m2, RooAbsReal& _s2, RooAbsReal& _m3, RooAbsReal& _s3, RooAbsReal& _m4, RooAbsReal& _s4 ,RooAbsReal& _f1, RooAbsReal& _f2, RooAbsReal& _f3 ) :
14 RooAbsPdf(name, title),
15 m(
"m",
"Dependent", this, _m),
16 a(
"a",
"a", this, _a),
17 b(
"b",
"b", this, _b),
18 csi(
"csi",
"csi", this, _csi),
19 m1(
"m1",
"m1", this, _m1),
20 s1(
"s1",
"s1", this, _s1),
21 m2(
"m2",
"m2", this, _m2),
22 s2(
"s2",
"s2", this, _s2),
23 m3(
"m3",
"m3", this, _m3),
24 s3(
"s3",
"s3", this, _s3),
25 m4(
"m4",
"m4", this, _m4),
26 s4(
"s4",
"s4", this, _s4),
27 f1(
"f1",
"f1", this, _f1),
28 f2(
"f2",
"f2", this, _f2),
29 f3(
"f3",
"f3", this, _f3)
35 RooAbsPdf(other, name),
m(
"m", this, other.
m), a(
"a", this, other.a), b(
"b", this, other.b), csi(
"csi", this, other.csi), m1(
"m1", this, other.m1), s1(
"s1", this, other.s1),
m2(
"m2", this, other.
m2), s2(
"s2", this, other.s2),
m3(
"m3", this, other.
m3), s3(
"s3", this, other.s3), m4(
"m4", this, other.m4), s4(
"s4", this, other.s4), f1(
"f1", this, other.f1), f2(
"f2", this, other.f2), f3(
"f3", this, other.f3)
50 double B_NEW = (a_new+b_new)/2;
61 double firstG1 = ((2*(a_new-2*B_NEW+(
m-
m1))*
s1)/exp((a_new-(
m-
m1))*(a_new-(
m-
m1))/(2*
s1*
s1)) - (2*(b_new-2*B_NEW+(
m-
m1))*
s1)/exp((b_new-(
m-
m1))*(b_new-(
m-
m1))/(2*
s1*
s1))+ sqrt(2*TMath::Pi())*((B_NEW-(
m-
m1))*(B_NEW-(
m-
m1)) +
s1*
s1)*TMath::Erf((-a_new+(
m-
m1))/(sqrt(2)*
s1)) - sqrt(2*TMath::Pi())*((B_NEW-(
m-
m1))*(B_NEW-(
m-
m1)) +
s1*
s1) * TMath::Erf((-b_new+(
m-
m1))/(sqrt(2)*
s1)))/(2*sqrt(2*TMath::Pi()));
62 double secondG1 = (((2*
s1*(a_new*a_new + B_NEW*B_NEW + a_new*(
m-
m1) + (
m-
m1)*(
m-
m1) - 2*B_NEW*(a_new+(
m-
m1)) + 2*(
s1*
s1)))/exp((a_new-(
m-
m1))*(a_new-(
m-
m1))/(2*(
s1*
s1))) - (2*
s1*(b_new*b_new + B_NEW*B_NEW + b_new*(
m-
m1) + (
m-
m1)*(
m-
m1) - 2*B_NEW*(b_new + (
m-
m1)) + 2*(
s1*
s1)))/exp((b_new - (
m-
m1))*(b_new - (
m-
m1))/(2*(
s1*
s1))) - sqrt(2*TMath::Pi())*(-((B_NEW - (
m-
m1))*(B_NEW - (
m-
m1)) *(
m-
m1)) + (2*B_NEW - 3*(
m-
m1))*(
s1*
s1))*TMath::Erf((-a_new + (
m-
m1))/(sqrt(2)*
s1)) + sqrt(2*TMath::Pi())* (-((B_NEW - (
m-
m1))*(B_NEW - (
m-
m1))*(
m-
m1)) + (2*B_NEW - 3*(
m-
m1))*(
s1*
s1)) *TMath::Erf((-b_new + (
m-
m1))/(sqrt(2)*
s1)))/(2 *sqrt(2*TMath::Pi())));
63 double CURVEG1 = fabs((1-
csi)*secondG1 + (b_new*
csi - a_new)*firstG1);
67 double firstG2 = ((2*(a_new-2*B_NEW+(
m-
m2))*
s2)/exp((a_new-(
m-
m2))*(a_new-(
m-
m2))/(2*
s2*
s2)) - (2*(b_new-2*B_NEW+(
m-
m2))*
s2)/exp((b_new-(
m-
m2))*(b_new-(
m-
m2))/(2*
s2*
s2))+ sqrt(2*TMath::Pi())*((B_NEW-(
m-
m2))*(B_NEW-(
m-
m2)) +
s2*
s2)*TMath::Erf((-a_new+(
m-
m2))/(sqrt(2)*
s2)) - sqrt(2*TMath::Pi())*((B_NEW-(
m-
m2))*(B_NEW-(
m-
m2)) +
s2*
s2) * TMath::Erf((-b_new+(
m-
m2))/(sqrt(2)*
s2)))/(2*sqrt(2*TMath::Pi()));
68 double secondG2 = (((2*
s2*(a_new*a_new + B_NEW*B_NEW + a_new*(
m-
m2) + (
m-
m2)*(
m-
m2) - 2*B_NEW*(a_new+(
m-
m2)) + 2*(
s2*
s2)))/exp((a_new-(
m-
m2))*(a_new-(
m-
m2))/(2*(
s2*
s2))) - (2*
s2*(b_new*b_new + B_NEW*B_NEW + b_new*(
m-
m2) + (
m-
m2)*(
m-
m2) - 2*B_NEW*(b_new + (
m-
m2)) + 2*(
s2*
s2)))/exp((b_new - (
m-
m2))*(b_new - (
m-
m2))/(2*(
s2*
s2))) - sqrt(2*TMath::Pi())*(-((B_NEW - (
m-
m2))*(B_NEW - (
m-
m2)) *(
m-
m2)) + (2*B_NEW - 3*(
m-
m2))*(
s2*
s2))*TMath::Erf((-a_new + (
m-
m2))/(sqrt(2)*
s2)) + sqrt(2*TMath::Pi())* (-((B_NEW - (
m-
m2))*(B_NEW - (
m-
m2))*(
m-
m2)) + (2*B_NEW - 3*(
m-
m2))*(
s2*
s2)) *TMath::Erf((-b_new + (
m-
m2))/(sqrt(2)*
s2)))/(2 *sqrt(2*TMath::Pi())));
69 double CURVEG2 = fabs((1-
csi)*secondG2 + (b_new*
csi - a_new)*firstG2);
73 double firstG3 = ((2*(a_new-2*B_NEW+(
m-
m3))*
s3)/exp((a_new-(
m-
m3))*(a_new-(
m-
m3))/(2*
s3*
s3)) - (2*(b_new-2*B_NEW+(
m-
m3))*
s3)/exp((b_new-(
m-
m3))*(b_new-(
m-
m3))/(2*
s3*
s3))+ sqrt(2*TMath::Pi())*((B_NEW-(
m-
m3))*(B_NEW-(
m-
m3)) +
s3*
s3)*TMath::Erf((-a_new+(
m-
m3))/(sqrt(2)*
s3)) - sqrt(2*TMath::Pi())*((B_NEW-(
m-
m3))*(B_NEW-(
m-
m3)) +
s3*
s3) * TMath::Erf((-b_new+(
m-
m3))/(sqrt(2)*
s3)))/(2*sqrt(2*TMath::Pi()));
74 double secondG3 = (((2*
s3*(a_new*a_new + B_NEW*B_NEW + a_new*(
m-
m3) + (
m-
m3)*(
m-
m3) - 2*B_NEW*(a_new+(
m-
m3)) + 2*(
s3*
s3)))/exp((a_new-(
m-
m3))*(a_new-(
m-
m3))/(2*(
s3*
s3))) - (2*
s3*(b_new*b_new + B_NEW*B_NEW + b_new*(
m-
m3) + (
m-
m3)*(
m-
m3) - 2*B_NEW*(b_new + (
m-
m3)) + 2*(
s3*
s3)))/exp((b_new - (
m-
m3))*(b_new - (
m-
m3))/(2*(
s3*
s3))) - sqrt(2*TMath::Pi())*(-((B_NEW - (
m-
m3))*(B_NEW - (
m-
m3)) *(
m-
m3)) + (2*B_NEW - 3*(
m-
m3))*(
s3*
s3))*TMath::Erf((-a_new + (
m-
m3))/(sqrt(2)*
s3)) + sqrt(2*TMath::Pi())* (-((B_NEW - (
m-
m3))*(B_NEW - (
m-
m3))*(
m-
m3)) + (2*B_NEW - 3*(
m-
m3))*(
s3*
s3)) *TMath::Erf((-b_new + (
m-
m3))/(sqrt(2)*
s3)))/(2 *sqrt(2*TMath::Pi())));
75 double CURVEG3 = fabs((1-
csi)*secondG3 + (b_new*
csi - a_new)*firstG3);
81 double firstG4 = ((2*(a_new-2*B_NEW+(
m-
m4))*
s4)/exp((a_new-(
m-
m4))*(a_new-(
m-
m4))/(2*
s4*
s4)) - (2*(b_new-2*B_NEW+(
m-
m4))*
s4)/exp((b_new-(
m-
m4))*(b_new-(
m-
m4))/(2*
s4*
s4))+ sqrt(2*TMath::Pi())*((B_NEW-(
m-
m4))*(B_NEW-(
m-
m4)) +
s4*
s4)*TMath::Erf((-a_new+(
m-
m4))/(sqrt(2)*
s4)) - sqrt(2*TMath::Pi())*((B_NEW-(
m-
m4))*(B_NEW-(
m-
m4)) +
s4*
s4) * TMath::Erf((-b_new+(
m-
m4))/(sqrt(2)*
s4)))/(2*sqrt(2*TMath::Pi()));
82 double secondG4 = (((2*
s4*(a_new*a_new + B_NEW*B_NEW + a_new*(
m-
m4) + (
m-
m4)*(
m-
m4) - 2*B_NEW*(a_new+(
m-
m4)) + 2*(
s4*
s4)))/exp((a_new-(
m-
m4))*(a_new-(
m-
m4))/(2*(
s4*
s4))) - (2*
s4*(b_new*b_new + B_NEW*B_NEW + b_new*(
m-
m4) + (
m-
m4)*(
m-
m4) - 2*B_NEW*(b_new + (
m-
m4)) + 2*(
s4*
s4)))/exp((b_new - (
m-
m4))*(b_new - (
m-
m4))/(2*(
s4*
s4))) - sqrt(2*TMath::Pi())*(-((B_NEW - (
m-
m4))*(B_NEW - (
m-
m4)) *(
m-
m4)) + (2*B_NEW - 3*(
m-
m4))*(
s4*
s4))*TMath::Erf((-a_new + (
m-
m4))/(sqrt(2)*
s4)) + sqrt(2*TMath::Pi())* (-((B_NEW - (
m-
m4))*(B_NEW - (
m-
m4))*(
m-
m4)) + (2*B_NEW - 3*(
m-
m4))*(
s4*
s4)) *TMath::Erf((-b_new + (
m-
m4))/(sqrt(2)*
s4)))/(2 *sqrt(2*TMath::Pi())));
83 double CURVEG4 = fabs((1-
csi)*secondG4 + (b_new*
csi - a_new)*firstG4);
86 return fabs(
f1*CURVEG1)+ fabs(
f2*CURVEG2)+ fabs(
f3*CURVEG3) + fabs((1-
f1-
f2-
f3)*CURVEG4);
Double_t evaluate() const
RooHORNSdini_misID(const char *name, const char *title, RooAbsReal &_m, RooAbsReal &_a, RooAbsReal &_b, RooAbsReal &_csi, RooAbsReal &_m1, RooAbsReal &_s1, RooAbsReal &_m2, RooAbsReal &_s2, RooAbsReal &_m3, RooAbsReal &_s3, RooAbsReal &_m4, RooAbsReal &_s4, RooAbsReal &_f1, RooAbsReal &_f2, RooAbsReal &_f3)