BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
TDFun_o.h
Go to the documentation of this file.
1#ifndef RAD_TDFun_o
2#define RAD_TDFun_o
3
4#include "TConstant.h"
5#include <cmath>
6namespace rb {
7 class TDFun {
8 protected:
9 double fD0;
10 double fiD0;
11 double fb2;
12 double fib2;
13
14 public:
16
17 TDFun( const double& E ) {
18 double L = 2. * log( 2. * E / me );
19 double fBeta = 2. * alpha / M_PI * ( L - 1. );
20 fb2 = fBeta / 2;
21 fib2 = 1 / fb2;
22 // fD0 = 1.+3./8.*fBeta-fBeta*fBeta/48.*(gConst->Pi2() + fL/3. - 47./8.);
23 fD0 = 1. + 3. / 8. * fBeta + fBeta * fBeta / 16. * ( 9. / 8. - M_PI * M_PI / 3 );
24 fiD0 = 1 / fD0;
25 }
26
27 ~TDFun(){};
28
29 inline double GetD0() const { return fD0; };
30 inline double GetiD0() const { return fiD0; };
31 inline double GetBeta2() const { return fb2; };
32 inline double GetiBeta2() const { return fib2; };
33
34 inline double Eval( const double& z ) {
35 double x = 1 - z;
36 // double D = fb2*pow(x,fb2-1)*fD0 - 0.5*fb2*(1+z) -
37 // fb2*fb2/8*(4*(1+z)*log(x)+(1+3*z*z)/x*log(z)+5+z);
38 double D =
39 fb2 * pow( x, fb2 - 1 ) * fD0 - 0.5 * fb2 * ( 1 + z ) -
40 fb2 * fb2 / 8 *
41 ( 4 * ( 1 + z ) * log( x ) + ( 1 + 3 * z * z ) / x * log1p( -x ) + 5 + z );
42 return D;
43 }
44
45 inline double Eval( const double& z, const double& b2, const double& D0 ) {
46 double x = 1 - z;
47 // double D = b2*pow(x,b2-1)*D0 - 0.5*b2*(1+z) -
48 // b2*b2/8*(4*(1+z)*log(x)+(1+3*z*z)/x*log(z)+5+z);
49 double D =
50 b2 * pow( x, b2 - 1 ) * D0 - 0.5 * b2 * ( 1 + z ) -
51 b2 * b2 / 8 *
52 ( 4 * ( 1 + z ) * log( x ) + ( 1 + 3 * z * z ) / x * log1p( -x ) + 5 + z );
53 return D;
54 }
55
56 inline double EvalSoft( const double& x ) {
57 double z = 1 - x;
58 double lx = log( x );
59 double t1 = exp( -fb2 * lx );
60 double t2 = t1 * x;
61 // double D = fD0 - t2*(0.5*(1+z) + fb2/8*( 4*(1+z)*lx + 4 + (1+z))) -
62 // fb2/8*t1*(1+3*z*z)*log(z);
63 double D = fD0 -
64 t2 * ( 0.5 * ( 1 + z ) + fb2 / 8 * ( 4 * ( 1 + z ) * lx + 4 + ( 1 + z ) ) ) -
65 fb2 / 8 * t1 * ( 1 + 3 * z * z ) * log1p( -x );
66 return D;
67 }
68
69 inline double EvalSoft( const double& x, const double& b2, const double& D0 ) {
70 double z = 1 - x;
71 double lx = log( x );
72 double t1 = exp( -b2 * lx );
73 double t2 = t1 * x;
74 // double D = D0 - t2*(0.5*(1+z) + b2/8*( 4*(1+z)*lx + 4 + (1+z))) -
75 // b2/8*t1*(1+3*z*z)*log(z);
76 double D = D0 -
77 t2 * ( 0.5 * ( 1 + z ) + b2 / 8 * ( 4 * ( 1 + z ) * lx + 4 + ( 1 + z ) ) ) -
78 b2 / 8 * t1 * ( 1 + 3 * z * z ) * log1p( -x );
79 return D;
80 }
81 };
82} // namespace rb
83
84#endif // #ifndef RAD_TDFun
EvtComplex exp(const EvtComplex &c)
#define M_PI
Definition TConstant.h:4
double fb2
Definition TDFun_o.h:11
double Eval(const double &z, const double &b2, const double &D0)
Definition TDFun_o.h:45
double fiD0
Definition TDFun_o.h:10
double EvalSoft(const double &x)
Definition TDFun_o.h:56
double GetBeta2() const
Definition TDFun_o.h:31
double GetiD0() const
Definition TDFun_o.h:30
TDFun(const double &E)
Definition TDFun_o.h:17
double fib2
Definition TDFun_o.h:12
double GetD0() const
Definition TDFun_o.h:29
double EvalSoft(const double &x, const double &b2, const double &D0)
Definition TDFun_o.h:69
double Eval(const double &z)
Definition TDFun_o.h:34
double GetiBeta2() const
Definition TDFun_o.h:32
double fD0
Definition TDFun_o.h:9
Definition TConstant.h:3
const double me
Definition TConstant.h:5
const double alpha
Definition TConstant.h:40