Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SvtxEvaluator.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file SvtxEvaluator.h
1 #ifndef G4EVAL_SVTXEVALUATOR_H
2 #define G4EVAL_SVTXEVALUATOR_H
3 
4 //===============================================
8 //===============================================
9 
10 #include <fun4all/SubsysReco.h>
11 
12 #include <TMatrixFfwd.h>
13 #include <TMatrixT.h>
14 #include <TMatrixTUtils.h>
15 
16 #include <string>
17 
18 class PHCompositeNode;
19 class PHTimer;
20 class TrkrCluster;
21 class SvtxEvalStack;
22 class TFile;
23 class TNtuple;
24 class SvtxTrack;
25 class SvtxVertexMap;
26 class GlobalVertexMap;
27 
28 // class TrkrClusterContainer;
29 
38 class SvtxEvaluator : public SubsysReco
39 {
40  public:
41  SvtxEvaluator(const std::string &name = "SVTXEVALUATOR",
42  const std::string &filename = "g4eval.root",
43  const std::string &trackmapname = "SvtxTrackMap",
44  unsigned int nlayers_maps = 3,
45  unsigned int nlayers_intt = 8,
46  unsigned int nlayers_tpc = 48,
47  unsigned int nlayers_mms = 2);
48  ~SvtxEvaluator() override;
49 
50  int Init(PHCompositeNode *topNode) override;
51  int InitRun(PHCompositeNode *topNode) override;
52  int process_event(PHCompositeNode *topNode) override;
53  int End(PHCompositeNode *topNode) override;
54  // void do_primaries(bool b);
55 
56  void set_strict(bool b) { _strict = b; }
57  void set_use_initial_vertex(bool use_init_vtx) { _use_initial_vertex = use_init_vtx; }
58  void set_use_genfit_vertex(bool use_genfit_vtx) { _use_genfit_vertex = use_genfit_vtx; }
59  void do_info_eval(bool b) { _do_info_eval = b; }
60  void do_vertex_eval(bool b) { _do_vertex_eval = b; }
61  void do_gpoint_eval(bool b) { _do_gpoint_eval = b; }
62  void do_g4hit_eval(bool b) { _do_g4hit_eval = b; }
63  void do_hit_eval(bool b) { _do_hit_eval = b; }
64  void do_cluster_eval(bool b) { _do_cluster_eval = b; }
66  void do_gtrack_eval(bool b) { _do_gtrack_eval = b; }
67  void do_track_eval(bool b) { _do_track_eval = b; }
68  void do_gseed_eval(bool b) { _do_gseed_eval = b; }
69 
70  void do_track_match(bool b) { _do_track_match = b; }
71  void do_eval_light(bool b) { _do_eval_light = b; }
75 
76  private:
77  unsigned int _ievent = 0;
78  unsigned int _iseed = 0;
79  float m_fSeed = NAN;
80  // eval stack
82 
83  TMatrixF calculateClusterError(TrkrCluster *c, float &clusphi);
84  void get_dca(SvtxTrack *track, GlobalVertexMap *vertexmap,
85  float &dca3dxy, float &dca3dz,
86  float &dca3dxysigma, float &dca3dzsigma);
87  // TrkrClusterContainer *cluster_map{nullptr};
88 
89  //----------------------------------
90  // evaluator output ntuples
91 
92  bool _strict = false;
93  bool _use_initial_vertex = true;
94  bool _use_genfit_vertex = false;
95  unsigned int _errors = 0;
96 
97  bool _do_info_eval = true;
98  bool _do_vertex_eval = true;
99  bool _do_gpoint_eval = true;
100  bool _do_g4hit_eval = true;
101  bool _do_hit_eval = true;
102  bool _do_cluster_eval = true;
103  bool _do_g4cluster_eval = true;
104  bool _do_gtrack_eval = true;
105  bool _do_track_eval = true;
106  bool _do_gseed_eval = false;
107 
108  bool _do_track_match = true;
109  bool _do_eval_light = true;
110  bool _do_vtx_eval_light = true;
111  bool _scan_for_embedded = false;
112  bool _scan_for_primaries = false;
113 
114  unsigned int _nlayers_maps = 3;
115  unsigned int _nlayers_intt = 4;
116  unsigned int _nlayers_tpc = 48;
117  unsigned int _nlayers_mms = 2;
118 
119  TNtuple *_ntp_info = nullptr;
120  TNtuple *_ntp_vertex = nullptr;
121  TNtuple *_ntp_gpoint = nullptr;
122  TNtuple *_ntp_g4hit = nullptr;
123  TNtuple *_ntp_hit = nullptr;
124  TNtuple *_ntp_cluster = nullptr;
125  TNtuple *_ntp_g4cluster = nullptr;
126  TNtuple *_ntp_gtrack = nullptr;
127  TNtuple *_ntp_track = nullptr;
128  TNtuple *_ntp_gseed = nullptr;
129 
130  // evaluator output file
132  // Track map name
134  TFile *_tfile = nullptr;
135 
136  PHTimer *_timer = nullptr;
137 
138  // output subroutines
139  void fillOutputNtuples(PHCompositeNode *topNode);
140  void printInputInfo(PHCompositeNode *topNode);
141  void printOutputInfo(PHCompositeNode *topNode);
142 
143 };
144 
145 #endif // G4EVAL_SVTXEVALUATOR_H