#include <TKnCrossPart.h>
Inheritance diagram for TKnCrossPart:
Public Member Functions | |
TKnCrossPart () | |
~TKnCrossPart () | |
double | BornShift (const double &, const double &, const double &) |
double | GetValue (const unsigned int) |
void | Init () |
void | SetThetaMin (const double &) |
TFormFactor * | GetFormFactor () |
void | PrintEvent () |
void | GetEvent (double &p0, double &t0, double &ph0, double &p1, double &t1, double &ph) |
void | GetEvent (double *m, int &n) |
TEvent * | GetEvent () |
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 | |
TPiKFun * | fK |
TPhotonD * | fPhD1 |
TPhotonD * | fPhD2 |
TPhotonI * | fPhI1 |
TPhotonI * | fPhI2 |
TPhotonFS * | fPhFS |
TFormFactor * | fFpi |
double | fCosMin |
double | fSinTheta2 |
double | fNorm |
double | fCompPiSV |
double | fBetaPi |
unsigned int | fNPart |
TEvent * | fEvent |
TDFun * | fD |
bool | fHardPhoton |
bool | fZeroVP |
bool | fNoFSR |
Definition at line 6 of file TKnCrossPart.h.
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] |
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] |
void TVCrossPart::GetEvent | ( | double * | m, | |
int & | n | |||
) | [inline, inherited] |
Definition at line 25 of file TVCrossPart.h.
References TVCrossPart::fEvent, and TEvent::GetEvent().
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().
TFormFactor* TPiCrossPart::GetFormFactor | ( | ) | [inline, inherited] |
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] |
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;}
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().