Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
JetBkgdSub.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file JetBkgdSub.h
1 // Tell emacs that this is a C++ source
2 // -*- C++ -*-.
3 #ifndef JETBKGDSUB_H
4 #define JETBKGDSUB_H
5 
6 #include <fun4all/SubsysReco.h>
7 #include <jetbase/Jetv1.h>
8 
9 #include <memory>
10 #include <string>
11 #include <utility> // std::pair, std::make_pair
12 #include <vector>
13 
14 class PHCompositeNode;
15 class TTree;
16 class JetInput;
17 class JetAlgo;
18 class JetEvalStack;
19 
20 class JetBkgdSub : public SubsysReco
21 {
22 public:
23  // constructor
24  JetBkgdSub(const double jet_R = 0.4,
25  const std::string &outputfilename = "jettree.root");
26 
27  ~JetBkgdSub() override; // destructor
28 
29  // setters
30  void doIterative(bool b = true) { _doIterative = b; }
31  void doAreaSub(bool b = true) { _doAreaSub = b; }
32  void doMultSub(bool b = true) { _doMultSub = b; }
33  void doTruth(bool b = true) { _doTruth = b; }
34  void doData(bool b = true) { _doData = b; }
35  void doEmbed(bool b = true) { _doEmbed = b;}
36  void doTowerECut(bool b = true) { _doTowerECut = b;}
37 
38  void setEtaRange(double low, double high)
39  {
40  m_etaRange.first = low;
41  m_etaRange.second = high;
42  }
43 
44  void setPtRange(double low, double high)
45  {
46  m_ptRange.first = low;
47  m_ptRange.second = high;
48  }
49 
50  void setMinRecoPt(double pt) { _minrecopT = pt; }
51 
52  void setVzCut(double cut) { m_vtxZ_cut = cut; }
53 
54  void setTowerThreshold(double threshold) { m_towerThreshold = threshold;}
55 
56  void add_input(JetInput *input) { _inputs.push_back(input); }
57 
58  // event trigger (for simulation)
59  float LeadingR04TruthJet(PHCompositeNode *topNode);
60 
61  // Standard Fun4All functions
62  int Init(PHCompositeNode *topNode) override;
63  int process_event(PHCompositeNode *topNode) override;
64  int ResetEvent(PHCompositeNode *topNode) override;
65  int End(PHCompositeNode *topNode) override;
66 
67  void EstimateRhoMult(PHCompositeNode *topNode);
68  double GetMedian(std::vector<double> &v);
69  void GetCentInfo(PHCompositeNode *topNode);
70  float NSignalCorrection(float jet_pt, int cent);
71 
72 private:
73 
74  // private variables
75  double m_jet_R;
80  std::pair<double, double> m_etaRange;
81  std::pair<double, double> m_ptRange;
82  double _minrecopT;
83  double m_vtxZ_cut;
85  std::vector<JetInput *> _inputs;
87  bool _doAreaSub;
88  bool _doMultSub;
89  bool _doTruth;
90  bool _doData;
91  bool _doEmbed;
93 
94  //____________________________________________________________________________..
95  // output tree variables
96  int m_event;
102  double m_mbd_NS;
103  double m_rho_area;
111  double m_rho_mult;
112 
114 
115  // output trees
116  TTree *m_tree;
117  //sub1 jet variables
118  std::vector<float> m_iter_eta;
119  std::vector<float> m_iter_phi;
120  std::vector<float> m_iter_pt;
121  std::vector<float> m_iter_pt_unsub;
122 
123  // rhoA jet variables
124  std::vector<float> m_rhoA_eta;
125  std::vector<float> m_rhoA_phi;
126  std::vector<float> m_rhoA_pt;
127  std::vector<float> m_rhoA_area;
128  std::vector<float> m_rhoA_pt_unsub;
129 
130  // mult jet variables
131  std::vector<int> m_mult_ncomponent;
132  std::vector<float> m_mult_nsignal;
133  std::vector<float> m_mult_eta;
134  std::vector<float> m_mult_phi;
135  std::vector<float> m_mult_pt;
136  std::vector<float> m_mult_pt_unsub;
137 
138  // truth jet variables
139  std::vector<int> m_truth_ncomponent;
140  std::vector<float> m_truth_eta;
141  std::vector<float> m_truth_phi;
142  std::vector<float> m_truth_pt;
143 
144 };
145 
146 #endif // JETBKGDSUB_H