ECCE @ EIC 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 <string>
13 #include <TMatrixFfwd.h>
14 #include <TMatrixT.h>
15 #include <TMatrixTUtils.h>
16 
17 class PHCompositeNode;
18 class PHTimer;
19 class TrkrCluster;
20 class SvtxEvalStack;
21 class TFile;
22 class TNtuple;
23 //class TrkrClusterContainer;
24 
33 class SvtxEvaluator : public SubsysReco
34 {
35  public:
36  SvtxEvaluator(const std::string &name = "SVTXEVALUATOR",
37  const std::string &filename = "g4eval.root",
38  const std::string &trackmapname = "SvtxTrackMap",
39  unsigned int nlayers_maps = 3,
40  unsigned int nlayers_intt = 8,
41  unsigned int nlayers_tpc = 48,
42  unsigned int nlayers_mms = 2);
43  ~SvtxEvaluator() override;
44 
45  int Init(PHCompositeNode *topNode) override;
46  int InitRun(PHCompositeNode *topNode) override;
47  int process_event(PHCompositeNode *topNode) override;
48  int End(PHCompositeNode *topNode) override;
49  // void do_primaries(bool b);
50 
51  void set_strict(bool b) { _strict = b; }
52  void set_use_initial_vertex(bool use_init_vtx) {_use_initial_vertex = use_init_vtx;}
53  void set_use_genfit_vertex(bool use_genfit_vtx) {_use_genfit_vertex = use_genfit_vtx;}
54  void do_info_eval(bool b) { _do_info_eval = b; }
55  void do_vertex_eval(bool b) { _do_vertex_eval = b; }
56  void do_gpoint_eval(bool b) { _do_gpoint_eval = b; }
57  void do_g4hit_eval(bool b) { _do_g4hit_eval = b; }
58  void do_hit_eval(bool b) { _do_hit_eval = b; }
59  void do_cluster_eval(bool b) { _do_cluster_eval = b; }
61  void do_gtrack_eval(bool b) { _do_gtrack_eval = b; }
62  void do_track_eval(bool b) { _do_track_eval = b; }
63  void do_gseed_eval(bool b) { _do_gseed_eval = b; }
64 
65  void do_track_match(bool b) { _do_track_match = b; }
66  void do_eval_light(bool b) { _do_eval_light = b; }
70 
71 
72  private:
73  unsigned int _ievent;
74  unsigned int _iseed;
75  float m_fSeed;
76  // eval stack
78 
79  TMatrixF calculateClusterError(TrkrCluster* c, float& clusphi);
80 
81  //TrkrClusterContainer *cluster_map{nullptr};
82 
83  //----------------------------------
84  // evaluator output ntuples
85 
86  bool _strict;
87  bool _use_initial_vertex = true;
88  bool _use_genfit_vertex = false;
89  unsigned int _errors;
90 
101 
107 
108  unsigned int _nlayers_maps = 3;
109  unsigned int _nlayers_intt = 4;
110  unsigned int _nlayers_tpc = 48;
111  unsigned int _nlayers_mms = 2;
112 
113  TNtuple *_ntp_info;
114  TNtuple *_ntp_vertex;
115  TNtuple *_ntp_gpoint;
116  TNtuple *_ntp_g4hit;
117  TNtuple *_ntp_hit;
118  TNtuple *_ntp_cluster;
119  TNtuple *_ntp_g4cluster;
120  TNtuple *_ntp_gtrack;
121  TNtuple *_ntp_track;
122  TNtuple *_ntp_gseed;
123 
124  // evaluator output file
125  std::string _filename;
126  //Track map name
127  std::string _trackmapname;
128  TFile *_tfile;
129 
131 
132  // output subroutines
133  void fillOutputNtuples(PHCompositeNode *topNode);
134  void printInputInfo(PHCompositeNode *topNode);
135  void printOutputInfo(PHCompositeNode *topNode);
136 };
137 
138 #endif // G4EVAL_SVTXEVALUATOR_H