cepgen
is hosted by
Hepforge
,
IPPP Durham
CepGen
N/A
Central exclusive processes event generator
Toggle main menu visibility
Main Page
Related Pages
Packages
Package List
Package Members
All
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
x
y
Functions
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
x
y
Variables
Typedefs
Enumerations
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
a
b
c
d
e
f
g
h
i
k
l
m
n
p
q
r
s
t
u
v
w
x
y
z
Typedefs
Enumerations
Enumerator
b
c
d
e
g
h
i
l
m
n
p
r
t
u
w
x
y
z
Related Symbols
d
g
h
o
u
v
Files
File List
File Members
All
_
a
b
c
d
e
h
o
p
r
s
Functions
Variables
Macros
_
b
c
d
e
p
r
s
▼
CepGen
Reference manual
Bibliography
►
Packages
►
Classes
▼
Files
▼
File List
▼
include
▼
CepGen
►
Cards
►
Core
►
Event
►
EventFilter
►
FormFactors
►
Integration
►
Modules
►
PartonFluxes
►
Physics
►
Process
►
StructureFunctions
▼
Utils
►
AbortHandler.h
►
Algebra.h
►
ArgumentsParser.h
►
Caller.h
►
Collections.h
►
Derivator.h
►
DocumentationGenerator.h
►
Drawable.h
►
Drawer.h
►
Environment.h
►
EventUtils.h
►
Filesystem.h
►
Functional.h
►
FunctionWrapper.h
►
Graph.h
►
GridDrawer.h
►
GridHandler.h
►
GSLFunctionWrapper.h
►
GSLMonteFunctionWrapper.h
►
Hasher.h
►
Histogram.h
►
Limits.h
►
Logger.h
►
Math.h
►
Message.h
►
Piper.h
►
ProcessVariablesAnalyser.h
►
ProgressBar.h
►
RandomGenerator.h
►
StreamCollector.h
►
String.h
►
Test.h
►
TimeKeeper.h
►
Timer.h
►
Value.h
►
Generator.h
►
Version.h
►
CepGenBoost
►
CepGenHepMC2
►
CepGenHepMC3
►
CepGenHerwig6
►
CepGenMadGraph
►
CepGenPythia6
►
CepGenPythia8
►
CepGenPython
►
CepGenRoot
►
File Members
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
Loading...
Searching...
No Matches
FunctionWrapper.h
Go to the documentation of this file.
1
/*
2
* CepGen: a central exclusive processes event generator
3
* Copyright (C) 2022-2025 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_FunctionWrapper_h
20
#define CepGen_Utils_FunctionWrapper_h
21
22
#include <functional>
23
24
#include "
CepGen/Core/ParametersList.h
"
25
26
namespace
cepgen::utils
{
28
class
FunctionWrapper
{
29
public
:
30
explicit
FunctionWrapper
(
const
std::function<
double
(
double
)>& func) : func_(func) {}
31
explicit
FunctionWrapper
(
const
std::function<
double
(
double
,
const
ParametersList
&)>& func) : func_params_(func) {}
32
explicit
FunctionWrapper
(
const
std::function<
double
(
double
,
void
*)>& func) : func_obj_(func) {}
33
35
inline
double
operator()
(
double
x,
const
ParametersList
& params =
ParametersList
())
const
{
36
if
(func_params_)
37
return
func_params_(x, params);
38
return
func_(x);
39
}
35
inline
double
operator()
(
double
x,
const
ParametersList
& params =
ParametersList
())
const
{
…
}
41
inline
double
operator()
(
double
x,
void
* obj)
const
{
42
if
(func_obj_)
43
return
func_obj_(x, obj);
44
return
func_(x);
45
}
41
inline
double
operator()
(
double
x,
void
* obj)
const
{
…
}
47
template
<
typename
T>
48
inline
double
operator()
(
double
x,
const
T& obj)
const
{
49
if
(func_obj_)
50
return
func_obj_(x,
dynamic_cast<
void
*
>
(&obj));
51
if
(func_params_)
52
return
func_params_(x,
ParametersList
().set(
"parameter"
, obj));
53
return
func_(x);
54
}
48
inline
double
operator()
(
double
x,
const
T& obj)
const
{
…
}
55
56
inline
operator
const
std::function<double(
double
)>&() {
return
func_; }
57
inline
operator
const
std::function<double(
double
,
void
*)>&() {
return
func_obj_; }
58
59
private
:
60
std::function<double(
double
)> func_{
nullptr
};
61
std::function<double(
double
,
const
ParametersList
&)> func_params_{
nullptr
};
62
std::function<double(
double
,
void
*)> func_obj_{
nullptr
};
63
};
28
class
FunctionWrapper
{
…
};
64
}
// namespace cepgen::utils
65
66
#endif
ParametersList.h
cepgen::ParametersList
Definition
ParametersList.h:52
cepgen::utils::FunctionWrapper
Wrapper to a 1-dimensional function with optional parameters.
Definition
FunctionWrapper.h:28
cepgen::utils::FunctionWrapper::FunctionWrapper
FunctionWrapper(const std::function< double(double)> &func)
Definition
FunctionWrapper.h:30
cepgen::utils::FunctionWrapper::operator()
double operator()(double x, const ParametersList ¶ms=ParametersList()) const
Call the function with a user collection of parameters.
Definition
FunctionWrapper.h:35
cepgen::utils::FunctionWrapper::operator()
double operator()(double x, void *obj) const
Call the function with an unspecified object as parameters.
Definition
FunctionWrapper.h:41
cepgen::utils::FunctionWrapper::FunctionWrapper
FunctionWrapper(const std::function< double(double, void *)> &func)
Definition
FunctionWrapper.h:32
cepgen::utils::FunctionWrapper::FunctionWrapper
FunctionWrapper(const std::function< double(double, const ParametersList &)> &func)
Definition
FunctionWrapper.h:31
cepgen::utils::FunctionWrapper::operator()
double operator()(double x, const T &obj) const
Call the function with a templated object as parameters.
Definition
FunctionWrapper.h:48
cepgen::utils
Collection of utilities.
Definition
RunParameters.h:33
include
CepGen
Utils
FunctionWrapper.h
Generated on Tue Apr 22 2025 for CepGen by
1.10.0