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: EvtSTS.cc 00012 // 00013 // Description: Routine to decay scalar -> tensor scalar. 00014 // 00015 // 00016 // Modification history: 00017 // 00018 // RYD Aug 21, 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/EvtCPUtil.hh" 00027 #include "EvtGenBase/EvtTensor4C.hh" 00028 #include "EvtGenBase/EvtVector4C.hh" 00029 #include "EvtGenBase/EvtPDL.hh" 00030 #include "EvtGenBase/EvtReport.hh" 00031 #include "EvtGenModels/EvtSTS.hh" 00032 #include "EvtGenBase/EvtId.hh" 00033 #include <string> 00034 00035 EvtSTS::~EvtSTS() {} 00036 00037 void EvtSTS::getName(std::string& model_name){ 00038 00039 model_name="STS"; 00040 00041 } 00042 00043 00044 EvtDecayBase* EvtSTS::clone(){ 00045 00046 return new EvtSTS; 00047 00048 } 00049 00050 void EvtSTS::initProbMax(){ 00051 00052 setProbMax(20.0); 00053 00054 } 00055 00056 void EvtSTS::init(){ 00057 00058 // check that there are 0 arguments 00059 checkNArg(0); 00060 checkNDaug(2); 00061 00062 checkSpinParent(EvtSpinType::SCALAR); 00063 00064 checkSpinDaughter(0,EvtSpinType::TENSOR); 00065 checkSpinDaughter(1,EvtSpinType::SCALAR); 00066 00067 } 00068 00069 00070 void EvtSTS::decay( EvtParticle *p){ 00071 00072 p->initializePhaseSpace(getNDaug(),getDaugs()); 00073 00074 EvtParticle* t1=p->getDaug(0); 00075 00076 EvtVector4R momt = t1->getP4(); 00077 EvtVector4R moms = p->getDaug(1)->getP4(); 00078 double masst = t1->mass(); 00079 00080 EvtVector4R p4_parent=momt+moms; 00081 00082 double m_parent=p4_parent.mass(); 00083 00084 double norm=masst*masst/(m_parent*momt.d3mag()*momt.d3mag()); 00085 00086 vertex(0,norm*t1->epsTensorParent(0).cont1(p4_parent)*p4_parent); 00087 vertex(1,norm*t1->epsTensorParent(1).cont1(p4_parent)*p4_parent); 00088 vertex(2,norm*t1->epsTensorParent(2).cont1(p4_parent)*p4_parent); 00089 vertex(3,norm*t1->epsTensorParent(3).cont1(p4_parent)*p4_parent); 00090 vertex(4,norm*t1->epsTensorParent(4).cont1(p4_parent)*p4_parent); 00091 00092 return ; 00093 } 00094