HepMC3 event record library
|
Stores event-related information.
Manages event-related information. Contains lists of GenParticle and GenVertex objects
Definition at line 41 of file GenEvent.h.
#include <GenEvent.h>
Public Member Functions | |
GenEvent (Units::MomentumUnit momentum_unit=Units::GEV, Units::LengthUnit length_unit=Units::MM) | |
Event constructor without a run. More... | |
GenEvent (shared_ptr< GenRunInfo > run, Units::MomentumUnit momentum_unit=Units::GEV, Units::LengthUnit length_unit=Units::MM) | |
Constructor with associated run. More... | |
GenEvent (const GenEvent &) | |
Copy constructor. More... | |
~GenEvent () | |
Destructor. More... | |
GenEvent & | operator= (const GenEvent &) |
Assignment operator. More... | |
Particle and vertex access | |
const std::vector< ConstGenParticlePtr > & | particles () const |
Get list of particles (const) More... | |
const std::vector< ConstGenVertexPtr > & | vertices () const |
Get list of vertices (const) More... | |
const std::vector< GenParticlePtr > & | particles () |
Get/set list of particles (non-const) More... | |
const std::vector< GenVertexPtr > & | vertices () |
Get/set list of vertices (non-const) More... | |
Event weights | |
const std::vector< double > & | weights () const |
Get event weight values as a vector. More... | |
std::vector< double > & | weights () |
Get event weights as a vector (non-const) More... | |
double | weight (const unsigned long &index=0) const |
double | weight (const std::string &name) const |
double & | weight (const std::string &name) |
const std::vector< std::string > & | weight_names () const |
Auxiliary info and event metadata | |
shared_ptr< GenRunInfo > | run_info () const |
Get a pointer to the the GenRunInfo object. More... | |
void | set_run_info (shared_ptr< GenRunInfo > run) |
Set the GenRunInfo object by smart pointer. More... | |
int | event_number () const |
Get event number. More... | |
void | set_event_number (const int &num) |
Set event number. More... | |
const Units::MomentumUnit & | momentum_unit () const |
Get momentum unit. More... | |
const Units::LengthUnit & | length_unit () const |
Get length unit. More... | |
void | set_units (Units::MomentumUnit new_momentum_unit, Units::LengthUnit new_length_unit) |
Change event units Converts event from current units to new ones. More... | |
GenHeavyIonPtr | heavy_ion () |
Get heavy ion generator additional information. More... | |
ConstGenHeavyIonPtr | heavy_ion () const |
Get heavy ion generator additional information (const version) More... | |
void | set_heavy_ion (GenHeavyIonPtr hi) |
Set heavy ion generator additional information. More... | |
GenPdfInfoPtr | pdf_info () |
Get PDF information. More... | |
ConstGenPdfInfoPtr | pdf_info () const |
Get PDF information (const version) More... | |
void | set_pdf_info (GenPdfInfoPtr pi) |
Set PDF information. More... | |
GenCrossSectionPtr | cross_section () |
Get cross-section information. More... | |
ConstGenCrossSectionPtr | cross_section () const |
Get cross-section information (const version) More... | |
void | set_cross_section (GenCrossSectionPtr cs) |
Set cross-section information. More... | |
Event position | |
const FourVector & | event_pos () const |
Vertex representing the overall event position. More... | |
std::vector< ConstGenParticlePtr > | beams () const |
Vector of beam particles. More... | |
const std::vector< GenParticlePtr > & | beams () |
Vector of beam particles. More... | |
void | shift_position_by (const FourVector &delta) |
Shift position of all vertices in the event by delta. More... | |
void | shift_position_to (const FourVector &newpos) |
Shift position of all vertices in the event to op. More... | |
bool | boost (const FourVector &v) |
Boost event using x,y,z components of v as velocities. More... | |
bool | rotate (const FourVector &v) |
Rotate event using x,y,z components of v as rotation angles. More... | |
bool | reflect (const int axis) |
Change sign of axis. More... | |
Additional attributes | |
void | add_attribute (const string &name, const shared_ptr< Attribute > &att, const int &id=0) |
Add event attribute to event. More... | |
void | remove_attribute (const string &name, const int &id=0) |
Remove attribute. More... | |
template<class T > | |
shared_ptr< T > | attribute (const string &name, const int &id=0) const |
Get attribute of type T. More... | |
string | attribute_as_string (const string &name, const int &id=0) const |
Get attribute of any type as string. More... | |
std::vector< string > | attribute_names (const int &id=0) const |
Get list of attribute names. More... | |
std::map< string, std::map< int, shared_ptr< Attribute > > > | attributes () const |
Get a copy of the list of attributes. More... | |
Particle and vertex modification | |
void | add_particle (GenParticlePtr p) |
Add particle. More... | |
void | add_vertex (GenVertexPtr v) |
Add vertex. More... | |
void | remove_particle (GenParticlePtr v) |
Remove particle from the event. More... | |
void | remove_particles (std::vector< GenParticlePtr > v) |
Remove a set of particles. More... | |
void | remove_vertex (GenVertexPtr v) |
Remove vertex from the event. More... | |
void | add_tree (const std::vector< GenParticlePtr > &particles) |
Add whole tree in topological order. More... | |
void | reserve (const size_t &particles, const size_t &vertices=0) |
Reserve memory for particles and vertices. More... | |
void | clear () |
Remove contents of this event. More... | |
Deprecated functionality | |
void | add_particle (GenParticle *p) |
Add particle by raw pointer. More... | |
void | add_vertex (GenVertex *v) |
Add vertex by raw pointer. More... | |
void | set_beam_particles (GenParticlePtr p1, GenParticlePtr p2) |
Set incoming beam particles. More... | |
void | add_beam_particle (GenParticlePtr p1) |
Add particle to root vertex. More... | |
Methods to fill GenEventData and to read it back | |
void | write_data (GenEventData &data) const |
Fill GenEventData object. More... | |
void | read_data (const GenEventData &data) |
Fill GenEvent based on GenEventData. More... | |
Fields | |
typedef std::map< string, std::map< int, shared_ptr< Attribute > > >::value_type | att_key_t |
Attribute map key type. More... | |
typedef std::map< int, shared_ptr< Attribute > >::value_type | att_val_t |
Attribute map value type. More... | |
std::vector< GenParticlePtr > | m_particles |
List of particles. More... | |
std::vector< GenVertexPtr > | m_vertices |
List of vertices. More... | |
int | m_event_number |
Event number. More... | |
std::vector< double > | m_weights |
Event weights. More... | |
Units::MomentumUnit | m_momentum_unit |
Momentum unit. More... | |
Units::LengthUnit | m_length_unit |
Length unit. More... | |
GenVertexPtr | m_rootvertex |
The root vertex is stored outside the normal vertices list to block user access to it. More... | |
shared_ptr< GenRunInfo > | m_run_info |
Global run information. More... | |
std::map< string, std::map< int, shared_ptr< Attribute > > > | m_attributes |
Map of event, particle and vertex attributes. More... | |
std::recursive_mutex | m_lock_attributes |
Mutex lock for the m_attibutes map. More... | |
Attribute map key type.
Definition at line 369 of file GenEvent.h.
Attribute map value type.
Definition at line 372 of file GenEvent.h.
GenEvent | ( | Units::MomentumUnit | momentum_unit = Units::GEV , |
Units::LengthUnit | length_unit = Units::MM |
||
) |
Event constructor without a run.
Definition at line 22 of file GenEvent.cc.
GenEvent | ( | shared_ptr< GenRunInfo > | run, |
Units::MomentumUnit | momentum_unit = Units::GEV , |
||
Units::LengthUnit | length_unit = Units::MM |
||
) |
Constructor with associated run.
Definition at line 29 of file GenEvent.cc.
References GenEvent::m_weights.
Copy constructor.
Definition at line 64 of file GenEvent.cc.
References GenEvent::m_lock_attributes, GenEvent::read_data(), and GenEvent::write_data().
~GenEvent | ( | ) |
Destructor.
Definition at line 76 of file GenEvent.cc.
References GenEvent::m_attributes, GenEvent::m_particles, and GenEvent::m_vertices.
|
inline |
Add event attribute to event.
This will overwrite existing attribute if an attribute with the same name is present
Definition at line 208 of file GenEvent.h.
References GenEvent::m_attributes, GenEvent::m_lock_attributes, GenEvent::particles(), and GenEvent::vertices().
void add_beam_particle | ( | GenParticlePtr | p1 | ) |
Add particle to root vertex.
Definition at line 780 of file GenEvent.cc.
References GenEvent::add_particle(), and HEPMC3_WARNING.
void add_particle | ( | GenParticle * | p | ) |
Add particle by raw pointer.
Definition at line 765 of file GenEvent.cc.
References GenEvent::add_particle().
void add_particle | ( | GenParticlePtr | p | ) |
Add particle.
Definition at line 50 of file GenEvent.cc.
References GenEvent::m_particles, GenEvent::m_rootvertex, and GenEvent::particles().
void add_tree | ( | const std::vector< GenParticlePtr > & | particles | ) |
Add whole tree in topological order.
This function will find the beam particles (particles that have no production vertices or their production vertices have no particles) and will add the whole decay tree starting from these particles.
Definition at line 268 of file GenEvent.cc.
References GenEvent::add_attribute(), GenEvent::add_vertex(), HEPMC3_DEBUG, HEPMC3_DEBUG_CODE_BLOCK, HEPMC3_WARNING, GenEvent::m_attributes, GenEvent::m_lock_attributes, GenEvent::m_rootvertex, GenEvent::m_vertices, GenEvent::particles(), and HepMC3::visit_children().
void add_vertex | ( | GenVertex * | v | ) |
Add vertex by raw pointer.
Definition at line 770 of file GenEvent.cc.
References GenEvent::add_vertex().
void add_vertex | ( | GenVertexPtr | v | ) |
Add vertex.
Definition at line 98 of file GenEvent.cc.
References GenEvent::add_particle(), GenEvent::m_vertices, and GenEvent::vertices().
shared_ptr< T > attribute | ( | const string & | name, |
const int & | id = 0 |
||
) | const |
Get attribute of type T.
Definition at line 387 of file GenEvent.h.
References GenEvent::m_attributes, GenEvent::m_lock_attributes, GenEvent::m_particles, GenEvent::m_vertices, GenEvent::particles(), GenEvent::run_info(), and GenEvent::vertices().
string attribute_as_string | ( | const string & | name, |
const int & | id = 0 |
||
) | const |
Get attribute of any type as string.
Definition at line 799 of file GenEvent.cc.
References GenEvent::m_attributes, GenEvent::m_lock_attributes, and GenEvent::run_info().
vector< string > attribute_names | ( | const int & | id = 0 | ) | const |
Get list of attribute names.
Definition at line 634 of file GenEvent.cc.
References GenEvent::m_attributes.
|
inline |
Get a copy of the list of attributes.
Definition at line 235 of file GenEvent.h.
References GenEvent::m_attributes, and GenEvent::m_lock_attributes.
const vector< GenParticlePtr > & beams | ( | ) |
Vector of beam particles.
Definition at line 425 of file GenEvent.cc.
References GenEvent::m_rootvertex.
vector< ConstGenParticlePtr > beams | ( | ) | const |
Vector of beam particles.
Definition at line 421 of file GenEvent.cc.
References GenEvent::m_rootvertex.
bool boost | ( | const FourVector & | v | ) |
Boost event using x,y,z components of v as velocities.
Definition at line 559 of file GenEvent.cc.
References HepMC3::abs(), FourVector::e(), HEPMC3_WARNING, FourVector::length2(), GenEvent::m_particles, FourVector::x(), FourVector::y(), and FourVector::z().
void clear | ( | ) |
Remove contents of this event.
Definition at line 609 of file GenEvent.cc.
References GenEvent::m_attributes, GenEvent::m_event_number, GenEvent::m_lock_attributes, GenEvent::m_particles, GenEvent::m_rootvertex, GenEvent::m_vertices, and GenEvent::m_weights.
|
inline |
Get cross-section information.
Definition at line 162 of file GenEvent.h.
|
inline |
Get cross-section information (const version)
Definition at line 164 of file GenEvent.h.
|
inline |
Get event number.
Definition at line 135 of file GenEvent.h.
References GenEvent::m_event_number.
const FourVector & event_pos | ( | ) | const |
Vertex representing the overall event position.
Definition at line 417 of file GenEvent.cc.
References GenEvent::m_rootvertex.
|
inline |
Get heavy ion generator additional information.
Definition at line 148 of file GenEvent.h.
|
inline |
Get heavy ion generator additional information (const version)
Definition at line 150 of file GenEvent.h.
|
inline |
|
inline |
Assignment operator.
Definition at line 84 of file GenEvent.cc.
References GenEvent::m_lock_attributes, GenEvent::read_data(), and GenEvent::write_data().
|
inline |
Get/set list of particles (non-const)
Definition at line 75 of file GenEvent.h.
References GenEvent::m_particles.
const std::vector< ConstGenParticlePtr > & particles | ( | ) | const |
Get list of particles (const)
Definition at line 40 of file GenEvent.cc.
References GenEvent::m_particles.
|
inline |
Get PDF information.
Definition at line 155 of file GenEvent.h.
|
inline |
Get PDF information (const version)
Definition at line 157 of file GenEvent.h.
void read_data | ( | const GenEventData & | data | ) |
Fill GenEvent based on GenEventData.
Definition at line 704 of file GenEvent.cc.
References GenEvent::add_attribute(), GenEventData::attribute_id, GenEventData::attribute_name, GenEventData::attribute_string, GenEvent::clear(), GenEventData::event_number, GenEventData::event_pos, HEPMC3_WARNING, GenEventData::length_unit, GenEventData::links1, GenEventData::links2, GenEvent::m_length_unit, GenEvent::m_momentum_unit, GenEvent::m_particles, GenEvent::m_rootvertex, GenEvent::m_vertices, GenEventData::momentum_unit, GenEventData::particles, GenEvent::set_event_number(), GenEvent::shift_position_to(), GenEventData::vertices, GenEventData::weights, and GenEvent::weights().
bool reflect | ( | const int | axis | ) |
Change sign of axis.
Definition at line 527 of file GenEvent.cc.
References HEPMC3_WARNING, GenEvent::m_particles, GenEvent::m_vertices, FourVector::setT(), FourVector::setX(), FourVector::setY(), and FourVector::setZ().
void remove_attribute | ( | const string & | name, |
const int & | id = 0 |
||
) |
Remove attribute.
Definition at line 622 of file GenEvent.cc.
References GenEvent::m_attributes, and GenEvent::m_lock_attributes.
void remove_particle | ( | GenParticlePtr | v | ) |
Remove particle from the event.
This function will remove whole sub-tree starting from this particle if it is the only incoming particle of this vertex. It will also production vertex of this particle if this vertex has no more outgoing particles
Definition at line 118 of file GenEvent.cc.
References HEPMC3_DEBUG, GenEvent::m_attributes, GenEvent::m_lock_attributes, GenEvent::m_particles, and GenEvent::remove_vertex().
void remove_particles | ( | std::vector< GenParticlePtr > | v | ) |
Remove a set of particles.
This function follows rules of GenEvent::remove_particle to remove a list of particles from the event.
Definition at line 186 of file GenEvent.cc.
References GenEvent::remove_particle().
void remove_vertex | ( | GenVertexPtr | v | ) |
Remove vertex from the event.
This will remove all sub-trees of all outgoing particles of this vertex
Definition at line 195 of file GenEvent.cc.
References HEPMC3_DEBUG, GenEvent::m_attributes, GenEvent::m_lock_attributes, GenEvent::m_vertices, and GenEvent::remove_particle().
void reserve | ( | const size_t & | particles, |
const size_t & | vertices = 0 |
||
) |
Reserve memory for particles and vertices.
Helps optimize event creation when size of the event is known beforehand
Definition at line 390 of file GenEvent.cc.
References GenEvent::m_particles, and GenEvent::m_vertices.
bool rotate | ( | const FourVector & | v | ) |
Rotate event using x,y,z components of v as rotation angles.
Definition at line 439 of file GenEvent.cc.
References FourVector::e(), GenEvent::m_particles, GenEvent::m_vertices, FourVector::t(), FourVector::x(), FourVector::y(), and FourVector::z().
|
inline |
Get a pointer to the the GenRunInfo object.
Definition at line 124 of file GenEvent.h.
References GenEvent::m_run_info.
void set_beam_particles | ( | GenParticlePtr | p1, |
GenParticlePtr | p2 | ||
) |
Set incoming beam particles.
Definition at line 775 of file GenEvent.cc.
References GenEvent::m_rootvertex.
|
inline |
Set cross-section information.
Definition at line 166 of file GenEvent.h.
References GenEvent::add_attribute().
|
inline |
Set event number.
Definition at line 137 of file GenEvent.h.
References GenEvent::m_event_number.
|
inline |
Set heavy ion generator additional information.
Definition at line 152 of file GenEvent.h.
References GenEvent::add_attribute().
|
inline |
Set PDF information.
Definition at line 159 of file GenEvent.h.
References GenEvent::add_attribute().
|
inline |
Set the GenRunInfo object by smart pointer.
Definition at line 128 of file GenEvent.h.
References GenEvent::m_run_info, and GenEvent::m_weights.
void set_units | ( | Units::MomentumUnit | new_momentum_unit, |
Units::LengthUnit | new_length_unit | ||
) |
Change event units Converts event from current units to new ones.
Definition at line 396 of file GenEvent.cc.
References Units::convert(), FourVector::is_zero(), GenEvent::m_length_unit, GenEvent::m_momentum_unit, GenEvent::m_particles, and GenEvent::m_vertices.
void shift_position_by | ( | const FourVector & | delta | ) |
Shift position of all vertices in the event by delta.
Definition at line 429 of file GenEvent.cc.
References GenEvent::event_pos(), GenEvent::m_rootvertex, and GenEvent::m_vertices.
|
inline |
Shift position of all vertices in the event to op.
Definition at line 187 of file GenEvent.h.
References GenEvent::event_pos(), and GenEvent::shift_position_by().
|
inline |
Get/set list of vertices (non-const)
Definition at line 77 of file GenEvent.h.
References GenEvent::m_vertices.
const std::vector< ConstGenVertexPtr > & vertices | ( | ) | const |
Get list of vertices (const)
Definition at line 44 of file GenEvent.cc.
References GenEvent::m_vertices.
|
inline |
Get event weight accessed by weight name
Definition at line 102 of file GenEvent.h.
References GenEvent::m_weights, and GenEvent::run_info().
|
inline |
Get event weight accessed by weight name
Definition at line 95 of file GenEvent.h.
References GenEvent::run_info(), and GenEvent::weight().
|
inline |
Get event weight accessed by index (or the canonical/first one if there is no argument)
Definition at line 91 of file GenEvent.h.
References GenEvent::weights().
|
inline |
Get event weight names, if there are some
Definition at line 110 of file GenEvent.h.
References GenEvent::run_info().
|
inline |
Get event weights as a vector (non-const)
Definition at line 88 of file GenEvent.h.
References GenEvent::m_weights.
|
inline |
Get event weight values as a vector.
Definition at line 86 of file GenEvent.h.
References GenEvent::m_weights.
void write_data | ( | GenEventData & | data | ) | const |
Fill GenEventData object.
Definition at line 646 of file GenEvent.cc.
References GenEventData::attribute_id, GenEventData::attribute_name, GenEventData::attribute_string, GenEvent::attributes(), GenEventData::event_number, GenEvent::event_number(), GenEventData::event_pos, GenEvent::event_pos(), HEPMC3_WARNING, GenEventData::length_unit, GenEvent::length_unit(), GenEventData::links1, GenEventData::links2, GenEvent::m_attributes, GenEventData::momentum_unit, GenEvent::momentum_unit(), GenEventData::particles, GenEvent::particles(), GenEventData::vertices, GenEvent::vertices(), GenEventData::weights, and GenEvent::weights().
|
mutableprivate |
Map of event, particle and vertex attributes.
Keys are name and ID (0 = event, <0 = vertex, >0 = particle)
Definition at line 366 of file GenEvent.h.
|
private |
Event number.
Definition at line 347 of file GenEvent.h.
|
private |
Length unit.
Definition at line 355 of file GenEvent.h.
|
mutableprivate |
Mutex lock for the m_attibutes map.
Definition at line 375 of file GenEvent.h.
|
private |
Momentum unit.
Definition at line 353 of file GenEvent.h.
|
private |
List of particles.
Definition at line 342 of file GenEvent.h.
|
private |
The root vertex is stored outside the normal vertices list to block user access to it.
Definition at line 358 of file GenEvent.h.
|
private |
Global run information.
Definition at line 361 of file GenEvent.h.
|
private |
List of vertices.
Definition at line 344 of file GenEvent.h.
|
private |
Event weights.
Definition at line 350 of file GenEvent.h.