#include <rivetoutput.h>
SMASH output to Rivet analyses.
This class passes HepMC events to Rivet for analysis. The event is kept in-memory which significanly speeds up processing (at last a factor 10) as compared to writing the HepMC event to disk or pipe and then decoding in Rivet.
More details of the output format can be found in the User Guide.
Definition at line 36 of file rivetoutput.h.
Classes | |
struct | Proxy |
A proxy object that wraps all Rivet::AnalysisHandler calls in an environment where FP errors are disabled. More... | |
Public Member Functions | |
RivetOutput (const bf::path &path, std::string name, const bool full_event, const int total_N, const int proj_N, const OutputParameters &out_par) | |
Create Rivet output. More... | |
~RivetOutput () | |
Destructor. More... | |
void | at_eventend (const Particles &particles, const int32_t event_number, const EventInfo &event) override |
Add the final particles information of an event to the central vertex. More... | |
void | add_analysis (const std::string &name) |
Add an analysis or analyses to Rivet. More... | |
void | add_path (const std::string &path) |
Add a load path to the Rivet handler. More... | |
void | add_preload (const std::string &file) |
Add preload to Rivet handler. More... | |
void | set_ignore_beams (bool ignore=true) |
Do not insist on appropriate beams for analyses. More... | |
void | set_log_level (const std::string &name, const std::string &level) |
Set log level in Rivet. More... | |
void | set_cross_section (double xs, double xserr) |
Set X-section. More... | |
void | setup () |
Read configuration of Rivet from SMASH configuration. More... | |
![]() | |
HepMcInterface (const std::string &name, const bool full_event, const int total_N, const int proj_N) | |
Create HepMC particle event in memory. More... | |
void | at_eventstart (const Particles &particles, const int event_number, const EventInfo &event) override |
Add the initial particles information of an event to the central vertex. More... | |
void | at_interaction (const Action &action, const double density) override |
Writes collisions to event. More... | |
void | at_eventend (const Particles &particles, const int32_t event_number, const EventInfo &event) override |
Add the final particles information of an event to the central vertex. More... | |
![]() | |
OutputInterface (std::string name) | |
Construct output interface. More... | |
virtual | ~OutputInterface ()=default |
virtual void | at_eventend (const Particles &particles, const int event_number, const EventInfo &info)=0 |
Output launched at event end. More... | |
virtual void | at_intermediate_time (const Particles &particles, const std::unique_ptr< Clock > &clock, const DensityParameters &dens_param, const EventInfo &info) |
Output launched after every N'th timestep. More... | |
virtual void | thermodynamics_output (const ThermodynamicQuantity tq, const DensityType dt, RectangularLattice< DensityOnLattice > &lattice) |
Output to write thermodynamics from the lattice. More... | |
virtual void | thermodynamics_output (const ThermodynamicQuantity tq, const DensityType dt, RectangularLattice< EnergyMomentumTensor > &lattice) |
Output to write energy-momentum tensor and related quantities from the lattice. More... | |
virtual void | thermodynamics_output (const GrandCanThermalizer &gct) |
Output to write energy-momentum tensor and related quantities from the thermalizer class. More... | |
bool | is_dilepton_output () const |
Get, whether this is the dilepton output? More... | |
bool | is_photon_output () const |
Get, whether this is the photon output? More... | |
bool | is_IC_output () const |
Get, whether this is the IC output? More... | |
const char * | to_string (const ThermodynamicQuantity tq) |
Convert thermodynamic quantities to strings. More... | |
const char * | to_string (const DensityType dens_type) |
Convert density types to strings. More... | |
Private Member Functions | |
Proxy | analysis_handler_proxy () |
Return a proxy that temporarily disables FP exceptions. More... | |
Private Attributes | |
std::shared_ptr< Rivet::AnalysisHandler > | handler_ |
Rivet analysis handler. More... | |
bf::path | filename_ |
Output file. More... | |
bool | need_init_ |
Whether we need initialisation. More... | |
Configuration | rivet_confs_ |
Configutations for rivet. More... | |
Additional Inherited Members | |
![]() | |
using | AZ = std::pair< int, int > |
Pair of Atomic weight and number. More... | |
![]() | |
enum | Status { beam = 4, fnal = 1, dcy = 2, off = 100 } |
HepMC status codes. More... | |
using | IdMap = std::map< int, HepMC3::GenParticlePtr > |
Type of mapping from SMASH ID to HepMC ID. More... | |
using | CollCounter = std::valarray< int > |
Counter of collitions per incoming particle. More... | |
![]() | |
void | clear () |
Clear before an event. More... | |
int | get_status (const ProcessType &t) const |
Convert SMASH process type to HepMC status. More... | |
HepMC3::GenParticlePtr | make_gen (int pid, int status, const smash::FourVector &mom, double mass=-1) |
Make an HepMC particle. More... | |
HepMC3::GenParticlePtr | make_register (const ParticleData &p, int status=Status::fnal) |
Find particle in mapping or generate it. More... | |
HepMC3::GenParticlePtr | find_or_make (const ParticleData &p, int status=Status::fnal, bool force_new=false) |
Find particle in mapping or generate it. More... | |
int | ion_pdg (const AZ &az) const |
Encode ion PDG. More... | |
![]() | |
HepMC3::GenEvent | event_ |
The event. More... | |
HepMC3::GenHeavyIonPtr | ion_ |
The heavy-ion structure. More... | |
HepMC3::GenCrossSectionPtr | xs_ |
Dummy cross-section. More... | |
HepMC3::GenVertexPtr | ip_ |
The interaction point. More... | |
IdMap | map_ |
Mapping from ID to particle. More... | |
CollCounter | coll_ |
Collision counter. More... | |
int | ncoll_ |
counter of binary collisions (e.g., where both incoming particles are from the beams. More... | |
int | ncoll_hard_ |
counter of hard binary collisions (e.g., where both incoming particles are from the beams. More... | |
const int | total_N_ |
Total number of nucleons in projectile and target, needed for converting nuclei to single particles. More... | |
const int | proj_N_ |
Total number of nucleons in projectile, needed for converting nuclei to single particles. More... | |
bool | full_event_ |
Whether the full event or only final-state particles are in the output. More... | |
![]() | |
const bool | is_dilepton_output_ |
Is this the dilepton output? More... | |
const bool | is_photon_output_ |
Is this the photon output? More... | |
const bool | is_IC_output_ |
Is this the IC output? More... | |
smash::RivetOutput::RivetOutput | ( | const bf::path & | path, |
std::string | name, | ||
const bool | full_event, | ||
const int | total_N, | ||
const int | proj_N, | ||
const OutputParameters & | out_par | ||
) |
Create Rivet output.
[in] | path | Output path. |
[in] | name | Name of the output. |
[in] | full_event | Whether the full event or only final-state particles are printed in the output |
[in] | total_N | Total number of particles in both nuclei. |
[in] | proj_N | Number of particles in projectile. |
[in] | out_par | Configuration parameters of SMASH |
Definition at line 146 of file rivetoutput.cc.
smash::RivetOutput::~RivetOutput | ( | ) |
Destructor.
Finalises the analzyses and writes out results to file
Definition at line 158 of file rivetoutput.cc.
|
override |
Add the final particles information of an event to the central vertex.
Store impact paramter and write event.
[in] | particles | Current list of particles. |
[in] | event_number | Number of event. |
[in] | event | Event info, see event_info |
Definition at line 165 of file rivetoutput.cc.
void smash::RivetOutput::add_analysis | ( | const std::string & | name | ) |
Add an analysis or analyses to Rivet.
[in] | name | Name of analysis |
Definition at line 182 of file rivetoutput.cc.
void smash::RivetOutput::add_path | ( | const std::string & | path | ) |
Add a load path to the Rivet handler.
Definition at line 186 of file rivetoutput.cc.
void smash::RivetOutput::add_preload | ( | const std::string & | file | ) |
Add preload to Rivet handler.
Definition at line 191 of file rivetoutput.cc.
void smash::RivetOutput::set_ignore_beams | ( | bool | ignore = true | ) |
Do not insist on appropriate beams for analyses.
Definition at line 195 of file rivetoutput.cc.
void smash::RivetOutput::set_log_level | ( | const std::string & | name, |
const std::string & | level | ||
) |
Set log level in Rivet.
Definition at line 201 of file rivetoutput.cc.
void smash::RivetOutput::set_cross_section | ( | double | xs, |
double | xserr | ||
) |
Set X-section.
[in] | xs | Cross-section value in pb |
[in] | xserr | Uncertainty on cross-section in pb |
Definition at line 221 of file rivetoutput.cc.
void smash::RivetOutput::setup | ( | ) |
Read configuration of Rivet from SMASH configuration.
Definition at line 225 of file rivetoutput.cc.
|
inlineprivate |
Return a proxy that temporarily disables FP exceptions.
Definition at line 120 of file rivetoutput.h.
|
private |
Rivet analysis handler.
Definition at line 123 of file rivetoutput.h.
|
private |
Output file.
Definition at line 125 of file rivetoutput.h.
|
private |
Whether we need initialisation.
Definition at line 127 of file rivetoutput.h.
|
private |
Configutations for rivet.
Definition at line 129 of file rivetoutput.h.