TKnCrossPart Class Reference

#include <TKnCrossPart.h>

Inheritance diagram for TKnCrossPart:

TPiCrossPart TVCrossPart List of all members.

Public Member Functions

 TKnCrossPart ()
 ~TKnCrossPart ()
double BornShift (const double &, const double &, const double &)
double GetValue (const unsigned int)
void Init ()
void SetThetaMin (const double &)
TFormFactorGetFormFactor ()
void PrintEvent ()
void GetEvent (double &p0, double &t0, double &ph0, double &p1, double &t1, double &ph)
void GetEvent (double *m, int &n)
TEventGetEvent ()
unsigned int GetNPart ()
virtual void SetHardPhoton (const bool &x)
void SetZeroVP ()
void SetDefaultVP ()
void SetNoFSR ()
double BornCrossSection (const double &)

Protected Member Functions

double MakeCosTheta ()
double GetCNorm ()
double R_Gamma ()
double R_Gamma_t ()
double R_Gamma_kuraev_eidelman ()

Protected Attributes

TPiKFunfK
TPhotonDfPhD1
TPhotonDfPhD2
TPhotonIfPhI1
TPhotonIfPhI2
TPhotonFSfPhFS
TFormFactorfFpi
double fCosMin
double fSinTheta2
double fNorm
double fCompPiSV
double fBetaPi
unsigned int fNPart
TEventfEvent
TDFunfD
bool fHardPhoton
bool fZeroVP
bool fNoFSR

Detailed Description

Definition at line 6 of file TKnCrossPart.h.


Constructor & Destructor Documentation

TKnCrossPart::TKnCrossPart (  ) 

Definition at line 5 of file TKnCrossPart.C.

References TPiCrossPart::fFpi, and TVCrossPart::fNoFSR.

00005                           :TPiCrossPart(){
00006   // Neutral Kaon Formfactor
00007   if(fFpi) delete fFpi;
00008   fFpi   = new TKnFormFactor();
00009 
00010   fNoFSR = true;
00011 }

TKnCrossPart::~TKnCrossPart (  )  [inline]

Definition at line 9 of file TKnCrossPart.h.

00009 {};


Member Function Documentation

double TVCrossPart::BornCrossSection ( const double &   )  [inherited]

Definition at line 4 of file TVCrossPart.C.

References TVCrossPart::BornShift(), cos(), TVCrossPart::fEvent, TVCrossPart::fZeroVP, genRecEmupikp::i, TVCrossPart::Init(), M_PI, TEvent::MakeEvent(), and x.

Referenced by main().

00004                                                        {
00005   //save vacuum polarization status 
00006   bool tempVP = fZeroVP;
00007   // set zero vacuum polarization to calculate Born cross-section
00008   fZeroVP = true;
00009   Init();
00010 
00011   // integration in symmetric angle
00012   int NInt = 1<<14;
00013   double x, gsum = 0., h=-(cos(M_PI-theta)-cos(theta))/NInt;
00014   // simpson integration
00015   x = cos(M_PI-theta); fEvent->MakeEvent(x); gsum += BornShift(1,1,x);
00016   for(int i=1; i<NInt; i++){
00017     x += h; fEvent->MakeEvent(x); gsum += 2*(1+i%2)*BornShift(1,1,x);
00018   }
00019   x += h; fEvent->MakeEvent(x); gsum += BornShift(1,1,x);
00020 
00021   //restore vacuum polarization status
00022   fZeroVP = tempVP;
00023   Init();
00024 
00025   return gsum*h/3;
00026 }

double TPiCrossPart::BornShift ( const double &  ,
const double &  ,
const double &   
) [virtual, inherited]

Implements TVCrossPart.

Definition at line 103 of file TPiCrossPart.C.

References abs, conj(), TFormFactor::Eval(), TVCrossPart::fEvent, TPiCrossPart::fFpi, TRadGlobal::Get_s(), TEvent::GetPPar(), and gGlobal.

Referenced by TPiCrossPart::GetValue().

00103                                                                                  {
00104   double Y1, y1, c1;
00105   fEvent->GetPPar(0,Y1,y1,c1);
00106   std::complex<double> Fpi = fFpi->Eval(gGlobal->Get_s()*z1*z2);
00107   double Fpi2 = std::abs(Fpi*std::conj(Fpi));
00108   double cs = Fpi2*y1*y1*y1*(1-c*c)/(z1*z1*z2*z2*(z1+z2+(z2-z1)*c*Y1/y1));
00109   return cs*0.25;
00110 }

double TPiCrossPart::GetCNorm (  )  [protected, inherited]

Definition at line 60 of file TPiCrossPart.C.

References TPiCrossPart::fNorm, and TPiCrossPart::fSinTheta2.

Referenced by TPiCrossPart::GetValue().

00060                              {
00061   return fNorm/fSinTheta2;
00062 }

TEvent* TVCrossPart::GetEvent (  )  [inline, inherited]

Definition at line 28 of file TVCrossPart.h.

References TVCrossPart::fEvent.

00028 {return fEvent;}

void TVCrossPart::GetEvent ( double *  m,
int &  n 
) [inline, inherited]

Definition at line 25 of file TVCrossPart.h.

References TVCrossPart::fEvent, and TEvent::GetEvent().

00025                                          {
00026     fEvent->GetEvent(m,n);
00027   }

void TVCrossPart::GetEvent ( double &  p0,
double &  t0,
double &  ph0,
double &  p1,
double &  t1,
double &  ph 
) [inline, inherited]

Definition at line 21 of file TVCrossPart.h.

References TVCrossPart::fEvent, and TEvent::GetEvent().

Referenced by TRadCor::GetEvent(), hist_sample(), main(), TRadCor::MakeEvent(), TRadCor::MakeIntegral(), and TRadCor::MakeMaximum().

00022                                                           {
00023     fEvent->GetEvent(p0, t0, ph0, p1, t1, ph);
00024   }

TFormFactor* TPiCrossPart::GetFormFactor (  )  [inline, inherited]

Definition at line 34 of file TPiCrossPart.h.

References TPiCrossPart::fFpi.

00034 {return fFpi;}

unsigned int TVCrossPart::GetNPart (  )  [inline, inherited]

Definition at line 29 of file TVCrossPart.h.

References TVCrossPart::fNPart.

Referenced by main(), and TRadCor::TRadCor().

00029 {return fNPart;}

double TPiCrossPart::GetValue ( const unsigned  int  )  [virtual, inherited]

Reimplemented from TVCrossPart.

Definition at line 115 of file TPiCrossPart.C.

References TConstants::Alpha(), TConstants::AlphaPi(), TPiCrossPart::BornShift(), COMP_I, DB, TDFun::Eval(), TMuKFun::Eval(), TMuKFun::Eval_a(), TDFun::EvalSoft(), TPiCrossPart::fBetaPi, TPiCrossPart::fCompPiSV, TVCrossPart::fD, TVCrossPart::fEvent, TVCrossPart::fHardPhoton, TPiCrossPart::fK, TVCrossPart::fNoFSR, TPiCrossPart::fPhD1, TPiCrossPart::fPhD2, TPiCrossPart::fPhI1, TPiCrossPart::fPhI2, gConst, TRadGlobal::Get_L(), TRadGlobal::Get_LnDelta(), TRadGlobal::Get_s(), TPiCrossPart::GetCNorm(), TPhotonI::GetEnergy(), TPhotonD::GetEnergy(), TPhotonD::GetENorm(), TPhotonI::GetENorm(), TPhoton::GetPhiNorm(), TPhoton::GetThNorm(), gGlobal, M_PI, TPiCrossPart::MakeCosTheta(), TEvent::MakeEvent(), TConstants::Pi2(), r_abs_max, TPiCrossPart::R_Gamma(), TPiCrossPart::R_Gamma_kuraev_eidelman(), r_rel_max, and eformat::TEST.

00115                                                      {
00116   bool IsSoftIE, IsSoftIP;
00117   IsSoftIE = IsSoftIP = true;
00118 
00119   bool CompSV, CompIE, CompIP;
00120   CompSV = CompIE = CompIP = false;
00121   double AP = gConst->AlphaPi();
00122 
00123   double c  = MakeCosTheta();
00124 
00125   switch(ipart){
00126   case 0:
00127     IsSoftIE = IsSoftIP = true;
00128     CompSV   = true;
00129     break;
00130   case 1:
00131     IsSoftIP = false;
00132     CompIP   = true;
00133     break;
00134   case 2:
00135     IsSoftIE = false;
00136     CompIE   = true;
00137     break;
00138   case 3:
00139     IsSoftIE = IsSoftIP = false;
00140     break;
00141   case 4:
00142     // one photon out of the narrow cones with singularity about initial particles
00143     if(fHardPhoton && fEvent->MakeEvent(c,fPhI1,2)){
00144       //#define TEST
00145 #ifdef TEST
00146       double r0 = R_Gamma();
00147       //      double r1 = R_Gamma_t();
00148       double r1 = R_Gamma_kuraev_eidelman();
00149       if(r_abs_max<fabs(r1-r0)||r_rel_max<fabs((r1-r0)/r0)){
00150         std::cout<<DB(r0)<<DB(r1)<<DB(r1-r0)<<DB((r1-r0)/r0)<<std::endl;
00151         if(r_abs_max<fabs(r1-r0))r_abs_max = fabs(r1-r0);
00152         if(r_rel_max<fabs((r1-r0)/r0))r_rel_max = fabs((r1-r0)/r0);
00153       }
00154       double t1 = gConst->Alpha()/(2*gConst->Pi2())*r1;
00155 #else
00156       double t1 = gConst->Alpha()/(2*gConst->Pi2())*R_Gamma();
00157 #endif
00158       double norm = fPhI1->GetENorm()*fPhI1->GetThNorm()*fPhI1->GetPhiNorm()*GetCNorm();
00159       return t1*norm;
00160     }
00161     return 0;
00162     break;
00163   case 5:
00164     // Soft and virtial part for one photon cross-section (testing purpose only)
00165     if(fEvent->MakeEvent(c,(double)0.,(double)0.)){
00166       double lde = gGlobal->Get_LnDelta();
00167       double Ae = (gGlobal->Get_L()-1)*(lde + 3./4.); 
00168       // + (M_PI*M_PI/6 - 1) -- this part in Api
00169       double Api = (fCompPiSV + 2*log((1 - fBetaPi*c)/(1 + fBetaPi*c)))*lde
00170         + fK->Eval(gGlobal->Get_s(),c); // fK contains charge-(even+odd) part
00171       //      std::cout<<DB(lde)<<DB(Ae)<<DB(Api)<<std::endl;
00172       return BornShift(1,1,c)*(1 + 2*AP*(Ae + Api))*GetCNorm();
00173     }
00174     return 0;
00175     break;
00176   case 6:
00177     // Soft and virtial part for one photon cross-section (testing purpose only)
00178     if(fEvent->MakeEvent(c,(double)0.,(double)0.)){
00179       double lde = gGlobal->Get_LnDelta();
00180       double rho_e = gGlobal->Get_L();
00181       return BornShift(1,1,c)*
00182         (1 + 2*AP*((rho_e-1)*lde+13./12.*rho_e - 14./9. + M_PI*M_PI/6.))*GetCNorm();
00183     }
00184     return 0;
00185     break;
00186   case 7:
00187     // one photon out of the narrow cones with singularity about initial particles
00188     if(fHardPhoton && fEvent->MakeEvent(c,fPhI1,2)){
00189       double t1 = gConst->Alpha()/(2*gConst->Pi2())*R_Gamma_kuraev_eidelman();
00190       double norm = fPhI1->GetENorm()*fPhI1->GetThNorm()*fPhI1->GetPhiNorm()*GetCNorm();
00191       return t1*norm;
00192     }
00193     return 0;
00194     break;
00195   default:
00196     return 0;
00197     break;
00198   }
00199 
00200   if(!fHardPhoton) CompSV = CompIE = CompIP  = false;
00201 
00202   double  x1g, x2g;
00203   x1g = x2g = 0;
00204 
00205   double  z1, z2;
00206   z1 = z2 = 1;
00207 
00208   if(IsSoftIE)
00209     x1g = fPhD1->GetEnergy(); 
00210   else
00211     x1g = fPhI1->GetEnergy();
00212   z1 = 1 - x1g;
00213   
00214   if(IsSoftIP)
00215     x2g = fPhD2->GetEnergy(); 
00216   else
00217     x2g = fPhI2->GetEnergy();
00218   z2 = 1 - x2g;
00219   
00220   if(fEvent->MakeEvent(c, x1g, x2g)){
00221     
00222     double D1, D2, t2 = 0;
00223 
00224     if(IsSoftIE)
00225       D1 = fD->EvalSoft(x1g)*fPhD1->GetENorm();
00226     else{
00227       double norm = fPhI1->GetENorm();
00228       D1 = fD->Eval(z1)*norm;
00229       if(CompIE) t2 = COMP_I(x1g)*norm;
00230     }
00231     
00232     if(IsSoftIP)
00233       D2 = fD->EvalSoft(x2g)*fPhD2->GetENorm();
00234     else{
00235       double norm = fPhI2->GetENorm();
00236       D2 = fD->Eval(z2)*norm;
00237       if(CompIP) t2 = COMP_I(x2g)*norm;
00238     }
00239     
00240     if(CompSV && !fNoFSR) t2 = 2*AP*gGlobal->Get_LnDelta()*
00241                  (fCompPiSV + 2*log((1 - fBetaPi*c)/(1 + fBetaPi*c)));
00242 
00243     double Ksv = 0;
00244     if(fNoFSR)
00245       Ksv = fK->Eval_a();
00246     else
00247       Ksv = fK->Eval(z1*z2*gGlobal->Get_s(),c);
00248 
00249     double t1 = (1 + 2*AP*Ksv)*D1*D2;
00250     
00251     return BornShift(z1,z2,c)*(t1+t2)*GetCNorm();
00252     
00253   }
00254   return 0;
00255 }

void TPiCrossPart::Init (  )  [virtual, inherited]

Reimplemented from TVCrossPart.

Definition at line 64 of file TPiCrossPart.C.

References TVCrossPart::fD, TVCrossPart::fEvent, TPiCrossPart::fFpi, TPiCrossPart::fPhD1, TPiCrossPart::fPhD2, TPiCrossPart::fPhFS, TPiCrossPart::fPhI1, TPiCrossPart::fPhI2, TVCrossPart::fZeroVP, TRadGlobal::Get_ThetaMin(), gGlobal, TFormFactor::Init(), TPhotonF::Init(), TPhotonI::Init(), TPhotonD::Init(), TEvent::Init(), TDFun::Init(), TFormFactor::SetDefaultFF(), TPiCrossPart::SetThetaMin(), and TFormFactor::SetUnitFF().

00064                        {
00065   SetThetaMin(gGlobal->Get_ThetaMin());
00066 
00067   fD->Init();
00068   fEvent->Init();
00069 
00070   fPhD1->Init();
00071   fPhD2->Init();
00072 
00073   fPhI1->Init();
00074   fPhI2->Init();
00075 
00076   fPhFS->Init();
00077 
00078   fFpi->Init();
00079 
00080   if(fZeroVP)
00081     fFpi->SetUnitFF();
00082   else 
00083     fFpi->SetDefaultFF();  
00084 }

double TPiCrossPart::MakeCosTheta (  )  [protected, inherited]

Definition at line 50 of file TPiCrossPart.C.

References TPiCrossPart::fCosMin, and TPiCrossPart::fSinTheta2.

Referenced by TPiCrossPart::GetValue().

00050                                  {
00051   // generate distribution sin^2(theta)dcos(theta)
00052   double c;
00053   do{
00054     c = (2*gRandom->Rndm()-1)*fCosMin;
00055   }while(1 - c*c < gRandom->Rndm());
00056   fSinTheta2 = 1 - c*c;
00057   return c;
00058 }

void TVCrossPart::PrintEvent (  )  [inline, inherited]

Definition at line 20 of file TVCrossPart.h.

References TVCrossPart::fEvent, and TEvent::Print().

00020 {fEvent->Print();}

double TPiCrossPart::R_Gamma (  )  [protected, inherited]

Definition at line 257 of file TPiCrossPart.C.

References EvtCyclic3::A, abs, EvtCyclic3::C, conj(), TFormFactor::Eval(), TVCrossPart::fEvent, TPiCrossPart::fFpi, TVCrossPart::fNoFSR, TRadGlobal::Get_BetaI(), TRadGlobal::Get_MF2(), TRadGlobal::Get_MI2(), TRadGlobal::Get_s(), TEvent::GetCosPsi(), TEvent::GetPPar(), gGlobal, is, rb::me2, rb::mpi2, s, and t().

Referenced by TPiCrossPart::GetValue().

00257                             {
00258   double em,pm,cm, ep,pp,cp, eg,pg,cg;
00259   fEvent->GetPPar(0,em,pm,cm);
00260   fEvent->GetPPar(1,ep,pp,cp);
00261   fEvent->GetPPar(2,eg,pg,cg);
00262   //  cout<<DB(eg)<<DB(cg)<<endl;
00263   double s, s1,  t, t1,  u, u1;
00264   s  = 4;
00265   s1 = 4*(1-eg);
00266 
00267   double BetaI = gGlobal->Get_BetaI();
00268   t  = -2*(em-BetaI*pm*cm);
00269   t1 = -2*(ep+BetaI*pp*cp);
00270 
00271   u  = -2*(ep-BetaI*pp*cp);
00272   u1 = -2*(em+BetaI*pm*cm);
00273       
00274   double chi_m,chi_p,chi_m_p,chi_p_p;
00275   chi_m   = eg*(1-BetaI*cg);
00276   chi_p   = eg*(1+BetaI*cg);
00277   chi_m_p = 2*(1-ep);
00278   chi_p_p = 2*(1-em);
00279 
00280   double ichi_m   = 1/chi_m;
00281   double ichi_p   = 1/chi_p;
00282   double ichi_m_p = 1/chi_m_p;
00283   double ichi_p_p = 1/chi_p_p;
00284   double is       = 1/s;
00285   double is1      = 1/s1;
00286   
00287   //  cout<<DB(eg)<<DB(ichi_m)<<DB(ichi_p)<<endl;
00288 
00289   double mpi2 = gGlobal->Get_MF2();
00290   double me2  = gGlobal->Get_MI2();
00291 
00292   double D_s1_s1, D_s_s, D_s_s1;
00293   D_s1_s1 = D_s_s = D_s_s1 = 0;
00294   double R_s1_s1, R_s_s, R_s_s1;
00295   R_s1_s1 = R_s_s = R_s_s1 = 0;
00296 
00297   double A = (t*u + t1*u1)*(is*is1);
00298   D_s1_s1 =-4*( (t+u)*(t+u) + (t1+u1)*(t1+u1) )*(is1*is1*ichi_m*ichi_p);
00299   R_s1_s1 = 4*s*A*(ichi_m*ichi_p) + mpi2*D_s1_s1
00300     -8*me2*(is1*is1)*( t1*u1*(ichi_m*ichi_m) + t*u*(ichi_p*ichi_p))
00301     +8*mpi2*me2*is1*((ichi_m*ichi_m) + (ichi_p*ichi_p));
00302   //    +4*me2*is*is1*is1*(s*s1-(t-u)*(t1-u1))*((t1+u1)*(ichi_m*ichi_m)+(t+u)*(ichi_p*ichi_p))
00303   //    -8*mpi2*me2*(is1*is1)*((t1+u1)*(ichi_m*ichi_m)+(t+u)*(ichi_p*ichi_p));
00304   //    - 8*me2*(is1*is1)*( t1*u1*(ichi_m*ichi_m) + t*u*(ichi_p*ichi_p) );
00305   //  R_s1_s1 = 4*(ichi_m*ichi_p*is1*is1)*
00306   //    (s1*(t*u + t1*u1) - mpi2*( (t+u)*(t+u) + (t1+u1)*(t1+u1)) 
00307   //     -2*me2*( t1*u1*(ichi_m*chi_p) + t*u*(ichi_p*chi_m)));
00308 
00309   if(!fNoFSR){
00310     D_s_s = 2*mpi2*(s-s1)*(s-s1)*is*(ichi_m_p*ichi_m_p*ichi_p_p*ichi_p_p)+
00311       8*is*is*(t*t1+u*u1-s*s-s*s1)*(ichi_m_p*ichi_p_p);
00312     R_s_s = 4*s1*A*(ichi_m_p*ichi_p_p) + mpi2*D_s_s
00313       -8*mpi2*(is*is)*( t*u1*(ichi_p_p*ichi_p_p) + t1*u*(ichi_m_p*ichi_m_p) );
00314     
00315     double C = 
00316       t*ichi_m*ichi_m_p + t1*ichi_p*ichi_p_p - 
00317       u*ichi_m*ichi_p_p - u1*ichi_p*ichi_m_p;
00318     D_s_s1 = 8*is*is1*((2*(t1 - u) + u1 - t)*chi_m_p + (2*(t - u1) + u - t1)*ichi_p_p +
00319                        0.5*(u1 + t1 - s)*ichi_m*( u*ichi_p_p -  t*ichi_m_p) +
00320                        0.5*(u  + t  - s)*ichi_p*(u1*ichi_m_p - t1*ichi_p_p));
00321     R_s_s1 = -4*A*C + mpi2*D_s_s1;
00322   }
00323 
00324   double CosPsi = fEvent->GetCosPsi();
00325   double gamma = eg*pm/( 2 - eg*(1 - em*CosPsi/pm) );
00326 
00327   std::complex<double> Fpi_s1 = fFpi->Eval(gGlobal->Get_s()*(1-eg));
00328   double Fpi_s1_s1 = std::abs(Fpi_s1*Fpi_s1);
00329 
00330   double Fpi_s_s, Fpi_s_cs1;
00331   Fpi_s_s = Fpi_s_cs1 = 0;
00332   if(!fNoFSR){
00333     std::complex<double> Fpi_s  = fFpi->Eval(gGlobal->Get_s());
00334     Fpi_s_s  = std::abs(Fpi_s*Fpi_s);
00335     Fpi_s_cs1= std::real(Fpi_s*std::conj(Fpi_s1));
00336   }
00337   //  Fpi_s1_s1 = 0; Fpi_s_s = 0;  Fpi_s_cs1 = 1;
00338 
00339   return (Fpi_s1_s1*R_s1_s1 + Fpi_s_s*R_s_s + Fpi_s_cs1*R_s_s1)*gamma/16;
00340 }

double TPiCrossPart::R_Gamma_kuraev_eidelman (  )  [protected, inherited]

Definition at line 498 of file TPiCrossPart.C.

References abs, TFormFactor::Eval(), TVCrossPart::fEvent, TPiCrossPart::fFpi, TEvent::Get4Vector(), TRadGlobal::Get_BetaI(), TRadGlobal::Get_MF2(), TRadGlobal::Get_MI2(), TRadGlobal::Get_s(), TEvent::GetCosPsi(), gGlobal, rb::me2, rb::mpi2, s, t(), and x.

Referenced by TPiCrossPart::GetValue().

00498                                             {
00499   // RGamma from preprint INP 78-82 
00500   // equation (30) page 13
00501   TLorentzVector pm(0,0, gGlobal->Get_BetaI(),1.);
00502   TLorentzVector pp(0,0,-gGlobal->Get_BetaI(),1.);
00503   TLorentzVector qm = fEvent->Get4Vector(0);
00504   TLorentzVector k  = fEvent->Get4Vector(2);
00505   double x = k.E();
00506 
00507   double s  = (pp + pm)*(pp + pm);
00508   double s1 = s*(1-x);
00509   double is1 = 1/s1;
00510 
00511   double ichi_m   = 1/(pp*k);
00512   double ichi_p   = 1/(pm*k);
00513 
00514   double mpi2 = gGlobal->Get_MF2();
00515   double me2  = gGlobal->Get_MI2();
00516 
00517   double z      = pm.Vect().Dot(qm.Vect())/(pm.P()*qm.P());
00518   double xm     = qm.E();
00519   double betam  = qm.P();
00520   double t      = mpi2 - s*(1 - x - xm*0.5*(1+betam*z));
00521   double u      = mpi2 - s*(1     - xm*0.5*(1-betam*z));
00522   double t1     =  mpi2 - s*xm*0.5*(1-betam*z);
00523   double u1     =  mpi2 - s*xm*0.5*(1+betam*z);
00524   double utilde = u + s*x;
00525   double ttilde = t - s*x;
00526 
00527   std::complex<double> Fpi_s1 = fFpi->Eval(gGlobal->Get_s()*s1*0.25);
00528   double Fpi_s1_s1 = std::abs(Fpi_s1*Fpi_s1);
00529 
00530   double R_pi = Fpi_s1_s1*0.125*is1*is1*
00531     ((s*(s1-4*mpi2)-(u1-t)*(u-t1))*
00532      (-me2*s*(1-x)*ichi_m*ichi_m + s*ichi_m*(1 + pow(1 - x, 2))/x) +
00533      (s*(s1-4*mpi2)-(u1-ttilde)*(utilde-t1))*
00534      (-me2*s*(1-x)*ichi_p*ichi_p + s*ichi_p*(1 + pow(1 - x, 2))/x));
00535 
00536   double CosPsi = fEvent->GetCosPsi();
00537   double gamma = k.E()*qm.P()/(2-k.E()*(1-qm.E()*CosPsi/qm.P()));
00538 
00539   return gamma*R_pi*0.25;
00540 }

double TPiCrossPart::R_Gamma_t (  )  [protected, inherited]

Definition at line 344 of file TPiCrossPart.C.

References abs, conj(), Dot, TFormFactor::Eval(), TVCrossPart::fEvent, TPiCrossPart::fFpi, TVCrossPart::fNoFSR, TEvent::Get4Vector(), TRadGlobal::Get_BetaI(), TRadGlobal::Get_MF2(), TRadGlobal::Get_MI2(), TRadGlobal::Get_s(), TEvent::GetCosPsi(), gGlobal, is, rb::me2, rb::mpi2, Prod, and s.

00344                               {
00345   // RGamma for testing purpose only
00346   TLorentzVector pm(0,0,gGlobal->Get_BetaI(),1.);
00347   TLorentzVector pp(0,0,-gGlobal->Get_BetaI(),1.);
00348   TLorentzVector qm = fEvent->Get4Vector(0);
00349   TLorentzVector qp = fEvent->Get4Vector(1);
00350   TLorentzVector k  = fEvent->Get4Vector(2);
00351 
00352   double s  = (pp + pm)*(pp + pm);
00353   double s1 = (qp + qm)*(qp + qm);
00354 
00355   double chi_p   = pp*k;
00356   double chi_m   = pm*k;
00357   double chi_p_p = qp*k;
00358   double chi_m_p = qm*k;
00359   
00360   double ichi_m   = 1/chi_m;
00361   double ichi_p   = 1/chi_p;
00362   double ichi_m_p = 1/chi_m_p;
00363   double ichi_p_p = 1/chi_p_p;
00364 
00365   //  cout<<DB(ichi_m)<<DB(ichi_p)<<endl;
00366   Dot(pp,pm);
00367   double ipppm = 1/pppm;
00368 
00369   Dot(qp,qm);
00370 
00371   TLorentzVector Q  = 0.5*(qp - qm);
00372   TLorentzVector kp = k - pp*chi_m*ipppm;
00373   TLorentzVector km = k - pm*chi_p*ipppm;
00374 
00375   double QQ = Q*Q;
00376   double kk = k*k;
00377   Dot(k,Q);
00378 
00379   Dot(pp,Q);
00380   Dot(pm,Q);
00381   
00382   Dot(kp,Q);
00383   Dot(km,Q);
00384 
00385   Dot(qp,Q);
00386   Dot(qm,Q);
00387 
00388   Dot(qp,k);
00389   Dot(qm,k);
00390 
00391   Dot(pp,k);
00392   Dot(pm,k);
00393 
00394   Dot(pp,km);
00395   Dot(pm,kp);
00396 
00397   Dot(pm,qp);
00398   Dot(pp,qp);
00399 
00400   Dot(pm,qm);
00401   Dot(pp,qm);
00402 
00403   double mpi2 = gGlobal->Get_MF2();
00404   double me2  = gGlobal->Get_MI2();
00405   double is  = 1/s;
00406   double is1 = 1/s1;
00407 
00408   std::complex<double> Fpi_s1 = fFpi->Eval(gGlobal->Get_s()*s1*0.25);
00409   double Fpi_s1_s1 = std::abs(Fpi_s1*Fpi_s1);
00410   double Fpi_s_s, Fpi_s_cs1;
00411   Fpi_s_s = Fpi_s_cs1 = 0;
00412   if(!fNoFSR){
00413     std::complex<double> Fpi_s  = fFpi->Eval(gGlobal->Get_s());
00414     Fpi_s_s  = std::abs(Fpi_s*Fpi_s);
00415     Fpi_s_cs1= std::real(Fpi_s*std::conj(Fpi_s1));
00416   }
00417 
00418   //  Fpi_s1_s1 = 0; Fpi_s_s = 0;  Fpi_s_cs1 = 1;
00419   /* //from article in JHEP
00420   double R_1 = s*(is1*is1)*Fpi_s1_s1*Prod(pp,Q,pm,Q)*
00421     (
00422      (pppm*ichi_p*ichi_m - 2*ichi_m - me2*(ichi_m*ichi_m) + chi_p*ipppm*ichi_m*(1 + me2*ichi_m)) +
00423      (pppm*ichi_p*ichi_m - 2*ichi_p - me2*(ichi_p*ichi_p) + chi_m*ipppm*ichi_p*(1 + me2*ichi_p))
00424      );
00425 
00426   */
00427   double R_1 = s*(is1*is1)*Fpi_s1_s1*
00428     ( (Prod(pp,Q,pm,Q)*(pppm*ichi_p*ichi_m - 2*ichi_m + 2*chi_p*is*ichi_m) + Prod(pp,Q,k,Q)*me2*ichi_m*ichi_m) + 
00429       (Prod(pm,Q,pp,Q)*(pppm*ichi_p*ichi_m - 2*ichi_p + 2*chi_m*is*ichi_p) + Prod(pm,Q,k,Q)*me2*ichi_p*ichi_p)
00430       );
00431 
00432   double R_2 = Prod(pp,Q,pm,Q)*
00433     (
00434      is*Fpi_s_s*
00435      (
00436       (qpqm*(ichi_p_p*ichi_m_p) - mpi2*(ichi_p_p*ichi_p_p)) +
00437       (qpqm*(ichi_p_p*ichi_m_p) - mpi2*(ichi_m_p*ichi_m_p))
00438       ) 
00439      
00440      + 
00441      
00442      2*is1*Fpi_s_cs1*(pp*ichi_p - pm*ichi_m) * (qp*ichi_p_p - qm*ichi_m_p)
00443      );
00444   
00445   double R_3 = 
00446     s*is1*is1*Fpi_s1_s1*
00447     (Prod(pp,Q,km,Q)*ichi_m + Prod(pm,Q,kp,Q)*ichi_p + 2*Qk*(ichi_m*ichi_p)*Prod(pp,Q,pm,k))
00448 
00449     +
00450     
00451     is*Fpi_s_s*
00452     (
00453      -0.5*chi_p*chi_m*(ichi_p_p*ichi_m_p)*qpqm - 0.25*mpi2*(ichi_p_p*ichi_p_p)*
00454      (Prod(pp,k,pm,k) + 2*Prod(pp,Q,pm,k) + 2*Prod(pp,k,pm,Q)) + 
00455      ichi_p_p*(chi_p*pmqp + chi_m*ppqp + 2*Prod(pm,Q,pp,qp))
00456      
00457      +
00458      
00459      -0.5*chi_p*chi_m*(ichi_p_p*ichi_m_p)*qpqm - 0.25*mpi2*(ichi_m_p*ichi_m_p)*
00460      (Prod(pp,k,pm,k) - 2*Prod(pp,Q,pm,k) - 2*Prod(pp,k,pm,Q)) + 
00461      ichi_m_p*(chi_p*pmqm + chi_m*ppqm - 2*Prod(pm,Q,pp,qm))
00462      )
00463     
00464     +
00465     
00466     is1*Fpi_s_cs1*
00467     (
00468      (
00469       Prod(pp,Q,pm,k)*ichi_p_p*(qppp*ichi_p - qppm*ichi_m) + 2*(ppQ - pmQ) 
00470       - ichi_p_p*(Prod(pp,Q,qp,k)-Prod(pm,Q,qp,k)) 
00471       + 2*Qk*Qpp*pmqp*(ichi_p_p*ichi_m) -  2*Qpm*Qk*ppqp*(ichi_p_p*ichi_p)
00472       - QQ*chi_p*qppm*(ichi_p_p*ichi_m) + QQ*ppqm*ichi_p_p + QQ*chi_m*ppqp*(ichi_p_p*ichi_p) 
00473       - QQ*pmqm*ichi_p_p
00474       )
00475      
00476      -
00477      
00478      (
00479       -Prod(pp,Q,pm,k)*ichi_m_p*(qmpp*ichi_p - qmpm*ichi_m) - 2*(ppQ - pmQ) 
00480       + ichi_m_p*(Prod(pp,Q,qm,k)-Prod(pm,Q,qm,k)) 
00481       + 2*Qk*Qpp*pmqm*(ichi_m_p*ichi_m) -  2*Qpm*Qk*ppqm*(ichi_m_p*ichi_p)
00482       - QQ*chi_p*qmpm*(ichi_m_p*ichi_m) + QQ*ppqp*ichi_m_p + QQ*chi_m*ppqm*(ichi_m_p*ichi_p) 
00483       - QQ*pmqp*ichi_m_p
00484       )
00485      )
00486     ;
00487 
00488   double CosPsi = fEvent->GetCosPsi();
00489   double gamma = k.E()*qm.P()/(2-k.E()*(1-qm.E()*CosPsi/qm.P()));
00490 
00491   return gamma*(R_1 + R_2 + R_3 )*0.25;
00492 }

void TVCrossPart::SetDefaultVP (  )  [inline, inherited]

Definition at line 33 of file TVCrossPart.h.

References TVCrossPart::fZeroVP.

00033 {fZeroVP = false;}

virtual void TVCrossPart::SetHardPhoton ( const bool x  )  [inline, virtual, inherited]

Definition at line 31 of file TVCrossPart.h.

References TVCrossPart::fHardPhoton.

Referenced by init_prime_gen_(), Mcgpj::initialize(), and main().

00031 {fHardPhoton = x;}

void TVCrossPart::SetNoFSR (  )  [inline, inherited]

Definition at line 34 of file TVCrossPart.h.

References TVCrossPart::fNoFSR.

Referenced by init_prime_gen_(), Mcgpj::initialize(), and main().

00034 {fNoFSR = true;}

void TPiCrossPart::SetThetaMin ( const double &   )  [virtual, inherited]

Implements TVCrossPart.

Definition at line 43 of file TPiCrossPart.C.

References cos(), TPiCrossPart::fCosMin, TPiCrossPart::fNorm, gConst, and TConstants::Pi().

Referenced by TPiCrossPart::Init().

00043                                               {
00044   fCosMin  = cos(th);
00045   // integral of sin^2(theta)dcos(theta) from -fCosMin to fCosMin
00046   fNorm    = 2*fCosMin*(1 - fCosMin*fCosMin/3)* // Theta norm
00047     2*gConst->Pi();                           // Phi norm  
00048 }

void TVCrossPart::SetZeroVP (  )  [inline, inherited]

Definition at line 32 of file TVCrossPart.h.

References TVCrossPart::fZeroVP.

Referenced by init_prime_gen_(), Mcgpj::initialize(), and main().

00032 {fZeroVP = true;}


Member Data Documentation

double TPiCrossPart::fBetaPi [protected, inherited]

Definition at line 21 of file TPiCrossPart.h.

Referenced by TPiCrossPart::GetValue(), and TPiCrossPart::TPiCrossPart().

double TPiCrossPart::fCompPiSV [protected, inherited]

Definition at line 20 of file TPiCrossPart.h.

Referenced by TPiCrossPart::GetValue(), and TPiCrossPart::TPiCrossPart().

double TPiCrossPart::fCosMin [protected, inherited]

Definition at line 17 of file TPiCrossPart.h.

Referenced by TPiCrossPart::MakeCosTheta(), and TPiCrossPart::SetThetaMin().

TDFun* TVCrossPart::fD [protected, inherited]

Definition at line 11 of file TVCrossPart.h.

Referenced by TPiCrossPart::GetValue(), TMuCrossPart::GetValue(), TGGCrossPart::GetValue(), TEPCrossPart::GetValue(), TPiCrossPart::Init(), TMuCrossPart::Init(), TGGCrossPart::Init(), TEPCrossPart::Init(), TEPCrossPart::TEPCrossPart(), TGGCrossPart::TGGCrossPart(), TMuCrossPart::TMuCrossPart(), TPiCrossPart::TPiCrossPart(), TEPCrossPart::~TEPCrossPart(), TGGCrossPart::~TGGCrossPart(), TMuCrossPart::~TMuCrossPart(), and TPiCrossPart::~TPiCrossPart().

TEvent* TVCrossPart::fEvent [protected, inherited]

Definition at line 10 of file TVCrossPart.h.

Referenced by TVCrossPart::BornCrossSection(), TPiCrossPart::BornShift(), TMuCrossPart::BornShift(), TEPCrossPart::BornShift(), TVCrossPart::GetEvent(), TPiCrossPart::GetValue(), TMuCrossPart::GetValue(), TGGCrossPart::GetValue(), TEPCrossPart::GetValue(), TPiCrossPart::Init(), TMuCrossPart::Init(), TGGCrossPart::Init(), TEPCrossPart::Init(), TVCrossPart::PrintEvent(), TGGCrossPart::R_3_Gamma(), TMuCrossPart::R_e_Gamma(), TMuCrossPart::R_e_Gamma_t(), TMuCrossPart::R_e_mu_Gamma_t(), TMuCrossPart::R_f_Gamma(), TPiCrossPart::R_Gamma(), TPiCrossPart::R_Gamma_kuraev_eidelman(), TPiCrossPart::R_Gamma_t(), TEPCrossPart::RGamma(), TEPCrossPart::RGamma_kuraev_eidelman(), TEPCrossPart::TEPCrossPart(), TGGCrossPart::TGGCrossPart(), TMuCrossPart::TMuCrossPart(), TPiCrossPart::TPiCrossPart(), TEPCrossPart::~TEPCrossPart(), TGGCrossPart::~TGGCrossPart(), TMuCrossPart::~TMuCrossPart(), and TPiCrossPart::~TPiCrossPart().

TFormFactor* TPiCrossPart::fFpi [protected, inherited]

Definition at line 16 of file TPiCrossPart.h.

Referenced by TPiCrossPart::BornShift(), TPiCrossPart::GetFormFactor(), TPiCrossPart::Init(), TPiCrossPart::R_Gamma(), TPiCrossPart::R_Gamma_kuraev_eidelman(), TPiCrossPart::R_Gamma_t(), TKcCrossPart::TKcCrossPart(), TKnCrossPart(), TPiCrossPart::TPiCrossPart(), and TPiCrossPart::~TPiCrossPart().

bool TVCrossPart::fHardPhoton [protected, inherited]

Definition at line 12 of file TVCrossPart.h.

Referenced by TPiCrossPart::GetValue(), TMuCrossPart::GetValue(), TGGCrossPart::GetValue(), TEPCrossPart::GetValue(), TVCrossPart::SetHardPhoton(), TEPCrossPart::TEPCrossPart(), TGGCrossPart::TGGCrossPart(), TMuCrossPart::TMuCrossPart(), and TPiCrossPart::TPiCrossPart().

TPiKFun* TPiCrossPart::fK [protected, inherited]

Definition at line 10 of file TPiCrossPart.h.

Referenced by TPiCrossPart::GetValue(), TPiCrossPart::TPiCrossPart(), and TPiCrossPart::~TPiCrossPart().

bool TVCrossPart::fNoFSR [protected, inherited]

Definition at line 14 of file TVCrossPart.h.

Referenced by TPiCrossPart::GetValue(), TMuCrossPart::GetValue(), TMuCrossPart::R_e_Gamma(), TPiCrossPart::R_Gamma(), TPiCrossPart::R_Gamma_t(), TVCrossPart::SetNoFSR(), TGGCrossPart::TGGCrossPart(), TKnCrossPart(), TMuCrossPart::TMuCrossPart(), and TPiCrossPart::TPiCrossPart().

double TPiCrossPart::fNorm [protected, inherited]

Definition at line 19 of file TPiCrossPart.h.

Referenced by TPiCrossPart::GetCNorm(), and TPiCrossPart::SetThetaMin().

unsigned int TVCrossPart::fNPart [protected, inherited]

Definition at line 9 of file TVCrossPart.h.

Referenced by TVCrossPart::GetNPart(), TEPCrossPart::TEPCrossPart(), TGGCrossPart::TGGCrossPart(), TMuCrossPart::TMuCrossPart(), and TPiCrossPart::TPiCrossPart().

TPhotonD* TPiCrossPart::fPhD1 [protected, inherited]

Definition at line 11 of file TPiCrossPart.h.

Referenced by TPiCrossPart::GetValue(), TPiCrossPart::Init(), TPiCrossPart::TPiCrossPart(), and TPiCrossPart::~TPiCrossPart().

TPhotonD* TPiCrossPart::fPhD2 [protected, inherited]

Definition at line 12 of file TPiCrossPart.h.

Referenced by TPiCrossPart::GetValue(), TPiCrossPart::Init(), TPiCrossPart::TPiCrossPart(), and TPiCrossPart::~TPiCrossPart().

TPhotonFS* TPiCrossPart::fPhFS [protected, inherited]

Definition at line 15 of file TPiCrossPart.h.

Referenced by TPiCrossPart::Init(), TPiCrossPart::TPiCrossPart(), and TPiCrossPart::~TPiCrossPart().

TPhotonI* TPiCrossPart::fPhI1 [protected, inherited]

Definition at line 13 of file TPiCrossPart.h.

Referenced by TPiCrossPart::GetValue(), TPiCrossPart::Init(), TPiCrossPart::TPiCrossPart(), and TPiCrossPart::~TPiCrossPart().

TPhotonI* TPiCrossPart::fPhI2 [protected, inherited]

Definition at line 14 of file TPiCrossPart.h.

Referenced by TPiCrossPart::GetValue(), TPiCrossPart::Init(), TPiCrossPart::TPiCrossPart(), and TPiCrossPart::~TPiCrossPart().

double TPiCrossPart::fSinTheta2 [protected, inherited]

Definition at line 18 of file TPiCrossPart.h.

Referenced by TPiCrossPart::GetCNorm(), and TPiCrossPart::MakeCosTheta().

bool TVCrossPart::fZeroVP [protected, inherited]

Definition at line 13 of file TVCrossPart.h.

Referenced by TVCrossPart::BornCrossSection(), TPiCrossPart::Init(), TMuCrossPart::Init(), TEPCrossPart::Init(), TVCrossPart::SetDefaultVP(), TVCrossPart::SetZeroVP(), TEPCrossPart::TEPCrossPart(), TMuCrossPart::TMuCrossPart(), and TPiCrossPart::TPiCrossPart().


Generated on Tue Nov 29 23:36:01 2016 for BOSS_7.0.2 by  doxygen 1.4.7