/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Generator/BesEvtGen/BesEvtGen-00-03-58/src/EvtGen/EvtGenModels/EvtKstarstargamma.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) 2002      Caltech
00010 //
00011 // Module: EvtKstarstargamma.cc
00012 //
00013 // Description: Routine for the decau B->K**gamma
00014 //
00015 // Modification history:
00016 //
00017 //    Ryd       November 15, 2002       Module created
00018 //
00019 //------------------------------------------------------------------------
00020 // 
00021 #include "EvtGenBase/EvtPatches.hh"
00022 #include <stdlib.h>
00023 #include "EvtGenBase/EvtParticle.hh"
00024 #include "EvtGenBase/EvtScalarParticle.hh"
00025 #include "EvtGenBase/EvtVectorParticle.hh"
00026 #include "EvtGenBase/EvtPhotonParticle.hh"
00027 #include "EvtGenBase/EvtTensorParticle.hh"
00028 #include "EvtGenBase/EvtGenKine.hh"
00029 #include "EvtGenBase/EvtPDL.hh"
00030 #include "EvtGenBase/EvtVector4C.hh"
00031 #include "EvtGenBase/EvtVector4R.hh"
00032 #include "EvtGenBase/EvtReport.hh"
00033 #include "EvtGenModels/EvtKstarstargamma.hh"
00034 #include <string>
00035 #include "EvtGenBase/EvtEvalHelAmp.hh"
00036 #include "EvtGenBase/EvtPropBreitWignerRel.hh"
00037 #include "EvtGenBase/EvtTwoBodyVertex.hh"
00038 
00039 EvtKstarstargamma::~EvtKstarstargamma() {}
00040 
00041 void EvtKstarstargamma::getName(std::string& model_name){
00042 
00043   model_name="KSTARSTARGAMMA"; 
00044     
00045 }
00046 
00047 
00048 EvtDecayBase* EvtKstarstargamma::clone(){
00049 
00050   return new EvtKstarstargamma;
00051 
00052 }
00053 
00054 void EvtKstarstargamma::init(){
00055 
00056   // check that there are 0 arguments
00057   checkNArg(0);
00058 
00059   // check that there are 3 daughters
00060   checkNDaug(3);
00061 
00062   // check the parent and daughter spins
00063   checkSpinParent(EvtSpinType::SCALAR);
00064   checkSpinDaughter(0,EvtSpinType::SCALAR);
00065   checkSpinDaughter(1,EvtSpinType::SCALAR);
00066   checkSpinDaughter(2,EvtSpinType::PHOTON);
00067 }
00068 
00069 void EvtKstarstargamma::initProbMax() {
00070 
00071   //setProbMax(1.0);
00072 
00073 }      
00074 
00075 void EvtKstarstargamma::decay( EvtParticle *p){
00076 
00077   p->initializePhaseSpace(getNDaug(),getDaugs());
00078 
00079   EvtParticle* kaon = p->getDaug(0);
00080   EvtParticle* pion = p->getDaug(1);
00081   EvtParticle* photon = p->getDaug(2);
00082 
00083 
00084   EvtComplexPtrPtr Hd1=new EvtComplexPtr[5];
00085   Hd1[0]=new EvtComplex[2]; 
00086   Hd1[1]=new EvtComplex[2]; 
00087   Hd1[2]=new EvtComplex[2]; 
00088   Hd1[3]=new EvtComplex[2]; 
00089   Hd1[4]=new EvtComplex[2]; 
00090 
00091   Hd1[0][0]=0.0;
00092   Hd1[0][1]=0.0;
00093   Hd1[1][0]=0.0;
00094   Hd1[1][1]=0.0;
00095   Hd1[2][0]=0.0;
00096   Hd1[2][1]=0.0;
00097   Hd1[3][0]=0.0;
00098   Hd1[3][1]=1.0;
00099   Hd1[4][0]=0.0;
00100   Hd1[4][1]=0.0;
00101 
00102   EvtEvalHelAmp d1(EvtSpinType::SCALAR,EvtSpinType::TENSOR,
00103                    EvtSpinType::PHOTON,Hd1);
00104 
00105   EvtScalarParticle theB;
00106 
00107   theB.init(p->getId(),p->getP4Restframe());
00108 
00109   EvtVector4R theKstarP4=kaon->getP4()+pion->getP4();
00110 
00111   EvtTensorParticle theKstar;
00112   theKstar.init(EvtPDL::getId(std::string("K_2*0")),theKstarP4);
00113 
00114   EvtPhotonParticle thePhoton;
00115   thePhoton.init(EvtPDL::getId(std::string("K_2*0")),photon->getP4());
00116 
00117   theKstar.addDaug(&theB);
00118   thePhoton.addDaug(&theB);
00119 
00120   EvtAmp amp1;
00121 
00122   d1.evalAmp(&theB,amp1);
00123 
00124   EvtComplexPtrPtr Hd2=new EvtComplexPtr[1];
00125   Hd2[0]=new EvtComplex[1]; 
00126 
00127   Hd2[0][0]=1.0;
00128 
00129 
00130   EvtEvalHelAmp d2(EvtSpinType::TENSOR,EvtSpinType::SCALAR,
00131                    EvtSpinType::SCALAR,Hd2);
00132   
00133   
00134   EvtVector4R theKstarP4boost(theKstarP4.get(0),-theKstarP4.get(1),-theKstarP4.get(2),-theKstarP4.get(3));
00135   
00136   EvtScalarParticle theKaon;
00137   theKaon.init(EvtPDL::getId(std::string("K+")),boostTo(kaon->getP4(),theKstarP4boost));
00138 
00139   EvtScalarParticle thePion;
00140   thePion.init(EvtPDL::getId(std::string("pi+")),boostTo(pion->getP4(),theKstarP4boost));
00141             
00142   theKaon.addDaug(&theKstar);
00143   thePion.addDaug(&theKstar);
00144 
00145   // Calculate the propagator
00146 
00147   double m = theKstarP4.mass();
00148   EvtTwoBodyVertex v(0.5,0.14,1.4,2);
00149   EvtTwoBodyKine v1(0.5,0.14,m);
00150   EvtPropBreitWignerRel prop(1.4,0.2);
00151 
00152   // Mass-dependent width correction and amplitude calculation
00153 
00154   double width = prop.g0() * v.widthFactor(v1);
00155   prop.set_g0(width);
00156   EvtComplex bwamp = prop.evaluate(m);
00157 
00158 
00159   EvtAmp amp2;
00160 
00161   d2.evalAmp(&theKstar,amp2);
00162 
00163   vertex(0,bwamp*(amp1._amp[0]*amp2._amp[0]+
00164            amp1._amp[1]*amp2._amp[1]+
00165            amp1._amp[2]*amp2._amp[2]+
00166            amp1._amp[3]*amp2._amp[3]+
00167            amp1._amp[4]*amp2._amp[4]));
00168 
00169   vertex(1,bwamp*(amp1._amp[5]*amp2._amp[0]+
00170            amp1._amp[6]*amp2._amp[1]+
00171            amp1._amp[7]*amp2._amp[2]+
00172            amp1._amp[8]*amp2._amp[3]+
00173            amp1._amp[9]*amp2._amp[4]));
00174            
00175   return;
00176 }
00177 
00178 
00179 
00180 
00181 

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