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
EvtbTosllScalarAmp.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/EvtbTosllScalarAmp.hh
"
22
23
#include "
EvtGenBase/EvtAmp.hh
"
24
#include "
EvtGenBase/EvtConst.hh
"
25
#include "
EvtGenBase/EvtDiracSpinor.hh
"
26
#include "
EvtGenBase/EvtGenKine.hh
"
27
#include "
EvtGenBase/EvtId.hh
"
28
#include "
EvtGenBase/EvtIdSet.hh
"
29
#include "
EvtGenBase/EvtPDL.hh
"
30
#include "
EvtGenBase/EvtParticle.hh
"
31
#include "
EvtGenBase/EvtReport.hh
"
32
#include "
EvtGenBase/EvtTensor4C.hh
"
33
#include "
EvtGenBase/EvtVector4C.hh
"
34
35
#include "
EvtGenModels/EvtbTosllAmp.hh
"
36
#include "
EvtGenModels/EvtbTosllFF.hh
"
37
38
void
EvtbTosllScalarAmp::CalcAmp
(
EvtParticle
* parent,
EvtAmp
& amp,
39
EvtbTosllFF
* formFactors )
40
{
41
//Add the lepton and neutrino 4 momenta to find q2
42
43
EvtVector4R
q = parent->
getDaug
( 1 )->
getP4
() + parent->
getDaug
( 2 )->
getP4
();
44
double
q2 = ( q.
mass2
() );
45
46
double
fp( 0. ), f0( 0. ), ft( 0. );
47
double
mesonmass = parent->
getDaug
( 0 )->
mass
();
48
double
parentmass = parent->
mass
();
49
50
formFactors->
getScalarFF
( parent->
getId
(), parent->
getDaug
( 0 )->
getId
(),
51
q2, mesonmass, fp, f0, ft );
52
53
EvtId
daught = parent->
getDaug
( 0 )->
getId
();
54
bool
btod =
false
;
55
bool
nnlo =
true
;
56
if
( daught ==
EvtPDL::getId
( std::string(
"pi+"
) ) ||
57
daught ==
EvtPDL::getId
( std::string(
"pi-"
) ) ||
58
daught ==
EvtPDL::getId
( std::string(
"pi0"
) ) ||
59
daught ==
EvtPDL::getId
( std::string(
"eta"
) ) ||
60
daught ==
EvtPDL::getId
( std::string(
"eta'"
) ) )
61
btod =
true
;
62
63
EvtVector4R
p4b;
64
p4b.
set
( parent->
mass
(), 0.0, 0.0, 0.0 );
65
66
EvtVector4C
l11, l12;
67
EvtVector4C
l21, l22;
68
69
EvtVector4C
a11, a12;
70
EvtVector4C
a21, a22;
71
72
EvtId
l_num = parent->
getDaug
( 1 )->
getId
();
73
74
EvtVector4C
T1, T2;
75
76
EvtVector4R
phat = p4b / parentmass;
77
EvtVector4R
qhat = q / parentmass;
78
79
EvtComplex
c7eff =
EvtbTosllAmp::GetC7Eff
( q2, nnlo );
80
EvtComplex
c9eff =
EvtbTosllAmp::GetC9Eff
( q2, nnlo, btod );
81
EvtComplex
c10eff =
EvtbTosllAmp::GetC10Eff
( q2, nnlo );
82
83
//double mbhat=1;
84
double
mbhat = 4.4 / ( parentmass );
85
//double mkhat = 0.15;
86
double
mkhat = mesonmass / ( parentmass );
87
double
shat = q2 / ( parentmass * parentmass );
88
89
double
fm = ( f0 - fp ) * ( 1 - mkhat * mkhat ) / shat;
90
91
EvtComplex
aprime;
92
aprime = c9eff * fp + 2.0 * mbhat * c7eff * ft / ( 1 + mkhat );
93
EvtComplex
bprime;
94
bprime = c9eff * fm - 2 * mbhat * c7eff * ft * ( 1 - mkhat ) / shat;
95
96
EvtComplex
cprime;
97
cprime = c10eff * fp;
98
EvtComplex
dprime;
99
dprime = c10eff * fm;
100
101
static
const
EvtIdSet
leptons{
"e-"
,
"mu-"
,
"tau-"
};
102
static
const
EvtIdSet
antileptons{
"e+"
,
"mu+"
,
"tau+"
};
103
104
if
( leptons.
contains
( l_num ) ) {
105
T1 = aprime * phat + bprime * qhat;
106
T2 = cprime * phat + dprime * qhat;
107
108
l11 =
EvtLeptonVCurrent
( parent->
getDaug
( 1 )->
spParent
( 0 ),
109
parent->
getDaug
( 2 )->
spParent
( 0 ) );
110
l21 =
EvtLeptonVCurrent
( parent->
getDaug
( 1 )->
spParent
( 1 ),
111
parent->
getDaug
( 2 )->
spParent
( 0 ) );
112
l12 =
EvtLeptonVCurrent
( parent->
getDaug
( 1 )->
spParent
( 0 ),
113
parent->
getDaug
( 2 )->
spParent
( 1 ) );
114
l22 =
EvtLeptonVCurrent
( parent->
getDaug
( 1 )->
spParent
( 1 ),
115
parent->
getDaug
( 2 )->
spParent
( 1 ) );
116
a11 =
EvtLeptonACurrent
( parent->
getDaug
( 1 )->
spParent
( 0 ),
117
parent->
getDaug
( 2 )->
spParent
( 0 ) );
118
a21 =
EvtLeptonACurrent
( parent->
getDaug
( 1 )->
spParent
( 1 ),
119
parent->
getDaug
( 2 )->
spParent
( 0 ) );
120
a12 =
EvtLeptonACurrent
( parent->
getDaug
( 1 )->
spParent
( 0 ),
121
parent->
getDaug
( 2 )->
spParent
( 1 ) );
122
a22 =
EvtLeptonACurrent
( parent->
getDaug
( 1 )->
spParent
( 1 ),
123
parent->
getDaug
( 2 )->
spParent
( 1 ) );
124
}
else
{
125
if
( antileptons.
contains
( l_num ) ) {
126
T1 = aprime * phat + bprime * qhat;
127
T2 = cprime * phat + dprime * qhat;
128
129
l11 =
EvtLeptonVCurrent
( parent->
getDaug
( 1 )->
spParent
( 1 ),
130
parent->
getDaug
( 2 )->
spParent
( 1 ) );
131
l21 =
EvtLeptonVCurrent
( parent->
getDaug
( 1 )->
spParent
( 0 ),
132
parent->
getDaug
( 2 )->
spParent
( 1 ) );
133
l12 =
EvtLeptonVCurrent
( parent->
getDaug
( 1 )->
spParent
( 1 ),
134
parent->
getDaug
( 2 )->
spParent
( 0 ) );
135
l22 =
EvtLeptonVCurrent
( parent->
getDaug
( 1 )->
spParent
( 0 ),
136
parent->
getDaug
( 2 )->
spParent
( 0 ) );
137
138
a11 =
EvtLeptonACurrent
( parent->
getDaug
( 1 )->
spParent
( 1 ),
139
parent->
getDaug
( 2 )->
spParent
( 1 ) );
140
a21 =
EvtLeptonACurrent
( parent->
getDaug
( 1 )->
spParent
( 0 ),
141
parent->
getDaug
( 2 )->
spParent
( 1 ) );
142
a12 =
EvtLeptonACurrent
( parent->
getDaug
( 1 )->
spParent
( 1 ),
143
parent->
getDaug
( 2 )->
spParent
( 0 ) );
144
a22 =
EvtLeptonACurrent
( parent->
getDaug
( 1 )->
spParent
( 0 ),
145
parent->
getDaug
( 2 )->
spParent
( 0 ) );
146
147
}
else
{
148
EvtGenReport
(
EVTGEN_ERROR
,
"EvtGen"
) <<
"Wrong lepton number\n"
;
149
}
150
}
151
152
amp.
vertex
( 0, 0, l11 * T1 + a11 * T2 );
153
amp.
vertex
( 0, 1, l12 * T1 + a12 * T2 );
154
amp.
vertex
( 1, 0, l21 * T1 + a21 * T2 );
155
amp.
vertex
( 1, 1, l22 * T1 + a22 * T2 );
156
}
EvtAmp.hh
EvtConst.hh
EvtLeptonACurrent
EvtVector4C EvtLeptonACurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
Definition
EvtDiracSpinor.cpp:223
EvtLeptonVCurrent
EvtVector4C EvtLeptonVCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
Definition
EvtDiracSpinor.cpp:208
EvtDiracSpinor.hh
EvtGenKine.hh
EvtIdSet.hh
EvtId.hh
EvtPDL.hh
EvtParticle.hh
EvtReport.hh
EvtGenReport
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=nullptr)
Definition
EvtReport.cpp:32
EVTGEN_ERROR
@ EVTGEN_ERROR
Definition
EvtReport.hh:49
EvtTensor4C.hh
EvtVector4C.hh
EvtbTosllAmp.hh
EvtbTosllFF.hh
EvtbTosllScalarAmp.hh
EvtAmp
Definition
EvtAmp.hh:29
EvtAmp::vertex
void vertex(const EvtComplex &)
Definition
EvtAmp.cpp:453
EvtComplex
Definition
EvtComplex.hh:29
EvtIdSet
Definition
EvtIdSet.hh:30
EvtIdSet::contains
bool contains(const EvtId &id) const
Definition
EvtIdSet.cpp:46
EvtId
Definition
EvtId.hh:27
EvtPDL::getId
static EvtId getId(const std::string &name)
Definition
EvtPDL.cpp:283
EvtParticle
Definition
EvtParticle.hh:45
EvtParticle::getId
EvtId getId() const
Definition
EvtParticle.cpp:124
EvtParticle::spParent
virtual EvtDiracSpinor spParent(int) const
Definition
EvtParticle.cpp:660
EvtParticle::getP4
const EvtVector4R & getP4() const
Definition
EvtParticle.cpp:144
EvtParticle::getDaug
EvtParticle * getDaug(const int i)
Definition
EvtParticle.hh:173
EvtParticle::mass
double mass() const
Definition
EvtParticle.cpp:159
EvtVector4C
Definition
EvtVector4C.hh:30
EvtVector4R
Definition
EvtVector4R.hh:29
EvtVector4R::mass2
double mass2() const
Definition
EvtVector4R.hh:100
EvtVector4R::set
void set(int i, double d)
Definition
EvtVector4R.hh:168
EvtbTosllAmp::GetC7Eff
EvtComplex GetC7Eff(double q2, bool nnlo=true)
Definition
EvtbTosllAmp.cpp:242
EvtbTosllAmp::GetC10Eff
EvtComplex GetC10Eff(double q2, bool nnlo=true)
Definition
EvtbTosllAmp.cpp:500
EvtbTosllAmp::GetC9Eff
EvtComplex GetC9Eff(double q2, bool nnlo=true, bool btod=false)
Definition
EvtbTosllAmp.cpp:330
EvtbTosllFF
Definition
EvtbTosllFF.hh:28
EvtbTosllFF::getScalarFF
virtual void getScalarFF(EvtId, EvtId, double, double, double &, double &, double &)
Definition
EvtbTosllFF.hh:32
EvtbTosllScalarAmp::CalcAmp
void CalcAmp(EvtParticle *parent, EvtAmp &, EvtbTosllFF *formFactors) override
Definition
EvtbTosllScalarAmp.cpp:38
Generated by
1.17.0