Version: SMASH-2.1
smash::HepMcOutput Class Reference

#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 is a human-readable ASCII file. HepMC version 3 is used.

More details of the output format can be found in the User Guide.

Definition at line 34 of file hepmcoutput.h.

Inheritance diagram for smash::HepMcOutput:
[legend]
Collaboration diagram for smash::HepMcOutput:
[legend]

Public Member Functions

 HepMcOutput (const bf::path &path, std::string name, const bool full_event)
 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 ()=default
 
virtual void at_eventstart (const std::vector< Particles > &ensembles, int event_number)
 Output launched at event start after initialization, when particles are generated but not yet propagated. More...
 
virtual void at_eventstart (const int event_number, const ThermodynamicQuantity tq, const DensityType dens_type, RectangularLattice< DensityOnLattice > lattice)
 Output launched at event start after initialization, when particles are generated but not yet propagated. More...
 
virtual void at_eventstart (const int event_number, const ThermodynamicQuantity tq, const DensityType dens_type, RectangularLattice< EnergyMomentumTensor > lattice)
 Output launched atevent start after initialization, when particles are generated but not yet propagated. More...
 
virtual void at_eventend (const int event_number, const ThermodynamicQuantity tq, const DensityType dens_type)
 Output launched at event end. More...
 
virtual void at_eventend (const ThermodynamicQuantity tq)
 Output launched at event end. More...
 
virtual void at_eventend (const Particles &particles, const int event_number, const EventInfo &info)
 Output launched at event end. More...
 
virtual void at_eventend (const std::vector< Particles > &ensembles, const int event_number)
 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 at_intermediate_time (const std::vector< Particles > &ensembles, const std::unique_ptr< Clock > &clock, const DensityParameters &dens_param)
 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_lattice_output (RectangularLattice< DensityOnLattice > &lattice, const double current_time)
 Output to write thermodynamics from the lattice. More...
 
virtual void thermodynamics_lattice_output (RectangularLattice< DensityOnLattice > &lattice, const double current_time, const std::vector< Particles > &ensembles, const DensityParameters &dens_param)
 Output to write thermodynamics from the lattice. More...
 
virtual void thermodynamics_lattice_output (const ThermodynamicQuantity tq, RectangularLattice< EnergyMomentumTensor > &lattice, const double current_time)
 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...
 
virtual void fields_output (const std::string name1, const std::string name2, RectangularLattice< std::pair< ThreeVector, ThreeVector >> &lat)
 Write fields in vtk output. 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 Attributes

const bf::path filename_
 Filename of output. More...
 
bf::path filename_unfinished_
 Filename of output as long as simulation is still running. More...
 
std::unique_ptr< HepMC3::WriterAscii > output_file_
 Pointer to Ascii HepMC3 output file. 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...
 

Constructor & Destructor Documentation

◆ HepMcOutput()

smash::HepMcOutput::HepMcOutput ( const bf::path &  path,
std::string  name,
const bool  full_event 
)

Create HepMC particle output.

Parameters
[in]pathOutput path.
[in]nameName of the output.
[in]full_eventWhether the full event or only final-state particles are printed in the output

Definition at line 70 of file hepmcoutput.cc.

72  : HepMcInterface(name, full_event), filename_(path / (name + ".asciiv3")) {
74  filename_unfinished_ += +".unfinished";
75  output_file_ = make_unique<HepMC3::WriterAscii>(filename_unfinished_.string(),
76  event_.run_info());
77 }
HepMC3::GenEvent event_
The event.
HepMcInterface(const std::string &name, const bool full_event)
Create HepMC particle event in memory.
const bf::path filename_
Filename of output.
Definition: hepmcoutput.h:61
bf::path filename_unfinished_
Filename of output as long as simulation is still running.
Definition: hepmcoutput.h:63
std::unique_ptr< HepMC3::WriterAscii > output_file_
Pointer to Ascii HepMC3 output file.
Definition: hepmcoutput.h:65

◆ ~HepMcOutput()

smash::HepMcOutput::~HepMcOutput ( )

Destructor renames file.

Definition at line 78 of file hepmcoutput.cc.

78  {
79  logg[LOutput].debug() << "Renaming file " << filename_unfinished_ << " to "
80  << filename_ << std::endl;
81  bf::rename(filename_unfinished_, filename_);
82 }
std::array< einhard::Logger<>, std::tuple_size< LogArea::AreaTuple >::value > logg
An array that stores all pre-configured Logger objects.
Definition: logging.cc:39
static constexpr int LOutput

Member Function Documentation

◆ at_eventend()

void smash::HepMcOutput::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.

Store impact parameter and write event.

Parameters
[in]particlesCurrent list of particles.
[in]event_numberNumber of event.
[in]eventEvent info, see event_info

Definition at line 84 of file hepmcoutput.cc.

86  {
87  HepMcInterface::at_eventend(particles, event_number, event);
88  logg[LOutput].debug() << "Writing event " << event_number << " with "
89  << event_.particles().size() << " particles and "
90  << event_.vertices().size() << " vertices to output "
91  << std::endl;
92  output_file_->write_event(event_);
93 }
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.
Here is the call graph for this function:

Member Data Documentation

◆ filename_

const bf::path smash::HepMcOutput::filename_
private

Filename of output.

Definition at line 61 of file hepmcoutput.h.

◆ filename_unfinished_

bf::path smash::HepMcOutput::filename_unfinished_
private

Filename of output as long as simulation is still running.

Definition at line 63 of file hepmcoutput.h.

◆ output_file_

std::unique_ptr<HepMC3::WriterAscii> smash::HepMcOutput::output_file_
private

Pointer to Ascii HepMC3 output file.

Definition at line 65 of file hepmcoutput.h.


The documentation for this class was generated from the following files: