cepgen is hosted by Hepforge, IPPP Durham
CepGen 1.2.5
Central exclusive processes event generator
Loading...
Searching...
No Matches
ResonanceObject.h
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#ifndef CepGen_Physics_ResonanceObject_h
20#define CepGen_Physics_ResonanceObject_h
21
23
24namespace cepgen {
26 class ResonanceObject : public SteeredObject<ResonanceObject> {
27 public:
28 explicit ResonanceObject(const ParametersList&);
29
31
34 explicit KinematicsBlock(double w2, double q2, double mp2, double mpi2, double meta2);
35 static inline double mom(double energy, double mass2) { return std::sqrt(std::max(0., energy * energy - mass2)); }
36 const double w2, w;
37 const double q2;
38 // equivalent photon energy-momentum
39 const double k, kcm;
40 const double ppicm;
41 const double ppi2cm;
42 const double petacm;
43 };
44
45 protected:
46 inline double kr() const { return 0.5 * (mass_ * mass_ - mp2_) / mp_; }
47 inline double pcmr(double m2) const { return KinematicsBlock::mom(ecmr(m2), m2); }
48 double ecmr(double m2) const;
49 inline double kcmr() const { return ecmr(0.); }
50 double partialWidth(const KinematicsBlock&) const;
51 double photonWidth(const KinematicsBlock&) const;
52
54 const struct BranchingRatios : SteeredObject<BranchingRatios> {
55 explicit BranchingRatios(const ParametersList&);
56
58
60 inline bool valid() const { return singlepi + doublepi + eta == 1.; }
61
62 double singlepi;
63 double doublepi;
64 double eta;
65 } br_;
66 const int ang_mom_;
67 const double x0_;
68 const double mass_;
69 const double width_;
70 const double mp_;
71 const double mp2_;
72 const double mpi2_;
73 const double meta2_;
74 const double x02_;
75 };
76} // namespace cepgen
77
78#endif
A description object for parameters collection.
General definition for a resonance.
const double x0_
damping parameter
double partialWidth(const KinematicsBlock &) const
partial widths for all decays
const double width_
full width, in GeV
const double meta2_
eta meson squared mass, in GeV^2/c^4
const double mp2_
proton squared mass, in GeV^2/c^4
cepgen::ResonanceObject::BranchingRatios br_
double photonWidth(const KinematicsBlock &) const
virtual photon width
const double x02_
squared damping parameter
double pcmr(double m2) const
static ParametersDescription description()
const double mass_
mass, in GeV/c2
const double mpi2_
pion squared mass, in GeV^2/c^4
const int ang_mom_
meson angular momentum
const double mp_
proton mass, in GeV/c^2
double ecmr(double m2) const
Base user-steerable object.
Common namespace for this Monte Carlo generator.
Branching ratios container for resonance decay into single, double pion or eta states.
bool valid() const
Sanity check to ensure only three decay channels are opened.
double doublepi
double pion branching ratio
static ParametersDescription description()
double eta
eta meson branching ratio
double singlepi
single pion branching ratio
Kinematics needed for threshold relativistic B-W.
const double ppi2cm
two-pion momentum
static double mom(double energy, double mass2)
const double petacm
eta meson momentum