BOSS 8.0.0
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 )
32 , // Lambda_b mass
33 _mLambda0( 1.115684 )
34 , // Lambda0 mass
35 _c7Eff( -0.31 )
36 , // Wilson coefficient
37 _mb( 4.4 )
38 , // running b mass
39 _mV( 5.42 )
40 , // pole mass vector current
41 _mA( 5.86 )
42 , // pole mass axial current
43 _GF( 1.166E-5 )
44 , // Fermi constant
45 _gLambdab( 16 )
46 , // coupling constant Lambda_b -> B- p
47 _e0( 1 )
48 , // electromagnetic coupling (+1)
49 _g1( 0.64 )
50 , // heavy-light form factors at q_mSqare
51 _g2( -0.10 )
52 , _f1( 0.64 )
53 , _f2( -0.31 )
54 , _VtbVtsStar( 0.038 ) // |V_tb V_ts^*|
55{}
56
57void EvtLambdaP_BarGamma::getName( std::string& modelName ) {
58 modelName = "B_TO_LAMBDA_PBAR_GAMMA";
59}
60
62
64 // no arguments, daughter lambda p_bar gamma
65 checkNArg( 0 );
66 checkNDaug( 3 );
67
72}
73
74// initialize phasespace and calculate the amplitude
76 EvtComplex I( 0, 1 );
77
79
80 EvtDiracParticle* theLambda = static_cast<EvtDiracParticle*>( p->getDaug( 0 ) );
81 EvtVector4R lambdaMomentum = theLambda->getP4Lab();
82
83 EvtDiracParticle* theAntiP = static_cast<EvtDiracParticle*>( p->getDaug( 1 ) );
84
85 EvtPhotonParticle* thePhoton = static_cast<EvtPhotonParticle*>( p->getDaug( 2 ) );
86 EvtVector4R photonMomentum = thePhoton->getP4Lab(); // get momentum in the same frame
87
88 // loop over all possible spin states
89 for ( int i = 0; i < 2; ++i )
90 {
91 EvtDiracSpinor lambdaPol = theLambda->spParent( i );
92 for ( int j = 0; j < 2; ++j )
93 {
94 EvtDiracSpinor antiP_Pol = theAntiP->spParent( j );
95 for ( int k = 0; k < 2; ++k )
96 {
97 EvtVector4C photonPol =
98 thePhoton->epsParentPhoton( k ); // one of two possible polarization states
99 EvtGammaMatrix photonGamma; // sigma[mu][nu] * epsilon[mu] * k[nu] (watch lower
100 // indices)
101 for ( int mu = 0; mu < 4; ++mu )
102 for ( int nu = 0; nu < 4; ++nu )
103 photonGamma += EvtGammaMatrix::sigmaLower( mu, nu ) * photonPol.get( mu ) *
104 photonMomentum.get( nu );
105
106 EvtComplex amp =
107 -I * _gLambdab * lambdaPol.adjoint() *
108 ( ( constA() * EvtGammaMatrix::id() + constB() * EvtGammaMatrix::g5() ) *
109 photonGamma *
110 ( slash( lambdaMomentum ) + slash( photonMomentum ) +
111 _mLambdab * EvtGammaMatrix::id() ) /
112 ( ( lambdaMomentum + photonMomentum ) * ( lambdaMomentum + photonMomentum ) -
113 _mLambdab * _mLambdab ) *
114 EvtGammaMatrix::g5() * antiP_Pol );
115 // use of parentheses so I do not have to define EvtDiracSpinor*EvtGammaMatrix, which
116 // shouldn't be defined to prevent errors in indexing
117 vertex( i, j, k, amp );
118 }
119 }
120 }
121}
122
124 // setProbMax(1);
125 setProbMax( 9.0000E-13 ); // found by trial and error
126}
127
128// form factors at 0
129const double EvtLambdaP_BarGamma::f0( double fqm, int n ) {
130 return fqm * pow( 1 - pow( _mLambdab - _mLambda0, 2 ) / ( _mV * _mV ), n );
131}
132
133const double EvtLambdaP_BarGamma::g0( double gqm, int n ) {
134 return gqm * pow( 1 - pow( _mLambdab - _mLambda0, 2 ) / ( _mA * _mA ), n );
135}
136
137const double EvtLambdaP_BarGamma::constA() {
138 return _GF / sqrt( 2. ) * _e0 / ( 8 * EvtConst::pi * EvtConst::pi ) * 2 * _c7Eff * _mb *
139 _VtbVtsStar * ( f0( _f1 ) - f0( _f2 ) );
140}
141
142const double EvtLambdaP_BarGamma::constB() {
143 return _GF / sqrt( 2. ) * _e0 / ( 8 * EvtConst::pi * EvtConst::pi ) * 2 * _c7Eff * _mb *
144 _VtbVtsStar *
145 ( g0( _g1 ) - ( _mLambdab - _mLambda0 ) / ( _mLambdab + _mLambda0 ) * g0( _g2 ) );
146}
const Int_t n
EvtGammaMatrix slash(const EvtVector4C &p)
const DifComplex I
static const double pi
Definition EvtConst.hh:27
void vertex(const EvtComplex &amp)
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()
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)
void decay(EvtParticle *p)
EvtVector4R getP4Lab()
EvtParticle * getDaug(int i)
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
EvtVector4C epsParentPhoton(int i)
const EvtComplex & get(int) const
double get(int i) const