cepgen is hosted by Hepforge, IPPP Durham
CepGen 1.2.5
Central exclusive processes event generator
Loading...
Searching...
No Matches
SzczurekUleshchenko.cpp
Go to the documentation of this file.
1/*
2 * CepGen: a central exclusive processes event generator
3 * Copyright (C) 2016-2024 Laurent Forthomme
4 * 2016 Antoni Szczurek
5 * 2016 Volodymyr Uleshchenko
6 *
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 */
20
24
25namespace {
26 extern "C" {
27 extern void grv95lo_(float&, float&, float&, float&, float&, float&, float&, float&);
28 }
29} // namespace
30
31namespace cepgen {
32 namespace strfun {
35 public:
36 explicit SzczurekUleshchenko(const ParametersList& params)
37 : Parameterisation(params), q2_shift_(steerAs<double, float>("q2shift")) {}
38
41 desc.setDescription("Szczurek-Uleshchenko (based on GRV parton content)");
42 desc.add<double>("q2shift", 0.8);
43 return desc;
44 }
45
46 private:
47 void eval() override {
48 auto amu2 = (float)args_.q2 + q2_shift_; // shift the overall scale
49 float xuv, xdv, xus, xds, xss, xg;
50 auto xbj_arg = (float)args_.xbj;
51
52 grv95lo_(xbj_arg, amu2, xuv, xdv, xus, xds, xss, xg);
53
54 CG_DEBUG_LOOP("SzczurekUleshchenko")
55 << "Form factor content at xB = " << args_.xbj << " (scale = " << amu2 << " GeV^2):\n\t"
56 << " valence quarks: u / d = " << xuv << " / " << xdv << "\n\t"
57 << " sea quarks: u / d / s = " << xus << " / " << xds << " / " << xss << "\n\t"
58 << " gluons: = " << xg;
59
60 // standard partonic structure function
61 const double F2_aux = 4. / 9. * (xuv + 2. * xus) + 1. / 9. * (xdv + 2. * xds) + 1. / 9. * (2. * xss);
62 setF2(F2_aux * args_.q2 / amu2); // F2 corrected for low Q^2 behaviour
63 }
64 const float q2_shift_;
65 };
66 } // namespace strfun
67} // namespace cepgen
69REGISTER_STRFUN("SzczurekUleshchenko", 12, SzczurekUleshchenko);
#define CG_DEBUG_LOOP(mod)
Definition Message.h:224
#define REGISTER_STRFUN(name, id, obj)
Add a structure functions definition to the list of handled parameterisation.
A description object for parameters collection.
U steerAs(const std::string &key) const
Retrieve a recasted parameters as previously steered.
Definition Steerable.h:44
Base object for the parameterisation of nucleon structure functions.
Arguments args_
Last couple computed.
Parameterisation & setF2(double f2)
static ParametersDescription description()
Generic description for the structure functions.
Szczurek and Uleshchenko modelling of based on GRV parton content .
static ParametersDescription description()
SzczurekUleshchenko(const ParametersList &params)
Common namespace for this Monte Carlo generator.