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: EvtVVP.cc 00012 // 00013 // Description: The decay Vector -> Vector gamma 00014 // E.g., CHI1->PSI GAMMA 00015 // 00016 // Modification history: 00017 // 00018 // RYD September 5, 1997 Module created 00019 // 00020 //------------------------------------------------------------------------ 00021 // 00022 #include "EvtGenBase/EvtPatches.hh" 00023 #include <stdlib.h> 00024 #include <iostream> 00025 #include <string> 00026 #include "EvtGenBase/EvtVector3C.hh" 00027 #include "EvtGenBase/EvtParticle.hh" 00028 #include "EvtGenBase/EvtPDL.hh" 00029 #include "EvtGenBase/EvtGenKine.hh" 00030 #include "EvtGenBase/EvtVector4C.hh" 00031 #include "EvtGenModels/EvtVVP.hh" 00032 #include "EvtGenBase/EvtReport.hh" 00033 00034 EvtVVP::~EvtVVP() {} 00035 00036 void EvtVVP::getName(std::string& model_name){ 00037 00038 model_name="VVP"; 00039 00040 } 00041 00042 00043 EvtDecayBase* EvtVVP::clone(){ 00044 00045 return new EvtVVP; 00046 00047 } 00048 00049 void EvtVVP::init(){ 00050 00051 // check that there are 8 arguments 00052 00053 checkNArg(8); 00054 checkNDaug(2); 00055 00056 checkSpinParent(EvtSpinType::VECTOR); 00057 checkSpinDaughter(0,EvtSpinType::VECTOR); 00058 checkSpinDaughter(1,EvtSpinType::PHOTON); 00059 } 00060 00061 void EvtVVP::initProbMax(){ 00062 00063 setProbMax(4.0); 00064 00065 } 00066 00067 void EvtVVP::decay(EvtParticle *p){ 00068 00069 p->initializePhaseSpace(getNDaug(),getDaugs()); 00070 00071 EvtParticle *v,*ph; 00072 00073 v = p->getDaug(0); 00074 ph = p->getDaug(1); 00075 00076 EvtVector3C epsp[3]; 00077 EvtVector3C epsv[3]; 00078 EvtVector3C epsph[2]; 00079 00080 epsp[0]=p->eps(0).vec(); 00081 epsp[1]=p->eps(1).vec(); 00082 epsp[2]=p->eps(2).vec(); 00083 00084 epsv[0]=v->eps(0).vec().conj(); 00085 epsv[1]=v->eps(1).vec().conj(); 00086 epsv[2]=v->eps(2).vec().conj(); 00087 00088 epsph[0]=ph->epsParentPhoton(0).vec().conj(); 00089 epsph[1]=ph->epsParentPhoton(1).vec().conj(); 00090 00091 int i,j,k; 00092 for(i=0;i<3;i++){ 00093 for(j=0;j<3;j++){ 00094 for(k=0;k<2;k++){ 00095 vertex(i,j,k,epsp[i].cross(epsv[j])*epsph[k]); 00096 00097 } 00098 } 00099 } 00100 00101 return; 00102 00103 } 00104