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/EvtScalarParticle.hh"
00025 #include "EvtGenBase/EvtVectorParticle.hh"
00026 #include "EvtGenBase/EvtPhotonParticle.hh"
00027 #include "EvtGenBase/EvtTensorParticle.hh"
00028 #include "EvtGenBase/EvtGenKine.hh"
00029 #include "EvtGenBase/EvtPDL.hh"
00030 #include "EvtGenBase/EvtVector4C.hh"
00031 #include "EvtGenBase/EvtVector4R.hh"
00032 #include "EvtGenBase/EvtReport.hh"
00033 #include "EvtGenModels/EvtKstarstargamma.hh"
00034 #include <string>
00035 #include "EvtGenBase/EvtEvalHelAmp.hh"
00036 #include "EvtGenBase/EvtPropBreitWignerRel.hh"
00037 #include "EvtGenBase/EvtTwoBodyVertex.hh"
00038
00039 EvtKstarstargamma::~EvtKstarstargamma() {}
00040
00041 void EvtKstarstargamma::getName(std::string& model_name){
00042
00043 model_name="KSTARSTARGAMMA";
00044
00045 }
00046
00047
00048 EvtDecayBase* EvtKstarstargamma::clone(){
00049
00050 return new EvtKstarstargamma;
00051
00052 }
00053
00054 void EvtKstarstargamma::init(){
00055
00056
00057 checkNArg(0);
00058
00059
00060 checkNDaug(3);
00061
00062
00063 checkSpinParent(EvtSpinType::SCALAR);
00064 checkSpinDaughter(0,EvtSpinType::SCALAR);
00065 checkSpinDaughter(1,EvtSpinType::SCALAR);
00066 checkSpinDaughter(2,EvtSpinType::PHOTON);
00067 }
00068
00069 void EvtKstarstargamma::initProbMax() {
00070
00071
00072
00073 }
00074
00075 void EvtKstarstargamma::decay( EvtParticle *p){
00076
00077 p->initializePhaseSpace(getNDaug(),getDaugs());
00078
00079 EvtParticle* kaon = p->getDaug(0);
00080 EvtParticle* pion = p->getDaug(1);
00081 EvtParticle* photon = p->getDaug(2);
00082
00083
00084 EvtComplexPtrPtr Hd1=new EvtComplexPtr[5];
00085 Hd1[0]=new EvtComplex[2];
00086 Hd1[1]=new EvtComplex[2];
00087 Hd1[2]=new EvtComplex[2];
00088 Hd1[3]=new EvtComplex[2];
00089 Hd1[4]=new EvtComplex[2];
00090
00091 Hd1[0][0]=0.0;
00092 Hd1[0][1]=0.0;
00093 Hd1[1][0]=0.0;
00094 Hd1[1][1]=0.0;
00095 Hd1[2][0]=0.0;
00096 Hd1[2][1]=0.0;
00097 Hd1[3][0]=0.0;
00098 Hd1[3][1]=1.0;
00099 Hd1[4][0]=0.0;
00100 Hd1[4][1]=0.0;
00101
00102 EvtEvalHelAmp d1(EvtSpinType::SCALAR,EvtSpinType::TENSOR,
00103 EvtSpinType::PHOTON,Hd1);
00104
00105 EvtScalarParticle theB;
00106
00107 theB.init(p->getId(),p->getP4Restframe());
00108
00109 EvtVector4R theKstarP4=kaon->getP4()+pion->getP4();
00110
00111 EvtTensorParticle theKstar;
00112 theKstar.init(EvtPDL::getId(std::string("K_2*0")),theKstarP4);
00113
00114 EvtPhotonParticle thePhoton;
00115 thePhoton.init(EvtPDL::getId(std::string("K_2*0")),photon->getP4());
00116
00117 theKstar.addDaug(&theB);
00118 thePhoton.addDaug(&theB);
00119
00120 EvtAmp amp1;
00121
00122 d1.evalAmp(&theB,amp1);
00123
00124 EvtComplexPtrPtr Hd2=new EvtComplexPtr[1];
00125 Hd2[0]=new EvtComplex[1];
00126
00127 Hd2[0][0]=1.0;
00128
00129
00130 EvtEvalHelAmp d2(EvtSpinType::TENSOR,EvtSpinType::SCALAR,
00131 EvtSpinType::SCALAR,Hd2);
00132
00133
00134 EvtVector4R theKstarP4boost(theKstarP4.get(0),-theKstarP4.get(1),-theKstarP4.get(2),-theKstarP4.get(3));
00135
00136 EvtScalarParticle theKaon;
00137 theKaon.init(EvtPDL::getId(std::string("K+")),boostTo(kaon->getP4(),theKstarP4boost));
00138
00139 EvtScalarParticle thePion;
00140 thePion.init(EvtPDL::getId(std::string("pi+")),boostTo(pion->getP4(),theKstarP4boost));
00141
00142 theKaon.addDaug(&theKstar);
00143 thePion.addDaug(&theKstar);
00144
00145
00146
00147 double m = theKstarP4.mass();
00148 EvtTwoBodyVertex v(0.5,0.14,1.4,2);
00149 EvtTwoBodyKine v1(0.5,0.14,m);
00150 EvtPropBreitWignerRel prop(1.4,0.2);
00151
00152
00153
00154 double width = prop.g0() * v.widthFactor(v1);
00155 prop.set_g0(width);
00156 EvtComplex bwamp = prop.evaluate(m);
00157
00158
00159 EvtAmp amp2;
00160
00161 d2.evalAmp(&theKstar,amp2);
00162
00163 vertex(0,bwamp*(amp1._amp[0]*amp2._amp[0]+
00164 amp1._amp[1]*amp2._amp[1]+
00165 amp1._amp[2]*amp2._amp[2]+
00166 amp1._amp[3]*amp2._amp[3]+
00167 amp1._amp[4]*amp2._amp[4]));
00168
00169 vertex(1,bwamp*(amp1._amp[5]*amp2._amp[0]+
00170 amp1._amp[6]*amp2._amp[1]+
00171 amp1._amp[7]*amp2._amp[2]+
00172 amp1._amp[8]*amp2._amp[3]+
00173 amp1._amp[9]*amp2._amp[4]));
00174
00175 return;
00176 }
00177
00178
00179
00180
00181