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 "EvtGenBase/EvtPatches.hh"
00024 #include "EvtGenBase/EvtParticle.hh"
00025 #include "EvtGenBase/EvtGenKine.hh"
00026 #include "EvtGenBase/EvtPDL.hh"
00027 #include "EvtGenBase/EvtReport.hh"
00028 #include "EvtGenBase/EvtTensor4C.hh"
00029 #include "EvtGenBase/EvtVector4C.hh"
00030 #include "EvtGenBase/EvtDiracSpinor.hh"
00031 #include "EvtGenBase/EvtSemiLeptonicBaryonAmp.hh"
00032 #include "EvtGenBase/EvtId.hh"
00033 #include "EvtGenBase/EvtAmp.hh"
00034 #include "EvtGenBase/EvtSemiLeptonicFF.hh"
00035 #include "EvtGenBase/EvtGammaMatrix.hh"
00036 using std::endl;
00037
00038 void EvtSemiLeptonicBaryonAmp::CalcAmp( EvtParticle *parent,
00039 EvtAmp& amp,
00040 EvtSemiLeptonicFF *FormFactors ) {
00041
00042 static EvtId EM=EvtPDL::getId("e-");
00043 static EvtId MUM=EvtPDL::getId("mu-");
00044 static EvtId TAUM=EvtPDL::getId("tau-");
00045 static EvtId EP=EvtPDL::getId("e+");
00046 static EvtId MUP=EvtPDL::getId("mu+");
00047 static EvtId TAUP=EvtPDL::getId("tau+");
00048
00049
00050
00051
00052 EvtVector4R q = parent->getDaug(1)->getP4()
00053 + parent->getDaug(2)->getP4();
00054 double q2 = (q.mass2());
00055
00056 double f1v,f1a,f2v,f2a;
00057 double m_meson = parent->getDaug(0)->mass();
00058
00059 FormFactors->getbaryonff(parent->getId(),
00060 parent->getDaug(0)->getId(),
00061 q2,
00062 m_meson,
00063 &f1v,
00064 &f1a,
00065 &f2v,
00066 &f2a);
00067
00068 EvtVector4R p4b;
00069 p4b.set(parent->mass(),0.0,0.0,0.0);
00070
00071 EvtVector4C temp_00_term1;
00072 EvtVector4C temp_00_term2;
00073
00074 EvtVector4C temp_01_term1;
00075 EvtVector4C temp_01_term2;
00076
00077 EvtVector4C temp_10_term1;
00078 EvtVector4C temp_10_term2;
00079
00080 EvtVector4C temp_11_term1;
00081 EvtVector4C temp_11_term2;
00082
00083 EvtDiracSpinor p0=parent->sp(0);
00084 EvtDiracSpinor p1=parent->sp(1);
00085
00086 EvtDiracSpinor d0=parent->getDaug(0)->spParent(0);
00087 EvtDiracSpinor d1=parent->getDaug(0)->spParent(1);
00088
00089 temp_00_term1.set(0,f1v*(d0*(EvtGammaMatrix::g0()*p0)));
00090 temp_00_term2.set(0,f1a*(d0*((EvtGammaMatrix::g0()*EvtGammaMatrix::g5())*p0)));
00091 temp_01_term1.set(0,f1v*(d0*(EvtGammaMatrix::g0()*p1)));
00092 temp_01_term2.set(0,f1a*(d0*((EvtGammaMatrix::g0()*EvtGammaMatrix::g5())*p1)));
00093 temp_10_term1.set(0,f1v*(d1*(EvtGammaMatrix::g0()*p0)));
00094 temp_10_term2.set(0,f1a*(d1*((EvtGammaMatrix::g0()*EvtGammaMatrix::g5())*p0)));
00095 temp_11_term1.set(0,f1v*(d1*(EvtGammaMatrix::g0()*p1)));
00096 temp_11_term2.set(0,f1a*(d1*((EvtGammaMatrix::g0()*EvtGammaMatrix::g5())*p1)));
00097
00098 temp_00_term1.set(1,f1v*(d0*(EvtGammaMatrix::g1()*p0)));
00099 temp_00_term2.set(1,f1a*(d0*((EvtGammaMatrix::g1()*EvtGammaMatrix::g5())*p0)));
00100 temp_01_term1.set(1,f1v*(d0*(EvtGammaMatrix::g1()*p1)));
00101 temp_01_term2.set(1,f1a*(d0*((EvtGammaMatrix::g1()*EvtGammaMatrix::g5())*p1)));
00102 temp_10_term1.set(1,f1v*(d1*(EvtGammaMatrix::g1()*p0)));
00103 temp_10_term2.set(1,f1a*(d1*((EvtGammaMatrix::g1()*EvtGammaMatrix::g5())*p0)));
00104 temp_11_term1.set(1,f1v*(d1*(EvtGammaMatrix::g1()*p1)));
00105 temp_11_term2.set(1,f1a*(d1*((EvtGammaMatrix::g1()*EvtGammaMatrix::g5())*p1)));
00106
00107 temp_00_term1.set(2,f1v*(d0*(EvtGammaMatrix::g2()*p0)));
00108 temp_00_term2.set(2,f1a*(d0*((EvtGammaMatrix::g2()*EvtGammaMatrix::g5())*p0)));
00109 temp_01_term1.set(2,f1v*(d0*(EvtGammaMatrix::g2()*p1)));
00110 temp_01_term2.set(2,f1a*(d0*((EvtGammaMatrix::g2()*EvtGammaMatrix::g5())*p1)));
00111 temp_10_term1.set(2,f1v*(d1*(EvtGammaMatrix::g2()*p0)));
00112 temp_10_term2.set(2,f1a*(d1*((EvtGammaMatrix::g2()*EvtGammaMatrix::g5())*p0)));
00113 temp_11_term1.set(2,f1v*(d1*(EvtGammaMatrix::g2()*p1)));
00114 temp_11_term2.set(2,f1a*(d1*((EvtGammaMatrix::g2()*EvtGammaMatrix::g5())*p1)));
00115
00116 temp_00_term1.set(3,f1v*(d0*(EvtGammaMatrix::g3()*p0)));
00117 temp_00_term2.set(3,f1a*(d0*((EvtGammaMatrix::g3()*EvtGammaMatrix::g5())*p0)));
00118 temp_01_term1.set(3,f1v*(d0*(EvtGammaMatrix::g3()*p1)));
00119 temp_01_term2.set(3,f1a*(d0*((EvtGammaMatrix::g3()*EvtGammaMatrix::g5())*p1)));
00120 temp_10_term1.set(3,f1v*(d1*(EvtGammaMatrix::g3()*p0)));
00121 temp_10_term2.set(3,f1a*(d1*((EvtGammaMatrix::g3()*EvtGammaMatrix::g5())*p0)));
00122 temp_11_term1.set(3,f1v*(d1*(EvtGammaMatrix::g3()*p1)));
00123 temp_11_term2.set(3,f1a*(d1*((EvtGammaMatrix::g3()*EvtGammaMatrix::g5())*p1)));
00124
00125
00126
00127 EvtVector4C l1,l2;
00128
00129 EvtId l_num = parent->getDaug(1)->getId();
00130 if (l_num==EM||l_num==MUM||l_num==TAUM){
00131
00132 l1=EvtLeptonVACurrent(parent->getDaug(1)->spParent(0),
00133 parent->getDaug(2)->spParentNeutrino());
00134 l2=EvtLeptonVACurrent(parent->getDaug(1)->spParent(1),
00135 parent->getDaug(2)->spParentNeutrino());
00136 }
00137 else{
00138 if (l_num==EP||l_num==MUP||l_num==TAUP){
00139 l1=EvtLeptonVACurrent(parent->getDaug(2)->spParentNeutrino(),
00140 parent->getDaug(1)->spParent(0));
00141 l2=EvtLeptonVACurrent(parent->getDaug(2)->spParentNeutrino(),
00142 parent->getDaug(1)->spParent(1));
00143 }
00144 else{
00145 report(ERROR,"EvtGen") << "Wrong lepton number"<<endl;
00146 }
00147 }
00148
00149 amp.vertex(0,0,0,l1.cont(temp_00_term1+temp_00_term2));
00150 amp.vertex(0,0,1,l2.cont(temp_00_term1+temp_00_term2));
00151
00152 amp.vertex(0,1,0,l1.cont(temp_01_term1+temp_01_term2));
00153 amp.vertex(0,1,1,l2.cont(temp_01_term1+temp_01_term2));
00154
00155 amp.vertex(1,0,0,l1.cont(temp_10_term1+temp_10_term2));
00156 amp.vertex(1,0,1,l2.cont(temp_10_term1+temp_10_term2));
00157
00158 amp.vertex(1,1,0,l1.cont(temp_11_term1+temp_11_term2));
00159 amp.vertex(1,1,1,l2.cont(temp_11_term1+temp_11_term2));
00160
00161 return;
00162 }
00163