00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "EvtGenBase/EvtPatches.hh"
00023 #include <stdlib.h>
00024 #include "EvtGenBase/EvtParticle.hh"
00025 #include "EvtGenBase/EvtGenKine.hh"
00026 #include "EvtGenBase/EvtPDL.hh"
00027 #include "EvtGenBase/EvtVector4C.hh"
00028 #include "EvtGenBase/EvtVector4R.hh"
00029 #include "EvtGenBase/EvtTensor4C.hh"
00030 #include "EvtGenBase/EvtDiracParticle.hh"
00031 #include "EvtGenBase/EvtScalarParticle.hh"
00032 #include "EvtGenBase/EvtVectorParticle.hh"
00033 #include "EvtGenBase/EvtTensorParticle.hh"
00034 #include "EvtGenBase/EvtPhotonParticle.hh"
00035 #include "EvtGenBase/EvtNeutrinoParticle.hh"
00036 #include "EvtGenBase/EvtStringParticle.hh"
00037 #include "EvtGenBase/EvtRaritaSchwingerParticle.hh"
00038 #include "EvtGenBase/EvtHighSpinParticle.hh"
00039 #include "EvtGenBase/EvtReport.hh"
00040 #include "EvtGenModels/EvtJTO3P.hh"
00041 #include "EvtGenBase/EvtRandom.hh"
00042 #include "EvtGenBase/EvtEulerAngles.hh"
00043 #include <string>
00044 using namespace std;
00045
00046 EvtJTO3P::~EvtJTO3P() {}
00047
00048 void EvtJTO3P::getName(std::string& model_name){
00049
00050 model_name="JTO3P";
00051
00052 }
00053
00054 EvtDecayBase* EvtJTO3P::clone(){
00055
00056 return new EvtJTO3P;
00057
00058 }
00059
00060
00061 void EvtJTO3P::init(){
00062
00063
00064
00065 checkNDaug(3);
00066 checkSpinParent(EvtSpinType::VECTOR);
00067 checkSpinDaughter(0,EvtSpinType::SCALAR);
00068 checkSpinDaughter(1,EvtSpinType::SCALAR);
00069 checkSpinDaughter(2,EvtSpinType::SCALAR);
00070 }
00071
00072
00073
00074
00075
00076
00077 void EvtJTO3P::decay( EvtParticle *p ){
00078
00079 p->initializePhaseSpace(getNDaug(),getDaugs());
00080
00081 EvtVector4R mompi1 = p->getDaug(0)->getP4();
00082 EvtVector4R mompi2 = p->getDaug(1)->getP4();
00083 EvtVector4R mompi3 = p->getDaug(2)->getP4();
00084 EvtVector4R Zaxis = mompi2.cross(mompi3);
00085
00086 EvtEulerAngles EA(mompi1,Zaxis);
00087 double alpha=EA.getAlpha();
00088 double beta =EA.getBeta();
00089 double gamma=EA.getGamma();
00090
00091 EvtVector4R h1,h2;
00092 h1 = rotateEuler(mompi1,-gamma,-beta,-alpha);
00093 h2 = rotateEuler(mompi2,-gamma,-beta,-alpha);
00094
00095 double F0 = h1.get(1)*h2.get(2)-h1.get(2)*h2.get(1);
00096
00097
00098 vertex(0,Djmn(1, 1,0,alpha,beta,gamma)*F0);
00099 vertex(1,Djmn(1,-1,0,alpha,beta,gamma)*F0);
00100 vertex(2,Djmn(1, 0,0,alpha,beta,gamma)*F0);
00101
00102 }
00103
00104