cepgen is hosted by Hepforge, IPPP Durham
CepGen N/A
Central exclusive processes event generator
Value.h
Go to the documentation of this file.
1/*
2 * CepGen: a central exclusive processes event generator
3 * Copyright (C) 2023 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_Value_h
20#define CepGen_Utils_Value_h
21
22#include <iosfwd>
23
24namespace cepgen {
26 class Value {
27 public:
28 explicit Value(double val = 0., double unc = 0.);
29
30 friend std::ostream& operator<<(std::ostream&, const Value&);
31
32 operator double() const { return val_; }
33 double uncertainty() const { return unc_; }
34 double relativeUncertainty() const;
35
36 bool operator<(const Value& oth) const { return val_ < oth.val_; }
37
38 //--- error propagation operators
39
40 Value operator+(const Value&) const;
41 template <typename T>
42 inline Value operator+(T cst) const {
43 return Value{val_ + cst, unc_};
44 }
45 Value operator-(const Value&) const;
46 template <typename T>
47 inline Value operator-(T cst) const {
48 return Value{val_ - cst, unc_};
49 }
50 Value operator*(const Value&) const;
51 template <typename T>
52 inline Value operator*(T cst) const {
53 return Value{val_ * cst, unc_ * cst};
54 }
55 Value operator/(const Value&) const;
56 template <typename T>
57 inline Value operator/(T cst) const {
58 return Value{val_ / cst, unc_ / cst};
59 }
60
61 private:
62 double val_;
63 double unc_;
64 };
65} // namespace cepgen
66
67#endif
A scalar value with its uncertainty.
Definition Value.h:26
friend std::ostream & operator<<(std::ostream &, const Value &)
Value operator-(T cst) const
Definition Value.h:47
Value operator+(const Value &) const
bool operator<(const Value &oth) const
Comparison operator.
Definition Value.h:36
Value operator+(T cst) const
Definition Value.h:42
Value operator*(const Value &) const
Value operator/(const Value &) const
Value operator*(T cst) const
Definition Value.h:52
double relativeUncertainty() const
Relative uncertainty around the central value.
Value operator/(T cst) const
Definition Value.h:57
Value operator-(const Value &) const
Value(double val=0., double unc=0.)
double uncertainty() const
Absolute uncertainty around the central value.
Definition Value.h:33
Common namespace for this Monte Carlo generator.
Definition Handler.h:26