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::stringname() const =0
Get the name of this Projection or Analysis class.
std::set< ConstProjectionPtr >getProjections() const
Get the contained projections, including recursion.
boolhasProjection(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).
voidmarkAsOwned() 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