EvtdFunctionSingle Class Reference

#include <EvtdFunctionSingle.hh>

List of all members.

Public Member Functions

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

Private Member Functions

int fact (int n)

Private Attributes

int _j
int _m1
int _m2
double * _coef
int _kmin
int _kmax


Detailed Description

Definition at line 24 of file EvtdFunctionSingle.hh.


Constructor & Destructor Documentation

EvtdFunctionSingle::EvtdFunctionSingle (  ) 

Definition at line 29 of file EvtdFunctionSingle.cc.

References _coef, _j, _kmax, _kmin, _m1, and _m2.

00029                                       {
00030   _j=0;
00031   _m1=0;
00032   _m2=0;
00033   _coef=0;
00034   _kmin=0;
00035   _kmax=0;
00036 }

EvtdFunctionSingle::~EvtdFunctionSingle (  ) 

Definition at line 39 of file EvtdFunctionSingle.cc.

References _coef.

00039                                        {
00040   if (_coef!=0) delete [] _coef;
00041 }


Member Function Documentation

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

Definition at line 81 of file EvtdFunctionSingle.cc.

References _coef, _j, _kmax, _kmin, _m1, _m2, cos(), and sin().

Referenced by EvtdFunction::d().

00081                                                              {
00082 
00083   //report(INFO,"EvtGen") << "j,m1,m2:"<<j<<","<<m1<<","<<m2<<" theta:"<<theta<<endl;
00084 
00085   assert(j==_j);
00086   assert(m1==_m1);
00087   assert(m2==_m2);
00088 
00089   double c2=cos(0.5*theta);
00090   double s2=sin(0.5*theta);
00091 
00092   double d=0.0;
00093   
00094   int k;
00095   for(k=_kmin;k<=_kmax;k+=2){
00096     d+=_coef[(k-_kmin)/2]*pow(c2,(2*_j-2*k+m2-m1)/2)*pow(s2,(2*k-m2+m1)/2);
00097   }
00098 
00099   return d;
00100   
00101 }

int EvtdFunctionSingle::fact ( int  n  )  [private]

Definition at line 104 of file EvtdFunctionSingle.cc.

Referenced by init().

00104                                  {
00105 
00106   assert(n>=0);
00107 
00108   int f=1;
00109 
00110   int k;
00111   for(k=2;k<=n;k++) f*=k;
00112 
00113   return f;
00114 
00115 }

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

Definition at line 44 of file EvtdFunctionSingle.cc.

References _coef, _j, _kmax, _kmin, _m1, _m2, abs, fact(), and sign().

Referenced by EvtdFunction::d().

00044                                                 {
00045 
00046   assert(abs(m2)>=abs(m1));
00047   assert(m2>=0);
00048 
00049   _j=j;
00050   _m1=m1;
00051   _m2=m2;
00052 
00053   _kmin=_m2-_m1;
00054   _kmax=_j-_m1;
00055 
00056   assert(_kmin<=_kmax);
00057 
00058   _coef=new double[(_kmax-_kmin)/2+1];
00059 
00060   int k;
00061 
00062   for(k=_kmin;k<=_kmax;k+=2){
00063     int sign=1;
00064     if ((k-_m2+_m1)%4!=0) sign=-sign;
00065     //fkw change to satisfy KCC
00066     double fkwTmp = fact((_j+_m2)/2)*fact((_j-_m2)/2)
00067                    *fact((_j+_m1)/2)*fact((_j-_m1)/2);
00068     _coef[(k-_kmin)/2]=sign*sqrt(fkwTmp)/
00069       (fact((_j+_m2-k)/2)*fact(k/2)*fact((_j-_m1-k)/2)*fact((k-_m2+_m1)/2));
00070 
00071     //fkw _coef[(k-_kmin)/2]=sign*sqrt(fact((_j+_m2)/2)*fact((_j-_m2)/2)*
00072     //fkw                       fact((_j+_m1)/2)*fact((_j-_m1)/2))/
00073     //fkw  (fact((_j+_m2-k)/2)*fact(k/2)*fact((_j-_m1-k)/2)*fact((k-_m2+_m1)/2));
00074 
00075     //report(INFO,"EvtGen") << "k, coef:"<<k/2<<" "<<_coef[(k-_kmin)/2]<<endl;
00076   }
00077 
00078 }


Member Data Documentation

double* EvtdFunctionSingle::_coef [private]

Definition at line 43 of file EvtdFunctionSingle.hh.

Referenced by d(), EvtdFunctionSingle(), init(), and ~EvtdFunctionSingle().

int EvtdFunctionSingle::_j [private]

Definition at line 39 of file EvtdFunctionSingle.hh.

Referenced by d(), EvtdFunctionSingle(), and init().

int EvtdFunctionSingle::_kmax [private]

Definition at line 47 of file EvtdFunctionSingle.hh.

Referenced by d(), EvtdFunctionSingle(), and init().

int EvtdFunctionSingle::_kmin [private]

Definition at line 46 of file EvtdFunctionSingle.hh.

Referenced by d(), EvtdFunctionSingle(), and init().

int EvtdFunctionSingle::_m1 [private]

Definition at line 40 of file EvtdFunctionSingle.hh.

Referenced by d(), EvtdFunctionSingle(), and init().

int EvtdFunctionSingle::_m2 [private]

Definition at line 41 of file EvtdFunctionSingle.hh.

Referenced by d(), EvtdFunctionSingle(), and init().


Generated on Tue Nov 29 23:18:59 2016 for BOSS_7.0.2 by  doxygen 1.4.7