cepgen is hosted by Hepforge, IPPP Durham
CepGen 1.2.5
Central exclusive processes event generator
Loading...
Searching...
No Matches
ProcessIntegrand.h
Go to the documentation of this file.
1/*
2 * CepGen: a central exclusive processes event generator
3 * Copyright (C) 2013-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_Integration_ProcessIntegrand_h
20#define CepGen_Integration_ProcessIntegrand_h
21
22#include <memory>
23
26
27namespace cepgen {
28 class RunParameters;
29 namespace proc {
30 class Process;
31 }
32 namespace utils {
33 class Timer;
34 }
36 class ProcessIntegrand : public Integrand {
37 public:
38 explicit ProcessIntegrand(const proc::Process&);
39 explicit ProcessIntegrand(const RunParameters*);
40
49 double eval(const std::vector<double>& x) override;
50 size_t size() const override;
51 bool hasProcess() const override final { return true; }
52
54 const proc::Process& process() const;
55
56 void setStorage(bool store) { storage_ = store; }
57 bool storage() const { return storage_; }
58
59 private:
60 void setProcess(const proc::Process&);
61
62 std::unique_ptr<proc::Process> process_;
63 const RunParameters* params_{nullptr};
64 const std::unique_ptr<utils::Timer> tmr_;
65 utils::EventBrowser bws_;
66 bool storage_{false};
67 };
68} // namespace cepgen
69
70#endif
An integrand wrapper placeholder.
Definition Integrand.h:27
Wrapper to the function to be integrated.
proc::Process & process()
Thread-local physics process.
bool storage() const
Are the events currently generated in this run to be stored?
bool hasProcess() const override final
Does this integrand also contain a process object?
void setStorage(bool store)
Specify if the generated events are to be stored.
double eval(const std::vector< double > &x) override
Compute the integrand for a given phase space point (or "event")
size_t size() const override
Phase space dimension.
List of parameters used to start and run the simulation job.
Class template to define any process to compute using this MC integrator/events generator.
Definition Process.h:34
Common namespace for this Monte Carlo generator.