/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Generator/BesEvtGen/BesEvtGen-00-03-58/src/EvtGen/EvtGenModels/EvtbTosllScalarAmp.cc

Go to the documentation of this file.
00001 //--------------------------------------------------------------------------
00002 //
00003 // Environment:
00004 //      This software is part of the EvtGen package developed jointly
00005 //      for the BaBar and CLEO collaborations.  If you use all or part
00006 //      of it, please give an appropriate acknowledgement.
00007 //
00008 // Copyright Information: See EvtGen/COPYRIGHT
00009 //      Copyright (C) 2000      Caltech, UCSB
00010 //
00011 // Module: EvtbTosllScalarAmp.cc
00012 //
00013 // Description: Routine to implement bTosll decays to pseudo-scalar
00014 //              mesons. 
00015 //
00016 // Modification history:
00017 //
00018 //    Ryd       January 5,2000       Module created
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   //Add the lepton and neutrino 4 momenta to find q2
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   //double mbhat=1;
00091   double mbhat=4.4/(parentmass);      
00092   //double mkhat = 0.15;
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 

Generated on Tue Nov 29 23:12:17 2016 for BOSS_7.0.2 by  doxygen 1.4.7