cepgen
is hosted by
Hepforge
,
IPPP Durham
CepGen
1.2.5
Central exclusive processes event generator
Loading...
Searching...
No Matches
CapellaEtAl.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/Core/Exception.h
"
22
#include "
CepGen/Modules/StructureFunctionsFactory.h
"
23
#include "
CepGen/StructureFunctions/Parameterisation.h
"
24
25
namespace
cepgen
{
26
namespace
strfun {
29
class
CapellaEtAl
final :
public
Parameterisation
{
30
public
:
31
explicit
CapellaEtAl
(
const
ParametersList
& params)
32
:
Parameterisation
(params),
33
pA_(
steer
<double>(
"A"
)),
34
pBu_(
steer
<double>(
"Bu"
)),
35
pBd_(
steer
<double>(
"Bd"
)),
36
alpha_r_(
steer
<double>(
"alphaR"
)),
37
delta_0_(
steer
<double>(
"delta0"
)),
38
coeffs_(
steer
<std::vector<double> >(
"coeffs"
)) {
39
if
(coeffs_.size() < 4)
40
throw
CG_FATAL
(
"CapellaEtAl"
) <<
"Invalid multiplicity of coefficients given: "
<< coeffs_ <<
"."
;
41
}
42
43
static
ParametersDescription
description
() {
44
auto
desc =
Parameterisation::description
();
45
desc.setDescription(
"Capella et al."
);
46
desc.add<
double
>(
"A"
, 0.1502);
47
desc.add<
double
>(
"Bu"
, 1.2064);
48
desc.add<
double
>(
"Bd"
, 0.1798);
49
desc.add<
double
>(
"alphaR"
, 0.4150).setDescription(
"Reggeon intercept"
);
50
desc.add<
double
>(
"delta0"
, 0.08).setDescription(
"effective intercept at Q^2=0"
);
51
desc.add<std::vector<double> >(
"coeffs"
, {0.2631, 0.6452, 3.5489, 1.1170});
52
return
desc;
53
}
54
55
void
eval
()
override
{
56
const
auto
nq2 = 1.5 * (1. +
args_
.
q2
/ (
args_
.
q2
+ coeffs_.at(2)));
// n(Q^2) function in the paper
57
const
auto
dq2 = delta_0_ * (1 + (2 *
args_
.
q2
) / (
args_
.
q2
+ coeffs_.at(0)));
// big-Delta(Q^2) function
58
const
auto
c1 = std::pow(
args_
.
q2
/ (
args_
.
q2
+ coeffs_.at(0)), 1. + dq2);
59
const
auto
c2 = std::pow(
args_
.
q2
/ (
args_
.
q2
+ coeffs_.at(1)), alpha_r_);
60
61
setF2
(pA_ * std::pow(
args_
.
xbj
, -dq2) * std::pow(1 -
args_
.
xbj
, nq2 + 4.0) * c1 +
62
std::pow(
args_
.
xbj
, 1.0 - alpha_r_) *
63
(pBu_ * std::pow(1 -
args_
.
xbj
, nq2) + pBd_ * std::pow(1 -
args_
.
xbj
, nq2 + 1.0)) * c2);
64
65
// Note: add the high-Q^2 QCD evolution case (eq. (8) in the paper)
66
}
67
68
private
:
69
const
double
pA_, pBu_, pBd_, alpha_r_, delta_0_;
70
const
std::vector<double> coeffs_;
71
};
72
}
// namespace strfun
73
}
// namespace cepgen
74
using
cepgen::strfun::CapellaEtAl
;
75
REGISTER_STRFUN
(
"Capella"
, 106,
CapellaEtAl
);
Exception.h
CG_FATAL
#define CG_FATAL(mod)
Definition
Exception.h:61
StructureFunctionsFactory.h
REGISTER_STRFUN
#define REGISTER_STRFUN(name, id, obj)
Add a structure functions definition to the list of handled parameterisation.
Definition
StructureFunctionsFactory.h:25
Parameterisation.h
cepgen::ParametersDescription
A description object for parameters collection.
Definition
ParametersDescription.h:26
cepgen::ParametersList
Definition
ParametersList.h:52
cepgen::Steerable::steer
T steer(const std::string &key) const
Retrieve a parameters as previously steered.
Definition
Steerable.h:39
cepgen::strfun::CapellaEtAl
Low-x structure functions, valid for the range GeV^2 .
Definition
CapellaEtAl.cpp:29
cepgen::strfun::CapellaEtAl::CapellaEtAl
CapellaEtAl(const ParametersList ¶ms)
Definition
CapellaEtAl.cpp:31
cepgen::strfun::CapellaEtAl::description
static ParametersDescription description()
Definition
CapellaEtAl.cpp:43
cepgen::strfun::CapellaEtAl::eval
void eval() override
Local structure functions evaluation method.
Definition
CapellaEtAl.cpp:55
cepgen::strfun::Parameterisation
Base object for the parameterisation of nucleon structure functions.
Definition
Parameterisation.h:30
cepgen::strfun::Parameterisation::args_
Arguments args_
Last couple computed.
Definition
Parameterisation.h:109
cepgen::strfun::Parameterisation::setF2
Parameterisation & setF2(double f2)
Definition
Parameterisation.cpp:83
cepgen::strfun::Parameterisation::description
static ParametersDescription description()
Generic description for the structure functions.
Definition
Parameterisation.cpp:148
cepgen
Common namespace for this Monte Carlo generator.
Definition
CommandLineHandler.cpp:36
cepgen::strfun::Parameterisation::Arguments::xbj
double xbj
Definition
Parameterisation.h:60
cepgen::strfun::Parameterisation::Arguments::q2
double q2
Definition
Parameterisation.h:60
CepGen
StructureFunctions
CapellaEtAl.cpp
Generated on Mon Jul 29 2024 for CepGen by
1.9.7