2#ifndef RIVET_Projection_HH
3#define RIVET_Projection_HH
5#include "Rivet/Projection.fhh"
6#include "Rivet/ProjectionApplier.hh"
7#include "Rivet/ProjectionHandler.hh"
8#include "Rivet/Config/RivetCommon.hh"
9#include "Rivet/Tools/Cuts.hh"
47 virtual unique_ptr<Projection>
clone()
const = 0;
62 virtual std::string
name()
const {
143 string logname =
"Rivet.Projection." +
name();
184inline bool std::less<const Rivet::Projection *>::operator()(
const Rivet::Projection* x,
193#include "Rivet/Event.hh"
194#include "Rivet/Particle.hh"
195#include "Rivet/Tools/Cmp.hh"
200#define RIVET_DEFAULT_PROJ_CLONE(clsname) \
201 virtual unique_ptr<Projection> clone() const { return unique_ptr<Projection>(new clsname(*this)); }
Representation of a HepMC event, and enabler of Projection caching.
Definition Event.hh:22
Logging system for controlled & formatted writing to stdout.
Definition Logging.hh:10
static Log & getLog(const std::string &name)
Common base class for Projection and Analysis, used for internal polymorphism.
Definition ProjectionApplier.hh:22
Base class for all Rivet projections.
Definition Projection.hh:29
Projection(const Projection &)=default
Explicit (but not careful!) copy construction (required for clone()).
Projection()
The default constructor.
virtual Projection & operator=(const Projection &)=delete
Suppress copy assignment.
virtual CmpState compare(const Projection &p) const =0
virtual unique_ptr< Projection > clone() const =0
Clone on the heap.
Cmp< Projection > mkPCmp(const Projection &otherparent, const std::string &pname) const
bool valid() const
Get the state of the projetion.
Definition Projection.hh:67
void setName(const std::string &name)
Used by derived classes to set their name.
Definition Projection.hh:148
virtual std::string name() const
Get the name of the projection.
Definition Projection.hh:62
bool before(const Projection &p) const
Log & getLog() const
Get a Log object based on the getName() property of the calling projection object.
Definition Projection.hh:142
friend class Cmp< Projection >
The Cmp specialization for Projection is a friend.
Definition Projection.hh:36
virtual ~Projection()=default
Virtual destructor for safe inheritability.
Cmp< Projection > mkNamedPCmp(const Projection &otherparent, const std::string &pname) const
virtual void project(const Event &e)=0
bool failed() const
Get the state of the projetion.
Definition Projection.hh:72
void fail()
Set the projection in an unvalid state.
Definition Projection.hh:153
Definition MC_CENT_PPB_Projections.hh:10