Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
event.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file event.h
1 // TRENTO: Reduced Thickness Event-by-event Nuclear Topology
2 // Copyright 2015 Jonah E. Bernhard, J. Scott Moreland
3 // TRENTO3D: Three-dimensional extension of TRENTO by Weiyao Ke
4 // MIT License
5 
6 #ifndef EVENT_H
7 #define EVENT_H
8 
9 #include <functional>
10 #include <map>
11 
12 #ifdef NDEBUG
13 #define BOOST_DISABLE_ASSERTS
14 #endif
15 #include <boost/multi_array.hpp>
16 
17 #include "fwd_decl.h"
18 #include "rapidity_profile.h"
19 #include "nucleon.h"
20 
21 namespace trento {
22 
23 class NucleonProfile;
24 
45 
46 class Event {
47  public:
49  explicit Event(const VarMap& var_map);
50 
57  void compute(const Nucleus& nucleusA, const Nucleus& nucleusB,
59 
61  using Grid = boost::multi_array<double, 2>;
62 
64  using Grid3D = boost::multi_array<double, 3>;
65 
67  const int& npart() const
68  { return npart_; }
69 
71  const int& ncoll() const
72  { return ncoll_; }
73 
78  const double& multiplicity() const
79  { return multiplicity_; }
80 
88  const std::map<int, double>& eccentricity() const
89  { return eccentricity_; }
90 
92  const Grid3D& density_grid() const {
93  if (is3D())
94  return density_;
95  else
96  return TR_;
97  }
98 
100  const double& dxy() const
101  { return dxy_; }
102 
103  const double& deta() const
104  { return deta_; }
105 
106  const std::map<int, double>& participant_plane() const
107  { return psi_; }
108 
109 
111  const Grid& TAB_grid() const
112  { return TAB_; }
113 
115  void clear_TAB(void);
116  void accumulate_TAB(Nucleon& A, Nucleon& B, NucleonProfile& profile);
117 
119  const bool& with_ncoll() const
120  { return with_ncoll_; }
121 
122  const std::pair<double, double> mass_center_index() const
123 { return std::make_pair(ixcm_, iycm_); }
124 
125  private:
130  const Nucleus& nucleus, NucleonProfile& profile, Grid& TX);
131 
135  template <typename GenMean>
136  void compute_reduced_thickness(GenMean gen_mean);
137 
142  std::function<void()> compute_reduced_thickness_;
143 
145  void compute_observables();
146 
147  // Returns true if running in 3D mode, false otherwise.
148  bool is3D() const;
149 
151  const double norm_;
152 
154  const double beam_energy_, exp_ybeam_;
155 
158  const int skew_type_;
159 
161  const double dxy_, deta_;
162 
164  const int nsteps_, neta_;
165 
167  const double xymax_, etamax_;
168 
171 
174 
177 
180 
182  double ixcm_, iycm_;
183 
185  int npart_;
186 
188  int ncoll_;
189 
192 
194  std::map<int, double> eccentricity_;
195 
197  std::map<int, double> psi_;
198 
201 };
202 
203 } // namespace trento
204 
205 #endif // EVENT_H