cepgen
is hosted by
Hepforge
,
IPPP Durham
CepGen
1.2.5
Central exclusive processes event generator
Loading...
Searching...
No Matches
FunctionsWrappers.h
Go to the documentation of this file.
1
/*
2
* CepGen: a central exclusive processes event generator
3
* Copyright (C) 2022 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_FunctionsWrappers_h
20
#define CepGen_Utils_FunctionsWrappers_h
21
22
#include <functional>
23
24
#include "
CepGen/Core/ParametersList.h
"
25
26
namespace
cepgen
{
27
namespace
utils {
29
class
Function1D
{
30
public
:
31
explicit
Function1D
(
const
std::function<
double
(
double
)>& func) : func_(func) {}
32
explicit
Function1D
(
const
std::function<
double
(
double
,
const
ParametersList
&)>& func) : func_params_(func) {}
33
explicit
Function1D
(
const
std::function<
double
(
double
,
void
*)>& func) : func_obj_(func) {}
34
36
double
operator()
(
double
x,
const
ParametersList
& params =
ParametersList
())
const
{
37
if
(func_params_)
38
return
func_params_(x, params);
39
return
func_(x);
40
}
42
double
operator()
(
double
x,
void
* obj)
const
{
43
if
(func_obj_)
44
return
func_obj_(x, obj);
45
return
func_(x);
46
}
48
template
<
typename
T>
49
double
operator()
(
double
x,
const
T& obj)
const
{
50
return
func_obj_(x, (
void
*)&obj);
51
}
52
53
operator
const
std::function<double(
double
)>&() {
return
func_; }
54
operator
const
std::function<double(
double
,
void
*)>&() {
return
func_obj_; }
55
56
private
:
58
std::function<double(
double
)> func_{
nullptr
};
60
std::function<double(
double
,
const
ParametersList
&)> func_params_{
nullptr
};
62
std::function<double(
double
,
void
*)> func_obj_{
nullptr
};
63
};
64
}
// namespace utils
65
}
// namespace cepgen
66
67
#endif
ParametersList.h
cepgen::ParametersList
Definition
ParametersList.h:52
cepgen::utils::Function1D
Wrapper to a 1-dimensional function with optional parameters.
Definition
FunctionsWrappers.h:29
cepgen::utils::Function1D::operator()
double operator()(double x, const ParametersList ¶ms=ParametersList()) const
Call the function with a user collection of parameters.
Definition
FunctionsWrappers.h:36
cepgen::utils::Function1D::operator()
double operator()(double x, void *obj) const
Call the function with an unspecified object as parameters.
Definition
FunctionsWrappers.h:42
cepgen::utils::Function1D::operator()
double operator()(double x, const T &obj) const
Call the function with a templated object as parameters.
Definition
FunctionsWrappers.h:49
cepgen::utils::Function1D::Function1D
Function1D(const std::function< double(double, void *)> &func)
Definition
FunctionsWrappers.h:33
cepgen::utils::Function1D::Function1D
Function1D(const std::function< double(double, const ParametersList &)> &func)
Definition
FunctionsWrappers.h:32
cepgen::utils::Function1D::Function1D
Function1D(const std::function< double(double)> &func)
Definition
FunctionsWrappers.h:31
cepgen
Common namespace for this Monte Carlo generator.
Definition
CommandLineHandler.cpp:36
CepGen
Utils
FunctionsWrappers.h
Generated on Mon Jul 29 2024 for CepGen by
1.9.7