Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
collider.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file collider.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 COLLIDER_H
7 #define COLLIDER_H
8 
9 #include <memory>
10 
11 #include "fwd_decl.h"
12 #include "event.h"
13 #include "nucleon.h"
14 #include "output.h"
15 
16 namespace trento {
17 
30 
31 struct records {
32  int i;
33  double b;
34  double npart;
35  double mult;
36 };
37 
38 class Collider {
39  public:
41  explicit Collider(const VarMap& var_map);
42 
49  ~Collider();
50 
52  void run_events();
53  const std::vector<records> & all_records() const{
54  return all_records_;
55  }
56  const Event & expose_event() const{
57  return event_;
58  }
59 
60  private:
61  // Most of these are pretty self-explanatory...
62 
64  double sample_impact_param();
66  std::unique_ptr<Nucleus> nucleusA_, nucleusB_;
67 
70 
72  const int nevents_;
73 
75  int ntrys_;
76 
78  const double bmin_, bmax_;
79 
81  const int npartmin_, npartmax_;
82 
84  const double stotmin_, stotmax_;
85 
102  const double asymmetry_;
103 
106 
109 
112 
113  // take down id, b, npart, ncoll, mult for each event.
114  std::vector<records> all_records_;
115 };
116 
117 } // namespace trento
118 
119 #endif // COLLIDER_H