/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Generator/BesEvtGen/BesEvtGen-00-03-58/src/EvtGen/EvtGenModels/EvtLambdaP_BarGamma.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) 2003      Caltech
00010 //
00011 // Module: EvtGen/EvtRadiativeBaryonicPenguins.hh
00012 //
00013 // Description:Implementation of the decay B- -> lambda p_bar gamma according to
00014 // Cheng, Yang; hep-ph/0201015
00015 //
00016 // Modification history:
00017 //
00018 //    JFS     December 16th, 2003         Module created
00019 //
00020 //------------------------------------------------------------------------
00021 #include "EvtGenBase/EvtPatches.hh"
00022 
00023 #include "EvtGenModels/EvtLambdaP_BarGamma.hh"
00024 #include "EvtGenBase/EvtGammaMatrix.hh"
00025 #include "EvtGenBase/EvtDiracSpinor.hh"
00026 #include "EvtGenBase/EvtSpinType.hh"
00027 #include "EvtGenBase/EvtDiracParticle.hh"
00028 #include "EvtGenBase/EvtPhotonParticle.hh"
00029 
00030 EvtLambdaP_BarGamma::EvtLambdaP_BarGamma() :
00031   _mLambdab   ( 5.624),            // Lambda_b mass
00032   _mLambda0    ( 1.115684),         // Lambda0 mass
00033   _c7Eff       ( -0.31),            // Wilson coefficient                                      
00034   _mb          (  4.4),             // running b mass                                          
00035   _mV          (  5.42),            // pole mass vector current                                
00036   _mA          (  5.86),            // pole mass axial current                                 
00037   _GF          (  1.166E-5),        // Fermi constant                                          
00038   _gLambdab   (  16),               // coupling constant Lambda_b -> B- p
00039   _e0          (  1),               // electromagnetic coupling (+1)                           
00040   _g1          (  0.64),            // heavy-light form factors at q_mSqare                    
00041   _g2          ( -0.10),     
00042   _f1          (  0.64),
00043   _f2          ( -0.31),
00044   _VtbVtsStar ( 0.038)            // |V_tb V_ts^*|
00045 {
00046 }
00047 
00048 
00049 
00050 void EvtLambdaP_BarGamma::getName(std::string& modelName){
00051     modelName = "B_TO_LAMBDA_PBAR_GAMMA";
00052 }
00053 
00054 EvtDecayBase* EvtLambdaP_BarGamma::clone(){
00055     return new EvtLambdaP_BarGamma;
00056 }
00057 
00058 void EvtLambdaP_BarGamma::init() {
00059     // no arguments, daughter lambda p_bar gamma
00060     checkNArg(0);
00061     checkNDaug(3);
00062     
00063     checkSpinParent(EvtSpinType::SCALAR);
00064     checkSpinDaughter(0, EvtSpinType::DIRAC);
00065     checkSpinDaughter(1, EvtSpinType::DIRAC);
00066     checkSpinDaughter(2, EvtSpinType::PHOTON);    
00067 }
00068 
00069 
00070 // initialize phasespace and calculate the amplitude
00071 void EvtLambdaP_BarGamma::decay(EvtParticle* p) {
00072     EvtComplex I(0, 1);
00073     
00074     p->initializePhaseSpace(getNDaug(), getDaugs());
00075     
00076     EvtDiracParticle* theLambda = static_cast<EvtDiracParticle*>(p->getDaug(0));
00077     EvtVector4R lambdaMomentum = theLambda->getP4Lab();
00078     
00079     EvtDiracParticle* theAntiP = static_cast<EvtDiracParticle*>(p->getDaug(1));
00080     
00081     EvtPhotonParticle* thePhoton = static_cast<EvtPhotonParticle*>(p->getDaug(2));
00082     EvtVector4R photonMomentum = thePhoton->getP4Lab();     // get momentum in the same frame
00083         
00084     // loop over all possible spin states
00085     for (int i=0; i<2; ++i) {
00086       EvtDiracSpinor lambdaPol = theLambda->spParent(i);
00087       for (int j=0; j<2; ++j)  {
00088         EvtDiracSpinor antiP_Pol = theAntiP->spParent(j);
00089         for (int k=0; k<2; ++k) {
00090           EvtVector4C photonPol = thePhoton->epsParentPhoton(k); // one of two possible polarization states
00091           EvtGammaMatrix photonGamma; // sigma[mu][nu] * epsilon[mu] * k[nu] (watch lower indices)
00092           for (int mu=0; mu<4; ++mu)
00093             for (int nu=0; nu<4; ++nu)
00094               photonGamma += EvtGammaMatrix::sigmaLower(mu, nu) * photonPol.get(mu) * photonMomentum.get(nu);
00095           
00096           EvtComplex amp = 
00097             -I*_gLambdab * lambdaPol.adjoint() * ((constA()*EvtGammaMatrix::id() + constB()*EvtGammaMatrix::g5())
00098                                                    * photonGamma * (slash(lambdaMomentum) + slash(photonMomentum) + _mLambdab*EvtGammaMatrix::id())
00099                                                    / ((lambdaMomentum + photonMomentum)*(lambdaMomentum + photonMomentum) - _mLambdab*_mLambdab)
00100                                                    * EvtGammaMatrix::g5() * antiP_Pol);
00101           // use of parentheses so I do not have to define EvtDiracSpinor*EvtGammaMatrix, which shouldn't be defined to prevent errors in indexing
00102           vertex(i, j, k, amp);
00103         }
00104       }
00105     }
00106 }
00107 
00108 void EvtLambdaP_BarGamma::initProbMax()
00109 {
00110     // setProbMax(1);
00111     setProbMax(9.0000E-13); // found by trial and error
00112 }
00113 
00114 // form factors at 0
00115 const double EvtLambdaP_BarGamma::f0(double fqm, int n){
00116     return fqm * pow(1 - pow(_mLambdab - _mLambda0, 2) / (_mV * _mV), n);
00117 }
00118 
00119 const double EvtLambdaP_BarGamma::g0(double gqm, int n){
00120     return gqm * pow(1 - pow(_mLambdab - _mLambda0, 2) / (_mA * _mA), n);
00121 }
00122 
00123 
00124 const double EvtLambdaP_BarGamma::constA(){
00125     return _GF/sqrt(2.) * _e0 / (8 * EvtConst::pi*EvtConst::pi) * 2 * _c7Eff * _mb * _VtbVtsStar
00126         * (f0(_f1) - f0(_f2));
00127 }
00128 
00129 const double EvtLambdaP_BarGamma::constB(){
00130     return _GF/sqrt(2.) * _e0 / (8 * EvtConst::pi*EvtConst::pi) * 2 * _c7Eff * _mb * _VtbVtsStar
00131         * (g0(_g1) - (_mLambdab - _mLambda0) / (_mLambdab + _mLambda0) * g0(_g2));
00132 }

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