cepgen is hosted by Hepforge, IPPP Durham
CepGen 1.2.5
Central exclusive processes event generator
Loading...
Searching...
No Matches
BoostGaussLegendreAnalyticalIntegrator.cpp
Go to the documentation of this file.
1/*
2 * CepGen: a central exclusive processes event generator
3 * Copyright (C) 2022-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 <boost/math/quadrature/gauss.hpp>
20
24
25namespace cepgen {
27 template <size_t N>
29 public:
31
34 desc.setDescription("Boost Gauss-Legendre integration algorithm");
35 return desc;
36 }
37
38 double integrate(const utils::Function1D& func, void* = nullptr, const Limits& lim = {}) const override {
39 return boost::math::quadrature::gauss<double, N>::integrate(
40 func, lim.hasMin() ? lim.min() : range_.min(), lim.hasMax() ? lim.max() : range_.max());
41 }
42 };
43} // namespace cepgen
#define REGISTER_ANALYTIC_INTEGRATOR(name, obj)
Add a generic analytical integrator object builder definition.
cepgen::BoostGaussLegendreAnalyticalIntegrator< 30 > BGLIntegrator30
cepgen::BoostGaussLegendreAnalyticalIntegrator< 7 > BGLIntegrator7
cepgen::BoostGaussLegendreAnalyticalIntegrator< 25 > BGLIntegrator25
cepgen::BoostGaussLegendreAnalyticalIntegrator< 20 > BGLIntegrator20
cepgen::BoostGaussLegendreAnalyticalIntegrator< 15 > BGLIntegrator15
Analytic (functional) integration algorithm.
static ParametersDescription description()
double integrate(const utils::Function1D &func, void *=nullptr, const Limits &lim={}) const override
Evaluate the integral of a function at a given value.
Validity interval for a variable.
Definition Limits.h:28
A description object for parameters collection.
Wrapper to a 1-dimensional function with optional parameters.
Common namespace for this Monte Carlo generator.