00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
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/EvtTensor4C.hh"
00026 #include "EvtGenBase/EvtPDL.hh"
00027 #include "EvtGenModels/EvtVSPPwave.hh"
00028 #include "EvtGenBase/EvtReport.hh"
00029 #include <string>
00030 #include "EvtGenBase/EvtVector4C.hh"
00031
00032 EvtVSPPwave::~EvtVSPPwave() {}
00033
00034 void EvtVSPPwave::getName(std::string& model_name){
00035
00036 model_name="VSP_PWAVE";
00037
00038 }
00039
00040
00041 EvtDecayBase* EvtVSPPwave::clone(){
00042
00043 return new EvtVSPPwave;
00044
00045 }
00046
00047 void EvtVSPPwave::init(){
00048
00049
00050 checkNArg(0);
00051 checkNDaug(2);
00052
00053 checkSpinParent(EvtSpinType::VECTOR);
00054
00055 checkSpinDaughter(0,EvtSpinType::SCALAR);
00056 checkSpinDaughter(1,EvtSpinType::PHOTON);
00057
00058 }
00059
00060 void EvtVSPPwave::initProbMax(){
00061
00062 setProbMax(1);
00063 }
00064
00065 void EvtVSPPwave::decay( EvtParticle *p){
00066
00067 p->initializePhaseSpace(getNDaug(),getDaugs());
00068
00069 EvtParticle *gamma;
00070 gamma = p->getDaug(1);
00071
00072 double m_p=p->mass();
00073 EvtVector4R momgamma = gamma->getP4();
00074
00075
00076 EvtVector4R p4_p;
00077 p4_p.set(m_p, 0.0, 0.0, 0.0 );
00078
00079
00080
00081 EvtTensor4C tds;
00082
00083 double norm=1/(m_p*momgamma.d3mag());
00084
00085 tds = dual(directProd(norm*p4_p,momgamma));
00086
00087 vertex(0,0,(tds.cont1( p->eps(0))).cont(
00088 gamma->epsParentPhoton(0).conj() ) );
00089 vertex(0,1,(tds.cont1( p->eps(0))).cont(
00090 gamma->epsParentPhoton(1).conj() ) );
00091
00092 vertex(1,0,(tds.cont1( p->eps(1))).cont(
00093 gamma->epsParentPhoton(0).conj() ) );
00094 vertex(1,1,(tds.cont1( p->eps(1))).cont(
00095 gamma->epsParentPhoton(1).conj() ) );
00096
00097 vertex(2,0,(tds.cont1( p->eps(2))).cont(
00098 gamma->epsParentPhoton(0).conj() ) );
00099 vertex(2,1,(tds.cont1( p->eps(2))).cont(
00100 gamma->epsParentPhoton(1).conj() ) );
00101
00102 return ;
00103 }
00104