evtgen is hosted by Hepforge, IPPP Durham
EvtGen  2.0.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
EvtVubBLNPHybrid.hh
Go to the documentation of this file.
1 
2 /***********************************************************************
3 * Copyright 1998-2020 CERN for the benefit of the EvtGen authors *
4 * *
5 * This file is part of EvtGen. *
6 * *
7 * EvtGen is free software: you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation, either version 3 of the License, or *
10 * (at your option) any later version. *
11 * *
12 * EvtGen is distributed in the hope that it will be useful, *
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15 * GNU General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU General Public License *
18 * along with EvtGen. If not, see <https://www.gnu.org/licenses/>. *
19 ***********************************************************************/
20 
21 #ifndef EVTVUBBLNPHYBRID_HH
22 #define EVTVUBBLNPHYBRID_HH
23 
25 
26 #include <vector>
27 
28 class EvtParticle;
29 
30 // tripleDiff from BLNPHybrid's notebook, based on hep-ph/0504071
31 //
32 // Description:
33 // Class to generate inclusive B to X_u l nu decays.
34 // This class is based on EvtVubBLNP by Sheila Mclachlin with an update to
35 // generate the inclusive decays in such a way that the right
36 // mix of inclusive and exclusive decays is obtained.
37 //
38 //NOTE:
39 // - A set of weights (for bins in the kinematic variables mX, q2, El)
40 // is read from DECAY.DEC. This set of weights must be consistent
41 // with the other parameters specified (excl. BF, non-res BF, mb, a).
42 // - If no binning/weights are specified in DECAY.DEC the hybrid
43 // reweighting is not activated
44 
46  public:
47  std::string getName() override;
48 
49  EvtDecayBase* clone() override;
50 
51  void initProbMax() override;
52 
53  void init() override;
54 
55  void decay( EvtParticle* Bmeson ) override;
56 
57  void readWeights( int startArg = 0 );
58 
59  double getWeight( double mX, double q2, double El );
60 
61  private:
62  //Input for hybrid modell
63  enum
64  {
67  };
68  bool _noHybrid = false;
69  bool _storeWhat = true;
70  int _nbins = 0;
71  double _masscut = 0.28;
72  std::vector<double> _bins_mX;
73  std::vector<double> _bins_q2;
74  std::vector<double> _bins_El;
75  std::vector<double> _weights;
76 
77  // Input parameters
78  double mBB;
79  double lambda2;
80 
81  // Shape function parameters
82  double b;
83  double Lambda;
84  double Ecut;
85  double wzero;
86 
87  // SF and SSF modes
88  int itype;
89  double dtype;
90  int isubl;
91 
92  // flags
93  int flag1;
94  int flag2;
95  int flag3;
96 
97  // Quark mass
98  double mb;
99 
100  // Matching scales
101  double muh;
102  double mui;
103  double mubar;
104 
105  // Perturbative quantities
106  double CF;
107  double CA;
108 
109  double beta0;
110  double beta1;
111  double beta2;
112 
113  double zeta3;
114 
115  double Gamma0;
116  double Gamma1;
117  double Gamma2;
118 
119  double gp0;
120  double gp1;
121 
122  double Lbar;
123  double mupisq;
124  double moment2;
125 
128 
129  int maxLoop;
130  double precision;
131 
132  std::vector<double> gvars;
133 
134  double rate3( double Pp, double Pl, double Pm );
135  double F1( double Pp, double Pm, double muh, double mui, double mubar,
136  double doneJS, double done1 );
137  double F2( double Pp, double Pm, double muh, double mui, double mubar,
138  double done3 );
139  double F3( double Pp, double Pm, double muh, double mui, double mubar,
140  double done2 );
141  double DoneJS( double Pp, double Pm, double mui );
142  double Done1( double Pp, double Pm, double mui );
143  double Done2( double Pp, double Pm, double mui );
144  double Done3( double Pp, double Pm, double mui );
145  static double IntJS( double what, const std::vector<double>& vars );
146  static double Int1( double what, const std::vector<double>& vars );
147  static double Int2( double what, const std::vector<double>& vars );
148  static double Int3( double what, const std::vector<double>& vars );
149  static double g1( double w, const std::vector<double>& vars );
150  static double g2( double w, const std::vector<double>& vars );
151  static double g3( double w, const std::vector<double>& vars );
152  static double Shat( double w, const std::vector<double>& vars );
153  static double Mzero( double muf, double mu, double mupisq,
154  const std::vector<double>& vars );
155  double wS( double w );
156  double t( double w );
157  double u( double w );
158  double v( double w );
159  double myfunction( double w, double Lbar, double mom2 );
160  double myfunctionBIK( double w, double Lbar, double mom2 );
161  double dU1nlo( double muh, double mui );
162  double U1lo( double muh, double mui );
163  double Sfun( double mu1, double mu2, double epsilon );
164  double S0( double a1, double r );
165  double S1( double a1, double r );
166  double S2( double a1, double r );
167  double aGamma( double mu1, double mu2, double epsilon );
168  double agp( double mu1, double mu2, double epsilon );
169  double alo( double muh, double mui );
170  double anlo( double muh, double mui ); // d/depsilon of aGamma
171  static double alphas( double mu, const std::vector<double>& vars );
172  double PolyLog( double v, double z );
173  static double Gamma( double z );
174  static double Gamma( double a, double x );
175  static double gamser( double a, double x, double LogGamma );
176  static double gammcf( double a, double x, double LogGamma );
177  double findBLNPWhat();
178  std::vector<double> _pf;
179 };
180 
181 #endif
std::vector< double > _bins_mX
double aGamma(double mu1, double mu2, double epsilon)
double myfunction(double w, double Lbar, double mom2)
std::vector< double > _bins_El
EvtDecayBase * clone() override
double F2(double Pp, double Pm, double muh, double mui, double mubar, double done3)
double Done3(double Pp, double Pm, double mui)
double dU1nlo(double muh, double mui)
double DoneJS(double Pp, double Pm, double mui)
double Done1(double Pp, double Pm, double mui)
std::vector< double > _weights
double Sfun(double mu1, double mu2, double epsilon)
static double g3(double w, const std::vector< double > &vars)
static double IntJS(double what, const std::vector< double > &vars)
double S1(double a1, double r)
void decay(EvtParticle *Bmeson) override
static double Int1(double what, const std::vector< double > &vars)
std::vector< double > _pf
std::vector< double > gvars
void readWeights(int startArg=0)
static double Int3(double what, const std::vector< double > &vars)
const double a1
static double Mzero(double muf, double mu, double mupisq, const std::vector< double > &vars)
static double alphas(double mu, const std::vector< double > &vars)
static double Gamma(double z)
double F1(double Pp, double Pm, double muh, double mui, double mubar, double doneJS, double done1)
double S0(double a1, double r)
double getWeight(double mX, double q2, double El)
double PolyLog(double v, double z)
double rate3(double Pp, double Pl, double Pm)
double wS(double w)
std::vector< double > _bins_q2
static double gammcf(double a, double x, double LogGamma)
void initProbMax() override
double alo(double muh, double mui)
double v(double w)
void init() override
static double Shat(double w, const std::vector< double > &vars)
double Done2(double Pp, double Pm, double mui)
static double g1(double w, const std::vector< double > &vars)
double F3(double Pp, double Pm, double muh, double mui, double mubar, double done2)
static double Int2(double what, const std::vector< double > &vars)
double agp(double mu1, double mu2, double epsilon)
double myfunctionBIK(double w, double Lbar, double mom2)
static double gamser(double a, double x, double LogGamma)
double u(double w)
static double g2(double w, const std::vector< double > &vars)
double t(double w)
double S2(double a1, double r)
std::string getName() override
double anlo(double muh, double mui)
double U1lo(double muh, double mui)