5 #include "Rivet/Config/RivetCommon.hh" 6 #include "Rivet/Particle.hh" 7 #include "Rivet/Projection.hh" 29 Event(
const GenEvent* ge,
const vector<size_t>& indices = {},
bool strip =
false)
30 : _weightIndices(indices), _genevent_original(ge) {
33 if ( strip ) _strip(_genevent);
39 Event(
const GenEvent& ge,
const vector<size_t>& indices = {},
bool strip =
false)
40 : _weightIndices(indices), _genevent_original(&ge), _genevent(ge) {
41 if ( strip ) _strip(_genevent);
47 : _weightIndices(e._weightIndices),
48 _genevent_original(e._genevent_original),
49 _genevent(e._genevent)
59 const GenEvent*
genEvent()
const {
return &_genevent; }
65 ParticlePair
beams()
const;
92 template <
typename FN>
101 std::valarray<double>
weights()
const;
104 DEPRECATED(
"Event weight does not need to be included anymore. For compatibility, it's always == 1 now.")
124 template <
typename PROJ>
126 static bool docaching =
getEnvParam(
"RIVET_CACHE_PROJECTIONS",
true);
128 MSG_TRACE(
"Applying projection " << &p <<
" (" << p.name() <<
") -> comparing to projections " << _projections);
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 MSG_TRACE(
"Equivalent projection found -> returning already-run projection " << *old);
140 return pcast<PROJ>(pRef);
142 MSG_TRACE(
"No equivalent projection in the already-run list -> projecting now");
144 MSG_TRACE(
"Applying projection " << &p <<
" (" << p.name() <<
") WITHOUT projection caching & comparison");
150 if (docaching) _projections.insert(pp);
156 template <
typename PROJ>
158 if (!pp)
throw Error(
"Event::applyProjection(PROJ*): Projection pointer is null.");
171 void _init(
const GenEvent& ge);
175 void _strip(GenEvent & ge);
188 const std::vector<size_t> _weightIndices;
196 const GenEvent* _genevent_original;
207 mutable GenEvent _genevent;
211 mutable Particles _particles;
214 mutable std::set<ConstProjectionPtr> _projections;
217 mutable std::valarray<double> _weights;
const GenEvent * originalGenEvent() const
The generated event obtained from an external event generator.
Definition: Event.hh:62
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:93
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:667
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.
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:157
Event(const GenEvent &ge, const vector< size_t > &indices={}, bool strip=false)
Definition: Event.hh:39
Particles allParticles(const Cut &c) const
All the raw GenEvent particles, wrapped in Rivet::Particle objects, but with a Cut applied...
Definition: Event.hh:85
const PROJ & applyProjection(PROJ *pp) const
Add a projection p to this Event by pointer.
Definition: Event.hh:157
Event(const GenEvent *ge, const vector< size_t > &indices={}, 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:59
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:125
Event(const Event &e)
Copy constructor.
Definition: Event.hh:46
std::valarray< double > weights() const
The generation weight associated with the event.
#define MSG_TRACE(x)
Lowest-level, most verbose messaging, using MSG_LVL.
Definition: Logging.hh:193
double weight() const
Obsolete weight method. Always returns 1 now.
Definition: Event.hh:105
Base class for all Rivet projections.
Definition: Projection.hh:29