/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Generator/BesEvtGen/BesEvtGen-00-03-58/src/EvtGen/EvtGenModels/EvtTVSPwave.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: EvtTVSPwave.cc
00012 //
00013 // Description: Routine to decay tensor-> vector scalar
00014 //              by specifying the partial waves
00015 //
00016 // Modification history:
00017 //
00018 //    DJL/RYD   August 11, 1997           Module created
00019 //
00020 //------------------------------------------------------------------------
00021 // 
00022 #include "EvtGenBase/EvtPatches.hh"
00023 #include <stdlib.h>
00024 #include "EvtGenBase/EvtParticle.hh"
00025 #include "EvtGenBase/EvtGenKine.hh"
00026 #include "EvtGenBase/EvtPDL.hh"
00027 #include "EvtGenBase/EvtVector4C.hh"
00028 #include "EvtGenBase/EvtTensor4C.hh"
00029 #include "EvtGenBase/EvtReport.hh"
00030 #include "EvtGenModels/EvtTVSPwave.hh"
00031 #include <string>
00032 
00033 EvtTVSPwave::~EvtTVSPwave() {}
00034 
00035 void EvtTVSPwave::getName(std::string& model_name){
00036 
00037   model_name="TVS_PWAVE";     
00038 
00039 }
00040 
00041 
00042 EvtDecayBase* EvtTVSPwave::clone(){
00043 
00044   return new EvtTVSPwave;
00045 
00046 }
00047 
00048 void EvtTVSPwave::init(){
00049 
00050   // check that there are 6 arguments
00051   checkNArg(6);
00052   checkNDaug(2);
00053     
00054   checkSpinParent(EvtSpinType::TENSOR);
00055 
00056   checkSpinDaughter(0,EvtSpinType::VECTOR);
00057   checkSpinDaughter(1,EvtSpinType::SCALAR);
00058 }
00059 
00060 void EvtTVSPwave::initProbMax(){
00061 
00062   setProbMax(0.5);
00063 
00064 
00065 }
00066 
00067 void EvtTVSPwave::decay( EvtParticle *p ){
00068 
00069   EvtComplex ap(getArg(0)*cos(getArg(1)),getArg(0)*sin(getArg(1)));
00070   EvtComplex ad(getArg(2)*cos(getArg(3)),getArg(2)*sin(getArg(3)));
00071   EvtComplex af(getArg(4)*cos(getArg(5)),getArg(4)*sin(getArg(5)));
00072 
00073   if (ap!=EvtComplex(0.0,0.0)||af!=EvtComplex(0.0,0.0)) {
00074     report(ERROR,"EvtGen") << "dfslkh8945wqh:In EvtTensorToVectorScalar.c\n";
00075     report(ERROR,"EvtGen") << "P or F wave not yet implemented!! (ryd) \n";
00076   }
00077 
00078   p->initializePhaseSpace(getNDaug(),getDaugs());
00079     
00080   EvtParticle *v;
00081   v = p->getDaug(0);
00082   EvtVector4R momv = v->getP4();
00083   double massv = v->mass();
00084 
00085   EvtComplex temp;
00086   temp = ad;
00087   double m_parent = p->mass();
00088 
00089   EvtVector4R p_parent;
00090   
00091   p_parent.set(m_parent,0.0,0.0,0.0);
00092   
00093   EvtVector4C  pep0,pep1,pep2,pep3,pep4;  
00094   EvtTensor4C pdual;
00095   
00096   EvtVector4C epsdual0,epsdual1,epsdual2;
00097 
00098   double norm=massv/(m_parent*momv.get(0)*momv.d3mag()*momv.d3mag());
00099   pdual=dual(directProd(norm*p_parent,momv));
00100   
00101   epsdual0=pdual.cont1(v->epsParent(0).conj());
00102   epsdual1=pdual.cont1(v->epsParent(1).conj());
00103   epsdual2=pdual.cont1(v->epsParent(2).conj());
00104   
00105   pep0=p->epsTensor(0).cont1(momv);
00106   pep1=p->epsTensor(1).cont1(momv);
00107   pep2=p->epsTensor(2).cont1(momv);
00108   pep3=p->epsTensor(3).cont1(momv);
00109   pep4=p->epsTensor(4).cont1(momv);
00110 
00111   vertex(0,0,pep0*epsdual0);
00112   vertex(1,0,pep1*epsdual0);
00113   vertex(2,0,pep2*epsdual0);
00114   vertex(3,0,pep3*epsdual0);
00115   vertex(4,0,pep4*epsdual0);
00116   
00117   vertex(0,1,pep0*epsdual1);
00118   vertex(1,1,pep1*epsdual1);
00119   vertex(2,1,pep2*epsdual1);
00120   vertex(3,1,pep3*epsdual1);
00121   vertex(4,1,pep4*epsdual1);
00122   
00123   vertex(0,2,pep0*epsdual2);
00124   vertex(1,2,pep1*epsdual2);
00125   vertex(2,2,pep2*epsdual2);
00126   vertex(3,2,pep3*epsdual2);
00127   vertex(4,2,pep4*epsdual2);
00128   
00129   return ;
00130 }
00131 

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