EvtGen 2.2.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
Loading...
Searching...
No Matches
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
28class 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() const override;
48
49 EvtDecayBase* clone() const 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 m_noHybrid = false;
69 bool m_storeWhat = true;
70 int m_nbins = 0;
71 double m_masscut = 0.28;
72 std::vector<double> m_bins_mX;
73 std::vector<double> m_bins_q2;
74 std::vector<double> m_bins_El;
75 std::vector<double> m_weights;
76
77 // Input parameters
78 double m_mBB;
79 double m_lambda2;
80
81 // Shape function parameters
82 double m_b;
83 double m_Lambda;
84 double m_Ecut;
85 double m_wzero;
86
87 // SF and SSF modes
89 double m_dtype;
91
92 // flags
96
97 // Quark mass
98 double m_mb;
99
100 // Matching scales
101 double m_muh;
102 double m_mui;
103 double m_mubar;
104
105 // Perturbative quantities
106 double m_CF;
107 double m_CA;
108
109 double m_beta0;
110 double m_beta1;
111 double m_beta2;
112
113 double m_zeta3;
114
115 double m_Gamma0;
116 double m_Gamma1;
117 double m_Gamma2;
118
119 double m_gp0;
120 double m_gp1;
121
122 double m_Lbar;
123 double m_mupisq;
124 double m_moment2;
125
128
131
132 std::vector<double> m_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> m_pf;
179};
180
181#endif
const double a1
EvtDecayBase()=default
std::vector< double > m_bins_q2
double S2(double a1, double r)
static double Gamma(double z)
double myfunction(double w, double Lbar, double mom2)
static double g2(double w, const std::vector< double > &vars)
static double Shat(double w, const std::vector< double > &vars)
double F2(double Pp, double Pm, double muh, double mui, double mubar, double done3)
static double Int2(double what, const std::vector< double > &vars)
static double g1(double w, const std::vector< double > &vars)
void decay(EvtParticle *Bmeson) override
std::string getName() const override
static double gammcf(double a, double x, double LogGamma)
double rate3(double Pp, double Pl, double Pm)
double u(double w)
double aGamma(double mu1, double mu2, double epsilon)
double DoneJS(double Pp, double Pm, double mui)
double S0(double a1, double r)
double S1(double a1, double r)
static double Mzero(double muf, double mu, double mupisq, const std::vector< double > &vars)
static double alphas(double mu, const std::vector< double > &vars)
double Done2(double Pp, double Pm, double mui)
double myfunctionBIK(double w, double Lbar, double mom2)
void readWeights(int startArg=0)
std::vector< double > m_bins_El
static double Int1(double what, const std::vector< double > &vars)
double anlo(double muh, double mui)
std::vector< double > m_pf
double U1lo(double muh, double mui)
std::vector< double > m_bins_mX
double Done3(double Pp, double Pm, double mui)
EvtDecayBase * clone() const override
double alo(double muh, double mui)
std::vector< double > m_weights
double dU1nlo(double muh, double mui)
void init() override
double t(double w)
double Done1(double Pp, double Pm, double mui)
double PolyLog(double v, double z)
static double gamser(double a, double x, double LogGamma)
static double Int3(double what, const std::vector< double > &vars)
double Sfun(double mu1, double mu2, double epsilon)
static double g3(double w, const std::vector< double > &vars)
double agp(double mu1, double mu2, double epsilon)
std::vector< double > m_gvars
double F1(double Pp, double Pm, double muh, double mui, double mubar, double doneJS, double done1)
double wS(double w)
void initProbMax() override
double F3(double Pp, double Pm, double muh, double mui, double mubar, double done2)
double getWeight(double mX, double q2, double El)
static double IntJS(double what, const std::vector< double > &vars)
double v(double w)