Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
EventPlaneReco.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file EventPlaneReco.h
1 // Tell emacs that this is a C++ source
2 // -*- C++ -*-.
3 #ifndef EVENTPLANERECO_H
4 #define EVENTPLANERECO_H
5 
6 //===========================================================
8 //===========================================================
9 
10 #include <fun4all/SubsysReco.h>
11 
12 #include <string> // for string
13 #include <vector> // for vector
14 
15 class PHCompositeNode;
16 class CDBHistos;
17 class TProfile;
18 
19 class EventPlaneReco : public SubsysReco
20 {
21  public:
22  EventPlaneReco(const std::string &name = "EventPlaneReco");
23  ~EventPlaneReco() override = default;
24  int Init(PHCompositeNode *topNode) override;
25  int InitRun(PHCompositeNode *topNode) override;
26  int process_event(PHCompositeNode *topNode) override;
27  int End (PHCompositeNode * /*topNode*/) override;
28 
29  void ResetMe();
30  void set_sepd_epreco(bool sepdEpReco)
31  {
32  _sepdEpReco = sepdEpReco;
33  }
34  void set_mbd_epreco(bool mbdEpReco)
35  {
36  _mbdEpReco = mbdEpReco;
37  }
38  void set_sEPD_Mip_cut(const float &e)
39  {
40  _epd_e = e;
41  }
42  void set_MBD_Min_Qcut(const float &f)
43  {
44  _mbd_e = f;
45  }
46  void set_Ep_orders(const unsigned int &n)
47  {
48  m_MaxOrder = n;
49  }
50  void set_run_number(const unsigned int &r)
51  {
52  m_runNo = r;
53  }
54 
55  private:
56 
57  int CreateNodes(PHCompositeNode *topNode);
58 
59  unsigned int m_MaxOrder = 3;
60 
61  unsigned int m_runNo = 21813;
62 
63  const char *OutFileName;
64 
65  CDBHistos *cdbhistosOut = nullptr;
66 
67  std::vector<std::vector<double>> south_q;
68  std::vector<std::vector<double>> north_q;
69  std::vector<std::pair<double, double>> south_Qvec;
70  std::vector<std::pair<double, double>> north_Qvec;
71 
72  //recentering utility
73  std::vector<std::vector<double>> south_q_subtract;
74  std::vector<std::vector<double>> north_q_subtract;
75 
76  //shifting utility
77  std::vector<double> tmp_south_psi;
78  std::vector<double> tmp_north_psi;
79  std::vector<double> shift_north;
80  std::vector<double> shift_south;
81 
82 
83  bool _mbdEpReco = false;
84  bool _sepdEpReco = false;
85 
86  float _epd_e = 6.0;
87  float _mbd_e = 10.0;
88 
89  float mbd_e_south;
90  float mbd_e_north;
91  float mbdQ;
92 
93  //recentering histograms
94  TProfile * tprof_mean_cos_north_mbd[6] = {};
95  TProfile * tprof_mean_sin_north_mbd[6] = {};
96  TProfile * tprof_mean_cos_south_mbd[6] = {};
97  TProfile * tprof_mean_sin_south_mbd[6] = {};
98 
99  TProfile * tprof_mean_cos_north_mbd_input[6] = {};
100  TProfile * tprof_mean_sin_north_mbd_input[6] = {};
101  TProfile * tprof_mean_cos_south_mbd_input[6] = {};
102  TProfile * tprof_mean_sin_south_mbd_input[6] = {};
103 
104  //shifting histograms
105  const int _imax = 6;
106  TProfile * tprof_cos_north_mbd_shift[6][6] = {};
107  TProfile * tprof_sin_north_mbd_shift[6][6] = {};
108  TProfile * tprof_cos_south_mbd_shift[6][6] = {};
109  TProfile * tprof_sin_south_mbd_shift[6][6] = {};
110 
111  TProfile * tprof_cos_north_mbd_shift_input[6][6] = {};
112  TProfile * tprof_sin_north_mbd_shift_input[6][6] = {};
113  TProfile * tprof_cos_south_mbd_shift_input[6][6] = {};
114  TProfile * tprof_sin_south_mbd_shift_input[6][6] = {};
115 
116 
117 };
118 
119 #endif // EVENTPLANERECO_H