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
EvtGenBase
EvtDalitzReso.hh
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
#ifndef __EVTDALITZRESO_HH__
22
#define __EVTDALITZRESO_HH__
23
24
#include "
EvtGenBase/EvtBlattWeisskopf.hh
"
25
#include "
EvtGenBase/EvtComplex.hh
"
26
#include "
EvtGenBase/EvtCyclic3.hh
"
27
#include "
EvtGenBase/EvtDalitzPoint.hh
"
28
#include "
EvtGenBase/EvtDecayAmp.hh
"
29
#include "
EvtGenBase/EvtFlatte.hh
"
30
#include "
EvtGenBase/EvtSpinType.hh
"
31
#include "
EvtGenBase/EvtTwoBodyVertex.hh
"
32
33
#include <map>
34
#include <string>
35
#include <vector>
36
37
using
std::map;
38
using
std::vector;
39
40
class
EvtBlattWeisskopf
;
41
42
class
EvtDalitzReso
final {
43
public
:
44
// Numerator type
45
enum
NumType
46
{
47
NBW
= 0,
48
RBW_ZEMACH
= 1,
49
RBW_KUEHN
= 2,
50
RBW_CLEO
= 3,
51
RBW_ZEMACH2
= 4,
52
GS_CLEO
= 5,
53
K_MATRIX
= 6,
54
RBW_CLEO_ZEMACH
= 7,
55
GS_CLEO_ZEMACH
= 8,
56
LASS
= 9,
57
K_MATRIX_I
= 10,
58
K_MATRIX_II
= 11,
59
GAUSS_CLEO
= 12,
60
GAUSS_CLEO_ZEMACH
= 13,
61
FLATTE
= 14,
62
NON_RES
= 15,
63
NON_RES_LIN
= 16,
64
NON_RES_EXP
= 17
65
};
66
67
// Coupling type
68
// ChgPion : pi+ pi-
69
// NeuPion : pi0 pi0
70
// Pion : 0.5*[(pi+ pi-) + (pi0 pi0)]
71
// ChgKaon : K+ K-
72
// NeuKaon : K0 K0
73
// Kaon : 0.5*[(K+ K-) + (K0 K0)]
74
// EtaPion : eta pi0
75
enum
CouplingType
76
{
77
Undefined
= 0,
78
PicPic
= 1,
79
PizPiz
,
80
PiPi
,
81
KcKc
,
82
KzKz
,
83
KK
,
84
EtaPic
,
85
EtaPiz
,
86
PicPicKK
,
87
WA76
88
};
89
90
EvtDalitzReso
() :
m_typeN
(
NON_RES
){};
91
92
EvtDalitzReso
(
const
EvtDalitzPlot
& dp,
EvtCyclic3::Pair
pairRes,
93
NumType
typeN,
double
alpha = 0.0 ) :
94
m_dp
( dp ),
m_pairRes
( pairRes ),
m_typeN
( typeN ),
m_alpha
( alpha ){};
95
96
EvtDalitzReso
(
const
EvtDalitzPlot
& dp,
EvtCyclic3::Pair
pairAng,
97
EvtCyclic3::Pair
pairRes,
EvtSpinType::spintype
spin,
98
double
m0,
double
g0,
NumType
typeN,
double
f_b = 0.0,
99
double
f_d = 1.5 );
100
101
EvtDalitzReso
(
const
EvtDalitzPlot
& dp,
EvtCyclic3::Pair
pairAng,
102
EvtCyclic3::Pair
pairRes,
EvtSpinType::spintype
spin,
103
double
m0,
double
g0,
NumType
typeN,
double
m0_mix,
104
double
g0_mix,
double
delta_mix,
EvtComplex
amp_mix );
105
106
EvtDalitzReso
(
const
EvtDalitzPlot
& dp,
EvtCyclic3::Pair
pairAng,
107
EvtCyclic3::Pair
pairRes,
EvtSpinType::spintype
spin,
108
double
m0,
NumType
typeN,
double
g1,
double
g2,
109
CouplingType
coupling2 );
110
111
// K-matrix
112
EvtDalitzReso
(
const
EvtDalitzPlot
& dp,
EvtCyclic3::Pair
pairRes,
113
std::string nameIndex,
NumType
typeN,
EvtComplex
fr12prod,
114
EvtComplex
fr13prod,
EvtComplex
fr14prod,
115
EvtComplex
fr15prod,
double
s0prod );
116
117
// LASS
118
EvtDalitzReso
(
const
EvtDalitzPlot
& dp,
EvtCyclic3::Pair
pairRes,
double
m0,
119
double
g0,
double
a,
double
r,
double
B,
double
phiB,
double
R,
120
double
phiR,
double
cutoff = -1,
bool
scaleByMOverQ =
false
);
121
122
//Flatte
123
EvtDalitzReso
(
const
EvtDalitzPlot
& dp,
EvtCyclic3::Pair
pairRes,
double
m0 );
124
125
EvtDalitzReso
*
clone
()
const
{
return
new
EvtDalitzReso
( *
this
); }
126
127
EvtComplex
evaluate
(
const
EvtDalitzPoint
& p )
const
;
128
129
void
addFlatteParam
(
const
EvtFlatteParam
& param )
130
{
131
m_flatteParams
.push_back( param );
132
}
133
134
private
:
135
EvtComplex
psFactor
(
const
double
ma,
const
double
mb,
const
double
m )
const
;
136
EvtComplex
psFactor
(
const
double
ma1,
const
double
mb1,
const
double
ma2,
137
const
double
mb2,
const
double
m )
const
;
138
EvtComplex
propGauss
(
const
double
m0,
const
double
s0,
const
double
m )
const
;
139
EvtComplex
propBreitWigner
(
const
double
m0,
const
double
g0,
140
const
double
m )
const
;
141
EvtComplex
propBreitWignerRel
(
const
double
m0,
const
double
g0,
142
const
double
m )
const
;
143
EvtComplex
propBreitWignerRel
(
const
double
m0,
const
EvtComplex
& g0,
144
const
double
m )
const
;
145
EvtComplex
propBreitWignerRelCoupled
(
const
double
m0,
const
EvtComplex
& g1,
146
const
EvtComplex
& g2,
147
const
double
m )
const
;
148
EvtComplex
propGounarisSakurai
(
const
double
m0,
const
double
g0,
149
const
double
k0,
const
double
m,
150
const
double
g,
const
double
k )
const
;
151
inline
double
GS_f
(
const
double
m0,
const
double
g0,
const
double
k0,
152
const
double
m,
const
double
k )
const
;
153
inline
double
GS_h
(
const
double
m,
const
double
k )
const
;
154
inline
double
GS_dhods
(
const
double
m0,
const
double
k0 )
const
;
155
inline
double
GS_d
(
const
double
m0,
const
double
k0 )
const
;
156
157
EvtComplex
numerator
(
const
EvtDalitzPoint
& p,
const
EvtTwoBodyVertex
& vb,
158
const
EvtTwoBodyVertex
& vd,
const
EvtTwoBodyKine
& kb,
159
const
EvtTwoBodyKine
& kd )
const
;
160
double
angDep
(
const
EvtDalitzPoint
& p )
const
;
161
EvtComplex
mixFactor
(
const
EvtComplex
& prop,
162
const
EvtComplex
& prop_mix )
const
;
163
EvtComplex
Fvector
(
const
double
s,
const
int
index )
const
;
164
EvtComplex
lass
(
const
EvtTwoBodyKine
& kd,
const
EvtTwoBodyVertex
& vd )
const
;
165
EvtComplex
flatte
(
const
double
s )
const
;
166
167
inline
EvtComplex
sqrtCplx
(
const
double
in )
const
168
{
169
return
( in > 0 ) ?
EvtComplex
( sqrt( in ), 0 )
170
:
EvtComplex
( 0, sqrt( -in ) );
171
}
172
173
// Dalitz plot
174
EvtDalitzPlot
m_dp
;
175
176
// Pairing indices:
177
EvtCyclic3::Pair
m_pairAng
;
// angular
178
EvtCyclic3::Pair
m_pairRes
;
// resonance
179
180
// Spin
181
EvtSpinType::spintype
m_spin
;
182
183
// Numerator type
184
NumType
m_typeN
;
185
186
// Nominal mass and width
187
double
m_m0
,
m_g0
;
188
189
// Daughter masses
190
double
m_massFirst
,
m_massSecond
;
191
192
// variables for electromagnetic mass mixing
193
double
m_m0_mix
,
m_g0_mix
,
m_delta_mix
;
194
EvtComplex
m_amp_mix
;
195
196
// variables for coupled Breit-Wigner
197
double
m_g1
,
m_g2
;
198
CouplingType
m_coupling2
;
199
200
// variables for Blatt-Weisskopf form factors
201
double
m_f_b
,
m_f_d
;
202
203
// K-matrix
204
int
m_kmatrix_index
;
205
EvtComplex
m_fr12prod
,
m_fr13prod
,
m_fr14prod
,
m_fr15prod
;
206
double
m_s0prod
;
207
208
// LASS
209
double
m_a
;
210
double
m_r
;
211
double
m_Blass
;
212
double
m_phiB
;
213
double
m_R
;
214
double
m_phiR
;
215
double
m_cutoff
;
216
bool
m_scaleByMOverQ
;
217
218
//Nonresonant
219
double
m_alpha
;
220
221
// Flatte
222
std::vector<EvtFlatteParam>
m_flatteParams
;
223
};
224
225
#endif
EvtBlattWeisskopf.hh
EvtComplex.hh
EvtCyclic3.hh
EvtDalitzPoint.hh
EvtDecayAmp.hh
EvtFlatte.hh
EvtSpinType.hh
EvtTwoBodyVertex.hh
EvtBlattWeisskopf
Definition
EvtBlattWeisskopf.hh:27
EvtComplex
Definition
EvtComplex.hh:29
EvtDalitzPlot
Definition
EvtDalitzPlot.hh:30
EvtDalitzPoint
Definition
EvtDalitzPoint.hh:38
EvtDalitzReso::m_delta_mix
double m_delta_mix
Definition
EvtDalitzReso.hh:193
EvtDalitzReso::m_typeN
NumType m_typeN
Definition
EvtDalitzReso.hh:184
EvtDalitzReso::sqrtCplx
EvtComplex sqrtCplx(const double in) const
Definition
EvtDalitzReso.hh:167
EvtDalitzReso::m_kmatrix_index
int m_kmatrix_index
Definition
EvtDalitzReso.hh:204
EvtDalitzReso::addFlatteParam
void addFlatteParam(const EvtFlatteParam ¶m)
Definition
EvtDalitzReso.hh:129
EvtDalitzReso::propGauss
EvtComplex propGauss(const double m0, const double s0, const double m) const
Definition
EvtDalitzReso.cpp:502
EvtDalitzReso::m_flatteParams
std::vector< EvtFlatteParam > m_flatteParams
Definition
EvtDalitzReso.hh:222
EvtDalitzReso::m_dp
EvtDalitzPlot m_dp
Definition
EvtDalitzReso.hh:174
EvtDalitzReso::m_cutoff
double m_cutoff
Definition
EvtDalitzReso.hh:215
EvtDalitzReso::m_phiB
double m_phiB
Definition
EvtDalitzReso.hh:212
EvtDalitzReso::m_R
double m_R
Definition
EvtDalitzReso.hh:213
EvtDalitzReso::propBreitWigner
EvtComplex propBreitWigner(const double m0, const double g0, const double m) const
Definition
EvtDalitzReso.cpp:511
EvtDalitzReso::m_amp_mix
EvtComplex m_amp_mix
Definition
EvtDalitzReso.hh:194
EvtDalitzReso::lass
EvtComplex lass(const EvtTwoBodyKine &kd, const EvtTwoBodyVertex &vd) const
Definition
EvtDalitzReso.cpp:1020
EvtDalitzReso::m_f_d
double m_f_d
Definition
EvtDalitzReso.hh:201
EvtDalitzReso::m_g2
double m_g2
Definition
EvtDalitzReso.hh:197
EvtDalitzReso::CouplingType
CouplingType
Definition
EvtDalitzReso.hh:76
EvtDalitzReso::KK
@ KK
Definition
EvtDalitzReso.hh:83
EvtDalitzReso::PiPi
@ PiPi
Definition
EvtDalitzReso.hh:80
EvtDalitzReso::PizPiz
@ PizPiz
Definition
EvtDalitzReso.hh:79
EvtDalitzReso::EtaPic
@ EtaPic
Definition
EvtDalitzReso.hh:84
EvtDalitzReso::WA76
@ WA76
Definition
EvtDalitzReso.hh:87
EvtDalitzReso::KzKz
@ KzKz
Definition
EvtDalitzReso.hh:82
EvtDalitzReso::EtaPiz
@ EtaPiz
Definition
EvtDalitzReso.hh:85
EvtDalitzReso::KcKc
@ KcKc
Definition
EvtDalitzReso.hh:81
EvtDalitzReso::PicPicKK
@ PicPicKK
Definition
EvtDalitzReso.hh:86
EvtDalitzReso::PicPic
@ PicPic
Definition
EvtDalitzReso.hh:78
EvtDalitzReso::Undefined
@ Undefined
Definition
EvtDalitzReso.hh:77
EvtDalitzReso::propBreitWignerRelCoupled
EvtComplex propBreitWignerRelCoupled(const double m0, const EvtComplex &g1, const EvtComplex &g2, const double m) const
Definition
EvtDalitzReso.cpp:533
EvtDalitzReso::m_spin
EvtSpinType::spintype m_spin
Definition
EvtDalitzReso.hh:181
EvtDalitzReso::propGounarisSakurai
EvtComplex propGounarisSakurai(const double m0, const double g0, const double k0, const double m, const double g, const double k) const
Definition
EvtDalitzReso.cpp:542
EvtDalitzReso::m_g1
double m_g1
Definition
EvtDalitzReso.hh:197
EvtDalitzReso::m_f_b
double m_f_b
Definition
EvtDalitzReso.hh:201
EvtDalitzReso::numerator
EvtComplex numerator(const EvtDalitzPoint &p, const EvtTwoBodyVertex &vb, const EvtTwoBodyVertex &vd, const EvtTwoBodyKine &kb, const EvtTwoBodyKine &kd) const
Definition
EvtDalitzReso.cpp:587
EvtDalitzReso::NumType
NumType
Definition
EvtDalitzReso.hh:46
EvtDalitzReso::FLATTE
@ FLATTE
Definition
EvtDalitzReso.hh:61
EvtDalitzReso::RBW_ZEMACH
@ RBW_ZEMACH
Definition
EvtDalitzReso.hh:48
EvtDalitzReso::GS_CLEO
@ GS_CLEO
Definition
EvtDalitzReso.hh:52
EvtDalitzReso::NON_RES_EXP
@ NON_RES_EXP
Definition
EvtDalitzReso.hh:64
EvtDalitzReso::GAUSS_CLEO
@ GAUSS_CLEO
Definition
EvtDalitzReso.hh:59
EvtDalitzReso::RBW_CLEO
@ RBW_CLEO
Definition
EvtDalitzReso.hh:50
EvtDalitzReso::RBW_ZEMACH2
@ RBW_ZEMACH2
Definition
EvtDalitzReso.hh:51
EvtDalitzReso::K_MATRIX_II
@ K_MATRIX_II
Definition
EvtDalitzReso.hh:58
EvtDalitzReso::RBW_KUEHN
@ RBW_KUEHN
Definition
EvtDalitzReso.hh:49
EvtDalitzReso::NON_RES_LIN
@ NON_RES_LIN
Definition
EvtDalitzReso.hh:63
EvtDalitzReso::K_MATRIX
@ K_MATRIX
Definition
EvtDalitzReso.hh:53
EvtDalitzReso::GAUSS_CLEO_ZEMACH
@ GAUSS_CLEO_ZEMACH
Definition
EvtDalitzReso.hh:60
EvtDalitzReso::K_MATRIX_I
@ K_MATRIX_I
Definition
EvtDalitzReso.hh:57
EvtDalitzReso::RBW_CLEO_ZEMACH
@ RBW_CLEO_ZEMACH
Definition
EvtDalitzReso.hh:54
EvtDalitzReso::GS_CLEO_ZEMACH
@ GS_CLEO_ZEMACH
Definition
EvtDalitzReso.hh:55
EvtDalitzReso::NON_RES
@ NON_RES
Definition
EvtDalitzReso.hh:62
EvtDalitzReso::LASS
@ LASS
Definition
EvtDalitzReso.hh:56
EvtDalitzReso::NBW
@ NBW
Definition
EvtDalitzReso.hh:47
EvtDalitzReso::m_fr13prod
EvtComplex m_fr13prod
Definition
EvtDalitzReso.hh:205
EvtDalitzReso::m_m0_mix
double m_m0_mix
Definition
EvtDalitzReso.hh:193
EvtDalitzReso::m_coupling2
CouplingType m_coupling2
Definition
EvtDalitzReso.hh:198
EvtDalitzReso::m_pairRes
EvtCyclic3::Pair m_pairRes
Definition
EvtDalitzReso.hh:178
EvtDalitzReso::flatte
EvtComplex flatte(const double s) const
Definition
EvtDalitzReso.cpp:1056
EvtDalitzReso::clone
EvtDalitzReso * clone() const
Definition
EvtDalitzReso.hh:125
EvtDalitzReso::m_m0
double m_m0
Definition
EvtDalitzReso.hh:187
EvtDalitzReso::m_phiR
double m_phiR
Definition
EvtDalitzReso.hh:214
EvtDalitzReso::GS_h
double GS_h(const double m, const double k) const
Definition
EvtDalitzReso.cpp:567
EvtDalitzReso::m_fr14prod
EvtComplex m_fr14prod
Definition
EvtDalitzReso.hh:205
EvtDalitzReso::GS_d
double GS_d(const double m0, const double k0) const
Definition
EvtDalitzReso.cpp:579
EvtDalitzReso::GS_f
double GS_f(const double m0, const double g0, const double k0, const double m, const double k) const
Definition
EvtDalitzReso.cpp:554
EvtDalitzReso::m_massFirst
double m_massFirst
Definition
EvtDalitzReso.hh:190
EvtDalitzReso::EvtDalitzReso
EvtDalitzReso()
Definition
EvtDalitzReso.hh:90
EvtDalitzReso::m_scaleByMOverQ
bool m_scaleByMOverQ
Definition
EvtDalitzReso.hh:216
EvtDalitzReso::m_fr15prod
EvtComplex m_fr15prod
Definition
EvtDalitzReso.hh:205
EvtDalitzReso::m_s0prod
double m_s0prod
Definition
EvtDalitzReso.hh:206
EvtDalitzReso::mixFactor
EvtComplex mixFactor(const EvtComplex &prop, const EvtComplex &prop_mix) const
Definition
EvtDalitzReso.cpp:682
EvtDalitzReso::angDep
double angDep(const EvtDalitzPoint &p) const
Definition
EvtDalitzReso.cpp:666
EvtDalitzReso::m_g0_mix
double m_g0_mix
Definition
EvtDalitzReso.hh:193
EvtDalitzReso::m_massSecond
double m_massSecond
Definition
EvtDalitzReso.hh:190
EvtDalitzReso::propBreitWignerRel
EvtComplex propBreitWignerRel(const double m0, const double g0, const double m) const
Definition
EvtDalitzReso.cpp:518
EvtDalitzReso::EvtDalitzReso
EvtDalitzReso(const EvtDalitzPlot &dp, EvtCyclic3::Pair pairRes, NumType typeN, double alpha=0.0)
Definition
EvtDalitzReso.hh:92
EvtDalitzReso::m_a
double m_a
Definition
EvtDalitzReso.hh:209
EvtDalitzReso::m_Blass
double m_Blass
Definition
EvtDalitzReso.hh:211
EvtDalitzReso::m_g0
double m_g0
Definition
EvtDalitzReso.hh:187
EvtDalitzReso::m_fr12prod
EvtComplex m_fr12prod
Definition
EvtDalitzReso.hh:205
EvtDalitzReso::m_alpha
double m_alpha
Definition
EvtDalitzReso.hh:219
EvtDalitzReso::psFactor
EvtComplex psFactor(const double ma, const double mb, const double m) const
Definition
EvtDalitzReso.cpp:480
EvtDalitzReso::evaluate
EvtComplex evaluate(const EvtDalitzPoint &p) const
Definition
EvtDalitzReso.cpp:308
EvtDalitzReso::m_r
double m_r
Definition
EvtDalitzReso.hh:210
EvtDalitzReso::Fvector
EvtComplex Fvector(const double s, const int index) const
Definition
EvtDalitzReso.cpp:690
EvtDalitzReso::m_pairAng
EvtCyclic3::Pair m_pairAng
Definition
EvtDalitzReso.hh:177
EvtDalitzReso::GS_dhods
double GS_dhods(const double m0, const double k0) const
Definition
EvtDalitzReso.cpp:573
EvtFlatteParam
Definition
EvtFlatte.hh:33
EvtSpinType::spintype
spintype
Definition
EvtSpinType.hh:29
EvtTwoBodyKine
Definition
EvtTwoBodyKine.hh:28
EvtTwoBodyVertex
Definition
EvtTwoBodyVertex.hh:32
EvtCyclic3::Pair
Pair
Definition
EvtCyclic3.hh:37
Generated by
1.17.0