/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Generator/BesEvtGen/BesEvtGen-00-03-58/src/EvtGen/EvtGenBase/EvtSemiLeptonicBaryonAmp.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: EvtSemiLeptonicBaryonAmp.cc
00012 //
00013 // Description: Routine to implement semileptonic decays to vector
00014 //              mesons. 
00015 //
00016 // Modification history:
00017 //
00018 //    Lange    Oct 20, 2004   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/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   //Add the lepton and neutrino 4 momenta to find q2
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 

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