ATLAS Offline Software
HLTCalo_TopoCaloClustersMonitor.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
10 
11 struct clus_kin {
12  double et;
13  double eta;
14  double phi;
16 };
17 
18 HLTCalo_TopoCaloClustersMonitor::HLTCalo_TopoCaloClustersMonitor( const std::string& name, ISvcLocator* pSvcLocator )
19  : AthMonitorAlgorithm(name,pSvcLocator)
20 {
21  declareProperty("HLTContainer", m_HLT_cont_key = "HLT_TopoCaloClustersFS");
22  declareProperty("OFFContainer", m_OFF_cont_key = "CaloCalTopoClusters");
23  declareProperty("MonGroupName", m_mongroup_name = "TrigCaloMonitor");
24  declareProperty("HLTChainsT0", m_hltChainsT0 = "All");
25  declareProperty("HLTTypes", m_HLT_types);
26  declareProperty("OFFTypes", m_OFF_types);
27  declareProperty("HLThighET", m_HLT_high_et = 5000.0);
28  declareProperty("HLTMinET", m_HLT_min_et = -1.0);
29  declareProperty("OFFMinET", m_OFF_min_et = -1.0);
30  declareProperty("MatchType", m_match_types = false);
31  declareProperty("DoLC", m_doLC = false);
32  declareProperty("MaxDeltaR", m_max_delta_r = 0.04);
33 }
34 
35 
37 
38 
43  ATH_CHECK( m_eventInfoDecorKey.initialize() );
44 
46 }
47 
48 
50  using namespace Monitored;
51 
52  // Protect against noise bursts
54  ATH_CHECK(thisEvent.isValid());
55 
57  return StatusCode::SUCCESS;
58 
59  // Protect against HLT truncated results
60  if (m_trigDecTool->ExperimentalAndExpertMethods().isHLTTruncated()){
61  ATH_MSG_WARNING("HLTResult truncated, skipping event");
62  return StatusCode::SUCCESS;
63  }
64 
65  // Get HLT cluster collections
67  if (! hltCluster_readHandle.isValid() ) {
68  ATH_MSG_ERROR("evtStore() does not contain a cluster Collection with key " << m_HLT_cont_key);
69  return StatusCode::FAILURE;
70  }
71 
72  // Get OFF cluster collections
74  if (! offCluster_readHandle.isValid() ) {
75  ATH_MSG_ERROR("evtStore() does not contain a cluster Collection with key " << m_OFF_cont_key);
76  return StatusCode::FAILURE;
77  }
78 
79  // Bunch crossing
80  int bcid = ctx.eventID().bunch_crossing_id();
81  auto HLT_bc = Monitored::Scalar<int>("HLT_bc",-1);
82 
84  if (!bcidHdl.isValid()) {
85  ATH_MSG_ERROR( "Unable to retrieve BunchCrossing conditions object" );
86  return StatusCode::FAILURE;
87  }
88  const BunchCrossingCondData* bcData=*bcidHdl;
89 
92  // Cache expensive et, eta and phi //
93  // calculations for the clusters //
95 
96  // prepare HLT clusters
97  std::vector<clus_kin> vec_hlt_clusters;
98  std::vector<const xAOD::CaloCluster*> accepted_hlt_clusters = ifStepPassed(m_hltChainsT0);
99 
100  // For monitoring signature specific clusters
101  if (accepted_hlt_clusters.size()>0){
102  for (const auto* hlt_cluster : accepted_hlt_clusters) {
103  auto hlt_clus_et = hlt_cluster->et();
104  if (hlt_clus_et < m_HLT_min_et) continue;
105 
106  bool HLT_type_match = false;
107 
108  for (unsigned int n = 0; n < m_HLT_types.size(); ++n) {
109  if (hlt_cluster->clusterSize() == m_HLT_types[n]) { HLT_type_match = true; break; }
110  }
111 
112  if (!m_HLT_types.empty() && !HLT_type_match) continue;
113  vec_hlt_clusters.push_back({hlt_clus_et*0.001, hlt_cluster->eta(), hlt_cluster->phi(), hlt_cluster});
114  }
115  }
116  else{
117  for (const auto hlt_cluster : *hltCluster_readHandle) {
118  auto hlt_clus_et = hlt_cluster->et();
119  if (hlt_clus_et < m_HLT_min_et) continue;
120 
121  bool HLT_type_match = false;
122 
123  for (unsigned int n = 0; n < m_HLT_types.size(); ++n) {
124  if (hlt_cluster->clusterSize() == m_HLT_types[n]) { HLT_type_match = true; break; }
125  }
126 
127  if (!m_HLT_types.empty() && !HLT_type_match) continue;
128  vec_hlt_clusters.push_back({hlt_clus_et*0.001, hlt_cluster->eta(), hlt_cluster->phi(), hlt_cluster});
129  }
130  }
131 
132  // prepare OFF clusters
133  float off_clus_eta = 0;
134  float off_clus_phi = 0;
135  float off_clus_et = 0;
136  std::vector<clus_kin> vec_off_clusters;
137  for (const auto off_cluster : *offCluster_readHandle) {
138  if (m_doLC){
139  off_clus_et = off_cluster->et();
140  off_clus_eta = off_cluster->eta();
141  off_clus_phi = off_cluster->phi();
142  }
143  else{
144  off_clus_et = off_cluster->rawE()/std::cosh(std::abs(off_cluster->rawEta()));
145  off_clus_eta = off_cluster->rawEta();
146  off_clus_phi = off_cluster->rawPhi();
147  }
148  if (off_clus_et < m_OFF_min_et) continue;
149 
150  bool OFF_type_match = false;
151 
152  for (unsigned int n = 0; n < m_OFF_types.size(); ++n) {
153  if (off_cluster->clusterSize() == m_OFF_types[n]) { OFF_type_match = true; break; }
154  }
155 
156  if (!m_OFF_types.empty() && !OFF_type_match) continue;
157  vec_off_clusters.push_back({off_clus_et*0.001, off_clus_eta, off_clus_phi, off_cluster});
158  }
159 
160 
162  // HLT CLUSTERS //
164 
165  unsigned int n_hlt_clusters = 0;
166  unsigned int n_hlt_barrel_high_et_clusters = 0;
167  unsigned int n_hlt_clusters_no_match = 0;
168  unsigned int n_hlt_clusters_with_match = 0;
169 
170  // All HLT clusters
171  auto HLT_num = Monitored::Scalar<int>("HLT_num",0);
172  auto HLT_et = Monitored::Collection("HLT_et", vec_hlt_clusters, &clus_kin::et);
173  auto HLT_eta = Monitored::Collection("HLT_eta", vec_hlt_clusters, &clus_kin::eta);
174  auto HLT_phi = Monitored::Collection("HLT_phi", vec_hlt_clusters, &clus_kin::phi);
175  auto HLT_type = Monitored::Collection("HLT_type", vec_hlt_clusters, []( const clus_kin& clus) { return clus.parent->clusterSize(); } );
176  // nCells is a decorated variable not available for older input files
177  auto HLT_size = Monitored::Collection("HLT_size", vec_hlt_clusters, []( const clus_kin& clus) {
178  static const SG::ConstAccessor<int> nCellsAcc("nCells");
179  return nCellsAcc.withDefault(*clus.parent, 0);
180  });
181  auto HLT_time = Monitored::Collection("HLT_time", vec_hlt_clusters, []( const clus_kin& clus) { return clus.parent->time(); } );
182 
183  // HLT cut masks
184  std::vector<char> vec_hlt_barrel_high_et, vec_hlt_no_off_match, vec_hlt_with_off_match;
185  auto HLT_barrel_high_et = Monitored::Collection("HLT_barrel_high_et", vec_hlt_barrel_high_et);
186  auto HLT_no_OFF_match = Monitored::Collection("HLT_no_OFF_match", vec_hlt_no_off_match);
187  auto HLT_with_OFF_match = Monitored::Collection("HLT_with_OFF_match", vec_hlt_with_off_match);
188 
189  auto HLT_barrel_high_et_num = Monitored::Scalar<int>("HLT_barrel_high_et_num",0);
190  auto HLT_no_OFF_match_num = Monitored::Scalar<int>("HLT_no_OFF_match_num",0);
191  auto HLT_with_OFF_match_num = Monitored::Scalar<int>("HLT_with_OFF_match_num",0);
192 
193  // HLT clusters vs. OFF clusters
194  std::vector<float> vec_hlt_vs_off_minimum_delta_r, vec_hlt_vs_off_delta_eta, vec_hlt_vs_off_delta_phi, vec_hlt_vs_off_delta_time, vec_hlt_vs_off_resolution, vec_off_match_et;
195 
196  auto HLT_matched_fraction = Monitored::Scalar<float>("HLT_matched_fraction", 0.0);
197  auto HLT_vs_OFF_minimum_delta_r = Monitored::Collection("HLT_vs_OFF_minimum_delta_r", vec_hlt_vs_off_minimum_delta_r);
198  auto HLT_vs_OFF_delta_eta = Monitored::Collection("HLT_vs_OFF_delta_eta", vec_hlt_vs_off_delta_eta);
199  auto HLT_vs_OFF_delta_phi = Monitored::Collection("HLT_vs_OFF_delta_phi", vec_hlt_vs_off_delta_phi);
200  auto HLT_vs_OFF_delta_time = Monitored::Collection("HLT_vs_OFF_delta_time", vec_hlt_vs_off_delta_time);
201  auto HLT_vs_OFF_resolution = Monitored::Collection("HLT_vs_OFF_resolution", vec_hlt_vs_off_resolution);
202  auto OFF_match_et = Monitored::Collection("OFF_match_et", vec_off_match_et);
203 
204  const clus_kin *off_match = nullptr; // For matching
205 
206  // Loop over HLT clusters
207 
208  for (const auto& hlt_cluster : vec_hlt_clusters) {
209 
210  ++n_hlt_clusters;
211 
212  // high-ET clusters
213  if (hlt_cluster.et > (m_HLT_high_et * 0.001) && std::abs(hlt_cluster.eta) < 2.5) {
214  ++n_hlt_barrel_high_et_clusters;
215  vec_hlt_barrel_high_et.push_back(1);
216  }
217  else vec_hlt_barrel_high_et.push_back(0);
218 
219  // matching HLT clusters to OFF clusters
220 
221  float min_delta_r = 999999.9;
222 
223  for (const auto& off_cluster : vec_off_clusters) {
224  float delta_r = calculateDeltaR(m_max_delta_r, hlt_cluster.eta, hlt_cluster.phi, off_cluster.eta, off_cluster.phi);
225 
226  if (delta_r < min_delta_r) {
227 
228  min_delta_r = delta_r;
229  off_match = &off_cluster;
230  }
231 
232  } // End loop over OFF clusters
233 
234  vec_hlt_vs_off_minimum_delta_r.push_back(min_delta_r);
235 
236  // No OFF match
237  if (min_delta_r >= m_max_delta_r) {
238 
239  ++n_hlt_clusters_no_match;
240 
241  vec_off_match_et.push_back(0.);
242 
243  vec_hlt_vs_off_resolution.push_back(0.);
244  vec_hlt_vs_off_delta_eta.push_back(0.);
245  vec_hlt_vs_off_delta_phi.push_back(0.);
246  vec_hlt_vs_off_delta_time.push_back(0.);
247 
248  vec_hlt_no_off_match.push_back(1);
249  vec_hlt_with_off_match.push_back(0);
250  }
251 
252  // With OFF match
253  else {
254 
255  ++n_hlt_clusters_with_match;
256 
257  vec_off_match_et.push_back(off_match->et);
258 
259  vec_hlt_vs_off_resolution.push_back(((off_match->et - hlt_cluster.et) / off_match->et) * 100);
260  vec_hlt_vs_off_delta_eta.push_back(off_match->eta - hlt_cluster.eta);
261  vec_hlt_vs_off_delta_phi.push_back(calculateDeltaPhi(off_match->phi, hlt_cluster.phi));
262  vec_hlt_vs_off_delta_time.push_back(off_match->parent->time() - hlt_cluster.parent->time());
263 
264  vec_hlt_no_off_match.push_back(0);
265  vec_hlt_with_off_match.push_back(1);
266  }
267 
268  } // End loop over HLT clusters
269 
270  HLT_num = n_hlt_clusters;
271  HLT_barrel_high_et_num = n_hlt_barrel_high_et_clusters;
272  HLT_no_OFF_match_num = n_hlt_clusters_no_match;
273  HLT_with_OFF_match_num = n_hlt_clusters_with_match;
274  if (n_hlt_clusters>0) {
275  HLT_matched_fraction = static_cast<float>(n_hlt_clusters_with_match) / n_hlt_clusters;
276  }
277 
279  // OFF CLUSTERS //
281 
282  unsigned int n_off_clusters = 0;
283  unsigned int n_off_clusters_no_match = 0;
284  unsigned int n_off_clusters_with_match = 0;
285 
286  // OFF cluster
287  std::vector<float> vec_off_et, vec_off_eta, vec_off_phi, vec_off_time;
288  std::vector<int> vec_off_type;
289 
290  auto OFF_num = Monitored::Scalar<int>("OFF_num",0);
291  auto OFF_et = Monitored::Collection("OFF_et", vec_off_clusters, &clus_kin::et);
292  auto OFF_eta = Monitored::Collection("OFF_eta", vec_off_clusters, &clus_kin::eta);
293  auto OFF_phi = Monitored::Collection("OFF_phi", vec_off_clusters, &clus_kin::phi);
294  auto OFF_time = Monitored::Collection("OFF_time", vec_off_clusters, []( const clus_kin& clus) { return clus.parent->time(); } );
295  auto OFF_type = Monitored::Collection("OFF_type", vec_off_clusters, []( const clus_kin& clus) { return clus.parent->clusterSize(); } );
296 
297  // cut masks
298  std::vector<char> vec_off_no_hlt_match, vec_off_with_hlt_match;
299  auto OFF_no_HLT_match = Monitored::Collection("OFF_no_HLT_match", vec_off_no_hlt_match);
300  auto OFF_with_HLT_match = Monitored::Collection("OFF_with_HLT_match", vec_off_with_hlt_match);
301 
302  auto OFF_no_HLT_match_num = Monitored::Scalar<int>("OFF_no_HLT_match_num",0);
303  auto OFF_with_HLT_match_num = Monitored::Scalar<int>("OFF_with_HLT_match_num",0);
304 
305  // OFF clusters vs. HLT clusters
306  std::vector<float> vec_off_vs_hlt_minimum_delta_r, vec_off_vs_hlt_delta_eta, vec_off_vs_hlt_delta_phi, vec_off_vs_hlt_delta_time, vec_off_vs_hlt_resolution, vec_hlt_match_et;
307 
308  auto OFF_matched_fraction = Monitored::Scalar<float>("OFF_matched_fraction", 0.0);
309  auto OFF_vs_HLT_minimum_delta_r = Monitored::Collection("OFF_vs_HLT_minimum_delta_r", vec_off_vs_hlt_minimum_delta_r);
310  auto OFF_vs_HLT_delta_eta = Monitored::Collection("OFF_vs_HLT_delta_eta", vec_off_vs_hlt_delta_eta);
311  auto OFF_vs_HLT_delta_phi = Monitored::Collection("OFF_vs_HLT_delta_phi", vec_off_vs_hlt_delta_phi);
312  auto OFF_vs_HLT_delta_time = Monitored::Collection("OFF_vs_HLT_delta_time", vec_off_vs_hlt_delta_time);
313  auto OFF_vs_HLT_resolution = Monitored::Collection("OFF_vs_HLT_resolution", vec_off_vs_hlt_resolution);
314  auto HLT_match_et = Monitored::Collection("HLT_match_et", vec_hlt_match_et);
315 
316  const clus_kin *hlt_match = nullptr; // For matching
317 
318  // Loop over OFF clusters
319 
320  for (const auto& off_cluster: vec_off_clusters) {
321 
322  ++n_off_clusters;
323 
324  // matching OFF clusters to HLT clusters
325 
326  float min_delta_r = 999999.9;
327 
328  for (const auto& hlt_cluster : vec_hlt_clusters) {
329 
330  float delta_r = calculateDeltaR(m_max_delta_r, off_cluster.eta, off_cluster.phi, hlt_cluster.eta, hlt_cluster.phi);
331 
332  if (delta_r < min_delta_r) {
333 
334  min_delta_r = delta_r;
335  hlt_match = &hlt_cluster; // avoid HLT double counts?
336  }
337 
338  } // End loop over HLT clusters
339 
340  vec_off_vs_hlt_minimum_delta_r.push_back(min_delta_r);
341 
342  // No HLT match
343  if (min_delta_r >= m_max_delta_r) {
344 
345  ++n_off_clusters_no_match;
346 
347  vec_hlt_match_et.push_back(0.);
348 
349  vec_off_vs_hlt_resolution.push_back(0.);
350  vec_off_vs_hlt_delta_eta.push_back(0.);
351  vec_off_vs_hlt_delta_phi.push_back(0.);
352  vec_off_vs_hlt_delta_time.push_back(0.);
353 
354  vec_off_no_hlt_match.push_back(1);
355  vec_off_with_hlt_match.push_back(0);
356  }
357  // With HLT match
358  else {
359 
360  ++n_off_clusters_with_match;
361 
362  vec_hlt_match_et.push_back(hlt_match->et);
363 
364  vec_off_vs_hlt_resolution.push_back(((off_cluster.et - hlt_match->et) / off_cluster.et) * 100);
365  vec_off_vs_hlt_delta_eta.push_back(off_cluster.eta - hlt_match->eta);
366  vec_off_vs_hlt_delta_phi.push_back(calculateDeltaPhi(off_cluster.phi, hlt_match->phi));
367  vec_off_vs_hlt_delta_time.push_back(off_cluster.parent->time() - hlt_match->parent->time());
368 
369  vec_off_no_hlt_match.push_back(0);
370  vec_off_with_hlt_match.push_back(1);
371  }
372 
373  } // End loop over OFF clusters
374 
375 
376  OFF_num = n_off_clusters;
377  OFF_no_HLT_match_num = n_off_clusters_no_match;
378  OFF_with_HLT_match_num = n_off_clusters_with_match;
379  if (n_off_clusters>0) {
380  OFF_matched_fraction = static_cast<float>(n_off_clusters_with_match) / n_off_clusters;
381  }
382  const std::string chain = m_hltChainsT0;
383 
384  if(m_hltChainsT0 != "All"){
385  if(accepted_hlt_clusters.size()>0){
386  ATH_MSG_DEBUG("Filling for : "<<m_hltChainsT0);
387 
389  // HLT clusters
390  HLT_num, HLT_et, HLT_eta, HLT_phi, HLT_time, HLT_type, HLT_size, HLT_barrel_high_et_num, HLT_bc,
391 
392  // HLT cutmasks
393  HLT_barrel_high_et, HLT_no_OFF_match, HLT_with_OFF_match,
394 
395  // OFF clusters
396  OFF_num, OFF_et, OFF_eta, OFF_phi, OFF_time, OFF_type,
397 
398  // OFF cutmasks
399  OFF_no_HLT_match, OFF_with_HLT_match,
400 
401  // HLT matched to OFF
402  HLT_matched_fraction, HLT_no_OFF_match_num, HLT_vs_OFF_minimum_delta_r, HLT_with_OFF_match_num,
403  OFF_match_et, HLT_vs_OFF_resolution, HLT_vs_OFF_delta_eta, HLT_vs_OFF_delta_phi, HLT_vs_OFF_delta_time,
404 
405  // OFF matched to HLT
406  OFF_matched_fraction, OFF_no_HLT_match_num, OFF_vs_HLT_minimum_delta_r, OFF_with_HLT_match_num,
407  HLT_match_et, OFF_vs_HLT_resolution, OFF_vs_HLT_delta_eta, OFF_vs_HLT_delta_phi, OFF_vs_HLT_delta_time
408  );
409 
410  }
411  else if(getTrigDecisionTool()->isPassed(m_hltChainsT0)){
412  ATH_MSG_DEBUG("Filling for : "<<m_hltChainsT0);
414  // HLT clusters
415  HLT_num, HLT_et, HLT_eta, HLT_phi, HLT_time, HLT_type, HLT_size, HLT_barrel_high_et_num, HLT_bc,
416 
417  // HLT cutmasks
418  HLT_barrel_high_et, HLT_no_OFF_match, HLT_with_OFF_match,
419 
420  // OFF clusters
421  OFF_num, OFF_et, OFF_eta, OFF_phi, OFF_time, OFF_type,
422 
423  // OFF cutmasks
424  OFF_no_HLT_match, OFF_with_HLT_match,
425 
426  // HLT matched to OFF
427  HLT_matched_fraction, HLT_no_OFF_match_num, HLT_vs_OFF_minimum_delta_r, HLT_with_OFF_match_num,
428  OFF_match_et, HLT_vs_OFF_resolution, HLT_vs_OFF_delta_eta, HLT_vs_OFF_delta_phi, HLT_vs_OFF_delta_time,
429 
430  // OFF matched to HLT
431  OFF_matched_fraction, OFF_no_HLT_match_num, OFF_vs_HLT_minimum_delta_r, OFF_with_HLT_match_num,
432  HLT_match_et, OFF_vs_HLT_resolution, OFF_vs_HLT_delta_eta, OFF_vs_HLT_delta_phi, OFF_vs_HLT_delta_time
433  );
434  }
435  }
436  else {
437  ATH_MSG_DEBUG("Filling for : "<<m_hltChainsT0);
439  // HLT clusters
440  HLT_num, HLT_et, HLT_eta, HLT_phi, HLT_time, HLT_type, HLT_size, HLT_barrel_high_et_num, HLT_bc,
441 
442  // HLT cutmasks
443  HLT_barrel_high_et, HLT_no_OFF_match, HLT_with_OFF_match,
444 
445  // OFF clusters
446  OFF_num, OFF_et, OFF_eta, OFF_phi, OFF_time, OFF_type,
447 
448  // OFF cutmasks
449  OFF_no_HLT_match, OFF_with_HLT_match,
450 
451  // HLT matched to OFF
452  HLT_matched_fraction, HLT_no_OFF_match_num, HLT_vs_OFF_minimum_delta_r, HLT_with_OFF_match_num,
453  OFF_match_et, HLT_vs_OFF_resolution, HLT_vs_OFF_delta_eta, HLT_vs_OFF_delta_phi, HLT_vs_OFF_delta_time,
454 
455  // OFF matched to HLT
456  OFF_matched_fraction, OFF_no_HLT_match_num, OFF_vs_HLT_minimum_delta_r, OFF_with_HLT_match_num,
457  HLT_match_et, OFF_vs_HLT_resolution, OFF_vs_HLT_delta_eta, OFF_vs_HLT_delta_phi, OFF_vs_HLT_delta_time
458  );
459 
460  }
461  return StatusCode::SUCCESS;
462 }
463 
464 
465 float HLTCalo_TopoCaloClustersMonitor::calculateDeltaR( float max_deltar, float eta_1, float phi_1, float eta_2, float phi_2 ) const {
466  // reject the match as early as possible to avoid the expensive delta r calculation
467  if (std::abs(eta_1-eta_2) > max_deltar) return 99.9;
468  double DeltaPhi = calculateDeltaPhi(phi_1, phi_2);
469  if (DeltaPhi > max_deltar) return 99.9;
470  return sqrt( ((eta_1-eta_2)*(eta_1-eta_2)) + (DeltaPhi*DeltaPhi) );
471 }
472 
473 float HLTCalo_TopoCaloClustersMonitor::calculateDeltaPhi( float phi_1, float phi_2 ) const {
474  return std::abs( std::abs( std::abs( phi_1 - phi_2 ) - TMath::Pi() ) - TMath::Pi() );
475 }
476 
477 std::vector<const xAOD::CaloCluster*> HLTCalo_TopoCaloClustersMonitor::ifStepPassed(const std::string& chain) const{
478  Trig::FeatureRequestDescriptor featureRequestDescriptor;
479  featureRequestDescriptor.setChainGroup(chain);
480  featureRequestDescriptor.setCondition(TrigDefs::includeFailedDecisions);
481  std::vector<TrigCompositeUtils::LinkInfo<xAOD::CaloClusterContainer>> fVec = getTrigDecisionTool()->features<xAOD::CaloClusterContainer>(featureRequestDescriptor);
482  std::vector<const xAOD::CaloCluster*> clustersToMonitorForChain;
485  clustersToMonitorForChain.push_back( *(f.link) );
486  }
487  }
488  ATH_MSG_DEBUG("clustersToMonitorForChain.size(): "<<clustersToMonitorForChain.size());
489  for(auto &p: clustersToMonitorForChain)
490  ATH_MSG_DEBUG("clustersToMonitorForChain->et(): "<<p->et());
491  return clustersToMonitorForChain;
492 }
493 
494 
Trig::FeatureRequestDescriptor::setCondition
FeatureRequestDescriptor & setCondition(const unsigned int condition)
Set the Condition: TrigDefs::Physics - (default), only returns features from paths through the naviga...
Definition: FeatureRequestDescriptor.cxx:79
HLTCalo_TopoCaloClustersMonitor::m_max_delta_r
float m_max_delta_r
Definition: HLTCalo_TopoCaloClustersMonitor.h:45
clus_kin::et
double et
Definition: HLTCalo_L2CaloEMClustersMonitor.cxx:12
Trig::FeatureRequestDescriptor
Definition: TrigAnalysisHelpers/TrigAnalysisHelpers/FeatureRequestDescriptor.h:32
HLTCalo_TopoCaloClustersMonitor::m_match_types
bool m_match_types
Definition: HLTCalo_TopoCaloClustersMonitor.h:43
HLTCalo_TopoCaloClustersMonitor::m_OFF_types
std::vector< int > m_OFF_types
Definition: HLTCalo_TopoCaloClustersMonitor.h:42
clus_kin::eta
double eta
Definition: HLTCalo_L2CaloEMClustersMonitor.cxx:13
BunchCrossingCondData
Definition: BunchCrossingCondData.h:23
clus_kin::parent
T parent
Definition: HLTCalo_L2CaloEMClustersMonitor.cxx:15
runLayerRecalibration.chain
chain
Definition: runLayerRecalibration.py:175
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
AthMonitorAlgorithm::m_trigDecTool
PublicToolHandle< Trig::TrigDecisionTool > m_trigDecTool
Tool to tell whether a specific trigger is passed.
Definition: AthMonitorAlgorithm.h:340
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
Trig::FeatureRequestDescriptor::setChainGroup
FeatureRequestDescriptor & setChainGroup(const std::string &chainGroupName)
Set the desired Chain or Chain Group.
Definition: FeatureRequestDescriptor.cxx:73
AthMonitorAlgorithm::getTrigDecisionTool
const ToolHandle< Trig::TrigDecisionTool > & getTrigDecisionTool() const
Get the trigger decision tool member.
Definition: AthMonitorAlgorithm.cxx:194
HLTCalo_TopoCaloClustersMonitor::m_hltChainsT0
std::string m_hltChainsT0
Definition: HLTCalo_TopoCaloClustersMonitor.h:34
SG::ReadCondHandle::isValid
bool isValid()
Definition: ReadCondHandle.h:210
TrigDecisionTool.h
HLTCalo_TopoCaloClustersMonitor::m_OFF_min_et
float m_OFF_min_et
Definition: HLTCalo_TopoCaloClustersMonitor.h:40
SG::ConstAccessor< int >
xAOD::EventInfo_v1::LAr
@ LAr
The LAr calorimeter.
Definition: EventInfo_v1.h:335
HLTCalo_TopoCaloClustersMonitor::m_HLT_types
std::vector< int > m_HLT_types
Definition: HLTCalo_TopoCaloClustersMonitor.h:41
HLTCalo_TopoCaloClustersMonitor::fillHistograms
virtual StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
Definition: HLTCalo_TopoCaloClustersMonitor.cxx:49
LArEventBitInfo.h
Monitored::Collection
ValuesCollection< T > Collection(std::string name, const T &collection)
Declare a monitored (double-convertible) collection.
Definition: MonitoredCollection.h:38
HLTCalo_TopoCaloClustersMonitor::m_mongroup_name
std::string m_mongroup_name
Definition: HLTCalo_TopoCaloClustersMonitor.h:37
AthMonitorAlgorithm
Base class for Athena Monitoring Algorithms.
Definition: AthMonitorAlgorithm.h:36
LArEventBitInfo::NOISEBURSTVETO
@ NOISEBURSTVETO
Definition: LArEventBitInfo.h:13
xAOD::CaloCluster_v1
Description of a calorimeter cluster.
Definition: CaloCluster_v1.h:62
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:209
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
clus_kin::phi
double phi
Definition: HLTCalo_L2CaloEMClustersMonitor.cxx:14
HLTCalo_TopoCaloClustersMonitor::~HLTCalo_TopoCaloClustersMonitor
virtual ~HLTCalo_TopoCaloClustersMonitor()
Definition: HLTCalo_TopoCaloClustersMonitor.cxx:36
Monitored
Generic monitoring tool for athena components.
Definition: GenericMonitoringTool.h:28
beamspotman.n
n
Definition: beamspotman.py:727
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
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition: AthCommonDataStore.h:145
HLTCalo_TopoCaloClustersMonitor::calculateDeltaPhi
virtual float calculateDeltaPhi(float phi_1, float phi_2) const
Definition: HLTCalo_TopoCaloClustersMonitor.cxx:473
HLTCalo_TopoCaloClustersMonitor::m_HLT_cont_key
SG::ReadHandleKey< xAOD::CaloClusterContainer > m_HLT_cont_key
Definition: HLTCalo_TopoCaloClustersMonitor.h:32
BunchCrossingCondData::BunchCrossings
@ BunchCrossings
Distance in units of 25 nanoseconds.
Definition: BunchCrossingCondData.h:132
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
HLTCalo_TopoCaloClustersMonitor::m_doLC
bool m_doLC
Definition: HLTCalo_TopoCaloClustersMonitor.h:44
hist_file_dump.f
f
Definition: hist_file_dump.py:140
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
HLTCalo_TopoCaloClustersMonitor::initialize
virtual StatusCode initialize() override
initialize
Definition: HLTCalo_TopoCaloClustersMonitor.cxx:39
AthMonitorAlgorithm::GetEventInfo
SG::ReadHandle< xAOD::EventInfo > GetEventInfo(const EventContext &) const
Return a ReadHandle for an EventInfo object (get run/event numbers, etc.)
Definition: AthMonitorAlgorithm.cxx:107
DataVector
Derived DataVector<T>.
Definition: DataVector.h:795
HLTCalo_TopoCaloClustersMonitor::m_HLT_min_et
float m_HLT_min_et
Definition: HLTCalo_TopoCaloClustersMonitor.h:39
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
HLTCalo_TopoCaloClustersMonitor::HLTCalo_TopoCaloClustersMonitor
HLTCalo_TopoCaloClustersMonitor(const std::string &name, ISvcLocator *pSvcLocator)
Definition: HLTCalo_TopoCaloClustersMonitor.cxx:18
BunchCrossingCondData::distanceFromFront
int distanceFromFront(const bcid_type bcid, const BunchDistanceType type=NanoSec) const
The distance of the specific bunch crossing from the front of the train.
Definition: BunchCrossingCondData.cxx:38
HLTCalo_TopoCaloClustersMonitor::m_HLT_high_et
float m_HLT_high_et
Definition: HLTCalo_TopoCaloClustersMonitor.h:38
HLTCalo_TopoCaloClustersMonitor::ifStepPassed
std::vector< const xAOD::CaloCluster * > ifStepPassed(const std::string &chain) const
Definition: HLTCalo_TopoCaloClustersMonitor.cxx:477
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
xAOD::bcid
setEventNumber setTimeStamp bcid
Definition: EventInfo_v1.cxx:133
HLTCalo_TopoCaloClustersMonitor::m_bunchCrossingKey
SG::ReadCondHandleKey< BunchCrossingCondData > m_bunchCrossingKey
Definition: HLTCalo_TopoCaloClustersMonitor.h:30
HLTCalo_TopoCaloClustersMonitor::m_eventInfoDecorKey
SG::ReadDecorHandleKey< xAOD::EventInfo > m_eventInfoDecorKey
Definition: HLTCalo_TopoCaloClustersMonitor.h:31
HLTCalo_TopoCaloClustersMonitor::calculateDeltaR
virtual float calculateDeltaR(float max_deltar, float eta_1, float phi_1, float eta_2, float phi_2) const
Definition: HLTCalo_TopoCaloClustersMonitor.cxx:465
AthMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: AthMonitorAlgorithm.cxx:18
TrigCompositeUtils::LinkInfo
Helper to keep a Decision object, ElementLink and ActiveState (with respect to some requested ChainGr...
Definition: LinkInfo.h:29
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
clus_kin::parent
const xAOD::CaloCluster * parent
Definition: HLTCalo_TopoCaloClustersMonitor.cxx:15
xAOD::EventInfo_v1::isEventFlagBitSet
bool isEventFlagBitSet(EventFlagSubDet subDet, size_t bit) const
Check one particular bit of one particular sub-detector.
Definition: EventInfo_v1.cxx:703
ReadDecorHandle.h
Handle class for reading a decoration on an object.
ACTIVE
@ ACTIVE
Definition: ZdcID.h:21
ConstAccessor.h
Helper class to provide constant type-safe access to aux data.
Monitored::Scalar
Declare a monitored scalar variable.
Definition: MonitoredScalar.h:34
HLTCalo_TopoCaloClustersMonitor.h
clus_kin
Definition: HLTCalo_L2CaloEMClustersMonitor.cxx:11
SG::ConstAccessor::withDefault
const_reference_type withDefault(const ELT &e, const T &deflt) const
Fetch the variable for one element, as a const reference, with a default.
HLTCalo_TopoCaloClustersMonitor::m_OFF_cont_key
SG::ReadHandleKey< xAOD::CaloClusterContainer > m_OFF_cont_key
Definition: HLTCalo_TopoCaloClustersMonitor.h:33