ATLAS Offline Software
JetEfficiencyMonitorAlgorithm.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
10 #include "FourMomUtils/P4Helpers.h"
11 
12 #include <cstdlib>
13 
14 using Athena::Units::GeV;
15 
16 static const std::map<std::string, int> l1_trigger_flatline_vals = {
17  {"L1_gLJ80p0ETA25", 175*GeV}, {"L1_gLJ100p0ETA25", 200*GeV},
18  {"L1_gLJ140p0ETA25", 270*GeV}, {"L1_gLJ160p0ETA25", 270*GeV},
19  {"L1_SC175-SCjJ10", 270*GeV}, {"L1_gJ20p0ETA25", 40*GeV},
20  {"L1_gJ50p0ETA25", 80*GeV}, {"L1_gJ100p0ETA25", 200*GeV},
21  {"L1_gJ400p0ETA25", 800*GeV}, {"L1_jJ30", 50*GeV},
22  {"L1_jJ40", 60*GeV}, {"L1_jJ50", 70*GeV},
23  {"L1_jJ60", 80*GeV}, {"L1_jJ80", 100*GeV},
24  {"L1_jJ90", 110*GeV}, {"L1_jJ125", 135*GeV},
25  {"L1_jJ140", 160*GeV}, {"L1_jJ160", 180*GeV},
26  {"L1_jJ180", 200*GeV}
27 };
28 
29 // Define gFEX_trigger_thresholds as a static const map
30 // can add triggers and their corresponding threshold value as: {"L1_gLJ80p0ETA25", 100 * GeV}
31 // if the value is easily extracted from the trigger name, then just use the trigger name
32 // use trigger name from the function extractgFEXThresholdValue
33 static const std::map<std::string, int> gFEX_trigger_thresholds = {};
35  std::regex pattern(R"(L1_g(?:LJ|J)(\d+)(?:p0ETA25)?)");
36  std::smatch match;
37  if (std::regex_search(key, match, pattern)) {
38  int threshold = std::stoi(match[1]) * GeV;
39  if (key.find("gLJ") != std::string::npos) { //the gLJ threshold is actually 30 GeV less than the threshold in the name
40  threshold -= 30 * GeV;
41  }
42  if (threshold < 0) {
43  ATH_MSG_WARNING("Extracted threshold for " << key << " is negative!");
44  }
45  ATH_MSG_DEBUG("Trigger " << key << ": extracted threshold " << threshold );
46  return threshold;
47  } else {
48  ATH_MSG_WARNING("Trigger " << key << " threshold not extracted!");
49  return -1; // Error indicator
50  }
51 }
52 
53 
54 
55 JetEfficiencyMonitorAlgorithm::JetEfficiencyMonitorAlgorithm( const std::string& name, ISvcLocator* pSvcLocator )
56  : AthMonitorAlgorithm(name,pSvcLocator)
57 {
58 }
59 
61  ATH_MSG_DEBUG("JetEfficiencyMonitorAlgorith::initialize");
62  ATH_MSG_DEBUG("Package Name "<< m_packageName);
63 
64  // we initialise all the containers that we need
65  ATH_CHECK(m_jetKey.initialize() ); //initialize offline SR jets
66  ATH_CHECK(m_LRjetKey.initialize() ); //initialize offline LR jets
67  ATH_CHECK(m_gFexLRJetContainerKey.initialize(SG::AllowEmpty)); //initizlize gfex lr jets
68  ATH_CHECK(m_gFexSRJetContainerKey.initialize(SG::AllowEmpty)); //initizlize gfex sr jets
69 
71 }
72 
74  ATH_MSG_DEBUG("JetEfficiencyMonitorAlgorithm::fillHistograms");
75  std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>> variables;
76 
77  // Retrieve Offline Jets from SG
79  if(!jets.isValid()){
80  ATH_MSG_WARNING("Failed to retrieve Offline Small Radius Jet Container " << m_jetKey<< ". Will be skipped!");
81  }
82  // Retrieve Offline LR Jets from SG
84  if(!LRjets.isValid()){
85  ATH_MSG_WARNING("Failed to retrieve Offline Large Radius Jet Container "<<m_LRjetKey<< ". Will be skipped!");
86  }
87 
88  // reterive the gFEX Jets from SG, only if we plan on accessing them!
89  // Declare the map of gFEX contianers
90  std::map<std::string, SG::ReadHandle<xAOD::gFexJetRoIContainer>> gFEX_Container;
91 
92  // Retrieve gFex SR Jets from SG
93  if (!m_gFexSRJetContainerKey.empty()) {
95  if (!gFexSRJetContainer.isValid()) {
96  ATH_MSG_WARNING("No gFex Small Radius Jet container found in storegate " << m_gFexSRJetContainerKey);
97  } else {
98  gFEX_Container.emplace("leadingGfex_SmallRadiusTOB", gFexSRJetContainer);
99  }
100  }
101 
102  // Retrieve gFex LR Jets from SG
103  if (!m_gFexLRJetContainerKey.empty()) {
105  if (!gFexLRJetContainer.isValid()) {
106  ATH_MSG_WARNING("No gFex Large Radius Jet container found in storegate " << m_gFexLRJetContainerKey);
107  } else {
108  gFEX_Container.emplace("leadingGfex_LargeRadiusTOB", gFexLRJetContainer);
109  }
110  }
111 
112 
115  //DEFINITIONS and extracting variables from the python config file!
116  bool use_passed_before_prescale = m_passedb4Prescale;
117  const std::string& bootstrap_trigger = m_bootstrap_reference_trigger.value();
118  const std::vector<std::string>& muon_triggers = m_muon_reference_triggers.value();
119  const std::vector<std::string>& HLTrandom_triggers = m_HLTrandom_reference_triggers.value();
120  std::vector<std::string> gFex_types {"leadingGfex_SmallRadiusTOB", "leadingGfex_LargeRadiusTOB"};
121 
122 
123  //Define the various reference vector things!
124  std::vector<std::string> reference_trigger_options {"Bootstrap", "RandomHLT", "No", "Muon"};
125 
126  bool bootstrap_ref_decision = false; //bootstrap trigger decision
127  bool random_ref_decision = false; //random reference triggers decision
128  bool muon_ref_decision = false; //muon reference triggers decision
129 
130 
131 
132  bootstrap_ref_decision = AthMonitorAlgorithm::getTrigDecisionTool()->isPassed(bootstrap_trigger);
133  for (auto & u : muon_triggers) {
134  if (AthMonitorAlgorithm::getTrigDecisionTool()->isPassed(u)) {muon_ref_decision = true;}
135  } //close iterating through the muon triggers
136 
137  //then for the HLT decision chains, we always want to use the traditional way of getting our trigger deicsion
138  for (auto & u : HLTrandom_triggers) {
139  if (AthMonitorAlgorithm::getTrigDecisionTool()->isPassed(u)) {random_ref_decision = true;}
140  } //close iterating through the HLT random chains
141 
142 
143  std::map<std::string, bool> reference_trigger_decision {
144  {"Bootstrap", bootstrap_ref_decision },
145  {"RandomHLT", random_ref_decision},
146  {"No", true},
147  {"Muon", muon_ref_decision}
148  };
149 
150 
151  //definition of variables for the offlineSRJet_maxEta_minPt_requirement and offlineLRJet_maxEta_minPt_requirement
152  //these just force us to have a minimum pt, and limited eta region for our efficiency checks
153  constexpr int minPt = 10*GeV;
154  constexpr float maxEta = 2.5;
155 
156  //fill maps that allow us to keep track of variables according to the different containers
157  float offline_SR_pt = 0, offline_LR_pt = 0, gfex_SR_pt = 0, gfex_LR_pt=0;
158  std::map<std::string, float> jet_pt {
159  {"leadingOffline_SmallRadiusJet", offline_SR_pt},
160  {"leadingOffline_LargeRadiusJet", offline_LR_pt},
161  {"leadingGfex_SmallRadiusTOB", gfex_SR_pt},
162  {"leadingGfex_LargeRadiusTOB", gfex_LR_pt}
163  };
164 
165  float offline_SR_eta = 0, offline_LR_eta = 0, gfex_SR_eta = 0, gfex_LR_eta=0;
166  std::map<std::string, float> jet_eta {
167  {"leadingOffline_SmallRadiusJet", offline_SR_eta},
168  {"leadingOffline_LargeRadiusJet", offline_LR_eta},
169  {"leadingGfex_SmallRadiusTOB", gfex_SR_eta},
170  {"leadingGfex_LargeRadiusTOB", gfex_LR_eta}
171  };
172 
173  float offline_SR_phi = 0, offline_LR_phi = 0, gfex_SR_phi = 0, gfex_LR_phi=0;
174  std::map<std::string, float> jet_phi {
175  {"leadingOffline_SmallRadiusJet", offline_SR_phi},
176  {"leadingOffline_LargeRadiusJet", offline_LR_phi},
177  {"leadingGfex_SmallRadiusTOB", gfex_SR_phi},
178  {"leadingGfex_LargeRadiusTOB", gfex_LR_phi}
179  };
180 
181 
184  // Fill pt, eta and phi vals for all the containers!
185  //offline jet containers
186  if (jets.isValid()){
187  if (!jets->empty()) { //check that there are jets before accessing the container
188  xAOD::JetContainer::const_iterator leading_offline_SR_jet = jets->begin(); //the first jet in the contianer is the leading jet
189  jet_pt["leadingOffline_SmallRadiusJet"] = (*leading_offline_SR_jet)->pt();
190  jet_eta["leadingOffline_SmallRadiusJet"] = (*leading_offline_SR_jet)->eta();
191  jet_phi["leadingOffline_SmallRadiusJet"] = (*leading_offline_SR_jet)->phi();
192  }
193  } //(close IF) jets size > 0 loop
194  //LR jet containers
195  if (LRjets.isValid()){
196  if (!LRjets->empty()) { //check that there are jets before accessing the container
197  xAOD::JetContainer::const_iterator leading_offline_LR_jet = LRjets->begin(); //the first jet in the contianer is the leading jet
198  jet_pt["leadingOffline_LargeRadiusJet"] = (*leading_offline_LR_jet)->pt();
199  jet_eta["leadingOffline_LargeRadiusJet"] = (*leading_offline_LR_jet)->eta();
200  jet_phi["leadingOffline_LargeRadiusJet"] = (*leading_offline_LR_jet)->phi();
201  } //(close IF) LRjets size > 0 loop
202  }
203  // gFex SR and LR TOB containers
204  // when we emulate the gfex trigger decision, we just want to find the leading gFEX TOB
205  // its not gaurenteed that these TOBs are pt ordered, so well iterate through them
206  float max_gfex_pt = -1.0; // Track max pt
207  const xAOD::gFexJetRoI* most_energetic_gfex_jet = nullptr;
208 
209  for (auto & g : gFex_types) { // Iterate through SR and LR gFex jets
210  if(auto itr = gFEX_Container.find(g); itr != gFEX_Container.end() ) { //check that we were able to access the contianer
211  for (const auto* gfex_jet : *(itr->second)) {// Iterate through gFex jets
212  float gfex_pt = gfex_jet->et();
213  if (gfex_pt > max_gfex_pt && std::abs(gfex_jet->eta()) < maxEta) { // Track highest pt jet
214  max_gfex_pt = gfex_pt;
215  most_energetic_gfex_jet = gfex_jet;
216  }
217  }
218  if(most_energetic_gfex_jet) {
219  jet_eta[g] = most_energetic_gfex_jet->eta();
220  jet_phi[g] = most_energetic_gfex_jet->phi();
221  jet_pt[g] = most_energetic_gfex_jet->et();
222  }
223  }
224  }
225 
226  // #####################
227  // #####################
228  //Physical cuts applied to all events on the offline jets
229  //requring a minimum pt threshold
230  //and maximum eta threshold
231 
232  //offline SR Jet requriment
233  bool offlineSRJet_maxEta_minPt_requirement = false;
234  if(std::abs(jet_eta["leadingOffline_SmallRadiusJet"])<=maxEta && (jet_pt["leadingOffline_SmallRadiusJet"] >= minPt)) {
235  offlineSRJet_maxEta_minPt_requirement = true;
236  }
237 
238  // offline LR Jet requriment
239  bool offlineLRJet_maxEta_minPt_requirement = false;
240  if(std::abs(jet_eta["leadingOffline_LargeRadiusJet"])<=maxEta && (jet_pt["leadingOffline_LargeRadiusJet"] >= minPt)) {
241  offlineLRJet_maxEta_minPt_requirement = true;
242  }
243 
244  // #####################
245  // #####################
246  // Fill sample histograms of the pt and eta of leading SR jet
247  if (offlineSRJet_maxEta_minPt_requirement ) {
248  auto raw_pt = Monitored::Scalar<float>("raw_pt", jet_pt["leadingOffline_SmallRadiusJet"]);
249  auto raw_eta = Monitored::Scalar<float>("raw_eta", jet_eta["leadingOffline_SmallRadiusJet"]);
250  fill(m_packageName, raw_pt, raw_eta);
251  }
252  // #####################
253  // #####################
254 
255 
256  // FILL EFFIENCY HISTOGRAMS INVOLVING SMALL RADIUS OFFLINE JETS
257  for (auto & r : reference_trigger_options){ //iterate through the refernce triggers
258  if (offlineSRJet_maxEta_minPt_requirement && reference_trigger_decision[r]) { //check that the physical cuts and reference trigger is passed
259  //get the pt of leading jet
260  auto pt_ref = Monitored::Scalar<float>("val_SRpt", jet_pt["leadingOffline_SmallRadiusJet"]);
261 
262  for (const auto& trigger_name : m_SmallRadiusJetTriggers_phase1){
263  bool trig_of_interest_decision = false; //default definition of the trigger of interest decison to be false,
264  if (use_passed_before_prescale) {
265  //We can choose if we want to use pass before prescale, or not when defining our trigger efficiency
266  //this boolean is defiend in the jeteffmonalg.py file
267  const unsigned int bits = AthMonitorAlgorithm::getTrigDecisionTool()->isPassedBits(trigger_name);
268  trig_of_interest_decision = bits & TrigDefs::L1_isPassedBeforePrescale;
269  } else { trig_of_interest_decision = AthMonitorAlgorithm::getTrigDecisionTool()->isPassed(trigger_name); }
270 
271  //get values and fill the histogram of offline jet pt and boolean of trigger passing
272  auto passed_pt_bool = Monitored::Scalar<bool>("bool_"+r+"_"+trigger_name, trig_of_interest_decision);
273  fill(m_packageName, pt_ref, passed_pt_bool);
274 
275  //filling histograms that are effiency curves as a funciton of eta
276  //in order to ensure that we are isolating only the eta behavior, we have a
277  // flatline value where the pt effiencies aproximtley flatten out to 1
278  //these are hard coded, and saved for only a few of the triggers!
279  auto l1_trigger_flat_val = l1_trigger_flatline_vals.find(trigger_name);
280  if (l1_trigger_flat_val != l1_trigger_flatline_vals.end()) {
281  if(jet_pt["leadingOffline_SmallRadiusJet"]>l1_trigger_flat_val->second) { //is jet pt greater than the flatline value?
282  //get value of eta, and histogram passing boolean and fill
283  auto eta_ref = Monitored::Scalar<float>("val_SReta", jet_eta["leadingOffline_SmallRadiusJet"]);
284  auto passed_eta = Monitored::Scalar<bool>("bool_" + r + "_" + trigger_name, trig_of_interest_decision);
285  fill(m_packageName, eta_ref, passed_eta);
286  //if the trigger passes, we can also add the eta value to a stand alone histogram
287  } //(close IF) jet pt is greater than pt flatline vlaue loop
288  } //(close IF) loop that checks if the trigger of interest is in list of flatline trigger vals
289  } //(close FOR) loop that iterates through all of L1 single jet triggers we make effiency curves for
290 
291  // if a gFEX trigger is not defined in the menu, then we populate the turn on curve using TOBs
292  // check the map to see if there is a predefined
293  for (const auto& trigger_name : m_SmallRadiusJetTriggers_gFEX) {
294  bool trig_of_interest_decision = false; // Default to false
295  int gFEX_threshold = -1; // Default invalid threshold value
296  // Check if the trigger name exists in the map first
297  auto gFEX_threshold_it = gFEX_trigger_thresholds.find(trigger_name);
298  if (gFEX_threshold_it != gFEX_trigger_thresholds.end()) {
299  gFEX_threshold = gFEX_threshold_it->second;
300  ATH_MSG_DEBUG("gfex threshold in map! "<< gFEX_threshold);
301  } else {
302  // If not found in the map, extract the threshold dynamically
303  gFEX_threshold = extractgFEXThresholdValue(trigger_name);
304  }
305  ATH_MSG_DEBUG("gfex threshold used: "<< gFEX_threshold);
306  // Proceed only if a valid threshold was obtained
307  if (gFEX_threshold != -1) {
308  if (jet_pt["leadingGfex_SmallRadiusTOB"] >= gFEX_threshold) {
309  trig_of_interest_decision = true;
310  }
311  }
312  // Get values and fill the histogram of offline jet pt and boolean of trigger passing
313  auto passed_pt_bool_gFEX = Monitored::Scalar<bool>("bool_" + r + "_" + trigger_name, trig_of_interest_decision);
314  fill(m_packageName, pt_ref, passed_pt_bool_gFEX);
315  }
316 
317  } //(close IF) loop that checks if the reference trigger and physical property pass is passed
318  } //(close FOR) the iteration that fills effiency histogram for 4 different kinds of refernce triggers
319 
322  //FILL EFFIENCY HISTOGRAMS INVOLVING LARGE RADIUS OFFLINE JETS
323 
324  for (auto & r : reference_trigger_options){ //iterate through the reference triggers
325  if ( offlineLRJet_maxEta_minPt_requirement && reference_trigger_decision[r]) { //check that the physical cuts and reference trigger is passed
326  auto pt_ref = Monitored::Scalar<float>("val_LRpt", jet_pt["leadingOffline_LargeRadiusJet"]);
327 
328  for (const auto& trigger_name : m_LargeRadiusJetTriggers_phase1){
329  bool trig_of_interest_decision = false;
330  if (use_passed_before_prescale) {
331  const unsigned int bits = AthMonitorAlgorithm::getTrigDecisionTool()->isPassedBits(trigger_name);
332  trig_of_interest_decision = bits & TrigDefs::L1_isPassedBeforePrescale;
333  } else { trig_of_interest_decision = AthMonitorAlgorithm::getTrigDecisionTool()->isPassed(trigger_name); }
334 
335 
336  auto passed_pt_bool = Monitored::Scalar<bool>("bool_"+r+"_"+trigger_name, trig_of_interest_decision);
337  fill(m_packageName, pt_ref, passed_pt_bool);
338 
339 
340  //filling histograms that are effiency curves as a funciton of eta
341  auto l1_trigger_flat_val = l1_trigger_flatline_vals.find(trigger_name);
342  if (l1_trigger_flat_val != l1_trigger_flatline_vals.end()) {
343  if(jet_pt["leadingOffline_LargelRadiusJet"]>l1_trigger_flat_val->second) { //is jet pt greater than the flatline value?
344  //get value of eta, and histogram passing boolean and fill
345  auto eta_ref = Monitored::Scalar<float>("val_LReta", jet_eta["leadingOffline_LargeRadiusJet"]);
346  auto passed_eta = Monitored::Scalar<bool>("bool_" + r + "_" + trigger_name, trig_of_interest_decision);
347  fill(m_packageName, eta_ref, passed_eta);
348  //if the trigger passes, we can also add the eta value to a stand alone histogram
349  } //(close IF) jet pt is greater than pt flatline vlaue loop
350  } //(close IF) loop that checks if the trigger of interest is in list of flatline trigger vals
351  for (const auto& trigger_name : m_LargeRadiusJetTriggers_gFEX) {
352  bool trig_of_interest_decision = false; // Default to false
353  int gFEX_threshold = -1; // Default invalid threshold value
354  // Check if the trigger name exists in the map first
355  auto gFEX_threshold_it = gFEX_trigger_thresholds.find(trigger_name);
356  if (gFEX_threshold_it != gFEX_trigger_thresholds.end()) {
357  gFEX_threshold = gFEX_threshold_it->second;
358  } else {
359  // If not found in the map, extract the threshold dynamically
360  gFEX_threshold = extractgFEXThresholdValue(trigger_name);
361  }
362  // Proceed only if a valid threshold was obtained
363  if (gFEX_threshold != -1) {
364  if (jet_pt["leadingGfex_LargeRadiusTOB"] >= gFEX_threshold) {
365  trig_of_interest_decision = true;
366  }
367  }
368  // Get values and fill the histogram of offline jet pt and boolean of trigger passing
369  auto passed_pt_bool_gFEX = Monitored::Scalar<bool>("bool_" + r + "_" + trigger_name, trig_of_interest_decision);
370  fill(m_packageName, pt_ref, passed_pt_bool_gFEX);
371  }
372  } //(close FOR) loop that iterates through all of the triggers we make effiency curves for
373  } //(close FOR) the iteration that fills effiency histogram for 4 different kinds of refernce triggers
374  } //(close IF) loop that checks if the physical properties were passed for the jet
375 
376  variables.clear();
377  return StatusCode::SUCCESS;
378 }
ReadHandleKey.h
Property holding a SG store/key/clid from which a ReadHandle is made.
mergePhysValFiles.pattern
pattern
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:25
beamspotman.r
def r
Definition: beamspotman.py:672
JetEfficiencyMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: JetEfficiencyMonitorAlgorithm.cxx:60
GeV
#define GeV
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/Root/HelperFunctions.cxx:18
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
checkCoolLatestUpdate.variables
variables
Definition: checkCoolLatestUpdate.py:12
xAOD::gFexJetRoI_v1::eta
float eta() const
retrieves the Eta index from the 32-bit word
Definition: gFexJetRoI_v1.cxx:167
JetEfficiencyMonitorAlgorithm::m_gFexSRJetContainerKey
SG::ReadHandleKey< xAOD::gFexJetRoIContainer > m_gFexSRJetContainerKey
Definition: JetEfficiencyMonitorAlgorithm.h:50
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
JetEfficiencyMonitorAlgorithm::m_bootstrap_reference_trigger
StringProperty m_bootstrap_reference_trigger
Definition: JetEfficiencyMonitorAlgorithm.h:32
JetEfficiencyMonitorAlgorithm::fillHistograms
virtual StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
Definition: JetEfficiencyMonitorAlgorithm.cxx:73
AthMonitorAlgorithm::getTrigDecisionTool
const ToolHandle< Trig::TrigDecisionTool > & getTrigDecisionTool() const
Get the trigger decision tool member.
Definition: AthMonitorAlgorithm.cxx:194
defineDB.jets
jets
Definition: JetTagCalibration/share/defineDB.py:24
JetEfficiencyMonitorAlgorithm::JetEfficiencyMonitorAlgorithm
JetEfficiencyMonitorAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Definition: JetEfficiencyMonitorAlgorithm.cxx:55
JetEfficiencyMonitorAlgorithm::extractgFEXThresholdValue
int extractgFEXThresholdValue(const std::string &key) const
Definition: JetEfficiencyMonitorAlgorithm.cxx:34
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:77
PUfitVar::maxEta
constexpr float maxEta
Definition: GepMETPufitAlg.cxx:13
AthMonitorAlgorithm
Base class for Athena Monitoring Algorithms.
Definition: AthMonitorAlgorithm.h:36
PrepareReferenceFile.regex
regex
Definition: PrepareReferenceFile.py:43
xAOD::gFexJetRoI_v1::phi
float phi() const
High value of phi corresponding to phi index (using gFex convention, phi in [0, 2pi]).
Definition: gFexJetRoI_v1.cxx:300
python.CaloCondTools.g
g
Definition: CaloCondTools.py:15
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
AthMonitorAlgorithm.h
xAOD::gFexJetRoI_v1
Class describing properties of a LVL1 gFEX jet Trigger Object (TOB) in the xAOD format.
Definition: gFexJetRoI_v1.h:25
JetEfficiencyMonitorAlgorithm::m_gFexLRJetContainerKey
SG::ReadHandleKey< xAOD::gFexJetRoIContainer > m_gFexLRJetContainerKey
Definition: JetEfficiencyMonitorAlgorithm.h:51
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
AthMonitorAlgorithm::fill
void fill(const ToolHandle< GenericMonitoringTool > &groupHandle, std::vector< std::reference_wrapper< Monitored::IMonitoredVariable >> &&variables) const
Fills a vector of variables to a group by reference.
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
Monitored.h
Header file to be included by clients of the Monitored infrastructure.
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
xAOD::gFexJetRoI_v1::et
float et() const
retrieves the Et index from the 32-bit word
Definition: gFexJetRoI_v1.cxx:160
JetEfficiencyMonitorAlgorithm::m_packageName
StringProperty m_packageName
Definition: JetEfficiencyMonitorAlgorithm.h:30
JetEfficiencyMonitorAlgorithm::m_LargeRadiusJetTriggers_gFEX
Gaudi::Property< std::vector< std::string > > m_LargeRadiusJetTriggers_gFEX
Definition: JetEfficiencyMonitorAlgorithm.h:41
P4Helpers.h
JetEfficiencyMonitorAlgorithm::m_LargeRadiusJetTriggers_phase1
Gaudi::Property< std::vector< std::string > > m_LargeRadiusJetTriggers_phase1
Definition: JetEfficiencyMonitorAlgorithm.h:38
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
threshold
Definition: chainparser.cxx:74
JetEfficiencyMonitorAlgorithm::m_HLTrandom_reference_triggers
Gaudi::Property< std::vector< std::string > > m_HLTrandom_reference_triggers
Definition: JetEfficiencyMonitorAlgorithm.h:34
JetEfficiencyMonitorAlgorithm::m_SmallRadiusJetTriggers_gFEX
Gaudi::Property< std::vector< std::string > > m_SmallRadiusJetTriggers_gFEX
Definition: JetEfficiencyMonitorAlgorithm.h:40
JetEfficiencyMonitorAlgorithm.h
AthMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: AthMonitorAlgorithm.cxx:18
JetEfficiencyMonitorAlgorithm::m_passedb4Prescale
Gaudi::Property< bool > m_passedb4Prescale
Definition: JetEfficiencyMonitorAlgorithm.h:35
JetEfficiencyMonitorAlgorithm::m_SmallRadiusJetTriggers_phase1
Gaudi::Property< std::vector< std::string > > m_SmallRadiusJetTriggers_phase1
Definition: JetEfficiencyMonitorAlgorithm.h:37
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
JetEfficiencyMonitorAlgorithm::m_LRjetKey
SG::ReadHandleKey< xAOD::JetContainer > m_LRjetKey
Definition: JetEfficiencyMonitorAlgorithm.h:49
Trk::jet_phi
@ jet_phi
Definition: JetVtxParamDefs.h:28
JetEfficiencyMonitorAlgorithm::m_muon_reference_triggers
Gaudi::Property< std::vector< std::string > > m_muon_reference_triggers
Definition: JetEfficiencyMonitorAlgorithm.h:33
Monitored::Scalar
Declare a monitored scalar variable.
Definition: MonitoredScalar.h:34
SG::AllowEmpty
@ AllowEmpty
Definition: StoreGate/StoreGate/VarHandleKey.h:30
dumpTgcDigiThreshold.threshold
list threshold
Definition: dumpTgcDigiThreshold.py:34
DataVector::empty
bool empty() const noexcept
Returns true if the collection is empty.
JetEfficiencyMonitorAlgorithm::m_jetKey
SG::ReadHandleKey< xAOD::JetContainer > m_jetKey
Definition: JetEfficiencyMonitorAlgorithm.h:48
match
bool match(std::string s1, std::string s2)
match the individual directories of two strings
Definition: hcg.cxx:356
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37