/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Generator/BesEvtGen/BesEvtGen-00-03-58/src/EvtGen/EvtGenBase/EvtSemiLeptonicScalarAmp.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) 1998      Caltech, UCSB
00010 //
00011 // Module: EvtSemiLeptonicScalarAmp.cc
00012 //
00013 // Description: Routine to implement semileptonic decays to pseudo-scalar
00014 //              mesons. 
00015 //
00016 // Modification history:
00017 //
00018 //    DJL       April 17,1998       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 "EvtGenBase/EvtSemiLeptonicScalarAmp.hh"
00032 #include "EvtGenBase/EvtId.hh"
00033 #include "EvtGenBase/EvtAmp.hh"
00034 #include "EvtGenBase/EvtSemiLeptonicFF.hh"
00035 
00036 void EvtSemiLeptonicScalarAmp::CalcAmp( EvtParticle *parent,
00037                                         EvtAmp& amp,
00038                                         EvtSemiLeptonicFF *FormFactors ) {
00039 
00040   static EvtId EM=EvtPDL::getId("e-");
00041   static EvtId MUM=EvtPDL::getId("mu-");
00042   static EvtId TAUM=EvtPDL::getId("tau-");
00043   static EvtId EP=EvtPDL::getId("e+");
00044   static EvtId MUP=EvtPDL::getId("mu+");
00045   static EvtId TAUP=EvtPDL::getId("tau+");
00046   
00047   //Add the lepton and neutrino 4 momenta to find q2
00048 
00049   EvtVector4R q = parent->getDaug(1)->getP4() 
00050                     + parent->getDaug(2)->getP4();
00051   double q2 = (q.mass2());
00052 
00053   double fpf,f0f;
00054   double mesonmass = parent->getDaug(0)->mass();
00055   double parentmass = parent->mass();
00056 
00057   FormFactors->getscalarff(parent->getId(),
00058                            parent->getDaug(0)->getId(),
00059                            q2,
00060                            mesonmass,
00061                            &fpf, 
00062                            &f0f);
00063 
00064 
00065   EvtVector4R p4b;
00066   p4b.set(parent->mass(),0.0,0.0,0.0);
00067   EvtVector4R p4meson = parent->getDaug(0)->getP4();
00068   double mdiffoverq2;
00069   mdiffoverq2 = parentmass*parentmass - mesonmass*mesonmass;
00070   mdiffoverq2 = mdiffoverq2 / q2;
00071 
00072   EvtVector4C l1,l2;
00073 
00074   EvtId l_num = parent->getDaug(1)->getId();
00075   EvtVector4C tds;
00076 
00077   if (l_num==EM||l_num==MUM||l_num==TAUM){
00078 
00079     tds = EvtVector4C(fpf*(p4b+p4meson - (mdiffoverq2*(p4b-p4meson)))+
00080                     + f0f*mdiffoverq2*(p4b-p4meson));
00081 
00082     l1=EvtLeptonVACurrent(parent->getDaug(1)->spParent(0),
00083                           parent->getDaug(2)->spParentNeutrino());
00084     l2=EvtLeptonVACurrent(parent->getDaug(1)->spParent(1),
00085                           parent->getDaug(2)->spParentNeutrino());
00086   }
00087   else{
00088     if (l_num==EP||l_num==MUP||l_num==TAUP){
00089 
00090       tds = EvtVector4C(fpf*(p4b+p4meson - (mdiffoverq2*(p4b-p4meson)))+
00091                     + f0f*mdiffoverq2*(p4b-p4meson));
00092 
00093       l1=EvtLeptonVACurrent(parent->getDaug(2)->spParentNeutrino(),
00094                             parent->getDaug(1)->spParent(0));
00095       l2=EvtLeptonVACurrent(parent->getDaug(2)->spParentNeutrino(),
00096                             parent->getDaug(1)->spParent(1));
00097     }
00098     else{
00099       report(ERROR,"EvtGen") << "dfnb89agngri wrong lepton number\n";
00100     }
00101   }
00102 
00103   amp.vertex(0,l1*tds);
00104   amp.vertex(1,l2*tds);
00105 
00106 }
00107 

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