1#ifndef EXPERIMENT_OBS_H
2#define EXPERIMENT_OBS_H
50 : experiment(
std::move(exp)), obs(
std::move(o)) {}
104 < std::tie(other.experiment, other.obs);
113 std::stringstream ss;
131 return os << x.
str();
150 std::size_t h = std::hash<std::string>{}(x.experiment);
152 auto mix = [](std::size_t& seed, std::size_t v) {
153 seed ^= v + 0x9e3779b97f4a7c15ULL + (seed << 6) + (seed >> 2);
156 mix(h, std::hash<BinnedObservableId>{}(x.obs));
std::ostream & operator<<(std::ostream &os, ExperimentObs const &x)
Stream output operator for ExperimentObs.
High-level mapper for observable names, FLHA ids and parent decays.
Hash specialization for SymbolId<Tag>.
Identifies an observable together with a numerical bin.
std::string str() const
Returns a human-readable representation of the binned observable.
ExperimentObs()=default
Default constructor.
bool operator==(ExperimentObs const &other) const noexcept
Equality comparison operator.
ExperimentObs(std::string exp, ObservableId o)
Constructs an experiment-specific unbinned observable.
std::string str() const
Returns a human-readable representation of the object.
ExperimentObs(std::string exp, Observables o)
Constructs an experiment-specific observable from an enum value.
bool operator<(ExperimentObs const &other) const noexcept
Strict weak ordering for experiment-specific observables.
ExperimentObs(std::string exp, BinnedObservableId o)
Constructs an experiment-specific binned observable.
std::size_t operator()(ExperimentObs const &x) const noexcept
Computes the hash of an experiment-specific observable.