Common base class for Projection and Analysis, used for internal polymorphism. More...
#include <ProjectionApplier.hh>
Public Member Functions | |
ProjectionApplier () | |
Constructor. | |
virtual | ~ProjectionApplier () |
Metadata functions | |
virtual std::string | name () const =0 |
Get the name of this Projection or Analysis class. | |
Projection "getting" functions | |
std::set< ConstProjectionPtr > | getProjections () const |
Get the contained projections, including recursion. | |
template<typename PROJ > | |
const PROJ & | getProjection (const std::string &name) const |
Get the named projection, specifying return type via a template argument. | |
const Projection & | getProjection (const std::string &name) const |
Projection applying functions | |
template<typename PROJ > | |
const PROJ & | applyProjection (const Event &evt, const PROJ &proj) const |
Apply the supplied projection on event. | |
template<typename PROJ > | |
const PROJ & | applyProjection (const Event &evt, const Projection &proj) const |
Apply the supplied projection on event. | |
template<typename PROJ > | |
const PROJ & | applyProjection (const Event &evt, const std::string &name) const |
Apply the named projection on event. | |
Protected Member Functions | |
Log & | getLog () const |
ProjectionHandler & | getProjHandler () const |
Get a reference to the ProjectionHandler for this thread. | |
Projection registration functions | |
template<typename PROJ > | |
const PROJ & | addProjection (const PROJ &proj, const std::string &name) |
const Projection & | _addProjection (const Projection &proj, const std::string &name) |
Untemplated function to do the work... | |
Protected Attributes | |
bool | _allowProjReg |
Flag to forbid projection registration in analyses until the init phase. | |
Private Member Functions | |
const Projection & | _applyProjection (const Event &evt, const std::string &name) const |
const Projection & | _applyProjection (const Event &evt, const Projection &proj) const |
Private Attributes | |
ProjectionHandler * | _projhandler |
Pointer to projection handler. | |
Friends | |
class | Projectionhandler |
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)
Definition at line 34 of file ProjectionApplier.hh.
Constructor.
Definition at line 10 of file ProjectionApplier.cc.
00011 : _allowProjReg(true), 00012 _projhandler(ProjectionHandler::create()) 00013 { }
~ProjectionApplier | ( | ) | [virtual] |
Definition at line 16 of file ProjectionApplier.cc.
References ProjectionApplier::getProjHandler(), and ProjectionHandler::removeProjectionApplier().
00016 { 00017 getProjHandler().removeProjectionApplier(*this); 00018 }
const Projection & _addProjection | ( | const Projection & | proj, | |
const std::string & | name | |||
) | [protected] |
Untemplated function to do the work...
Definition at line 33 of file ProjectionApplier.cc.
References ProjectionApplier::_allowProjReg, Log::ERROR, ProjectionApplier::getLog(), ProjectionApplier::getProjHandler(), ProjectionApplier::name(), Projection::name(), and ProjectionHandler::registerProjection().
Referenced by ProjectionApplier::addProjection().
00034 { 00035 if (!_allowProjReg) { 00036 getLog() << Log::ERROR << "Trying to register projection '" 00037 << proj.name() << "' before init phase in '" << this->name() << "'." << endl; 00038 exit(2); 00039 } 00040 const Projection& reg = getProjHandler().registerProjection(*this, proj, name); 00041 return reg; 00042 }
const Projection & _applyProjection | ( | const Event & | evt, | |
const Projection & | proj | |||
) | const [private] |
Non-templated version of proj-based applyProjection, to work around header dependency issue.
Definition at line 27 of file ProjectionApplier.cc.
References Event::applyProjection().
const Projection & _applyProjection | ( | const Event & | evt, | |
const std::string & | name | |||
) | const [private] |
Non-templated version of string-based applyProjection, to work around header dependency issue.
Definition at line 21 of file ProjectionApplier.cc.
References Event::applyProjection(), and ProjectionApplier::getProjection().
Referenced by ProjectionApplier::applyProjection().
00022 { 00023 return evt.applyProjection(getProjection(name)); 00024 }
const PROJ& addProjection | ( | const PROJ & | proj, | |
const std::string & | name | |||
) | [inline, protected] |
Register a contained 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.
Definition at line 130 of file ProjectionApplier.hh.
References ProjectionApplier::_addProjection().
Referenced by ZFinder::_init(), WFinder::_init(), VetoedFinalState::addVetoOnThisFinalState(), CDF_2009_S8057893::CDF_2009_S8057893::init(), CentralEtHCM::CentralEtHCM(), ChargedFinalState::ChargedFinalState(), ChargedLeptons::ChargedLeptons(), ClosestJetShape::ClosestJetShape(), ClusteredPhotons::ClusteredPhotons(), DISKinematics::DISKinematics(), DISLepton::DISLepton(), FinalState::FinalState(), FinalStateHCM::FinalStateHCM(), FoxWolframMoments::FoxWolframMoments(), HadronicFinalState::HadronicFinalState(), Hemispheres::Hemispheres(), IdentifiedFinalState::IdentifiedFinalState(), ZEUS_2001_S4815815::init(), UA5_1989_S1926373::init(), UA5_1988_S1867512::init(), UA5_1987_S1640666::init(), UA5_1986_S1583476::init(), UA5_1982_S875503::init(), UA1_1990_S2044935::init(), STAR_2009_UE_HELEN::init(), STAR_2008_S7993412::init(), STAR_2008_S7869363::init(), STAR_2006_S6870392::init(), STAR_2006_S6860818::init(), STAR_2006_S6500200::init(), SFM_1984_S1178091::init(), PDG_HADRON_MULTIPLICITIES_RATIOS::init(), PDG_HADRON_MULTIPLICITIES::init(), OPAL_2004_S6132243::init(), OPAL_2001_S4553896::init(), OPAL_1998_S3780481::init(), OPAL_1993_S2692198::init(), MC_ZZJETS::init(), MC_ZJETS::init(), MC_WWJETS::init(), MC_WJETS::init(), MC_TTBAR::init(), MC_SUSY::init(), MC_PHOTONJETUE::init(), MC_PHOTONJETS::init(), MC_LEADINGJETS::init(), MC_JETS::init(), MC_HJETS::init(), MC_GENERIC::init(), MC_DIPHOTON::init(), MC_DIJET::init(), LHCB_2010_S8758301::init(), JADE_OPAL_2000_S4300807::init(), H1_2000_S4129130::init(), H1_1995_S3167097::init(), H1_1994_S2919893::init(), ExampleAnalysis::init(), E735_1998_S3905616::init(), DELPHI_2002_069_CONF_603::init(), DELPHI_1995_S3137023::init(), D0_2010_S8671338::init(), D0_2010_S8570965::init(), D0_2010_S8566488::init(), D0_2009_S8349509::init(), D0_2009_S8320160::init(), D0_2009_S8202443::init(), D0_2008_S7863608::init(), D0_2008_S7837160::init(), D0_2008_S7719523::init(), D0_2008_S7662670::init(), D0_2008_S7554427::init(), D0_2008_S6879055::init(), D0_2007_S7075677::init(), D0_2006_S6438750::init(), D0_2004_S5992206::init(), D0_2001_S4674421::init(), D0_2000_S4480767::init(), D0_1998_S3711838::init(), D0_1996_S3324664::init(), D0_1996_S3214044::init(), CDF_2009_S8436959::init(), CDF_2009_S8383952::init(), CDF_2009_S8233977::init(), CDF_2009_NOTE_9936::init(), CDF_2008_S8095620::init(), CDF_2008_S8093652::init(), CDF_2008_S7828950::init(), CDF_2008_S7782535::init(), CDF_2008_S7541902::init(), CDF_2008_S7540469::init(), CDF_2008_NOTE_9351::init(), CDF_2008_LEADINGJETS::init(), CDF_2007_S7057202::init(), CDF_2006_S6653332::init(), CDF_2006_S6450792::init(), CDF_2005_S6217184::init(), CDF_2005_S6080774::init(), CDF_2004_S5839831::init(), CDF_2002_S4796047::init(), CDF_2001_S4751469::init(), CDF_2001_S4563131::init(), CDF_2001_S4517016::init(), CDF_2000_S4266730::init(), CDF_2000_S4155203::init(), CDF_1998_S3618439::init(), CDF_1997_S3541940::init(), CDF_1996_S3418421::init(), CDF_1996_S3349578::init(), CDF_1996_S3108457::init(), CDF_1994_S2952106::init(), CDF_1993_S2742446::init(), CDF_1991_S2313472::init(), CDF_1990_S2089246::init(), CDF_1988_S1865951::init(), BELLE_2006_S6265367::init(), ATLAS_2010_S8817804::init(), ATLAS_2010_S8591806::init(), ATLAS_2010_CONF_2010_083::init(), ATLAS_2010_CONF_2010_081::init(), ATLAS_2010_CONF_2010_049::init(), ATLAS_2010_CONF_2010_031::init(), ALICE_2010_S8706239::init(), ALICE_2010_S8625980::init(), ALICE_2010_S8624100::init(), ALEPH_2004_S5765862::init(), ALEPH_1996_S3486095::init(), ALEPH_1996_S3196992::init(), ALEPH_1991_S2435284::init(), IsolationProjection< PROJ1, PROJ2, EST >::IsolationProjection(), JetAlg::JetAlg(), JetShape::JetShape(), LeadingParticlesFinalState::LeadingParticlesFinalState(), LossyFinalState< ConstRandomFilter >::LossyFinalState(), MergedFinalState::MergedFinalState(), Multiplicity::Multiplicity(), NeutralFinalState::NeutralFinalState(), ParisiTensor::ParisiTensor(), Sphericity::Sphericity(), SVertex::SVertex(), Thrust::Thrust(), TotalVisibleMomentum::TotalVisibleMomentum(), TriggerCDFRun0Run1::TriggerCDFRun0Run1(), TriggerCDFRun2::TriggerCDFRun2(), TriggerUA5::TriggerUA5(), and VetoedFinalState::VetoedFinalState().
00130 { 00131 const Projection& reg = _addProjection(proj, name); 00132 const PROJ& rtn = dynamic_cast<const PROJ&>(reg); 00133 return rtn; 00134 }
const PROJ& applyProjection | ( | const Event & | evt, | |
const std::string & | name | |||
) | const [inline] |
Apply the named projection on event.
Definition at line 97 of file ProjectionApplier.hh.
References ProjectionApplier::_applyProjection().
00097 { 00098 return pcast<PROJ>(_applyProjection(evt, name)); 00099 }
const PROJ& applyProjection | ( | const Event & | evt, | |
const Projection & | proj | |||
) | const [inline] |
Apply the supplied projection on event.
Definition at line 90 of file ProjectionApplier.hh.
References ProjectionApplier::_applyProjection().
00090 { 00091 return pcast<PROJ>(_applyProjection(evt, proj)); 00092 }
const PROJ& applyProjection | ( | const Event & | evt, | |
const PROJ & | proj | |||
) | const [inline] |
Apply the supplied projection on event.
Definition at line 83 of file ProjectionApplier.hh.
References ProjectionApplier::_applyProjection().
Referenced by HadronicFinalState::project(), and FinalStateHCM::project().
00083 { 00084 return pcast<PROJ>(_applyProjection(evt, proj)); 00085 }
Log& getLog | ( | ) | const [inline, protected] |
Reimplemented in Analysis, and Projection.
Definition at line 105 of file ProjectionApplier.hh.
Referenced by ProjectionApplier::_addProjection().
00105 { 00106 return Log::getLog("Rivet.ProjectionHandler"); 00107 }
const Projection& getProjection | ( | const std::string & | name | ) | const [inline] |
Get the named projection (non-templated, so returns as a reference to a Projection base class).
Definition at line 73 of file ProjectionApplier.hh.
References ProjectionHandler::getProjection(), and ProjectionApplier::getProjHandler().
00073 { 00074 return getProjHandler().getProjection(*this, name); 00075 }
const PROJ& getProjection | ( | const std::string & | name | ) | const [inline] |
Get the named projection, specifying return type via a template argument.
Definition at line 65 of file ProjectionApplier.hh.
References ProjectionHandler::getProjection(), and ProjectionApplier::getProjHandler().
Referenced by ProjectionApplier::_applyProjection(), Rivet::pcmp(), and Hemispheres::project().
00065 { 00066 const Projection& p = getProjHandler().getProjection(*this, name); 00067 return pcast<PROJ>(p); 00068 }
std::set<ConstProjectionPtr> getProjections | ( | ) | const [inline] |
Get the contained projections, including recursion.
Definition at line 58 of file ProjectionApplier.hh.
References ProjectionHandler::DEEP, ProjectionHandler::getChildProjections(), and ProjectionApplier::getProjHandler().
Referenced by Projection::beamPairs().
00058 { 00059 return getProjHandler().getChildProjections(*this, ProjectionHandler::DEEP); 00060 }
ProjectionHandler& getProjHandler | ( | ) | const [inline, protected] |
Get a reference to the ProjectionHandler for this thread.
Definition at line 110 of file ProjectionApplier.hh.
References ProjectionApplier::_projhandler.
Referenced by ProjectionApplier::_addProjection(), ProjectionApplier::getProjection(), ProjectionApplier::getProjections(), and ProjectionApplier::~ProjectionApplier().
00110 { 00111 assert(_projhandler); 00112 return *_projhandler; 00113 }
virtual std::string name | ( | ) | const [pure virtual] |
Get the name of this Projection or Analysis class.
Implemented in Analysis, and Projection.
Referenced by ProjectionApplier::_addProjection(), ProjectionHandler::_checkDuplicate(), and ProjectionHandler::registerProjection().
friend class Projectionhandler [friend] |
Definition at line 38 of file ProjectionApplier.hh.
bool _allowProjReg [protected] |
Flag to forbid projection registration in analyses until the init phase.
Definition at line 157 of file ProjectionApplier.hh.
Referenced by ProjectionApplier::_addProjection(), and Analysis::Analysis().
ProjectionHandler* _projhandler [private] |
Pointer to projection handler.
Definition at line 163 of file ProjectionApplier.hh.
Referenced by ProjectionApplier::getProjHandler().