cepgen
is hosted by
Hepforge
,
IPPP Durham
CepGen
1.2.5
Central exclusive processes event generator
Loading...
Searching...
No Matches
BlockDurandHa.cpp
Go to the documentation of this file.
1
/*
2
* CepGen: a central exclusive processes event generator
3
* Copyright (C) 2017-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 {
28
class
BlockDurandHa
final :
public
Parameterisation
{
29
public
:
30
explicit
BlockDurandHa
(
const
ParametersList
& params)
31
:
Parameterisation
(params),
32
a_(
steer
<std::vector<double> >(
"a"
)),
33
b_(
steer
<std::vector<double> >(
"b"
)),
34
c_(
steer
<std::vector<double> >(
"c"
)),
35
n_(
steer
<double>(
"n"
)),
36
lambda_(
steer
<double>(
"Lambda"
)),
37
mu2_(
steer
<double>(
"mu2"
)),
38
m2_(
steer
<double>(
"m2"
)) {
39
if
(a_.size() != 3)
40
throw
CG_FATAL
(
"BlockDurandHa"
) <<
"Parameter 'a' should have 3 components! Parsed "
<< a_ <<
"."
;
41
if
(b_.size() != 3)
42
throw
CG_FATAL
(
"BlockDurandHa"
) <<
"Parameter 'b' should have 3 components! Parsed "
<< b_ <<
"."
;
43
if
(c_.size() != 2)
44
throw
CG_FATAL
(
"BlockDurandHa"
) <<
"Parameter 'c' should have 3 components! Parsed "
<< c_ <<
"."
;
45
}
46
47
void
eval
()
override
{
48
const
double
tau
=
args_
.
q2
/ (
args_
.
q2
+ mu2_);
49
const
double
xl = log1p(
args_
.
q2
/ mu2_);
50
const
double
xlx = log(
tau
/
args_
.
xbj
);
51
52
const
double
A = a_.at(0) + a_.at(1) * xl + a_.at(2) * xl * xl;
53
const
double
B = b_.at(0) + b_.at(1) * xl + b_.at(2) * xl * xl;
54
const
double
C
= c_.at(0) + c_.at(1) * xl;
55
const
double
D =
args_
.
q2
* (
args_
.
q2
+ lambda_ * m2_) / pow(
args_
.
q2
+ m2_, 2);
56
57
setF2
(D * pow(1. -
args_
.
xbj
, n_) * (
C
+ A * xlx + B * xlx * xlx));
58
}
59
60
static
ParametersDescription
description
() {
61
auto
desc =
Parameterisation::description
();
62
desc.setDescription(
"Block-Durand-Ha (continuum)"
);
63
desc.add<std::vector<double> >(
"a"
, {8.205e-4, -5.148e-2, -4.725e-3});
64
desc.add<std::vector<double> >(
"b"
, {2.217e-3, 1.244e-2, 5.958e-4});
65
desc.add<std::vector<double> >(
"c"
, {0.255e0, 1.475e-1});
66
desc.add<
double
>(
"n"
, 11.49);
67
desc.add<
double
>(
"Lambda"
, 2.430);
68
desc.add<
double
>(
"mu2"
, 2.82);
69
desc.add<
double
>(
"m2"
, 0.753);
70
return
desc;
71
}
72
73
private
:
74
std::vector<double> a_, b_, c_;
75
double
n_;
77
double
lambda_;
79
double
mu2_;
81
double
m2_;
82
};
83
}
// namespace strfun
84
}
// namespace cepgen
85
using
cepgen::strfun::BlockDurandHa
;
86
REGISTER_STRFUN
(
"BlockDurandHa"
, 13,
BlockDurandHa
);
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::BlockDurandHa
parameterisation from Block, Durand, and Ha
Definition
BlockDurandHa.cpp:28
cepgen::strfun::BlockDurandHa::BlockDurandHa
BlockDurandHa(const ParametersList ¶ms)
Definition
BlockDurandHa.cpp:30
cepgen::strfun::BlockDurandHa::description
static ParametersDescription description()
Definition
BlockDurandHa.cpp:60
cepgen::strfun::BlockDurandHa::eval
void eval() override
Local structure functions evaluation method.
Definition
BlockDurandHa.cpp:47
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::tau
double tau(double xbj, double q2) const
Compute the dimensionless variable .
Definition
Parameterisation.cpp:114
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::Element::C
@ C
cepgen::strfun::Parameterisation::Arguments::xbj
double xbj
Definition
Parameterisation.h:60
cepgen::strfun::Parameterisation::Arguments::q2
double q2
Definition
Parameterisation.h:60
CepGen
StructureFunctions
BlockDurandHa.cpp
Generated on Mon Jul 29 2024 for CepGen by
1.9.7