/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Generator/BesEvtGen/BesEvtGen-00-03-58/src/EvtGen/EvtGenBase/EvtSemiLeptonicTensorAmp.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: EvtSemiLeptonicTensorAmp.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/EvtTensor4C.hh"
00029 #include "EvtGenBase/EvtVector4C.hh"
00030 #include "EvtGenBase/EvtDiracSpinor.hh"
00031 #include "EvtGenBase/EvtSemiLeptonicTensorAmp.hh"
00032 #include "EvtGenBase/EvtId.hh"
00033 #include "EvtGenBase/EvtAmp.hh"
00034 #include "EvtGenBase/EvtSemiLeptonicFF.hh"
00035 
00036 void EvtSemiLeptonicTensorAmp::CalcAmp( EvtParticle *parent,
00037                                         EvtAmp& amp,
00038                                         EvtSemiLeptonicFF *FormFactors ) {
00039   static EvtId EM=EvtPDL::getId("e-");
00040   static EvtId MUM=EvtPDL::getId("mu-");
00041   static EvtId TAUM=EvtPDL::getId("tau-");
00042   static EvtId EP=EvtPDL::getId("e+");
00043   static EvtId MUP=EvtPDL::getId("mu+");
00044   static EvtId TAUP=EvtPDL::getId("tau+");
00045 
00046   static EvtId D0=EvtPDL::getId("D0");
00047   static EvtId D0B=EvtPDL::getId("anti-D0");
00048   static EvtId DP=EvtPDL::getId("D+");
00049   static EvtId DM=EvtPDL::getId("D-");
00050   static EvtId DSM=EvtPDL::getId("D_s-");
00051   static EvtId DSP=EvtPDL::getId("D_s+");
00052 
00053   //Add the lepton and neutrino 4 momenta to find q2
00054 
00055   EvtVector4R q = parent->getDaug(1)->getP4() 
00056                     + parent->getDaug(2)->getP4(); 
00057   double q2 = (q.mass2());
00058 
00059   double hf,kf,bpf,bmf;
00060 
00061   FormFactors->gettensorff(parent->getId(),
00062                            parent->getDaug(0)->getId(),
00063                            q2,
00064                            parent->getDaug(0)->mass(),
00065                            &hf, 
00066                            &kf, 
00067                            &bpf, 
00068                            &bmf);
00069 
00070 
00071   double costhl_flag = 1.0;
00072 
00073   if(parent->getId()==D0||parent->getId()==D0B||
00074      parent->getId()==DP||parent->getId()==DM) {
00075     costhl_flag = -1.0;
00076   }
00077   if(parent->getId()==DSP||parent->getId()==DSM) {
00078     costhl_flag = -1.0;
00079   }
00080   hf = hf * costhl_flag;
00081 
00082   EvtVector4R p4b;
00083   p4b.set(parent->mass(),0.0,0.0,0.0);
00084  
00085   EvtVector4R p4meson = parent->getDaug(0)->getP4();
00086  
00087   EvtVector4C l1,l2;
00088 
00089   EvtId l_num = parent->getDaug(1)->getId();
00090 
00091   EvtVector4C ep_meson_b[5];
00092 
00093   ep_meson_b[0] = ((parent->getDaug(0)->epsTensorParent(0)).cont2(p4b)).conj();
00094   ep_meson_b[1] = ((parent->getDaug(0)->epsTensorParent(1)).cont2(p4b)).conj();
00095   ep_meson_b[2] = ((parent->getDaug(0)->epsTensorParent(2)).cont2(p4b)).conj();
00096   ep_meson_b[3] = ((parent->getDaug(0)->epsTensorParent(3)).cont2(p4b)).conj();
00097   ep_meson_b[4] = ((parent->getDaug(0)->epsTensorParent(4)).cont2(p4b)).conj();
00098 
00099   EvtVector4R pp,pm;
00100 
00101   pp=p4b+p4meson;
00102   pm=p4b-p4meson;
00103 
00104   //lange - October 31,2002 - try to lessen the mass dependence of probmax
00105   double q2max = p4b.mass2() + p4meson.mass2() - 2.0*p4b.mass()*p4meson.mass();
00106   double q2maxin=1.0/q2max;
00107 
00108   EvtComplex ep_meson_bb[5];
00109 
00110   ep_meson_bb[0]=ep_meson_b[0]*(p4b);
00111   ep_meson_bb[1]=ep_meson_b[1]*(p4b);
00112   ep_meson_bb[2]=ep_meson_b[2]*(p4b);
00113   ep_meson_bb[3]=ep_meson_b[3]*(p4b);
00114   ep_meson_bb[4]=ep_meson_b[4]*(p4b);
00115 
00116 
00117   EvtVector4C tds0,tds1,tds2,tds3,tds4;
00118 
00119   EvtTensor4C tds;
00120   if (l_num==EM||l_num==MUM||l_num==TAUM){
00121     EvtTensor4C tdual=EvtComplex(0.0,hf)*dual(directProd(pp,pm));
00122     tds0=tdual.cont2(ep_meson_b[0])
00123       -kf*ep_meson_b[0]
00124       -bpf*ep_meson_bb[0]*pp-bmf*ep_meson_bb[0]*pm;
00125     tds0*=q2maxin;
00126 
00127     tds1=tdual.cont2(ep_meson_b[1])
00128       -kf*ep_meson_b[1]
00129       -bpf*ep_meson_bb[1]*pp-bmf*ep_meson_bb[1]*pm;
00130     tds1*=q2maxin;
00131 
00132     tds2=tdual.cont2(ep_meson_b[2])
00133       -kf*ep_meson_b[2]
00134       -bpf*ep_meson_bb[2]*pp-bmf*ep_meson_bb[2]*pm;
00135     tds2*=q2maxin;
00136 
00137     tds3=tdual.cont2(ep_meson_b[3])
00138       -kf*ep_meson_b[3]
00139       -bpf*ep_meson_bb[3]*pp-bmf*ep_meson_bb[3]*pm;
00140     tds3*=q2maxin;
00141 
00142     tds4=tdual.cont2(ep_meson_b[4])
00143       -kf*ep_meson_b[4]
00144       -bpf*ep_meson_bb[4]*pp-bmf*ep_meson_bb[4]*pm;
00145     tds4*=q2maxin;
00146 
00147 
00148     l1=EvtLeptonVACurrent(parent->getDaug(1)->spParent(0),
00149                           parent->getDaug(2)->spParentNeutrino());
00150     l2=EvtLeptonVACurrent(parent->getDaug(1)->spParent(1),
00151                           parent->getDaug(2)->spParentNeutrino());
00152   }
00153   else{
00154     if (l_num==EP||l_num==MUP||l_num==TAUP){
00155      EvtTensor4C tdual=EvtComplex(0.0,-hf)*dual(directProd(pp,pm));
00156       tds0=tdual.cont2(ep_meson_b[0])
00157         -kf*ep_meson_b[0]
00158         -bpf*ep_meson_bb[0]*pp-bmf*ep_meson_bb[0]*pm;
00159       tds0*=q2maxin;
00160 
00161       tds1=tdual.cont2(ep_meson_b[1])
00162         -kf*ep_meson_b[1]
00163         -bpf*ep_meson_bb[1]*pp-bmf*ep_meson_bb[1]*pm;
00164       tds1*=q2maxin;
00165 
00166       tds2=tdual.cont2(ep_meson_b[2])
00167         -kf*ep_meson_b[2]
00168         -bpf*ep_meson_bb[2]*pp-bmf*ep_meson_bb[2]*pm;
00169       tds2*=q2maxin;
00170 
00171       tds3=tdual.cont2(ep_meson_b[3])
00172         -kf*ep_meson_b[3]
00173         -bpf*ep_meson_bb[3]*pp-bmf*ep_meson_bb[3]*pm;
00174       tds3*=q2maxin;
00175 
00176       tds4=tdual.cont2(ep_meson_b[4])
00177         -kf*ep_meson_b[4]
00178         -bpf*ep_meson_bb[4]*pp-bmf*ep_meson_bb[4]*pm;
00179       tds4*=q2maxin;
00180 
00181       l1=EvtLeptonVACurrent(parent->getDaug(2)->spParentNeutrino(),
00182                             parent->getDaug(1)->spParent(0));
00183       l2=EvtLeptonVACurrent(parent->getDaug(2)->spParentNeutrino(),
00184                             parent->getDaug(1)->spParent(1));
00185     }
00186     else{
00187       report(ERROR,"EvtGen") << "dfnb89agngri wrong lepton number\n";
00188     }
00189   }
00190  
00191   amp.vertex(0,0,l1*tds0);
00192   amp.vertex(0,1,l2*tds0);
00193 
00194   amp.vertex(1,0,l1*tds1);
00195   amp.vertex(1,1,l2*tds1);
00196 
00197   amp.vertex(2,0,l1*tds2);
00198   amp.vertex(2,1,l2*tds2);
00199 
00200   amp.vertex(3,0,l1*tds3);
00201   amp.vertex(3,1,l2*tds3);
00202 
00203   amp.vertex(4,0,l1*tds4);
00204   amp.vertex(4,1,l2*tds4);
00205 
00206   return;
00207  
00208 }
00209 

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