#include <TEPCrossPart.h>
Inheritance diagram for TEPCrossPart:
Public Member Functions | |
TEPCrossPart () | |
~TEPCrossPart () | |
double | BornShift (const double &, const double &, const double &) |
double | GetValue (const unsigned int) |
void | Init () |
void | SetThetaMin (const double &) |
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 | RGamma () |
double | RGamma_kuraev_eidelman (const bool &print=false) |
Protected Attributes | |
TEKFun * | fK |
TPhotonD * | fPhD1 |
TPhotonD * | fPhD2 |
TPhotonD * | fPhD3 |
TPhotonD * | fPhD4 |
TPhotonI * | fPhI1 |
TPhotonI * | fPhI2 |
TPhotonF * | fPhF3 |
TPhotonF * | fPhF4 |
TVacuumPol * | fVPol |
double | fCosTheta |
double | fCosMin |
double | fSinMin2 |
double | fNorm |
double | fMax |
unsigned int | fNPart |
TEvent * | fEvent |
TDFun * | fD |
bool | fHardPhoton |
bool | fZeroVP |
bool | fNoFSR |
Definition at line 8 of file TEPCrossPart.h.
TEPCrossPart::TEPCrossPart | ( | ) |
Definition at line 10 of file TEPCrossPart.C.
References TVCrossPart::fD, TVCrossPart::fEvent, TVCrossPart::fHardPhoton, fK, TVCrossPart::fNPart, fPhD1, fPhD2, fPhD3, fPhD4, fPhF3, fPhF4, fPhI1, fPhI2, fVPol, TVCrossPart::fZeroVP, TRadGlobal::GetDatadir(), TRadGlobal::GetVpolFname(), gGlobal, and TVacuumPol::Init().
00010 :TVCrossPart(){ 00011 fNPart = 18; 00012 00013 fK = new TEKFun(); 00014 fD = new TDFun(); 00015 fEvent = new TEvent(); 00016 00017 // soft photons 00018 fPhD1 = new TPhotonD(); 00019 fPhD2 = new TPhotonD(); 00020 fPhD3 = new TPhotonD(); 00021 fPhD4 = new TPhotonD(); 00022 00023 // initial and final hard photons 00024 fPhI1 = new TPhotonI(); 00025 fPhI2 = new TPhotonI(); 00026 fPhF3 = new TPhotonF(); 00027 fPhF4 = new TPhotonF(); 00028 00029 // vacuum polarization 00030 fVPol = new TVacuumPol(); 00031 fVPol->Init(gGlobal->GetDatadir(), gGlobal->GetVpolFname()); 00032 00033 fHardPhoton = true; 00034 fZeroVP = false; 00035 }
TEPCrossPart::~TEPCrossPart | ( | ) |
Definition at line 89 of file TEPCrossPart.C.
References TVCrossPart::fD, TVCrossPart::fEvent, fK, fPhD1, fPhD2, fPhD3, fPhD4, fPhF3, fPhF4, fPhI1, fPhI2, and fVPol.
00089 { 00090 delete fK; 00091 delete fD; 00092 delete fEvent; 00093 00094 delete fPhD1; 00095 delete fPhD2; 00096 delete fPhD3; 00097 delete fPhD4; 00098 00099 delete fPhI1; 00100 delete fPhI2; 00101 delete fPhF3; 00102 delete fPhF4; 00103 00104 delete fVPol; 00105 }
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 TEPCrossPart::BornShift | ( | const double & | , | |
const double & | , | |||
const double & | ||||
) | [virtual] |
Implements TVCrossPart.
Definition at line 107 of file TEPCrossPart.C.
References abs, conj(), TVacuumPol::Evals(), TVacuumPol::Evalt(), TVCrossPart::fEvent, fVPol, TRadGlobal::Get_s(), TEvent::GetY(), and gGlobal.
Referenced by GetValue().
00107 { 00108 double Y1 = fEvent->GetY(0); 00109 double sw = gGlobal->Get_s()*z1*z2; 00110 double tw = -0.5*gGlobal->Get_s()*z1*Y1*(1.-c); 00111 double a = z1+z2-(z1-z2)*c; 00112 double a2 = a*a; 00113 std::complex<double> vptw = fVPol->Evalt(tw); 00114 std::complex<double> vpsw = fVPol->Evals(sw); 00115 00116 double p1 = z1*(1-c); 00117 double p12 = p1*p1; 00118 double p2 = z2*(1+c); 00119 double p22 = p2*p2; 00120 double cs = 00121 std::abs(vptw*vptw)*(a2+p22)/(2*p12) + 00122 std::abs(vpsw*vpsw)*(p12+p22)/(2*a2) - 00123 std::real(vptw*std::conj(vpsw))*p22/(a*p1); 00124 00125 cs *= 4/a2; 00126 00127 return cs; 00128 }
double TEPCrossPart::GetCNorm | ( | ) | [protected] |
Definition at line 59 of file TEPCrossPart.C.
References fCosTheta, fNorm, and s.
Referenced by GetValue().
00059 { 00060 // double s = (1 - fCosTheta)/(3 + fCosTheta*fCosTheta); 00061 double s = 1 - fCosTheta; 00062 double norm = s*s*fNorm; 00063 return norm; 00064 }
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().
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 TEPCrossPart::GetValue | ( | const unsigned | int | ) | [virtual] |
Reimplemented from TVCrossPart.
Definition at line 136 of file TEPCrossPart.C.
References TConstants::Alpha(), TConstants::AlphaPi(), BornShift(), COMP_F, COMP_I, TDFun::Eval(), TEKFun::Eval(), TDFun::EvalSoft(), F, fCosTheta, TVCrossPart::fD, TVCrossPart::fEvent, TVCrossPart::fHardPhoton, fK, fPhD1, fPhD2, fPhD3, fPhD4, fPhF3, fPhF4, fPhI1, fPhI2, gConst, TRadGlobal::Get_b(), TRadGlobal::Get_L(), TRadGlobal::Get_LnDelta(), TRadGlobal::Get_VarPar(), TRadGlobal::Get_XMin(), GetCNorm(), TPhotonF::GetEnergy(), TPhotonI::GetEnergy(), TPhotonD::GetEnergy(), TPhotonD::GetENorm(), TPhotonF::GetENorm(), TPhotonI::GetENorm(), TPhoton::GetPhiNorm(), TPhoton::GetThNorm(), TPhoton::GetThNormF(), TEvent::GetY(), gGlobal, M_PI, MakeCosTheta(), TEvent::MakeEvent(), TEvent::MakeEventN(), maxmtr, TConstants::Pi2(), TEvent::Print(), RGamma(), and RGamma_kuraev_eidelman().
00136 { 00137 bool IsSoftIE, IsSoftIP, IsSoftFE, IsSoftFP; 00138 IsSoftIE = IsSoftIP = IsSoftFE = IsSoftFP = true; 00139 00140 bool CompSV, CompIE, CompIP, CompFE, CompFP; 00141 CompSV = CompIE = CompIP = CompFE = CompFP = false; 00142 #ifdef OLDSTYLE 00143 double b = gGlobal->Get_b(); 00144 #endif 00145 double AP = gConst->AlphaPi(); 00146 00147 #ifdef FIXP 00148 double c = 0.3; 00149 fCosTheta = c; 00150 #else 00151 double c = MakeCosTheta(); 00152 #endif 00153 00154 switch(ipart){ 00155 case 0: 00156 IsSoftIE = IsSoftIP = IsSoftFE = IsSoftFP = true; 00157 CompSV = true; 00158 break; 00159 case 1: 00160 IsSoftFP = false; 00161 CompFP = true; 00162 break; 00163 case 2: 00164 IsSoftFE = false; 00165 CompFE = true; 00166 break; 00167 case 3: 00168 IsSoftFP = IsSoftFE = false; 00169 break; 00170 case 4: 00171 IsSoftIP = false; 00172 CompIP = true; 00173 break; 00174 case 5: 00175 IsSoftIP = IsSoftFP = false; 00176 break; 00177 case 6: 00178 IsSoftIP = IsSoftFE = false; 00179 break; 00180 case 7: 00181 IsSoftIP = IsSoftFE = IsSoftFP = false; 00182 break; 00183 case 8: 00184 IsSoftIE = false; 00185 CompIE = true; 00186 break; 00187 case 9: 00188 IsSoftIE = IsSoftFP = false; 00189 break; 00190 case 10: 00191 IsSoftIE = IsSoftFE = false; 00192 break; 00193 case 11: 00194 IsSoftIE = IsSoftFE = IsSoftFP = false; 00195 break; 00196 case 12: 00197 IsSoftIE = IsSoftIP = false; 00198 break; 00199 case 13: 00200 IsSoftIE = IsSoftIP = IsSoftFP = false; 00201 break; 00202 case 14: 00203 IsSoftIE = IsSoftIP = IsSoftFE = false; 00204 break; 00205 case 15: 00206 IsSoftIE = IsSoftIP = IsSoftFE = IsSoftFP = false; 00207 break; 00208 case 16: 00209 // one photon out of the narrow cones with singularity about initial particles 00210 if(fHardPhoton && fEvent->MakeEvent(c,fPhI1,1)){ 00211 double t1 = gConst->Alpha()/(2*gConst->Pi2())*RGamma(); 00212 double norm = fPhI1->GetENorm()*fPhI1->GetThNorm()*fPhI1->GetPhiNorm()*GetCNorm(); 00213 return t1*norm; 00214 } 00215 return 0; 00216 break; 00217 case 17: 00218 // one photon out of the narrow cones with singularity about final particles 00219 if(fHardPhoton && fEvent->MakeEvent(c,fPhF3,0)){ 00220 // fEvent->CosPrint(); 00221 double t1 = gConst->Alpha()/(2*gConst->Pi2())*RGamma(); 00222 double norm = fPhF3->GetENorm()*fPhF3->GetThNormF()*fPhF3->GetPhiNorm()*GetCNorm(); 00223 // cout<<DB(RGamma())<<DB(GetCNorm())<<DB(fPhF3->GetENorm())<<DB(fPhF3->GetThNorm())<<endl; 00224 /* 00225 if(t1*norm>maxmtr){ 00226 maxmtr = t1*norm; 00227 fEvent->Print(); 00228 cout<<maxmtr<<" "<<t1<<" "<<norm<<endl<<flush; 00229 } 00230 */ 00231 return t1*norm; 00232 } 00233 return 0; 00234 break; 00235 case 18: 00236 // Soft and virtial part for one photon cross-section (testing purpose only) 00237 if(fEvent->MakeEvent(c,0,0,0,0)){ 00238 double lde = gGlobal->Get_LnDelta(); 00239 return BornShift(1,1,c)* 00240 (1 00241 + 2*AP*(gGlobal->Get_L()-1)*(2*lde + 1.5) 00242 - 4*AP*log((1+c)/(1-c))*lde 00243 + AP*fK->Eval(1,1,c) 00244 )*GetCNorm(); 00245 } 00246 return 0; 00247 break; 00248 case 19: 00249 // preprint INP 78-82 soft and virtual part 00250 if(fEvent->MakeEvent(c,0,0,0,0)){ 00251 double lde = gGlobal->Get_LnDelta(); 00252 double rho = gGlobal->Get_L(); 00253 double z = c; 00254 double z2 = z*z; 00255 double z3 = z2*z; 00256 double z4 = z3*z; 00257 #define F(x) TLi2::Eval(x) 00258 return BornShift(1,1,c)* 00259 (1 00260 + 2*AP* 00261 ( 00262 2*(rho - 1 - log((1+z)/(1-z)))*lde - F(0.5*(1+z)) + F(0.5*(1-z)) - 23./9. + 00263 11./6.*rho + 00264 0.5*pow(3+z2,-2)*( 00265 M_PI*M_PI/3.*(2*z4 - 3*z3 - 15*z) + 00266 0.5*(2*z4-3*z3+9*z2+3*z+21)*pow(log(0.5*(1-z)),2)- 00267 (z4+z2-2*z)*pow(log(0.5*(1+z)),2) - 00268 (z3+4*z2+5*z+6)*pow(log((1+z)/(1-z)),2)+ 00269 1./3.*(11*z3+33*z2+21*z+111)*log(0.5*(1-z))+ 00270 (z3-3*z2+7*z-5)*log(0.5*(1+z)) 00271 ) 00272 ) 00273 )*GetCNorm(); 00274 #undef F 00275 } 00276 00277 return 0; 00278 break; 00279 case 20: 00280 // one photon out of the narrow cones with singularity about initial particles 00281 if(fHardPhoton && fEvent->MakeEvent(c,fPhI1,1)){ 00282 double t1 = gConst->Alpha()/(2*gConst->Pi2())*RGamma_kuraev_eidelman(); 00283 double norm = fPhI1->GetENorm()*fPhI1->GetThNorm()*fPhI1->GetPhiNorm()*GetCNorm(); 00284 return t1*norm; 00285 } 00286 return 0; 00287 break; 00288 case 21: 00289 // one photon out of the narrow cones with singularity about final particles 00290 if(fHardPhoton && fEvent->MakeEvent(c,fPhF3,0)){ 00291 double t1 = gConst->Alpha()/(2*gConst->Pi2())*RGamma_kuraev_eidelman(); 00292 double norm = fPhF3->GetENorm()*fPhF3->GetThNormF()*fPhF3->GetPhiNorm()*GetCNorm(); 00293 00294 if(t1*norm>maxmtr){ 00295 maxmtr = t1*norm; 00296 fEvent->Print(); 00297 RGamma_kuraev_eidelman(true); 00298 cout<<maxmtr<<" "<<t1<<" "<<norm<<endl<<flush; 00299 } 00300 00301 return t1*norm; 00302 } 00303 return 0; 00304 break; 00305 default: 00306 return 0; 00307 break; 00308 } 00309 00310 if(!fHardPhoton) CompSV = CompIE = CompIP = CompFE = CompFP = false; 00311 00312 double RedCut = 1e-10;//gGlobal->Get_InfraRedCut(); 00313 00314 double x1g, x2g, x3g, x4g; 00315 x1g = x2g = x3g = x4g = 0; 00316 00317 double z1, z2, z3, z4; 00318 z1 = z2 = z3 = z4 = 1; 00319 00320 if(IsSoftIE) 00321 x1g = fPhD1->GetEnergy(); 00322 else 00323 x1g = fPhI1->GetEnergy(); 00324 z1 = 1 - x1g; 00325 00326 if(IsSoftIP) 00327 x2g = fPhD2->GetEnergy(); 00328 else 00329 x2g = fPhI2->GetEnergy(); 00330 z2 = 1 - x2g; 00331 00332 if(fEvent->MakeEvent(c,x1g,x2g,0,0)){ 00333 00334 double Beta2_m, D0_m; 00335 if(IsSoftFE){ 00336 gGlobal->Get_VarPar(1, Beta2_m, D0_m); 00337 // gGlobal->Get_VarPar(fEvent->GetY(0), Beta2_m, D0_m); 00338 x3g = fPhD3->GetEnergy(gGlobal->Get_XMin(), Beta2_m); 00339 }else 00340 x3g = fPhF3->GetEnergy(); 00341 z3 = 1 - x3g; 00342 00343 double Beta2_p, D0_p; 00344 if(IsSoftFP){ 00345 gGlobal->Get_VarPar(1, Beta2_p, D0_p); 00346 // gGlobal->Get_VarPar(fEvent->GetY(1), Beta2_p, D0_p); 00347 x4g = fPhD4->GetEnergy(gGlobal->Get_XMin(), Beta2_p); 00348 }else 00349 x4g = fPhF4->GetEnergy(); 00350 z4 = 1 - x4g; 00351 00352 if(fEvent->MakeEventN(x3g,x4g)){ 00353 00354 double D1, D2, D3, D4, t2 = 0; 00355 00356 if(IsSoftIE){ 00357 #ifdef OLDSTYLE 00358 D1 = b; 00359 #else 00360 if(x1g>RedCut) 00361 D1 = fD->EvalSoft(x1g)*fPhD1->GetENorm(); 00362 else 00363 D1 = fD->EvalSoft(RedCut)*fPhD1->GetENorm(); 00364 #endif 00365 }else{ 00366 double norm = fPhI1->GetENorm(); 00367 D1 = fD->Eval(z1)*norm; 00368 if(CompIE) t2 = COMP_I(x1g)*norm; 00369 } 00370 00371 if(IsSoftIP) 00372 #ifdef OLDSTYLE 00373 D2 = b; 00374 #else 00375 if(x2g>RedCut) 00376 D2 = fD->EvalSoft(x2g)*fPhD2->GetENorm(); 00377 else 00378 D2 = fD->EvalSoft(RedCut)*fPhD2->GetENorm(); 00379 #endif 00380 else{ 00381 double norm = fPhI2->GetENorm(); 00382 D2 = fD->Eval(z2)*norm; 00383 if(CompIP) t2 = COMP_I(x2g)*norm; 00384 } 00385 00386 if(IsSoftFE) 00387 #ifdef OLDSTYLE 00388 D3 = b; 00389 #else 00390 if(x3g>RedCut) 00391 D3 = fD->EvalSoft(x3g, Beta2_m, D0_m)*fPhD3->GetENorm(); 00392 else 00393 D3 = fD->EvalSoft(RedCut, Beta2_m, D0_m)*fPhD3->GetENorm(); 00394 #endif 00395 else{ 00396 gGlobal->Get_VarPar(fEvent->GetY(0), Beta2_m, D0_m); 00397 double norm = fPhF3->GetENorm(); 00398 D3 = fD->Eval(z3, Beta2_m, D0_m)*norm; 00399 if(CompFE) t2 = COMP_F(x3g)*norm; 00400 } 00401 00402 if(IsSoftFP){ 00403 #ifdef OLDSTYLE 00404 D4 = b; 00405 #else 00406 if(x4g>RedCut) 00407 D4 = fD->EvalSoft(x4g, Beta2_p, D0_p)*fPhD4->GetENorm(); 00408 else 00409 D4 = fD->EvalSoft(RedCut, Beta2_p, D0_p)*fPhD4->GetENorm(); 00410 #endif 00411 }else{ 00412 gGlobal->Get_VarPar(fEvent->GetY(1), Beta2_p, D0_p); 00413 double norm = fPhF4->GetENorm(); 00414 D4 = fD->Eval(z4, Beta2_p, D0_p)*norm; 00415 if(CompFP) t2 = COMP_F(x4g)*norm; 00416 } 00417 00418 if(CompSV) 00419 t2 = -4*AP*log((1+c)/(1-c))*gGlobal->Get_LnDelta(); 00420 double Ksv; 00421 if(fHardPhoton) 00422 Ksv = fK->Eval(z1,z2,c); 00423 else 00424 Ksv = 0; 00425 double t1 = (1 + AP*Ksv)*D1*D2*D3*D4; 00426 00427 return BornShift(z1,z2,c)*(t1+t2)*GetCNorm(); 00428 } 00429 } 00430 return 0; 00431 }
void TEPCrossPart::Init | ( | ) | [virtual] |
Reimplemented from TVCrossPart.
Definition at line 66 of file TEPCrossPart.C.
References TVCrossPart::fD, TVCrossPart::fEvent, fK, fPhD1, fPhD2, fPhD3, fPhD4, fPhF3, fPhF4, fPhI1, fPhI2, fVPol, TVCrossPart::fZeroVP, gCut, TPhotonF::Init(), TPhotonI::Init(), TPhotonD::Init(), TEvent::Init(), TDFun::Init(), TEKFun::Init(), M_PI, TVacuumPol::SetDefaultVP(), SetThetaMin(), TVacuumPol::SetZeroVP(), TKinemCut::ThetaMaxM(), and TKinemCut::ThetaMinM().
00066 { 00067 SetThetaMin((gCut->ThetaMinM()<M_PI-gCut->ThetaMaxM())?gCut->ThetaMinM():M_PI-gCut->ThetaMaxM()); 00068 00069 fK->Init(); 00070 fD->Init(); 00071 fEvent->Init(); 00072 00073 fPhD1->Init(); 00074 fPhD2->Init(); 00075 fPhD3->Init(); 00076 fPhD4->Init(); 00077 00078 fPhI1->Init(); 00079 fPhI2->Init(); 00080 fPhF3->Init(); 00081 fPhF4->Init(); 00082 00083 if(fZeroVP) 00084 fVPol->SetZeroVP(); 00085 else 00086 fVPol->SetDefaultVP(); 00087 }
double TEPCrossPart::MakeCosTheta | ( | ) | [protected] |
Definition at line 48 of file TEPCrossPart.C.
References fCosMin, fCosTheta, and fSinMin2.
Referenced by GetValue().
00048 { 00049 // double s,r[2]; 00050 // do{ 00051 // gRandom->RndmArray(2,r); 00052 // fCosTheta = 1 - fSinMin2/(1+fCosMin*(2*r[0]-1)); 00053 // s = 3 + fCosTheta*fCosTheta; 00054 // }while(s*s < fMax*r[1]); 00055 fCosTheta = 1 - fSinMin2/(1+fCosMin*(2*gRandom->Rndm() - 1)); 00056 return fCosTheta; 00057 }
void TVCrossPart::PrintEvent | ( | ) | [inline, inherited] |
double TEPCrossPart::RGamma | ( | ) | [protected] |
Definition at line 433 of file TEPCrossPart.C.
References conj(), TVacuumPol::Evals(), TVacuumPol::Evalt(), TVCrossPart::fEvent, fVPol, TRadGlobal::Get_BetaI(), TRadGlobal::Get_MI2(), TRadGlobal::Get_s(), TEvent::GetCosPsi(), TEvent::GetPPar(), gGlobal, is, rb::me2, rb::R(), s, and t().
Referenced by GetValue().
00433 { 00434 double em,pm,cm, ep,pp,cp, eg,pg,cg; 00435 fEvent->GetPPar(0,em,pm,cm); 00436 fEvent->GetPPar(1,ep,pp,cp); 00437 fEvent->GetPPar(2,eg,pg,cg); 00438 00439 double s, s1, t, t1, u, u1; 00440 s = 4; 00441 s1 = 4*(1 - eg); 00442 00443 double BetaI = gGlobal->Get_BetaI(); 00444 t = -2*(em - BetaI*pm*cm); 00445 t1 = -2*(ep + BetaI*pp*cp); 00446 00447 u = -2*(ep - BetaI*pp*cp); 00448 u1 = -2*(em + BetaI*pm*cm); 00449 00450 double is = 1/s; 00451 double is1 = 1/s1; 00452 double it = 1/t; 00453 double it1 = 1/t1; 00454 00455 double s_ev = gGlobal->Get_s()*0.25; 00456 std::complex<double> vpt,vpt1,vps,vps1; 00457 vpt = fVPol->Evalt(s_ev*t); 00458 vpt1 = fVPol->Evalt(s_ev*t1); 00459 vps = fVPol->Evals(s_ev*s); 00460 vps1 = fVPol->Evals(s_ev*s1); 00461 00462 // cout<<DB(vpt)<<DB(vpt1)<<DB(vps)<<DB(vps1)<<endl; 00463 double vpss, vps1s1, vptt, vpt1t1, vptct1, vpscs1, vptcs, vpt1cs1, vpt1cs, vptcs1; 00464 vpss = std::real(vps*std::conj(vps)); 00465 vps1s1 = std::real(vps1*std::conj(vps1)); 00466 vptt = std::real(vpt*std::conj(vpt)); 00467 vpt1t1 = std::real(vpt1*std::conj(vpt1)); 00468 00469 vptct1 = std::real(vpt*std::conj(vpt1)); 00470 vpscs1 = std::real(vps*std::conj(vps1)); 00471 vptcs = std::real(vpt*std::conj(vps)); 00472 vpt1cs1 = std::real(vpt1*std::conj(vps1)); 00473 vpt1cs = std::real(vpt1*std::conj(vps)); 00474 vptcs1 = std::real(vpt*std::conj(vps1)); 00475 00476 double chi_m,chi_p,chi_m_p,chi_p_p; 00477 chi_m = eg*(1 - BetaI*cg); 00478 chi_p = eg*(1 + BetaI*cg); 00479 chi_m_p = 2*(1 - ep); 00480 chi_p_p = 2*(1 - em); 00481 // cout<<DB(chi_m)<<DB(chi_p)<<DB(chi_m_p)<<DB(chi_p_p)<<endl; 00482 double ichi_m = 1/chi_m; 00483 double ichi_p = 1/chi_p; 00484 double ichi_m_p = 1/chi_m_p; 00485 double ichi_p_p = 1/chi_p_p; 00486 00487 double SS,S1S1,SS1,TT,T1T1,TT1,TS,TS1,T1S,T1S1; 00488 SS = t*t + t1*t1 + u*u + u1*u1; 00489 S1S1 = SS; 00490 SS1 = SS*(t*chi_p*chi_p_p + t1*chi_m*chi_m_p - u*chi_p*chi_m_p - u1*chi_m*chi_p_p); 00491 TT = s*s + s1*s1 + u*u + u1*u1; 00492 T1T1 = TT; 00493 TT1 = TT*(u*chi_p*chi_m_p + u1*chi_m*chi_p_p + s*chi_m_p*chi_p_p + s1*chi_m*chi_p); 00494 TS = -0.5*( u*u + u1*u1 )*( s *(t + s1) + t *(s + t1) - u*u1 ); 00495 TS1 = -0.5*( u*u + u1*u1 )*( t *(s1 + t1) + s1*(s + t ) - u*u1 ); 00496 T1S = 0.5*( u*u + u1*u1 )*( t1*(s + t ) + s *(s1 + t1) - u*u1 ); 00497 T1S1 = 0.5*( u*u + u1*u1 )*( s1*(s + t1) + t1*(s1 + t ) - u*u1 ); 00498 // cout<<DB(SS)<<DB(TT)<<DB(TS)<<DB(TS1)<<DB(T1S)<<DB(T1S1)<<endl; 00499 /* 00500 double R = 00501 vpss*SS/(s*chi_m_p*chi_p_p) + 00502 vps1s1*S1S1/(s1*chi_m*chi_p) - 00503 vptt*TT/(t*chi_p*chi_p_p) - 00504 vpt1t1*T1T1/(t1*chi_m*chi_m_p) + 00505 (vptct1*TT1/(t*t1)-vpscs1*SS1/(s*s1))/(chi_m*chi_m_p*chi_p*chi_p_p) + 00506 vptcs*TS/(t*s*chi_m_p*chi_p*chi_p_p) + 00507 vpt1cs1*T1S1/(t1*s1*chi_m*chi_m_p*chi_p) - 00508 vpt1cs*T1S/(t1*s*chi_m*chi_m_p*chi_p_p) - 00509 vptcs1*TS1/(t*s1*chi_m*chi_p*chi_p_p); 00510 cout<<DB(R)<<endl; 00511 */ 00512 double R = 00513 vpss*SS*(is*ichi_m_p*ichi_p_p) + 00514 vps1s1*S1S1*(is1*ichi_m*ichi_p) - 00515 vptt*TT*(it*ichi_p*ichi_p_p) - 00516 vpt1t1*T1T1*(it1*ichi_m*ichi_m_p) + 00517 (vptct1*TT1*(it*it1) - vpscs1*SS1*(is*is1))*(ichi_m*ichi_m_p*ichi_p*ichi_p_p) + 00518 vptcs*TS*(it*is*ichi_m_p*ichi_p*ichi_p_p) + 00519 vpt1cs1*T1S1*(it1*is1*ichi_m*ichi_m_p*ichi_p) - 00520 vpt1cs*T1S*(it1*is*ichi_m*ichi_m_p*ichi_p_p) - 00521 vptcs1*TS1*(it*is1*ichi_m*ichi_p*ichi_p_p); 00522 /* 00523 double vptt1 = std::abs(vpt*vpt1); 00524 double vprtt1 = std::real(vpt*vpt1); 00525 double Rss1 = -vptt*TT/(t*chi_p*chi_p_p) - vpt1t1*T1T1/(t1*chi_m*chi_m_p) 00526 + vprtt1*TT/(t*t1)*(u/(chi_m*chi_p_p) + u1/(chi_p*chi_m_p)) 00527 - vpscs1*SS/(s*s1)* 00528 (t/(chi_m*chi_m_p) + t1/(chi_p*chi_p_p) - 00529 u/(chi_m*chi_p_p) - u1/(chi_p*chi_m_p)) + 00530 (vptcs*chi_m*TS/(t*s) + vpt1cs1*chi_p_p*T1S1/(t1*s1) - 00531 vpt1cs*chi_p*T1S/(t1*s) - vptcs1*chi_m_p*TS1/(t*s1))/(chi_p*chi_m*chi_p_p*chi_m_p); 00532 double Rss = (vpss*SS/s + vptt1*TT*s1/(t*t1))/(chi_p_p*chi_m_p); 00533 double Rs1s1 = (vps1s1*SS/s1 + vptt1*TT*s/(t*t1))/(chi_p*chi_m); 00534 double R1 = Rss + Rss1 + Rs1s1; 00535 */ 00536 00537 double me2 = gGlobal->Get_MI2(); 00538 double st2 = (s+t)*(s+t); 00539 double b1 = 0.5*(vptt *( s*s + st2)*it *it + vpss *( st2 + t*t )* is*is ) + vptcs *st2 *is *it; 00540 double st12 = (s+t1)*(s+t1); 00541 double b2 = 0.5*(vpt1t1*( s*s + st12)*it1*it1 + vpss *( st12 + t1*t1)* is*is ) + vptcs *st12*is *it1; 00542 double s1t2 = (s1+t)*(s1+t); 00543 double b3 = 0.5*(vptt *(s1*s1 + s1t2)*it *it + vps1s1*(s1t2 + t*t )*is1*is1) + vptcs1 *s1t2*is1*it; 00544 double s1t12 = (s1+t)*(s1+t1); 00545 double b4 = 0.5*(vpt1t1*(s1*s1 +s1t12)*it1*it1 + vps1s1*(s1t12 + t1*t1)*is1*is1) + vpt1cs1*s1t12*is1*it1; 00546 R -= 4*me2*( 00547 (ichi_p_p*ichi_p_p)*b1 + 00548 (ichi_m_p*ichi_m_p)*b2 + 00549 (ichi_p *ichi_p )*b3 + 00550 (ichi_m *ichi_m )*b4 00551 ); 00552 00553 double CosPsi = fEvent->GetCosPsi(); 00554 double gamma = eg*pm/(2 - eg*(1 - em*CosPsi/pm)); 00555 00556 return R*gamma*0.25; 00557 }
double TEPCrossPart::RGamma_kuraev_eidelman | ( | const bool & | print = false |
) | [protected] |
Definition at line 560 of file TEPCrossPart.C.
References DB, TVCrossPart::fEvent, TRadGlobal::Get_BetaI(), TRadGlobal::Get_MI2(), TEvent::GetCosPsi(), TEvent::GetPPar(), gGlobal, rb::me2, rb::R(), s, and t().
Referenced by GetValue().
00560 { 00561 // preprint INP 78-82 00562 double em,pm,cm, ep,pp,cp, eg,pg,cg; 00563 fEvent->GetPPar(0,em,pm,cm); 00564 fEvent->GetPPar(1,ep,pp,cp); 00565 fEvent->GetPPar(2,eg,pg,cg); 00566 00567 double s = 4; 00568 double s1 = s*(1 - eg); 00569 00570 double u1 = s*(-1. + 0.5*em*(1.-cm)); 00571 double t1 = -0.5*s*em*(1.+cm); 00572 double t = -0.5*s*em*(1.-cm); 00573 double u = s*(-1 + eg + 0.5*em*(1+cm)); 00574 double utilde = s*(-1 + 0.5*em*(1+cm)); 00575 double t1tilde = s*(-1 + eg +0.5*em*(1-cm)); 00576 00577 double BetaI = gGlobal->Get_BetaI(); 00578 double chi_m = eg*(1 - BetaI*cg); 00579 double chi_p = eg*(1 + BetaI*cg); 00580 double chi_m_p = 2*(1 - ep); 00581 double chi_p_p = 2*(1 - em); 00582 double me2 = gGlobal->Get_MI2(); 00583 double R_i = 00584 0.5*(u *u1*pow(1/t1+1/s1,2) + s*s1/pow(t1 ,2) + 00585 t*t1 /pow(s1,2))*s*(-me2*(1-eg)/pow(chi_m,2) + (1+pow(1-eg,2))/(eg*chi_m)) + 00586 0.5*(utilde*u1*pow(1/t +1/s1,2) + s*s1/pow(t1tilde,2) + 00587 t*t1tilde/pow(s1,2))*s*(-me2*(1-eg)/pow(chi_p,2) + (1+pow(1-eg,2))/(eg*chi_p)); 00588 00589 double R_f = pow((3+cm*cm)/(1-cm),2)*s*(-me2/(4*pow(chi_p_p,2))-me2/(4*pow(chi_m_p,2)) + 00590 (1+pow(1-eg,2))/(4*eg)*(1/chi_m_p + 1/chi_p_p)); 00591 00592 double R = R_i + R_f; 00593 00594 double CosPsi = fEvent->GetCosPsi(); 00595 double gamma = eg*pm/(2 - eg*(1 - em*CosPsi/pm)); 00596 if(print)cout<<DB(R_i)<<DB(R_f)<<DB(gamma)<<DB(u)<<DB(u1)<<DB(utilde)<<DB(t)<<DB(t1)<<DB(t1tilde)<<DB(chi_m)<<DB(chi_p)<<DB(chi_m_p)<<DB(chi_p_p)<<endl<<flush; 00597 return R*gamma*0.25; 00598 }
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 TEPCrossPart::SetThetaMin | ( | const double & | ) | [virtual] |
Implements TVCrossPart.
Definition at line 37 of file TEPCrossPart.C.
References cos(), fCosMin, fNorm, fSinMin2, gConst, and TConstants::Pi().
Referenced by Init().
00037 { 00038 fCosMin = cos(th); 00039 fSinMin2 = 1 - fCosMin*fCosMin; 00040 // fMax = pow((3 + fCosMin*fCosMin),2); 00041 // double c = fCosMin; 00042 // double s2 = fSinMin2; 00043 // fNorm = 2*( c*(75 - 26*c*c - c*c*c*c) + 24*s2*log((1-c)/(1+c)) )/(3*s2)* // Theta norm 00044 fNorm = 2*fCosMin/fSinMin2* // Theta norm 00045 2*gConst->Pi(); // Phi norm 00046 }
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 TEPCrossPart::fCosMin [protected] |
double TEPCrossPart::fCosTheta [protected] |
Definition at line 20 of file TEPCrossPart.h.
Referenced by GetCNorm(), GetValue(), and MakeCosTheta().
TDFun* TVCrossPart::fD [protected, inherited] |
Definition at line 11 of file TVCrossPart.h.
Referenced by TPiCrossPart::GetValue(), TMuCrossPart::GetValue(), TGGCrossPart::GetValue(), GetValue(), TPiCrossPart::Init(), TMuCrossPart::Init(), TGGCrossPart::Init(), Init(), TEPCrossPart(), TGGCrossPart::TGGCrossPart(), TMuCrossPart::TMuCrossPart(), TPiCrossPart::TPiCrossPart(), ~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(), BornShift(), TVCrossPart::GetEvent(), TPiCrossPart::GetValue(), TMuCrossPart::GetValue(), TGGCrossPart::GetValue(), GetValue(), TPiCrossPart::Init(), TMuCrossPart::Init(), TGGCrossPart::Init(), 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(), RGamma(), RGamma_kuraev_eidelman(), TEPCrossPart(), TGGCrossPart::TGGCrossPart(), TMuCrossPart::TMuCrossPart(), TPiCrossPart::TPiCrossPart(), ~TEPCrossPart(), TGGCrossPart::~TGGCrossPart(), TMuCrossPart::~TMuCrossPart(), and TPiCrossPart::~TPiCrossPart().
bool TVCrossPart::fHardPhoton [protected, inherited] |
Definition at line 12 of file TVCrossPart.h.
Referenced by TPiCrossPart::GetValue(), TMuCrossPart::GetValue(), TGGCrossPart::GetValue(), GetValue(), TVCrossPart::SetHardPhoton(), TEPCrossPart(), TGGCrossPart::TGGCrossPart(), TMuCrossPart::TMuCrossPart(), and TPiCrossPart::TPiCrossPart().
TEKFun* TEPCrossPart::fK [protected] |
Definition at line 10 of file TEPCrossPart.h.
Referenced by GetValue(), Init(), TEPCrossPart(), and ~TEPCrossPart().
double TEPCrossPart::fMax [protected] |
Definition at line 24 of file TEPCrossPart.h.
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::TKnCrossPart(), TMuCrossPart::TMuCrossPart(), and TPiCrossPart::TPiCrossPart().
double TEPCrossPart::fNorm [protected] |
unsigned int TVCrossPart::fNPart [protected, inherited] |
Definition at line 9 of file TVCrossPart.h.
Referenced by TVCrossPart::GetNPart(), TEPCrossPart(), TGGCrossPart::TGGCrossPart(), TMuCrossPart::TMuCrossPart(), and TPiCrossPart::TPiCrossPart().
TPhotonD* TEPCrossPart::fPhD1 [protected] |
Definition at line 11 of file TEPCrossPart.h.
Referenced by GetValue(), Init(), TEPCrossPart(), and ~TEPCrossPart().
TPhotonD* TEPCrossPart::fPhD2 [protected] |
Definition at line 12 of file TEPCrossPart.h.
Referenced by GetValue(), Init(), TEPCrossPart(), and ~TEPCrossPart().
TPhotonD* TEPCrossPart::fPhD3 [protected] |
Definition at line 13 of file TEPCrossPart.h.
Referenced by GetValue(), Init(), TEPCrossPart(), and ~TEPCrossPart().
TPhotonD* TEPCrossPart::fPhD4 [protected] |
Definition at line 14 of file TEPCrossPart.h.
Referenced by GetValue(), Init(), TEPCrossPart(), and ~TEPCrossPart().
TPhotonF* TEPCrossPart::fPhF3 [protected] |
Definition at line 17 of file TEPCrossPart.h.
Referenced by GetValue(), Init(), TEPCrossPart(), and ~TEPCrossPart().
TPhotonF* TEPCrossPart::fPhF4 [protected] |
Definition at line 18 of file TEPCrossPart.h.
Referenced by GetValue(), Init(), TEPCrossPart(), and ~TEPCrossPart().
TPhotonI* TEPCrossPart::fPhI1 [protected] |
Definition at line 15 of file TEPCrossPart.h.
Referenced by GetValue(), Init(), TEPCrossPart(), and ~TEPCrossPart().
TPhotonI* TEPCrossPart::fPhI2 [protected] |
Definition at line 16 of file TEPCrossPart.h.
Referenced by GetValue(), Init(), TEPCrossPart(), and ~TEPCrossPart().
double TEPCrossPart::fSinMin2 [protected] |
TVacuumPol* TEPCrossPart::fVPol [protected] |
Definition at line 19 of file TEPCrossPart.h.
Referenced by BornShift(), Init(), RGamma(), TEPCrossPart(), and ~TEPCrossPart().
bool TVCrossPart::fZeroVP [protected, inherited] |
Definition at line 13 of file TVCrossPart.h.
Referenced by TVCrossPart::BornCrossSection(), TPiCrossPart::Init(), TMuCrossPart::Init(), Init(), TVCrossPart::SetDefaultVP(), TVCrossPart::SetZeroVP(), TEPCrossPart(), TMuCrossPart::TMuCrossPart(), and TPiCrossPart::TPiCrossPart().