-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathmyPDF.h
184 lines (163 loc) · 7.93 KB
/
myPDF.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
/*****************************************************************************
* Project: RooFit *
* *
* This code was autogenerated by RooClassFactory *
* *
* A simple AA PDF class by Ivan Heredia de la Cruz on 4/25/16. *
*****************************************************************************/
#ifndef MYPDF
#define MYPDF
#include "RooAbsPdf.h"
#include "RooRealProxy.h"
#include "RooCategoryProxy.h"
#include "RooAbsReal.h"
#include "RooAbsCategory.h"
#include "TComplex.h"
/*
const Double_t MLb = 5.61951;
const Double_t MBd = 5.27961;
const Double_t MPsi2S = 3.686109;
const Double_t MJpsi = 3.096916;
const Double_t MProton = 0.938272046;
const Double_t MKaon = 0.493677;
const Double_t MPion = 0.13957018;
const Double_t MLb2 = MLb*MLb;
const Double_t MLb4 = MLb2*MLb2;
const Double_t MBd2 = MBd*MBd;
const Double_t MBd4 = MBd2*MBd2;
const Double_t MPsi2S2 = MPsi2S*MPsi2S;
const Double_t MPsi2S4 = MPsi2S2*MPsi2S2;
const Double_t MJpsi2 = MJpsi*MJpsi;
const Double_t MJpsi4 = MJpsi2*MJpsi2;
const Double_t MProton2 = MProton*MProton;
const Double_t MProton4 = MProton2*MProton2;
const Double_t MKaon2 = MKaon*MKaon;
const Double_t MKaon4 = MKaon2*MKaon2;
const Double_t MPion2 = MPion*MPion;
const Double_t MPion4 = MPion2*MPion2;
*/
#include "constants.h"
#include "utilities.h"
//#include "Dalitz_contour.h"
const Double_t MJpsi4mTwoMJpsi2MLb2pMLb4 = MJpsi4 - 2.*MJpsi2*MLb2 + MLb4;
const Double_t MPsi2S4mTwoMPsi2S2MBd2pMBd4 = MPsi2S4 - 2.*MPsi2S2*MBd2 + MBd4;
const Double_t MJpsi4mTwoMJpsi2MBd2pMBd4 = MJpsi4 - 2.*MJpsi2*MBd2 + MBd4;
const Double_t TwoMJpsi2pTwoMLb2 = 2.*(MJpsi2 + MLb2);
const Double_t TwoMPsi2S2pTwoMBd2 = 2.*(MPsi2S2 + MBd2);
const Double_t TwoMJpsi2pTwoMBd2 = 2.*(MJpsi2 + MBd2);
const Double_t InvTwoMLb = 1./(2.*MLb);
const Double_t InvTwoMBd = 1./(2.*MBd);
const Double_t MKaon4mTwoMKaon2MProton2pMProton4 = MKaon4 - 2.*MKaon2*MProton2 + MProton4;
const Double_t MKaon4mTwoMKaon2MPion2pMPion4 = MKaon4 - 2.*MKaon2*MPion2 + MPion4;
const Double_t TwoMKaon2pTwoMProton2 = 2.*(MKaon2 + MProton2);
const Double_t TwoMKaon2pTwoMPion2 = 2.*(MKaon2 + MPion2);
// Lambda*
const Double_t M1600 = 1.600 ;
const Double_t G1600 = 0.150;
const Double_t M1670 = 1.670;
const Double_t G1670 = 0.035;
// K*
/*
const Double_t M892 = 0.89581 ; // From PDG charged only K*(892)
const Double_t G892 = 0.0474; // From PDG charged only K*(892)
const Double_t M1410 = 1.414;
const Double_t G1410 = 0.232;
const Double_t M1430 = 1.425;
const Double_t G1430 = 0.270;
*/
//const Double_t dRad = 3.0;
class myPDF : public RooAbsPdf {
public:
myPDF() {} ;
myPDF(const char *name, const char *title,
// B^0 -> psi(nS) K* -> mu+ mu- K- pi+
RooAbsReal& _mKP,
RooAbsReal& _cJ,
RooAbsReal& _mPsiP,
RooAbsReal& _phi,
RooAbsReal& _B0beauty,
//const vector< pair<TString, pair< pair<Double_t, Double_t>, pair<Double_t, Double_t> > > >& _Kstar_spin,
const vector< pair<TString, pair<const Double_t, const Double_t> > >& _Kstar_spin,
const vector< pair<TString, pair<const Double_t, const Double_t> > >& _Zc_spin,
const vector< TString >& _varNames,
const RooArgSet _amplitudeVars,
const TString& _psi_nS,
const Double_t& _dRadB0, const Double_t& _dRadKs
);
myPDF(const myPDF& other, const char* name=0) ;
virtual TObject* clone(const char* newname) const { return new myPDF(*this,newname); }
inline virtual ~myPDF() { }
Int_t getAnalyticalIntegral(RooArgSet& allVars, RooArgSet& analVars, const char* rangeName=0) const ;
Double_t analyticalIntegral(Int_t code, const char* rangeName=0) const ;
/*
Double_t cWignerD_Lb(string helLb, string helLs, string helJ) const ;
TComplex WignerDLsSpinOneHalf(string helLs, string help) const ;
TComplex cWignerDLsSpinOneHalf(TComplex WignerDLsSpinOneHalf) const ;
*/
//TComplex WignerD_J(string helJ, string helDmu, Double_t angle) const ;
TComplex WignerD_J(string helJ, string helDmu, Double_t cJR, Double_t angle) const;
TComplex cWignerD_J(TComplex WignerD_J) const ;
//
//Double_t Wignerd_R(string spinR, string helJ) const ;
//Double_t Wignerd_R(Double_t cKs, TString spinR, string helJ) const ;
Double_t Wignerd_R(Double_t cR, TString spinR, string helJ, Bool_t isZc) const;
/*
TComplex HLb1600(string helLs, string helJ) const ;
TComplex HLb1670(string helLs, string helJ) const ;
*/
Double_t HLs1600(string help) const ;
Double_t HLs1670(string help) const ;
//
//TComplex H(string R, string helJ) const ;
TComplex H(TString R, string helJ) const ;
Double_t Pmom(Double_t mkp) const ;
Double_t Qmom(Double_t mkp) const ;
Double_t PhiPHSP(Double_t mkp) const ;
Double_t BlattWeisskopf_half(Int_t Lmin, Double_t qOrq0, Double_t D) const ;
Double_t BlattWeisskopf(Int_t Lmin, Double_t q, Double_t q0, Double_t D) const ;
//Double_t BWGamma(Double_t RMass, Double_t RGamma, Int_t Lmin, Double_t D) const ;
Double_t BWGamma(Double_t RMass, Double_t RGamma, Double_t RMassCalc, Double_t GDau1Mass, Double_t GDau2Mass, Int_t Lmin, Double_t D) const;
//TComplex BW(Double_t RMass, Double_t RGamma, Int_t Lmin, Double_t D) const ;
TComplex BW(Double_t RMass, Double_t RGamma, Double_t RMassCalc, Double_t GDau1Mass, Double_t GDau2Mass, Int_t Lmin, Double_t D) const;
//TComplex RFunction(Double_t RMass, Double_t RGamma, Double_t MomMass, Int_t LminLb, Int_t LminLs, Double_t DB0, Double_t DKs) const ;
TComplex RFunction(Double_t RMass, Double_t RGamma, Double_t RMassCalc, Double_t Dau2Mass, Double_t GDau1Mass, Double_t GDau2Mass, Double_t MomMass, Int_t LminMom, Int_t LminR, Double_t DB0, Double_t DKs) const;
/*
TComplex Cterm(string helLs, string helJ, string help) const ;
TComplex Cfterm(string helLs, string helJ, string help, string helDmu) const ;
TComplex ME(string helLb, string help, string helDmu) const ;
*/
//
//TComplex AngularTerm(Double_t cKs, TString R, TString spinR, string helJ, string helDmu, Double_t phiTrue) const ;
TComplex AngularTerm(Double_t cR, TString R, TString spinR, string helJ, string helDmu, Double_t cJR, Double_t phiT, Bool_t isZc) const ;
//TComplex ME(Double_t cKs, string helDmu, Double_t phiTrue) const ;
TComplex ME( Bool_t Ks_check, Bool_t Zc_check, Double_t cKs, string helDmu, Double_t phiTrue, Double_t cZc, Double_t cJTld, Double_t alph ) const ;
//
//Double_t ME2(Double_t cKs, Double_t phiTrue) const ;
Double_t ME2(Bool_t Ks_check, Bool_t Zc_check, Double_t cKs, Double_t phiTrue, Double_t cZc, Double_t cJTld, Double_t alph) const ;
//Double_t PDF(Double_t cKs, Double_t phiTrue) const ;
Double_t PDF(Bool_t Ks_check, Bool_t Zc_check, Double_t cKs, Double_t phiTrue, Double_t cZc, Double_t cJTld, Double_t alph) const ;
protected:
// B^0 -> psi(nS) K* -> mu+ mu- K- pi+
RooRealProxy mKP ;
RooRealProxy cJ ;
RooRealProxy mPsiP ;
RooRealProxy phi ;
RooRealProxy B0beauty ;
//map< TString,RooRealProxy* > amplitudeVarProxy_map;
//vector< pair<TString, pair< pair<Double_t, Double_t>, pair<Double_t, Double_t> > > > Kstar_spin;
//vector< TString > varNames;
//RooArgSet amplitudeVars;
Double_t evaluate() const ;
private:
Double_t MPsi_nS;
//vector< pair<TString, pair< pair<Double_t, Double_t>, pair<Double_t, Double_t> > > > Kstar_spin;
vector< pair<TString, pair<const Double_t, const Double_t> > > Kstar_spin;
vector< pair<TString, pair<const Double_t, const Double_t> > > Zc_spin;
vector< TString > varNames;
RooArgSet amplitudeVars;
map< TString,RooRealProxy* > amplitudeVarProxy_map;
TString psi_nS;
Double_t dRadB0, dRadKs;
ClassDef(myPDF,1) // Your description goes here...
};
#endif