2 #ifndef RIVET_ProjectionApplier_HH
3 #define RIVET_ProjectionApplier_HH
5 #include "Rivet/Rivet.hh"
6 #include "Rivet/Event.fhh"
7 #include "Rivet/Projection.fhh"
8 #include "Rivet/ProjectionHandler.hh"
9 #include "Rivet/Tools/Logging.hh"
36 virtual std::string
name()
const = 0;
48 template <
typename PROJ>
51 return pcast<PROJ>(p);
66 template <
typename PROJ>
68 return pcast<PROJ>(_applyProjection(evt, proj));
73 template <
typename PROJ>
75 return pcast<PROJ>(_applyProjection(evt, proj));
80 template <
typename PROJ>
82 return pcast<PROJ>(_applyProjection(evt, name));
112 template <
typename PROJ>
114 const Projection& reg = _addProjection(proj, name);
115 const PROJ& rtn =
dynamic_cast<const PROJ&
>(reg);