LCOV - code coverage report
Current view: top level - TEvtGen/EvtGen/EvtGenModels - EvtbTosllVectorAmp.cpp (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 122 0.0 %
Date: 2016-06-14 17:26:59 Functions: 0 1 0.0 %

          Line data    Source code
       1             : //--------------------------------------------------------------------------
       2             : //
       3             : // Environment:
       4             : //      This software is part of the EvtGen package developed jointly
       5             : //      for the BaBar and CLEO collaborations.  If you use all or part
       6             : //      of it, please give an appropriate acknowledgement.
       7             : //
       8             : // Copyright Information: See EvtGen/COPYRIGHT
       9             : //      Copyright (C) 2000      Caltech, UCSB
      10             : //
      11             : // Module: EvtbTosllVectorAmp.cc
      12             : //
      13             : // Description: Routine to implement bTosll decays to vector
      14             : //              mesons. 
      15             : //
      16             : // Modification history:
      17             : //
      18             : //    Ryd       January 5,2000       Module created
      19             : //
      20             : //------------------------------------------------------------------------
      21             : //
      22             : #include "EvtGenBase/EvtPatches.hh"
      23             : #include "EvtGenBase/EvtPatches.hh"
      24             : #include "EvtGenBase/EvtParticle.hh"
      25             : #include "EvtGenBase/EvtGenKine.hh"
      26             : #include "EvtGenBase/EvtPDL.hh"
      27             : #include "EvtGenBase/EvtReport.hh"
      28             : #include "EvtGenBase/EvtVector4C.hh"
      29             : #include "EvtGenBase/EvtTensor4C.hh"
      30             : #include "EvtGenBase/EvtDiracSpinor.hh"
      31             : #include "EvtGenModels/EvtbTosllVectorAmp.hh"
      32             : #include "EvtGenBase/EvtId.hh"
      33             : #include "EvtGenBase/EvtIdSet.hh"
      34             : #include "EvtGenBase/EvtAmp.hh"
      35             : #include "EvtGenModels/EvtbTosllAmp.hh"
      36             : #include "EvtGenModels/EvtbTosllFF.hh"
      37             : 
      38             : void EvtbTosllVectorAmp::CalcAmp( EvtParticle *parent,
      39             :                                   EvtAmp& amp,
      40             :                                   EvtbTosllFF *formFactors ) {
      41             : 
      42             :   //Add the lepton and neutrino 4 momenta to find q2
      43             : 
      44           0 :   EvtVector4R q = parent->getDaug(1)->getP4() 
      45           0 :                     + parent->getDaug(2)->getP4();
      46           0 :   double q2 = (q.mass2());
      47             : 
      48             : 
      49           0 :   double a1,a2,a0,v,t1,t2,t3;
      50           0 :   double mesonmass = parent->getDaug(0)->mass();
      51           0 :   double parentmass = parent->mass();
      52             : 
      53           0 :   formFactors->getVectorFF(parent->getId(),
      54           0 :                            parent->getDaug(0)->getId(),
      55             :                            q2,
      56             :                            mesonmass,
      57             :                            a1,a2,a0,v,t1,t2,t3);
      58             : 
      59             : 
      60           0 :   EvtId daught = parent->getDaug(0)->getId();
      61             :   bool btod = false;
      62             :   bool nnlo = true;
      63             :  if 
      64             :   (
      65           0 :    daught == EvtPDL::getId(std::string("rho+")) ||
      66           0 :    daught == EvtPDL::getId(std::string("rho-")) ||
      67           0 :    daught == EvtPDL::getId(std::string("rho0")) ||
      68           0 :    daught == EvtPDL::getId(std::string("omega"))
      69             :   ) 
      70           0 :    btod = true;
      71             : 
      72           0 :   EvtVector4R p4b;
      73           0 :   p4b.set(parent->mass(),0.0,0.0,0.0);
      74           0 :   EvtVector4R p4meson = parent->getDaug(0)->getP4();
      75             :  
      76           0 :   EvtVector4C l11,l12;
      77           0 :   EvtVector4C l21,l22;
      78             : 
      79           0 :   EvtVector4C a11,a12;
      80           0 :   EvtVector4C a21,a22;
      81             : 
      82           0 :   EvtId parentID = parent->getId();
      83             : 
      84             :       //EvtId l_num = parent->getDaug(1)->getId();
      85             : 
      86           0 :   EvtVector4R pbhat=p4b/parentmass;
      87           0 :   EvtVector4R qhat=q/parentmass;
      88           0 :   EvtVector4R pkstarhat=p4meson/parentmass;
      89           0 :   EvtVector4R phat=pbhat+pkstarhat;
      90             : 
      91           0 :   EvtComplex c7eff = EvtbTosllAmp::GetC7Eff(q2,nnlo);
      92           0 :   EvtComplex c9eff = EvtbTosllAmp::GetC9Eff(q2,nnlo,btod);
      93           0 :   EvtComplex c10eff = EvtbTosllAmp::GetC10Eff(q2,nnlo);
      94           0 :   EvtComplex uniti(0.0,1.0);
      95             : 
      96           0 :   double mhatb=4.4/(parentmass); 
      97           0 :   double mhatkstar=mesonmass/(parentmass);
      98           0 :   double shat=q2/(parentmass*parentmass);
      99             : 
     100             : 
     101           0 :   EvtComplex a;
     102           0 :   a=c9eff*v*2/(1+mhatkstar)+4*mhatb*c7eff*t1/shat;
     103           0 :   EvtComplex b;
     104           0 :   b=(1+mhatkstar)*(c9eff*a1+2*mhatb*(1-mhatkstar)*c7eff*t2/shat);
     105           0 :   EvtComplex c;
     106           0 :   c=((1-mhatkstar)*c9eff*a2+
     107           0 :             2*mhatb*c7eff*(t3+(1-mhatkstar*mhatkstar)*t2/shat))/
     108             :     (1-mhatkstar*mhatkstar);
     109           0 :   EvtComplex d;
     110           0 :   d=(c9eff*((1+mhatkstar)*a1-(1-mhatkstar)*a2-2*mhatkstar*a0)
     111           0 :             -2*mhatb*c7eff*t3)/shat;
     112           0 :   EvtComplex e;
     113           0 :   e=2*c10eff*v/(1+mhatkstar);
     114           0 :   EvtComplex f;
     115           0 :   f=(1+mhatkstar)*c10eff*a1;
     116           0 :   EvtComplex g;
     117           0 :   g=c10eff*a2/(1+mhatkstar);
     118           0 :   EvtComplex h;
     119           0 :   h=c10eff*((1+mhatkstar)*a1-(1-mhatkstar)*a2-2*mhatkstar*a0)/shat;
     120             :   
     121           0 :   EvtTensor4C T1,T2;
     122             :   
     123           0 :   static EvtIdSet bmesons("B-","anti-B0","anti-B_s0");
     124           0 :   static EvtIdSet bbarmesons("B+","B0","B_s0");
     125             :   
     126             :   EvtParticle* lepPlus=0;
     127             :   EvtParticle* lepMinus=0;
     128             :   
     129           0 :   int charge1 = EvtPDL::chg3(parent->getDaug(1)->getId());
     130           0 :   int charge2 = EvtPDL::chg3(parent->getDaug(2)->getId());
     131             :   
     132           0 :   lepPlus = (charge1 > charge2) ? parent->getDaug(1) : parent->getDaug(2);
     133           0 :   lepMinus = (charge1 < charge2) ? parent->getDaug(1) : parent->getDaug(2);
     134             : 
     135           0 :   if (bmesons.contains(parentID)) {
     136             : 
     137           0 :     T1=a*dual(EvtGenFunctions::directProd(pbhat,pkstarhat))
     138           0 :        -b*uniti*EvtTensor4C::g()
     139           0 :        +c*uniti*EvtGenFunctions::directProd(pbhat,phat)
     140           0 :        +d*uniti*EvtGenFunctions::directProd(pbhat,qhat);
     141             :     
     142           0 :     T2=e*dual(EvtGenFunctions::directProd(pbhat,pkstarhat))
     143           0 :        -f*uniti*EvtTensor4C::g()
     144           0 :        +g*uniti*EvtGenFunctions::directProd(pbhat,phat)
     145           0 :        +h*uniti*EvtGenFunctions::directProd(pbhat,qhat);
     146             :     
     147           0 :     l11=EvtLeptonVCurrent(lepPlus->spParent(0),
     148           0 :                           lepMinus->spParent(0));
     149           0 :     l21=EvtLeptonVCurrent(lepPlus->spParent(1),
     150           0 :                           lepMinus->spParent(0));
     151           0 :     l12=EvtLeptonVCurrent(lepPlus->spParent(0), 
     152           0 :                           lepMinus->spParent(1));
     153           0 :     l22=EvtLeptonVCurrent(lepPlus->spParent(1),
     154           0 :                           lepMinus->spParent(1));
     155             : 
     156           0 :     a11=EvtLeptonACurrent(lepPlus->spParent(0),
     157           0 :                           lepMinus->spParent(0));
     158           0 :     a21=EvtLeptonACurrent(lepPlus->spParent(1),
     159           0 :                           lepMinus->spParent(0));
     160           0 :     a12=EvtLeptonACurrent(lepPlus->spParent(0),
     161           0 :                           lepMinus->spParent(1));
     162           0 :     a22=EvtLeptonACurrent(lepPlus->spParent(1),
     163           0 :                           lepMinus->spParent(1));
     164             : 
     165           0 :   } else {
     166             :     
     167           0 :     if (bbarmesons.contains(parentID)) {
     168             : 
     169           0 :       T1=-a*dual(EvtGenFunctions::directProd(pbhat,pkstarhat))
     170           0 :          -b*uniti*EvtTensor4C::g()
     171           0 :          +c*uniti*EvtGenFunctions::directProd(pbhat,phat)
     172           0 :          +d*uniti*EvtGenFunctions::directProd(pbhat,qhat);
     173             :       
     174           0 :       T2=-e*dual(EvtGenFunctions::directProd(pbhat,pkstarhat))
     175           0 :          -f*uniti*EvtTensor4C::g()
     176           0 :          +g*uniti*EvtGenFunctions::directProd(pbhat,phat)
     177           0 :          +h*uniti*EvtGenFunctions::directProd(pbhat,qhat);
     178             :       
     179           0 :       l11=EvtLeptonVCurrent(lepPlus->spParent(1),
     180           0 :                             lepMinus->spParent(1));
     181           0 :       l21=EvtLeptonVCurrent(lepPlus->spParent(0),
     182           0 :                             lepMinus->spParent(1));
     183           0 :       l12=EvtLeptonVCurrent(lepPlus->spParent(1),
     184           0 :                             lepMinus->spParent(0));
     185           0 :       l22=EvtLeptonVCurrent(lepPlus->spParent(0),
     186           0 :                             lepMinus->spParent(0));
     187             :       
     188           0 :       a11=EvtLeptonACurrent(lepPlus->spParent(1),
     189           0 :                             lepMinus->spParent(1));
     190           0 :       a21=EvtLeptonACurrent(lepPlus->spParent(0),
     191           0 :                             lepMinus->spParent(1));
     192           0 :       a12=EvtLeptonACurrent(lepPlus->spParent(1),
     193           0 :                             lepMinus->spParent(0));
     194           0 :       a22=EvtLeptonACurrent(lepPlus->spParent(0),
     195           0 :                             lepMinus->spParent(0));
     196             :       
     197           0 :     }
     198             :     else{
     199           0 :       report(Severity::Error,"EvtGen") << "Wrong lepton number\n";
     200           0 :       T1.zero(); T2.zero(); // Set all tensor terms to zero.
     201             :     }    
     202             :   }
     203             : 
     204             : 
     205             :   int i;
     206             : 
     207           0 :   for(i=0;i<3;i++){
     208           0 :     EvtVector4C eps=parent->getDaug(0)->epsParent(i).conj();
     209             : 
     210           0 :     EvtVector4C E1=T1.cont1(eps);
     211           0 :     EvtVector4C E2=T2.cont1(eps);
     212             : 
     213           0 :     amp.vertex(i,0,0,l11*E1+a11*E2);
     214           0 :     amp.vertex(i,0,1,l12*E1+a12*E2);
     215           0 :     amp.vertex(i,1,0,l21*E1+a21*E2);
     216           0 :     amp.vertex(i,1,1,l22*E1+a22*E2);
     217           0 :   } 
     218           0 : }
     219             : 
     220             : 
     221             : 
     222             : 
     223             : 
     224             : 
     225             : 

Generated by: LCOV version 1.11