/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Generator/BesEvtGen/BesEvtGen-00-03-58/src/EvtGen/EvtGenBase/EvtTensor4C.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/EvtTensor4C.hh
00012 //
00013 // Description: Class to handle complex tensor manipulation
00014 //
00015 // Modification history:
00016 //
00017 //    DJL/RYD     September 25, 1996         Module created
00018 //
00019 //------------------------------------------------------------------------
00020 
00021 #ifndef EvtTensor4C_HH
00022 #define EvtTensor4C_HH
00023 
00024 //#include <iostream.h>
00025 #include "EvtGenBase/EvtComplex.hh"
00026 
00027 //Class to handle 4D complex valued tensors.
00028 class EvtTensor4C;
00029 class EvtVector4C;
00030 class EvtVector4R;
00031 class EvtVector3R;
00032 #include <iosfwd>
00033 EvtTensor4C rotateEuler(const EvtTensor4C& e,
00034                         double alpha,double beta,double gamma);
00035 EvtTensor4C boostTo(const EvtTensor4C& e, const EvtVector4R p4);
00036 EvtTensor4C boostTo(const EvtTensor4C& e, const EvtVector3R boost); 
00037 EvtTensor4C directProd(const EvtVector4C& c1,const EvtVector4C& c2);
00038 EvtTensor4C directProd(const EvtVector4C& c1,const EvtVector4R& c2); 
00039 EvtTensor4C directProd(const EvtVector4R& c1,const EvtVector4R& c2); 
00040 EvtTensor4C dual(const EvtTensor4C& t2); 
00041 EvtTensor4C conj(const EvtTensor4C& t2);
00042 EvtTensor4C cont22(const EvtTensor4C& t1,const EvtTensor4C& t2);
00043 EvtTensor4C cont11(const EvtTensor4C& t1,const EvtTensor4C& t2);
00044 EvtTensor4C operator*(const EvtTensor4C& t1,const EvtComplex& c);
00045 EvtTensor4C operator*(const EvtComplex& c,const EvtTensor4C& t1);
00046 EvtTensor4C operator*(const EvtTensor4C& t1,double d);
00047 EvtTensor4C operator*(double d,const EvtTensor4C& t1);
00048 EvtComplex  cont(const EvtTensor4C& t1,const EvtTensor4C& t2);
00049 EvtTensor4C operator+(const EvtTensor4C& t1,const EvtTensor4C& t2);
00050 inline EvtTensor4C operator-(const EvtTensor4C& t1,const EvtTensor4C& t2);
00051 
00052 class EvtTensor4C {
00053 
00054   friend EvtTensor4C rotateEuler(const EvtTensor4C& e,
00055                                  double alpha,double beta,double gamma);
00056   friend EvtTensor4C boostTo(const EvtTensor4C& e,
00057                              const EvtVector4R p4);
00058   friend EvtTensor4C boostTo(const EvtTensor4C& e,
00059                              const EvtVector3R boost); 
00060   friend EvtTensor4C directProd(const EvtVector4C& c1,const EvtVector4C& c2); 
00061   friend EvtTensor4C directProd(const EvtVector4C& c1,const EvtVector4R& c2); 
00062   friend EvtTensor4C directProd(const EvtVector4R& c1,const EvtVector4R& c2); 
00063   friend EvtTensor4C dual(const EvtTensor4C& t2); 
00064   friend EvtTensor4C conj(const EvtTensor4C& t2);
00065   friend EvtTensor4C cont22(const EvtTensor4C& t1,const EvtTensor4C& t2);
00066   friend EvtTensor4C cont11(const EvtTensor4C& t1,const EvtTensor4C& t2);
00067   friend EvtTensor4C operator*(const EvtTensor4C& t1,const EvtComplex& c);
00068   friend EvtTensor4C operator*(const EvtComplex& c,const EvtTensor4C& t1);
00069   friend EvtTensor4C operator*(const EvtTensor4C& t1,double d);
00070   friend EvtTensor4C operator*(double d,const EvtTensor4C& t1);
00071   friend EvtComplex cont(const EvtTensor4C& t1,const EvtTensor4C& t2);
00072   friend EvtTensor4C operator+(const EvtTensor4C& t1,const EvtTensor4C& t2);
00073   friend EvtTensor4C operator-(const EvtTensor4C& t1,const EvtTensor4C& t2);
00074   
00075 public:
00076   EvtTensor4C() {;}
00077 
00078   EvtTensor4C(double t00,double t11,double t22, double t33) { setdiag(t00,t11,t22,t33);}
00079 
00080 
00081   EvtTensor4C(const EvtTensor4C& t1 );
00082   virtual ~EvtTensor4C();
00083   EvtTensor4C& operator=(const EvtTensor4C& t1);
00084   EvtTensor4C& operator*=(const EvtComplex& c);
00085   EvtTensor4C& operator*=(double d);
00086   EvtTensor4C& addDirProd(const EvtVector4R& p1,const EvtVector4R& p2);
00087   static const EvtTensor4C& g();
00088   inline void set(int i,int j,const EvtComplex& c);
00089   void setdiag(double t00,double t11,double t22, double t33);
00090   inline const EvtComplex& get(int i, int j) const;
00091   inline EvtComplex trace() const;
00092   void zero();
00093   void applyRotateEuler(double alpha,double beta,double gamma);
00094   void applyBoostTo(const EvtVector4R& p4);
00095   void applyBoostTo(const EvtVector3R& boost);
00096   friend std::ostream& operator<<(std::ostream& s, const EvtTensor4C& t); 
00097   EvtTensor4C& operator+=(const EvtTensor4C& t2);
00098   EvtTensor4C& operator-=(const EvtTensor4C& t2);
00099   EvtTensor4C conj() const;
00100   EvtVector4C cont1(const EvtVector4C& v4) const; 
00101   EvtVector4C cont2(const EvtVector4C& v4) const; 
00102   EvtVector4C cont1(const EvtVector4R& v4) const; 
00103   EvtVector4C cont2(const EvtVector4R& v4) const; 
00104   
00105   
00106 private:
00107 
00108     EvtComplex t[4][4];
00109 
00110 };
00111 
00112 inline EvtTensor4C operator+(const EvtTensor4C& t1,const EvtTensor4C& t2){
00113 
00114   return EvtTensor4C(t1)+=t2;
00115 }
00116 
00117 inline EvtTensor4C operator-(const EvtTensor4C& t1,const EvtTensor4C& t2){
00118 
00119   return EvtTensor4C(t1)-=t2;
00120 }
00121 
00122 inline void EvtTensor4C::set(int i,int j,const EvtComplex& c){
00123    t[i][j]=c;
00124 }
00125 
00126 inline const EvtComplex& EvtTensor4C::get(int i,int j) const{
00127    return t[i][j];
00128 }
00129 
00130 inline EvtComplex EvtTensor4C::trace() const{
00131    return t[0][0]-t[1][1]-t[2][2]-t[3][3];
00132 }
00133 
00134 #endif
00135 

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