EvtGen
2.2.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
Toggle main menu visibility
Loading...
Searching...
No Matches
src
EvtGenModels
EvtLambdaP_BarGamma.cpp
Go to the documentation of this file.
1
2
/***********************************************************************
3
* Copyright 1998-2020 CERN for the benefit of the EvtGen authors *
4
* *
5
* This file is part of EvtGen. *
6
* *
7
* EvtGen is free software: you can redistribute it and/or modify *
8
* it under the terms of the GNU General Public License as published by *
9
* the Free Software Foundation, either version 3 of the License, or *
10
* (at your option) any later version. *
11
* *
12
* EvtGen is distributed in the hope that it will be useful, *
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15
* GNU General Public License for more details. *
16
* *
17
* You should have received a copy of the GNU General Public License *
18
* along with EvtGen. If not, see <https://www.gnu.org/licenses/>. *
19
***********************************************************************/
20
21
#include "
EvtGenModels/EvtLambdaP_BarGamma.hh
"
22
23
#include "
EvtGenBase/EvtDiracParticle.hh
"
24
#include "
EvtGenBase/EvtDiracSpinor.hh
"
25
#include "
EvtGenBase/EvtGammaMatrix.hh
"
26
#include "
EvtGenBase/EvtPhotonParticle.hh
"
27
#include "
EvtGenBase/EvtSpinType.hh
"
28
29
#include <stdlib.h>
30
using
std::cout;
31
using
std::endl;
32
33
EvtLambdaP_BarGamma::EvtLambdaP_BarGamma
() :
34
m_mLambdab
( 5.624 ),
// Lambda_b mass
35
m_mLambda0
( 1.115684 ),
// Lambda0 mass
36
m_c7Eff
( -0.31 ),
// Wilson coefficient
37
m_mb
( 4.4 ),
// running b mass
38
m_mV
( 5.42 ),
// pole mass vector current
39
m_mA
( 5.86 ),
// pole mass axial current
40
m_GF
( 1.166E-5 ),
// Fermi constant
41
m_gLambdab
( 16 ),
// coupling constant Lambda_b -> B- p
42
m_e0
( 1 ),
// electromagnetic coupling (+1)
43
m_g1
( 0.64 ),
// heavy-light form factors at q_mSqare
44
m_g2
( -0.10 ),
45
m_f1
( 0.64 ),
46
m_f2
( -0.31 ),
47
m_VtbVtsStar
( 0.038 )
// |V_tb V_ts^*|
48
{
49
}
50
51
std::string
EvtLambdaP_BarGamma::getName
()
const
52
{
53
return
"B_TO_LAMBDA_PBAR_GAMMA"
;
54
}
55
56
EvtDecayBase
*
EvtLambdaP_BarGamma::clone
()
const
57
{
58
return
new
EvtLambdaP_BarGamma
;
59
}
60
61
void
EvtLambdaP_BarGamma::init
()
62
{
63
// no arguments, daughter lambda p_bar gamma
64
checkNArg
( 0 );
65
checkNDaug
( 3 );
66
67
checkSpinParent
(
EvtSpinType::SCALAR
);
68
checkSpinDaughter
( 0,
EvtSpinType::DIRAC
);
69
checkSpinDaughter
( 1,
EvtSpinType::DIRAC
);
70
checkSpinDaughter
( 2,
EvtSpinType::PHOTON
);
71
}
72
73
// initialize phasespace and calculate the amplitude
74
void
EvtLambdaP_BarGamma::decay
(
EvtParticle
* p )
75
{
76
EvtComplex
I
( 0, 1 );
77
78
p->
initializePhaseSpace
(
getNDaug
(),
getDaugs
() );
79
80
EvtDiracParticle
* theLambda =
static_cast<
EvtDiracParticle
*
>
(
81
p->
getDaug
( 0 ) );
82
EvtVector4R
lambdaMomentum = theLambda->
getP4Lab
();
83
84
EvtDiracParticle
* theAntiP =
static_cast<
EvtDiracParticle
*
>
( p->
getDaug
( 1 ) );
85
86
EvtPhotonParticle
* thePhoton =
static_cast<
EvtPhotonParticle
*
>
(
87
p->
getDaug
( 2 ) );
88
EvtVector4R
photonMomentum =
89
thePhoton->
getP4Lab
();
// get momentum in the same frame
90
91
// loop over all possible spin states
92
for
(
int
i = 0; i < 2; ++i ) {
93
EvtDiracSpinor
lambdaPol = theLambda->
spParent
( i );
94
for
(
int
j = 0; j < 2; ++j ) {
95
EvtDiracSpinor
antiP_Pol = theAntiP->
spParent
( j );
96
for
(
int
k = 0; k < 2; ++k ) {
97
EvtVector4C
photonPol = thePhoton->
epsParentPhoton
(
98
k );
// one of two possible polarization states
99
EvtGammaMatrix
photonGamma;
// sigma[mu][nu] * epsilon[mu] * k[nu] (watch lower indices)
100
for
(
int
mu = 0; mu < 4; ++mu )
101
for
(
int
nu = 0; nu < 4; ++nu )
102
photonGamma +=
EvtGammaMatrix::sigmaLower
( mu, nu ) *
103
photonPol.
get
( mu ) *
104
photonMomentum.
get
( nu );
105
106
EvtComplex
amp = -
I
*
m_gLambdab
* lambdaPol.
adjoint
() *
107
( (
constA
() *
EvtGammaMatrix::id
() +
108
constB
() *
EvtGammaMatrix::g5
() ) *
109
photonGamma *
110
(
EvtGenFunctions::slash
( lambdaMomentum ) +
111
EvtGenFunctions::slash
( photonMomentum ) +
112
m_mLambdab
*
EvtGammaMatrix::id
() ) /
113
( ( lambdaMomentum + photonMomentum ) *
114
( lambdaMomentum + photonMomentum ) -
115
m_mLambdab
*
m_mLambdab
) *
116
EvtGammaMatrix::g5
() * antiP_Pol );
117
// use of parentheses so I do not have to define EvtDiracSpinor*EvtGammaMatrix, which shouldn't be defined to prevent errors in indexing
118
119
vertex
( i, j, k, amp );
120
}
121
}
122
}
123
}
124
125
void
EvtLambdaP_BarGamma::initProbMax
()
126
{
127
// setProbMax(1);
128
setProbMax
( 9.0000E-13 );
// found by trial and error
129
}
130
131
// form factors at 0
132
double
EvtLambdaP_BarGamma::f0
(
double
fqm,
int
n )
const
133
{
134
return
fqm *
135
pow( 1 - pow(
m_mLambdab
-
m_mLambda0
, 2 ) / (
m_mV
*
m_mV
), n );
136
}
137
138
double
EvtLambdaP_BarGamma::g0
(
double
gqm,
int
n )
const
139
{
140
return
gqm *
141
pow( 1 - pow(
m_mLambdab
-
m_mLambda0
, 2 ) / (
m_mA
*
m_mA
), n );
142
}
143
144
double
EvtLambdaP_BarGamma::constA
()
const
145
{
146
return
m_GF
/ sqrt( 2. ) *
m_e0
/ ( 8 *
EvtConst::pi
*
EvtConst::pi
) * 2 *
147
m_c7Eff
*
m_mb
*
m_VtbVtsStar
* (
f0
(
m_f1
) -
f0
(
m_f2
) );
148
}
149
150
double
EvtLambdaP_BarGamma::constB
()
const
151
{
152
return
m_GF
/ sqrt( 2. ) *
m_e0
/ ( 8 *
EvtConst::pi
*
EvtConst::pi
) * 2 *
153
m_c7Eff
*
m_mb
*
m_VtbVtsStar
*
154
(
g0
(
m_g1
) - (
m_mLambdab
-
m_mLambda0
) /
155
(
m_mLambdab
+
m_mLambda0
) *
g0
(
m_g2
) );
156
}
I
const EvtComplex I
Definition
EvtBsMuMuKK.cpp:37
EvtDiracParticle.hh
EvtDiracSpinor.hh
EvtGammaMatrix.hh
EvtLambdaP_BarGamma.hh
EvtPhotonParticle.hh
EvtSpinType.hh
EvtComplex
Definition
EvtComplex.hh:29
EvtConst::pi
static const double pi
Definition
EvtConst.hh:26
EvtDecayAmp::vertex
void vertex(const EvtComplex &)
Definition
EvtDecayAmp.hh:37
EvtDecayBase::checkSpinDaughter
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
Definition
EvtDecayBase.cpp:547
EvtDecayBase::EvtDecayBase
EvtDecayBase()=default
EvtDecayBase::getNDaug
int getNDaug() const
Definition
EvtDecayBase.hh:64
EvtDecayBase::checkSpinParent
void checkSpinParent(EvtSpinType::spintype sp)
Definition
EvtDecayBase.cpp:534
EvtDecayBase::setProbMax
void setProbMax(double prbmx)
Definition
EvtDecayBase.cpp:295
EvtDecayBase::checkNDaug
void checkNDaug(int d1, int d2=-1)
Definition
EvtDecayBase.cpp:516
EvtDecayBase::checkNArg
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
Definition
EvtDecayBase.cpp:492
EvtDecayBase::getDaugs
const EvtId * getDaugs() const
Definition
EvtDecayBase.hh:65
EvtDiracParticle
Definition
EvtDiracParticle.hh:30
EvtDiracParticle::spParent
EvtDiracSpinor spParent(int i) const override
Definition
EvtDiracParticle.hh:37
EvtDiracSpinor
Definition
EvtDiracSpinor.hh:32
EvtDiracSpinor::adjoint
EvtDiracSpinor adjoint() const
Definition
EvtDiracSpinor.cpp:327
EvtGammaMatrix
Definition
EvtGammaMatrix.hh:40
EvtGammaMatrix::sigmaLower
static const EvtGammaMatrix & sigmaLower(unsigned int mu, unsigned int nu)
Definition
EvtGammaMatrix.cpp:595
EvtGammaMatrix::id
static const EvtGammaMatrix & id()
Definition
EvtGammaMatrix.cpp:468
EvtGammaMatrix::g5
static const EvtGammaMatrix & g5()
Definition
EvtGammaMatrix.cpp:328
EvtLambdaP_BarGamma::m_GF
double m_GF
Definition
EvtLambdaP_BarGamma.hh:53
EvtLambdaP_BarGamma::m_mA
double m_mA
Definition
EvtLambdaP_BarGamma.hh:52
EvtLambdaP_BarGamma::constB
double constB() const
Definition
EvtLambdaP_BarGamma.cpp:150
EvtLambdaP_BarGamma::m_c7Eff
double m_c7Eff
Definition
EvtLambdaP_BarGamma.hh:49
EvtLambdaP_BarGamma::init
void init() override
Definition
EvtLambdaP_BarGamma.cpp:61
EvtLambdaP_BarGamma::m_mb
double m_mb
Definition
EvtLambdaP_BarGamma.hh:50
EvtLambdaP_BarGamma::initProbMax
void initProbMax() override
Definition
EvtLambdaP_BarGamma.cpp:125
EvtLambdaP_BarGamma::constA
double constA() const
Definition
EvtLambdaP_BarGamma.cpp:144
EvtLambdaP_BarGamma::EvtLambdaP_BarGamma
EvtLambdaP_BarGamma()
Definition
EvtLambdaP_BarGamma.cpp:33
EvtLambdaP_BarGamma::m_mV
double m_mV
Definition
EvtLambdaP_BarGamma.hh:51
EvtLambdaP_BarGamma::getName
std::string getName() const override
Definition
EvtLambdaP_BarGamma.cpp:51
EvtLambdaP_BarGamma::m_f2
double m_f2
Definition
EvtLambdaP_BarGamma.hh:59
EvtLambdaP_BarGamma::m_g2
double m_g2
Definition
EvtLambdaP_BarGamma.hh:57
EvtLambdaP_BarGamma::m_f1
double m_f1
Definition
EvtLambdaP_BarGamma.hh:58
EvtLambdaP_BarGamma::m_gLambdab
double m_gLambdab
Definition
EvtLambdaP_BarGamma.hh:54
EvtLambdaP_BarGamma::m_VtbVtsStar
double m_VtbVtsStar
Definition
EvtLambdaP_BarGamma.hh:60
EvtLambdaP_BarGamma::decay
void decay(EvtParticle *p) override
Definition
EvtLambdaP_BarGamma.cpp:74
EvtLambdaP_BarGamma::m_mLambdab
double m_mLambdab
Definition
EvtLambdaP_BarGamma.hh:47
EvtLambdaP_BarGamma::g0
double g0(const double f_qm, int n=1) const
Definition
EvtLambdaP_BarGamma.cpp:138
EvtLambdaP_BarGamma::f0
double f0(const double f_qm, int n=1) const
Definition
EvtLambdaP_BarGamma.cpp:132
EvtLambdaP_BarGamma::m_mLambda0
double m_mLambda0
Definition
EvtLambdaP_BarGamma.hh:48
EvtLambdaP_BarGamma::clone
EvtDecayBase * clone() const override
Definition
EvtLambdaP_BarGamma.cpp:56
EvtLambdaP_BarGamma::m_g1
double m_g1
Definition
EvtLambdaP_BarGamma.hh:56
EvtLambdaP_BarGamma::m_e0
double m_e0
Definition
EvtLambdaP_BarGamma.hh:55
EvtParticle
Definition
EvtParticle.hh:45
EvtParticle::initializePhaseSpace
double initializePhaseSpace(size_t numdaughter, const EvtId *daughters, bool forceResetMasses=false, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
Definition
EvtParticle.cpp:1100
EvtParticle::getDaug
EvtParticle * getDaug(const int i)
Definition
EvtParticle.hh:173
EvtParticle::getP4Lab
EvtVector4R getP4Lab() const
Definition
EvtParticle.cpp:756
EvtPhotonParticle
Definition
EvtPhotonParticle.hh:30
EvtPhotonParticle::epsParentPhoton
EvtVector4C epsParentPhoton(int i) const override
Definition
EvtPhotonParticle.cpp:48
EvtSpinType::SCALAR
@ SCALAR
Definition
EvtSpinType.hh:30
EvtSpinType::DIRAC
@ DIRAC
Definition
EvtSpinType.hh:33
EvtSpinType::PHOTON
@ PHOTON
Definition
EvtSpinType.hh:34
EvtVector4C
Definition
EvtVector4C.hh:30
EvtVector4C::get
const EvtComplex & get(int) const
Definition
EvtVector4C.hh:125
EvtVector4R
Definition
EvtVector4R.hh:29
EvtVector4R::get
double get(int i) const
Definition
EvtVector4R.hh:163
EvtGenFunctions::slash
EvtGammaMatrix slash(const EvtVector4C &p)
Definition
EvtGammaMatrix.cpp:620
Generated by
1.17.0