/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Generator/BesEvtGen/BesEvtGen-00-03-58/src/EvtGen/EvtGenModels/EvtbTosllVectorAmp.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: EvtbTosllVectorAmp.cc
00012 //
00013 // Description: Routine to implement bTosll decays to vector
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/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/EvtVector4C.hh"
00029 #include "EvtGenBase/EvtTensor4C.hh"
00030 #include "EvtGenBase/EvtDiracSpinor.hh"
00031 #include "EvtGenModels/EvtbTosllVectorAmp.hh"
00032 #include "EvtGenBase/EvtId.hh"
00033 #include "EvtGenBase/EvtIdSet.hh"
00034 #include "EvtGenBase/EvtAmp.hh"
00035 #include "EvtGenModels/EvtbTosllAmp.hh"
00036 #include "EvtGenModels/EvtbTosllFF.hh"
00037 
00038 void EvtbTosllVectorAmp::CalcAmp( EvtParticle *parent,
00039                                   EvtAmp& amp,
00040                                   EvtbTosllFF *formFactors ) {
00041 
00042   //Add the lepton and neutrino 4 momenta to find q2
00043 
00044   EvtVector4R q = parent->getDaug(1)->getP4() 
00045                     + parent->getDaug(2)->getP4();
00046   double q2 = (q.mass2());
00047 
00048 
00049   double a1,a2,a0,v,t1,t2,t3;
00050   double mesonmass = parent->getDaug(0)->mass();
00051   double parentmass = parent->mass();
00052 
00053   formFactors->getVectorFF(parent->getId(),
00054                            parent->getDaug(0)->getId(),
00055                            q2,
00056                            mesonmass,
00057                            a1,a2,a0,v,t1,t2,t3);
00058 
00059 
00060   EvtId daught = parent->getDaug(0)->getId();
00061   bool btod = false;
00062   bool nnlo = true;
00063  if 
00064   (
00065    daught == EvtPDL::getId(std::string("rho+")) ||
00066    daught == EvtPDL::getId(std::string("rho-")) ||
00067    daught == EvtPDL::getId(std::string("rho0")) ||
00068    daught == EvtPDL::getId(std::string("omega"))
00069   ) 
00070    btod = true;
00071 
00072   EvtVector4R p4b;
00073   p4b.set(parent->mass(),0.0,0.0,0.0);
00074   EvtVector4R p4meson = parent->getDaug(0)->getP4();
00075  
00076   EvtVector4C l11,l12;
00077   EvtVector4C l21,l22;
00078 
00079   EvtVector4C a11,a12;
00080   EvtVector4C a21,a22;
00081 
00082   EvtId parentID = parent->getId();
00083 
00084       //EvtId l_num = parent->getDaug(1)->getId();
00085 
00086   EvtVector4R pbhat=p4b/parentmass;
00087   EvtVector4R qhat=q/parentmass;
00088   EvtVector4R pkstarhat=p4meson/parentmass;
00089   EvtVector4R phat=pbhat+pkstarhat;
00090 
00091   EvtComplex c7eff = EvtbTosllAmp::GetC7Eff(q2,nnlo);
00092   EvtComplex c9eff = EvtbTosllAmp::GetC9Eff(q2,nnlo,btod);
00093   EvtComplex c10eff = EvtbTosllAmp::GetC10Eff(q2,nnlo);
00094   EvtComplex uniti(0.0,1.0);
00095 
00096   double mhatb=4.4/(parentmass); 
00097   double mhatkstar=mesonmass/(parentmass);
00098   double shat=q2/(parentmass*parentmass);
00099 
00100 
00101   EvtComplex a;
00102   a=c9eff*v*2/(1+mhatkstar)+4*mhatb*c7eff*t1/shat;
00103   EvtComplex b;
00104   b=(1+mhatkstar)*(c9eff*a1+2*mhatb*(1-mhatkstar)*c7eff*t2/shat);
00105   EvtComplex c;
00106   c=((1-mhatkstar)*c9eff*a2+
00107             2*mhatb*c7eff*(t3+(1-mhatkstar*mhatkstar)*t2/shat))/
00108     (1-mhatkstar*mhatkstar);
00109   EvtComplex d;
00110   d=(c9eff*((1+mhatkstar)*a1-(1-mhatkstar)*a2-2*mhatkstar*a0)
00111             -2*mhatb*c7eff*t3)/shat;
00112   EvtComplex e;
00113   e=2*c10eff*v/(1+mhatkstar);
00114   EvtComplex f;
00115   f=(1+mhatkstar)*c10eff*a1;
00116   EvtComplex g;
00117   g=c10eff*a2/(1+mhatkstar);
00118   EvtComplex h;
00119   h=c10eff*((1+mhatkstar)*a1-(1-mhatkstar)*a2-2*mhatkstar*a0)/shat;
00120   
00121   EvtTensor4C T1,T2;
00122   
00123   static EvtIdSet bmesons("B-","anti-B0");
00124   static EvtIdSet bbarmesons("B+","B0");
00125   
00126   EvtParticle* lepPlus(0);
00127   EvtParticle* lepMinus(0);
00128   
00129   int charge1 = EvtPDL::chg3(parent->getDaug(1)->getId());
00130   int charge2 = EvtPDL::chg3(parent->getDaug(2)->getId());
00131   
00132   lepPlus = (charge1 > charge2) ? parent->getDaug(1) : parent->getDaug(2);
00133   lepMinus = (charge1 < charge2) ? parent->getDaug(1) : parent->getDaug(2);
00134 
00135 //  static EvtIdSet leptons("e-","mu-","tau-");
00136 //  static EvtIdSet antileptons("e+","mu+","tau+");
00137   
00138 //  if (leptons.contains(l_num)){
00139   if (bmesons.contains(parentID)) {
00140 
00141     T1=a*dual(directProd(pbhat,pkstarhat))
00142        -b*uniti*EvtTensor4C::g()
00143        +c*uniti*directProd(pbhat,phat)
00144        +d*uniti*directProd(pbhat,qhat);
00145     
00146     T2=e*dual(directProd(pbhat,pkstarhat))
00147        -f*uniti*EvtTensor4C::g()
00148        +g*uniti*directProd(pbhat,phat)
00149        +h*uniti*directProd(pbhat,qhat);
00150     
00151     l11=EvtLeptonVCurrent(lepPlus->spParent(0),
00152                           lepMinus->spParent(0));
00153     l21=EvtLeptonVCurrent(lepPlus->spParent(1),
00154                           lepMinus->spParent(0));
00155     l12=EvtLeptonVCurrent(lepPlus->spParent(0), 
00156                           lepMinus->spParent(1));
00157     l22=EvtLeptonVCurrent(lepPlus->spParent(1),
00158                           lepMinus->spParent(1));
00159 
00160     a11=EvtLeptonACurrent(lepPlus->spParent(0),
00161                           lepMinus->spParent(0));
00162     a21=EvtLeptonACurrent(lepPlus->spParent(1),
00163                           lepMinus->spParent(0));
00164     a12=EvtLeptonACurrent(lepPlus->spParent(0),
00165                           lepMinus->spParent(1));
00166     a22=EvtLeptonACurrent(lepPlus->spParent(1),
00167                           lepMinus->spParent(1));
00168 
00169   } else {
00170     
00171     if (bbarmesons.contains(parentID)) {
00172 
00173       T1=-a*dual(directProd(pbhat,pkstarhat))
00174          -b*uniti*EvtTensor4C::g()
00175          +c*uniti*directProd(pbhat,phat)
00176          +d*uniti*directProd(pbhat,qhat);
00177       
00178       T2=-e*dual(directProd(pbhat,pkstarhat))
00179          -f*uniti*EvtTensor4C::g()
00180          +g*uniti*directProd(pbhat,phat)
00181          +h*uniti*directProd(pbhat,qhat);
00182       
00183       l11=EvtLeptonVCurrent(lepPlus->spParent(1),
00184                             lepMinus->spParent(1));
00185       l21=EvtLeptonVCurrent(lepPlus->spParent(0),
00186                             lepMinus->spParent(1));
00187       l12=EvtLeptonVCurrent(lepPlus->spParent(1),
00188                             lepMinus->spParent(0));
00189       l22=EvtLeptonVCurrent(lepPlus->spParent(0),
00190                             lepMinus->spParent(0));
00191       
00192       a11=EvtLeptonACurrent(lepPlus->spParent(1),
00193                             lepMinus->spParent(1));
00194       a21=EvtLeptonACurrent(lepPlus->spParent(0),
00195                             lepMinus->spParent(1));
00196       a12=EvtLeptonACurrent(lepPlus->spParent(1),
00197                             lepMinus->spParent(0));
00198       a22=EvtLeptonACurrent(lepPlus->spParent(0),
00199                             lepMinus->spParent(0));
00200       
00201     }
00202     else{
00203       report(ERROR,"EvtGen") << "Wrong lepton number\n";
00204     }    
00205   }
00206 
00207 
00208   int i;
00209 
00210   for(i=0;i<3;i++){
00211     EvtVector4C eps=parent->getDaug(0)->epsParent(i).conj();
00212 
00213     EvtVector4C E1=T1.cont1(eps);
00214     EvtVector4C E2=T2.cont1(eps);
00215 
00216     amp.vertex(i,0,0,l11*E1+a11*E2);
00217     amp.vertex(i,0,1,l12*E1+a12*E2);
00218     amp.vertex(i,1,0,l21*E1+a21*E2);
00219     amp.vertex(i,1,1,l22*E1+a22*E2);
00220   } 
00221 }
00222 
00223 
00224 
00225 
00226 
00227 
00228 

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