BOSS 7.0.7
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtLambdaP_BarGamma.cc
Go to the documentation of this file.
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) 2003 Caltech
10//
11// Module: EvtGen/EvtRadiativeBaryonicPenguins.hh
12//
13// Description:Implementation of the decay B- -> lambda p_bar gamma according to
14// Cheng, Yang; hep-ph/0201015
15//
16// Modification history:
17//
18// JFS December 16th, 2003 Module created
19//
20//------------------------------------------------------------------------
22
29
31 _mLambdab ( 5.624), // Lambda_b mass
32 _mLambda0 ( 1.115684), // Lambda0 mass
33 _c7Eff ( -0.31), // Wilson coefficient
34 _mb ( 4.4), // running b mass
35 _mV ( 5.42), // pole mass vector current
36 _mA ( 5.86), // pole mass axial current
37 _GF ( 1.166E-5), // Fermi constant
38 _gLambdab ( 16), // coupling constant Lambda_b -> B- p
39 _e0 ( 1), // electromagnetic coupling (+1)
40 _g1 ( 0.64), // heavy-light form factors at q_mSqare
41 _g2 ( -0.10),
42 _f1 ( 0.64),
43 _f2 ( -0.31),
44 _VtbVtsStar ( 0.038) // |V_tb V_ts^*|
45{
46}
47
48
49
50void EvtLambdaP_BarGamma::getName(std::string& modelName){
51 modelName = "B_TO_LAMBDA_PBAR_GAMMA";
52}
53
55 return new EvtLambdaP_BarGamma;
56}
57
59 // no arguments, daughter lambda p_bar gamma
60 checkNArg(0);
61 checkNDaug(3);
62
67}
68
69
70// initialize phasespace and calculate the amplitude
72 EvtComplex I(0, 1);
73
75
76 EvtDiracParticle* theLambda = static_cast<EvtDiracParticle*>(p->getDaug(0));
77 EvtVector4R lambdaMomentum = theLambda->getP4Lab();
78
79 EvtDiracParticle* theAntiP = static_cast<EvtDiracParticle*>(p->getDaug(1));
80
81 EvtPhotonParticle* thePhoton = static_cast<EvtPhotonParticle*>(p->getDaug(2));
82 EvtVector4R photonMomentum = thePhoton->getP4Lab(); // get momentum in the same frame
83
84 // loop over all possible spin states
85 for (int i=0; i<2; ++i) {
86 EvtDiracSpinor lambdaPol = theLambda->spParent(i);
87 for (int j=0; j<2; ++j) {
88 EvtDiracSpinor antiP_Pol = theAntiP->spParent(j);
89 for (int k=0; k<2; ++k) {
90 EvtVector4C photonPol = thePhoton->epsParentPhoton(k); // one of two possible polarization states
91 EvtGammaMatrix photonGamma; // sigma[mu][nu] * epsilon[mu] * k[nu] (watch lower indices)
92 for (int mu=0; mu<4; ++mu)
93 for (int nu=0; nu<4; ++nu)
94 photonGamma += EvtGammaMatrix::sigmaLower(mu, nu) * photonPol.get(mu) * photonMomentum.get(nu);
95
96 EvtComplex amp =
97 -I*_gLambdab * lambdaPol.adjoint() * ((constA()*EvtGammaMatrix::id() + constB()*EvtGammaMatrix::g5())
98 * photonGamma * (slash(lambdaMomentum) + slash(photonMomentum) + _mLambdab*EvtGammaMatrix::id())
99 / ((lambdaMomentum + photonMomentum)*(lambdaMomentum + photonMomentum) - _mLambdab*_mLambdab)
100 * EvtGammaMatrix::g5() * antiP_Pol);
101 // use of parentheses so I do not have to define EvtDiracSpinor*EvtGammaMatrix, which shouldn't be defined to prevent errors in indexing
102 vertex(i, j, k, amp);
103 }
104 }
105 }
106}
107
109{
110 // setProbMax(1);
111 setProbMax(9.0000E-13); // found by trial and error
112}
113
114// form factors at 0
115const double EvtLambdaP_BarGamma::f0(double fqm, int n){
116 return fqm * pow(1 - pow(_mLambdab - _mLambda0, 2) / (_mV * _mV), n);
117}
118
119const double EvtLambdaP_BarGamma::g0(double gqm, int n){
120 return gqm * pow(1 - pow(_mLambdab - _mLambda0, 2) / (_mA * _mA), n);
121}
122
123
124const double EvtLambdaP_BarGamma::constA(){
125 return _GF/sqrt(2.) * _e0 / (8 * EvtConst::pi*EvtConst::pi) * 2 * _c7Eff * _mb * _VtbVtsStar
126 * (f0(_f1) - f0(_f2));
127}
128
129const double EvtLambdaP_BarGamma::constB(){
130 return _GF/sqrt(2.) * _e0 / (8 * EvtConst::pi*EvtConst::pi) * 2 * _c7Eff * _mb * _VtbVtsStar
131 * (g0(_g1) - (_mLambdab - _mLambda0) / (_mLambdab + _mLambda0) * g0(_g2));
132}
const DifComplex I
EvtGammaMatrix slash(const EvtVector4C &p)
static const double pi
Definition: EvtConst.hh:28
void vertex(const EvtComplex &amp)
Definition: EvtDecayAmp.hh:37
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
void setProbMax(double prbmx)
void checkNDaug(int d1, int d2=-1)
EvtId * getDaugs()
Definition: EvtDecayBase.hh:65
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
EvtDiracSpinor spParent(int i) const
EvtDiracSpinor adjoint() const
static const EvtGammaMatrix & sigmaLower(unsigned int mu, unsigned int nu)
static const EvtGammaMatrix & id()
static const EvtGammaMatrix & g5()
void getName(std::string &name)
EvtDecayBase * clone()
void decay(EvtParticle *p)
EvtVector4R getP4Lab()
Definition: EvtParticle.cc:685
EvtParticle * getDaug(int i)
Definition: EvtParticle.cc:85
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
EvtVector4C epsParentPhoton(int i)
const EvtComplex & get(int) const
Definition: EvtVector4C.hh:131
double get(int i) const
Definition: EvtVector4R.hh:179