cepgen
is hosted by
Hepforge
,
IPPP Durham
CepGen
1.2.5
Central exclusive processes event generator
Loading...
Searching...
No Matches
Functional.h
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
#ifndef CepGen_Utils_Functional_h
20
#define CepGen_Utils_Functional_h
21
22
#include <array>
23
24
#include "
CepGen/Modules/NamedModule.h
"
25
26
namespace
cepgen
{
27
class
ParametersList;
28
namespace
utils {
32
class
Functional
:
public
NamedModule
<Functional> {
33
public
:
34
explicit
Functional
(
const
ParametersList
&);
35
39
static
ParametersList
fromExpression
(
const
std::string& expr,
const
std::vector<std::string>& vars);
40
static
ParametersDescription
description
();
41
44
double
operator()
(
double
x)
const
;
47
double
operator()
(
const
std::vector<double>& x)
const
;
48
50
inline
const
std::vector<std::string>&
variables
()
const
{
return
vars_orig_; }
52
inline
const
std::string&
expression
()
const
{
return
expression_orig_; }
53
54
protected
:
55
virtual
double
eval
()
const
= 0;
56
57
private
:
58
std::vector<std::string> vars_orig_;
59
std::string expression_orig_;
60
61
protected
:
62
std::vector<std::string>
vars_
;
63
std::string
expression_
;
64
mutable
std::vector<double>
values_
;
65
};
66
}
// namespace utils
67
}
// namespace cepgen
68
69
#endif
NamedModule.h
cepgen::NamedModule
Base runtime module object.
Definition
NamedModule.h:28
cepgen::ParametersDescription
A description object for parameters collection.
Definition
ParametersDescription.h:26
cepgen::ParametersList
Definition
ParametersList.h:52
cepgen::utils::Functional
A string-to-functional parser.
Definition
Functional.h:32
cepgen::utils::Functional::expression
const std::string & expression() const
String expression held by this functional parser.
Definition
Functional.h:52
cepgen::utils::Functional::operator()
double operator()(double x) const
Compute the functional for a given value of the variable (one-dimensional case)
Definition
Functional.cpp:39
cepgen::utils::Functional::vars_
std::vector< std::string > vars_
Computer-readable variable to be reached.
Definition
Functional.h:62
cepgen::utils::Functional::eval
virtual double eval() const =0
Compute the functional for a given value of the variables.
cepgen::utils::Functional::expression_
std::string expression_
Computer-readable expression.
Definition
Functional.h:63
cepgen::utils::Functional::variables
const std::vector< std::string > & variables() const
List of string variable names.
Definition
Functional.h:50
cepgen::utils::Functional::description
static ParametersDescription description()
Definition
Functional.cpp:57
cepgen::utils::Functional::fromExpression
static ParametersList fromExpression(const std::string &expr, const std::vector< std::string > &vars)
Build a collection of parameters to define a functional from its mathematical expression.
Definition
Functional.cpp:53
cepgen::utils::Functional::values_
std::vector< double > values_
Last arguments list fed to the functional.
Definition
Functional.h:64
cepgen
Common namespace for this Monte Carlo generator.
Definition
CommandLineHandler.cpp:36
CepGen
Utils
Functional.h
Generated on Mon Jul 29 2024 for CepGen by
1.9.7