236       filename_(path / (name + 
".root")),
 
  237       write_collisions_(name == 
"Collisions" || name == 
"Dileptons" ||
 
  239       write_particles_(name == 
"Particles"),
 
  240       write_initial_conditions_(name == 
"SMASH_IC"),
 
  241       particles_only_final_(out_par.part_only_final),
 
  242       part_extended_(out_par.part_extended),
 
  243       coll_extended_(out_par.coll_extended),
 
  244       ic_extended_(out_par.ic_extended) {
 
  287                               "form_time[npart]/D");
 
  290                               "proc_id_origin[npart]/I");
 
  292                               "proc_type_origin[npart]/I");
 
  294                               "time_last_coll[npart]/D");
 
  296                               "pdg_mother1[npart]/I");
 
  298                               "pdg_mother2[npart]/I");
 
  300                               "baryon_number[npart]/I");
 
  302                               "strangeness[npart]/I");
 
  333                                "form_time[npart]/D");
 
  336                                "proc_id_origin[npart]/I");
 
  338                                "proc_type_origin[npart]/I");
 
  340                                "time_last_coll[npart]/D");
 
  342                                "pdg_mother1[npart]/I");
 
  344                                "pdg_mother2[npart]/I");
 
  346                                "baryon_number[npart]/I");
 
  348                                "strangeness[npart]/I");
 
  372   test_p_ = 
event.test_particles;
 
  376   E_tot_ = 
event.total_energy;
 
  389                                       const std::unique_ptr<Clock> &,
 
  395   test_p_ = 
event.test_particles;
 
  399   E_tot_ = 
event.total_energy;
 
  412   test_p_ = 
event.test_particles;
 
  416   E_tot_ = 
event.total_energy;
 
  452           "End time might be too small for initial conditions output. " 
  453           "Hypersurface has not yet been crossed by ",
 
  454           particles.
size(), 
" particle(s).");
 
  472 template <
typename T>
 
  479   bool exceeded_buffer_message = 
true;
 
  481   for (
const auto &
p : particles) {
 
  484       if (exceeded_buffer_message) {
 
  486             << 
"\nThe number of particles N = " << particles.size()
 
  489             << std::ceil(particles.size() /
 
  491             << 
" separate ROOT Tree entries will be created at this output." 
  492             << 
"\nMaximum buffer size (max_buffer_size_) can be changed in " 
  493             << 
"rootoutput.h\n\n";
 
  494         exceeded_buffer_message = 
false;
 
  503       p0_[i] = 
p.momentum().x0();
 
  504       px_[i] = 
p.momentum().x1();
 
  505       py_[i] = 
p.momentum().x2();
 
  506       pz_[i] = 
p.momentum().x3();
 
  508       t_[i] = 
p.position().x0();
 
  509       x_[i] = 
p.position().x1();
 
  510       y_[i] = 
p.position().x2();
 
  511       z_[i] = 
p.position().x3();
 
  514         const auto h = 
p.get_history();
 
  538                                     const ParticleList &outgoing,
 
  540                                     const double partial_weight) {
 
  543   nin_ = incoming.size();
 
  544   nout_ = outgoing.size();
 
  556   for (
const ParticleList &plist : {incoming, outgoing}) {
 
  557     for (
const auto &
p : plist) {
 
  561       p0_[i] = 
p.momentum().x0();
 
  562       px_[i] = 
p.momentum().x1();
 
  563       py_[i] = 
p.momentum().x2();
 
  564       pz_[i] = 
p.momentum().x3();
 
  566       t_[i] = 
p.position().x0();
 
  567       x_[i] = 
p.position().x1();
 
  568       y_[i] = 
p.position().x2();
 
  569       z_[i] = 
p.position().x3();
 
  572         const auto h = 
p.get_history();
 
Action is the base class for a generic process that takes a number of incoming particles and transfor...
 
virtual ProcessType get_type() const
Get the process type.
 
virtual double get_total_weight() const =0
Return the total weight value, which is mainly used for the weight output entry.
 
const ParticleList & incoming_particles() const
Get the list of particles that go into the action.
 
virtual double get_partial_weight() const =0
Return the specific weight for the chosen outgoing channel, which is mainly used for the partial weig...
 
const ParticleList & outgoing_particles() const
Get the list of particles that resulted from the action.
 
A class to pre-calculate and store parameters relevant for density calculation.
 
Abstraction of generic output.
 
The Particles class abstracts the storage and manipulation of particles.
 
void at_interaction(const Action &action, const double density) override
Writes collisions to a tree defined by treename.
 
std::vector< double > t_
Property that is written to ROOT output.
 
std::vector< double > y_
Property that is written to ROOT output.
 
void at_intermediate_time(const Particles &particles, const std::unique_ptr< Clock > &clock, const DensityParameters &dens_param, const EventLabel &event_label, const EventInfo &event) override
Writes intermediate particles to a tree defined by treename, if it is allowed (i.e....
 
double current_t_
Property that is written to ROOT output.
 
OutputOnlyFinal particles_only_final_
Print only final particles in the event, no intermediate output.
 
int current_event_
Number of current event.
 
TTree * collisions_tree_
TTree for collision output.
 
double E_kinetic_tot_
Property that is written to ROOT output.
 
int test_p_
Property that is written to ROOT output.
 
void collisions_to_tree(const ParticleList &incoming, const ParticleList &outgoing, const double weight, const double partial_weight)
Writes collisions to a tree defined by treename.
 
void at_eventstart(const Particles &particles, const EventLabel &event_label, const EventInfo &event) override
update event number and writes intermediate particles to a tree.
 
int autosave_frequency_
ROOT file cannot be read if it was not properly closed and finalized.
 
std::vector< int > proc_type_origin_
Property that is written to ROOT output.
 
double modus_l_
Property that is written to ROOT output.
 
std::vector< double > time_last_coll_
Property that is written to ROOT output.
 
std::vector< int > coll_per_part_
Property that is written to ROOT output.
 
int tcounter_
Property that is written to ROOT output.
 
std::vector< int > baryon_number_
Property that is written to ROOT output.
 
int npart_
Property that is written to ROOT output.
 
std::vector< int > pdg_mother1_
Property that is written to ROOT output.
 
int nin_
Property that is written to ROOT output.
 
int ev_
Property that is written to ROOT output.
 
bool write_collisions_
Option to write collisions tree.
 
std::vector< int > charge_
Property that is written to ROOT output.
 
std::vector< double > px_
Property that is written to ROOT output.
 
const std::filesystem::path filename_
Filename of output.
 
std::vector< int > strangeness_
Property that is written to ROOT output.
 
bool write_initial_conditions_
Option to write particles tree for initial conditions.
 
double wgt_
Property that is written to ROOT output.
 
std::vector< double > py_
Property that is written to ROOT output.
 
std::vector< int > proc_id_origin_
Property that is written to ROOT output.
 
void particles_to_tree(T &particles)
Writes particles to a tree defined by treename.
 
const bool part_extended_
Whether extended particle output is on.
 
double impact_b_
Property that is written to ROOT output.
 
RootOutput(const std::filesystem::path &path, const std::string &name, const OutputParameters &out_par)
Construct ROOT output.
 
std::vector< double > z_
Property that is written to ROOT output.
 
std::vector< double > formation_time_
Property that is written to ROOT output.
 
int current_ensemble_
Number of current ensemble.
 
void at_eventend(const Particles &particles, const EventLabel &event_label, const EventInfo &event) override
update event number and impact parameter, and writes intermediate particles to a tree.
 
std::vector< double > x_
Property that is written to ROOT output.
 
std::vector< double > p0_
Property that is written to ROOT output.
 
bool empty_event_
Property that is written to ROOT output.
 
static const int max_buffer_size_
Maximal buffer size.
 
std::unique_ptr< TFile > root_out_file_
Pointer to root output file.
 
std::vector< double > xsec_factor_
Property that is written to ROOT output.
 
double E_fields_tot_
Property that is written to ROOT output.
 
std::filesystem::path filename_unfinished_
Filename of output as long as simulation is still running.
 
const bool coll_extended_
Whether extended collisions output is on.
 
double par_wgt_
Property that is written to ROOT output.
 
void init_trees()
Basic initialization routine, creating the TTree objects for particles and collisions.
 
int output_counter_
Number of output in a given event.
 
double E_tot_
Property that is written to ROOT output.
 
TTree * particles_tree_
TTree for particles output.
 
int ens_
Property that is written to ROOT output.
 
std::vector< double > pz_
Property that is written to ROOT output.
 
int nout_
Property that is written to ROOT output.
 
const bool ic_extended_
Whether extended ic output is on.
 
bool write_particles_
Option to write particles tree.
 
std::vector< int > pdgcode_
Property that is written to ROOT output.
 
std::vector< int > pdg_mother2_
Property that is written to ROOT output.
 
@ IfNotEmpty
Print only final-state particles, and those only if the event is not empty.
 
@ No
Print initial, intermediate and final-state particles.
 
std::array< einhard::Logger<>, std::tuple_size< LogArea::AreaTuple >::value > logg
An array that stores all pre-configured Logger objects.
 
static constexpr int LHyperSurfaceCrossing
 
@ HyperSurfaceCrossing
See here for a short description.
 
static constexpr int LOutput
 
Structure to contain custom data for output.
 
bool empty_event
True if no collisions happened.
 
bool impose_kinematic_cut_for_SMASH_IC
Whether or not kinematic cuts are employed for SMASH IC.
 
Structure to contain information about the event and ensemble numbers.
 
int32_t ensemble_number
The number of the ensemble.
 
int32_t event_number
The number of the event.
 
Helper structure for Experiment to hold output options and parameters.