#include <ProjectionApplier.hh>
Definition at line 19 of file 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 |
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 }
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().
std::set<ConstProjectionPtr> getProjections | ( | ) | const [inline] |
Get the contained projections, including recursion.
Definition at line 43 of file ProjectionApplier.hh.
References ProjectionHandler::DEEP, ProjectionHandler::getChildProjections(), and ProjectionApplier::getProjHandler().
Referenced by Projection::beamPairs().
00043 { 00044 return getProjHandler().getChildProjections(*this, ProjectionHandler::DEEP); 00045 }
const PROJ& getProjection | ( | const std::string & | name | ) | const [inline] |
Get the named projection, specifying return type via a template argument.
Definition at line 50 of file ProjectionApplier.hh.
References ProjectionHandler::getProjection(), and ProjectionApplier::getProjHandler().
Referenced by VetoedFinalState::compare(), Rivet::pcmp(), and Hemispheres::project().
00050 { 00051 const Projection& p = getProjHandler().getProjection(*this, name); 00052 return pcast<PROJ>(p); 00053 }
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 58 of file ProjectionApplier.hh.
References ProjectionHandler::getProjection(), and ProjectionApplier::getProjHandler().
00058 { 00059 return getProjHandler().getProjection(*this, name); 00060 }
const PROJ& applyProjection | ( | const Event & | evt, | |
const PROJ & | proj | |||
) | const [inline] |
Apply the supplied projection on event.
Definition at line 68 of file ProjectionApplier.hh.
References ProjectionApplier::_applyProjection().
Referenced by HadronicFinalState::project(), and FinalStateHCM::project().
00068 { 00069 return pcast<PROJ>(_applyProjection(evt, proj)); 00070 }
const PROJ& applyProjection | ( | const Event & | evt, | |
const Projection & | proj | |||
) | const [inline] |
Apply the supplied projection on event.
Definition at line 75 of file ProjectionApplier.hh.
References ProjectionApplier::_applyProjection().
00075 { 00076 return pcast<PROJ>(_applyProjection(evt, proj)); 00077 }
const PROJ& applyProjection | ( | const Event & | evt, | |
const std::string & | name | |||
) | const [inline] |
Apply the named projection on event.
Definition at line 82 of file ProjectionApplier.hh.
References ProjectionApplier::_applyProjection().
00082 { 00083 return pcast<PROJ>(_applyProjection(evt, name)); 00084 }
Log& getLog | ( | ) | const [inline, protected] |
Reimplemented in Analysis, and Projection.
Definition at line 90 of file ProjectionApplier.hh.
References Log::getLog().
Referenced by ProjectionApplier::_addProjection().
00090 { 00091 return Log::getLog("Rivet.ProjectionHandler"); 00092 }
ProjectionHandler& getProjHandler | ( | ) | const [inline, protected] |
Get a reference to the ProjectionHandler for this thread.
Definition at line 95 of file ProjectionApplier.hh.
References ProjectionApplier::_projhandler.
Referenced by ProjectionApplier::_addProjection(), ProjectionApplier::getProjection(), ProjectionApplier::getProjections(), and ProjectionApplier::~ProjectionApplier().
00095 { 00096 assert(_projhandler); 00097 return *_projhandler; 00098 }
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 115 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(), 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_1986_S1583476::init(), UA5_1982_S875503::init(), UA1_1990_S2044935::init(), STAR_2009_UE_HELEN::init(), STAR_2008_S7993412::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_1998_S3780481::init(), MC_ZJETS::init(), MC_WJETS::init(), MC_TTBAR::init(), MC_SUSY::init(), MC_PHOTONJETUE::init(), MC_PHOTONJETS::init(), MC_LEADINGJETS::init(), MC_JETS::init(), MC_DIPHOTON::init(), MC_DIJET::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_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_1998_S3711838::init(), D0_1996_S3324664::init(), D0_1996_S3214044::init(), CDF_2009_S8436959::init(), CDF_2009_S8383952::init(), CDF_2009_S8233977::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_1991_S2313472::init(), CDF_1990_S2089246::init(), CDF_1988_S1865951::init(), BELLE_2006_S6265367::init(), ATLAS_2010_S8591806::init(), ALEPH_2004_S5765862::init(), ALEPH_1996_S3486095::init(), ALEPH_1996_S3196992::init(), ALEPH_1991_S2435284::init(), IsolationProjection::IsolationProjection(), JetAlg::JetAlg(), JetShape::JetShape(), KtJets::KtJets(), LeadingParticlesFinalState::LeadingParticlesFinalState(), LossyFinalState::LossyFinalState(), MergedFinalState::MergedFinalState(), Multiplicity::Multiplicity(), NeutralFinalState::NeutralFinalState(), ParisiTensor::ParisiTensor(), Sphericity::Sphericity(), SVertex::SVertex(), Thrust::Thrust(), TotalVisibleMomentum::TotalVisibleMomentum(), TriggerCDFRun0Run1::TriggerCDFRun0Run1(), TriggerUA5::TriggerUA5(), and VetoedFinalState::VetoedFinalState().
00115 { 00116 const Projection& reg = _addProjection(proj, name); 00117 return dynamic_cast<const PROJ&>(reg); 00118 }
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 std::string & | name | |||
) | const [private] |
Non-templated version of string-based applyProjection, to work around header dependency issue.
Referenced by ProjectionApplier::applyProjection().
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().
friend class Projectionhandler [friend] |
Definition at line 23 of file ProjectionApplier.hh.
bool _allowProjReg [protected] |
Flag to forbid projection registration in analyses until the init phase.
Definition at line 141 of file ProjectionApplier.hh.
Referenced by ProjectionApplier::_addProjection(), and AnalysisHandler::init().
ProjectionHandler* _projhandler [private] |
Pointer to projection handler.
Definition at line 147 of file ProjectionApplier.hh.
Referenced by ProjectionApplier::getProjHandler().