cepgen is hosted by Hepforge, IPPP Durham
CepGen 1.2.5
Central exclusive processes event generator
Loading...
Searching...
No Matches
Steerable.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
23#include "CepGen/Utils/String.h"
24
25namespace cepgen {
27
28 void Steerable::setParameters(const ParametersList& params) { params_ += params; }
29
30 std::string Steerable::steerPath(const std::string& key) const {
31 const auto fn = steer<std::string>(key);
32 if (fn.empty())
33 return fn;
34 for (const auto& path : utils::env::searchPaths())
35 if (const auto abs_path = fs::path(path) / fn; utils::fileExists(abs_path)) {
36 CG_DEBUG("Steerable:steerPath") << "Found path for '" << key << "' at '" << abs_path << "'.";
37 return abs_path;
38 }
39 return fn;
40 }
41
43 auto desc = ParametersDescription("Steerable");
44 desc.setDescription("Pure virtual base steerable object");
45 return desc;
46 }
47} // namespace cepgen
#define CG_DEBUG(mod)
Definition Message.h:220
A description object for parameters collection.
ParametersList params_
Module parameters.
Definition Steerable.h:50
static ParametersDescription description()
Description of all object parameters.
Definition Steerable.cpp:42
std::string steerPath(const std::string &key) const
Retrieve a path from common search paths.
Definition Steerable.cpp:30
Steerable(const ParametersList &)
Build a module from its steering parameters.
Definition Steerable.cpp:26
virtual void setParameters(const ParametersList &)
Set module parameters.
Definition Steerable.cpp:28
std::vector< std::string > searchPaths()
Retrieve a list of all search paths for external files.
bool fileExists(const std::string &path)
Check if the file exists.
Common namespace for this Monte Carlo generator.