00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "EvtGenBase/EvtPatches.hh"
00021 #include <stdlib.h>
00022 #include <iostream>
00023 #include <string>
00024 #include "EvtGenBase/EvtParticle.hh"
00025 #include "EvtGenBase/EvtPDL.hh"
00026 #include "EvtGenBase/EvtGenKine.hh"
00027 #include "EvtGenModels/EvtHelPPJ.hh"
00028 #include "EvtGenBase/EvtDiracSpinor.hh"
00029 #include "EvtGenBase/EvtReport.hh"
00030 #include "EvtGenBase/EvtVector4C.hh"
00031 #include "EvtGenBase/EvtId.hh"
00032 #include "EvtGenBase/EvtHelSys.hh"
00033 #include "EvtGenBase/EvtdFunction.hh"
00034
00035 using std::cout;
00036 using std::endl;
00037
00038 EvtHelPPJ::~EvtHelPPJ() {}
00039
00040 void EvtHelPPJ::getName(std::string& model_name){
00041
00042 model_name="HelPPJ";
00043
00044 }
00045
00046
00047
00048 EvtDecayBase* EvtHelPPJ::clone(){
00049
00050 return new EvtHelPPJ;
00051
00052 }
00053
00054 void EvtHelPPJ::init(){
00055
00056
00057 checkNArg(0);
00058 checkNDaug(3);
00059
00060 checkSpinParent(EvtSpinType::VECTOR);
00061
00062 checkSpinDaughter(0,EvtSpinType::VECTOR);
00063 checkSpinDaughter(1,EvtSpinType::SCALAR);
00064 checkSpinDaughter(2,EvtSpinType::SCALAR);
00065
00066 }
00067
00068
00069 void EvtHelPPJ::decay(EvtParticle *p){
00070
00071 p->initializePhaseSpace(getNDaug(),getDaugs());
00072
00073 EvtParticle *l1, *l2,*l3;
00074 l1 = p->getDaug(0);
00075 l2 = p->getDaug(1);
00076 l3 = p->getDaug(2);
00077 EvtVector4R VP4 =l1->getP4();
00078 EvtVector4R S1P4=l2->getP4();
00079 EvtVector4R S2P4=l3->getP4();
00080 EvtVector4R PRP4=p->getP4();
00081 PRP4.set(1,0);
00082 PRP4.set(2,0);
00083 PRP4.set(3,0);
00084
00085
00086 double mpipi2=(S1P4+S2P4).mass2();
00087 double e1pi =S1P4.get(0);
00088 double e2pi =S2P4.get(0);
00089 double g0 =0.3;
00090 double g1 =-0.11;
00091 double mpi =0.1396;
00092 double mpsi =3.097;
00093 double epsi =VP4.get(0);
00094 double amp1 =(mpipi2-2*mpi*mpi)*g0/2+g1*e1pi*e2pi;
00095 double amp0 =amp1*epsi/mpsi;
00096
00097
00098 EvtHelSys angles(PRP4,VP4);
00099 double tht=angles.getHelAng(1);
00100 double phi=angles.getHelAng(2);
00101 double gamma=0;
00102
00103 vertex(0,0,Djmn(1, 1, 1,phi,tht,gamma)*amp1);
00104 vertex(0,1,Djmn(1, 1,-1,phi,tht,gamma)*amp1);
00105 vertex(0,2,Djmn(1, 1, 0,phi,tht,gamma)*amp0);
00106 vertex(1,0,Djmn(1,-1, 1,phi,tht,gamma)*amp1);
00107 vertex(1,1,Djmn(1,-1,-1,phi,tht,gamma)*amp1);
00108 vertex(1,2,Djmn(1,-1, 0,phi,tht,gamma)*amp0);
00109 vertex(2,0,Djmn(1, 0, 1,phi,tht,gamma)*amp1);
00110 vertex(2,1,Djmn(1, 0,-1,phi,tht,gamma)*amp1);
00111 vertex(2,2,Djmn(1, 0, 0,phi,tht,gamma)*amp0);
00112
00113 return;
00114
00115 }
00116