MINT2
RooHORNSdini.cpp
Go to the documentation of this file.
1 
2 #include "RooFit.h"
3 #include <iostream>
4 #include <math.h>
5 
6 #include "Mint/RooHORNSdini.h"
7 #include "RooAbsReal.h"
8 #include "RooRealVar.h"
9 #include "TMath.h"
10 
11 
12 
13  RooHORNSdini::RooHORNSdini(const char *name, const char *title,
14  RooAbsReal& _m, RooAbsReal& _a, RooAbsReal& _b, RooAbsReal& _csi, RooAbsReal& _shift, RooAbsReal& _sigma, RooAbsReal& _ratio_sigma, RooAbsReal& _fraction_sigma ) :
15 
16 
17  RooAbsPdf(name, title),
18  m("m", "Dependent", this, _m),
19  a("a", "a", this, _a),
20  b("b", "b", this, _b),
21  csi("csi", "csi", this, _csi),
22  shift("shift", "shift", this, _shift),
23  sigma("sigma", "sigma", this, _sigma),
24  ratio_sigma("ratio_sigma", "ratio_sigma", this, _ratio_sigma),
25  fraction_sigma("fraction_sigma", "fraction_sigma", this, _fraction_sigma)
26 {
27 }
28 
29 
30 RooHORNSdini::RooHORNSdini(const RooHORNSdini& other, const char* name) :
31  RooAbsPdf(other, name), m("m", this, other.m), a("a", this, other.a), b("b", this, other.b), csi("csi", this, other.csi), shift("shift", this, other.shift), sigma("sigma", this, other.sigma), ratio_sigma("ratio_sigma", this, other.ratio_sigma), fraction_sigma("fraction_sigma", this, other.fraction_sigma)
32 {
33 }
34 
35 
36 Double_t RooHORNSdini::evaluate() const
37 {
38 
40  double a_new = a;
41  double b_new = b;
42  double B_NEW = (a_new+b_new)/2;
43  double sigma2 = sigma * ratio_sigma;
45 
47  //mult = ((1-csi)/(b_new-a_new)*m + (b_new*csi - a_new)/(b_new-a_new));
49 
50 
51 
53  double firstG1 = ((2*(a_new-2*B_NEW+(m-shift))*sigma)/exp((a_new-(m-shift))*(a_new-(m-shift))/(2*sigma*sigma)) - (2*(b_new-2*B_NEW+(m-shift))*sigma)/exp((b_new-(m-shift))*(b_new-(m-shift))/(2*sigma*sigma))+ sqrt(2*TMath::Pi())*((B_NEW-(m-shift))*(B_NEW-(m-shift)) + sigma*sigma)*TMath::Erf((-a_new+(m-shift))/(sqrt(2)*sigma)) - sqrt(2*TMath::Pi())*((B_NEW-(m-shift))*(B_NEW-(m-shift)) + sigma*sigma) * TMath::Erf((-b_new+(m-shift))/(sqrt(2)*sigma)))/(2*sqrt(2*TMath::Pi()));
54  double secondG1 = (((2*sigma*(a_new*a_new + B_NEW*B_NEW + a_new*(m-shift) + (m-shift)*(m-shift) - 2*B_NEW*(a_new+(m-shift)) + 2*(sigma*sigma)))/exp((a_new-(m-shift))*(a_new-(m-shift))/(2*(sigma*sigma))) - (2*sigma*(b_new*b_new + B_NEW*B_NEW + b_new*(m-shift) + (m-shift)*(m-shift) - 2*B_NEW*(b_new + (m-shift)) + 2*(sigma*sigma)))/exp((b_new - (m-shift))*(b_new - (m-shift))/(2*(sigma*sigma))) - sqrt(2*TMath::Pi())*(-((B_NEW - (m-shift))*(B_NEW - (m-shift)) *(m-shift)) + (2*B_NEW - 3*(m-shift))*(sigma*sigma))*TMath::Erf((-a_new + (m-shift))/(sqrt(2)*sigma)) + sqrt(2*TMath::Pi())* (-((B_NEW - (m-shift))*(B_NEW - (m-shift))*(m-shift)) + (2*B_NEW - 3*(m-shift))*(sigma*sigma)) *TMath::Erf((-b_new + (m-shift))/(sqrt(2)*sigma)))/(2 *sqrt(2*TMath::Pi())));
55  double CURVEG1 = fabs((1-csi)*secondG1 + (b_new*csi - a_new)*firstG1);
57 
58 
59 
61  double firstG2 = ((2*(a_new-2*B_NEW+(m-shift))*sigma2)/exp((a_new-(m-shift))*(a_new-(m-shift))/(2*sigma2*sigma2)) - (2*(b_new-2*B_NEW+(m-shift))*sigma2)/exp((b_new-(m-shift))*(b_new-(m-shift))/(2*sigma2*sigma2))+ sqrt(2*TMath::Pi())*((B_NEW-(m-shift))*(B_NEW-(m-shift)) + sigma2*sigma2)*TMath::Erf((-a_new+(m-shift))/(sqrt(2)*sigma2)) - sqrt(2*TMath::Pi())*((B_NEW-(m-shift))*(B_NEW-(m-shift)) + sigma2*sigma2) * TMath::Erf((-b_new+(m-shift))/(sqrt(2)*sigma2)))/(2*sqrt(2*TMath::Pi()));
62  double secondG2 = (((2*sigma2*(a_new*a_new + B_NEW*B_NEW + a_new*(m-shift) + (m-shift)*(m-shift) - 2*B_NEW*(a_new+(m-shift)) + 2*(sigma2*sigma2)))/exp((a_new-(m-shift))*(a_new-(m-shift))/(2*(sigma2*sigma2))) - (2*sigma2*(b_new*b_new + B_NEW*B_NEW + b_new*(m-shift) + (m-shift)*(m-shift) - 2*B_NEW*(b_new + (m-shift)) + 2*(sigma2*sigma2)))/exp((b_new - (m-shift))*(b_new - (m-shift))/(2*(sigma2*sigma2))) - sqrt(2*TMath::Pi())*(-((B_NEW - (m-shift))*(B_NEW - (m-shift)) *(m-shift)) + (2*B_NEW - 3*(m-shift))*(sigma2*sigma2))*TMath::Erf((-a_new + (m-shift))/(sqrt(2)*sigma2)) + sqrt(2*TMath::Pi())* (-((B_NEW - (m-shift))*(B_NEW - (m-shift))*(m-shift)) + (2*B_NEW - 3*(m-shift))*(sigma2*sigma2)) *TMath::Erf((-b_new + (m-shift))/(sqrt(2)*sigma2)))/(2 *sqrt(2*TMath::Pi())));
63  double CURVEG2 = fabs((1-csi)*secondG2 + (b_new*csi - a_new)*firstG2);
65 
66 
67  return fraction_sigma*CURVEG1 + (1-fraction_sigma)*CURVEG2;
68 
69 
70 }
RooRealProxy sigma
Definition: RooHORNSdini.h:43
RooRealProxy fraction_sigma
Definition: RooHORNSdini.h:45
RooHORNSdini(const char *name, const char *title, RooAbsReal &_m, RooAbsReal &_a, RooAbsReal &_b, RooAbsReal &_csi, RooAbsReal &_shift, RooAbsReal &_sigma, RooAbsReal &_ratio_sigma, RooAbsReal &_fraction_sigma)
RooRealProxy b
Definition: RooHORNSdini.h:40
Double_t evaluate() const
RooRealProxy a
Definition: RooHORNSdini.h:39
RooRealProxy csi
Definition: RooHORNSdini.h:41
RooRealProxy m
Definition: RooHORNSdini.h:38
static const double m
RooRealProxy shift
Definition: RooHORNSdini.h:42
RooRealProxy ratio_sigma
Definition: RooHORNSdini.h:44