BOSS 8.0.0
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.

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

◆ ~EvtVubdGamma()

EvtVubdGamma::~EvtVubdGamma ( )
virtual

Definition at line 83 of file EvtVubdGamma.cc.

83{}

Member Function Documentation

◆ delta()

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

Definition at line 133 of file EvtVubdGamma.cc.

133 {
134 if ( xmin > 0 || xmax < 0 ) return 0.;
135 if ( _epsilon1 < x && x < _epsilon2 ) return 1. / ( _epsilon2 - _epsilon1 );
136 return 0.0;
137}
Double_t x[10]

Referenced by getdGdxdzdp().

◆ getdGdxdzdp()

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

Definition at line 89 of file EvtVubdGamma.cc.

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

◆ getW1delta()

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

Definition at line 139 of file EvtVubdGamma.cc.

139 {
140 double mz = 1. - z;
141 // double p2min = (0>z-1.?0:z-1.);
142 // double p2max = (1.-x)*(z-1.+x);
143
144 double lz;
145 if ( z == 1 ) lz = -1.;
146 else lz = log( z ) / ( 1. - z );
147
148 // ddilog_(&z) is actually the dilog of (1-z) in maple,
149 // also in Neuberts paper the limit dilog(1) = pi^2/6 is used
150 // this corresponds to maple's dilog(0), so
151 // I take ddilog_(&mz) where mz=1-z in order to satisfy Neubert's definition
152 // and to compare with Maple the argument in maple should be (1-mz) ...
153
154 double dl = 4. * ddilog_( &mz ) + 4. * pow( M_PI, 2 ) / 3.;
155
156 double w = -( 8. * pow( log( z ), 2 ) - 10. * log( z ) + 2. * lz + dl + 5. ) +
157 ( 8. * log( z ) - 7. ) * log( _epsilon3 ) - 2. * pow( log( _epsilon3 ), 2 );
158
159 return ( 1. + w * _alphas / 3. / M_PI );
160}
double w
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 162 of file EvtVubdGamma.cc.

162 {
163
164 double z2 = z * z;
165 double t2 = 1. - 4. * p2 / z2;
166 double t = sqrt( t2 );
167
168 double w = 0;
169 if ( p2 > _epsilon2 )
170 w += 4. / p2 * ( log( ( 1. + t ) / ( 1. - t ) ) / t + log( p2 / z2 ) ) + 1. -
171 ( 8. - z ) * ( 2. - z ) / z2 / t2 +
172 ( ( 2. - z ) / 2. / z + ( 8. - z ) * ( 2. - z ) / 2. / z2 / t2 ) *
173 log( ( 1. + t ) / ( 1. - t ) ) / t;
174 if ( p2 > _epsilon3 ) w += ( 8. * log( z ) - 7. ) / p2 - 4. * log( p2 ) / p2;
175
176 return w * _alphas / 3. / M_PI;
177}
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 179 of file EvtVubdGamma.cc.

179 {
180
181 double z2 = z * z;
182 double t2 = 1. - 4. * p2 / z2;
183 double t = sqrt( t2 );
184 double w11 = ( 32. - 8. * z + z2 ) / 4. / z / t2;
185
186 double w = 0;
187 if ( p2 > _epsilon2 )
188 w -= ( z * t2 / 8. + ( 4. - z ) / 4. + w11 / 2. ) * log( ( 1. + t ) / ( 1. - t ) ) / t;
189 if ( p2 > _epsilon2 ) w += ( 8. - z ) / 4. + w11;
190
191 return ( w * _alphas / 3. / M_PI );
192}

Referenced by getdGdxdzdp().

◆ getW3nodelta()

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

Definition at line 194 of file EvtVubdGamma.cc.

194 {
195 double z2 = z * z;
196 double t2 = 1. - 4. * p2 / z2;
197 double t4 = t2 * t2;
198 double t = sqrt( t2 );
199
200 double w = 0;
201
202 if ( p2 > _epsilon2 )
203 w += ( z * t2 / 16. + 5. * ( 4. - z ) / 16. - ( 64. + 56. * z - 7. * z2 ) / 16. / z / t2 +
204 3. * ( 12. - z ) / 16. / t4 ) *
205 log( ( 1. + t ) / ( 1. - t ) ) / t;
206 if ( p2 > _epsilon2 )
207 w += -( 8. - 3. * z ) / 8. + ( 32. + 22. * z - 3. * z2 ) / 4. / z / t2 -
208 3. * ( 12. - z ) / 8. / t4;
209
210 return ( w * _alphas / 3. / M_PI );
211}

Referenced by getdGdxdzdp().

◆ getW4nodelta()

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

Definition at line 213 of file EvtVubdGamma.cc.

213 {
214 double z2 = z * z;
215 double t2 = 1. - 4. * p2 / z2;
216 double t4 = t2 * t2;
217 double t = sqrt( t2 );
218
219 double w = 0;
220
221 if ( p2 > _epsilon2 )
222 w -= ( ( 8. - 3. * z ) / 4. / z - ( 22. - 3. * z ) / 2. / z / t2 +
223 3. * ( 12. - z ) / 4. / z / t4 ) *
224 log( ( 1. + t ) / ( 1. - t ) ) / t;
225 if ( p2 > _epsilon2 )
226 w += -1. - ( 32. - 5. * z ) / 2. / z / t2 + 3. * ( 12. - z ) / 2. / z / t4;
227
228 return w * _alphas / 3. / M_PI;
229}

Referenced by getdGdxdzdp().

◆ getW4plus5delta()

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

Definition at line 231 of file EvtVubdGamma.cc.

231 {
232
233 double w = 0;
234
235 if ( z == 1 ) w = -2;
236 else w = 2. * log( z ) / ( 1. - z );
237
238 return ( w * _alphas / 3. / M_PI );
239}

Referenced by getdGdxdzdp().

◆ getW5nodelta()

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

Definition at line 241 of file EvtVubdGamma.cc.

241 {
242 double z2 = z * z;
243 double t2 = 1. - 4. * p2 / z2;
244 double t4 = t2 * t2;
245 double t = sqrt( t2 );
246
247 double w = 0;
248 if ( p2 > _epsilon2 )
249 w += ( 1. / 4. / z - ( 2. - z ) / 2. / z2 / t2 + 3. * ( 12. - z ) / 4. / z2 / t4 ) *
250 log( ( 1. + t ) / ( 1. - t ) ) / t;
251 if ( p2 > _epsilon2 ) w += -( 8. + z ) / 2. / z2 / t2 - 3. * ( 12. - z ) / 2. / z2 / t4;
252
253 return ( w * _alphas / 3. / M_PI );
254}

Referenced by getdGdxdzdp().


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