CGEM BOSS 6.6.5.i
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtVubdGamma Class Reference

#include <EvtVubdGamma.hh>

Public Member Functions

 EvtVubdGamma (const double &alphas)
 
virtual ~EvtVubdGamma ()
 
double getdGdxdzdp (const double &x, const double &z, const double &p2)
 

Protected Member Functions

double delta (const double &x, const double &xmin, const double &xmax)
 
double getW1nodelta (const double &x, const double &z, const double &p2)
 
double getW2nodelta (const double &x, const double &z, const double &p2)
 
double getW3nodelta (const double &x, const double &z, const double &p2)
 
double getW4nodelta (const double &x, const double &z, const double &p2)
 
double getW5nodelta (const double &x, const double &z, const double &p2)
 
double getW1delta (const double &x, const double &z)
 
double getW4plus5delta (const double &x, const double &z)
 

Detailed Description

Definition at line 38 of file EvtVubdGamma.hh.

Constructor & Destructor Documentation

◆ EvtVubdGamma()

EvtVubdGamma::EvtVubdGamma ( const double & alphas)

Definition at line 52 of file EvtVubdGamma.cc.

53{
54 _alphas = alphas;
55
56 // the range for the delta distribution in p2 is from _epsilon1 to
57 // _epsilon2. It was checked with the single differential formulae
58 // in the paper that these values are small enough to imitate p2 = 0
59 // for the regular terms.
60 // The ()* distributions, however need further treatment. In order to
61 // generate the correct spectrum in z a threshold need to be computed
62 // from the desired value of the coupling alphas. The idea is that
63 // for z=1 p2=0 is not allowed and therefore the part of dGamma proportional
64 // to delta(p2) should go to 0 for z->1.
65 // Using equation (3.1) and (3.2) it is possible to find the correct value
66 // for log(_epsilon3) from this requirement.
67
68 _epsilon1 = 1e-10;
69 _epsilon2 = 1e-5;
70 if ( alphas > 0 ) {
71 double lne3 = 9./16.-2*M_PI*M_PI/3.+6*M_PI/4/alphas;
72 if ( lne3 > 0 )
73 lne3 = -7./4. - sqrt(lne3);
74 else
75 lne3 = -7./4.;
76 _epsilon3 = exp(lne3);
77 }
78 else
79 _epsilon3 = 1;
80}
EvtComplex exp(const EvtComplex &c)
#define M_PI
Definition TConstant.h:4

◆ ~EvtVubdGamma()

EvtVubdGamma::~EvtVubdGamma ( )
virtual

Definition at line 86 of file EvtVubdGamma.cc.

87{
88}

Member Function Documentation

◆ delta()

double EvtVubdGamma::delta ( const double & x,
const double & xmin,
const double & xmax )
protected

Definition at line 140 of file EvtVubdGamma.cc.

141{
142 if ( xmin > 0 || xmax < 0 ) return 0.;
143 if ( _epsilon1 < x && x < _epsilon2 ) return 1./(_epsilon2-_epsilon1);
144 return 0.0;
145}

Referenced by getdGdxdzdp().

◆ getdGdxdzdp()

double EvtVubdGamma::getdGdxdzdp ( const double & x,
const double & z,
const double & p2 )

Definition at line 94 of file EvtVubdGamma.cc.

95{
96 // check phase space
97
98 double xb = (1-x);
99
100 if ( x < 0 || x > 1 || z < xb || z > (1+xb) )
101 return 0;
102
103 //not used
104 //double mx = (0>z-1?0:z-1);
105
106 double p2min = (0>z-1.?0:z-1.);
107 double p2max = (1.-x)*(z-1.+x);
108
109 if (p2 < p2min || p2 > p2max)
110 return 0;
111
112 // // check the phase space
113 // return 1.;
114
115 double dG;
116
117 if ( p2 >_epsilon1 && p2< _epsilon2) {
118
119 double W1 = getW1delta(x,z);
120 double W4plus5 = getW4plus5delta(x,z);
121
122 dG = 12. * delta(p2,p2min,p2max) * ((1.+xb-z) * (z-xb) * W1
123 + xb*(z-xb) * (W4plus5));
124 }
125 else {
126
127 double W1 = getW1nodelta(x,z,p2);
128 double W2 = getW2nodelta(x,z,p2);
129 double W3 = getW3nodelta(x,z,p2);
130 double W4 = getW4nodelta(x,z,p2);
131 double W5 = getW5nodelta(x,z,p2);
132
133 dG = 12. * ((1.+xb-z) * (z-xb-p2) * W1
134 + (1.-z+p2) * W2
135 + (xb*(z-xb)-p2) * (W3+W4+W5));
136 }
137 return dG;
138}
Double_t x[10]
double delta(const double &x, const double &xmin, const double &xmax)
double getW2nodelta(const double &x, const double &z, const double &p2)
double getW1nodelta(const double &x, const double &z, const double &p2)
double getW1delta(const double &x, const double &z)
double getW4plus5delta(const double &x, const double &z)
double getW3nodelta(const double &x, const double &z, const double &p2)
double getW5nodelta(const double &x, const double &z, const double &p2)
double getW4nodelta(const double &x, const double &z, const double &p2)

Referenced by EvtVub::decay(), and EvtVubHybrid::decay().

◆ getW1delta()

double EvtVubdGamma::getW1delta ( const double & x,
const double & z )
protected

Definition at line 147 of file EvtVubdGamma.cc.

148{
149 double mz = 1.-z;
150 //double p2min = (0>z-1.?0:z-1.);
151 //double p2max = (1.-x)*(z-1.+x);
152
153 double lz;
154 if (z == 1) lz = -1.;
155 else lz = log(z)/(1.-z);
156
157 // ddilog_(&z) is actually the dilog of (1-z) in maple,
158 // also in Neuberts paper the limit dilog(1) = pi^2/6 is used
159 // this corresponds to maple's dilog(0), so
160 // I take ddilog_(&mz) where mz=1-z in order to satisfy Neubert's definition
161 // and to compare with Maple the argument in maple should be (1-mz) ...
162
163 double dl = 4.*ddilog_(&mz) + 4.*pow(M_PI,2)/3.;
164
165 double w = -(8.*pow(log(z),2) - 10.*log(z) + 2.*lz + dl + 5.)
166 + (8.*log(z)-7.)*log(_epsilon3) - 2.*pow(log(_epsilon3),2);
167
168 return (1. + w*_alphas/3./M_PI);
169}
double ddilog_(const double &sh)

Referenced by getdGdxdzdp().

◆ getW1nodelta()

double EvtVubdGamma::getW1nodelta ( const double & x,
const double & z,
const double & p2 )
protected

Definition at line 171 of file EvtVubdGamma.cc.

172{
173
174 double z2 = z*z;
175 double t2 = 1.-4.*p2/z2;
176 double t = sqrt(t2);
177
178 double w = 0;
179 if ( p2 > _epsilon2 )
180 w += 4./p2*(log((1.+t)/(1.-t))/t + log(p2/z2))
181 + 1. - (8.-z)*(2.-z)/z2/t2
182 + ((2.-z)/2./z+(8.-z)*(2.-z)/2./z2/t2)*log((1.+t)/(1.-t))/t;
183 if ( p2 > _epsilon3 )
184 w += (8.*log(z)-7.)/p2 - 4.*log(p2)/p2;
185
186 return w*_alphas/3./M_PI;
187}
int t()
Definition t.c:1

Referenced by getdGdxdzdp().

◆ getW2nodelta()

double EvtVubdGamma::getW2nodelta ( const double & x,
const double & z,
const double & p2 )
protected

Definition at line 189 of file EvtVubdGamma.cc.

190{
191
192 double z2 = z*z;
193 double t2 = 1.-4.*p2/z2;
194 double t = sqrt(t2);
195 double w11 = (32.-8.*z+z2)/4./z/t2;
196
197 double w = 0;
198 if ( p2 > _epsilon2 )
199 w -= (z*t2/8. + (4.-z)/4. + w11/2.)*log((1.+t)/(1.-t))/t;
200 if ( p2 > _epsilon2 )
201 w += (8.-z)/4. + w11;
202
203 return (w*_alphas/3./M_PI);
204}

Referenced by getdGdxdzdp().

◆ getW3nodelta()

double EvtVubdGamma::getW3nodelta ( const double & x,
const double & z,
const double & p2 )
protected

Definition at line 206 of file EvtVubdGamma.cc.

207{
208 double z2 = z*z;
209 double t2 = 1.-4.*p2/z2;
210 double t4 = t2*t2;
211 double t = sqrt(t2);
212
213 double w = 0;
214
215 if ( p2 > _epsilon2 )
216 w += (z*t2/16. + 5.*(4.-z)/16. - (64.+56.*z-7.*z2)/16./z/t2
217 + 3.*(12.-z)/16./t4) * log((1.+t)/(1.-t))/t;
218 if ( p2 > _epsilon2 )
219 w += -(8.-3.*z)/8. + (32.+22.*z-3.*z2)/4./z/t2 - 3.*(12.-z)/8./t4;
220
221 return (w*_alphas/3./M_PI);
222}

Referenced by getdGdxdzdp().

◆ getW4nodelta()

double EvtVubdGamma::getW4nodelta ( const double & x,
const double & z,
const double & p2 )
protected

Definition at line 224 of file EvtVubdGamma.cc.

225{
226 double z2 = z*z;
227 double t2 = 1.-4.*p2/z2;
228 double t4 = t2*t2;
229 double t = sqrt(t2);
230
231 double w = 0;
232
233 if ( p2 > _epsilon2 )
234 w -= ((8.-3.*z)/4./z - (22.-3.*z)/2./z/t2 + 3.*(12.-z)/4./z/t4)
235 * log((1.+t)/(1.-t))/t;
236 if ( p2 > _epsilon2 )
237 w += -1. - (32.-5.*z)/2./z/t2 + 3.*(12.-z)/2./z/t4 ;
238
239 return w*_alphas/3./M_PI;
240}

Referenced by getdGdxdzdp().

◆ getW4plus5delta()

double EvtVubdGamma::getW4plus5delta ( const double & x,
const double & z )
protected

Definition at line 242 of file EvtVubdGamma.cc.

243{
244
245 double w = 0;
246
247 if ( z == 1 )
248 w = -2;
249 else
250 w = 2.*log(z)/(1.-z);
251
252 return (w*_alphas/3./M_PI);
253}

Referenced by getdGdxdzdp().

◆ getW5nodelta()

double EvtVubdGamma::getW5nodelta ( const double & x,
const double & z,
const double & p2 )
protected

Definition at line 255 of file EvtVubdGamma.cc.

256{
257 double z2 = z*z;
258 double t2 = 1.-4.*p2/z2;
259 double t4 = t2*t2;
260 double t = sqrt(t2);
261
262 double w = 0;
263 if ( p2 > _epsilon2 )
264 w += (1./4./z - (2.-z)/2./z2/t2 + 3.*(12.-z)/4./z2/t4)
265 * log((1.+t)/(1.-t))/t;
266 if ( p2 > _epsilon2 )
267 w += -(8.+z)/2./z2/t2 - 3.*(12.-z)/2./z2/t4;
268
269
270 return (w*_alphas/3./M_PI);
271}

Referenced by getdGdxdzdp().


The documentation for this class was generated from the following files: