BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtdFunctionSingle Class Reference

#include <EvtdFunctionSingle.hh>

Public Member Functions

 EvtdFunctionSingle ()
 ~EvtdFunctionSingle ()
void init (int j, int m1, int m2)
double d (int j, int m1, int m2, double theta)

Detailed Description

Definition at line 24 of file EvtdFunctionSingle.hh.

Constructor & Destructor Documentation

◆ EvtdFunctionSingle()

EvtdFunctionSingle::EvtdFunctionSingle ( )

Definition at line 29 of file EvtdFunctionSingle.cc.

29 {
30 _j = 0;
31 _m1 = 0;
32 _m2 = 0;
33 _coef = 0;
34 _kmin = 0;
35 _kmax = 0;
36}

◆ ~EvtdFunctionSingle()

EvtdFunctionSingle::~EvtdFunctionSingle ( )

Definition at line 38 of file EvtdFunctionSingle.cc.

38 {
39 if ( _coef != 0 ) delete[] _coef;
40}

Member Function Documentation

◆ d()

double EvtdFunctionSingle::d ( int j,
int m1,
int m2,
double theta )

Definition at line 80 of file EvtdFunctionSingle.cc.

80 {
81
82 // report(INFO,"EvtGen") << "j,m1,m2:"<<j<<","<<m1<<","<<m2<<" theta:"<<theta<<endl;
83
84 assert( j == _j );
85 assert( m1 == _m1 );
86 assert( m2 == _m2 );
87
88 double c2 = cos( 0.5 * theta );
89 double s2 = sin( 0.5 * theta );
90
91 double d = 0.0;
92
93 int k;
94 for ( k = _kmin; k <= _kmax; k += 2 )
95 {
96 d += _coef[( k - _kmin ) / 2] * pow( c2, ( 2 * _j - 2 * k + m2 - m1 ) / 2 ) *
97 pow( s2, ( 2 * k - m2 + m1 ) / 2 );
98 }
99
100 return d;
101}
double d(int j, int m1, int m2, double theta)
double double * m2
Definition qcdloop1.h:83
double * m1
Definition qcdloop1.h:83

Referenced by EvtdFunction::d(), and d().

◆ init()

void EvtdFunctionSingle::init ( int j,
int m1,
int m2 )

Definition at line 42 of file EvtdFunctionSingle.cc.

42 {
43
44 assert( abs( m2 ) >= abs( m1 ) );
45 assert( m2 >= 0 );
46
47 _j = j;
48 _m1 = m1;
49 _m2 = m2;
50
51 _kmin = _m2 - _m1;
52 _kmax = _j - _m1;
53
54 assert( _kmin <= _kmax );
55
56 _coef = new double[( _kmax - _kmin ) / 2 + 1];
57
58 int k;
59
60 for ( k = _kmin; k <= _kmax; k += 2 )
61 {
62 int sign = 1;
63 if ( ( k - _m2 + _m1 ) % 4 != 0 ) sign = -sign;
64 // fkw change to satisfy KCC
65 double fkwTmp = fact( ( _j + _m2 ) / 2 ) * fact( ( _j - _m2 ) / 2 ) *
66 fact( ( _j + _m1 ) / 2 ) * fact( ( _j - _m1 ) / 2 );
67 _coef[( k - _kmin ) / 2] =
68 sign * sqrt( fkwTmp ) /
69 ( fact( ( _j + _m2 - k ) / 2 ) * fact( k / 2 ) * fact( ( _j - _m1 - k ) / 2 ) *
70 fact( ( k - _m2 + _m1 ) / 2 ) );
71
72 // fkw _coef[(k-_kmin)/2]=sign*sqrt(fact((_j+_m2)/2)*fact((_j-_m2)/2)*
73 // fkw fact((_j+_m1)/2)*fact((_j-_m1)/2))/
74 // fkw (fact((_j+_m2-k)/2)*fact(k/2)*fact((_j-_m1-k)/2)*fact((k-_m2+_m1)/2));
75
76 // report(INFO,"EvtGen") << "k, coef:"<<k/2<<" "<<_coef[(k-_kmin)/2]<<endl;
77 }
78}

Referenced by EvtdFunction::d().


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