Version: SMASH-1.6
outputparameters.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2017-
3  * SMASH Team
4  *
5  * GNU General Public License (GPLv3 or later)
6  */
7 #ifndef SRC_INCLUDE_OUTPUTPARAMETERS_H_
8 #define SRC_INCLUDE_OUTPUTPARAMETERS_H_
9 
10 #include <set>
11 #include <string>
12 
13 #include "configuration.h"
14 #include "density.h"
15 #include "forwarddeclarations.h"
16 #include "logging.h"
17 
18 namespace smash {
19 
29  td_rho_eckart(false),
30  td_tmn(false),
31  td_tmn_landau(false),
32  td_v_landau(false),
33  td_jQBS(false),
34  td_smearing(true),
35  part_extended(false),
36  part_only_final(true),
37  coll_extended(false),
38  coll_printstartend(false),
39  dil_extended(false),
40  photons_extended(false) {}
41 
44  const auto& log = logger<LogArea::Experiment>();
45  log.trace(source_location);
46 
47  if (conf.has_value({"Thermodynamics"})) {
48  auto subcon = conf["Thermodynamics"];
49  if (subcon.has_value({"Position"})) {
50  const std::array<double, 3> a = subcon.take({"Position"});
51  td_position = ThreeVector(a[0], a[1], a[2]);
52  }
53  std::set<ThermodynamicQuantity> quan = subcon.take({"Quantities"});
55  td_tmn = (quan.count(ThermodynamicQuantity::Tmn) > 0);
58  td_jQBS = (quan.count(ThermodynamicQuantity::j_QBS) > 0);
59  td_dens_type = subcon.take({"Type"}, DensityType::Baryon);
62  log.warn("Requested Thermodynamics output with Density type None. ",
63  "Change the density type to avoid output being dropped.");
64  }
65  td_smearing = subcon.take({"Smearing"}, true);
66  }
67 
68  if (conf.has_value({"Particles"})) {
69  part_extended = conf.take({"Particles", "Extended"}, false);
70  part_only_final = conf.take({"Particles", "Only_Final"}, true);
71  }
72 
73  if (conf.has_value({"Collisions"})) {
74  coll_extended = conf.take({"Collisions", "Extended"}, false);
75  coll_printstartend = conf.take({"Collisions", "Print_Start_End"}, false);
76  }
77 
78  if (conf.has_value({"Dileptons"})) {
79  dil_extended = conf.take({"Dileptons", "Extended"}, false);
80  }
81 
82  if (conf.has_value({"Photons"})) {
83  photons_extended = conf.take({"Photons", "Extended"}, false);
84  }
85  }
86 
92  bool get_coll_extended(std::string name) const {
93  if (name == "Collisions") {
94  return coll_extended;
95  } else if (name == "Dileptons") {
96  return dil_extended;
97  } else if (name == "Photons") {
98  return photons_extended;
99  } else {
100  return false; // error
101  }
102  }
103 
106 
109 
112 
114  bool td_tmn;
115 
121 
124 
126  bool td_jQBS;
127 
133 
136 
139 
142 
145 
148 
151 };
152 
153 } // namespace smash
154 
155 #endif // SRC_INCLUDE_OUTPUTPARAMETERS_H_
The ThreeVector class represents a physical three-vector with the components .
Definition: threevector.h:30
DensityType td_dens_type
Type (e.g., baryon/pion/hadron) of thermodynamic quantity.
ThreeVector td_position
Point, where thermodynamic quantities are calculated.
bool part_extended
Extended format for particles output.
bool td_jQBS
Print out QBS 4-currents or not?
OutputParameters()
Default constructor, useful for tests.
Interface to the SMASH configuration files.
bool td_tmn_landau
Print out energy-momentum tensor in Landau rest frame (of type td_dens_type) or not?
OutputParameters(Configuration &&conf)
Constructor from configuration.
bool td_smearing
Whether smearing is on or off; WARNING : if smearing is off, then final result is in GeV instead of G...
bool coll_printstartend
Print initial and final particles in event into collision output.
#define source_location
Hackery that is required to output the location in the source code where the log statement occurs...
Definition: logging.h:246
bool photons_extended
Extended format for photon output.
bool part_only_final
Print only final particles in event.
bool coll_extended
Extended format for collisions output.
bool td_rho_eckart
Print out Eckart rest frame density of type td_dens_type or not?
Helper structure for Experiment to hold output options and parameters.
bool dil_extended
Extended format for dilepton output.
bool get_coll_extended(std::string name) const
Pass correct extended flag to binary collision output constructor.
bool td_tmn
Print out energy-momentum tensor of type td_dens_type or not?
bool td_v_landau
Print out Landau velocity of type td_dens_type or not?
DensityType
Allows to choose which kind of density to calculate.
Definition: density.h:34
Definition: action.h:24