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