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
EvtRareLbToLllFFGutsche.cpp
Go to the documentation of this file.
1
2
/***********************************************************************
3
* Copyright 1998-2022 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/EvtRareLbToLllFFGutsche.hh
"
22
23
#include "
EvtGenBase/EvtIdSet.hh
"
24
#include "
EvtGenBase/EvtPDL.hh
"
25
#include "
EvtGenBase/EvtVector4R.hh
"
26
27
//-----------------------------------------------------------------------------
28
// Implementation file for class : EvtRareLbToLllFFGutsche
29
//
30
// 2014-10-21 : Michal Kreps
31
//-----------------------------------------------------------------------------
32
33
//=============================================================================
34
// Standard constructor, initializes variables
35
//=============================================================================
36
37
void
EvtRareLbToLllFFGutsche::init
()
38
{
39
m_Vconsts
[0][0] = 0.107;
40
m_Vconsts
[0][1] = 2.27;
41
m_Vconsts
[0][2] = 1.367;
42
m_Vconsts
[1][0] = 0.043;
43
m_Vconsts
[1][1] = 2.411;
44
m_Vconsts
[1][2] = 1.531;
45
m_Vconsts
[2][0] = -0.003;
46
m_Vconsts
[2][1] = 2.815;
47
m_Vconsts
[2][2] = 2.041;
48
49
m_Aconsts
[0][0] = 0.104;
50
m_Aconsts
[0][1] = 2.232;
51
m_Aconsts
[0][2] = 1.328;
52
m_Aconsts
[1][0] = -0.003;
53
m_Aconsts
[1][1] = 2.955;
54
m_Aconsts
[1][2] = 3.620;
55
m_Aconsts
[2][0] = -0.052;
56
m_Aconsts
[2][1] = 2.437;
57
m_Aconsts
[2][2] = 1.559;
58
59
m_TVconsts
[0][0] = -0.043;
60
m_TVconsts
[0][1] = 2.411;
61
m_TVconsts
[0][2] = 1.531;
62
m_TVconsts
[1][0] = -0.105;
63
m_TVconsts
[1][1] = 2.27118;
64
m_TVconsts
[1][2] = 1.36776;
65
m_TVconsts
[2][0] = 0;
// Not used anywhere
66
m_TVconsts
[2][1] = 0;
67
m_TVconsts
[2][2] = 0;
68
69
m_TAconsts
[0][0] = 0.003;
70
m_TAconsts
[0][1] = 2.955;
71
m_TAconsts
[0][2] = 3.620;
72
m_TAconsts
[1][0] = -0.105;
73
m_TAconsts
[1][1] = 2.233;
74
m_TAconsts
[1][2] = 1.328;
75
m_TAconsts
[2][0] = 0;
// Not used anywhere
76
m_TAconsts
[2][1] = 0;
77
m_TAconsts
[2][2] = 0;
78
79
EvtGenReport
(
EVTGEN_INFO
,
"EvtGen"
)
80
<<
" EvtRareLbToLll is using form factors from arXiv:1301.3737 "
81
<< std::endl;
82
}
83
84
//=============================================================================
85
86
void
EvtRareLbToLllFFGutsche::getFF
(
const
EvtParticle
& parent,
87
const
EvtParticle
&
lambda
,
88
EvtRareLbToLllFFBase::FormFactors
& FF )
const
89
{
90
// Find the FF information for this particle, start by setting all to zero
91
FF.
areZero
();
92
93
/*
94
if ( ! ( m_Parents.contains(parent->getId()) &&
95
m_Daughters.contains(lambda->getId()) ) )
96
{
97
EvtGenReport(EVTGEN_ERROR,"EvtGen") << " EvtRareLbToLllFFGutsche: Unknown mother and/or daughter. " << std::endl;
98
return;
99
}
100
*/
101
102
const
double
m1 = parent.
getP4
().
mass
();
103
const
double
m2 =
lambda
.getP4().mass();
104
EvtVector4R
p4parent;
105
p4parent.
set
( parent.
mass
(), 0, 0, 0 );
106
const
double
q2 = ( p4parent -
lambda
.getP4() ).mass2();
107
const
double
m21 = m2 / m1;
108
const
double
shat = q2 / m1 / m1;
109
110
double
fV[3];
111
double
fA[3];
112
for
(
int
i = 0; i <= 2; ++i ) {
113
fV[i] =
formFactorParametrization
( shat,
m_Vconsts
[i][0],
114
m_Vconsts
[i][1],
m_Vconsts
[i][2] );
115
fA[i] =
formFactorParametrization
( shat,
m_Aconsts
[i][0],
116
m_Aconsts
[i][1],
m_Aconsts
[i][2] );
117
}
118
double
fTV[2];
119
double
fTA[2];
120
for
(
int
i = 0; i <= 1; ++i ) {
121
fTV[i] =
formFactorParametrization
( shat,
m_TVconsts
[i][0],
122
m_TVconsts
[i][1],
m_TVconsts
[i][2] );
123
fTA[i] =
formFactorParametrization
( shat,
m_TAconsts
[i][0],
124
m_TAconsts
[i][1],
m_TAconsts
[i][2] );
125
}
126
127
// Both v^2==v'^2==1 by definition
128
FF.
m_F
[0] = fV[0] + fV[1] * ( 1 + m21 );
129
FF.
m_F
[1] = fV[2] - fV[1];
130
FF.
m_F
[2] = -m21 * ( fV[1] + fV[2] );
131
132
FF.
m_G
[0] = fA[0] - fA[1] * ( 1 - m21 );
133
FF.
m_G
[1] = fA[2] - fA[1];
134
FF.
m_G
[2] = -m21 * ( +fA[1] + fA[2] );
135
136
FF.
m_FT
[0] = fTV[1] * ( m1 + m2 ) + fTV[0] * ( q2 / m1 );
137
FF.
m_FT
[1] = +fTV[0] * ( m2 - m1 ) - fTV[1] * m1;
138
FF.
m_FT
[2] = m2 * ( fTV[0] - fTV[1] ) - fTV[0] * m21 * m2;
139
140
FF.
m_GT
[0] = -fTA[1] * ( m1 - m2 ) + fTA[0] * ( q2 / m1 );
141
FF.
m_GT
[1] = -fTA[1] * m1 + fTA[0] * ( m1 + m2 );
142
FF.
m_GT
[2] = -fTA[0] * m2 * m21 - m2 * ( fTA[0] + fTA[1] );
143
144
return
;
145
}
146
147
double
EvtRareLbToLllFFGutsche::formFactorParametrization
(
const
double
s,
148
const
double
f0,
149
const
double
a,
150
const
double
b )
const
151
{
152
return
f0 / ( 1 - a * s + b * s * s );
153
}
lambda
double lambda(double q, double m1, double m2)
Definition
EvtFlatQ2.cpp:30
EvtIdSet.hh
EvtPDL.hh
EvtRareLbToLllFFGutsche.hh
EvtGenReport
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=nullptr)
Definition
EvtReport.cpp:32
EVTGEN_INFO
@ EVTGEN_INFO
Definition
EvtReport.hh:52
EvtVector4R.hh
EvtParticle
Definition
EvtParticle.hh:45
EvtParticle::getP4
const EvtVector4R & getP4() const
Definition
EvtParticle.cpp:144
EvtParticle::mass
double mass() const
Definition
EvtParticle.cpp:159
EvtRareLbToLllFFBase::FormFactors
Definition
EvtRareLbToLllFFBase.hh:41
EvtRareLbToLllFFBase::FormFactors::m_G
double m_G[4]
Definition
EvtRareLbToLllFFBase.hh:50
EvtRareLbToLllFFBase::FormFactors::m_FT
double m_FT[4]
Definition
EvtRareLbToLllFFBase.hh:51
EvtRareLbToLllFFBase::FormFactors::m_F
double m_F[4]
Definition
EvtRareLbToLllFFBase.hh:49
EvtRareLbToLllFFBase::FormFactors::m_GT
double m_GT[4]
Definition
EvtRareLbToLllFFBase.hh:52
EvtRareLbToLllFFBase::FormFactors::areZero
void areZero()
Definition
EvtRareLbToLllFFBase.cpp:28
EvtRareLbToLllFFGutsche::m_Vconsts
double m_Vconsts[3][3]
Definition
EvtRareLbToLllFFGutsche.hh:52
EvtRareLbToLllFFGutsche::formFactorParametrization
double formFactorParametrization(const double s, const double f0, const double a, const double b) const
Definition
EvtRareLbToLllFFGutsche.cpp:147
EvtRareLbToLllFFGutsche::init
void init() override
Definition
EvtRareLbToLllFFGutsche.cpp:37
EvtRareLbToLllFFGutsche::m_TAconsts
double m_TAconsts[3][3]
Definition
EvtRareLbToLllFFGutsche.hh:55
EvtRareLbToLllFFGutsche::m_Aconsts
double m_Aconsts[3][3]
Definition
EvtRareLbToLllFFGutsche.hh:53
EvtRareLbToLllFFGutsche::getFF
void getFF(const EvtParticle &parent, const EvtParticle &lambda, EvtRareLbToLllFFBase::FormFactors &FF) const override
Definition
EvtRareLbToLllFFGutsche.cpp:86
EvtRareLbToLllFFGutsche::m_TVconsts
double m_TVconsts[3][3]
Definition
EvtRareLbToLllFFGutsche.hh:54
EvtVector4R
Definition
EvtVector4R.hh:29
EvtVector4R::mass
double mass() const
Definition
EvtVector4R.cpp:48
EvtVector4R::set
void set(int i, double d)
Definition
EvtVector4R.hh:168
Generated by
1.17.0