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/EvtConst.hh"
00024 #include "EvtGenBase/EvtPatches.hh"
00025 #include "EvtGenBase/EvtParticle.hh"
00026 #include "EvtGenBase/EvtGenKine.hh"
00027 #include "EvtGenBase/EvtPDL.hh"
00028 #include "EvtGenBase/EvtReport.hh"
00029 #include "EvtGenBase/EvtVector4C.hh"
00030 #include "EvtGenBase/EvtTensor4C.hh"
00031 #include "EvtGenBase/EvtDiracSpinor.hh"
00032 #include "EvtGenModels/EvtbTosllScalarAmp.hh"
00033 #include "EvtGenBase/EvtId.hh"
00034 #include "EvtGenBase/EvtIdSet.hh"
00035 #include "EvtGenBase/EvtAmp.hh"
00036 #include "EvtGenModels/EvtbTosllAmp.hh"
00037 #include "EvtGenModels/EvtbTosllFF.hh"
00038
00039 void EvtbTosllScalarAmp::CalcAmp( EvtParticle *parent,
00040 EvtAmp& amp,
00041 EvtbTosllFF *formFactors ) {
00042
00043
00044
00045 EvtVector4R q = parent->getDaug(1)->getP4()
00046 + parent->getDaug(2)->getP4();
00047 double q2 = (q.mass2());
00048
00049 double fp,f0,ft;
00050 double mesonmass = parent->getDaug(0)->mass();
00051 double parentmass = parent->mass();
00052
00053 formFactors->getScalarFF(parent->getId(),
00054 parent->getDaug(0)->getId(),
00055 q2,
00056 mesonmass,
00057 fp,f0,ft);
00058
00059 EvtId daught = parent->getDaug(0)->getId();
00060 bool btod = false;
00061 bool nnlo = true;
00062 if (daught == EvtPDL::getId(std::string("pi+")) ||
00063 daught == EvtPDL::getId(std::string("pi-")) ||
00064 daught == EvtPDL::getId(std::string("pi0")) ||
00065 daught == EvtPDL::getId(std::string("eta")) ||
00066 daught == EvtPDL::getId(std::string("eta'"))
00067 ) btod = true;
00068
00069
00070 EvtVector4R p4b;
00071 p4b.set(parent->mass(),0.0,0.0,0.0);
00072
00073 EvtVector4C l11,l12;
00074 EvtVector4C l21,l22;
00075
00076 EvtVector4C a11,a12;
00077 EvtVector4C a21,a22;
00078
00079 EvtId l_num = parent->getDaug(1)->getId();
00080
00081 EvtVector4C T1,T2;
00082
00083 EvtVector4R phat=p4b/parentmass;
00084 EvtVector4R qhat=q/parentmass;
00085
00086 EvtComplex c7eff = EvtbTosllAmp::GetC7Eff(q2,nnlo);
00087 EvtComplex c9eff = EvtbTosllAmp::GetC9Eff(q2,nnlo,btod);
00088 EvtComplex c10eff = EvtbTosllAmp::GetC10Eff(q2,nnlo);
00089
00090
00091 double mbhat=4.4/(parentmass);
00092
00093 double mkhat=mesonmass/(parentmass);
00094 double shat=q2/(parentmass*parentmass);
00095
00096 double fm=(f0-fp)*(1-mkhat*mkhat)/shat;
00097
00098 EvtComplex aprime;
00099 aprime = c9eff*fp+2.0*mbhat*c7eff*ft/(1+mkhat);
00100 EvtComplex bprime;
00101 bprime = c9eff*fm-2*mbhat*c7eff*ft*(1-mkhat)/shat;
00102
00103 EvtComplex cprime;
00104 cprime = c10eff*fp;
00105 EvtComplex dprime;
00106 dprime = c10eff*fm;
00107
00108 static EvtIdSet leptons("e-","mu-","tau-");
00109 static EvtIdSet antileptons("e+","mu+","tau+");
00110
00111 if (leptons.contains(l_num)){
00112
00113 T1=aprime*phat+bprime*qhat;
00114 T2=cprime*phat+dprime*qhat;
00115
00116 l11=EvtLeptonVCurrent(parent->getDaug(1)->spParent(0),
00117 parent->getDaug(2)->spParent(0));
00118 l21=EvtLeptonVCurrent(parent->getDaug(1)->spParent(1),
00119 parent->getDaug(2)->spParent(0));
00120 l12=EvtLeptonVCurrent(parent->getDaug(1)->spParent(0),
00121 parent->getDaug(2)->spParent(1));
00122 l22=EvtLeptonVCurrent(parent->getDaug(1)->spParent(1),
00123 parent->getDaug(2)->spParent(1));
00124 a11=EvtLeptonACurrent(parent->getDaug(1)->spParent(0),
00125 parent->getDaug(2)->spParent(0));
00126 a21=EvtLeptonACurrent(parent->getDaug(1)->spParent(1),
00127 parent->getDaug(2)->spParent(0));
00128 a12=EvtLeptonACurrent(parent->getDaug(1)->spParent(0),
00129 parent->getDaug(2)->spParent(1));
00130 a22=EvtLeptonACurrent(parent->getDaug(1)->spParent(1),
00131 parent->getDaug(2)->spParent(1));
00132 }
00133 else{
00134 if (antileptons.contains(l_num)){
00135
00136 T1=aprime*phat+bprime*qhat;
00137 T2=cprime*phat+dprime*qhat;
00138
00139 l11=EvtLeptonVCurrent(parent->getDaug(1)->spParent(1),
00140 parent->getDaug(2)->spParent(1));
00141 l21=EvtLeptonVCurrent(parent->getDaug(1)->spParent(0),
00142 parent->getDaug(2)->spParent(1));
00143 l12=EvtLeptonVCurrent(parent->getDaug(1)->spParent(1),
00144 parent->getDaug(2)->spParent(0));
00145 l22=EvtLeptonVCurrent(parent->getDaug(1)->spParent(0),
00146 parent->getDaug(2)->spParent(0));
00147
00148 a11=EvtLeptonACurrent(parent->getDaug(1)->spParent(1),
00149 parent->getDaug(2)->spParent(1));
00150 a21=EvtLeptonACurrent(parent->getDaug(1)->spParent(0),
00151 parent->getDaug(2)->spParent(1));
00152 a12=EvtLeptonACurrent(parent->getDaug(1)->spParent(1),
00153 parent->getDaug(2)->spParent(0));
00154 a22=EvtLeptonACurrent(parent->getDaug(1)->spParent(0),
00155 parent->getDaug(2)->spParent(0));
00156
00157 }
00158 else{
00159 report(ERROR,"EvtGen") << "Wrong lepton number\n";
00160 }
00161 }
00162
00163 amp.vertex(0,0,l11*T1+a11*T2);
00164 amp.vertex(0,1,l12*T1+a12*T2);
00165 amp.vertex(1,0,l21*T1+a21*T2);
00166 amp.vertex(1,1,l22*T1+a22*T2);
00167
00168 }
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183