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

Go to the documentation of this file.
00001 //--------------------------------------------------------------------------
00002 //
00003 // Environment:
00004 //      This software is part of the EvtGen package developed jointly
00005 //      for the BaBar and CLEO collaborations.  If you use all or part
00006 //      of it, please give an appropriate acknowledgement.
00007 //
00008 // Copyright Information: See EvtGen/COPYRIGHT
00009 //      Copyright (C) 1998      Caltech, UCSB
00010 //
00011 // Module: EvtGen/EvtDiracSpinor.hh
00012 //
00013 // Description:Class to manipulate dirac spinors
00014 //
00015 // Modification history:
00016 //
00017 //    DJL/RYD     September 25, 1996         Module created
00018 //
00019 //------------------------------------------------------------------------
00020 
00021 #ifndef EVTDIRACSPINOR_HH
00022 #define EVTDIRACSPINOR_HH
00023 
00024 #include "EvtGenBase/EvtComplex.hh"
00025 //#include "EvtGenBase/EvtVector4C.hh"
00026 //#include "EvtGenBase/EvtTensor4C.hh"
00027 #include "EvtGenBase/EvtVector4R.hh"
00028 #include "EvtGenBase/EvtVector3R.hh"
00029 
00030 class EvtTensor4C;
00031 class EvtVector4C;
00032 class EvtDiracSpinor ;
00033 EvtDiracSpinor rotateEuler(const EvtDiracSpinor& sp,
00034                            double alpha,double beta,double gamma);
00035 EvtDiracSpinor boostTo(const EvtDiracSpinor& sp,
00036                        const EvtVector4R p4);
00037 EvtDiracSpinor boostTo(const EvtDiracSpinor& sp,
00038                        const EvtVector3R boost);  
00039 EvtVector4C EvtLeptonVACurrent(const EvtDiracSpinor& d,const EvtDiracSpinor& dp);
00040 EvtVector4C EvtLeptonVCurrent(const EvtDiracSpinor& d,const EvtDiracSpinor& dp);
00041 EvtVector4C EvtLeptonACurrent(const EvtDiracSpinor& d,const EvtDiracSpinor& dp);
00042 EvtComplex  EvtLeptonSCurrent(const EvtDiracSpinor& d,const EvtDiracSpinor& dp);
00043 EvtComplex  EvtLeptonPCurrent(const EvtDiracSpinor& d,const EvtDiracSpinor& dp);
00044 EvtTensor4C  EvtLeptonTCurrent(const EvtDiracSpinor& d,const EvtDiracSpinor& dp);
00045 EvtTensor4C  EvtLeptonTg5Current(const EvtDiracSpinor& d,const EvtDiracSpinor& dp);// u-bar sigma^{mu,nu} gamma_5 v,pingrg
00046 inline EvtDiracSpinor operator+(const EvtDiracSpinor& u1, const EvtDiracSpinor& u2); 
00047 inline EvtDiracSpinor operator-(const EvtDiracSpinor& u1, const EvtDiracSpinor& u2); 
00048 std::ostream& operator<<(std::ostream& s, const EvtDiracSpinor& c);  
00049 EvtDiracSpinor operator*(const EvtComplex& c, const EvtDiracSpinor& d);
00050 
00051 //=====================
00052 class EvtDiracSpinor {
00053 
00054   friend EvtDiracSpinor rotateEuler(const EvtDiracSpinor& sp,
00055                                  double alpha,double beta,double gamma);
00056   friend EvtDiracSpinor boostTo(const EvtDiracSpinor& sp,
00057                              const EvtVector4R p4);
00058   friend EvtDiracSpinor boostTo(const EvtDiracSpinor& sp,
00059                              const EvtVector3R boost);  
00060   friend EvtVector4C EvtLeptonVACurrent
00061         (const EvtDiracSpinor& d,const EvtDiracSpinor& dp);
00062   friend EvtVector4C EvtLeptonVCurrent 
00063         (const EvtDiracSpinor& d,const EvtDiracSpinor& dp);
00064   friend EvtVector4C EvtLeptonACurrent 
00065         (const EvtDiracSpinor& d,const EvtDiracSpinor& dp);
00066   friend EvtComplex  EvtLeptonSCurrent 
00067         (const EvtDiracSpinor& d,const EvtDiracSpinor& dp);
00068   friend EvtComplex  EvtLeptonPCurrent 
00069         (const EvtDiracSpinor& d,const EvtDiracSpinor& dp);
00070   friend EvtTensor4C  EvtLeptonTCurrent 
00071         (const EvtDiracSpinor& d,const EvtDiracSpinor& dp);
00072   friend EvtTensor4C  EvtLeptonTg5Current 
00073         (const EvtDiracSpinor& d,const EvtDiracSpinor& dp);
00074   friend EvtDiracSpinor operator+(const EvtDiracSpinor& u1,
00075                                   const EvtDiracSpinor& u2); 
00076   friend EvtDiracSpinor operator-(const EvtDiracSpinor& u1,
00077                                   const EvtDiracSpinor& u2); 
00078   friend EvtDiracSpinor operator*(const EvtComplex& c,
00079                                   const EvtDiracSpinor& d);
00080  
00081   friend std::ostream& operator<<(std::ostream& s, const EvtDiracSpinor& c);  
00082 
00083 public:
00084 
00085   inline EvtDiracSpinor();
00086   EvtDiracSpinor(const EvtComplex& sp0,const EvtComplex& sp1,
00087                  const EvtComplex& sp2,const EvtComplex& sp3);
00088   virtual ~EvtDiracSpinor();
00089   inline EvtDiracSpinor(const EvtDiracSpinor& dspinor);
00090   inline EvtDiracSpinor& operator=(const EvtDiracSpinor& dspinor);
00091 
00092   inline EvtDiracSpinor& operator+=(const EvtDiracSpinor& u2);
00093   inline EvtDiracSpinor& operator-=(const EvtDiracSpinor& u2);
00094 
00095   void set(const EvtComplex& sp0,const EvtComplex& sp1,
00096            const EvtComplex& sp2,const EvtComplex& sp3);
00097   void set_spinor(int i,const EvtComplex& sp);
00098   const EvtComplex& get_spinor(int i) const; 
00099   EvtDiracSpinor conj() const;
00100   void applyRotateEuler(double alpha,double beta,double gamma);
00101   void applyBoostTo(const EvtVector4R& p4);
00102   void applyBoostTo(const EvtVector3R& boost);
00103   EvtDiracSpinor adjoint() const;
00104   
00105 private:
00106 
00107   EvtComplex spinor[4];
00108 
00109 };
00110 
00111 EvtDiracSpinor::EvtDiracSpinor(){
00112 
00113   spinor[0]=EvtComplex(); spinor[1]=EvtComplex();
00114   spinor[2]=EvtComplex(); spinor[3]=EvtComplex();
00115 
00116 }
00117 
00118 EvtDiracSpinor::EvtDiracSpinor(const EvtDiracSpinor& dspinor){
00119 
00120   spinor[0]=dspinor.spinor[0];
00121   spinor[1]=dspinor.spinor[1];
00122   spinor[2]=dspinor.spinor[2];
00123   spinor[3]=dspinor.spinor[3];
00124 
00125 }
00126 
00127 EvtDiracSpinor& EvtDiracSpinor::operator=(const EvtDiracSpinor& dspinor){
00128 
00129   spinor[0]=dspinor.spinor[0];
00130   spinor[1]=dspinor.spinor[1];
00131   spinor[2]=dspinor.spinor[2];
00132   spinor[3]=dspinor.spinor[3];
00133 
00134   return *this;
00135 
00136 }
00137 
00138 inline EvtDiracSpinor& EvtDiracSpinor::operator+=(const EvtDiracSpinor& u2){
00139 
00140   spinor[0]+=u2.spinor[0];
00141   spinor[1]+=u2.spinor[1];
00142   spinor[2]+=u2.spinor[2];
00143   spinor[3]+=u2.spinor[3];
00144   
00145   return *this; 
00146 }
00147 
00148 inline EvtDiracSpinor operator+(const EvtDiracSpinor& u1,
00149                                 const EvtDiracSpinor& u2){
00150   
00151   return EvtDiracSpinor(u1)+=u2;
00152 
00153 }
00154 
00155 inline EvtDiracSpinor& EvtDiracSpinor::operator-=(const EvtDiracSpinor& u2){
00156 
00157   spinor[0]-=u2.spinor[0];
00158   spinor[1]-=u2.spinor[1];
00159   spinor[2]-=u2.spinor[2];
00160   spinor[3]-=u2.spinor[3];
00161   
00162   return *this; 
00163 }
00164 
00165 inline EvtDiracSpinor operator-(const EvtDiracSpinor& u1,
00166                                 const EvtDiracSpinor& u2){
00167   
00168   return EvtDiracSpinor(u1)-=u2;
00169 
00170 }
00171 
00172 #endif
00173 
00174 

Generated on Tue Nov 29 23:12:13 2016 for BOSS_7.0.2 by  doxygen 1.4.7