75 ATH_MSG_DEBUG(
"JetEfficiencyMonitorAlgorithm::fillHistograms");
76 std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>> variables;
91 std::map<std::string, SG::ReadHandle<xAOD::gFexJetRoIContainer>> gFEX_Container;
96 if (!gFexSRJetContainer.
isValid()) {
99 gFEX_Container.emplace(
"leadingGfex_SmallRadiusTOB", gFexSRJetContainer);
106 if (!gFexLRJetContainer.
isValid()) {
109 gFEX_Container.emplace(
"leadingGfex_LargeRadiusTOB", gFexLRJetContainer);
121 std::vector<std::string> gFex_types {
"leadingGfex_SmallRadiusTOB",
"leadingGfex_LargeRadiusTOB"};
125 std::vector<std::string> reference_trigger_options {
"Bootstrap",
"RandomHLT",
"No",
"Muon"};
127 bool bootstrap_ref_decision =
false;
128 bool random_ref_decision =
false;
129 bool muon_ref_decision =
false;
134 for (
auto & u : muon_triggers) {
139 for (
auto & u : HLTrandom_triggers) {
144 std::map<std::string, bool> reference_trigger_decision {
145 {
"Bootstrap", bootstrap_ref_decision },
146 {
"RandomHLT", random_ref_decision},
148 {
"Muon", muon_ref_decision}
154 constexpr int minPt = 10*
GeV;
155 constexpr float maxEta = 2.5;
158 float offline_SR_pt = 0, offline_LR_pt = 0, gfex_SR_pt = 0, gfex_LR_pt=0;
159 std::map<std::string, float> jet_pt {
160 {
"leadingOffline_SmallRadiusJet", offline_SR_pt},
161 {
"leadingOffline_LargeRadiusJet", offline_LR_pt},
162 {
"leadingGfex_SmallRadiusTOB", gfex_SR_pt},
163 {
"leadingGfex_LargeRadiusTOB", gfex_LR_pt}
166 float offline_SR_eta = 0, offline_LR_eta = 0, gfex_SR_eta = 0, gfex_LR_eta=0;
167 std::map<std::string, float> jet_eta {
168 {
"leadingOffline_SmallRadiusJet", offline_SR_eta},
169 {
"leadingOffline_LargeRadiusJet", offline_LR_eta},
170 {
"leadingGfex_SmallRadiusTOB", gfex_SR_eta},
171 {
"leadingGfex_LargeRadiusTOB", gfex_LR_eta}
174 float offline_SR_phi = 0, offline_LR_phi = 0, gfex_SR_phi = 0, gfex_LR_phi=0;
175 std::map<std::string, float> jet_phi {
176 {
"leadingOffline_SmallRadiusJet", offline_SR_phi},
177 {
"leadingOffline_LargeRadiusJet", offline_LR_phi},
178 {
"leadingGfex_SmallRadiusTOB", gfex_SR_phi},
179 {
"leadingGfex_LargeRadiusTOB", gfex_LR_phi}
188 if (!jets->empty()) {
190 jet_pt[
"leadingOffline_SmallRadiusJet"] = (*leading_offline_SR_jet)->pt();
191 jet_eta[
"leadingOffline_SmallRadiusJet"] = (*leading_offline_SR_jet)->eta();
192 jet_phi[
"leadingOffline_SmallRadiusJet"] = (*leading_offline_SR_jet)->phi();
197 if (!LRjets->empty()) {
199 jet_pt[
"leadingOffline_LargeRadiusJet"] = (*leading_offline_LR_jet)->pt();
200 jet_eta[
"leadingOffline_LargeRadiusJet"] = (*leading_offline_LR_jet)->eta();
201 jet_phi[
"leadingOffline_LargeRadiusJet"] = (*leading_offline_LR_jet)->phi();
207 float max_gfex_pt = -1.0;
210 for (
auto & g : gFex_types) {
211 if(
auto itr = gFEX_Container.find(g); itr != gFEX_Container.end() ) {
212 for (
const auto* gfex_jet : *(itr->second)) {
213 float gfex_pt = gfex_jet->et();
214 if (gfex_pt > max_gfex_pt && std::abs(gfex_jet->eta()) < maxEta) {
215 max_gfex_pt = gfex_pt;
216 most_energetic_gfex_jet = gfex_jet;
219 if(most_energetic_gfex_jet) {
220 jet_eta[g] = most_energetic_gfex_jet->
eta();
221 jet_phi[g] = most_energetic_gfex_jet->
phi();
222 jet_pt[g] = most_energetic_gfex_jet->
et();
234 bool offlineSRJet_maxEta_minPt_requirement =
false;
235 if(std::abs(jet_eta[
"leadingOffline_SmallRadiusJet"])<=maxEta && (jet_pt[
"leadingOffline_SmallRadiusJet"] >= minPt)) {
236 offlineSRJet_maxEta_minPt_requirement =
true;
240 bool offlineLRJet_maxEta_minPt_requirement =
false;
241 if(std::abs(jet_eta[
"leadingOffline_LargeRadiusJet"])<=maxEta && (jet_pt[
"leadingOffline_LargeRadiusJet"] >= minPt)) {
242 offlineLRJet_maxEta_minPt_requirement =
true;
248 if (offlineSRJet_maxEta_minPt_requirement ) {
258 for (
auto &
r : reference_trigger_options){
259 if (offlineSRJet_maxEta_minPt_requirement && reference_trigger_decision[
r]) {
264 bool trig_of_interest_decision =
false;
265 if (use_passed_before_prescale) {
282 if(jet_pt[
"leadingOffline_SmallRadiusJet"]>l1_trigger_flat_val->second) {
295 bool trig_of_interest_decision =
false;
296 int gFEX_threshold = -1;
300 gFEX_threshold = gFEX_threshold_it->second;
308 if (gFEX_threshold != -1) {
309 if (jet_pt[
"leadingGfex_SmallRadiusTOB"] >= gFEX_threshold) {
310 trig_of_interest_decision =
true;
325 for (
auto &
r : reference_trigger_options){
326 if ( offlineLRJet_maxEta_minPt_requirement && reference_trigger_decision[
r]) {
330 bool trig_of_interest_decision =
false;
331 if (use_passed_before_prescale) {
344 if(jet_pt[
"leadingOffline_LargelRadiusJet"]>l1_trigger_flat_val->second) {
353 bool trig_of_interest_decision =
false;
354 int gFEX_threshold = -1;
358 gFEX_threshold = gFEX_threshold_it->second;
364 if (gFEX_threshold != -1) {
365 if (jet_pt[
"leadingGfex_LargeRadiusTOB"] >= gFEX_threshold) {
366 trig_of_interest_decision =
true;
378 return StatusCode::SUCCESS;