Fix bug in building local list of valid files.
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenModels / EvtVubBLNPHybrid.hh
CommitLineData
da0e9ce3 1
2//////////////////////////////////////////////////////////////////////
3//
4// Module: EvtVubBLNPHybrid.hh
5//
6//
7// tripleDiff from BLNPHybrid's notebook, based on hep-ph/0504071
8//
9// Description:
10// Class to generate inclusive B to X_u l nu decays.
11// This class is based on EvtVubBLNP by Sheila Mclachlin with an update to
12// generate the inclusive decays in such a way that the right
13// mix of inclusive and exclusive decays is obtained.
14//
15//NOTE:
16// - A set of weights (for bins in the kinematic variables mX, q2, El)
17// is read from DECAY.DEC. This set of weights must be consistent
18// with the other parameters specified (excl. BF, non-res BF, mb, a).
19// - If no binning/weights are specified in DECAY.DEC the hybrid
20// reweighting is not activated
21//
22//
23//////////////////////////////////////////////////////////////////
24
25
26#ifndef EVTVUBBLNPHYBRID_HH
27#define EVTVUBBLNPHYBRID_HH
28
29#include <vector>
30#include "EvtGenBase/EvtDecayIncoherent.hh"
31
32class EvtParticle;
33
34class EvtVubBLNPHybrid:public EvtDecayIncoherent {
35
36public:
37
38 EvtVubBLNPHybrid();
39 virtual ~EvtVubBLNPHybrid();
40
41 std::string getName();
42
43 EvtDecayBase* clone();
44
45 void initProbMax();
46
47 void init();
48
49 void decay(EvtParticle *Bmeson);
50
51 void readWeights(int startArg=0);
52
53 double getWeight(double mX, double q2, double El);
54
55private:
56 //Input for hybrid modell
57 enum { nParameters = 10, nVariables = 3 };
58 bool _noHybrid;
59 bool _storeWhat;
60 int _nbins_mX;
61 int _nbins_q2;
62 int _nbins_El;
63 int _nbins;
64 double _masscut;
65 double * _bins_mX;
66 double * _bins_q2;
67 double * _bins_El;
68 double * _weights;
69
70 // Input parameters
71 double mBB;
72 double lambda2;
73
74 // Shape function parameters
75 double b;
76 double Lambda;
77 double Ecut;
78 double wzero;
79
80 // SF and SSF modes
81 int itype;
82 double dtype;
83 int isubl;
84
85 // flags
86 int flag1;
87 int flag2;
88 int flag3;
89
90 // Quark mass
91 double mb;
92
93 // Matching scales
94 double muh;
95 double mui;
96 double mubar;
97
98 // Perturbative quantities
99 double CF;
100 double CA;
101
102 double beta0;
103 double beta1;
104 double beta2;
105
106 double zeta3;
107
108 double Gamma0;
109 double Gamma1;
110 double Gamma2;
111
112 double gp0;
113 double gp1;
114
115 double Lbar;
116 double mupisq;
117 double moment2;
118
119 int flagpower;
120 int flag2loop;
121
122 int maxLoop;
123 double precision;
124
125 std::vector<double> gvars;
126
127 double rate3(double Pp, double Pl, double Pm);
128 double F1(double Pp, double Pm, double muh, double mui, double mubar, double doneJS, double done1);
129 double F2(double Pp, double Pm, double muh, double mui, double mubar, double done3);
130 double F3(double Pp, double Pm, double muh, double mui, double mubar, double done2);
131 double DoneJS(double Pp, double Pm, double mui);
132 double Done1(double Pp, double Pm, double mui);
133 double Done2(double Pp, double Pm, double mui);
134 double Done3(double Pp, double Pm, double mui);
135 static double IntJS(double what, const std::vector<double> &vars);
136 static double Int1(double what, const std::vector<double> &vars);
137 static double Int2(double what, const std::vector<double> &vars);
138 static double Int3(double what, const std::vector<double> &vars);
139 static double g1(double w, const std::vector<double> &vars);
140 static double g2(double w, const std::vector<double> &vars);
141 static double g3(double w, const std::vector<double> &vars);
142 static double Shat(double w, const std::vector<double> &vars);
143 static double Mzero(double muf, double mu, double mupisq, const std::vector<double> &vars);
144 double wS(double w);
145 double t(double w);
146 double u(double w);
147 double v(double w);
148 double myfunction(double w, double Lbar, double mom2);
149 double myfunctionBIK(double w, double Lbar, double mom2);
150 double dU1nlo(double muh, double mui);
151 double U1lo(double muh, double mui);
152 double Sfun(double mu1, double mu2, double epsilon);
153 double S0(double a1, double r);
154 double S1(double a1, double r);
155 double S2(double a1, double r);
156 double aGamma(double mu1, double mu2, double epsilon);
157 double agp(double mu1, double mu2, double epsilon);
158 double alo(double muh, double mui);
159 double anlo(double muh, double mui); // d/depsilon of aGamma
160 static double alphas(double mu, const std::vector<double> &vars);
161 double PolyLog(double v, double z);
162 static double Gamma(double z);
163 static double Gamma(double a, double x);
164 static double gamser(double a, double x, double LogGamma);
165 static double gammcf(double a, double x, double LogGamma);
166 double findBLNPWhat();
167 std::vector<double> _pf;
168};
169
170#endif
171