#include <TMuCrossPart.h>
Inheritance diagram for TMuCrossPart:
Public Member Functions | |
TMuCrossPart () | |
~TMuCrossPart () | |
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 | R_e_Gamma () |
double | R_e_Gamma_t () |
double | R_f_Gamma () |
double | R_e_mu_Gamma_t () |
Protected Attributes | |
TMuKFun * | fK |
TPhotonD * | fPhD1 |
TPhotonD * | fPhD2 |
TPhotonI * | fPhI1 |
TPhotonI * | fPhI2 |
TPhotonFS * | fPhFS |
TVacuumPol * | fVPol |
double | fCosMin |
double | fSinTheta2 |
double | fMax |
double | fNorm |
double | fCompMuSV |
double | fBetaMu |
double | fBetaMu2 |
unsigned int | fNPart |
TEvent * | fEvent |
TDFun * | fD |
bool | fHardPhoton |
bool | fZeroVP |
bool | fNoFSR |
Definition at line 8 of file TMuCrossPart.h.
TMuCrossPart::TMuCrossPart | ( | ) |
Definition at line 5 of file TMuCrossPart.C.
References TMuKFun::Eval_Coloumb_Factor(), fBetaMu, fCompMuSV, TVCrossPart::fD, TVCrossPart::fEvent, TVCrossPart::fHardPhoton, fK, TVCrossPart::fNoFSR, TVCrossPart::fNPart, fPhD1, fPhD2, fPhFS, fPhI1, fPhI2, fVPol, TVCrossPart::fZeroVP, TRadGlobal::Get_BetaF(), TRadGlobal::Get_s(), TRadGlobal::GetDatadir(), TRadGlobal::GetIntFname(), TRadGlobal::GetVpolFname(), gGlobal, TVacuumPol::Init(), and TMuKFun::Init().
00005 :TVCrossPart(){ 00006 fNPart = 5; 00007 00008 fK = new TMuKFun(); 00009 fK->Init(gGlobal->GetDatadir(), gGlobal->GetIntFname()); 00010 fD = new TDFun(); 00011 fEvent = new TEvent(); 00012 std::cout<<"Coloumb factor is "<<fK->Eval_Coloumb_Factor(gGlobal->Get_s())<<std::endl; 00013 00014 // soft photons 00015 fPhD1 = new TPhotonD(); 00016 fPhD2 = new TPhotonD(); 00017 00018 // initial hard photons 00019 fPhI1 = new TPhotonI(); 00020 fPhI2 = new TPhotonI(); 00021 00022 // final hard photons with spherical angle distribution 00023 fPhFS = new TPhotonFS(); 00024 00025 // vacuum polarization 00026 fVPol = new TVacuumPol(); 00027 fVPol->Init(gGlobal->GetDatadir(), gGlobal->GetVpolFname()); 00028 00029 fBetaMu = gGlobal->Get_BetaF(); 00030 fCompMuSV = (1+fBetaMu*fBetaMu)/(2*fBetaMu)*log((1+fBetaMu)/(1-fBetaMu))-1; 00031 00032 // cout<<DB(fBetaMu)<<DB(fCompMuSV)<<endl; 00033 00034 fHardPhoton = true; 00035 fZeroVP = false; 00036 fNoFSR = false; 00037 }
TMuCrossPart::~TMuCrossPart | ( | ) |
Definition at line 82 of file TMuCrossPart.C.
References TVCrossPart::fD, TVCrossPart::fEvent, fK, fPhD1, fPhD2, fPhFS, fPhI1, fPhI2, and fVPol.
00082 { 00083 delete fK; 00084 delete fD; 00085 delete fEvent; 00086 00087 delete fPhD1; 00088 delete fPhD2; 00089 00090 delete fPhI1; 00091 delete fPhI2; 00092 00093 delete fPhFS; 00094 00095 delete fVPol; 00096 }
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 TMuCrossPart::BornShift | ( | const double & | , | |
const double & | , | |||
const double & | ||||
) | [virtual] |
Implements TVCrossPart.
Definition at line 98 of file TMuCrossPart.C.
References abs, conj(), TVacuumPol::Evals(), TVCrossPart::fEvent, fVPol, TRadGlobal::Get_s(), TEvent::GetPPar(), and gGlobal.
Referenced by GetValue().
00098 { 00099 double Y1, y1, c1; 00100 fEvent->GetPPar(0,Y1,y1,c1); 00101 double sw = gGlobal->Get_s()*z1*z2; 00102 std::complex<double> vpsw = fVPol->Evals(sw); 00103 double yc = y1*c; 00104 double ym = z1*(Y1-yc); 00105 double yp = z2*(Y1+yc); 00106 double cs = std::abs(vpsw*std::conj(vpsw)); 00107 cs*= y1*(ym*ym + yp*yp + 2*z1*z2*(Y1*Y1 - y1*y1))/(z1*z1*z1*z2*z2*z2*(z1 + z2 - (z1 - z2)*c*Y1/y1)); 00108 // if(cs<0) 00109 //#define DB(x) #x<<"="<<x<<", " 00110 // std::cout<<DB(Y1)<<DB(y1)<<DB(c1)<<DB(z1)<<DB(z2)<<DB(c)<<std::endl; 00111 return cs*0.25; 00112 }
double TMuCrossPart::GetCNorm | ( | ) | [protected] |
Definition at line 58 of file TMuCrossPart.C.
References fBetaMu2, fNorm, and fSinTheta2.
Referenced by GetValue().
00058 { 00059 return fNorm/(2 - fBetaMu2*fSinTheta2); 00060 }
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 TMuCrossPart::GetValue | ( | const unsigned | int | ) | [virtual] |
Reimplemented from TVCrossPart.
Definition at line 117 of file TMuCrossPart.C.
References TConstants::Alpha(), TConstants::AlphaPi(), BornShift(), COMP_I, TMuKFun::Eval(), TDFun::Eval(), TMuKFun::Eval_a(), TMuKFun::Eval_Coloumb_Factor(), TDFun::EvalSoft(), fBetaMu, fCompMuSV, TVCrossPart::fD, TVCrossPart::fEvent, TVCrossPart::fHardPhoton, fK, TVCrossPart::fNoFSR, fPhD1, fPhD2, fPhI1, fPhI2, gConst, TRadGlobal::Get_LnDelta(), TRadGlobal::Get_s(), GetCNorm(), TPhotonI::GetEnergy(), TPhotonD::GetEnergy(), TPhotonD::GetENorm(), TPhotonI::GetENorm(), TPhoton::GetPhiNorm(), TPhoton::GetThNorm(), gGlobal, MakeCosTheta(), TEvent::MakeEvent(), TConstants::Pi2(), and R_e_Gamma().
00117 { 00118 bool IsSoftIE, IsSoftIP; 00119 IsSoftIE = IsSoftIP = true; 00120 00121 bool CompSV, CompIE, CompIP; 00122 CompSV = CompIE = CompIP = false; 00123 double AP = gConst->AlphaPi(); 00124 00125 double c = MakeCosTheta(); 00126 00127 switch(ipart){ 00128 case 0: 00129 IsSoftIE = IsSoftIP = true; 00130 CompSV = true; 00131 break; 00132 case 1: 00133 IsSoftIP = false; 00134 CompIP = true; 00135 break; 00136 case 2: 00137 IsSoftIE = false; 00138 CompIE = true; 00139 break; 00140 case 3: 00141 IsSoftIE = IsSoftIP = false; 00142 break; 00143 case 4: 00144 // one photon out of the narrow cones with singularity around initial particles 00145 if(fHardPhoton && fEvent->MakeEvent(c,fPhI1,2)){ 00146 double t1 = gConst->Alpha()/(2*gConst->Pi2())*R_e_Gamma(); 00147 double norm = fPhI1->GetENorm()*fPhI1->GetThNorm()*fPhI1->GetPhiNorm()*GetCNorm(); 00148 return t1*norm; 00149 } 00150 return 0; 00151 break; 00152 default: 00153 return 0; 00154 break; 00155 } 00156 00157 if(!fHardPhoton) CompSV = CompIE = CompIP = false; 00158 00159 double x1g, x2g; 00160 x1g = x2g = 0; 00161 00162 double z1, z2; 00163 z1 = z2 = 1; 00164 00165 if(IsSoftIE) 00166 x1g = fPhD1->GetEnergy(); 00167 else 00168 x1g = fPhI1->GetEnergy(); 00169 z1 = 1 - x1g; 00170 00171 if(IsSoftIP) 00172 x2g = fPhD2->GetEnergy(); 00173 else 00174 x2g = fPhI2->GetEnergy(); 00175 z2 = 1 - x2g; 00176 00177 if(fEvent->MakeEvent(c, x1g, x2g)){ 00178 00179 double D1, D2, t2 = 0; 00180 00181 if(IsSoftIE) 00182 D1 = fD->EvalSoft(x1g)*fPhD1->GetENorm(); 00183 else{ 00184 double norm = fPhI1->GetENorm(); 00185 D1 = fD->Eval(z1)*norm; 00186 if(CompIE) t2 = COMP_I(x1g)*norm; 00187 } 00188 00189 if(IsSoftIP) 00190 D2 = fD->EvalSoft(x2g)*fPhD2->GetENorm(); 00191 else{ 00192 double norm = fPhI2->GetENorm(); 00193 D2 = fD->Eval(z2)*norm; 00194 if(CompIP) t2 = COMP_I(x2g)*norm; 00195 } 00196 00197 if(CompSV && !fNoFSR ){ 00198 t2 = 2*AP*gGlobal->Get_LnDelta()*(fCompMuSV + 2*log((1-fBetaMu*c)/(1+fBetaMu*c))); 00199 } 00200 00201 double kfactor, coloumbfactor; 00202 if(fNoFSR){ 00203 kfactor = 2*AP*fK->Eval_a(); 00204 coloumbfactor = 1; 00205 }else{ 00206 kfactor = 2*AP*fK->Eval(z1*z2*gGlobal->Get_s(),c); 00207 coloumbfactor = fK->Eval_Coloumb_Factor(z1*z2*gGlobal->Get_s()); 00208 } 00209 double t1 = coloumbfactor*(1 + kfactor)*D1*D2; 00210 00211 return BornShift(z1,z2,c)*(t1+t2)*GetCNorm(); 00212 00213 } 00214 return 0; 00215 }
void TMuCrossPart::Init | ( | ) | [virtual] |
Reimplemented from TVCrossPart.
Definition at line 62 of file TMuCrossPart.C.
References TVCrossPart::fD, TVCrossPart::fEvent, fPhD1, fPhD2, fPhFS, fPhI1, fPhI2, fVPol, TVCrossPart::fZeroVP, TRadGlobal::Get_ThetaMin(), gGlobal, TPhotonF::Init(), TPhotonI::Init(), TPhotonD::Init(), TEvent::Init(), TDFun::Init(), TVacuumPol::SetDefaultVP(), SetThetaMin(), and TVacuumPol::SetZeroVP().
00062 { 00063 SetThetaMin(gGlobal->Get_ThetaMin()); 00064 00065 fD->Init(); 00066 fEvent->Init(); 00067 00068 fPhD1->Init(); 00069 fPhD2->Init(); 00070 00071 fPhI1->Init(); 00072 fPhI2->Init(); 00073 00074 fPhFS->Init(); 00075 00076 if(fZeroVP) 00077 fVPol->SetZeroVP(); 00078 else 00079 fVPol->SetDefaultVP(); 00080 }
double TMuCrossPart::MakeCosTheta | ( | ) | [protected] |
Definition at line 47 of file TMuCrossPart.C.
References fBetaMu2, fCosMin, and fSinTheta2.
Referenced by GetValue().
00047 { 00048 // generate distribution (2 - beta^2 sin^2(theta))dcos(theta) 00049 double c,s2; 00050 do{ 00051 c = (2*gRandom->Rndm()-1)*fCosMin; 00052 s2 = 1 - c*c; 00053 }while(2 - fBetaMu2*s2 < fMax*gRandom->Rndm()); 00054 fSinTheta2 = s2; 00055 return c; 00056 }
void TVCrossPart::PrintEvent | ( | ) | [inline, inherited] |
double TMuCrossPart::R_e_Gamma | ( | ) | [protected] |
Definition at line 217 of file TMuCrossPart.C.
References abs, EvtCyclic3::B, EvtCyclic3::C, conj(), TVacuumPol::Evals(), TVCrossPart::fEvent, TVCrossPart::fNoFSR, fVPol, TRadGlobal::Get_BetaI(), TRadGlobal::Get_MF2(), TRadGlobal::Get_MI2(), TRadGlobal::Get_s(), TEvent::GetCosPsi(), TEvent::GetPPar(), gGlobal, is, rb::me2, s, and t().
Referenced by GetValue().
00217 { 00218 // Equation 2.12 00219 00220 double em,pm,cm, ep,pp,cp, eg,pg,cg; 00221 fEvent->GetPPar(0,em,pm,cm); 00222 fEvent->GetPPar(1,ep,pp,cp); 00223 fEvent->GetPPar(2,eg,pg,cg); 00224 00225 double s, s1, t, t1, u, u1; 00226 s = 4; 00227 s1 = 4*(1-eg); 00228 00229 double BetaI = gGlobal->Get_BetaI(); 00230 t = -2*(em-BetaI*pm*cm); 00231 t1 = -2*(ep+BetaI*pp*cp); 00232 00233 u = -2*(ep-BetaI*pp*cp); 00234 u1 = -2*(em+BetaI*pm*cm); 00235 00236 double chi_m = eg*(1-BetaI*cg); 00237 double chi_p = eg*(1+BetaI*cg); 00238 double ichi_m = 1/chi_m; 00239 double ichi_p = 1/chi_p; 00240 00241 double chi_m_p=0, chi_p_p=0, ichi_m_p=0, ichi_p_p=0; 00242 if(!fNoFSR){ 00243 chi_m_p = 2*(1-ep); 00244 chi_p_p = 2*(1-em); 00245 ichi_m_p = 1/chi_m_p; 00246 ichi_p_p = 1/chi_p_p; 00247 } 00248 00249 double is = 1/s; 00250 double is1 = 1/s1; 00251 00252 double mmu2 = gGlobal->Get_MF2(); 00253 double me2 = gGlobal->Get_MI2(); 00254 00255 double B = (u*u + u1*u1 + t*t + t1*t1)*(0.25*is*is1); 00256 double D_s1_s1 = ((t+u)*(t+u)+(t1+u1)*(t1+u1))*(0.5*ichi_m*ichi_p); 00257 double R_e = s*B*(ichi_m*ichi_p) 00258 - me2*(0.5*ichi_m*ichi_m*is1*is1)*(t1*t1 + u1*u1 + 2*mmu2*s1) 00259 - me2*(0.5*ichi_p*ichi_p*is1*is1)*(t*t + u*u + 2*mmu2*s1) 00260 + mmu2*(is1*is1)*D_s1_s1; 00261 00262 double R_mu = 0; 00263 double R_e_mu = 0; 00264 if(!fNoFSR){ 00265 double D_s_s = -(u*u + t1*t1 + 2*s*mmu2)*(0.5*ichi_m_p*ichi_m_p) 00266 -(u1*u1 + t*t + 2*s*mmu2)*(0.5*ichi_p_p*ichi_p_p) 00267 +(s*s1 - s*s + t*u + t1*u1 - 2*s*mmu2)*(ichi_m_p*ichi_p_p); 00268 R_mu = s1*B*(ichi_m_p*ichi_p_p)+mmu2*(is*is)*D_s_s; 00269 00270 double C = 00271 u*(ichi_m*ichi_p_p) + u1*(ichi_p*ichi_m_p) - 00272 t*(ichi_m*ichi_m_p) - t1*(ichi_p*ichi_p_p); 00273 double D_s_s1 = 0.5*(s+s1)*C + 2*(u-t1)*ichi_m_p + 2*(u1-t)*ichi_p_p; 00274 R_e_mu = B*C + mmu2*(is*is1)*D_s_s1; 00275 } 00276 00277 double CosPsi = fEvent->GetCosPsi(); 00278 double gamma = eg*pm/(2-eg*(1-em*CosPsi/pm)); 00279 00280 std::complex<double> vp_s1 = fVPol->Evals(gGlobal->Get_s()*(1-eg)); 00281 double vp_s1_s1 = std::abs(vp_s1*vp_s1); 00282 00283 double vp_s_s = 0; 00284 double vp_s1_cs = 0; 00285 if(!fNoFSR){ 00286 std::complex<double> vp_s = fVPol->Evals(gGlobal->Get_s()); 00287 vp_s_s = std::abs(vp_s*vp_s); 00288 vp_s1_cs= std::real(vp_s1*std::conj(vp_s)); 00289 } 00290 00291 return (vp_s1_s1*R_e + vp_s1_cs*R_e_mu + vp_s_s*R_mu)*gamma; 00292 }
double TMuCrossPart::R_e_Gamma_t | ( | ) | [protected] |
Definition at line 341 of file TMuCrossPart.C.
References abs, TVacuumPol::Evals(), TVCrossPart::fEvent, fVPol, TRadGlobal::Get_BetaI(), TRadGlobal::Get_MF2(), TRadGlobal::Get_MI2(), TRadGlobal::Get_s(), TEvent::GetCosPsi(), TEvent::GetPPar(), and gGlobal.
00341 { 00342 double em,pm,cm, ep,pp,cp, eg,pg,cg; 00343 00344 fEvent->GetPPar(0,em,pm,cm); 00345 fEvent->GetPPar(1,ep,pp,cp); 00346 fEvent->GetPPar(2,eg,pg,cg); 00347 00348 double betam = pm/em; 00349 double betap = pp/ep; 00350 00351 double mmu2 = gGlobal->Get_MF2(); 00352 double egamma2 = 1/gGlobal->Get_MI2(); 00353 00354 double Ae = mmu2*(1-eg+eg*eg/4*(1+cg*cg))+ep*em*(1-(1-eg)*betap*cp*betam*cm) 00355 +(1-eg)*eg*cg*eg*cg/2+(1-eg/2)*((2-eg)*(1-eg)-2*ep*em); 00356 00357 double Be =-1/(1+egamma2*(1-cg*cg))*((1-eg)*(mmu2*ep*em*(1-betap*cp*betam*cm)-2)+ 00358 ep*ep*(1+cg*betap*cp)+ 00359 em*em*(1+cg*betam*cm)); 00360 00361 double CosPsi = fEvent->GetCosPsi(); 00362 double gamma = eg*pm/(2-eg*(1-em*CosPsi/pm)); 00363 00364 double BetaI = gGlobal->Get_BetaI(); 00365 double RG_i = (Ae+Be)*gamma/((eg*eg*(1-eg)*(1-eg))*(1-BetaI*BetaI*cg*cg)); 00366 00367 std::complex<double> vp_s1 = fVPol->Evals(gGlobal->Get_s()*(1-eg)); 00368 double vp_s1_s1 = std::abs(vp_s1*vp_s1); 00369 00370 return vp_s1_s1*RG_i; 00371 }
double TMuCrossPart::R_e_mu_Gamma_t | ( | ) | [protected] |
Definition at line 373 of file TMuCrossPart.C.
References abs, EvtCyclic3::C, conj(), TVacuumPol::Evals(), TVCrossPart::fEvent, fVPol, TEvent::Get4Vector(), TRadGlobal::Get_BetaI(), TRadGlobal::Get_MF2(), TRadGlobal::Get_MI2(), TRadGlobal::Get_s(), TEvent::GetCosPsi(), gGlobal, rb::me2, P(), s, and t().
00373 { 00374 TLorentzVector pm(0,0,gGlobal->Get_BetaI(),1.); 00375 TLorentzVector pp(0,0,-gGlobal->Get_BetaI(),1.); 00376 TLorentzVector qm = fEvent->Get4Vector(0); 00377 TLorentzVector qp = fEvent->Get4Vector(1); 00378 TLorentzVector k = fEvent->Get4Vector(2); 00379 00380 double s = (pp + pm)*(pp + pm); 00381 double s1 = (qp + qm)*(qp + qm); 00382 00383 double t = -2*pm*qm; 00384 double t1 = -2*pp*qp; 00385 double u = -2*pm*qp; 00386 double u1 = -2*pp*qm; 00387 00388 double chi_p = pp*k; 00389 double chi_m = pm*k; 00390 double chi_p_p = qp*k; 00391 double chi_m_p = qm*k; 00392 00393 double ichi_m = 1/chi_m; 00394 double ichi_p = 1/chi_p; 00395 double ichi_m_p = 1/chi_m_p; 00396 double ichi_p_p = 1/chi_p_p; 00397 00398 TLorentzVector Q = qm*ichi_m_p - qp*ichi_p_p; 00399 TLorentzVector P = pp*ichi_p - pm*ichi_m; 00400 00401 double mmu2 = gGlobal->Get_MF2(); 00402 double me2 = gGlobal->Get_MI2(); 00403 00404 double cA = 2*mmu2*s + u*u1 + t*t1; 00405 double cPp = 2*mmu2*chi_p - u1*chi_p_p - t1*chi_m_p; 00406 double cPm = 2*mmu2*chi_m - u *chi_m_p - t *chi_p_p; 00407 00408 // Equation 2.9 00409 double A_e = 00410 0.5*s*ichi_p*ichi_m*cA + ichi_m*cPp + ichi_p*cPm - 00411 0.5*(u1*ichi_p - t*ichi_m)*(u-t1) - 00412 0.5*(t1*ichi_p - u*ichi_m)*(t-u1) - 00413 0.5*s*ichi_p*(2*mmu2 + ichi_m*cPp) - 00414 0.5*s*ichi_m*(2*mmu2 + ichi_p*cPm); 00415 00416 double B_e = -me2*(0.5*(ichi_p*ichi_p + ichi_m*ichi_m)*cA - 00417 ichi_p*ichi_p*cPm - ichi_m*ichi_m*cPp); 00418 00419 double R_e = A_e + B_e; R_e *= s/(s1*s1); 00420 00421 // Equation 2.10 00422 double A_mu = 00423 ((cA - (u1 + t1)*chi_m - (u + t)*chi_p)*qm*qp - 00424 4*mmu2*chi_p*chi_m)*(ichi_p_p*ichi_m_p) - 00425 (t1*chi_m + u*chi_p)*ichi_m_p - 00426 (u1*chi_m + t*chi_p)*ichi_p_p + 00427 0.5*(t1*ichi_p_p - u1*ichi_m_p)*(t-u) + 00428 0.5*(u*ichi_p_p - t*ichi_m_p)*(u1-t1); 00429 00430 double B_mu = 00431 -0.5*cA*mmu2*(ichi_p_p*ichi_p_p + ichi_m_p*ichi_m_p) + 00432 mmu2*((t1*chi_m + u*chi_p)*(ichi_m_p*ichi_m_p) + 00433 (u1*chi_m + t*chi_p)*(ichi_p_p*ichi_p_p)); 00434 /* 00435 // Equation 2.13 00436 double C_mu = me2*( 2*mmu2*s1*ichi_p_p*ichi_m_p 00437 + (t + u1)*ichi_m_p + (t1 + u)*ichi_p_p 00438 + 4*mmu2*(ichi_m_p + ichi_p_p)); 00439 */ 00440 double C_mu = 0; 00441 double R_mu = A_mu + B_mu + C_mu; R_mu /= s; 00442 00443 double C = u*(ichi_m*ichi_p_p) + u1*(ichi_p*ichi_m_p) - 00444 t*(ichi_m*ichi_m_p) - t1*(ichi_p*ichi_p_p); 00445 00446 // Equation 2.11 00447 double R_e_mu = 0.5*cA*C - 00448 2*( -t - t1 + u + u1 - 00449 0.5*u1*(pm*ichi_m - qp*ichi_p_p )*(Q*chi_p_p + P*chi_m) - 00450 0.5*t1*(pm*ichi_m - qm*ichi_m_p )*(Q*chi_m_p - P*chi_m) - 00451 mmu2*(chi_p + chi_m )*(Q*P) + 00452 mmu2*(ichi_p_p - ichi_m_p )*(chi_m - chi_p) - 00453 0.5*t*(qp*ichi_p_p - pp*ichi_p )*(Q*chi_p_p - P*chi_p) - 00454 0.5*u*(qm*ichi_m_p - pp*ichi_p )*(Q*chi_m_p + P*chi_p) ); 00455 R_e_mu /= s1; 00456 00457 double CosPsi = fEvent->GetCosPsi(); 00458 double gamma = k.E()*qm.P()/(2-k.E()*(1-qm.E()*CosPsi/qm.P())); 00459 00460 std::complex<double> vp_s1 = fVPol->Evals(gGlobal->Get_s()*s1*0.25); 00461 std::complex<double> vp_s = fVPol->Evals(gGlobal->Get_s()); 00462 double vp_s1_s1 = std::abs(vp_s1*vp_s1); 00463 double vp_s_s = std::abs(vp_s*vp_s); 00464 double vp_s1_cs = std::real(vp_s1*std::conj(vp_s)); 00465 00466 // cout<<DB(gamma*R_e_mu*0.25)<<endl; 00467 // return gamma*R_e_mu*vp_s1_cs*0.25; 00468 00469 return gamma*(R_e*vp_s1_s1 + R_mu*vp_s_s + R_e_mu*vp_s1_cs)*0.25; 00470 }
double TMuCrossPart::R_f_Gamma | ( | ) | [protected] |
Definition at line 294 of file TMuCrossPart.C.
References abs, EvtCyclic3::B, EvtCyclic3::C, conj(), TVacuumPol::Evals(), TVCrossPart::fEvent, fVPol, TRadGlobal::Get_BetaI(), TRadGlobal::Get_MF2(), TRadGlobal::Get_s(), TEvent::GetCosPsi(), TEvent::GetPPar(), gGlobal, s, and t().
00294 { 00295 double em,pm,cm, ep,pp,cp, eg,pg,cg; 00296 fEvent->GetPPar(0,em,pm,cm); 00297 fEvent->GetPPar(1,ep,pp,cp); 00298 fEvent->GetPPar(2,eg,pg,cg); 00299 00300 double s, s1, t, t1, u, u1; 00301 s = 4; 00302 s1 = 4*(1-eg); 00303 00304 double BetaI = gGlobal->Get_BetaI(); 00305 t = -2*(em-BetaI*pm*cm); 00306 t1 = -2*(ep+BetaI*pp*cp); 00307 00308 u = -2*(ep-BetaI*pp*cp); 00309 u1 = -2*(em+BetaI*pm*cm); 00310 00311 double chi_m, chi_p, chi_m_p, chi_p_p; 00312 chi_m = eg*(1-BetaI*cg); 00313 chi_p = eg*(1+BetaI*cg); 00314 chi_m_p = 2*(1-ep); 00315 chi_p_p = 2*(1-em); 00316 00317 double mmu2 = gGlobal->Get_MF2(); 00318 double B = (u*u + u1*u1 + t*t + t1*t1)/(4*s*s1); 00319 double D_s_s = -(u*u + t1*t1 + 2*s*mmu2)/(2*chi_m_p*chi_m_p) 00320 -(u1*u1 + t*t + 2*s*mmu2)/(2*chi_p_p*chi_p_p) 00321 +(s*s1 - s*s + t*u + t1*u1 - 2*s*mmu2)/(chi_m_p*chi_p_p); 00322 double R_mu = s1*B/(chi_m_p*chi_p_p)+mmu2/(s*s)*D_s_s; 00323 00324 double C = u/(chi_m*chi_p_p) + u1/(chi_p*chi_m_p) - t/(chi_m*chi_m_p) - t1/(chi_p*chi_p_p); 00325 double D_s_s1 = 0.5*(s+s1)*C + 2*(u-t1)/chi_m_p + 2*(u1-t)/chi_p_p; 00326 double R_e_mu = B*C + mmu2/(s*s1)*D_s_s1; 00327 00328 00329 double CosPsi = fEvent->GetCosPsi(); 00330 double gamma = eg*pm/(2-eg*(1-em*CosPsi/pm)); 00331 00332 std::complex<double> vp_s = fVPol->Evals(gGlobal->Get_s()); 00333 double vp_s_s = std::abs(vp_s*vp_s); 00334 std::complex<double> vp_s1 = fVPol->Evals(gGlobal->Get_s()*s1*0.25); 00335 double vp_s1_cs= std::real(vp_s1*std::conj(vp_s)); 00336 00337 double RG_f = gamma*(vp_s_s*R_mu + vp_s1_cs*R_e_mu); 00338 return RG_f; 00339 }
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 TMuCrossPart::SetThetaMin | ( | const double & | ) | [virtual] |
Implements TVCrossPart.
Definition at line 39 of file TMuCrossPart.C.
References cos(), fBetaMu2, fCosMin, fMax, fNorm, gConst, TRadGlobal::Get_BetaF(), gGlobal, and TConstants::Pi().
Referenced by Init().
00039 { 00040 fCosMin = cos(th); 00041 fBetaMu2 = gGlobal->Get_BetaF()*gGlobal->Get_BetaF(); 00042 fMax = 2 - fBetaMu2*(1 - fCosMin*fCosMin); 00043 fNorm = 2*fCosMin*(2 - fBetaMu2 + fCosMin*fCosMin*fBetaMu2/3)* // Theta norm 00044 2*gConst->Pi(); // Phi norm 00045 }
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 TMuCrossPart::fBetaMu [protected] |
double TMuCrossPart::fBetaMu2 [protected] |
Definition at line 23 of file TMuCrossPart.h.
Referenced by GetCNorm(), MakeCosTheta(), and SetThetaMin().
double TMuCrossPart::fCompMuSV [protected] |
double TMuCrossPart::fCosMin [protected] |
TDFun* TVCrossPart::fD [protected, inherited] |
Definition at line 11 of file TVCrossPart.h.
Referenced by TPiCrossPart::GetValue(), GetValue(), TGGCrossPart::GetValue(), TEPCrossPart::GetValue(), TPiCrossPart::Init(), Init(), TGGCrossPart::Init(), TEPCrossPart::Init(), TEPCrossPart::TEPCrossPart(), TGGCrossPart::TGGCrossPart(), TMuCrossPart(), TPiCrossPart::TPiCrossPart(), TEPCrossPart::~TEPCrossPart(), TGGCrossPart::~TGGCrossPart(), ~TMuCrossPart(), and TPiCrossPart::~TPiCrossPart().
TEvent* TVCrossPart::fEvent [protected, inherited] |
Definition at line 10 of file TVCrossPart.h.
Referenced by TVCrossPart::BornCrossSection(), TPiCrossPart::BornShift(), BornShift(), TEPCrossPart::BornShift(), TVCrossPart::GetEvent(), TPiCrossPart::GetValue(), GetValue(), TGGCrossPart::GetValue(), TEPCrossPart::GetValue(), TPiCrossPart::Init(), Init(), TGGCrossPart::Init(), TEPCrossPart::Init(), TVCrossPart::PrintEvent(), TGGCrossPart::R_3_Gamma(), R_e_Gamma(), R_e_Gamma_t(), R_e_mu_Gamma_t(), 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(), TPiCrossPart::TPiCrossPart(), TEPCrossPart::~TEPCrossPart(), TGGCrossPart::~TGGCrossPart(), ~TMuCrossPart(), and TPiCrossPart::~TPiCrossPart().
bool TVCrossPart::fHardPhoton [protected, inherited] |
Definition at line 12 of file TVCrossPart.h.
Referenced by TPiCrossPart::GetValue(), GetValue(), TGGCrossPart::GetValue(), TEPCrossPart::GetValue(), TVCrossPart::SetHardPhoton(), TEPCrossPart::TEPCrossPart(), TGGCrossPart::TGGCrossPart(), TMuCrossPart(), and TPiCrossPart::TPiCrossPart().
TMuKFun* TMuCrossPart::fK [protected] |
Definition at line 10 of file TMuCrossPart.h.
Referenced by GetValue(), TMuCrossPart(), and ~TMuCrossPart().
double TMuCrossPart::fMax [protected] |
bool TVCrossPart::fNoFSR [protected, inherited] |
Definition at line 14 of file TVCrossPart.h.
Referenced by TPiCrossPart::GetValue(), GetValue(), R_e_Gamma(), TPiCrossPart::R_Gamma(), TPiCrossPart::R_Gamma_t(), TVCrossPart::SetNoFSR(), TGGCrossPart::TGGCrossPart(), TKnCrossPart::TKnCrossPart(), TMuCrossPart(), and TPiCrossPart::TPiCrossPart().
double TMuCrossPart::fNorm [protected] |
unsigned int TVCrossPart::fNPart [protected, inherited] |
Definition at line 9 of file TVCrossPart.h.
Referenced by TVCrossPart::GetNPart(), TEPCrossPart::TEPCrossPart(), TGGCrossPart::TGGCrossPart(), TMuCrossPart(), and TPiCrossPart::TPiCrossPart().
TPhotonD* TMuCrossPart::fPhD1 [protected] |
Definition at line 11 of file TMuCrossPart.h.
Referenced by GetValue(), Init(), TMuCrossPart(), and ~TMuCrossPart().
TPhotonD* TMuCrossPart::fPhD2 [protected] |
Definition at line 12 of file TMuCrossPart.h.
Referenced by GetValue(), Init(), TMuCrossPart(), and ~TMuCrossPart().
TPhotonFS* TMuCrossPart::fPhFS [protected] |
Definition at line 15 of file TMuCrossPart.h.
Referenced by Init(), TMuCrossPart(), and ~TMuCrossPart().
TPhotonI* TMuCrossPart::fPhI1 [protected] |
Definition at line 13 of file TMuCrossPart.h.
Referenced by GetValue(), Init(), TMuCrossPart(), and ~TMuCrossPart().
TPhotonI* TMuCrossPart::fPhI2 [protected] |
Definition at line 14 of file TMuCrossPart.h.
Referenced by GetValue(), Init(), TMuCrossPart(), and ~TMuCrossPart().
double TMuCrossPart::fSinTheta2 [protected] |
TVacuumPol* TMuCrossPart::fVPol [protected] |
Definition at line 16 of file TMuCrossPart.h.
Referenced by BornShift(), Init(), R_e_Gamma(), R_e_Gamma_t(), R_e_mu_Gamma_t(), R_f_Gamma(), TMuCrossPart(), and ~TMuCrossPart().
bool TVCrossPart::fZeroVP [protected, inherited] |
Definition at line 13 of file TVCrossPart.h.
Referenced by TVCrossPart::BornCrossSection(), TPiCrossPart::Init(), Init(), TEPCrossPart::Init(), TVCrossPart::SetDefaultVP(), TVCrossPart::SetZeroVP(), TEPCrossPart::TEPCrossPart(), TMuCrossPart(), and TPiCrossPart::TPiCrossPart().