Class Reference for E1039 Core & Analysis Software
DimuAnaRUS.h
Go to the documentation of this file.
1 #ifndef _DIMU_ANA_RUS_H_
2 #define _DIMU_ANA_RUS_H_
3 #include <fun4all/SubsysReco.h>
4 #include <UtilAna/TrigRoadset.h>
5 #include <unordered_map>
6 
7 
8 class TFile;
9 class TTree;
10 class SQRun;
11 class SQSpillMap;
12 class SQEvent;
13 class SQHitVector;
14 class SQTrackVector;
15 class SQDimuonVector;
16 class SQMCEvent;
17 class TrackletVector;
18 class SQTruthTrackVector;
19 class SQHit;
20 
21 class DimuAnaRUS: public SubsysReco {
22  SQEvent* m_evt;
23  SQMCEvent* m_evt_true;
24  SQSpillMap* m_sp_map;
25  SQHitVector* m_hit_vec;
26  SQTrackVector * m_vec_trk;
27  SQTrackVector* m_sq_trk_vec;
28  //TrackletVector* trackletVec;
29  SQTruthTrackVector* trackletVec;
30  SQDimuonVector* m_sq_dim_vec;
31  SQDimuonVector* m_true_vec_dim;
32  SQRun* sq_run;
33 
34  std::string m_file_name;
35  std::string m_tree_name;
36  TFile* m_file;
37  TTree* m_tree;
38  public:
39 
41  bool true_mode;
42  bool reco_mode;
47  int proc_id;
50 
51  void SetMCTrueMode(bool enable) { true_mode = enable; }
52  void SetMCDimuonMode(bool enable) { true_dimu_mode = enable; }
53  void SetRecoMode(bool enable) { reco_mode = enable; }
54  void SetRecoDimuMode(bool enable) { reco_dimu_mode = enable; }
55  void SetDataTriggerEmu(bool enable) {
56  data_trig_mode = enable;
57  mc_trig_mode = !enable; // Automatically disable mc_trig_mode when data_trig_mode is enabled
58  }
59 
60  void SetMCTriggerEmu(bool enable) {
61  mc_trig_mode = enable;
62  data_trig_mode = !enable; // Automatically disable data_trig_mode when mc_trig_mode is enabled
63  }
64 
65  void SetSaveOnlyDimuon(bool enable) { saveDimuonOnly = enable; }
66  void SetSourceFlag(int flag) { SourceFlag = flag; }
67  void SetProcessId(int proc_id_) { proc_id = proc_id_; }
68 
69 
70  std::pair<int, int> GetDetElemIDFromHitID(int hit_id) const;
71  std::pair<int, int> GetDetElemIDFromHitID(int hit_id, const std::unordered_map<int, SQHit*>& hit_map) const;
72 
73 
74  unsigned int EncodeProcess(int processID, int sourceFlag);
75  static int DecodeSourceFlag(unsigned int encoded);
76  static int DecodeProcessID(unsigned int encoded);
77 
78  DimuAnaRUS(const std::string& name="DimuAnaRUS");
79  virtual ~DimuAnaRUS();
80  int Init(PHCompositeNode *startNode);
81  int InitRun(PHCompositeNode *startNode);
82  int process_event(PHCompositeNode *startNode);
83  int End(PHCompositeNode *startNode);
84  void SetOutputFileName(const std::string name) { m_file_name = name; }
85 
86  void SetTreeName(const std::string& name) { m_tree_name = name; }
87  void SetFileName(const std::string& name) { m_file_name = name; }
88  void ResetHitBranches();
89  void ResetTrueBranches();
90  void ResetRecoBranches();
91  void ResetRecoDimuBranches();
92 
93  private:
94 
95  // Scalar variables
96  int runID;
97  int spillID;
98  int eventID;
99  int rfID;
100  int turnID;
101  int rfIntensity[33];
102  int fpgaTrigger[5] = {0};
103  int nimTrigger[5] = {0};
104 
105  std::vector<int> hitID;
106  std::vector<int> processID;
107  std::vector<int> hitTrackID;
108  std::vector<int> detectorID;
109  std::vector<int> elementID;
110  std::vector<double> tdcTime;
111  std::vector<double> driftDistance;
112  //std::vector<bool> hitsInTime;
113  // True track data
114 
115  std::vector<int> gCharge, trackID;
116 
117  std::vector<double>
118  gvx, gvy, gvz,
119  gpx, gpy, gpz,
120  gx_st1, gy_st1, gz_st1,
121  gpx_st1, gpy_st1, gpz_st1,
122  gx_st3, gy_st3, gz_st3,
123  gpx_st3, gpy_st3, gpz_st3;
124 
125  std::vector<int>
126  rec_dimuon_id, rec_dimuon_true_id, rec_dimuon_track_id_pos, rec_dimuon_track_id_neg;
127 
128  std::vector<double>
129  rec_dimuon_x, rec_dimuon_y, rec_dimuon_z,
130  rec_dimuon_px_pos, rec_dimuon_py_pos, rec_dimuon_pz_pos,
131  rec_dimuon_px_neg, rec_dimuon_py_neg, rec_dimuon_pz_neg,
132  rec_dimuon_px_pos_tgt, rec_dimuon_py_pos_tgt, rec_dimuon_pz_pos_tgt,
133  rec_dimuon_px_neg_tgt, rec_dimuon_py_neg_tgt, rec_dimuon_pz_neg_tgt,
134  rec_dimuon_px_pos_dump, rec_dimuon_py_pos_dump, rec_dimuon_pz_pos_dump,
135  rec_dimuon_px_neg_dump, rec_dimuon_py_neg_dump, rec_dimuon_pz_neg_dump;
136 
137 
138  std::vector<int>
139  rec_track_id,
140  rec_track_charge,
141  rec_track_num_hits;
142  std::vector<std::vector<int>> rec_hit_ids;
143  std::vector<std::vector<double>> rec_track_hit_x;
144  std::vector<std::vector<double>> rec_track_hit_y;
145 
146  std::vector<double>
147  rec_track_vx, rec_track_vy, rec_track_vz,
148  rec_track_px, rec_track_py, rec_track_pz,
149  rec_track_x_st1, rec_track_y_st1, rec_track_z_st1,
150  rec_track_px_st1, rec_track_py_st1, rec_track_pz_st1,
151  rec_track_x_st3, rec_track_y_st3, rec_track_z_st3,
152  rec_track_px_st3, rec_track_py_st3, rec_track_pz_st3,
153  rec_track_chisq, rec_track_chisq_tgt, rec_track_chisq_dump, rec_track_chisq_upstream,
154  rec_track_x_tgt, rec_track_y_tgt, rec_track_z_tgt,
155  rec_track_px_tgt, rec_track_py_tgt, rec_track_pz_tgt,
156  rec_track_x_dump, rec_track_y_dump, rec_track_z_dump,
157  rec_track_px_dump, rec_track_py_dump, rec_track_pz_dump;
158 };
159 
160 #endif // _DimuAnaRUS.h_
static int DecodeProcessID(unsigned int encoded)
Definition: DimuAnaRUS.cc:565
void SetSaveOnlyDimuon(bool enable)
Definition: DimuAnaRUS.h:65
unsigned int EncodeProcess(int processID, int sourceFlag)
Definition: DimuAnaRUS.cc:558
void SetDataTriggerEmu(bool enable)
Definition: DimuAnaRUS.h:55
void SetTreeName(const std::string &name)
Definition: DimuAnaRUS.h:86
int process_event(PHCompositeNode *startNode)
Definition: DimuAnaRUS.cc:260
int InitRun(PHCompositeNode *startNode)
Definition: DimuAnaRUS.cc:58
bool reco_dimu_mode
Definition: DimuAnaRUS.h:49
int End(PHCompositeNode *startNode)
Called at the end of all processing.
Definition: DimuAnaRUS.cc:494
bool saveDimuonOnly
Definition: DimuAnaRUS.h:45
std::pair< int, int > GetDetElemIDFromHitID(int hit_id) const
Definition: DimuAnaRUS.cc:569
DimuAnaRUS(const std::string &name="DimuAnaRUS")
Definition: DimuAnaRUS.cc:27
void SetOutputFileName(const std::string name)
Definition: DimuAnaRUS.h:84
bool true_dimu_mode
Definition: DimuAnaRUS.h:46
int proc_id
Definition: DimuAnaRUS.h:47
void ResetTrueBranches()
Definition: DimuAnaRUS.cc:512
void SetRecoMode(bool enable)
Definition: DimuAnaRUS.h:53
void SetMCTriggerEmu(bool enable)
Definition: DimuAnaRUS.h:60
bool mc_trig_mode
Definition: DimuAnaRUS.h:44
void SetRecoDimuMode(bool enable)
Definition: DimuAnaRUS.h:54
virtual ~DimuAnaRUS()
Definition: DimuAnaRUS.cc:48
std::pair< int, int > GetDetElemIDFromHitID(int hit_id, const std::unordered_map< int, SQHit * > &hit_map) const
bool data_trig_mode
Definition: DimuAnaRUS.h:43
void SetFileName(const std::string &name)
Definition: DimuAnaRUS.h:87
UtilTrigger::TrigRoadset m_rs
Definition: DimuAnaRUS.h:40
void SetMCTrueMode(bool enable)
Definition: DimuAnaRUS.h:51
void ResetRecoBranches()
Definition: DimuAnaRUS.cc:522
void ResetHitBranches()
Definition: DimuAnaRUS.cc:503
void ResetRecoDimuBranches()
Definition: DimuAnaRUS.cc:545
bool true_mode
Definition: DimuAnaRUS.h:41
bool reco_mode
Definition: DimuAnaRUS.h:42
static int DecodeSourceFlag(unsigned int encoded)
Definition: DimuAnaRUS.cc:562
void SetProcessId(int proc_id_)
Definition: DimuAnaRUS.h:67
void SetMCDimuonMode(bool enable)
Definition: DimuAnaRUS.h:52
void SetSourceFlag(int flag)
Definition: DimuAnaRUS.h:66
int SourceFlag
Definition: DimuAnaRUS.h:48
int Init(PHCompositeNode *startNode)
Definition: DimuAnaRUS.cc:53
An SQ interface class to hold a list of SQDimuon objects.
An SQ interface class to hold one event header.
Definition: SQEvent.h:17
An SQ interface class to hold a list of SQHit objects.
Definition: SQHitVector.h:32
An SQ interface class to hold one detector hit.
Definition: SQHit.h:20
An SQ interface class to hold one simulated-event header.
Definition: SQMCEvent.h:12
An SQ interface class to hold the run-level info.
Definition: SQRun.h:18
An SQ interface class to hold a list of SQSpill objects.
Definition: SQSpillMap.h:19
An SQ interface class to hold a list of SQTrack objects.
Definition: SQTrackVector.h:19
Class to handle the trigger roadset.
Definition: TrigRoadset.h:34