14 #include <boost/filesystem.hpp>    18 #include "smash/config.h"   128                                    const std::string &mode,
   129                                    const std::string &name,
   130                                    bool extended_format)
   132   std::fwrite(
"SMSH", 4, 1, 
file_.
get());  
   134   std::uint16_t format_variant = 
static_cast<uint16_t
>(
extended_);
   135   write(format_variant);
   136   write(VERSION_MAJOR);  
   141   const auto size = boost::numeric_cast<uint32_t>(s.size());
   142   std::fwrite(&size, 
sizeof(std::uint32_t), 1, 
file_.
get());
   143   std::fwrite(s.c_str(), s.size(), 1, 
file_.
get());
   147   std::fwrite(&x, 
sizeof(x), 1, 
file_.
get());
   155   for (
const auto &
p : particles) {
   161   for (
const auto &
p : particles) {
   169   std::fwrite(&mass, 
sizeof(mass), 1, 
file_.
get());
   176     write(history.collisions_per_particle);
   179     write(history.id_process);
   180     write(static_cast<int32_t>(history.process_type));
   181     write(history.time_last_collision);
   182     write(history.p1.get_decimal());
   183     write(history.p2.get_decimal());
   191           path / ((name == 
"Collisions" ? 
"collisions_binary" : name) + 
".bin"),
   192           "wb", name, out_par.get_coll_extended(name)),
   193       print_start_end_(out_par.coll_printstartend) {}
   199     std::fwrite(&pchar, 
sizeof(
char), 1, 
file_.
get());
   206                                          const int32_t event_number,
   207                                          double impact_parameter) {
   210     std::fwrite(&pchar, 
sizeof(
char), 1, 
file_.
get());
   217   std::fwrite(&fchar, 
sizeof(
char), 1, 
file_.
get());
   219   write(impact_parameter);
   226                                             const double density) {
   228   std::fwrite(&ichar, 
sizeof(
char), 1, 
file_.
get());
   231   std::fwrite(&density, 
sizeof(
double), 1, 
file_.
get());
   233   std::fwrite(&weight, 
sizeof(
double), 1, 
file_.
get());
   235   std::fwrite(&partial_weight, 
sizeof(
double), 1, 
file_.
get());
   236   const auto type = 
static_cast<uint32_t
>(action.
get_type());
   237   std::fwrite(&type, 
sizeof(uint32_t), 1, 
file_.
get());
   246                        out_par.part_extended),
   247       only_final_(out_par.part_only_final) {}
   253     std::fwrite(&pchar, 
sizeof(
char), 1, 
file_.
get());
   260                                         const int event_number,
   261                                         double impact_parameter) {
   263   std::fwrite(&pchar, 
sizeof(
char), 1, 
file_.
get());
   269   std::fwrite(&fchar, 
sizeof(
char), 1, 
file_.
get());
   271   write(impact_parameter);
   282     std::fwrite(&pchar, 
sizeof(
char), 1, 
file_.
get());
 void at_intermediate_time(const Particles &particles, const Clock &clock, const DensityParameters &dens_param) override
Writes particles at each time interval; fixed by option OUTPUT_INTERVAL. 
double formation_time() const 
Get the absolute formation time of the particle. 
A class to pre-calculate and store parameters relevant for density calculation. 
PdgCode pdgcode() const 
Get the pdgcode of the particle. 
void at_eventend(const Particles &particles, const int event_number, double impact_parameter) override
Writes the final particle information of an event to the binary output. 
void at_interaction(const Action &action, const double density) override
Writes an interaction block, including information about the incoming and outgoing particles...
const FourVector & position() const 
Get the particle's position in Minkowski space. 
BinaryOutputCollisions(const bf::path &path, std::string name, const OutputParameters &out_par)
Create binary particle output. 
FILE * get()
Get the underlying FILE* pointer. 
RenamingFilePtr file_
Binary particles output file path. 
void write_particledata(const ParticleData &p)
Write particle data to binary output. 
virtual double get_partial_weight() const =0
Return the specific weight for the chosen outgoing channel, which is mainly used for the partial weig...
virtual ProcessType get_type() const 
Get the process type. 
uint16_t format_version_
Binary file format version number. 
void at_eventstart(const Particles &particles, const int event_number) override
Writes the initial particle information of an event to the binary output. 
void write(const std::string &s)
Write string to binary output. 
double effective_mass() const 
Get the particle's effective mass. 
void at_eventend(const Particles &particles, const int32_t event_number, double impact_parameter) override
Writes the final particle information list of an event to the binary output. 
HistoryData get_history() const 
Get history information. 
double xsec_scaling_factor(double delta_time=0.) const 
Return the cross section scaling factor at a given time. 
Helper structure for Experiment to hold output options and parameters. 
Base class for SMASH binary output. 
const ParticleType & type() const 
Get the type of the particle. 
Clock tracks the time in the simulation. 
Action is the base class for a generic process that takes a number of incoming particles and transfor...
virtual double get_total_weight() const =0
Return the total weight value, which is mainly used for the weight output entry. 
int32_t charge() const 
The charge of the particle. 
BinaryOutputBase(const bf::path &path, const std::string &mode, const std::string &name, bool extended_format)
Create binary output base. 
void at_eventstart(const Particles &particles, const int event_number) override
Writes the initial particle information list of an event to the binary output. 
bool print_start_end_
Write initial and final particles additonally to collisions? 
const ParticleList & incoming_particles() const 
Get the list of particles that go into the action. 
bool only_final_
Write only final particles (True) or both, inital and final (False). 
The Particles class abstracts the storage and manipulation of particles. 
const ParticleList & outgoing_particles() const 
Get the list of particles that resulted from the action. 
int32_t id() const 
Get the id of the particle. 
The FourVector class holds relevant values in Minkowski spacetime with (+, −, −, −) metric signature. 
int32_t get_decimal() const 
BinaryOutputParticles(const bf::path &path, std::string name, const OutputParameters &out_par)
Create binary particle output. 
ParticleData contains the dynamic information of a certain particle. 
Abstraction of generic output. 
const FourVector & momentum() const 
Get the particle's 4-momentum. 
bool extended_
Option for extended output.