class Rivet::ProjectionApplier
Rivet::ProjectionApplier
Common base class for Projection and Analysis, used for internal polymorphism. More…
#include <ProjectionApplier.hh>
Inherited by Rivet::Analysis, Rivet::CentralityBinner< T, MDist >, Rivet::Projection
Public Functions
Name | |
---|---|
virtual std::string | name() const =0 Get the name of this Projection or Analysis class. |
std::set< ConstProjectionPtr > | getProjections() const Get the contained projections, including recursion. |
bool | hasProjection(const std::string & name) const Does this applier have a projection registered under the name name? |
template <typename PROJ > const PROJ & | getProjection(const std::string & name) const |
template <typename PROJ > const PROJ & | get(const std::string & name) const |
const Projection & | getProjection(const std::string & name) const |
template std::enable_if_t< std::is_base_of< Projection, PROJ >::value, const PROJ & > | applyProjection(const Event & evt, const Projection & proj) const |
template std::enable_if_t< std::is_base_of< Projection, PROJ >::value, const PROJ & > | apply(const Event & evt, const Projection & proj) const Apply the supplied projection on event evt (user-facing alias). |
template std::enable_if_t< std::is_base_of< Projection, PROJ >::value, const PROJ & > | applyProjection(const Event & evt, const PROJ & proj) const |
template std::enable_if_t< std::is_base_of< Projection, PROJ >::value, const PROJ & > | apply(const Event & evt, const PROJ & proj) const Apply the supplied projection on event evt (user-facing alias). |
template std::enable_if_t< std::is_base_of< Projection, PROJ >::value, const PROJ & > | applyProjection(const Event & evt, const std::string & name) const |
template std::enable_if_t< std::is_base_of< Projection, PROJ >::value, const PROJ & > | apply(const Event & evt, const std::string & name) const Apply the supplied projection on event evt (user-facing alias). |
template std::enable_if_t< std::is_base_of< Projection, PROJ >::value, const PROJ & > | apply(const std::string & name, const Event & evt) const Apply the supplied projection on event evt (convenience arg-reordering alias). |
void | markAsOwned() const Mark this object as owned by a proj-handler. |
ProjectionApplier() Constructor. | |
virtual | ~ProjectionApplier() |
Protected Functions
Name | |
---|---|
Log & | getLog() const |
ProjectionHandler & | getProjHandler() const Get a reference to the ProjectionHandler for this thread. |
template <typename PROJ > const PROJ & | declareProjection(const PROJ & proj, const std::string & name) Register a contained projection. |
template <typename PROJ > const PROJ & | declare(const PROJ & proj, const std::string & name) Register a contained projection (user-facing version) |
template <typename PROJ > const PROJ & | declare(const std::string & name, const PROJ & proj) Register a contained projection (user-facing, arg-reordered version) |
Detailed Description
class Rivet::ProjectionApplier;
Common base class for Projection and Analysis, used for internal polymorphism.
Empty interface used for storing Projection and Analysis pointers in the same container (used by the ProjectionHandler)
Public Functions Documentation
function name
virtual std::string name() const =0
Get the name of this Projection or Analysis class.
Reimplemented by: Rivet::Analysis::name, Rivet::AxesDefinition::name, Rivet::CentralityBinner::name
function getProjections
inline std::set< ConstProjectionPtr > getProjections() const
Get the contained projections, including recursion.
function hasProjection
inline bool hasProjection(
const std::string & name
) const
Does this applier have a projection registered under the name name?
function getProjection
template <typename PROJ >
inline const PROJ & getProjection(
const std::string & name
) const
Todo: Add SFINAE to require that PROJ inherit from Projection
Get the named projection, specifying return type via a template argument.
function get
template <typename PROJ >
inline const PROJ & get(
const std::string & name
) const
Todo: Add SFINAE to require that PROJ inherit from Projection
Get the named projection, specifying return type via a template argument (user-facing alias).
function getProjection
inline const Projection & getProjection(
const std::string & name
) const
Get the named projection (non-templated, so returns as a reference to a Projection base class).
function applyProjection
template <typename PROJ =Projection>
inline std::enable_if_t< std::is_base_of< Projection, PROJ >::value, const PROJ & > applyProjection(
const Event & evt,
const Projection & proj
) const
Deprecated:
Prefer the simpler apply<> form
Apply the supplied projection on event evt.
function apply
template <typename PROJ =Projection>
inline std::enable_if_t< std::is_base_of< Projection, PROJ >::value, const PROJ & > apply(
const Event & evt,
const Projection & proj
) const
Apply the supplied projection on event evt (user-facing alias).
function applyProjection
template <typename PROJ =Projection>
inline std::enable_if_t< std::is_base_of< Projection, PROJ >::value, const PROJ & > applyProjection(
const Event & evt,
const PROJ & proj
) const
Deprecated:
Prefer the simpler apply<> form
Apply the supplied projection on event evt.
function apply
template <typename PROJ =Projection>
inline std::enable_if_t< std::is_base_of< Projection, PROJ >::value, const PROJ & > apply(
const Event & evt,
const PROJ & proj
) const
Apply the supplied projection on event evt (user-facing alias).
function applyProjection
template <typename PROJ =Projection>
inline std::enable_if_t< std::is_base_of< Projection, PROJ >::value, const PROJ & > applyProjection(
const Event & evt,
const std::string & name
) const
Deprecated:
Prefer the simpler apply<> form
Apply the named projection on event evt.
function apply
template <typename PROJ =Projection>
inline std::enable_if_t< std::is_base_of< Projection, PROJ >::value, const PROJ & > apply(
const Event & evt,
const std::string & name
) const
Apply the supplied projection on event evt (user-facing alias).
function apply
template <typename PROJ =Projection>
inline std::enable_if_t< std::is_base_of< Projection, PROJ >::value, const PROJ & > apply(
const std::string & name,
const Event & evt
) const
Apply the supplied projection on event evt (convenience arg-reordering alias).
function markAsOwned
inline void markAsOwned() const
Mark this object as owned by a proj-handler.
function ProjectionApplier
ProjectionApplier()
Constructor.
function ~ProjectionApplier
virtual ~ProjectionApplier()
Protected Functions Documentation
function getLog
inline Log & getLog() const
function getProjHandler
inline ProjectionHandler & getProjHandler() const
Get a reference to the ProjectionHandler for this thread.
function declareProjection
template <typename PROJ >
inline const PROJ & declareProjection(
const PROJ & proj,
const std::string & name
)
Register a contained projection.
Todo: Add SFINAE to require that PROJ inherit from Projection
The type of the argument is used to instantiate a new projection internally: this new object is applied to events rather than the argument object. Hence you are advised to only use locally-scoped Projection objects in your Projection and Analysis constructors, and to avoid polymorphism (e.g. handling ConcreteProjection
via a pointer or reference to type Projection
) since this will screw up the internal type management.
function declare
template <typename PROJ >
inline const PROJ & declare(
const PROJ & proj,
const std::string & name
)
Register a contained projection (user-facing version)
Todo: Add SFINAE to require that PROJ inherit from Projection
function declare
template <typename PROJ >
inline const PROJ & declare(
const std::string & name,
const PROJ & proj
)
Register a contained projection (user-facing, arg-reordered version)
Todo: Add SFINAE to require that PROJ inherit from Projection
Updated on 2022-08-07 at 20:17:17 +0100