File indexing completed on 2025-08-05 08:13:09
0001
0002
0003 #ifndef JETVALIDATION_H
0004 #define JETVALIDATION_H
0005
0006 #include <fun4all/SubsysReco.h>
0007
0008 #include <string>
0009 #include <vector>
0010
0011 #include <TH2.h>
0012
0013 class PHCompositeNode;
0014 class TTree;
0015 class TFile;
0016
0017 class JetValidation : public SubsysReco
0018 {
0019 public:
0020 JetValidation();
0021
0022 ~JetValidation() override;
0023
0024
0025
0026
0027
0028
0029 Int_t Init(PHCompositeNode *topNode) override;
0030
0031
0032
0033
0034 Int_t process_event(PHCompositeNode *topNode) override;
0035
0036
0037 Int_t ResetEvent(PHCompositeNode *topNode) override;
0038
0039
0040 Int_t End(PHCompositeNode *topNode) override;
0041
0042 void set_outputTreeFileName(const std::string &m_outputTreeFileName) {
0043 this->m_outputTreeFileName = m_outputTreeFileName;
0044 }
0045
0046 void set_outputQAFileName(const std::string &m_outputQAFileName) {
0047 this->m_outputQAFileName = m_outputQAFileName;
0048 }
0049
0050 void set_saveTree(Bool_t m_saveTree) {
0051 this->m_saveTree = m_saveTree;
0052 }
0053
0054 void set_bkg_tower_energy(Float_t m_bkg_tower_energy) {
0055 this->m_bkg_tower_energy = m_bkg_tower_energy;
0056 }
0057
0058 void set_bkg_tower_neighbor_energy(Float_t m_bkg_tower_neighbor_energy) {
0059 this->m_bkg_tower_neighbor_energy = m_bkg_tower_neighbor_energy;
0060 }
0061
0062 void set_bkg_towers(UInt_t m_bkg_towers) {
0063 this->m_bkg_towers = m_bkg_towers;
0064 }
0065
0066 Bool_t isBackgroundEvent(std::vector<Float_t> &towerEnergy);
0067
0068 private:
0069 std::string m_recoJetName_r02;
0070 std::string m_recoJetName_r04;
0071 std::string m_recoJetName_r06;
0072 TFile* m_outputTreeFile;
0073 TFile* m_outputQAFile;
0074 std::string m_outputTreeFileName;
0075 std::string m_outputQAFileName;
0076 std::string m_emcTowerNodeBase;
0077 std::string m_emcTowerNode;
0078 std::string m_ihcalTowerNode;
0079 std::string m_ohcalTowerNode;
0080 std::string m_emcTowerNodeSub;
0081 std::string m_ihcalTowerNodeSub;
0082 std::string m_ohcalTowerNodeSub;
0083
0084 enum class Trigger {
0085 MBD_NS_1 = 10,
0086 JET_6 = 20,
0087 JET_8 = 21,
0088 JET_10 = 22,
0089 JET_12 = 23
0090 };
0091
0092 enum class EventStatus {
0093 ALL = 0,
0094 ZVTX = 1,
0095 ZVTX60 = 2,
0096 ZVTX50 = 3,
0097 ZVTX30 = 4,
0098 ZVTX20 = 5,
0099 ZVTX10 = 6,
0100 ALL_MBDNS1 = 7,
0101 ALL_MBDNS1_JET8 = 8,
0102 ALL_MBDNS1_JET10 = 9,
0103 ALL_MBDNS1_JET12 = 10,
0104 ZVTX60_MBDNS1 = 11,
0105 ZVTX60_MBDNS1_JET8 = 12,
0106 ZVTX60_MBDNS1_JET10 = 13,
0107 ZVTX60_MBDNS1_JET12 = 14,
0108 ZVTX60_JET8 = 15,
0109 ZVTX60_JET10 = 16,
0110 ZVTX60_JET12 = 17
0111 };
0112
0113 enum class JetEvent_Status {
0114 ALL_MBDNS1 = 0,
0115 ALL_MBDNS1_JET8 = 1,
0116 ALL_MBDNS1_JET10 = 2,
0117 ALL_MBDNS1_JET12 = 3,
0118 ZVTX60_MBDNS1 = 4,
0119 ZVTX60_MBDNS1_JET8 = 5,
0120 ZVTX60_MBDNS1_JET10 = 6,
0121 ZVTX60_MBDNS1_JET12 = 7,
0122 ZVTX60 = 8,
0123 ZVTX60_JET8 = 9,
0124 ZVTX60_JET10 = 10,
0125 ZVTX60_JET12 = 11
0126 };
0127
0128 std::vector<std::string> JetEvent_Status_vec = {
0129 "ALL_MBDNS1",
0130 "ALL_MBDNS1_JET8",
0131 "ALL_MBDNS1_JET10",
0132 "ALL_MBDNS1_JET12",
0133 "ZVTX60_MBDNS1",
0134 "ZVTX60_MBDNS1_JET8",
0135 "ZVTX60_MBDNS1_JET10",
0136 "ZVTX60_MBDNS1_JET12",
0137 "ZVTX60",
0138 "ZVTX60_JET8",
0139 "ZVTX60_JET10",
0140 "ZVTX60_JET12"
0141 };
0142
0143 Bool_t m_saveTree;
0144 Float_t m_zvtx_max[5] = {60,50,30,20,10};
0145 Float_t m_lowPtThreshold;
0146 Float_t m_highPtThreshold;
0147 Float_t m_subLeadPtThreshold;
0148 UInt_t m_highPtJetCtr;
0149 UInt_t m_bins_phi;
0150 UInt_t m_bins_eta;
0151 Float_t m_eta_low;
0152 Float_t m_eta_high;
0153
0154 TH1F* hEvents;
0155 TH1F* hEventsBkg;
0156 TH1F* hZVtx;
0157
0158
0159
0160 std::vector<TH1F*> hJetPt_r02;
0161 std::vector<TH1F*> hJetPt_r04;
0162 std::vector<TH1F*> hJetPt_r06;
0163
0164 std::vector<TH1F*> hJetPt_r02_bkg;
0165 std::vector<TH1F*> hJetPt_r04_bkg;
0166 std::vector<TH1F*> hJetPt_r06_bkg;
0167
0168 std::vector<TH1F*> hJetPt_r02_nobkg;
0169 std::vector<TH1F*> hJetPt_r04_nobkg;
0170 std::vector<TH1F*> hJetPt_r06_nobkg;
0171
0172
0173 std::vector<TH1F*> hJetDeltaPhi_r02;
0174 std::vector<TH1F*> hJetDeltaPhi_r04;
0175 std::vector<TH1F*> hJetDeltaPhi_r06;
0176
0177 std::vector<TH1F*> hJetDeltaPhi_r02_bkg;
0178 std::vector<TH1F*> hJetDeltaPhi_r04_bkg;
0179 std::vector<TH1F*> hJetDeltaPhi_r06_bkg;
0180
0181 std::vector<TH1F*> hJetDeltaPhi_r02_nobkg;
0182 std::vector<TH1F*> hJetDeltaPhi_r04_nobkg;
0183 std::vector<TH1F*> hJetDeltaPhi_r06_nobkg;
0184
0185
0186 std::vector<TH2F*> h2JetEtaPhi_r02;
0187 std::vector<TH2F*> h2JetEtaPhi_r04;
0188 std::vector<TH2F*> h2JetEtaPhi_r06;
0189
0190 std::vector<TH2F*> h2JetEtaPhi_r02_bkg;
0191 std::vector<TH2F*> h2JetEtaPhi_r04_bkg;
0192 std::vector<TH2F*> h2JetEtaPhi_r06_bkg;
0193
0194 std::vector<TH2F*> h2JetEtaPhi_r02_nobkg;
0195 std::vector<TH2F*> h2JetEtaPhi_r04_nobkg;
0196 std::vector<TH2F*> h2JetEtaPhi_r06_nobkg;
0197
0198 std::vector<TH2F*> h2TowerEnergy;
0199 std::vector<TH2F*> h2TowerEnergySub;
0200
0201 UInt_t m_bins_pt;
0202 Float_t m_pt_low;
0203 Float_t m_pt_high;
0204
0205 UInt_t m_bins_events;
0206
0207 UInt_t m_bins_zvtx;
0208 Float_t m_zvtx_low;
0209 Float_t m_zvtx_high;
0210
0211 Float_t m_bkg_tower_energy;
0212 Float_t m_bkg_tower_neighbor_energy;
0213 UInt_t m_bkg_towers;
0214
0215
0216 TTree* m_T;
0217
0218
0219 Int_t m_run;
0220 Int_t m_globalEvent;
0221 Int_t m_event;
0222 Int_t m_nJets_r02;
0223 Int_t m_nJets_r04;
0224 Int_t m_nJets_r06;
0225 Float_t m_zvtx;
0226
0227
0228 std::vector<Bool_t> m_towersCEMCBase_isGood;
0229 std::vector<Float_t> m_towersCEMCBase_energy;
0230 std::vector<Float_t> m_towersCEMCBase_time;
0231 std::vector<Bool_t> m_towersCEMC_isGood;
0232 std::vector<Bool_t> m_towersIHCal_isGood;
0233 std::vector<Bool_t> m_towersOHCal_isGood;
0234 std::vector<Float_t> m_towersCEMC_energy;
0235 std::vector<Float_t> m_towersIHCal_energy;
0236 std::vector<Float_t> m_towersOHCal_energy;
0237 std::vector<Float_t> m_towersCEMCSub_energy;
0238 std::vector<Float_t> m_towersIHCalSub_energy;
0239 std::vector<Float_t> m_towersOHCalSub_energy;
0240
0241
0242 std::vector<bool> m_scaledVector;
0243
0244
0245 Int_t m_nJet_r02;
0246 std::vector<Int_t> m_id_r02;
0247 std::vector<Int_t> m_nComponent_r02;
0248 std::vector<Float_t> m_eta_r02;
0249 std::vector<Float_t> m_phi_r02;
0250 std::vector<Float_t> m_e_r02;
0251 std::vector<Float_t> m_pt_r02;
0252
0253
0254 Int_t m_nJet_r04;
0255 std::vector<Int_t> m_id_r04;
0256 std::vector<Int_t> m_nComponent_r04;
0257 std::vector<Float_t> m_eta_r04;
0258 std::vector<Float_t> m_phi_r04;
0259 std::vector<Float_t> m_e_r04;
0260 std::vector<Float_t> m_pt_r04;
0261
0262
0263 Int_t m_nJet_r06;
0264 std::vector<Int_t> m_id_r06;
0265 std::vector<Int_t> m_nComponent_r06;
0266 std::vector<Float_t> m_eta_r06;
0267 std::vector<Float_t> m_phi_r06;
0268 std::vector<Float_t> m_e_r06;
0269 std::vector<Float_t> m_pt_r06;
0270 };
0271
0272 #endif