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/EvtTensor4C.hh"
00029 #include "EvtGenBase/EvtReport.hh"
00030 #include "EvtGenModels/EvtTVSPwave.hh"
00031 #include <string>
00032
00033 EvtTVSPwave::~EvtTVSPwave() {}
00034
00035 void EvtTVSPwave::getName(std::string& model_name){
00036
00037 model_name="TVS_PWAVE";
00038
00039 }
00040
00041
00042 EvtDecayBase* EvtTVSPwave::clone(){
00043
00044 return new EvtTVSPwave;
00045
00046 }
00047
00048 void EvtTVSPwave::init(){
00049
00050
00051 checkNArg(6);
00052 checkNDaug(2);
00053
00054 checkSpinParent(EvtSpinType::TENSOR);
00055
00056 checkSpinDaughter(0,EvtSpinType::VECTOR);
00057 checkSpinDaughter(1,EvtSpinType::SCALAR);
00058 }
00059
00060 void EvtTVSPwave::initProbMax(){
00061
00062 setProbMax(0.5);
00063
00064
00065 }
00066
00067 void EvtTVSPwave::decay( EvtParticle *p ){
00068
00069 EvtComplex ap(getArg(0)*cos(getArg(1)),getArg(0)*sin(getArg(1)));
00070 EvtComplex ad(getArg(2)*cos(getArg(3)),getArg(2)*sin(getArg(3)));
00071 EvtComplex af(getArg(4)*cos(getArg(5)),getArg(4)*sin(getArg(5)));
00072
00073 if (ap!=EvtComplex(0.0,0.0)||af!=EvtComplex(0.0,0.0)) {
00074 report(ERROR,"EvtGen") << "dfslkh8945wqh:In EvtTensorToVectorScalar.c\n";
00075 report(ERROR,"EvtGen") << "P or F wave not yet implemented!! (ryd) \n";
00076 }
00077
00078 p->initializePhaseSpace(getNDaug(),getDaugs());
00079
00080 EvtParticle *v;
00081 v = p->getDaug(0);
00082 EvtVector4R momv = v->getP4();
00083 double massv = v->mass();
00084
00085 EvtComplex temp;
00086 temp = ad;
00087 double m_parent = p->mass();
00088
00089 EvtVector4R p_parent;
00090
00091 p_parent.set(m_parent,0.0,0.0,0.0);
00092
00093 EvtVector4C pep0,pep1,pep2,pep3,pep4;
00094 EvtTensor4C pdual;
00095
00096 EvtVector4C epsdual0,epsdual1,epsdual2;
00097
00098 double norm=massv/(m_parent*momv.get(0)*momv.d3mag()*momv.d3mag());
00099 pdual=dual(directProd(norm*p_parent,momv));
00100
00101 epsdual0=pdual.cont1(v->epsParent(0).conj());
00102 epsdual1=pdual.cont1(v->epsParent(1).conj());
00103 epsdual2=pdual.cont1(v->epsParent(2).conj());
00104
00105 pep0=p->epsTensor(0).cont1(momv);
00106 pep1=p->epsTensor(1).cont1(momv);
00107 pep2=p->epsTensor(2).cont1(momv);
00108 pep3=p->epsTensor(3).cont1(momv);
00109 pep4=p->epsTensor(4).cont1(momv);
00110
00111 vertex(0,0,pep0*epsdual0);
00112 vertex(1,0,pep1*epsdual0);
00113 vertex(2,0,pep2*epsdual0);
00114 vertex(3,0,pep3*epsdual0);
00115 vertex(4,0,pep4*epsdual0);
00116
00117 vertex(0,1,pep0*epsdual1);
00118 vertex(1,1,pep1*epsdual1);
00119 vertex(2,1,pep2*epsdual1);
00120 vertex(3,1,pep3*epsdual1);
00121 vertex(4,1,pep4*epsdual1);
00122
00123 vertex(0,2,pep0*epsdual2);
00124 vertex(1,2,pep1*epsdual2);
00125 vertex(2,2,pep2*epsdual2);
00126 vertex(3,2,pep3*epsdual2);
00127 vertex(4,2,pep4*epsdual2);
00128
00129 return ;
00130 }
00131