cepgen
is hosted by
Hepforge
,
IPPP Durham
CepGen
1.2.5
Central exclusive processes event generator
Loading...
Searching...
No Matches
ResonanceObject.cpp
Go to the documentation of this file.
1
/*
2
* CepGen: a central exclusive processes event generator
3
* Copyright (C) 2022-2024 Laurent Forthomme
4
*
5
* This program is free software: you can redistribute it and/or modify
6
* it under the terms of the GNU General Public License as published by
7
* the Free Software Foundation, either version 3 of the License, or
8
* any later version.
9
*
10
* This program is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
* GNU General Public License for more details.
14
*
15
* You should have received a copy of the GNU General Public License
16
* along with this program. If not, see <http://www.gnu.org/licenses/>.
17
*/
18
19
#include <cmath>
20
21
#include "
CepGen/Physics/PDG.h
"
22
#include "
CepGen/Physics/ResonanceObject.h
"
23
#include "
CepGen/Physics/Utils.h
"
24
#include "
CepGen/Utils/Message.h
"
25
26
namespace
cepgen
{
28
ResonanceObject::ResonanceObject
(
const
ParametersList
& params)
29
:
SteeredObject
(params),
30
br_(steer<
ParametersList
>(
"branchingRatios"
)),
31
ang_mom_(steer<int>(
"angularMomentum"
)),
32
x0_(steer<double>(
"x0"
)),
33
mass_(steer<double>(
"mass"
)),
34
width_(steer<double>(
"width"
)),
35
mp_(
PDG
::get().mass(
PDG
::proton)),
36
mp2_(mp_ * mp_),
37
mpi2_(std::pow(
PDG
::get().mass(
PDG
::piZero), 2)),
38
meta2_(std::pow(
PDG
::get().mass(
PDG
::eta), 2)),
39
x02_(x0_ * x0_) {}
40
41
ParametersDescription
ResonanceObject::description
() {
42
auto
desc =
ParametersDescription
();
43
desc.setDescription(
"Set of physical properties for one resonance"
);
44
desc.add<
ParametersDescription
>(
"branchingRatios"
,
BranchingRatios::description
());
45
desc.
add
<
int
>(
"angularMomentum"
, 0).setDescription(
"meson angular momentum"
);
46
desc.add<
double
>(
"x0"
, 0.).setDescription(
"damping parameter"
);
47
desc.add<
double
>(
"mass"
, 0.).setDescription(
"mass, in GeV/c^2"
);
48
desc.add<
double
>(
"width"
, 0.).setDescription(
"full width, in GeV"
);
49
return
desc;
50
}
51
52
double
ResonanceObject::ecmr
(
double
m2)
const
{
return
mass_
== 0 ? 0. :
utils::energyFromW
(
mass_
,
mp2_
, m2); }
53
54
double
ResonanceObject::partialWidth
(
const
KinematicsBlock
& kin)
const
{
55
double
par_width = 0.;
56
if
(
br_
.
singlepi
> 0.) {
57
//----- 1-pion decay mode
58
const
double
pcmrpi =
pcmr
(
mpi2_
);
59
par_width +=
br_
.
singlepi
* (std::pow(kin.
ppicm
/ pcmrpi, 2. *
ang_mom_
+ 1.) *
60
std::pow((pcmrpi * pcmrpi +
x02_
) / (kin.
ppicm
* kin.
ppicm
+
x02_
),
ang_mom_
));
61
}
62
if
(
br_
.
doublepi
> 0.) {
63
//----- 2-pion decay mode
64
const
double
pcmrpi2 =
pcmr
(4. *
mpi2_
);
65
par_width +=
66
br_
.
doublepi
*
67
(std::pow(kin.
ppi2cm
/ pcmrpi2, 2. * (
ang_mom_
+ 2.)) *
68
std::pow((pcmrpi2 * pcmrpi2 +
x02_
) / (kin.
ppi2cm
* kin.
ppi2cm
+
x02_
),
ang_mom_
+ 2) * kin.
w
/
mass_
);
69
}
70
if
(
br_
.
eta
> 0.) {
71
//----- eta decay mode
72
const
double
pcmreta =
pcmr
(
meta2_
);
73
par_width +=
br_
.
eta
* (std::pow(kin.
petacm
/ pcmreta, 2. *
ang_mom_
+ 1.) *
74
std::pow((pcmreta * pcmreta +
x02_
) / (kin.
petacm
* kin.
petacm
+
x02_
),
ang_mom_
));
75
}
76
return
width_
* par_width;
77
}
78
79
double
ResonanceObject::photonWidth
(
const
KinematicsBlock
& kin)
const
{
80
const
double
kcm2 = kin.
kcm
* kin.
kcm
;
81
const
double
kcmr2 = std::pow(
kcmr
(), 2);
82
return
width_
* kcm2 / kcmr2 * (kcmr2 +
x02_
) / (kcm2 +
x02_
);
83
}
84
86
ResonanceObject::KinematicsBlock::KinematicsBlock
(
double
w2,
double
q2,
double
mp2,
double
mpi2,
double
meta2)
87
: w2(w2),
88
w(std::sqrt(w2)),
89
q2(q2),
90
k(0.5 * (w2 - mp2) / std::sqrt(mp2)),
91
kcm(utils::energyFromW(w, mp2, 0.)),
92
ppicm(mom(utils::energyFromW(w, mp2, mpi2), mpi2)),
93
ppi2cm(mom(utils::energyFromW(w, mp2, 4. * mpi2), 4. * mpi2)),
94
petacm(mom(utils::energyFromW(w, mp2, meta2), meta2)) {}
95
96
ResonanceObject::BranchingRatios::BranchingRatios
(
const
ParametersList
& params)
97
:
SteeredObject
(params),
98
singlepi(
steer
<double>(
"singlePi"
)),
99
doublepi(
steer
<double>(
"doublePi"
)),
100
eta(
steer
<double>(
"eta"
)) {
101
if
(!
valid
())
102
CG_WARNING
(
"ResonanceObject:BranchingRatios"
)
103
<<
"Invalid branching fractions. Sum = "
<< (
singlepi
+
doublepi
+
eta
) <<
" != 1."
;
104
}
105
106
ParametersDescription
ResonanceObject::BranchingRatios::description
() {
107
auto
desc =
ParametersDescription
();
108
desc.add<
double
>(
"singlePi"
, 0.).setDescription(
"branching fraction for a resonance decay into a single pion"
);
109
desc.add<
double
>(
"doublePi"
, 0.).setDescription(
"branching fraction for a resonance decay into a pion pair"
);
110
desc.add<
double
>(
"eta"
, 0.).setDescription(
"branching fraction for a resonance decay into an eta"
);
111
return
desc;
112
}
113
}
// namespace cepgen
Message.h
CG_WARNING
#define CG_WARNING(mod)
Definition
Message.h:228
PDG.h
Utils.h
ResonanceObject.h
cepgen::PDG
A singleton holding all physics constants associated to particles.
Definition
PDG.h:28
cepgen::ParametersDescription
A description object for parameters collection.
Definition
ParametersDescription.h:26
cepgen::ParametersDescription::add
ParametersDescription & add(const std::string &name, const T &def)
Add the description to a new parameter.
Definition
ParametersDescription.h:59
cepgen::ParametersList
Definition
ParametersList.h:52
cepgen::ResonanceObject::partialWidth
double partialWidth(const KinematicsBlock &) const
partial widths for all decays
Definition
ResonanceObject.cpp:54
cepgen::ResonanceObject::width_
const double width_
full width, in GeV
Definition
ResonanceObject.h:69
cepgen::ResonanceObject::meta2_
const double meta2_
eta meson squared mass, in GeV^2/c^4
Definition
ResonanceObject.h:73
cepgen::ResonanceObject::mp2_
const double mp2_
proton squared mass, in GeV^2/c^4
Definition
ResonanceObject.h:71
cepgen::ResonanceObject::ResonanceObject
ResonanceObject(const ParametersList &)
General definition for a resonance.
Definition
ResonanceObject.cpp:28
cepgen::ResonanceObject::br_
cepgen::ResonanceObject::BranchingRatios br_
cepgen::ResonanceObject::photonWidth
double photonWidth(const KinematicsBlock &) const
virtual photon width
Definition
ResonanceObject.cpp:79
cepgen::ResonanceObject::kcmr
double kcmr() const
Definition
ResonanceObject.h:49
cepgen::ResonanceObject::x02_
const double x02_
squared damping parameter
Definition
ResonanceObject.h:74
cepgen::ResonanceObject::pcmr
double pcmr(double m2) const
Definition
ResonanceObject.h:47
cepgen::ResonanceObject::description
static ParametersDescription description()
Definition
ResonanceObject.cpp:41
cepgen::ResonanceObject::mass_
const double mass_
mass, in GeV/c2
Definition
ResonanceObject.h:68
cepgen::ResonanceObject::mpi2_
const double mpi2_
pion squared mass, in GeV^2/c^4
Definition
ResonanceObject.h:72
cepgen::ResonanceObject::ang_mom_
const int ang_mom_
meson angular momentum
Definition
ResonanceObject.h:66
cepgen::ResonanceObject::ecmr
double ecmr(double m2) const
Definition
ResonanceObject.cpp:52
cepgen::Steerable::steer
T steer(const std::string &key) const
Retrieve a parameters as previously steered.
Definition
Steerable.h:39
cepgen::SteeredObject
Base user-steerable object.
Definition
SteeredObject.h:41
cepgen::utils::energyFromW
double energyFromW(double w, double mp2, double m2)
Compute energy from mass and emitted mass.
Definition
Utils.cpp:47
cepgen
Common namespace for this Monte Carlo generator.
Definition
CommandLineHandler.cpp:36
cepgen::ResonanceObject::BranchingRatios::valid
bool valid() const
Sanity check to ensure only three decay channels are opened.
Definition
ResonanceObject.h:60
cepgen::ResonanceObject::BranchingRatios::doublepi
double doublepi
double pion branching ratio
Definition
ResonanceObject.h:63
cepgen::ResonanceObject::BranchingRatios::BranchingRatios
BranchingRatios(const ParametersList &)
Definition
ResonanceObject.cpp:96
cepgen::ResonanceObject::BranchingRatios::description
static ParametersDescription description()
Definition
ResonanceObject.cpp:106
cepgen::ResonanceObject::BranchingRatios::eta
double eta
eta meson branching ratio
Definition
ResonanceObject.h:64
cepgen::ResonanceObject::BranchingRatios::singlepi
double singlepi
single pion branching ratio
Definition
ResonanceObject.h:62
cepgen::ResonanceObject::KinematicsBlock
Kinematics needed for threshold relativistic B-W.
Definition
ResonanceObject.h:33
cepgen::ResonanceObject::KinematicsBlock::KinematicsBlock
KinematicsBlock(double w2, double q2, double mp2, double mpi2, double meta2)
kinematics needed for threshold relativistic B-W
Definition
ResonanceObject.cpp:86
cepgen::ResonanceObject::KinematicsBlock::kcm
const double kcm
Definition
ResonanceObject.h:39
cepgen::ResonanceObject::KinematicsBlock::ppi2cm
const double ppi2cm
two-pion momentum
Definition
ResonanceObject.h:41
cepgen::ResonanceObject::KinematicsBlock::w
const double w
Definition
ResonanceObject.h:36
cepgen::ResonanceObject::KinematicsBlock::petacm
const double petacm
eta meson momentum
Definition
ResonanceObject.h:42
cepgen::ResonanceObject::KinematicsBlock::ppicm
const double ppicm
pion momentum
Definition
ResonanceObject.h:40
CepGen
Physics
ResonanceObject.cpp
Generated on Mon Jul 29 2024 for CepGen by
1.9.7