JHUGen MELA  JHUGen v7.5.6, MELA v2.4.2
Matrix element calculations as used in JHUGen.
RooTsallis.cc
Go to the documentation of this file.
1 #include <iostream>
2 #include <cmath>
3 #include "RooTsallis.h"
4 #include "RooFit.h"
5 #include "RooRealVar.h"
6 #include "RooRealConstant.h"
7 #include "TH1.h"
8 
9 //ClassImp(RooTsallis)
10 
11 RooTsallisSM::RooTsallisSM(const char *name, const char *title,
12  RooAbsReal& _x,
13  RooAbsReal& _mzz,
14  RooAbsReal& _m,
15  RooAbsReal& _n0,
16  RooAbsReal& _n1,
17  RooAbsReal& _n2,
18  RooAbsReal& _ndue,
19  RooAbsReal& _bb0,
20  RooAbsReal& _bb1,
21  RooAbsReal& _bb2,
22  RooAbsReal& _T0,
23  RooAbsReal& _T1,
24  RooAbsReal& _T2):
25 
26  RooAbsPdf(name,title),
27  x("x","x",this,_x),
28  mzz("mzz","mzz",this,_mzz),
29  m("m","m",this,_m),
30  n0("n0","n0",this,_n0),
31  n1("n1","n1",this,_n1),
32  n2("n2","n2",this,_n2),
33  ndue("ndue","ndue",this,_ndue),
34  bb0("bb0","bb0",this,_bb0),
35  bb1("bb1","bb1",this,_bb1),
36  bb2("bb2","bb2",this,_bb2),
37  T0("T0","T0",this,_T0),
38  T1("T1","T1",this,_T1),
39  T2("T2","T2",this,_T2)
40  {
41  }
42 
43 
44  RooTsallisSM::RooTsallisSM(const RooTsallisSM& other, const char* name) :
45  RooAbsPdf(other,name),
46  x("x",this,other.x),
47  mzz("mzz",this,other.mzz),
48  m("m",this,other.m),
49  n0("n0",this,other.n0),
50  n1("n1",this,other.n1),
51  n2("n2",this,other.n2),
52  ndue("ndue",this,other.ndue),
53  bb0("bb0",this,other.bb0),
54  bb1("bb1",this,other.bb1),
55  bb2("bb2",this,other.bb2),
56  T0("T0",this,other.T0),
57  T1("T1",this,other.T1),
58  T2("T2",this,other.T2)
59  {
60  }
61 
62 
63 
64  double RooTsallisSM::evaluate() const
65  {
66  // cout<<"In rooTsallisSM::evaluate()"<<endl;
67  double T = T0 + mzz*T1 + mzz*mzz*T2;
68  double n = n0 + mzz*n1 + mzz*mzz*n2;
69  double bb = bb0 + mzz*bb1 + mzz*mzz*bb2;
70  double result = pow(x,ndue)*exp(-bb*x)*pow(1 + (sqrt(x*x + m*m) - m)/(fabs(n*T)),-n);
71  return result;
72  }
73 
74 
75 // LET ROOFIT COMPUTE IT
76 
77 /* int RooTsallisSM::getAnalyticalIntegral(RooArgSet& allVars, RooArgSet& analVars, const char* rangeName) const
78 {
79  if (matchArgs(allVars,analVars,x)) return 1 ;
80  return 0 ;
81 }
82 
83 double RooTsallisSM::analyticalIntegral(int code, const char* rangeName) const
84 {
85  switch(code)
86  {
87  case 1:
88  {
89  // mathematica dixit
90  float term1 = x*pow(1 + (sqrt(x*x + m*m) - m)/(n*T),-n);
91  float term2 = m*n*(sqrt(x*x + m*m) + 2*T) - n*n*T*(sqrt(x*x + m*m) + T) -n*m*m - n*x*x + x*x;
92  return -term1*term2/((n-2)*(n-1));
93  }
94  }
95 
96 assert(0) ;
97 return 0 ;
98 } */
99 
100 
101 
102 
103 
RooTsallisSM::mzz
RooRealProxy mzz
Definition: RooTsallis.h:47
RooTsallisSM::x
RooRealProxy x
Definition: RooTsallis.h:46
RooTsallis.h
RooTsallisSM::T1
RooRealProxy T1
Definition: RooTsallis.h:57
RooTsallisSM::bb1
RooRealProxy bb1
Definition: RooTsallis.h:54
RooTsallisSM::m
RooRealProxy m
Definition: RooTsallis.h:48
RooTsallisSM::n1
RooRealProxy n1
Definition: RooTsallis.h:50
RooTsallisSM::T0
RooRealProxy T0
Definition: RooTsallis.h:56
RooTsallisSM::n0
RooRealProxy n0
Definition: RooTsallis.h:49
RooTsallisSM::evaluate
Double_t evaluate() const
Definition: RooTsallis.cc:64
n2
int n2
Definition: TMCFM.hh:63
RooTsallisSM::ndue
RooRealProxy ndue
Definition: RooTsallis.h:52
RooTsallisSM::bb0
RooRealProxy bb0
Definition: RooTsallis.h:53
RooTsallisSM::n2
RooRealProxy n2
Definition: RooTsallis.h:51
RooTsallisSM::bb2
RooRealProxy bb2
Definition: RooTsallis.h:55
RooTsallisSM::T2
RooRealProxy T2
Definition: RooTsallis.h:58
RooTsallisSM::RooTsallisSM
RooTsallisSM(const char *name, const char *title, RooAbsReal &_x, RooAbsReal &_mzz, RooAbsReal &_m, RooAbsReal &_n0, RooAbsReal &_n1, RooAbsReal &_n2, RooAbsReal &_ndue, RooAbsReal &_bb0, RooAbsReal &_bb1, RooAbsReal &_bb2, RooAbsReal &_T0, RooAbsReal &_T1, RooAbsReal &_T2)
Definition: RooTsallis.cc:11
RooTsallisSM
Definition: RooTsallis.h:21