cepgen
is hosted by
Hepforge
,
IPPP Durham
CepGen
1.2.5
Central exclusive processes event generator
Loading...
Searching...
No Matches
SuriYennie.cpp
Go to the documentation of this file.
1
/*
2
* CepGen: a central exclusive processes event generator
3
* Copyright (C) 2013-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/Modules/StructureFunctionsFactory.h
"
22
#include "
CepGen/Physics/Utils.h
"
23
#include "
CepGen/StructureFunctions/Parameterisation.h
"
24
25
namespace
cepgen
{
26
namespace
strfun {
28
class
SuriYennie
:
public
Parameterisation
{
29
public
:
31
explicit
SuriYennie
(
const
ParametersList
& params)
32
:
Parameterisation
(params),
33
c1_(
steer
<double>(
"C1"
)),
34
c2_(
steer
<double>(
"C2"
)),
35
d1_(
steer
<double>(
"D1"
)),
36
rho2_(
steer
<double>(
"rho2"
)),
37
cp_(
steer
<double>(
"Cp"
)),
38
bp_(
steer
<double>(
"Bp"
)) {}
39
40
static
ParametersDescription
description
() {
41
auto
desc =
Parameterisation::description
();
42
desc.setDescription(
"Suri-Yennie"
);
43
desc.add<
double
>(
"C1"
, 0.86926);
44
desc.add<
double
>(
"C2"
, 2.23422);
45
desc.add<
double
>(
"D1"
, 0.12549);
46
desc.add<
double
>(
"rho2"
, 0.585);
47
desc.add<
double
>(
"Cp"
, 0.96);
48
desc.add<
double
>(
"Bp"
, 0.63);
49
return
desc;
50
}
51
52
void
eval
()
override
{
53
const
double
mx2 =
utils::mX2
(
args_
.
xbj
,
args_
.
q2
,
mp2_
), dm2 = mx2 -
mp2_
;
// [GeV^2]
54
const
double
en =
args_
.
q2
+ dm2;
// [GeV^2]
55
const
double
nu = 0.5 * en /
mp_
, x_pr =
args_
.
q2
/ (
args_
.
q2
+ mx2),
tau
= 0.25 *
args_
.
q2
/
mp2_
;
56
const
double
mq = rho2_ +
args_
.
q2
;
57
58
const
double
inv_q2 = 1. /
args_
.
q2
;
59
60
const
double
fm = inv_q2 * (c1_ * dm2 * pow(rho2_ / mq, 2) +
61
c2_ *
mp2_
* pow(1. - x_pr, 4) / (1. + x_pr * (x_pr * cp_ - 2. * bp_)));
62
const
double
fe =
63
(
tau
* fm + d1_ * dm2 *
args_
.
q2
* rho2_ /
mp2_
* pow(dm2 / mq / en, 2)) / (1. + nu * nu * inv_q2);
64
65
setFE
(fe);
66
setFM
(fm);
67
setW1
(0.5 * fm *
args_
.
q2
/
mp_
);
68
setW2
(2. *
mp_
* fe);
69
setF2
(2. * nu * fe);
70
}
71
72
private
:
73
double
c1_{0.}, c2_{0.};
74
double
d1_{0.};
75
double
rho2_{0.};
76
double
cp_{0.}, bp_{0.};
77
};
78
79
struct
SuriYennieAlt
final :
public
SuriYennie
{
80
using
SuriYennie::SuriYennie
;
81
static
ParametersDescription
description
() {
82
auto
desc =
SuriYennie::description
();
83
desc.setDescription(
"Suri-Yennie (alternative)"
);
84
desc.add<
double
>(
"C1"
, 0.6303);
85
desc.add<
double
>(
"C2"
, 2.3049);
86
desc.add<
double
>(
"D1"
, 0.04681);
87
desc.add<
double
>(
"rho2"
, 1.05);
88
desc.add<
double
>(
"Cp"
, 1.23);
89
desc.add<
double
>(
"Bp"
, 0.61);
90
return
desc;
91
}
92
};
93
}
// namespace strfun
94
}
// namespace cepgen
95
using
cepgen::strfun::SuriYennie
;
96
using
cepgen::strfun::SuriYennieAlt
;
97
REGISTER_STRFUN
(
"SuriYennie"
, 11,
SuriYennie
);
98
REGISTER_STRFUN
(
"SuriYennieAlt"
, 14,
SuriYennieAlt
);
Utils.h
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::Parameterisation
Base object for the parameterisation of nucleon structure functions.
Definition
Parameterisation.h:30
cepgen::strfun::Parameterisation::setFE
Parameterisation & setFE(double fe)
Definition
Parameterisation.cpp:104
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::tau
double tau(double xbj, double q2) const
Compute the dimensionless variable .
Definition
Parameterisation.cpp:114
cepgen::strfun::Parameterisation::setW2
Parameterisation & setW2(double w2)
Definition
Parameterisation.cpp:99
cepgen::strfun::Parameterisation::mp2_
const double mp2_
Squared proton mass, in GeV^2/c^4.
Definition
Parameterisation.h:106
cepgen::strfun::Parameterisation::description
static ParametersDescription description()
Generic description for the structure functions.
Definition
Parameterisation.cpp:148
cepgen::strfun::Parameterisation::setFM
Parameterisation & setFM(double fm)
Definition
Parameterisation.cpp:109
cepgen::strfun::Parameterisation::setW1
Parameterisation & setW1(double w1)
Definition
Parameterisation.cpp:94
cepgen::strfun::Parameterisation::mp_
const double mp_
Proton mass, in GeV/c^2.
Definition
Parameterisation.h:105
cepgen::strfun::SuriYennie
modelling by Suri and Yennie
Definition
SuriYennie.cpp:28
cepgen::strfun::SuriYennie::SuriYennie
SuriYennie(const ParametersList ¶ms)
User-steered Suri-Yennie continuum structure functions calculator.
Definition
SuriYennie.cpp:31
cepgen::strfun::SuriYennie::description
static ParametersDescription description()
Definition
SuriYennie.cpp:40
cepgen::strfun::SuriYennie::eval
void eval() override
Local structure functions evaluation method.
Definition
SuriYennie.cpp:52
cepgen::utils::mX2
double mX2(double xbj, double q2, double mp2)
Compute the diffractive mass from virtuality/Bjorken x.
Definition
Utils.cpp:29
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::strfun::SuriYennieAlt
Definition
SuriYennie.cpp:79
cepgen::strfun::SuriYennieAlt::description
static ParametersDescription description()
Definition
SuriYennie.cpp:81
CepGen
StructureFunctions
SuriYennie.cpp
Generated on Mon Jul 29 2024 for CepGen by
1.9.7