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 JetEfficiencyMonitorAlgorithm::JetEfficiencyMonitorAlgorithm( const std::string& name, ISvcLocator* pSvcLocator )
17  : AthMonitorAlgorithm(name,pSvcLocator)
18 {
19 }
20 
22  ATH_MSG_DEBUG("JetEfficiencyMonitorAlgorith::initialize");
23  ATH_MSG_DEBUG("Package Name "<< m_packageName);
24 
25  // we initialise all the containers that we need
26  ATH_CHECK(m_jetKey.initialize()); //initialize offline SR jets
27  ATH_CHECK(m_LRjetKey.initialize()); //initialize offline LR jets
28  ATH_CHECK(m_gFexLRJetContainerKey.initialize()); //initizlize gfex lr jets
29  ATH_CHECK(m_gFexSRJetContainerKey.initialize()); //initizlize gfex sr jets
30 
31  // TOBs may come from trigger bytestream - renounce from scheduler
34 
36 }
37 
39  ATH_MSG_DEBUG("JetEfficiencyMonitorAlgorithm::fillHistograms");
40  std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>> variables;
41 
42  // Retrieve Offline Jets from SG
44  if(!jets.isValid()){
45  ATH_MSG_WARNING("Failed to retrieve Offline Small Radius Jet Container");
46  return StatusCode::SUCCESS;
47  }
48  // Retrieve Offline LR Jets from SG
50  if(!LRjets.isValid()){
51  ATH_MSG_WARNING("Failed to retrieve Offline Large Radius Jet Container "<<m_LRjetKey);
52  return StatusCode::SUCCESS;
53  }
54  // Retrieve gfex SR Jets from SG
56  if(!gFexSRJetContainer.isValid()){
57  ATH_MSG_WARNING("No gFex Small Radius Jet container found in storegate "<< m_gFexSRJetContainerKey);
58  return StatusCode::SUCCESS;
59  }
60  // Retrieve gfex LR Jets from SG
62  if(!gFexLRJetContainer.isValid()){
63  ATH_MSG_WARNING("No gFex Large Radius Jet container found in storegate "<< m_gFexLRJetContainerKey);
64  return StatusCode::SUCCESS;
65  }
66 
67 
70  //DEFINITIONS and extracting variables from the python config file!
71  bool use_passed_before_prescale = m_passedb4Prescale;
72  const std::string& bootstrap_trigger = m_bootstrap_reference_trigger.value();
73  const std::vector<std::string>& muon_triggers = m_muon_reference_triggers.value();
74  const std::vector<std::string>& HLTrandom_triggers = m_HLTrandom_reference_triggers.value();
75  std::vector<std::string> gFex_types {"leadingGfex_SmallRadiusTOB", "leadingGfex_LargeRadiusTOB"};
76 
77 
78  //Define the various reference vector things!
79  std::vector<std::string> reference_trigger_options {"Bootstrap", "RandomHLT", "No", "Muon"};
80 
81  bool bootstrap_ref_decision = false; //bootstrap trigger decision
82  bool random_ref_decision = false; //random reference triggers decision
83  bool muon_ref_decision = false; //muon reference triggers decision
84 
85 
86 
87  bootstrap_ref_decision = AthMonitorAlgorithm::getTrigDecisionTool()->isPassed(bootstrap_trigger);
88  for (auto & u : muon_triggers) {
89  if (AthMonitorAlgorithm::getTrigDecisionTool()->isPassed(u)) {muon_ref_decision = true;}
90  } //close iterating through the muon triggers
91 
92  //then for the HLT decision chains, we always want to use the traditional way of getting our trigger deicsion
93  for (auto & u : HLTrandom_triggers) {
94  if (AthMonitorAlgorithm::getTrigDecisionTool()->isPassed(u)) {random_ref_decision = true;}
95  } //close iterating through the HLT random chains
96 
97 
98  std::map<std::string, bool> reference_trigger_decision {
99  {"Bootstrap", bootstrap_ref_decision },
100  {"RandomHLT", random_ref_decision},
101  {"No", true},
102  {"Muon", muon_ref_decision}
103  };
104 
105 
106  //definition of variables for the offlineSRJet_maxEta_minPt_requirement and offlineLRJet_maxEta_minPt_requirement
107  //these just force us to have a minimum pt, and limited eta region for our efficiency checks
108  constexpr int minPt = 10*GeV;
109  constexpr float maxEta = 2.5;
110 
111  std::map<std::string, SG::ReadHandle<xAOD::gFexJetRoIContainer>> gFEX_Container {
112  //this naming is a bit misleading but it allows us to easily check the LR and SR gfex TOB contianers
113  //to find the leading LR and SR gfex TOBS (becuase they are not PT ordered by default)
114  //the string descripters are this way to stay conistent with the naming used later when we want to write
115  //and access the values of LR and SR gfex TOB properties, like pt, eta and phi
116  {"leadingGfex_SmallRadiusTOB",gFexSRJetContainer}, {"leadingGfex_LargeRadiusTOB", gFexLRJetContainer}
117  };
118 
119  //fill maps that allow us to keep track of variables according to the different containers
120  float offline_SR_pt = 0, offline_LR_pt = 0, gfex_SR_pt = 0, gfex_LR_pt=0;
121  std::map<std::string, float> jet_pt {
122  {"leadingOffline_SmallRadiusJet", offline_SR_pt}, {"leadingOffline_LargeRadiusJet", offline_LR_pt},
123  {"leadingGfex_SmallRadiusTOB", gfex_SR_pt}, {"leadingGfex_LargeRadiusTOB", gfex_LR_pt}
124  };
125 
126  float offline_SR_eta = 0, offline_LR_eta = 0, gfex_SR_eta = 0, gfex_LR_eta=0;
127  std::map<std::string, float> jet_eta {
128  {"leadingOffline_SmallRadiusJet", offline_SR_eta}, {"leadingOffline_LargeRadiusJet", offline_LR_eta},
129  {"leadingGfex_SmallRadiusTOB", gfex_SR_eta}, {"leadingGfex_LargeRadiusTOB", gfex_LR_eta}
130  };
131 
132  float offline_SR_phi = 0, offline_LR_phi = 0, gfex_SR_phi = 0, gfex_LR_phi=0;
133  std::map<std::string, float> jet_phi {
134  {"leadingOffline_SmallRadiusJet", offline_SR_phi}, {"leadingOffline_LargeRadiusJet", offline_LR_phi},
135  {"leadingGfex_SmallRadiusTOB", gfex_SR_phi}, {"leadingGfex_LargeRadiusTOB", gfex_LR_phi}
136  };
137 
138 
141  // Fill pt, eta and phi vals for all the containers!
142  //offline jet containers
143  if (!jets->empty()) { //check that there are jets before accessing the container
144  xAOD::JetContainer::const_iterator leading_offline_SR_jet = jets->begin(); //the first jet in the contianer is the leading jet
145  jet_pt["leadingOffline_SmallRadiusJet"] = (*leading_offline_SR_jet)->pt();
146  jet_eta["leadingOffline_SmallRadiusJet"] = (*leading_offline_SR_jet)->eta();
147  jet_phi["leadingOffline_SmallRadiusJet"] = (*leading_offline_SR_jet)->phi();
148  } //(close IF) jets size > 0 loop
149  //LR jet containers
150  if (!LRjets->empty()) { //check that there are jets before accessing the container
151  xAOD::JetContainer::const_iterator leading_offline_LR_jet = LRjets->begin(); //the first jet in the contianer is the leading jet
152  jet_pt["leadingOffline_LargeRadiusJet"] = (*leading_offline_LR_jet)->pt();
153  jet_eta["leadingOffline_LargeRadiusJet"] = (*leading_offline_LR_jet)->eta();
154  jet_phi["leadingOffline_LargeRadiusJet"] = (*leading_offline_LR_jet)->phi();
155  } //(close IF) LRjets size > 0 loop
156 
157  // gFex SR and LR TOB containers
158  // when we emulate the gfex trigger decision, we just want to find the gfex tob that
159  // is the closest in physical space to the leading offline pt jet
160  float maximum_value_for_delta_r = 0.4;
161  for (auto & g : gFex_types){ //iterate through SR and LR gfex jets.
162  if (!gFEX_Container[g]->empty()) { //check that there are jets before accessing the container
163  const xAOD::gFexJetRoI* matching_gfex_jet = nullptr; //inital pointer of null
164  float min_delta_r = 10000;
165  //iterate through all the gfex tobs
166  for (const auto* gfex_jet : *gFEX_Container[g]) {
167  std::string comparison_offline_jet = "";
168  if (g == "gfex_SmallRadiusTOB") {comparison_offline_jet = "offline_SmallRadiusJet"; }
169  else if (g == "gfex_LargeRadiusTOB") {comparison_offline_jet = "offline_LargeRadiusJet"; }
170  float gfex_eta = gfex_jet->eta();
171  float gfex_phi = gfex_jet->phi();
172  float delta_eta = std::abs(gfex_eta-jet_eta[comparison_offline_jet]),
173  delta_phi = P4Helpers::deltaPhi(gfex_phi,jet_phi[comparison_offline_jet]),
174  delta_r = std::sqrt(std::pow(delta_eta,2)+ std::pow(delta_phi,2));
175  if (maximum_value_for_delta_r > delta_r && delta_r < min_delta_r && std::abs(gfex_eta) < maxEta){
176  min_delta_r = delta_r;
177  matching_gfex_jet = gfex_jet;
178  } //(close IF) loop if gfex jet satisfies pt and eta conditions
179  } //(close FOR) loop that iterates through gfex tobs for the given event
180 
181  //if we successfully found a leading gfex tob, then we can save its physics properties
182  if (matching_gfex_jet != nullptr) {
183  jet_eta[g] = matching_gfex_jet->eta(), jet_phi[g] = matching_gfex_jet->phi(), jet_pt[g] = matching_gfex_jet->et();
184  } // (close IF) loop that checks if there is a leading gfex jet
185  } // (close IF) loop that checks that there are gfex tobs
186  }// (close FOR) that loops through sr and lr gfex tobs
187 
188 
189 
190 
191 
192  // #####################
193  // #####################
194  //Physical cuts applied to all events on the offline jets
195  //requring a minimum pt threshold
196  //and maximum eta threshold
197 
198  //offline SR Jet requriment
199  bool offlineSRJet_maxEta_minPt_requirement = false;
200  if(std::abs(jet_eta["leadingOffline_SmallRadiusJet"])<=maxEta && (jet_pt["leadingOffline_SmallRadiusJet"] >= minPt)) {
201  offlineSRJet_maxEta_minPt_requirement = true;
202  }
203 
204  // offline LR Jet requriment
205  bool offlineLRJet_maxEta_minPt_requirement = false;
206  if(std::abs(jet_eta["leadingOffline_LargeRadiusJet"])<=maxEta && (jet_pt["leadingOffline_LargeRadiusJet"] >= minPt)) {
207  offlineLRJet_maxEta_minPt_requirement = true;
208  }
209 
210 
211  // #####################
212  // #####################
213  //PREP LISTS OF TRIGGERS
214 
215  //Create and clean up the list of L1Triggers
216  std::vector<std::string> multiJet_LegacySmallRadiusTriggers = m_multiJet_LegacySmallRadiusTriggers;
217  std::vector<std::string> SmallRadiusJetTriggers_phase1 = m_SmallRadiusJetTriggers_phase1;
218  std::vector<std::string> LargeRadiusJetTriggers_phase1 = m_LargeRadiusJetTriggers_phase1;
219 
220  std::map<std::string, int> l1_trigger_flatline_vals {
221  //this is around where the l1trigger pt effiencies flatten out
222  //in order to make eta effiency curves, its useful to isolate the pt behavior,
223  // so we want 100% pt effiency, or after 'flattening out'
224  {"L1_gLJ80p0ETA25", 175*GeV}, {"L1_gLJ100p0ETA25", 200*GeV},
225  {"L1_gLJ140p0ETA25", 270*GeV}, {"L1_gLJ160p0ETA25", 270*GeV}, {"L1_SC111-CJ15", 270*GeV}, {"L1_gJ20p0ETA25", 40*GeV},
226  {"L1_gJ50p0ETA25", 80*GeV}, {"L1_gJ100p0ETA25", 200*GeV},
227  {"L1_gJ400p0ETA25", 800*GeV}, {"L1_jJ30", 50*GeV}, {"L1_jJ40", 60*GeV},
228  {"L1_jJ50", 70*GeV}, {"L1_jJ60", 80*GeV}, {"L1_jJ80", 100*GeV},
229  {"L1_jJ90", 110*GeV}, {"L1_jJ125", 135*GeV}, {"L1_jJ140", 160*GeV}, {"L1_jJ160", 180*GeV},
230  {"L1_jJ180", 200*GeV}
231  };
232 
233 
234  // #####################
235  // #####################
236  // Fill sample histograms of the pt and eta of leading SR jet
237  if (offlineSRJet_maxEta_minPt_requirement ) {
238  auto raw_pt = Monitored::Scalar<float>("raw_pt", jet_pt["leadingOffline_SmallRadiusJet"]);
239  auto raw_eta = Monitored::Scalar<float>("raw_eta", jet_eta["leadingOffline_SmallRadiusJet"]);
240  fill(m_packageName, raw_pt, raw_eta);
241  }
242  // #####################
243  // #####################
244 
245 
246  // FILL EFFIENCY HISTOGRAMS INVOLVING SMALL RADIUS OFFLINE JETS
247  for (auto & r : reference_trigger_options){ //iterate through the refernce triggers
248  if (offlineSRJet_maxEta_minPt_requirement && reference_trigger_decision[r]) { //check that the physical cuts and reference trigger is passed
249  //get the pt of leading jet
250  auto pt_ref = Monitored::Scalar<float>("val_SRpt", jet_pt["leadingOffline_SmallRadiusJet"]);
251 
252  for (const auto& trigger_name : SmallRadiusJetTriggers_phase1){
253  bool trig_of_interest_decision = false; //default definition of the trigger of interest decison to be false,
254  if (use_passed_before_prescale) {
255  //We can choose if we want to use pass before prescale, or not when defining our trigger efficiency
256  //this boolean is defiend in the jeteffmonalg.py file
257  const unsigned int bits = AthMonitorAlgorithm::getTrigDecisionTool()->isPassedBits(trigger_name);
258  trig_of_interest_decision = bits & TrigDefs::L1_isPassedBeforePrescale;
259  } else { trig_of_interest_decision = AthMonitorAlgorithm::getTrigDecisionTool()->isPassed(trigger_name); }
260 
261  //get values and fill the histogram of offline jet pt and boolean of trigger passing
262  auto passed_pt_bool = Monitored::Scalar<bool>("bool_"+r+"_"+trigger_name, trig_of_interest_decision);
263  fill(m_packageName, pt_ref, passed_pt_bool);
264 
265 
266  //filling histograms that are effiency curves as a funciton of eta
267  //in order to ensure that we are isolating only the eta behavior, we have a
268  // flatline value where the pt effiencies aproximtley flatten out to 1
269  //these are hard coded, and saved for only a few of the triggers!
270  if (l1_trigger_flatline_vals.find(trigger_name) != l1_trigger_flatline_vals.end()) {
271  if(jet_pt["leadingOffline_SmallRadiusJet"]>l1_trigger_flatline_vals[trigger_name]) { //is jet pt greater than the flatline value?
272  //get value of eta, and histogram passing boolean and fill
273  auto eta_ref = Monitored::Scalar<float>("val_SReta", jet_eta["leadingOffline_SmallRadiusJet"]);
274  auto passed_eta = Monitored::Scalar<bool>("bool_" + r + "_" + trigger_name, trig_of_interest_decision);
275  fill(m_packageName, eta_ref, passed_eta);
276  //if the trigger passes, we can also add the eta value to a stand alone histogram
277  } //(close IF) jet pt is greater than pt flatline vlaue loop
278  } //(close IF) loop that checks if the trigger of interest is in list of flatline trigger vals
279  } //(close FOR) loop that iterates through all of L1 single jet triggers we make effiency curves for
280 
281  } //(close IF) loop that checks if the reference trigger and physical property pass is passed
282  } //(close FOR) the iteration that fills effiency histogram for 4 different kinds of refernce triggers
283 
284 
287  //FILL EFFIENCY HISTOGRAMS INVOLVING LARGE RADIUS OFFLINE JETS
288 
289  for (auto & r : reference_trigger_options){ //iterate through the reference triggers
290  if ( offlineLRJet_maxEta_minPt_requirement && reference_trigger_decision[r]) { //check that the physical cuts and reference trigger is passed
291  auto pt_ref = Monitored::Scalar<float>("val_LRpt", jet_pt["leadingOffline_LargeRadiusJet"]);
292 
293  for (const auto& trigger_name : LargeRadiusJetTriggers_phase1){
294  bool trig_of_interest_decision = false;
295  if (use_passed_before_prescale) {
296  const unsigned int bits = AthMonitorAlgorithm::getTrigDecisionTool()->isPassedBits(trigger_name);
297  trig_of_interest_decision = bits & TrigDefs::L1_isPassedBeforePrescale;
298  } else { trig_of_interest_decision = AthMonitorAlgorithm::getTrigDecisionTool()->isPassed(trigger_name); }
299 
300 
301  auto passed_pt_bool = Monitored::Scalar<bool>("bool_"+r+"_"+trigger_name, trig_of_interest_decision);
302  fill(m_packageName, pt_ref, passed_pt_bool);
303 
304 
305  //filling histograms that are effiency curves as a funciton of eta
306  if (l1_trigger_flatline_vals.find(trigger_name) != l1_trigger_flatline_vals.end()) {
307  if(jet_pt["leadingOffline_LargelRadiusJet"]>l1_trigger_flatline_vals[trigger_name]) { //is jet pt greater than the flatline value?
308  //get value of eta, and histogram passing boolean and fill
309  auto eta_ref = Monitored::Scalar<float>("val_LReta", jet_eta["leadingOffline_LargeRadiusJet"]);
310  auto passed_eta = Monitored::Scalar<bool>("bool_" + r + "_" + trigger_name, trig_of_interest_decision);
311  fill(m_packageName, eta_ref, passed_eta);
312  //if the trigger passes, we can also add the eta value to a stand alone histogram
313  } //(close IF) jet pt is greater than pt flatline vlaue loop
314  } //(close IF) loop that checks if the trigger of interest is in list of flatline trigger vals
315 
316  } //(close FOR) loop that iterates through all of the triggers we make effiency curves for
317  } //(close FOR) the iteration that fills effiency histogram for 4 different kinds of refernce triggers
318  } //(close IF) loop that checks if the physical properties were passed for the jet
319 
320  variables.clear();
321  return StatusCode::SUCCESS;
322 }
ReadHandleKey.h
Property holding a SG store/key/clid from which a ReadHandle is made.
beamspotman.r
def r
Definition: beamspotman.py:676
JetEfficiencyMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: JetEfficiencyMonitorAlgorithm.cxx:21
GeV
#define GeV
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/Root/HelperFunctions.cxx:17
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
checkCoolLatestUpdate.variables
variables
Definition: checkCoolLatestUpdate.py:13
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:45
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
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:38
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounce
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)
Definition: AthCommonDataStore.h:380
AthMonitorAlgorithm::getTrigDecisionTool
const ToolHandle< Trig::TrigDecisionTool > & getTrigDecisionTool() const
Get the trigger decision tool member.
Definition: AthMonitorAlgorithm.cxx:189
JetEfficiencyMonitorAlgorithm::m_multiJet_LegacySmallRadiusTriggers
Gaudi::Property< std::vector< std::string > > m_multiJet_LegacySmallRadiusTriggers
Definition: JetEfficiencyMonitorAlgorithm.h:37
JetEfficiencyMonitorAlgorithm::JetEfficiencyMonitorAlgorithm
JetEfficiencyMonitorAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Definition: JetEfficiencyMonitorAlgorithm.cxx:16
empty
bool empty(TH1 *h)
Definition: computils.cxx:295
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
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
P4Helpers::deltaPhi
double deltaPhi(double phiA, double phiB)
delta Phi in range [-pi,pi[
Definition: P4Helpers.h:34
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:46
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.
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
P4Helpers.h
JetEfficiencyMonitorAlgorithm::m_LargeRadiusJetTriggers_phase1
Gaudi::Property< std::vector< std::string > > m_LargeRadiusJetTriggers_phase1
Definition: JetEfficiencyMonitorAlgorithm.h:39
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
JetEfficiencyMonitorAlgorithm::m_HLTrandom_reference_triggers
Gaudi::Property< std::vector< std::string > > m_HLTrandom_reference_triggers
Definition: JetEfficiencyMonitorAlgorithm.h:34
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:38
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
eFEXNTuple.delta_phi
def delta_phi(phi1, phi2)
Definition: eFEXNTuple.py:15
JetEfficiencyMonitorAlgorithm::m_LRjetKey
SG::ReadHandleKey< xAOD::JetContainer > m_LRjetKey
Definition: JetEfficiencyMonitorAlgorithm.h:44
defineDB.jets
list jets
Definition: JetTagCalibration/share/defineDB.py:24
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
pow
constexpr int pow(int base, int exp) noexcept
Definition: ap_fixedTest.cxx:15
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:43
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.