/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Generator/BesEvtGen/BesEvtGen-00-03-58/src/EvtGen/EvtGenBase/EvtDiracSpinor.cc File Reference

#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

ostreamoperator<< (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)


Function Documentation

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 
)

Definition at line 378 of file EvtDiracSpinor.cc.

00378                                                                        {
00379      EvtDiracSpinor result;
00380      result.spinor[0] = c*d.spinor[0];
00381      result.spinor[1] = c*d.spinor[1];
00382      result.spinor[2] = c*d.spinor[2];
00383      result.spinor[3] = c*d.spinor[3];
00384      return result;
00385  }

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 }


Generated on Tue Nov 29 23:15:52 2016 for BOSS_7.0.2 by  doxygen 1.4.7