cepgen
is hosted by
Hepforge
,
IPPP Durham
CepGen
1.2.5
Central exclusive processes event generator
Loading...
Searching...
No Matches
MergellEtAl.cpp
Go to the documentation of this file.
1
/*
2
* CepGen: a central exclusive processes event generator
3
* Copyright (C) 2019-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/Modules/FormFactorsFactory.h
"
23
24
namespace
cepgen
{
25
namespace
formfac {
27
class
MergellEtAl
final :
public
Parameterisation
{
28
public
:
29
explicit
MergellEtAl
(
const
ParametersList
& params)
30
:
Parameterisation
(params),
31
a1rho_(
steer
<double>(
"a1rho"
)),
32
a2rho_(
steer
<double>(
"a2rho"
)),
33
b1rho_(
steer
<double>(
"b1rho"
)),
34
b2rho_(
steer
<double>(
"b2rho"
)),
35
c1rho_(
steer
<double>(
"c1rho"
)),
36
c2rho_(
steer
<double>(
"c2rho"
)),
37
d1rho_(
steer
<double>(
"d1rho"
)),
38
d2rho_(
steer
<double>(
"d2rho"
)),
39
inv_q20_(
steer
<double>(
"q20inv"
)),
40
lambda_sq_(
steer
<double>(
"LambdaSq"
)),
41
gamma_(
steer
<double>(
"gamma"
)) {}
42
43
inline
static
ParametersDescription
description
() {
44
auto
desc =
Parameterisation::description
();
45
desc.setDescription(
"Mergell et al."
);
46
desc.add<
double
>(
"a1rho"
, 1.0317);
47
desc.add<
double
>(
"a2rho"
, 5.7824);
48
desc.add<
double
>(
"b1rho"
, 0.0875);
49
desc.add<
double
>(
"b2rho"
, 0.3907);
50
desc.add<
double
>(
"c1rho"
, 0.3176);
51
desc.add<
double
>(
"c2rho"
, 0.1422);
52
desc.add<
double
>(
"d1rho"
, 0.5496);
53
desc.add<
double
>(
"d2rho"
, 0.5362);
54
desc.add<
double
>(
"q20inv"
, 1. / 0.35);
55
desc.add<
double
>(
"LambdaSq"
, 9.733);
56
desc.add<
double
>(
"gamma"
, 2.148);
57
return
desc;
58
}
59
60
private
:
61
inline
void
eval()
override
{
62
const
double
log1 = std::pow(log((lambda_sq_ +
q2_
) * inv_q20_), -gamma_);
// L(t=-q2) function in ref.
63
64
// best fit parameterisation
65
const
double
d1_1 = 0.611 +
q2_
, d2_1 = 1.039 +
q2_
, d3_1 = 2.560 +
q2_
;
66
const
double
Fs1 = (9.464 / d1_1 - 9.054 / d2_1 - 0.410 / d3_1) * log1;
67
const
double
Fs2 = (-1.549 / d1_1 + 1.985 / d2_1 - 0.436 / d3_1) * log1;
68
69
const
double
log2 = std::pow(log((lambda_sq_ - 0.500) * inv_q20_), +gamma_);
70
const
double
log3 = std::pow(log((lambda_sq_ - 0.400) * inv_q20_), +gamma_);
71
72
const
double
d1_2 = 2.103 +
q2_
, d2_2 = 2.734 +
q2_
, d3_2 = 2.835 +
q2_
;
73
const
double
Fv1 =
74
(0.5 * (a1rho_ * log2 + b1rho_ * log3 * std::pow(1. +
q2_
/ c1rho_, -2)) / (1. +
q2_
/ d1rho_) -
75
38.885 / d1_2 + 425.007 / d2_2 - 389.742 / d3_2) *
76
log1;
77
const
double
Fv2 = (0.5 * (a2rho_ * log2 + b2rho_ * log3 / (1. +
q2_
/ c2rho_)) / (1. +
q2_
/ d2rho_) -
78
73.535 / d1_2 + 83.211 / d2_2 - 29.467 / d3_2) *
79
log1;
80
81
const
double
F1 = Fv1 + Fs1, F2 = Fv2 + Fs2;
82
setGEGM
(F1 -
tau
(
q2_
) * F2, F1 + F2);
83
}
84
85
const
double
a1rho_, a2rho_, b1rho_, b2rho_, c1rho_, c2rho_, d1rho_, d2rho_;
86
const
double
inv_q20_;
87
const
double
lambda_sq_;
88
const
double
gamma_;
89
};
90
}
// namespace formfac
91
}
// namespace cepgen
92
using
cepgen::formfac::MergellEtAl
;
93
REGISTER_FORMFACTORS
(
"Mergell"
,
MergellEtAl
);
FormFactorsFactory.h
REGISTER_FORMFACTORS
#define REGISTER_FORMFACTORS(name, obj)
Add a form factors definition to the list of handled parameterisation.
Definition
FormFactorsFactory.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::formfac::MergellEtAl
Definition
MergellEtAl.cpp:27
cepgen::formfac::MergellEtAl::MergellEtAl
MergellEtAl(const ParametersList ¶ms)
Definition
MergellEtAl.cpp:29
cepgen::formfac::MergellEtAl::description
static ParametersDescription description()
Definition
MergellEtAl.cpp:43
cepgen::formfac::Parameterisation
Nucleon electromagnetic form factors parameterisation.
Definition
Parameterisation.h:29
cepgen::formfac::Parameterisation::tau
double tau(double q2) const
variable definition
Definition
Parameterisation.cpp:33
cepgen::formfac::Parameterisation::setGEGM
void setGEGM(double ge, double gm)
Set the Sachs form factors.
Definition
Parameterisation.cpp:60
cepgen::formfac::Parameterisation::description
static ParametersDescription description()
Definition
Parameterisation.cpp:45
cepgen::formfac::Parameterisation::q2_
double q2_
Virtuality at which the form factors are evaluated.
Definition
Parameterisation.h:55
cepgen
Common namespace for this Monte Carlo generator.
Definition
CommandLineHandler.cpp:36
CepGen
FormFactors
MergellEtAl.cpp
Generated on Mon Jul 29 2024 for CepGen by
1.9.7