Version: SMASH-1.5
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 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...
 

Private Attributes

uint16_t format_version_ = 6
 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)=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 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...
 
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

◆ BinaryOutputBase()

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 116 of file binaryoutput.cc.

120  : OutputInterface(name), file_{path, mode}, extended_(extended_format) {
121  std::fwrite("SMSH", 4, 1, file_.get()); // magic number
122  write(format_version_); // file format version number
123  std::uint16_t format_variant = static_cast<uint16_t>(extended_);
124  write(format_variant);
125  write(VERSION_MAJOR); // SMASH version
126 }
FILE * get()
Get the underlying FILE* pointer.
Definition: file.cc:27
RenamingFilePtr file_
Binary particles output file path.
Definition: binaryoutput.h:108
uint16_t format_version_
Binary file format version number.
Definition: binaryoutput.h:112
void write(const std::string &s)
Write string to binary output.
OutputInterface(std::string name)
Construct output interface.
bool extended_
Option for extended output.
Definition: binaryoutput.h:114

Member Function Documentation

◆ write() [1/9]

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

Write string to binary output.

Parameters
[in]sString to be written.

Definition at line 129 of file binaryoutput.cc.

129  {
130  const auto size = boost::numeric_cast<uint32_t>(s.size());
131  std::fwrite(&size, sizeof(std::uint32_t), 1, file_.get());
132  std::fwrite(s.c_str(), s.size(), 1, file_.get());
133 }
FILE * get()
Get the underlying FILE* pointer.
Definition: file.cc:27
RenamingFilePtr file_
Binary particles output file path.
Definition: binaryoutput.h:108
Here is the call graph for this function:
Here is the caller graph for this function:

◆ write() [2/9]

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

Write double to binary output.

Parameters
[in]xValue to be written.

Definition at line 135 of file binaryoutput.cc.

135  {
136  std::fwrite(&x, sizeof(x), 1, file_.get());
137 }
FILE * get()
Get the underlying FILE* pointer.
Definition: file.cc:27
RenamingFilePtr file_
Binary particles output file path.
Definition: binaryoutput.h:108
Here is the call graph for this function:

◆ write() [3/9]

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

Write four-vector to binary output.

Parameters
[in]vFour-vector to be written.

Definition at line 139 of file binaryoutput.cc.

139  {
140  std::fwrite(v.begin(), sizeof(*v.begin()), 4, file_.get());
141 }
FILE * get()
Get the underlying FILE* pointer.
Definition: file.cc:27
RenamingFilePtr file_
Binary particles output file path.
Definition: binaryoutput.h:108
Here is the call graph for this function:

◆ write() [4/9]

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 63 of file binaryoutput.h.

63  {
64  std::fwrite(&x, sizeof(x), 1, file_.get());
65  }
FILE * get()
Get the underlying FILE* pointer.
Definition: file.cc:27
RenamingFilePtr file_
Binary particles output file path.
Definition: binaryoutput.h:108
Here is the call graph for this function:

◆ write() [5/9]

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 71 of file binaryoutput.h.

71  {
72  std::fwrite(&x, sizeof(x), 1, file_.get());
73  }
FILE * get()
Get the underlying FILE* pointer.
Definition: file.cc:27
RenamingFilePtr file_
Binary particles output file path.
Definition: binaryoutput.h:108
Here is the call graph for this function:

◆ write() [6/9]

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 79 of file binaryoutput.h.

79  {
80  std::fwrite(&x, sizeof(x), 1, file_.get());
81  }
FILE * get()
Get the underlying FILE* pointer.
Definition: file.cc:27
RenamingFilePtr file_
Binary particles output file path.
Definition: binaryoutput.h:108
Here is the call graph for this function:

◆ write() [7/9]

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 87 of file binaryoutput.h.

87 { write(boost::numeric_cast<uint32_t>(x)); }
void write(const std::string &s)
Write string to binary output.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ write() [8/9]

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 143 of file binaryoutput.cc.

143  {
144  for (const auto &p : particles) {
146  }
147 }
void write_particledata(const ParticleData &p)
Write particle data to binary output.
constexpr int p
Proton.
Here is the call graph for this function:

◆ write() [9/9]

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 149 of file binaryoutput.cc.

149  {
150  for (const auto &p : particles) {
152  }
153 }
void write_particledata(const ParticleData &p)
Write particle data to binary output.
constexpr int p
Proton.
Here is the call graph for this function:

◆ write_particledata()

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 155 of file binaryoutput.cc.

155  {
156  write(p.position());
157  double mass = p.effective_mass();
158  std::fwrite(&mass, sizeof(mass), 1, file_.get());
159  write(p.momentum());
160  write(p.pdgcode().get_decimal());
161  write(p.id());
162  write(p.type().charge());
163  if (extended_) {
164  const auto history = p.get_history();
165  write(history.collisions_per_particle);
166  write(p.formation_time());
167  write(p.xsec_scaling_factor());
168  write(history.id_process);
169  write(static_cast<uint32_t>(history.process_type));
170  write(history.time_last_collision);
171  write(history.p1.get_decimal());
172  write(history.p2.get_decimal());
173  }
174 }
FILE * get()
Get the underlying FILE* pointer.
Definition: file.cc:27
RenamingFilePtr file_
Binary particles output file path.
Definition: binaryoutput.h:108
void write(const std::string &s)
Write string to binary output.
constexpr int p
Proton.
bool extended_
Option for extended output.
Definition: binaryoutput.h:114
Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ file_

RenamingFilePtr smash::BinaryOutputBase::file_
protected

Binary particles output file path.

Definition at line 108 of file binaryoutput.h.

◆ format_version_

uint16_t smash::BinaryOutputBase::format_version_ = 6
private

Binary file format version number.

Definition at line 112 of file binaryoutput.h.

◆ extended_

bool smash::BinaryOutputBase::extended_
private

Option for extended output.

Definition at line 114 of file binaryoutput.h.


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