cepgen
is hosted by
Hepforge
,
IPPP Durham
CepGen
1.2.5
Central exclusive processes event generator
Loading...
Searching...
No Matches
KleinElasticHeavyIonKTFlux.cpp
Go to the documentation of this file.
1
/*
2
* CepGen: a central exclusive processes event generator
3
* Copyright (C) 2023-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/FormFactors/Parameterisation.h
"
22
#include "
CepGen/KTFluxes/KTFlux.h
"
23
#include "
CepGen/Modules/FormFactorsFactory.h
"
24
#include "
CepGen/Modules/PartonFluxFactory.h
"
25
#include "
CepGen/Physics/HeavyIon.h
"
26
#include "
CepGen/Physics/PDG.h
"
27
#include "
CepGen/Physics/Utils.h
"
28
29
namespace
cepgen
{
32
class
KleinElasticHeavyIonKTFlux
final :
public
KTFlux
{
33
public
:
34
explicit
KleinElasticHeavyIonKTFlux
(
const
ParametersList
& params)
35
:
KTFlux
(params),
36
hi_(
HeavyIon
::fromPdgId(
steer
<
pdgid_t
>(
"heavyIon"
))),
37
ff_(FormFactorsFactory::get().build(params.get<
ParametersList
>(
"formFactors"
))) {}
38
39
static
ParametersDescription
description
() {
40
auto
desc =
KTFlux::description
();
41
desc.setDescription(
"Elastic photon emission from heavy ion (from Starlight)"
);
42
desc.addAs<
pdgid_t
,
HeavyIon
>(
"heavyIon"
,
HeavyIon::Pb
());
43
desc.add<
ParametersDescription
>(
"formFactors"
, FormFactorsFactory::get().describeParameters(
"HeavyIonDipole"
));
44
return
desc;
45
}
46
47
bool
fragmenting
()
const override
{
return
false
; }
48
double
mass2
()
const override
{
return
hi_.
A
* hi_.
A
*
mp2_
; }
49
pdgid_t
partonPdgId
()
const override
{
return
PDG::photon
; }
50
51
double
fluxQ2
(
double
x,
double
kt2,
double
q2)
const override
{
52
if
(!
x_range_
.
contains
(x))
53
return
0.;
54
55
const
auto
ff = (*ff_)(q2);
56
const
double
ela1 = pow(kt2 / q2 / (1. - x), 2);
57
const
double
ela2 = pow(ff.GE, 2);
58
//const double ela3 = kt2 / q2;
59
const
auto
z = (
unsigned
short)hi_.
Z
;
60
return
prefactor_
* z * z * ela1 * ela2 / q2;
61
}
62
63
double
fluxMX2
(
double
x,
double
kt2,
double
)
const override
{
64
return
fluxQ2
(x, kt2,
utils::kt::q2
(x, kt2,
mass2
()));
65
}
66
67
private
:
68
const
HeavyIon
hi_;
69
std::unique_ptr<formfac::Parameterisation> ff_;
70
};
71
}
// namespace cepgen
72
73
REGISTER_KT_FLUX
(
"KleinElasticHI"
, 101, KleinElasticHeavyIonKTFlux);
FormFactorsFactory.h
Parameterisation.h
HeavyIon.h
KTFlux.h
PDG.h
PartonFluxFactory.h
REGISTER_KT_FLUX
#define REGISTER_KT_FLUX(name, id, obj)
Add a generic KT-factorised flux evaluator builder definition.
Definition
PartonFluxFactory.h:34
Utils.h
cepgen::KTFlux
Definition
KTFlux.h:25
cepgen::KTFlux::description
static ParametersDescription description()
Definition
KTFlux.cpp:26
cepgen::KleinElasticHeavyIonKTFlux
Realistic nuclear form-factor as used in STARLIGHT See .
Definition
KleinElasticHeavyIonKTFlux.cpp:32
cepgen::KleinElasticHeavyIonKTFlux::fragmenting
bool fragmenting() const override
Is initiator particle fragmenting after parton emission?
Definition
KleinElasticHeavyIonKTFlux.cpp:47
cepgen::KleinElasticHeavyIonKTFlux::KleinElasticHeavyIonKTFlux
KleinElasticHeavyIonKTFlux(const ParametersList ¶ms)
Definition
KleinElasticHeavyIonKTFlux.cpp:34
cepgen::KleinElasticHeavyIonKTFlux::fluxMX2
double fluxMX2(double x, double kt2, double) const override
Compute the kt-dependent flux for this x value and remnant mass.
Definition
KleinElasticHeavyIonKTFlux.cpp:63
cepgen::KleinElasticHeavyIonKTFlux::description
static ParametersDescription description()
Definition
KleinElasticHeavyIonKTFlux.cpp:39
cepgen::KleinElasticHeavyIonKTFlux::fluxQ2
double fluxQ2(double x, double kt2, double q2) const override
Compute the kt-dependent flux for this x value and virtuality.
Definition
KleinElasticHeavyIonKTFlux.cpp:51
cepgen::KleinElasticHeavyIonKTFlux::partonPdgId
pdgid_t partonPdgId() const override
Parton PDG identifier.
Definition
KleinElasticHeavyIonKTFlux.cpp:49
cepgen::KleinElasticHeavyIonKTFlux::mass2
double mass2() const override
Initiator particle squared mass (in )
Definition
KleinElasticHeavyIonKTFlux.cpp:48
cepgen::Limits::contains
bool contains(double val, bool exclude_boundaries=false) const
Check if value is inside limits' boundaries.
Definition
Limits.cpp:77
cepgen::PDG::photon
@ photon
Definition
PDG.h:41
cepgen::ParametersDescription
A description object for parameters collection.
Definition
ParametersDescription.h:26
cepgen::ParametersList
Definition
ParametersList.h:52
cepgen::PartonFlux::prefactor_
const double prefactor_
Definition
PartonFlux.h:38
cepgen::PartonFlux::mp2_
const double mp2_
Definition
PartonFlux.h:39
cepgen::PartonFlux::x_range_
const Limits x_range_
Definition
PartonFlux.h:40
cepgen::Steerable::steer
T steer(const std::string &key) const
Retrieve a parameters as previously steered.
Definition
Steerable.h:39
cepgen::utils::kt::q2
double q2(double x, double kt2, double mi2, double mx2)
Compute the virtuality from longitudinal loss/transverse virtuality/diffractive mass.
Definition
Utils.cpp:60
cepgen
Common namespace for this Monte Carlo generator.
Definition
CommandLineHandler.cpp:36
cepgen::pdgid_t
unsigned long long pdgid_t
Alias for the integer-like particle PDG id.
Definition
ParticleProperties.h:26
cepgen::HeavyIon
Heavy ion container (Z+A)
Definition
HeavyIon.h:44
cepgen::HeavyIon::Pb
static HeavyIon Pb()
Standard lead.
Definition
HeavyIon.h:77
cepgen::HeavyIon::Z
Element Z
Atomic number.
Definition
HeavyIon.h:85
cepgen::HeavyIon::A
unsigned short A
Mass number.
Definition
HeavyIon.h:87
CepGen
KTFluxes
KleinElasticHeavyIonKTFlux.cpp
Generated on Mon Jul 29 2024 for CepGen by
1.9.7