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: EvtISGW.cc 00012 // 00013 // Description: Routine to implement semileptonic decays according 00014 // to the model ISGW 00015 // 00016 // Modification history: 00017 // 00018 // DJL/RYD September 25, 1996 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/EvtReport.hh" 00028 #include "EvtGenModels/EvtISGW.hh" 00029 #include <string> 00030 #include "EvtGenModels/EvtISGWFF.hh" 00031 #include "EvtGenBase/EvtSemiLeptonicScalarAmp.hh" 00032 #include "EvtGenBase/EvtSemiLeptonicVectorAmp.hh" 00033 #include "EvtGenBase/EvtSemiLeptonicTensorAmp.hh" 00034 00035 EvtISGW::~EvtISGW() {} 00036 00037 void EvtISGW::getName(std::string& model_name){ 00038 00039 model_name="ISGW"; 00040 00041 } 00042 00043 00044 EvtDecayBase* EvtISGW::clone(){ 00045 00046 return new EvtISGW; 00047 00048 } 00049 00050 void EvtISGW::decay( EvtParticle *p ){ 00051 00052 00053 p->initializePhaseSpace(getNDaug(),getDaugs()); 00054 00055 calcamp->CalcAmp(p,_amp2,isgwffmodel); 00056 return; 00057 00058 } 00059 00060 00061 void EvtISGW::init(){ 00062 00063 checkNArg(0); 00064 checkNDaug(3); 00065 00066 00067 //We expect the parent to be a scalar 00068 //and the daughters to be X lepton neutrino 00069 00070 EvtSpinType::spintype mesontype=EvtPDL::getSpinType(getDaug(0)); 00071 00072 checkSpinParent(EvtSpinType::SCALAR); 00073 checkSpinDaughter(1,EvtSpinType::DIRAC); 00074 checkSpinDaughter(2,EvtSpinType::NEUTRINO); 00075 00076 00077 isgwffmodel = new EvtISGWFF; 00078 00079 if ( mesontype==EvtSpinType::SCALAR ) { 00080 calcamp = new EvtSemiLeptonicScalarAmp; 00081 } 00082 if ( mesontype==EvtSpinType::VECTOR ) { 00083 calcamp = new EvtSemiLeptonicVectorAmp; 00084 } 00085 if ( mesontype==EvtSpinType::TENSOR ) { 00086 calcamp = new EvtSemiLeptonicTensorAmp; 00087 } 00088 00089 } 00090