Version: SMASH-1.7
smash::BinaryOutputBase Class Reference

#include <binaryoutput.h>

Base class for SMASH binary output.

Definition at line 28 of file binaryoutput.h.

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

Protected Member Functions

 BinaryOutputBase (const bf::path &path, const std::string &mode, const std::string &name, bool extended_format)
 Create binary output base. More...
 
void write (const char c)
 Write byte to binary output. More...
 
void write (const std::string &s)
 Write string to binary output. More...
 
void write (const double x)
 Write double to binary output. More...
 
void write (const FourVector &v)
 Write four-vector to binary output. More...
 
void write (const std::int32_t x)
 Write integer (32 bit) to binary output. More...
 
void write (const std::uint32_t x)
 Write unsigned integer (32 bit) to binary output. More...
 
void write (const std::uint16_t x)
 Write unsigned integer (16 bit) to binary output. More...
 
void write (const size_t x)
 Write a std::size_t to binary output. More...
 
void write (const Particles &particles)
 Write particle data of each particle in particles to binary output. More...
 
void write (const ParticleList &particles)
 Write each particle data entry to binary output. More...
 
void write_particledata (const ParticleData &p)
 Write particle data to binary output. More...
 

Protected Attributes

RenamingFilePtr file_
 Binary particles output file path. 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 Attributes

const uint16_t format_version_ = 7
 Binary file format version number. More...
 
bool extended_
 Option for extended output. More...
 

Additional Inherited Members

- Public Member Functions inherited from smash::OutputInterface
 OutputInterface (std::string name)
 Construct output interface. More...
 
virtual ~OutputInterface ()=default
 
virtual void at_eventstart (const Particles &particles, const int event_number)=0
 Output launched at event start after initialization, when particles are generated but not yet propagated. More...
 
virtual void at_eventend (const Particles &particles, const int event_number, double impact_parameter, bool empty_event)=0
 Output launched at event end. More...
 
virtual void at_interaction (const Action &action, const double density)
 Called whenever an action modified one or more particles. More...
 
virtual void at_intermediate_time (const Particles &particles, 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_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...
 

Constructor & Destructor Documentation

smash::BinaryOutputBase::BinaryOutputBase ( const bf::path &  path,
const std::string &  mode,
const std::string &  name,
bool  extended_format 
)
explicitprotected

Create binary output base.

Parameters
[in]pathOutput path.
[in]modeIs used to determine the file access mode.
[in]nameName of the output.
[in]extended_formatIs the written output extended.

Definition at line 133 of file binaryoutput.cc.

137  : OutputInterface(name), file_{path, mode}, extended_(extended_format) {
138  std::fwrite("SMSH", 4, 1, file_.get()); // magic number
139  write(format_version_); // file format version number
140  std::uint16_t format_variant = static_cast<uint16_t>(extended_);
141  write(format_variant);
142  write(VERSION_MAJOR); // SMASH version
143 }
FILE * get()
Get the underlying FILE* pointer.
Definition: file.cc:27
RenamingFilePtr file_
Binary particles output file path.
Definition: binaryoutput.h:114
void write(const char c)
Write byte to binary output.
const uint16_t format_version_
Binary file format version number.
Definition: binaryoutput.h:118
OutputInterface(std::string name)
Construct output interface.
bool extended_
Option for extended output.
Definition: binaryoutput.h:120

Here is the call graph for this function:

Member Function Documentation

void smash::BinaryOutputBase::write ( const char  c)
protected

Write byte to binary output.

Parameters
[in]cValue to be written.

Definition at line 146 of file binaryoutput.cc.

146  {
147  std::fwrite(&c, sizeof(char), 1, file_.get());
148 }
FILE * get()
Get the underlying FILE* pointer.
Definition: file.cc:27
RenamingFilePtr file_
Binary particles output file path.
Definition: binaryoutput.h:114

Here is the call graph for this function:

Here is the caller graph for this function:

void smash::BinaryOutputBase::write ( const std::string &  s)
protected

Write string to binary output.

Parameters
[in]sString to be written.

Definition at line 150 of file binaryoutput.cc.

150  {
151  const auto size = boost::numeric_cast<uint32_t>(s.size());
152  std::fwrite(&size, sizeof(std::uint32_t), 1, file_.get());
153  std::fwrite(s.c_str(), s.size(), 1, file_.get());
154 }
FILE * get()
Get the underlying FILE* pointer.
Definition: file.cc:27
RenamingFilePtr file_
Binary particles output file path.
Definition: binaryoutput.h:114

Here is the call graph for this function:

void smash::BinaryOutputBase::write ( const double  x)
protected

Write double to binary output.

Parameters
[in]xValue to be written.

Definition at line 156 of file binaryoutput.cc.

156  {
157  std::fwrite(&x, sizeof(x), 1, file_.get());
158 }
FILE * get()
Get the underlying FILE* pointer.
Definition: file.cc:27
RenamingFilePtr file_
Binary particles output file path.
Definition: binaryoutput.h:114

Here is the call graph for this function:

void smash::BinaryOutputBase::write ( const FourVector v)
protected

Write four-vector to binary output.

Parameters
[in]vFour-vector to be written.

Definition at line 160 of file binaryoutput.cc.

160  {
161  std::fwrite(v.begin(), sizeof(*v.begin()), 4, file_.get());
162 }
FILE * get()
Get the underlying FILE* pointer.
Definition: file.cc:27
RenamingFilePtr file_
Binary particles output file path.
Definition: binaryoutput.h:114

Here is the call graph for this function:

void smash::BinaryOutputBase::write ( const std::int32_t  x)
inlineprotected

Write integer (32 bit) to binary output.

Parameters
[in]xValue to be written.

Definition at line 69 of file binaryoutput.h.

69  {
70  std::fwrite(&x, sizeof(x), 1, file_.get());
71  }
FILE * get()
Get the underlying FILE* pointer.
Definition: file.cc:27
RenamingFilePtr file_
Binary particles output file path.
Definition: binaryoutput.h:114

Here is the call graph for this function:

void smash::BinaryOutputBase::write ( const std::uint32_t  x)
inlineprotected

Write unsigned integer (32 bit) to binary output.

Parameters
[in]xValue to be written.

Definition at line 77 of file binaryoutput.h.

77  {
78  std::fwrite(&x, sizeof(x), 1, file_.get());
79  }
FILE * get()
Get the underlying FILE* pointer.
Definition: file.cc:27
RenamingFilePtr file_
Binary particles output file path.
Definition: binaryoutput.h:114

Here is the call graph for this function:

void smash::BinaryOutputBase::write ( const std::uint16_t  x)
inlineprotected

Write unsigned integer (16 bit) to binary output.

Parameters
[in]xValue to be written.

Definition at line 85 of file binaryoutput.h.

85  {
86  std::fwrite(&x, sizeof(x), 1, file_.get());
87  }
FILE * get()
Get the underlying FILE* pointer.
Definition: file.cc:27
RenamingFilePtr file_
Binary particles output file path.
Definition: binaryoutput.h:114

Here is the call graph for this function:

void smash::BinaryOutputBase::write ( const size_t  x)
inlineprotected

Write a std::size_t to binary output.

Parameters
[in]xValue to be written.

Definition at line 93 of file binaryoutput.h.

93 { write(boost::numeric_cast<uint32_t>(x)); }
void write(const char c)
Write byte to binary output.

Here is the call graph for this function:

Here is the caller graph for this function:

void smash::BinaryOutputBase::write ( const Particles particles)
protected

Write particle data of each particle in particles to binary output.

Parameters
[in]particlesList of particles, whose data is to be written.

Definition at line 164 of file binaryoutput.cc.

164  {
165  for (const auto &p : particles) {
167  }
168 }
void write_particledata(const ParticleData &p)
Write particle data to binary output.
constexpr int p
Proton.

Here is the call graph for this function:

void smash::BinaryOutputBase::write ( const ParticleList &  particles)
protected

Write each particle data entry to binary output.

Parameters
[in]particlesList of particles, whose data is to be written.

Definition at line 170 of file binaryoutput.cc.

170  {
171  for (const auto &p : particles) {
173  }
174 }
void write_particledata(const ParticleData &p)
Write particle data to binary output.
constexpr int p
Proton.

Here is the call graph for this function:

void smash::BinaryOutputBase::write_particledata ( const ParticleData p)
protected

Write particle data to binary output.

Parameters
[in]pParticle data to be written.

Definition at line 176 of file binaryoutput.cc.

176  {
177  write(p.position());
178  double mass = p.effective_mass();
179  std::fwrite(&mass, sizeof(mass), 1, file_.get());
180  write(p.momentum());
181  write(p.pdgcode().get_decimal());
182  write(p.id());
183  write(p.type().charge());
184  if (extended_) {
185  const auto history = p.get_history();
186  write(history.collisions_per_particle);
187  write(p.formation_time());
188  write(p.xsec_scaling_factor());
189  write(history.id_process);
190  write(static_cast<int32_t>(history.process_type));
191  write(history.time_last_collision);
192  write(history.p1.get_decimal());
193  write(history.p2.get_decimal());
194  }
195 }
FILE * get()
Get the underlying FILE* pointer.
Definition: file.cc:27
RenamingFilePtr file_
Binary particles output file path.
Definition: binaryoutput.h:114
constexpr int p
Proton.
void write(const char c)
Write byte to binary output.
bool extended_
Option for extended output.
Definition: binaryoutput.h:120

Here is the call graph for this function:

Here is the caller graph for this function:

Member Data Documentation

RenamingFilePtr smash::BinaryOutputBase::file_
protected

Binary particles output file path.

Definition at line 114 of file binaryoutput.h.

const uint16_t smash::BinaryOutputBase::format_version_ = 7
private

Binary file format version number.

Definition at line 118 of file binaryoutput.h.

bool smash::BinaryOutputBase::extended_
private

Option for extended output.

Definition at line 120 of file binaryoutput.h.


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