#include <hepmcoutput.h>
SMASH output to HepMC file.
This class writes a vertex connecting all intial particles with all final particles into a HepMC outputfile. In collider mode, projectile and target are combined into single intial particles with a nuclear pdg code. The output file can be a human-readable ASCII file or a ROOT Tree binary file. HepMC version 3 is used.
More details of the output format can be found in the User Guide.
Definition at line 37 of file hepmcoutput.h.
Public Member Functions | |
HepMcOutput (const std::filesystem::path &path, std::string name, const bool full_event, std::string HepMC3_output_type) | |
Create HepMC particle output. More... | |
~HepMcOutput () | |
Destructor renames file. 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... | |
Public Member Functions inherited from smash::HepMcInterface | |
HepMcInterface (const std::string &name, const bool full_event) | |
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... | |
Public Member Functions inherited from smash::OutputInterface | |
OutputInterface (std::string name) | |
Construct output interface. More... | |
virtual | ~OutputInterface ()=0 |
Pure virtual destructor to make class abstract and prevent its instantiation. More... | |
virtual void | at_eventstart (const std::vector< Particles > &, int) |
Output launched at event start after initialization, when particles are generated but not yet propagated. More... | |
virtual void | at_eventstart (const int, const ThermodynamicQuantity, const DensityType, RectangularLattice< DensityOnLattice >) |
Output launched at event start after initialization, when particles are generated but not yet propagated. More... | |
virtual void | at_eventstart (const int, const ThermodynamicQuantity, const DensityType, RectangularLattice< EnergyMomentumTensor >) |
Output launched at event start after initialization, when particles are generated but not yet propagated. More... | |
virtual void | at_eventend (const int, const ThermodynamicQuantity, const DensityType) |
Output launched at event end. More... | |
virtual void | at_eventend (const ThermodynamicQuantity) |
Output launched at event end. More... | |
virtual void | at_eventend (const Particles &, const int, const EventInfo &) |
Output launched at event end. More... | |
virtual void | at_eventend (const std::vector< Particles > &, const int) |
Output launched at event end. More... | |
virtual void | at_intermediate_time (const Particles &, const std::unique_ptr< Clock > &, const DensityParameters &, const EventInfo &) |
Output launched after every N'th time-step. More... | |
virtual void | at_intermediate_time (const std::vector< Particles > &, const std::unique_ptr< Clock > &, const DensityParameters &) |
Output launched after every N'th timestep. More... | |
virtual void | thermodynamics_output (const ThermodynamicQuantity, const DensityType, RectangularLattice< DensityOnLattice > &) |
Output to write thermodynamics from the lattice. More... | |
virtual void | thermodynamics_output (const ThermodynamicQuantity, const DensityType, RectangularLattice< EnergyMomentumTensor > &) |
Output to write energy-momentum tensor and related quantities from the lattice. More... | |
virtual void | thermodynamics_lattice_output (RectangularLattice< DensityOnLattice > &, const double) |
Output to write thermodynamics from the lattice. More... | |
virtual void | thermodynamics_lattice_output (RectangularLattice< DensityOnLattice > &, const double, const std::vector< Particles > &, const DensityParameters &) |
Output to write thermodynamics from the lattice. More... | |
virtual void | thermodynamics_lattice_output (const ThermodynamicQuantity, RectangularLattice< EnergyMomentumTensor > &, const double) |
Output to write energy-momentum tensor and related quantities from the lattice. More... | |
virtual void | thermodynamics_output (const GrandCanThermalizer &) |
Output to write energy-momentum tensor and related quantities from the thermalizer class. More... | |
virtual void | fields_output (const std::string, const std::string, RectangularLattice< std::pair< ThreeVector, ThreeVector >> &) |
Write fields in vtk output Fields are a pair of threevectors for example electric and magnetic field. 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 Types | |
enum | enum_output { asciiv3 , treeroot } |
enum to identify the HepMC3 output type More... | |
typedef enum smash::HepMcOutput::enum_output | type_of_HepMC3_output |
enum to identify the HepMC3 output type More... | |
Private Attributes | |
const std::filesystem::path | filename_ |
Filename of output. More... | |
std::filesystem::path | filename_unfinished_ |
Filename of output as long as simulation is still running. More... | |
std::unique_ptr< HepMC3::Writer > | output_file_ |
Pointers to the base class of HepMC3 output files. More... | |
type_of_HepMC3_output | output_type_ |
HepMC3 output type. More... | |
Additional Inherited Members | |
Public Types inherited from smash::HepMcInterface | |
using | AZ = std::pair< int, int > |
Pair of Atomic weight and number. More... | |
Protected Types inherited from smash::HepMcInterface | |
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... | |
Protected Member Functions inherited from smash::HepMcInterface | |
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... | |
Protected Attributes inherited from smash::HepMcInterface | |
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... | |
bool | full_event_ |
Whether the full event or only final-state particles are in the output. More... | |
Protected Attributes inherited from smash::OutputInterface | |
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... | |
|
private |
enum to identify the HepMC3 output type
|
private |
enum to identify the HepMC3 output type
Enumerator | |
---|---|
asciiv3 | |
treeroot |
Definition at line 72 of file hepmcoutput.h.
smash::HepMcOutput::HepMcOutput | ( | const std::filesystem::path & | path, |
std::string | name, | ||
const bool | full_event, | ||
std::string | HepMC3_output_type | ||
) |
Create HepMC particle 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] | HepMC3_output_type | "root" or "asciiv3" |
Definition at line 250 of file hepmcoutput.cc.
smash::HepMcOutput::~HepMcOutput | ( | ) |
Destructor renames file.
Definition at line 270 of file hepmcoutput.cc.
|
override |
Add the final particles information of an event to the central vertex.
Store impact parameter 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 277 of file hepmcoutput.cc.
|
private |
Filename of output.
Definition at line 66 of file hepmcoutput.h.
|
private |
Filename of output as long as simulation is still running.
Definition at line 68 of file hepmcoutput.h.
|
private |
Pointers to the base class of HepMC3 output files.
Definition at line 70 of file hepmcoutput.h.
|
private |
HepMC3 output type.
Definition at line 74 of file hepmcoutput.h.