5 #include "Rivet/Config/RivetCommon.hh" 6 #include "Rivet/Particle.hh" 7 #include "Rivet/Projection.hh" 29 Event(
const GenEvent* ge,
bool strip =
false)
30 : _genevent_original(ge) {
33 if ( strip ) _strip(_genevent);
39 Event(
const GenEvent& ge,
bool strip =
false)
40 : _genevent_original(&ge), _genevent(ge) {
41 if ( strip ) _strip(_genevent);
47 : _genevent_original(e._genevent_original), _genevent(e._genevent)
57 const GenEvent*
genEvent()
const {
return &_genevent; }
63 ParticlePair
beams()
const;
90 template <
typename FN>
99 std::valarray<double>
weights()
const;
102 DEPRECATED(
"Event weight does not need to be included anymore. For compatibility, it's always == 1 now.")
123 template <
typename PROJ>
126 static bool docaching =
getEnvParam(
"RIVET_CACHE_PROJECTIONS",
true);
128 log << Log::TRACE <<
"Applying projection " << &p <<
" (" << p.name() <<
") -> comparing to projections " << _projections << std::endl;
133 std::set<const Projection*>::const_iterator old = std::begin(_projections);
134 std::uintptr_t recpp =
reinterpret_cast<std::uintptr_t
>(cpp);
135 for (; old != _projections.end(); ++old)
136 if (reinterpret_cast<std::uintptr_t>(*old) == recpp)
break;
137 if (old != _projections.end()) {
138 log << Log::TRACE <<
"Equivalent projection found -> returning already-run projection " << *old << std::endl;
140 return pcast<PROJ>(pRef);
142 log << Log::TRACE <<
"No equivalent projection in the already-run list -> projecting now" << std::endl;
144 log << Log::TRACE <<
"Applying projection " << &p <<
" (" << p.name() <<
") WITHOUT projection caching & comparison" << std::endl;
150 if (docaching) _projections.insert(pp);
156 template <
typename PROJ>
158 if (!pp)
throw Error(
"Event::applyProjection(PROJ*): Projection pointer is null.");
168 void _init(
const GenEvent& ge);
172 void _strip(GenEvent & ge);
187 const GenEvent* _genevent_original;
198 mutable GenEvent _genevent;
202 mutable Particles _particles;
205 mutable std::set<ConstProjectionPtr> _projections;
const GenEvent * originalGenEvent() const
The generated event obtained from an external event generator.
Definition: Event.hh:60
Particles allParticles(const FN &f) const
All the raw GenEvent particles, wrapped in Rivet::Particle objects, but with a selection function app...
Definition: Event.hh:91
Definition: MC_Cent_pPb.hh:10
T getEnvParam(const std::string name, const T &fallback)
Get a parameter from a named environment variable, with automatic type conversion.
Definition: Utils.hh:655
double asqrtS() const
Get the beam centre-of-mass energy per nucleon.
const Particles & allParticles() const
All the raw GenEvent particles, wrapped in Rivet::Particle objects.
static Log & getLog(const std::string &name)
Jets filter_select(const Jets &jets, const Cut &c)
Filter a jet collection in-place to the subset that passes the supplied Cut.
Definition: JetUtils.hh:160
Particles allParticles(const Cut &c) const
All the raw GenEvent particles, wrapped in Rivet::Particle objects, but with a Cut applied...
Definition: Event.hh:83
const PROJ & applyProjection(PROJ *pp) const
Add a projection p to this Event by pointer.
Definition: Event.hh:157
Event(const GenEvent *ge, bool strip=false)
Constructor from a HepMC GenEvent pointer.
Definition: Event.hh:29
ParticlePair beams() const
Get the beam particles.
const GenEvent * genEvent() const
The generated event obtained from an external event generator.
Definition: Event.hh:57
Logging system for controlled & formatted writing to stdout.
Definition: Logging.hh:10
Generic runtime Rivet error.
Definition: Exceptions.hh:12
virtual void project(const Event &e)=0
double sqrtS() const
Get the beam centre-of-mass energy.
Representation of a HepMC event, and enabler of Projection caching.
Definition: Event.hh:22
const PROJ & applyProjection(PROJ &p) const
Add a projection p to this Event.
Definition: Event.hh:124
Event(const Event &e)
Copy constructor.
Definition: Event.hh:46
std::valarray< double > weights() const
The generation weight associated with the event.
double weight() const
Obsolete weight method. Always returns 1 now.
Definition: Event.hh:103
Event(const GenEvent &ge, bool strip=false)
Definition: Event.hh:39
Base class for all Rivet projections.
Definition: Projection.hh:29