Version: SMASH-1.5
rootoutput.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright (c) 2014-2018
4  * SMASH Team
5  *
6  * GNU General Public License (GPLv3 or later)
7  *
8  */
9 
10 #ifndef SRC_INCLUDE_ROOTOUTPUT_H_
11 #define SRC_INCLUDE_ROOTOUTPUT_H_
12 
13 #include <memory>
14 #include <string>
15 #include <vector>
16 
17 #include <boost/filesystem.hpp>
18 #include "TFile.h"
19 #include "TTree.h"
20 
21 #include "configuration.h"
22 #include "forwarddeclarations.h"
23 #include "outputinterface.h"
24 #include "outputparameters.h"
25 
26 namespace smash {
27 class Particles;
28 
94 class RootOutput : public OutputInterface {
95  public:
103  RootOutput(const bf::path &path, const std::string &name,
104  const OutputParameters &out_par);
105 
107  ~RootOutput();
108 
114  void at_eventstart(const Particles &particles,
115  const int event_number) override;
123  void at_eventend(const Particles &particles, const int event_number,
124  double impact_parameter) override;
132  void at_intermediate_time(const Particles &particles, const Clock &clock,
133  const DensityParameters &dens_param) override;
140  void at_interaction(const Action &action, const double density) override;
141 
142  private:
144  const bf::path filename_;
148  std::unique_ptr<TFile> root_out_file_;
167  void particles_to_tree(const Particles &particles);
175  void collisions_to_tree(const ParticleList &incoming,
176  const ParticleList &outgoing, const double weight,
177  const double partial_weight);
181  int current_event_ = 0;
182 
184  static const int max_buffer_size_ = 10000;
185 
187  std::array<double, max_buffer_size_> p0, px, py, pz, t, x, y, z;
189  std::array<int, max_buffer_size_> pdgcode;
191  double wgt, par_wgt, impact_b;
193 
196 
199 
202 
213 
218  void init_trees();
219 };
220 
221 } // namespace smash
222 
223 #endif // SRC_INCLUDE_ROOTOUTPUT_H_
const bf::path filename_
Filename of output.
Definition: rootoutput.h:144
A class to pre-calculate and store parameters relevant for density calculation.
Definition: density.h:103
int nout
Buffer for filling TTree. See class documentation for definitions.
Definition: rootoutput.h:190
int current_event_
Number of current event.
Definition: rootoutput.h:181
~RootOutput()
Destructor.
Definition: rootoutput.cc:149
bool write_particles_
Option to write particles tree.
Definition: rootoutput.h:198
std::array< double, max_buffer_size_ > py
Buffer for filling TTree. See class documentation for definitions.
Definition: rootoutput.h:188
std::unique_ptr< TFile > root_out_file_
Pointer to root output file.
Definition: rootoutput.h:148
void at_eventstart(const Particles &particles, const int event_number) override
update event number and writes intermediate particles to a tree.
Definition: rootoutput.cc:156
std::array< double, max_buffer_size_ > x
Buffer for filling TTree. See class documentation for definitions.
Definition: rootoutput.h:188
int npart
Buffer for filling TTree. See class documentation for definitions.
Definition: rootoutput.h:190
std::array< double, max_buffer_size_ > p0
Buffer for filling TTree. See class documentation for definitions.
Definition: rootoutput.h:188
TTree * particles_tree_
TTree for particles output.
Definition: rootoutput.h:155
SMASH output to ROOT file SMASH supports ROOT output as an option (see http://root.cern.ch).
Definition: rootoutput.h:94
void init_trees()
Basic initialization routine, creating the TTree objects for particles and collisions.
Definition: rootoutput.cc:99
int nin
Buffer for filling TTree. See class documentation for definitions.
Definition: rootoutput.h:190
void at_eventend(const Particles &particles, const int event_number, double impact_parameter) override
update event number and impact parameter, and writes intermediate particles to a tree.
Definition: rootoutput.cc:178
void at_intermediate_time(const Particles &particles, const Clock &clock, const DensityParameters &dens_param) override
Writes intermediate particles to a tree defined by treename, if it is allowed (i.e., particles_only_final_ is false).
Definition: rootoutput.cc:170
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.
Definition: rootoutput.cc:240
std::array< double, max_buffer_size_ > t
Buffer for filling TTree. See class documentation for definitions.
Definition: rootoutput.h:188
RootOutput(const bf::path &path, const std::string &name, const OutputParameters &out_par)
Construct ROOT output.
Definition: rootoutput.cc:79
int output_counter_
Number of output in a given event.
Definition: rootoutput.h:179
std::array< double, max_buffer_size_ > z
Buffer for filling TTree. See class documentation for definitions.
Definition: rootoutput.h:188
Helper structure for Experiment to hold output options and parameters.
Clock tracks the time in the simulation.
Definition: clock.h:75
Action is the base class for a generic process that takes a number of incoming particles and transfor...
Definition: action.h:34
std::array< double, max_buffer_size_ > y
Buffer for filling TTree. See class documentation for definitions.
Definition: rootoutput.h:188
bool write_collisions_
Option to write collisions tree.
Definition: rootoutput.h:195
std::array< double, max_buffer_size_ > px
Buffer for filling TTree. See class documentation for definitions.
Definition: rootoutput.h:188
double wgt
Buffer for filling TTree. See class documentation for definitions.
Definition: rootoutput.h:191
bf::path filename_unfinished_
Filename of output as long as simulation is still running.
Definition: rootoutput.h:146
void at_interaction(const Action &action, const double density) override
Writes collisions to a tree defined by treename.
Definition: rootoutput.cc:197
double impact_b
Buffer for filling TTree. See class documentation for definitions.
Definition: rootoutput.h:191
TTree * collisions_tree_
TTree for collision output.
Definition: rootoutput.h:162
void particles_to_tree(const Particles &particles)
Writes particles to a tree defined by treename.
Definition: rootoutput.cc:205
int tcounter
Buffer for filling TTree. See class documentation for definitions.
Definition: rootoutput.h:190
bool particles_only_final_
Print only final particles in the event, no intermediate output.
Definition: rootoutput.h:201
The Particles class abstracts the storage and manipulation of particles.
Definition: particles.h:33
int ev
Buffer for filling TTree. See class documentation for definitions.
Definition: rootoutput.h:190
std::array< double, max_buffer_size_ > pz
Buffer for filling TTree. See class documentation for definitions.
Definition: rootoutput.h:188
std::array< int, max_buffer_size_ > pdgcode
Buffer for filling TTree. See class documentation for definitions.
Definition: rootoutput.h:189
int autosave_frequency_
Root file cannot be read if it was not properly closed and finalized.
Definition: rootoutput.h:212
Abstraction of generic output.
static const int max_buffer_size_
Maximal buffer size.
Definition: rootoutput.h:184
Definition: action.h:24
double par_wgt
Buffer for filling TTree. See class documentation for definitions.
Definition: rootoutput.h:191