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: EvtMelikhov.cc 00012 // 00013 // Description: Routine to implement semileptonic B->D*lnu decays according 00014 // to the model HQET 00015 // 00016 // Modification history: 00017 // 00018 // DJL April 20, 1998 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/EvtMelikhov.hh" 00029 #include "EvtGenModels/EvtMelikhovFF.hh" 00030 #include "EvtGenBase/EvtSemiLeptonicVectorAmp.hh" 00031 #include <string> 00032 00033 EvtMelikhov::~EvtMelikhov() {} 00034 00035 void EvtMelikhov::getName(std::string& model_name){ 00036 00037 model_name="MELIKHOV"; 00038 } 00039 00040 00041 EvtDecayBase* EvtMelikhov::clone(){ 00042 00043 return new EvtMelikhov; 00044 00045 } 00046 00047 void EvtMelikhov::decay( EvtParticle *p ){ 00048 00049 p->initializePhaseSpace(getNDaug(),getDaugs()); 00050 calcamp->CalcAmp(p,_amp2,Melikhovffmodel); 00051 } 00052 00053 00054 void EvtMelikhov::init(){ 00055 00056 checkNArg(1); 00057 checkNDaug(3); 00058 00059 //We expect the parent to be a scalar 00060 //and the daughters to be X lepton neutrino 00061 00062 checkSpinParent(EvtSpinType::SCALAR); 00063 00064 checkSpinDaughter(0,EvtSpinType::VECTOR); 00065 checkSpinDaughter(1,EvtSpinType::DIRAC); 00066 checkSpinDaughter(2,EvtSpinType::NEUTRINO); 00067 00068 00069 Melikhovffmodel = new EvtMelikhovFF(getArg(0)); 00070 calcamp = new EvtSemiLeptonicVectorAmp; 00071 00072 } 00073