class Rivet::Projection
Rivet::Projection
Base class for all Rivet projections. More…
#include <Projection.hh>
Inherits from Rivet::ProjectionApplier
Inherited by Rivet::AxesDefinition, Rivet::Beam, Rivet::BeamThrust, Rivet::CentralEtHCM, Rivet::CentralityEstimator, Rivet::Correlators, Rivet::DISDiffHadron, Rivet::DISKinematics, Rivet::DISRapidityGap, Rivet::EventMixingBase, Rivet::FParameter, Rivet::GammaGammaKinematics, Rivet::GammaGammaLeptons, Rivet::Hemispheres, Rivet::HepMCHeavyIon, Rivet::InitialQuarks, Rivet::JetFinder, Rivet::JetShape, Rivet::METFinder, Rivet::ParisiTensor, Rivet::ParticleFinder, Rivet::SingleValueProjection, Rivet::TriggerCDFRun0Run1, Rivet::TriggerCDFRun2, Rivet::TriggerProjection, Rivet::TriggerUA5
Public Functions
Name | |
---|---|
Projection() The default constructor. | |
virtual unique_ptr< Projection > | clone() const =0 Clone on the heap. |
virtual | ~Projection() The destructor. |
virtual std::string | name() const Get the name of the projection. |
bool | valid() const Get the state of the projetion. |
bool | failed() const Get the state of the projetion. |
virtual void | project(const Event & e) =0 |
virtual CmpState | compare(const Projection & p) const =0 |
bool | before(const Projection & p) const |
virtual const std::set< PdgIdPair > | beamPairs() const |
Projection & | addPdgIdPair(PdgId beam1, PdgId beam2) |
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 |
const Projection & | getProjection(const std::string & name) const |
template <typename PROJ > const PROJ & | get(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 & > | applyProjection(const Event & evt, const PROJ & proj) const |
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 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 & > | 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 & > | 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. |
Protected Functions
Name | |
---|---|
Log & | getLog() const Get a Log object based on the getName() property of the calling projection object. |
void | setName(const std::string & name) Used by derived classes to set their name. |
void | fail() Set the projection in an unvalid state. |
Cmp< Projection > | mkNamedPCmp(const Projection & otherparent, const std::string & pname) const |
Cmp< Projection > | mkPCmp(const Projection & otherparent, const std::string & pname) const |
virtual Projection & | operator=(const Projection & ) Block Projection copying. |
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) |
Friends
Name | |
---|---|
class | Event Event is a friend. |
class | Cmp< Projection > The Cmp specialization for Projection is a friend. |
Additional inherited members
Public Functions inherited from Rivet::ProjectionApplier
Name | |
---|---|
ProjectionApplier() Constructor. | |
virtual | ~ProjectionApplier() |
Detailed Description
class Rivet::Projection;
Base class for all Rivet projections.
Projection is the base class of all Projections to be used by Rivet. A Projection object can be assigned to an Event object and will then define a processed part of the information available in the Event, which then can be used by other Projection objects and/or Analysis objects.
The main virtual functions to be overridden by concrete sub-classes are project(const Event &) and compare(const Projection &).
Public Functions Documentation
function Projection
Projection()
The default constructor.
function clone
virtual unique_ptr< Projection > clone() const =0
Clone on the heap.
Reimplemented by: Rivet::ALICE::V0Multiplicity::clone, Rivet::ALICE::CLMultiplicity::clone, Rivet::ALICE::V0Trigger::clone, Rivet::ALICE::V0AndTrigger::clone, Rivet::ALICE::PrimaryParticles::clone, Rivet::AxesDefinition::clone, Rivet::FastJets::clone, Rivet::ChargedFinalState::clone
function ~Projection
virtual ~Projection()
The destructor.
function name
inline virtual std::string name() const
Get the name of the projection.
Reimplements: Rivet::ProjectionApplier::name
function valid
inline bool valid() const
Get the state of the projetion.
function failed
inline bool failed() const
Get the state of the projetion.
function project
virtual void project(
const Event & e
) =0
Reimplemented by: Rivet::MC_SumETFwdPbCentrality::project, Rivet::ALICE::V0Multiplicity::project, Rivet::ALICE::CLMultiplicity::project, Rivet::ALICE::V0Trigger::project, Rivet::ALICE::V0AndTrigger::project, Rivet::Beam::project, Rivet::BeamThrust::project, Rivet::CentralEtHCM::project, Rivet::CentralityProjection::project, Rivet::ChargedFinalState::project, Rivet::DISDiffHadron::project, Rivet::DISFinalState::project, Rivet::DISKinematics::project, Rivet::DISLepton::project, Rivet::DISRapidityGap::project, Rivet::DressedLeptons::project, Rivet::EventMixingBase::project, Rivet::FastJets::project, Rivet::FinalPartons::project, Rivet::FinalState::project, Rivet::FParameter::project, Rivet::GammaGammaFinalState::project, Rivet::GammaGammaKinematics::project, Rivet::GammaGammaLeptons::project, Rivet::GeneratedPercentileProjection::project, Rivet::HadronicFinalState::project, Rivet::HeavyHadrons::project, Rivet::Hemispheres::project, Rivet::HepMCHeavyIon::project, Rivet::IdentifiedFinalState::project, Rivet::ImpactParameterProjection::project, Rivet::InitialQuarks::project, Rivet::InvisibleFinalState::project, Rivet::InvMassFinalState::project, Rivet::JetShape::project, Rivet::LeadingParticlesFinalState::project, Rivet::ConstLossyFinalState::project, Rivet::ConstLossyFinalState::project, Rivet::MergedFinalState::project, Rivet::MissingMomentum::project, Rivet::NeutralFinalState::project, Rivet::NonHadronicFinalState::project, Rivet::NonPromptFinalState::project, Rivet::ParisiTensor::project, Rivet::PercentileProjection::project, Rivet::PrimaryHadrons::project, Rivet::PrimaryParticles::project, Rivet::PromptFinalState::project, Rivet::SmearedJets::project, Rivet::SmearedMET::project, Rivet::SmearedParticles::project, Rivet::Sphericity::project, Rivet::Spherocity::project, Rivet::TauFinder::project, Rivet::Thrust::project, Rivet::TriggerProjection::project, Rivet::UndressBeamLeptons::project, Rivet::UnstableParticles::project, Rivet::UserCentEstimate::project, Rivet::VetoedFinalState::project, Rivet::VisibleFinalState::project, Rivet::WFinder::project, Rivet::ZFinder::project, Rivet::ATLAS::SumET_PB_Centrality::project, Rivet::ATLAS::SumET_PBPB_Centrality::project, Rivet::CentralityEstimator::project, Rivet::GeneratedCentrality::project, Rivet::Correlators::project, Rivet::STAR_BES_Centrality::project, Rivet::BRAHMSCentrality::project, Rivet::JetFinder::project, Rivet::ParticleFinder::project, Rivet::MC_pPbMinBiasTrigger::project, Rivet::PartonicTops::project, Rivet::ATLAS::MinBiasTrigger::project, Rivet::ChargedLeptons::project, Rivet::TriggerCDFRun0Run1::project, Rivet::TriggerCDFRun2::project, Rivet::TriggerUA5::project
Take the information available in the Event and make the calculations necessary to obtain the projection. Note that this function must never be called except inside the Event::applyProjection(Projection *) function.
function compare
virtual CmpState compare(
const Projection & p
) const =0
Reimplemented by: Rivet::Beam::compare, Rivet::TriggerCDFRun0Run1::compare, Rivet::TriggerCDFRun2::compare, Rivet::TriggerProjection::compare, Rivet::TriggerUA5::compare, Rivet::ChargedLeptons::compare, Rivet::MC_SumETFwdPbCentrality::compare, Rivet::MC_pPbMinBiasTrigger::compare, Rivet::ALICE::V0Multiplicity::compare, Rivet::ALICE::CLMultiplicity::compare, Rivet::ALICE::V0Trigger::compare, Rivet::ALICE::V0AndTrigger::compare, Rivet::ALICE::PrimaryParticles::compare, Rivet::BeamThrust::compare, Rivet::CentralEtHCM::compare, Rivet::CentralityProjection::compare, Rivet::ChargedFinalState::compare, Rivet::DISDiffHadron::compare, Rivet::DISFinalState::compare, Rivet::DISKinematics::compare, Rivet::DISLepton::compare, Rivet::DISRapidityGap::compare, Rivet::DressedLeptons::compare, Rivet::EventMixingBase::compare, Rivet::FastJets::compare, Rivet::FinalPartons::compare, Rivet::FParameter::compare, Rivet::GammaGammaFinalState::compare, Rivet::GammaGammaKinematics::compare, Rivet::GammaGammaLeptons::compare, Rivet::GeneratedPercentileProjection::compare, Rivet::HadronicFinalState::compare, Rivet::HeavyHadrons::compare, Rivet::Hemispheres::compare, Rivet::HepMCHeavyIon::compare, Rivet::IdentifiedFinalState::compare, Rivet::ImpactParameterProjection::compare, Rivet::InitialQuarks::compare, Rivet::InvisibleFinalState::compare, Rivet::InvMassFinalState::compare, Rivet::JetShape::compare, Rivet::LeadingParticlesFinalState::compare, Rivet::ConstLossyFinalState::compare, Rivet::ConstLossyFinalState::compare, Rivet::MergedFinalState::compare, Rivet::MissingMomentum::compare, Rivet::NeutralFinalState::compare, Rivet::NonHadronicFinalState::compare, Rivet::NonPromptFinalState::compare, Rivet::ParisiTensor::compare, Rivet::ParticleFinder::compare, Rivet::PartonicTops::compare, Rivet::PercentileProjection::compare, Rivet::PrimaryParticles::compare, Rivet::PromptFinalState::compare, Rivet::SmearedJets::compare, Rivet::SmearedMET::compare, Rivet::SmearedParticles::compare, Rivet::Sphericity::compare, Rivet::Spherocity::compare, Rivet::TauFinder::compare, Rivet::Thrust::compare, Rivet::UndressBeamLeptons::compare, Rivet::UserCentEstimate::compare, Rivet::VetoedFinalState::compare, Rivet::VisibleFinalState::compare, Rivet::WFinder::compare, Rivet::ZFinder::compare, Rivet::ATLAS::SumET_PB_Centrality::compare, Rivet::ATLAS::SumET_PBPB_Centrality::compare, Rivet::ATLAS::MinBiasTrigger::compare, Rivet::CentralityEstimator::compare, Rivet::GeneratedCentrality::compare, Rivet::Correlators::compare, Rivet::STAR_BES_Centrality::compare, Rivet::BRAHMSCentrality::compare, Rivet::JetFinder::compare
This function is used to define a unique ordering between different Projection objects of the same class. If this is considered to be equivalent to the Projector object, p, in the argument the function should return 0. If this object should be ordered before p a negative value should be returned, otherwise a positive value should be returned. This function must never be called explicitly, but should only be called from the operator<(const Projection &). When implementing the function in concrete sub-classes, it is then guaranteed that the Projection object p in the argument is of the same class as the sub-class and can be safely dynamically casted to that class.
When implementing this function in a sub-class, the immediate base class version of the function should be called first. If the base class function returns a non-zero value, that value should be returned immediately. Only if zero is returned should this function check the member variables of the sub-class to determine whether this should be ordered before or after p, or if it is equivalent with p.
function before
bool before(
const Projection & p
) const
Determine whether this object should be ordered before the object p given as argument. If p is of a different class than this, the before() function of the corresponding type_info objects is used. Otherwise, if the objects are of the same class, the virtual compare(const Projection &) will be returned.
function beamPairs
virtual const std::set< PdgIdPair > beamPairs() const
Todo: Remove the beam constraints system from projections.
Return the allowed beam pairs on which this projection can operate, not including recursion. Derived classes should ensure that all contained projections are registered in the _projections set for the beam constraint chaining to work.
function addPdgIdPair
inline Projection & addPdgIdPair(
PdgId beam1,
PdgId beam2
)
Todo: This deserves a better name!
Add a colliding beam pair.
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 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 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 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 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 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 Projection & proj
) 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 Event & evt,
const PROJ & proj
) 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 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.
Protected Functions Documentation
function getLog
inline Log & getLog() const
Get a Log object based on the getName() property of the calling projection object.
function setName
inline void setName(
const std::string & name
)
Used by derived classes to set their name.
function fail
inline void fail()
Set the projection in an unvalid state.
function mkNamedPCmp
Cmp< Projection > mkNamedPCmp(
const Projection & otherparent,
const std::string & pname
) const
Shortcut to make a named Cmp*this
object automatically passed as one of the parent projections.
function mkPCmp
Cmp< Projection > mkPCmp(
const Projection & otherparent,
const std::string & pname
) const
Note: Alias for mkNamedPCmp
Shortcut to make a named Cmp*this
object automatically passed as one of the parent projections.
function operator=
virtual Projection & operator=(
const Projection &
)
Block Projection copying.
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
Friends
friend Event
friend class Event(
Event
);
Event is a friend.
friend Cmp< Projection >
friend class Cmp< Projection >(
Cmp< Projection >
);
The Cmp specialization for Projection is a friend.
Updated on 2022-08-07 at 20:17:17 +0100