MINT2
RooHORNSdini_misID.cpp
Go to the documentation of this file.
1 // -- CLASS DESCRIPTION [PDF] --
2 
3 #include "RooFit.h"
4 #include <iostream>
5 #include <math.h>
6 
8 #include "RooAbsReal.h"
9 #include "RooRealVar.h"
10 
11 
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 ) :
13 
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)
30 {
31 }
32 
33 
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)
36 {
37 }
38 
39 
40 
41 
42 
44 {
45 
47  //double t = m;
48  double a_new = a;
49  double b_new = b;
50  double B_NEW = (a_new+b_new)/2;
52 
54  //mult = ((1-csi)/(b_new-a_new)*m + (b_new*csi - a_new)/(b_new-a_new));
55  //double CURVEG1 = fabs((1-csi)*secondG1 + (b_new*csi - a_new)*firstG1);
57 
58 
59 
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);
65 
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);
71 
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);
77 
78 
80 
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);
85 
86  return fabs(f1*CURVEG1)+ fabs(f2*CURVEG2)+ fabs(f3*CURVEG3) + fabs((1-f1-f2-f3)*CURVEG4);
87 
88 }
Double_t evaluate() const
static const double m2
static const double m
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)
static const double m3