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
24
25namespace cepgen {
26 namespace strfun {
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
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 {
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
97REGISTER_STRFUN("SuriYennie", 11, SuriYennie);
98REGISTER_STRFUN("SuriYennieAlt", 14, SuriYennieAlt);
#define REGISTER_STRFUN(name, id, obj)
Add a structure functions definition to the list of handled parameterisation.
A description object for parameters collection.
T steer(const std::string &key) const
Retrieve a parameters as previously steered.
Definition Steerable.h:39
Base object for the parameterisation of nucleon structure functions.
Parameterisation & setFE(double fe)
Arguments args_
Last couple computed.
Parameterisation & setF2(double f2)
double tau(double xbj, double q2) const
Compute the dimensionless variable .
Parameterisation & setW2(double w2)
const double mp2_
Squared proton mass, in GeV^2/c^4.
static ParametersDescription description()
Generic description for the structure functions.
Parameterisation & setFM(double fm)
Parameterisation & setW1(double w1)
const double mp_
Proton mass, in GeV/c^2.
modelling by Suri and Yennie
SuriYennie(const ParametersList &params)
User-steered Suri-Yennie continuum structure functions calculator.
static ParametersDescription description()
void eval() override
Local structure functions evaluation method.
double mX2(double xbj, double q2, double mp2)
Compute the diffractive mass from virtuality/Bjorken x.
Definition Utils.cpp:29
Common namespace for this Monte Carlo generator.
static ParametersDescription description()