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
EvtDalitzPlot.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 EVT_DALITZ_PLOT_HH
22
#define EVT_DALITZ_PLOT_HH
23
24
#include "
EvtGenBase/EvtCyclic3.hh
"
25
#include "
EvtGenBase/EvtDecayMode.hh
"
26
#include "
EvtGenBase/EvtTwoBodyVertex.hh
"
27
28
#include <assert.h>
29
30
class
EvtDalitzPlot
{
31
public
:
32
EvtDalitzPlot
();
33
EvtDalitzPlot
(
double
mA
,
double
mB
,
double
mC
,
double
bigM
,
34
double
ldel = 0.,
double
rdel = 0. );
35
EvtDalitzPlot
(
const
EvtDecayMode
& mode,
double
ldel = 0.,
double
rdel = 0. );
36
bool
operator==
(
const
EvtDalitzPlot
& other )
const
;
37
const
EvtDalitzPlot
*
clone
()
const
;
38
39
// Absolute limits for masses squared in the Dalitz plot
40
// e.g. qAbsMin(0) is the lowest possible value
41
// for m2 of particles {12}
42
43
double
qAbsMin
(
EvtCyclic3::Pair
i )
const
;
44
double
qAbsMax
(
EvtCyclic3::Pair
i )
const
;
45
double
mAbsMin
(
EvtCyclic3::Pair
i )
const
;
46
double
mAbsMax
(
EvtCyclic3::Pair
i )
const
;
47
48
// Absolute limits for Zemach coordinate qres and qhel (approximate)
49
// qHelAbsMin(BC,CA) means absolute minimum for (qCA-qAB)/2.
50
51
double
qResAbsMin
(
EvtCyclic3::Pair
i )
const
;
52
double
qResAbsMax
(
EvtCyclic3::Pair
i )
const
;
53
double
qHelAbsMin
(
EvtCyclic3::Pair
i )
const
;
54
double
qHelAbsMax
(
EvtCyclic3::Pair
i )
const
;
55
inline
double
qSumMin
()
const
{
return
sum
() +
m_ldel
; }
56
inline
double
qSumMax
()
const
{
return
sum
() +
m_rdel
; }
57
inline
bool
fuzzy
()
const
{
return
(
m_rdel
-
m_ldel
!= 0. ); }
58
59
// Find the area of the Dalitz plot by numeric integration. (N bins for variable q(i) are used).
60
// Very large numbers of N can result in a very long calculation. It should not
61
// matter which two pairs f variables are used. The integral should eventually
62
// converge to the same number
63
64
double
getArea
(
int
N = 1000,
EvtCyclic3::Pair
i =
EvtCyclic3::AB
,
65
EvtCyclic3::Pair
j =
EvtCyclic3::BC
)
const
;
66
67
// Limits for masses squared when one mass squared is known
68
69
double
qMin
(
EvtCyclic3::Pair
i,
EvtCyclic3::Pair
j,
double
q
)
const
;
70
double
qMax
(
EvtCyclic3::Pair
i,
EvtCyclic3::Pair
j,
double
q
)
const
;
71
72
// Coordinate transformations
73
74
double
cosTh
(
EvtCyclic3::Pair
i1,
double
q1,
EvtCyclic3::Pair
i2,
75
double
q2 )
const
;
76
double
e
(
EvtCyclic3::Index
i,
EvtCyclic3::Pair
j,
double
q
)
const
;
77
double
p
(
EvtCyclic3::Index
i,
EvtCyclic3::Pair
j,
double
q
)
const
;
78
79
double
q
(
EvtCyclic3::Pair
i1,
double
cosTh
,
EvtCyclic3::Pair
i2,
80
double
q2 )
const
;
81
82
// |J| of transformation of qi to cosTh in the rest-frame of j
83
84
double
jacobian
(
EvtCyclic3::Pair
i,
double
q
)
const
;
85
86
// Given resonance index and mass returns decay
87
// and birth vertices
88
89
EvtTwoBodyVertex
vD
(
EvtCyclic3::Pair
iRes,
double
m0,
int
L )
const
;
90
EvtTwoBodyVertex
vB
(
EvtCyclic3::Pair
iRes,
double
m0,
int
L )
const
;
91
92
// Accessors
93
94
double
sum
()
const
;
95
inline
double
bigM
()
const
{
return
m_bigM
; }
96
inline
double
mA
()
const
{
return
m_mA
; }
97
inline
double
mB
()
const
{
return
m_mB
; }
98
inline
double
mC
()
const
{
return
m_mC
; }
99
double
m
(
EvtCyclic3::Index
i )
const
;
100
101
void
print
()
const
;
102
103
void
sanityCheck
()
const
;
104
105
protected
:
106
// Defines two dimensional dalitz plot
107
108
double
m_mA
;
109
double
m_mB
;
110
double
m_mC
;
111
double
m_bigM
;
112
113
// Defines third dimension, or fuzziness. M^2 + ldel < M^2 < M^2 + rdel
114
115
double
m_ldel
;
116
double
m_rdel
;
117
};
118
119
#endif
EvtCyclic3.hh
EvtDecayMode.hh
EvtTwoBodyVertex.hh
EvtDalitzPlot::m_mA
double m_mA
Definition
EvtDalitzPlot.hh:108
EvtDalitzPlot::sanityCheck
void sanityCheck() const
Definition
EvtDalitzPlot.cpp:73
EvtDalitzPlot::qHelAbsMax
double qHelAbsMax(EvtCyclic3::Pair i) const
Definition
EvtDalitzPlot.cpp:131
EvtDalitzPlot::m_mB
double m_mB
Definition
EvtDalitzPlot.hh:109
EvtDalitzPlot::getArea
double getArea(int N=1000, EvtCyclic3::Pair i=EvtCyclic3::AB, EvtCyclic3::Pair j=EvtCyclic3::BC) const
Definition
EvtDalitzPlot.cpp:211
EvtDalitzPlot::qAbsMin
double qAbsMin(EvtCyclic3::Pair i) const
Definition
EvtDalitzPlot.cpp:100
EvtDalitzPlot::qSumMin
double qSumMin() const
Definition
EvtDalitzPlot.hh:55
EvtDalitzPlot::jacobian
double jacobian(EvtCyclic3::Pair i, double q) const
Definition
EvtDalitzPlot.cpp:289
EvtDalitzPlot::q
double q(EvtCyclic3::Pair i1, double cosTh, EvtCyclic3::Pair i2, double q2) const
Definition
EvtDalitzPlot.cpp:276
EvtDalitzPlot::print
void print() const
Definition
EvtDalitzPlot.cpp:305
EvtDalitzPlot::sum
double sum() const
Definition
EvtDalitzPlot.cpp:95
EvtDalitzPlot::mB
double mB() const
Definition
EvtDalitzPlot.hh:97
EvtDalitzPlot::qSumMax
double qSumMax() const
Definition
EvtDalitzPlot.hh:56
EvtDalitzPlot::m_bigM
double m_bigM
Definition
EvtDalitzPlot.hh:111
EvtDalitzPlot::vD
EvtTwoBodyVertex vD(EvtCyclic3::Pair iRes, double m0, int L) const
Definition
EvtDalitzPlot.cpp:295
EvtDalitzPlot::clone
const EvtDalitzPlot * clone() const
Definition
EvtDalitzPlot.cpp:68
EvtDalitzPlot::m_ldel
double m_ldel
Definition
EvtDalitzPlot.hh:115
EvtDalitzPlot::bigM
double bigM() const
Definition
EvtDalitzPlot.hh:95
EvtDalitzPlot::vB
EvtTwoBodyVertex vB(EvtCyclic3::Pair iRes, double m0, int L) const
Definition
EvtDalitzPlot.cpp:300
EvtDalitzPlot::m
double m(EvtCyclic3::Index i) const
Definition
EvtDalitzPlot.cpp:84
EvtDalitzPlot::qHelAbsMin
double qHelAbsMin(EvtCyclic3::Pair i) const
Definition
EvtDalitzPlot.cpp:124
EvtDalitzPlot::mAbsMax
double mAbsMax(EvtCyclic3::Pair i) const
Definition
EvtDalitzPlot.cpp:143
EvtDalitzPlot::mAbsMin
double mAbsMin(EvtCyclic3::Pair i) const
Definition
EvtDalitzPlot.cpp:138
EvtDalitzPlot::p
double p(EvtCyclic3::Index i, EvtCyclic3::Pair j, double q) const
Definition
EvtDalitzPlot.cpp:263
EvtDalitzPlot::qMin
double qMin(EvtCyclic3::Pair i, EvtCyclic3::Pair j, double q) const
Definition
EvtDalitzPlot.cpp:150
EvtDalitzPlot::qAbsMax
double qAbsMax(EvtCyclic3::Pair i) const
Definition
EvtDalitzPlot.cpp:108
EvtDalitzPlot::mA
double mA() const
Definition
EvtDalitzPlot.hh:96
EvtDalitzPlot::qMax
double qMax(EvtCyclic3::Pair i, EvtCyclic3::Pair j, double q) const
Definition
EvtDalitzPlot.cpp:182
EvtDalitzPlot::operator==
bool operator==(const EvtDalitzPlot &other) const
Definition
EvtDalitzPlot.cpp:58
EvtDalitzPlot::EvtDalitzPlot
EvtDalitzPlot()
Definition
EvtDalitzPlot.cpp:33
EvtDalitzPlot::fuzzy
bool fuzzy() const
Definition
EvtDalitzPlot.hh:57
EvtDalitzPlot::m_mC
double m_mC
Definition
EvtDalitzPlot.hh:110
EvtDalitzPlot::e
double e(EvtCyclic3::Index i, EvtCyclic3::Pair j, double q) const
Definition
EvtDalitzPlot.cpp:243
EvtDalitzPlot::cosTh
double cosTh(EvtCyclic3::Pair i1, double q1, EvtCyclic3::Pair i2, double q2) const
Definition
EvtDalitzPlot.cpp:229
EvtDalitzPlot::mC
double mC() const
Definition
EvtDalitzPlot.hh:98
EvtDalitzPlot::m_rdel
double m_rdel
Definition
EvtDalitzPlot.hh:116
EvtDalitzPlot::qResAbsMin
double qResAbsMin(EvtCyclic3::Pair i) const
Definition
EvtDalitzPlot.cpp:114
EvtDalitzPlot::qResAbsMax
double qResAbsMax(EvtCyclic3::Pair i) const
Definition
EvtDalitzPlot.cpp:119
EvtDecayMode
Definition
EvtDecayMode.hh:30
EvtTwoBodyVertex
Definition
EvtTwoBodyVertex.hh:32
EvtCyclic3::Pair
Pair
Definition
EvtCyclic3.hh:37
EvtCyclic3::AB
@ AB
Definition
EvtCyclic3.hh:42
EvtCyclic3::BC
@ BC
Definition
EvtCyclic3.hh:38
EvtCyclic3::Index
Index
Definition
EvtCyclic3.hh:31
Generated by
1.17.0