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

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: EvtTensorParticle.cc
00012 //
00013 // Description: Class to describe spin 2 particles.
00014 //
00015 // Modification history:
00016 //
00017 //    DJL/RYD   September 25,1996           Module created
00018 //
00019 //------------------------------------------------------------------------
00020 // 
00021 #include "EvtGenBase/EvtPatches.hh"
00022 #include <stdlib.h>
00023 #include <iostream>
00024 #include <math.h>
00025 #include "EvtGenBase/EvtComplex.hh"
00026 #include "EvtGenBase/EvtVector4R.hh"
00027 #include "EvtGenBase/EvtTensor4C.hh"
00028 #include "EvtGenBase/EvtVector4C.hh"
00029 #include "EvtGenBase/EvtTensorParticle.hh"
00030 #include "EvtGenBase/EvtReport.hh"
00031 
00032 EvtTensorParticle::~EvtTensorParticle(){}
00033 
00034 void EvtTensorParticle::init(EvtId part_n,const EvtVector4R& p4){
00035  
00036   init(part_n,p4.get(0),p4.get(1)
00037        ,p4.get(2),p4.get(3));
00038 
00039   setLifetime();
00040 
00041   
00042 }
00043 
00044 void EvtTensorParticle::init(EvtId part_n,double e,double px,double py,double pz){
00045 
00046   _validP4=true;
00047   setp(e,px,py,pz);
00048   setpart_num(part_n);
00049   
00050   eps[0].setdiag(0.0,-1.0/sqrt(6.0),-1.0/sqrt(6.0),
00051                2.0/sqrt(6.0));
00052   eps[1].setdiag(0.0,1.0/sqrt(2.0),-1.0/sqrt(2.0),0.0);
00053   eps[2].setdiag(0.0,0.0,0.0,0.0);
00054   eps[3].setdiag(0.0,0.0,0.0,0.0);
00055   eps[4].setdiag(0.0,0.0,0.0,0.0);
00056 
00057   eps[2].set(1,2,EvtComplex(1.0/sqrt(2.0),0.0));
00058   eps[2].set(2,1,EvtComplex(1.0/sqrt(2.0),0.0));
00059   eps[3].set(1,3,EvtComplex(1.0/sqrt(2.0),0.0));
00060   eps[3].set(3,1,EvtComplex(1.0/sqrt(2.0),0.0));
00061   eps[4].set(2,3,EvtComplex(1.0/sqrt(2.0),0.0));
00062   eps[4].set(3,2,EvtComplex(1.0/sqrt(2.0),0.0));
00063 
00064   setLifetime();
00065   
00066 }
00067 
00068 EvtTensor4C EvtTensorParticle::epsTensorParent(int i) const {
00069 
00070   EvtTensor4C temp=eps[i];
00071 
00072   temp.applyBoostTo(this->getP4());
00073   return temp;
00074   
00075 } //epsParent
00076 
00077 
00078 EvtTensor4C EvtTensorParticle::epsTensor(int i) const {
00079    
00080   return eps[i];
00081 
00082 } //eps
00083 
00084 
00085 
00086 EvtSpinDensity EvtTensorParticle::rotateToHelicityBasis() const{
00087 
00088 
00089   static EvtVector4C eplus(0.0,-1.0/sqrt(2.0),EvtComplex(0.0,-1.0/sqrt(2.0)),0.0);
00090   static EvtVector4C ezero(0.0,0.0,0.0,1.0);
00091   static EvtVector4C eminus(0.0,1.0/sqrt(2.0),EvtComplex(0.0,-1.0/sqrt(2.0)),0.0);
00092   
00093   static EvtTensor4C dPpp(directProd(eplus,eplus));
00094   static EvtTensor4C dPp0(directProd(eplus,ezero));
00095   static EvtTensor4C dP0p(directProd(ezero,eplus));
00096   static EvtTensor4C dPpm(directProd(eplus,eminus));
00097   static EvtTensor4C dP00(directProd(ezero,ezero));
00098   static EvtTensor4C dPmp(directProd(eminus,eplus));
00099   static EvtTensor4C dPmm(directProd(eminus,eminus));
00100   static EvtTensor4C dPm0(directProd(eminus,ezero));
00101   static EvtTensor4C dP0m(directProd(ezero,eminus));
00102 
00103   static EvtTensor4C es0(conj(dPpp));
00104   static EvtTensor4C es1(conj((1/sqrt(2.0))*dPp0 +(1/sqrt(2.0))*dP0p));
00105   static EvtTensor4C es2(conj((1/sqrt(6.0))*dPpm +(2/sqrt(6.0))*dP00 +(1/sqrt(6.0))*dPmp));
00106   static EvtTensor4C es3(conj((1/sqrt(2.0))*dPm0  +(1/sqrt(2.0))*dP0m));
00107   static EvtTensor4C es4(conj(dPmm));
00108 
00109 
00110   EvtSpinDensity R;
00111   R.SetDim(5);
00112 
00113   for (int j=0; j<5; j++) {
00114     R.Set(0,j,cont(es0,eps[j]));
00115     R.Set(1,j,cont(es1,eps[j]));
00116     R.Set(2,j,cont(es2,eps[j]));
00117     R.Set(3,j,cont(es3,eps[j]));
00118     R.Set(4,j,cont(es4,eps[j]));
00119   }
00120   return R;
00121 
00122 }
00123 
00124 
00125 EvtSpinDensity EvtTensorParticle::rotateToHelicityBasis(double alpha,
00126                                                         double beta,
00127                                                         double gamma) const{
00128 
00129   EvtTensor4C es[5];
00130 
00131   static EvtVector4C eplus(0.0,-1.0/sqrt(2.0),EvtComplex(0.0,-1.0/sqrt(2.0)),0.0);
00132   static EvtVector4C ezero(0.0,0.0,0.0,1.0);
00133   static EvtVector4C eminus(0.0,1.0/sqrt(2.0),EvtComplex(0.0,-1.0/sqrt(2.0)),0.0);
00134 
00135   eplus.applyRotateEuler(alpha,beta,gamma);
00136   ezero.applyRotateEuler(alpha,beta,gamma);
00137   eminus.applyRotateEuler(alpha,beta,gamma);
00138 
00139   for (int i=0; i<5; i++) es[i].zero();    
00140   
00141   es[0]=directProd(eplus,eplus);
00142   es[1] =(1/sqrt(2.0))*directProd(eplus,ezero)
00143     +(1/sqrt(2.0))*directProd(ezero,eplus);
00144   es[2] =(1/sqrt(6.0))*directProd(eplus,eminus)
00145     +(2/sqrt(6.0))*directProd(ezero,ezero)
00146     +(1/sqrt(6.0))*directProd(eminus,eplus);
00147   es[3] =(1/sqrt(2.0))*directProd(eminus,ezero)
00148     +(1/sqrt(2.0))*directProd(ezero,eminus);
00149   es[4]=directProd(eminus,eminus);
00150 
00151   for (int i=0; i<5; i++) es[i]=conj(es[i]);    
00152 
00153   EvtSpinDensity R;
00154   R.SetDim(5);
00155 
00156   for (int i=0; i<5; i++)
00157     for (int j=0; j<5; j++)
00158       R.Set(i,j,cont(es[i],eps[j]));
00159 
00160   return R;
00161 
00162 }
00163 
00164   
00165 
00166 
00167 
00168 
00169 
00170 

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