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: EvtSVS.cc 00012 // 00013 // Description: Routine to decay scalar -> vector + scalar 00014 // 00015 // Modification history: 00016 // 00017 // RYD November 24, 1996 Module created 00018 // 00019 //------------------------------------------------------------------------ 00020 // 00021 #include "EvtGenBase/EvtPatches.hh" 00022 #include <stdlib.h> 00023 #include "EvtGenBase/EvtParticle.hh" 00024 #include "EvtGenBase/EvtGenKine.hh" 00025 #include "EvtGenBase/EvtReport.hh" 00026 #include "EvtGenBase/EvtPDL.hh" 00027 #include "EvtGenBase/EvtVector4C.hh" 00028 #include "EvtGenModels/EvtSVS.hh" 00029 #include <string> 00030 00031 EvtSVS::~EvtSVS() {} 00032 00033 void EvtSVS::getName(std::string& model_name){ 00034 00035 model_name="SVS"; 00036 00037 } 00038 00039 00040 EvtDecayBase* EvtSVS::clone(){ 00041 00042 return new EvtSVS; 00043 00044 } 00045 00046 void EvtSVS::init(){ 00047 00048 // check that there are 0 arguments 00049 checkNArg(0); 00050 checkNDaug(2); 00051 00052 checkSpinParent(EvtSpinType::SCALAR); 00053 00054 checkSpinDaughter(0,EvtSpinType::VECTOR); 00055 checkSpinDaughter(1,EvtSpinType::SCALAR); 00056 00057 00058 } 00059 00060 00061 00062 void EvtSVS::initProbMax(){ 00063 00064 setProbMax(1.0); 00065 00066 } 00067 00068 void EvtSVS::decay( EvtParticle *p){ 00069 00070 p->initializePhaseSpace(getNDaug(),getDaugs()); 00071 //report(INFO,"EvtGen") << "par " << p->getP4() << " " << p->getDaug(0)->getP4() << " " << 00072 // p->getDaug(1)->getP4() << " " << p->mass() << " " << 00073 // p->getDaug(0)->mass() << " " << p->getDaug(1)->mass() <<endl; 00074 EvtParticle *v; 00075 v = p->getDaug(0); 00076 double massv = v->mass(); 00077 EvtVector4R momv = v->getP4(); 00078 EvtVector4R moms = p->getDaug(1)->getP4(); 00079 double m_parent = p->mass(); 00080 EvtVector4R p4_parent = momv+moms; 00081 00082 double norm=massv/(momv.d3mag()*m_parent); 00083 p4_parent = norm*p4_parent; 00084 vertex(0,p4_parent*(v->epsParent(0))); 00085 vertex(1,p4_parent*(v->epsParent(1))); 00086 vertex(2,p4_parent*(v->epsParent(2))); 00087 00088 return ; 00089 } 00090