Version: SMASH-2.0.2
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, const int total_N, const int proj_N)
 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, 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...
 
- Public Member Functions inherited from smash::OutputInterface
 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 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...
 
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...
 
- 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,
const int  total_N,
const int  proj_N 
)

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
[in]total_NTotal number of particles in both nuclei.
[in]proj_NNumber of particles in projectile.

Definition at line 70 of file hepmcoutput.cc.

73  : HepMcInterface(name, full_event, total_N, proj_N),
74  filename_(path / (name + ".asciiv3")) {
76  filename_unfinished_ += +".unfinished";
77  output_file_ =
78  make_unique<HepMC3::WriterAscii>(filename_unfinished_.string());
79 }

◆ ~HepMcOutput()

smash::HepMcOutput::~HepMcOutput ( )

Destructor renames file.

Definition at line 80 of file hepmcoutput.cc.

80  {
81  logg[LOutput].debug() << "Renaming file " << filename_unfinished_ << " to "
82  << filename_ << std::endl;
83  bf::rename(filename_unfinished_, filename_);
84 }

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 86 of file hepmcoutput.cc.

88  {
89  HepMcInterface::at_eventend(particles, event_number, event);
90  logg[LOutput].debug() << "Writing event " << event_number << " with "
91  << event_.particles().size() << " particles and "
92  << event_.vertices().size() << " vertices to output "
93  << std::endl;
94  output_file_->write_event(event_);
95 }
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 64 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 66 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 68 of file hepmcoutput.h.


The documentation for this class was generated from the following files:
smash::LOutput
static constexpr int LOutput
Definition: outputinterface.h:24
smash::HepMcInterface::event_
HepMC3::GenEvent event_
The event.
Definition: hepmcinterface.h:188
smash::HepMcOutput::filename_unfinished_
bf::path filename_unfinished_
Filename of output as long as simulation is still running.
Definition: hepmcoutput.h:66
smash::logg
std::array< einhard::Logger<>, std::tuple_size< LogArea::AreaTuple >::value > logg
An array that stores all pre-configured Logger objects.
Definition: logging.cc:39
smash::HepMcOutput::output_file_
std::unique_ptr< HepMC3::WriterAscii > output_file_
Pointer to Ascii HepMC3 output file.
Definition: hepmcoutput.h:68
smash::HepMcInterface::HepMcInterface
HepMcInterface(const std::string &name, const bool full_event, const int total_N, const int proj_N)
Create HepMC particle event in memory.
Definition: hepmcinterface.cc:18
smash::HepMcInterface::at_eventend
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.
Definition: hepmcinterface.cc:142
smash::HepMcOutput::filename_
const bf::path filename_
Filename of output.
Definition: hepmcoutput.h:64