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 <iostream>
00025 #include <string>
00026 #include "EvtGenBase/EvtParticle.hh"
00027 #include "EvtGenBase/EvtPDL.hh"
00028 #include "EvtGenBase/EvtGenKine.hh"
00029 #include "EvtGenModels/EvtTauGamMu.hh"
00030 #include "EvtGenBase/EvtDiracSpinor.hh"
00031 #include "EvtGenBase/EvtReport.hh"
00032 #include "EvtGenBase/EvtVector4C.hh"
00033 #include "EvtGenBase/EvtId.hh"
00034 #include "EvtGenBase/EvtHelSys.hh"
00035 #include "EvtGenBase/EvtdFunction.hh"
00036
00037 using std::cout;
00038 using std::endl;
00039
00040 EvtTauGamMu::~EvtTauGamMu() {}
00041
00042 void EvtTauGamMu::getName(std::string& model_name){
00043
00044 model_name="TauGamMu";
00045
00046 }
00047
00048
00049
00050 EvtDecayBase* EvtTauGamMu::clone(){
00051
00052 return new EvtTauGamMu;
00053
00054 }
00055
00056 void EvtTauGamMu::init(){
00057
00058
00059 checkNArg(4);
00060 checkNDaug(2);
00061
00062
00063 checkSpinParent(EvtSpinType::DIRAC);
00064
00065 checkSpinDaughter(0,EvtSpinType::PHOTON);
00066 checkSpinDaughter(1,EvtSpinType::DIRAC);
00067
00068
00069 for(int i=0;i<=1;i++){
00070 for(int j=0;j<=2;j++){
00071 for(int k=0;k<=1;k++){
00072 vertex(i,j,k,0);
00073 }
00074 }
00075 }
00076
00077
00078 }
00079
00080
00081 void EvtTauGamMu::decay(EvtParticle *p){
00082
00083
00084 p->initializePhaseSpace(getNDaug(),getDaugs());
00085
00086 EvtParticle *l1, *l2;
00087 l1 = p->getDaug(0);
00088 l2 = p->getDaug(1);
00089 EvtVector4R DRP4=l1->getP4();
00090 EvtVector4R MEP4=l2->getP4();
00091 EvtVector4R PRP4=p->getP4();
00092 EvtHelSys angles(PRP4,DRP4);
00093 double tht=angles.getHelAng(1);
00094 double ph =angles.getHelAng(2);
00095 double gmm=0;
00096
00097 double H00=getArg(0);
00098 double A00=getArg(1);
00099 double H11=getArg(2);
00100 double A11=getArg(3);
00101
00102 EvtComplex A000 = Djmn(0.5, 0.5, 0.5,ph,tht,gmm)*H00*exp(A00);
00103 EvtComplex A100 = Djmn(0.5,-0.5, 0.5,ph,tht,gmm)*H00*exp(A00);
00104 EvtComplex A021 = Djmn(0.5, 0.5,-0.5,ph,tht,gmm)*H11*exp(A11);
00105 EvtComplex A121 = Djmn(0.5,-0.5,-0.5,ph,tht,gmm)*H11*exp(A11);
00106
00107
00108 vertex(0,0,0,A000);
00109 vertex(0,1,1,A021);
00110 vertex(1,0,0,A100);
00111 vertex(1,1,1,A121);
00112
00113 return;
00114
00115 }
00116
00117
00118