Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ActsEvaluator.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file ActsEvaluator.h
1 #ifndef ACTSEVALUATOR_H
2 #define ACTSEVALUATOR_H
3 
4 #include <fun4all/SubsysReco.h>
5 
9 #include <trackbase/TrkrDefs.h>
10 
12 
14 
15 class TTree;
16 class TFile;
17 class PHG4Particle;
18 class SvtxTrack;
19 class SvtxVertexMap;
20 class SvtxEvalStack;
21 class SvtxTrackMap;
24 class SvtxEvaluator;
25 class TrackSeed;
26 class TrackSeedContainer;
27 
28 #include <map>
29 #include <string>
30 #include <vector>
31 
39 
49 {
50  public:
51  ActsEvaluator(const std::string& name = "ActsEvaluator.root");
53 
54  void Init(PHCompositeNode* topNode);
56  std::vector<Acts::MultiTrajectoryTraits::IndexType>& trackTips,
58  SvtxTrack* track,
59  const TrackSeed* seed,
61  void End();
62  void setEvalCKF(bool evalCKF) { m_evalCKF = evalCKF; }
63  void verbosity(int verb) { m_verbosity = verb; }
64  void next_event(PHCompositeNode* topNode);
65 
68  std::vector<Acts::MultiTrajectoryTraits::IndexType>& trackTips,
70  SvtxTrack* track,
71  const TrackSeed* seed,
73 
74  private:
75  int getNodes(PHCompositeNode* topNode);
76 
77  void initializeTree();
78 
79  void fillG4Particle(PHG4Particle* part);
80 
81  void fillProtoTrack(const TrackSeed* seed);
82 
84  const size_t& trackTip);
85 
87  const size_t& trackTip,
89 
90  void clearTrackVariables();
91 
93 
95  float& _gt);
96 
101 
105 
109  bool m_evalCKF = false;
110  int m_verbosity = 0;
112  TFile* m_trackFile{nullptr};
113  TTree* m_trackTree{nullptr};
114 
116  int m_eventNr{0};
117  int m_trajNr{0};
118  int m_trackNr{0};
119 
120  unsigned long m_t_barcode{0};
121  int m_t_charge{0};
122  float m_t_time{0};
123  float m_t_vx{NAN};
124  float m_t_vy{NAN};
125  float m_t_vz{NAN};
126  float m_t_px{NAN};
127  float m_t_py{NAN};
128  float m_t_pz{NAN};
129  float m_t_theta{NAN};
130  float m_t_phi{NAN};
131  float m_t_pT{NAN};
132  float m_t_eta{NAN};
133 
134  std::vector<float> m_t_x;
135  std::vector<float> m_t_y;
136  std::vector<float> m_t_z;
137  std::vector<float> m_t_r;
138  std::vector<float>
140  std::vector<float>
142  std::vector<float>
144 
145  std::vector<float> m_t_eLOC0;
146  std::vector<float> m_t_eLOC1;
147  std::vector<float> m_t_ePHI;
148  std::vector<float> m_t_eTHETA;
149  std::vector<float> m_t_eQOP;
150  std::vector<float> m_t_eT;
151 
152  int m_nSharedHits{0};
153  int m_nHoles{0};
154  int m_nOutliers{0};
155  int m_nStates{0};
157  std::vector<int> m_volumeID;
158  std::vector<int> m_layerID;
159  std::vector<int> m_moduleID;
160  std::vector<float> m_lx_hit;
161  std::vector<float> m_ly_hit;
162  std::vector<float> m_x_hit;
163  std::vector<float> m_y_hit;
164  std::vector<float> m_z_hit;
165  std::vector<float> m_res_x_hit;
166  std::vector<float> m_res_y_hit;
167  std::vector<float> m_err_x_hit;
168  std::vector<float> m_err_y_hit;
169  std::vector<float> m_pull_x_hit;
170  std::vector<float> m_pull_y_hit;
171  std::vector<int> m_dim_hit;
172 
173  bool m_hasFittedParams{false};
174  float m_eLOC0_fit{NAN};
175  float m_eLOC1_fit{NAN};
176  float m_ePHI_fit{NAN};
177  float m_eTHETA_fit{NAN};
178  float m_eQOP_fit{NAN};
179  float m_eT_fit{NAN};
180  float m_err_eLOC0_fit{NAN};
181  float m_err_eLOC1_fit{NAN};
182  float m_err_ePHI_fit{NAN};
183  float m_err_eTHETA_fit{NAN};
184  float m_err_eQOP_fit{NAN};
185  float m_err_eT_fit{NAN};
186  float m_px_fit{NAN};
187  float m_py_fit{NAN};
188  float m_pz_fit{NAN};
189  float m_x_fit{NAN};
190  float m_y_fit{NAN};
191  float m_z_fit{NAN};
192  float m_chi2_fit{NAN};
193  float m_quality{NAN};
194  float m_ndf_fit{NAN};
195  float m_dca3Dxy{NAN};
196  float m_dca3Dz{NAN};
197  float m_dca3DxyCov{NAN};
198  float m_dca3DzCov{NAN};
199  int m_charge_fit{-9999999};
200 
201  int m_nPredicted{0};
202  std::vector<bool> m_prt;
203  std::vector<float> m_eLOC0_prt;
204  std::vector<float> m_eLOC1_prt;
205  std::vector<float> m_ePHI_prt;
206  std::vector<float> m_eTHETA_prt;
207  std::vector<float> m_eQOP_prt;
208  std::vector<float> m_eT_prt;
209  std::vector<float> m_res_eLOC0_prt;
210  std::vector<float> m_res_eLOC1_prt;
211  std::vector<float> m_res_ePHI_prt;
212  std::vector<float> m_res_eTHETA_prt;
213  std::vector<float> m_res_eQOP_prt;
214  std::vector<float> m_res_eT_prt;
215  std::vector<float> m_err_eLOC0_prt;
216  std::vector<float> m_err_eLOC1_prt;
217  std::vector<float> m_err_ePHI_prt;
218  std::vector<float> m_err_eTHETA_prt;
219  std::vector<float> m_err_eQOP_prt;
220  std::vector<float> m_err_eT_prt;
221  std::vector<float> m_pull_eLOC0_prt;
222  std::vector<float> m_pull_eLOC1_prt;
223  std::vector<float> m_pull_ePHI_prt;
224  std::vector<float> m_pull_eTHETA_prt;
225  std::vector<float> m_pull_eQOP_prt;
226  std::vector<float> m_pull_eT_prt;
227  std::vector<float> m_x_prt;
228  std::vector<float> m_y_prt;
229  std::vector<float> m_z_prt;
230  std::vector<float> m_px_prt;
231  std::vector<float> m_py_prt;
232  std::vector<float> m_pz_prt;
233  std::vector<float> m_eta_prt;
234  std::vector<float> m_pT_prt;
235 
236  int m_nFiltered{0};
237  std::vector<bool> m_flt;
238  std::vector<float> m_eLOC0_flt;
239  std::vector<float> m_eLOC1_flt;
240  std::vector<float> m_ePHI_flt;
241  std::vector<float> m_eTHETA_flt;
242  std::vector<float> m_eQOP_flt;
243  std::vector<float> m_eT_flt;
244  std::vector<float> m_res_eLOC0_flt;
245  std::vector<float> m_res_eLOC1_flt;
246  std::vector<float> m_res_ePHI_flt;
247  std::vector<float> m_res_eTHETA_flt;
248  std::vector<float> m_res_eQOP_flt;
249  std::vector<float> m_res_eT_flt;
250  std::vector<float> m_err_eLOC0_flt;
251  std::vector<float> m_err_eLOC1_flt;
252  std::vector<float> m_err_ePHI_flt;
253  std::vector<float> m_err_eTHETA_flt;
254  std::vector<float> m_err_eQOP_flt;
255  std::vector<float> m_err_eT_flt;
256  std::vector<float> m_pull_eLOC0_flt;
257  std::vector<float> m_pull_eLOC1_flt;
258  std::vector<float> m_pull_ePHI_flt;
259  std::vector<float> m_pull_eTHETA_flt;
260  std::vector<float> m_pull_eQOP_flt;
261  std::vector<float> m_pull_eT_flt;
262  std::vector<float> m_x_flt;
263  std::vector<float> m_y_flt;
264  std::vector<float> m_z_flt;
265  std::vector<float> m_px_flt;
266  std::vector<float> m_py_flt;
267  std::vector<float> m_pz_flt;
268  std::vector<float> m_eta_flt;
269  std::vector<float> m_pT_flt;
270  std::vector<float> m_chi2;
271 
272  int m_nSmoothed{0};
273  std::vector<bool> m_smt;
274  std::vector<float> m_eLOC0_smt;
275  std::vector<float> m_eLOC1_smt;
276  std::vector<float> m_ePHI_smt;
277  std::vector<float> m_eTHETA_smt;
278  std::vector<float> m_eQOP_smt;
279  std::vector<float> m_eT_smt;
280  std::vector<float> m_res_eLOC0_smt;
281  std::vector<float> m_res_eLOC1_smt;
282  std::vector<float> m_res_ePHI_smt;
283  std::vector<float> m_res_eTHETA_smt;
284  std::vector<float> m_res_eQOP_smt;
285  std::vector<float> m_res_eT_smt;
286  std::vector<float> m_err_eLOC0_smt;
287  std::vector<float> m_err_eLOC1_smt;
288  std::vector<float> m_err_ePHI_smt;
289  std::vector<float> m_err_eTHETA_smt;
290  std::vector<float> m_err_eQOP_smt;
291  std::vector<float> m_err_eT_smt;
292  std::vector<float> m_pull_eLOC0_smt;
293  std::vector<float> m_pull_eLOC1_smt;
294  std::vector<float> m_pull_ePHI_smt;
295  std::vector<float> m_pull_eTHETA_smt;
296  std::vector<float> m_pull_eQOP_smt;
297  std::vector<float> m_pull_eT_smt;
298  std::vector<float> m_x_smt;
299  std::vector<float> m_y_smt;
300  std::vector<float> m_z_smt;
301  std::vector<float> m_px_smt;
302  std::vector<float> m_py_smt;
303  std::vector<float> m_pz_smt;
304  std::vector<float> m_eta_smt;
305  std::vector<float> m_pT_smt;
306 
307  float m_protoTrackPx{NAN};
308  float m_protoTrackPy{NAN};
309  float m_protoTrackPz{NAN};
310  float m_protoTrackX{NAN};
311  float m_protoTrackY{NAN};
312  float m_protoTrackZ{NAN};
313  float m_protoD0Cov{NAN};
314  float m_protoZ0Cov{NAN};
315  float m_protoPhiCov{NAN};
316  float m_protoThetaCov{NAN};
317  float m_protoQopCov{NAN};
318 
319  std::vector<float> m_SL_lx;
320  std::vector<float> m_SL_ly;
321  std::vector<float> m_SLx;
322  std::vector<float> m_SLy;
323  std::vector<float> m_SLz;
324  std::vector<float> m_t_SL_lx;
325  std::vector<float> m_t_SL_ly;
326  std::vector<float> m_t_SL_gx;
327  std::vector<float> m_t_SL_gy;
328  std::vector<float> m_t_SL_gz;
329 };
330 
331 #endif