ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
CaloEvaluator.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file CaloEvaluator.h
1 #ifndef G4EVAL_CALOEVALUATOR_H
2 #define G4EVAL_CALOEVALUATOR_H
3 
4 //===============================================
8 //===============================================
9 
10 #include <fun4all/SubsysReco.h>
11 
12 #include <set>
13 #include <string>
14 
15 class CaloEvalStack;
16 class PHCompositeNode;
17 class TFile;
18 class TNtuple;
19 class TTree; //Added by Barak
20 
29 class CaloEvaluator : public SubsysReco
30 {
31  public:
32  CaloEvaluator(const std::string &name = "CALOEVALUATOR",
33  const std::string &caloname = "CEMC",
34  const std::string &filename = "g4eval_cemc.root");
35  ~CaloEvaluator() override{};
36 
37  int Init(PHCompositeNode *topNode) override;
38  int process_event(PHCompositeNode *topNode) override;
39  int End(PHCompositeNode *topNode) override;
40 
41  void set_strict(bool b) { _strict = b; }
42  // funtions to limit the tracing to only part of the event ---------
43  // and speed up the evaluation
44 
45  // when tracing truth showers limit the trace to showers
46  // that result from truth particles with a particular embed flag set
47  // useful if you only want to know about that electron you
48  // embedded into a central hijing event
49  // (evaluation for truth objects with matching embed flag set unaffected)
51  {
52  _truth_trace_embed_flags.insert(flag);
53  }
54 
55  // limit the tracing of truth particles to those above some
56  // theshold energy. useful for tracing only high energy particles
57  // and ignoring low energy truth particles from a hijing event
58  // (evaluation for objects above threshold unaffected)
60  {
61  _truth_e_threshold = thresh;
62  }
63 
64  // limit the tracing of towers and clusters back to the truth particles
65  // to only those reconstructed objects above a particular energy
66  // threshold (evaluation for objects above threshold unaffected)
68  {
69  _reco_e_threshold = thresh;
70  }
71 
72  // functions to limit the output size ------------------
73  // will no evaluate or write out these particular ntuples
74  // mostly intended for size savings, but some time savings will result
77  void set_do_tower_eval(bool b) { _do_tower_eval = b; }
79 
80  private:
81  std::string _caloname;
82 
83  unsigned int _ievent;
84 
85  //Added by Barak
86  unsigned int _towerID_debug;
89  float _eta_debug;
90  float _phi_debug;
91  float _e_debug;
92  float _x_debug;
93  float _y_debug;
94  float _z_debug;
95 
96  std::set<int> _truth_trace_embed_flags;
99 
101 
102  //----------------------------------
103  // evaluator output ntuples
104 
105  bool _strict;
106 
111 
112  TNtuple *_ntp_gpoint;
113  TNtuple *_ntp_gshower;
114  TNtuple *_ntp_tower;
115  TTree *_tower_debug; //Added by Barak
116  TNtuple *_ntp_cluster;
117 
118  // evaluator output file
119  std::string _filename;
120  TFile *_tfile;
121 
122  // subroutines
123  void printInputInfo(PHCompositeNode *topNode);
124  void fillOutputNtuples(PHCompositeNode *topNode);
125  void printOutputInfo(PHCompositeNode *topNode);
126 };
127 
128 #endif // G4EVAL_CALOEVALUATOR_H