#include "EvtGenBase/EvtPatches.hh"
#include <math.h>
#include <assert.h>
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGammaMatrix.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtTensor4C.hh"
Go to the source code of this file.
Functions | |
ostream & | operator<< (ostream &s, const EvtDiracSpinor &sp) |
EvtDiracSpinor | rotateEuler (const EvtDiracSpinor &sp, double alpha, double beta, double gamma) |
EvtDiracSpinor | boostTo (const EvtDiracSpinor &sp, const EvtVector4R p4) |
EvtDiracSpinor | boostTo (const EvtDiracSpinor &sp, const EvtVector3R boost) |
EvtVector4C | EvtLeptonVACurrent (const EvtDiracSpinor &d, const EvtDiracSpinor &dp) |
EvtVector4C | EvtLeptonVCurrent (const EvtDiracSpinor &d, const EvtDiracSpinor &dp) |
EvtVector4C | EvtLeptonACurrent (const EvtDiracSpinor &d, const EvtDiracSpinor &dp) |
EvtComplex | EvtLeptonSCurrent (const EvtDiracSpinor &d, const EvtDiracSpinor &dp) |
EvtComplex | EvtLeptonPCurrent (const EvtDiracSpinor &d, const EvtDiracSpinor &dp) |
EvtTensor4C | EvtLeptonTCurrent (const EvtDiracSpinor &d, const EvtDiracSpinor &dp) |
EvtTensor4C | EvtLeptonTg5Current (const EvtDiracSpinor &d, const EvtDiracSpinor &dp) |
EvtDiracSpinor | operator * (const EvtComplex &c, const EvtDiracSpinor &d) |
EvtDiracSpinor boostTo | ( | const EvtDiracSpinor & | sp, | |
const EvtVector3R | boost | |||
) |
Definition at line 84 of file EvtDiracSpinor.cc.
00085 { 00086 00087 EvtDiracSpinor tmp(sp); 00088 tmp.applyBoostTo(boost); 00089 return tmp; 00090 00091 }
EvtDiracSpinor boostTo | ( | const EvtDiracSpinor & | sp, | |
const EvtVector4R | p4 | |||
) |
Definition at line 75 of file EvtDiracSpinor.cc.
Referenced by EvtbTosllAmp::CalcMaxProb(), EvtSemiLeptonicAmp::CalcMaxProb(), EvtTauola::decay(), EvtPythia::decay(), EvtLundCharm::decay(), EvtLunda::decay(), EvtKstarstargamma::decay(), EvtJetSet::decay(), EvtBtoXsll::decay(), EvtVectorParticle::epsParent(), EvtAmpA1(), EvtAmpA2(), EvtDecayAngleChi(), EvtParticle::get4Pos(), EvtParticle::getP4Lab(), EvtConExc::hadron_angle_sampling(), EvtRaritaSchwingerParticle::init(), and EvtDiracParticle::init().
00076 { 00077 00078 EvtDiracSpinor tmp(sp); 00079 tmp.applyBoostTo(p4); 00080 return tmp; 00081 00082 }
EvtVector4C EvtLeptonACurrent | ( | const EvtDiracSpinor & | d, | |
const EvtDiracSpinor & | dp | |||
) |
Definition at line 236 of file EvtDiracSpinor.cc.
References subSeperate::temp, EvtGammaMatrix::v0(), EvtGammaMatrix::v1(), EvtGammaMatrix::v2(), EvtGammaMatrix::v3(), EvtGammaMatrix::va0(), EvtGammaMatrix::va1(), EvtGammaMatrix::va2(), and EvtGammaMatrix::va3().
Referenced by EvtbTosllVectorAmp::CalcAmp(), and EvtbTosllScalarAmp::CalcAmp().
00236 { 00237 00238 EvtVector4C temp; 00239 00240 EvtGammaMatrix mat; 00241 00242 // no conjugate here; done in the multiplication 00243 // yes this is stupid and fooled me to for a long time (ryd) 00244 00245 mat = EvtGammaMatrix::v0()-EvtGammaMatrix::va0(); 00246 temp.set(0,d*(mat*dp)); 00247 00248 mat = EvtGammaMatrix::v1()-EvtGammaMatrix::va1(); 00249 temp.set(1,d*(mat*dp)); 00250 00251 mat = EvtGammaMatrix::v2()-EvtGammaMatrix::va2(); 00252 temp.set(2,d*(mat*dp)); 00253 00254 mat = EvtGammaMatrix::v3()-EvtGammaMatrix::va3(); 00255 temp.set(3,d*(mat*dp)); 00256 00257 return temp; 00258 }
EvtComplex EvtLeptonPCurrent | ( | const EvtDiracSpinor & | d, | |
const EvtDiracSpinor & | dp | |||
) |
Definition at line 272 of file EvtDiracSpinor.cc.
References EvtGammaMatrix::g0(), EvtGammaMatrix::g5(), and subSeperate::temp.
Referenced by EvtHypNonLepton::calcAmp().
00272 { 00273 00274 EvtComplex temp; 00275 00276 // no conjugate here; done in the multiplication 00277 // yes this is stupid and fooled me to for a long time (ryd) 00278 static EvtGammaMatrix m=EvtGammaMatrix::g0()*EvtGammaMatrix::g5(); 00279 temp=d*(m*dp); 00280 00281 return temp; 00282 }
EvtComplex EvtLeptonSCurrent | ( | const EvtDiracSpinor & | d, | |
const EvtDiracSpinor & | dp | |||
) |
Definition at line 260 of file EvtDiracSpinor.cc.
References EvtGammaMatrix::g0(), and subSeperate::temp.
Referenced by EvtHypNonLepton::calcAmp().
00260 { 00261 00262 EvtComplex temp; 00263 00264 // no conjugate here; done in the multiplication 00265 // yes this is stupid and fooled me to for a long time (ryd) 00266 00267 temp=d*(EvtGammaMatrix::g0()*dp); 00268 00269 return temp; 00270 }
EvtTensor4C EvtLeptonTCurrent | ( | const EvtDiracSpinor & | d, | |
const EvtDiracSpinor & | dp | |||
) |
Definition at line 284 of file EvtDiracSpinor.cc.
References EvtGammaMatrix::g0(), EvtGammaMatrix::g1(), EvtGammaMatrix::g2(), EvtGammaMatrix::g3(), and subSeperate::temp.
00284 { 00285 00286 EvtTensor4C temp; 00287 temp.zero(); 00288 EvtComplex i2(0,0.5); 00289 00290 static EvtGammaMatrix mat01=EvtGammaMatrix::g0()* 00291 (EvtGammaMatrix::g0()*EvtGammaMatrix::g1()- 00292 EvtGammaMatrix::g1()*EvtGammaMatrix::g0()); 00293 static EvtGammaMatrix mat02=EvtGammaMatrix::g0()* 00294 (EvtGammaMatrix::g0()*EvtGammaMatrix::g2()- 00295 EvtGammaMatrix::g2()*EvtGammaMatrix::g0()); 00296 static EvtGammaMatrix mat03=EvtGammaMatrix::g0()* 00297 (EvtGammaMatrix::g0()*EvtGammaMatrix::g3()- 00298 EvtGammaMatrix::g3()*EvtGammaMatrix::g0()); 00299 static EvtGammaMatrix mat12=EvtGammaMatrix::g0()* 00300 (EvtGammaMatrix::g1()*EvtGammaMatrix::g2()- 00301 EvtGammaMatrix::g2()*EvtGammaMatrix::g1()); 00302 static EvtGammaMatrix mat13=EvtGammaMatrix::g0()* 00303 (EvtGammaMatrix::g1()*EvtGammaMatrix::g3()- 00304 EvtGammaMatrix::g3()*EvtGammaMatrix::g1()); 00305 static EvtGammaMatrix mat23=EvtGammaMatrix::g0()* 00306 (EvtGammaMatrix::g2()*EvtGammaMatrix::g3()- 00307 EvtGammaMatrix::g3()*EvtGammaMatrix::g2()); 00308 00309 00310 temp.set(0,1,i2*(d*(mat01*dp))); 00311 temp.set(1,0,-temp.get(0,1)); 00312 00313 temp.set(0,2,i2*(d*(mat02*dp))); 00314 temp.set(2,0,-temp.get(0,2)); 00315 00316 temp.set(0,3,i2*(d*(mat03*dp))); 00317 temp.set(3,0,-temp.get(0,3)); 00318 00319 temp.set(1,2,i2*(d*(mat12*dp))); 00320 temp.set(2,1,-temp.get(1,2)); 00321 00322 temp.set(1,3,i2*(d*(mat13*dp))); 00323 temp.set(3,1,-temp.get(1,3)); 00324 00325 temp.set(2,3,i2*(d*(mat23*dp))); 00326 temp.set(3,2,-temp.get(2,3)); 00327 00328 return temp; 00329 }
EvtTensor4C EvtLeptonTg5Current | ( | const EvtDiracSpinor & | d, | |
const EvtDiracSpinor & | dp | |||
) |
Definition at line 331 of file EvtDiracSpinor.cc.
References EvtGammaMatrix::g0(), EvtGammaMatrix::g1(), EvtGammaMatrix::g2(), EvtGammaMatrix::g3(), EvtGammaMatrix::g5(), and subSeperate::temp.
Referenced by EvtEDM::decay().
00331 {//sigma^{mu,nu} gamma_5 00332 00333 EvtTensor4C temp; 00334 temp.zero(); 00335 EvtComplex i2(0,0.5); 00336 00337 static EvtGammaMatrix mat01=EvtGammaMatrix::g0()* 00338 (EvtGammaMatrix::g0()*EvtGammaMatrix::g1()- 00339 EvtGammaMatrix::g1()*EvtGammaMatrix::g0())*EvtGammaMatrix::g5(); 00340 static EvtGammaMatrix mat02=EvtGammaMatrix::g0()* 00341 (EvtGammaMatrix::g0()*EvtGammaMatrix::g2()- 00342 EvtGammaMatrix::g2()*EvtGammaMatrix::g0())*EvtGammaMatrix::g5(); 00343 static EvtGammaMatrix mat03=EvtGammaMatrix::g0()* 00344 (EvtGammaMatrix::g0()*EvtGammaMatrix::g3()- 00345 EvtGammaMatrix::g3()*EvtGammaMatrix::g0())*EvtGammaMatrix::g5(); 00346 static EvtGammaMatrix mat12=EvtGammaMatrix::g0()* 00347 (EvtGammaMatrix::g1()*EvtGammaMatrix::g2()- 00348 EvtGammaMatrix::g2()*EvtGammaMatrix::g1())*EvtGammaMatrix::g5(); 00349 static EvtGammaMatrix mat13=EvtGammaMatrix::g0()* 00350 (EvtGammaMatrix::g1()*EvtGammaMatrix::g3()- 00351 EvtGammaMatrix::g3()*EvtGammaMatrix::g1())*EvtGammaMatrix::g5(); 00352 static EvtGammaMatrix mat23=EvtGammaMatrix::g0()* 00353 (EvtGammaMatrix::g2()*EvtGammaMatrix::g3()- 00354 EvtGammaMatrix::g3()*EvtGammaMatrix::g2())*EvtGammaMatrix::g5(); 00355 00356 00357 temp.set(0,1,i2*(d*(mat01*dp))); 00358 temp.set(1,0,-temp.get(0,1)); 00359 00360 temp.set(0,2,i2*(d*(mat02*dp))); 00361 temp.set(2,0,-temp.get(0,2)); 00362 00363 temp.set(0,3,i2*(d*(mat03*dp))); 00364 temp.set(3,0,-temp.get(0,3)); 00365 00366 temp.set(1,2,i2*(d*(mat12*dp))); 00367 temp.set(2,1,-temp.get(1,2)); 00368 00369 temp.set(1,3,i2*(d*(mat13*dp))); 00370 temp.set(3,1,-temp.get(1,3)); 00371 00372 temp.set(2,3,i2*(d*(mat23*dp))); 00373 temp.set(3,2,-temp.get(2,3)); 00374 00375 return temp; 00376 }
EvtVector4C EvtLeptonVACurrent | ( | const EvtDiracSpinor & | d, | |
const EvtDiracSpinor & | dp | |||
) |
Definition at line 187 of file EvtDiracSpinor.cc.
References conj(), and EvtDiracSpinor::spinor.
Referenced by EvtSemiLeptonicVectorAmp::CalcAmp(), EvtSemiLeptonicTensorAmp::CalcAmp(), EvtSemiLeptonicScalarAmp::CalcAmp(), EvtSemiLeptonicBaryonAmp::CalcAmp(), EvtTauVectornu::decay(), EvtTauScalarnu::decay(), EvtTaulnunu::decay(), EvtTauHadnu::decay(), EvtSLN::decay(), EvtSll::decay(), EvtLNuGamma::decay(), EvtKstarnunu::decay(), EvtGoityRoberts::DecayBDpilnuGR(), and EvtGoityRoberts::DecayBDstarpilnuGR().
00187 { 00188 00189 //Old code; below is a new specialized code that does it more efficiently. 00190 //EvtGammaMatrix mat; 00191 //EvtVector4C temp; 00192 //mat.va0(); 00193 //temp.set(0,d*(mat*dp)); 00194 //mat.va1(); 00195 //temp.set(1,d*(mat*dp)); 00196 //mat.va2(); 00197 //temp.set(2,d*(mat*dp)); 00198 //mat.va3(); 00199 //temp.set(3,d*(mat*dp)); 00200 //return temp; 00201 00202 00203 EvtComplex u02=::conj(d.spinor[0]-d.spinor[2]); 00204 EvtComplex u13=::conj(d.spinor[1]-d.spinor[3]); 00205 00206 EvtComplex v02=dp.spinor[0]-dp.spinor[2]; 00207 EvtComplex v13=dp.spinor[1]-dp.spinor[3]; 00208 00209 EvtComplex a=u02*v02; 00210 EvtComplex b=u13*v13; 00211 00212 EvtComplex c=u02*v13; 00213 EvtComplex e=u13*v02; 00214 00215 return EvtVector4C(a+b,-(c+e),EvtComplex(0,1)*(c-e),b-a); 00216 00217 00218 }
EvtVector4C EvtLeptonVCurrent | ( | const EvtDiracSpinor & | d, | |
const EvtDiracSpinor & | dp | |||
) |
Definition at line 220 of file EvtDiracSpinor.cc.
References subSeperate::temp, EvtGammaMatrix::v0(), EvtGammaMatrix::v1(), EvtGammaMatrix::v2(), and EvtGammaMatrix::v3().
Referenced by EvtbTosllVectorAmp::CalcAmp(), EvtbTosllScalarAmp::CalcAmp(), EvtVll::decay(), and EvtEDM::decay().
00220 { 00221 00222 EvtVector4C temp; 00223 00224 // no conjugate here; done in the multiplication 00225 // yes this is stupid and fooled me to for a long time (ryd) 00226 00227 temp.set(0,d*(EvtGammaMatrix::v0()*dp)); 00228 temp.set(1,d*(EvtGammaMatrix::v1()*dp)); 00229 temp.set(2,d*(EvtGammaMatrix::v2()*dp)); 00230 temp.set(3,d*(EvtGammaMatrix::v3()*dp)); 00231 00232 return temp; 00233 }
EvtDiracSpinor operator * | ( | const EvtComplex & | c, | |
const EvtDiracSpinor & | d | |||
) |
ostream& operator<< | ( | ostream & | s, | |
const EvtDiracSpinor & | sp | |||
) |
Definition at line 51 of file EvtDiracSpinor.cc.
References EvtDiracSpinor::spinor.
00051 { 00052 00053 s <<"["<<sp.spinor[0]<<","<<sp.spinor[1]<<"," 00054 <<sp.spinor[2]<<","<<sp.spinor[3]<<"]"; 00055 return s; 00056 00057 }
EvtDiracSpinor rotateEuler | ( | const EvtDiracSpinor & | sp, | |
double | alpha, | |||
double | beta, | |||
double | gamma | |||
) |
Definition at line 66 of file EvtDiracSpinor.cc.
Referenced by EvtJTO3P::decay().
00067 { 00068 00069 EvtDiracSpinor tmp(sp); 00070 tmp.applyRotateEuler(alpha,beta,gamma); 00071 return tmp; 00072 00073 }