00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef EVTRARITASCHWINGER_HH
00022 #define EVTRARITASCHWINGER_HH
00023
00024 #include "EvtGenBase/EvtComplex.hh"
00025 #include "EvtGenBase/EvtVector4C.hh"
00026 #include "EvtGenBase/EvtVector4R.hh"
00027 #include "EvtGenBase/EvtDiracSpinor.hh"
00028
00029 class EvtRaritaSchwinger ;
00030 EvtRaritaSchwinger rotateEuler(const EvtRaritaSchwinger& rs,
00031 double alpha,double beta,double gamma);
00032 EvtRaritaSchwinger boostTo(const EvtRaritaSchwinger& rs,
00033 const EvtVector4R p4);
00034 EvtRaritaSchwinger boostTo(const EvtRaritaSchwinger& rs,
00035 const EvtVector3R boost);
00036 EvtRaritaSchwinger dirProd(EvtVector4R v,EvtDiracSpinor u);
00037 EvtRaritaSchwinger dirProd(EvtVector4C v,EvtDiracSpinor u);
00038 EvtRaritaSchwinger conj(const EvtRaritaSchwinger& u2);
00039 EvtRaritaSchwinger operator+(const EvtRaritaSchwinger& u1,
00040 const EvtRaritaSchwinger& u2);
00041 EvtRaritaSchwinger operator-(const EvtRaritaSchwinger& u1,
00042 const EvtRaritaSchwinger& u2);
00043 EvtComplex operator*(const EvtRaritaSchwinger& u1,
00044 const EvtRaritaSchwinger& u2);
00045
00046
00047 class EvtRaritaSchwinger{
00048
00049 friend EvtRaritaSchwinger rotateEuler(const EvtRaritaSchwinger& rs,
00050 double alpha,double beta,double gamma);
00051 friend EvtRaritaSchwinger boostTo(const EvtRaritaSchwinger& rs,
00052 const EvtVector4R p4);
00053 friend EvtRaritaSchwinger boostTo(const EvtRaritaSchwinger& rs,
00054 const EvtVector3R boost);
00055
00056 friend EvtRaritaSchwinger dirProd(EvtVector4R v,EvtDiracSpinor u);
00057 friend EvtRaritaSchwinger dirProd(EvtVector4C v,EvtDiracSpinor u);
00058 friend EvtRaritaSchwinger conj(const EvtRaritaSchwinger& u2);
00059 friend EvtRaritaSchwinger operator+(const EvtRaritaSchwinger& u1,
00060 const EvtRaritaSchwinger& u2);
00061 friend EvtRaritaSchwinger operator-(const EvtRaritaSchwinger& u1,
00062 const EvtRaritaSchwinger& u2);
00063
00064 friend EvtComplex operator*(const EvtRaritaSchwinger& u1,
00065 const EvtRaritaSchwinger& u2);
00066
00067 public:
00068
00069 inline EvtRaritaSchwinger();
00070 virtual ~EvtRaritaSchwinger();
00071 inline EvtRaritaSchwinger(const EvtRaritaSchwinger& rs);
00072 inline EvtRaritaSchwinger& operator=(const EvtRaritaSchwinger& rs);
00073
00074 void set(int i,int j,const EvtComplex& sp);
00075
00076
00077 void applyRotateEuler(double alpha,double beta,double gamma);
00078 void applyBoostTo(const EvtVector4R p4);
00079 void applyBoostTo(const EvtVector3R boost);
00080 EvtRaritaSchwinger conj() const;
00081
00082 EvtRaritaSchwinger& operator+=(const EvtRaritaSchwinger& u2);
00083 EvtRaritaSchwinger& operator-=(const EvtRaritaSchwinger& u2);
00084
00085 EvtComplex get(int i,int j) const;
00086 friend std::ostream& operator<<(std::ostream& s, const EvtRaritaSchwinger& rs);
00087
00088 EvtVector4C getVector(int i) const;
00089 EvtDiracSpinor getSpinor(int i) const;
00090
00091 void setVector(int i,const EvtVector4C& v);
00092 void setSpinor(int i,const EvtDiracSpinor& sp);
00093
00094
00095
00096 private:
00097
00098
00099 EvtComplex _rs[4][4];
00100
00101 };
00102
00103 EvtRaritaSchwinger::EvtRaritaSchwinger(){
00104
00105 int i,j;
00106 for(i=0;i<4;i++){
00107 for(j=0;j<4;j++){
00108 _rs[i][j]=0.0;
00109 }
00110 }
00111
00112 }
00113
00114 EvtRaritaSchwinger::EvtRaritaSchwinger(const EvtRaritaSchwinger& rs){
00115
00116 int i,j;
00117 for(i=0;i<4;i++){
00118 for(j=0;j<4;j++){
00119 _rs[i][j]=rs._rs[i][j];
00120 }
00121 }
00122
00123 }
00124
00125 EvtRaritaSchwinger& EvtRaritaSchwinger::operator=(const EvtRaritaSchwinger& rs){
00126
00127 int i,j;
00128 for(i=0;i<4;i++){
00129 for(j=0;j<4;j++){
00130 _rs[i][j]=rs._rs[i][j];
00131 }
00132 }
00133
00134 return *this;
00135
00136 }
00137
00138 #endif
00139
00140