ATLAS Offline Software
TrigTauMonitorBaseAlgorithm.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef TRIGTAUMONITORING_TRIGTAUMONITORBASEALGORITHM_H
6 #define TRIGTAUMONITORING_TRIGTAUMONITORBASEALGORITHM_H
7 
9 
12 
15 
17 
18 #include "Gaudi/Parsers/Factory.h" // Needed to declare less common Property types
19 #include "GaudiKernel/SystemOfUnits.h"
20 #include "CxxUtils/phihelper.h"
21 
23 
25 public:
26  TrigTauMonitorBaseAlgorithm(const std::string& name, ISvcLocator* pSvcLocator);
27  virtual StatusCode initialize() override;
28  virtual StatusCode fillHistograms(const EventContext& ctx) const override;
29 
30 protected:
31  // List of triggers from menu (before duplicate filtering)
32  Gaudi::Property<std::vector<std::string>> m_triggers{this, "TriggerList", {}};
33 
34  // Phase1 L1 tau threshold information
35  Gaudi::Property<std::map<std::string, float>> m_L1_Phase1_thresholds{this, "L1Phase1Thresholds", {}};
36  Gaudi::Property<std::map<std::string, uint64_t>> m_L1_Phase1_threshold_patterns{this, "L1Phase1ThresholdPatterns", {}};
37  Gaudi::Property<bool> m_L1_select_by_et_only{this, "SelectL1ByETOnly", false};
38 
39  // Toggle efficiency and variable plots
40  Gaudi::Property<bool> m_do_efficiency_plots{this, "DoEfficiencyPlots", true};
41  Gaudi::Property<bool> m_do_variable_plots{this, "DoVariablePlots", true};
42 
43  // TrigTauInfo objects, containing all information from each trigger
44  inline std::map<std::string, TrigTauInfo>& getTrigInfoMap() { return m_trigInfo; }
45  inline const TrigTauInfo& getTrigInfo(const std::string& trigger) const { return m_trigInfo.at(trigger); }
46 
47  // Get online 0P, 1P and MP TauJets
48  std::vector<const xAOD::TauJet*> getOnlineTausAll(const std::string& trigger, bool include_0P=true) const;
49  std::tuple<std::vector<const xAOD::TauJet*>, std::vector<const xAOD::TauJet*>, std::vector<const xAOD::TauJet*>> getOnlineTaus(const std::string& trigger) const;
50 
51  // Get offline 1P and 3P TauJet objects that pass the quality selection cuts
52  std::vector<const xAOD::TauJet*> getOfflineTausAll(const EventContext& ctx, const float threshold = 20.0) const;
53  std::pair<std::vector<const xAOD::TauJet*>, std::vector<const xAOD::TauJet*>> getOfflineTaus(const EventContext& ctx, const float threshold = 20.0) const;
54 
55  // Get L1 RoIs
56  std::vector<const xAOD::eFexTauRoI*> getL1eTAUs(const EventContext& ctx, const std::string& l1_item) const;
57  std::vector<const xAOD::jFexTauRoI*> getL1jTAUs(const EventContext& ctx, const std::string& l1_item) const;
58  std::vector<std::pair<const xAOD::eFexTauRoI*, const xAOD::jFexTauRoI*>> getL1cTAUs(const EventContext& ctx, const std::string& l1_item) const;
59  std::vector<const xAOD::EmTauRoI*> getL1LegacyTAUs(const EventContext& ctx, const std::string& l1_item) const;
60 
61  // Process event, after bad event cleaning
62  virtual StatusCode processEvent(const EventContext& ctx) const = 0;
63 
64  // Helper functions
65  inline double dR(const double eta1, const double phi1, const double eta2, const double phi2) const
66  {
67  double deta = std::fabs(eta1 - eta2);
68  double dphi = std::fabs(CxxUtils::wrapToPi(phi1-phi2));
69  return std::sqrt(deta*deta + dphi*dphi);
70  }
71 
72  template <typename T1 = xAOD::IParticle, typename T2 = xAOD::IParticle>
73  inline bool matchObjects(const T1* tau, const std::vector<const T2*>& tau_vec, float threshold) const
74  {
75  for(auto tau_2 : tau_vec) {
76  if(tau->p4().DeltaR(tau_2->p4()) < threshold) return true;
77  }
78  return false;
79  }
80 
81  inline bool matchObjects(const TLorentzVector& tau, const std::vector<TLorentzVector>& tau_vec, float threshold) const
82  {
83  for(auto& tau_2 : tau_vec) {
84  if(tau.DeltaR(tau_2) < threshold) return true;
85  }
86  return false;
87  }
88 
89  template <typename T1 = xAOD::IParticle, typename T2 = xAOD::eFexTauRoI>
90  inline bool matchObjects(const T1* tau_1, const T2* tau_2, float threshold) const
91  {
92  return dR(tau_1->eta(), tau_1->phi(), tau_2->eta(), tau_2->phi()) < threshold;
93  }
94 
95  std::vector<const xAOD::TauJet*> classifyTausAll(const std::vector<const xAOD::TauJet*>& taus, const float threshold = 0.0) const;
96  std::pair<std::vector<const xAOD::TauJet*>, std::vector<const xAOD::TauJet*>> classifyOfflineTaus(const std::vector<const xAOD::TauJet*>& taus, const float threshold = 0.0) const;
97  std::tuple<std::vector<const xAOD::TauJet*>, std::vector<const xAOD::TauJet*>, std::vector<const xAOD::TauJet*>> classifyOnlineTaus(const std::vector<const xAOD::TauJet*>& taus, const float threshold = 0.0) const;
98 
99  private:
100  std::map<std::string, TrigTauInfo> m_trigInfo; // TauTrigInfo cache
101 
102 
103  // StorageGate keys
104  SG::ReadDecorHandleKey<xAOD::EventInfo> m_eventInfoDecorKey{this, "LArStatusFlag", "EventInfo.larFlags", "Key for EventInfo object"}; // To get data-dependencies right
105 
106  SG::ReadHandleKey<xAOD::TauJetContainer> m_offlineTauJetKey{this, "OfflineTauJetKey", "TauJets", "Offline taujet container key"};
107 
108  SG::ReadHandleKey<xAOD::EmTauRoIContainer> m_legacyl1TauRoIKey{ this, "LegacyL1TauRoIKey", "LVL1EmTauRoIs", "Tau Legacy L1 RoI key"};
109  SG::ReadHandleKey<xAOD::eFexTauRoIContainer> m_phase1l1eTauRoIKey{this, "Phase1L1eTauRoIKey", "L1_eTauRoI", "eTau Phase1 L1 RoI key"};
110  SG::ReadDecorHandleKey<xAOD::eFexTauRoIContainer> m_phase1l1eTauRoIThresholdPatternsKey{this, "Phase1L1eTauRoIThresholdPatternsKey", "L1_eTauRoI.thresholdPatterns", "Decoration for the threshold patterns for the eTau RoIs"};
111  SG::ReadHandleKey<xAOD::jFexTauRoIContainer> m_phase1l1jTauRoIKey{this, "Phase1L1jTauRoIKey", "L1_jFexTauRoI", "jTau Phase1 L1 RoI key"};
112  SG::ReadDecorHandleKey<xAOD::jFexTauRoIContainer> m_phase1l1jTauRoIThresholdPatternsKey{this, "Phase1L1jTauRoIThresholdPatternsKey", "L1_jFexTauRoI.thresholdPatterns", "Decoration for the threshold patterns for the jTau RoIs"};
113  SG::ReadHandleKey<xAOD::eFexTauRoIContainer> m_phase1l1cTauRoIKey{this, "Phase1L1cTauRoIKey", "L1_cTauRoI", "cTau Phase1 L1 RoI key"};
114  SG::ReadDecorHandleKey<xAOD::eFexTauRoIContainer> m_phase1l1cTauRoIDecorKey{this, "Phase1L1cTauRoIjTauRoILinkKey", "L1_cTauRoI.jTauLink", "Decoration for the link from eTau to the matching jTau"};
115  SG::ReadDecorHandleKey<xAOD::eFexTauRoIContainer> m_phase1l1cTauRoIThresholdPatternsKey{this, "Phase1L1cTauRoIThresholdPatternsKey", "L1_cTauRoI.thresholdPatterns", "Decoration for the threshold patterns for the cTau RoIs"};
116 
117  SG::ReadHandleKey<xAOD::TauJetContainer> m_hltTauJetKey{this, "HLTTauJetKey", "HLT_TrigTauRecMerged_MVA", "HLT tracktwoMVA taujet container key"};
118  SG::ReadHandleKey<xAOD::TauJetContainer> m_hltTauJetLLPKey{this, "HLTTauJetLLPKey", "HLT_TrigTauRecMerged_LLP", "HLT tracktwoLLP taujet container key"};
119  SG::ReadHandleKey<xAOD::TauJetContainer> m_hltTauJetLRTKey{this, "HLTTauJetLRTKey", "HLT_TrigTauRecMerged_LRT", "HLT trackLRT taujet container key"};
120  SG::ReadHandleKey<xAOD::TauJetContainer> m_hltTauJetCaloMVAOnlyKey{this, "HLTTauJetCaloMVAOnlyKey", "HLT_TrigTauRecMerged_CaloMVAOnly", "HLT ptonly taujet container key"};
121 
123 
124 };
125 
126 #endif
TrigTauMonitorBaseAlgorithm::matchObjects
bool matchObjects(const TLorentzVector &tau, const std::vector< TLorentzVector > &tau_vec, float threshold) const
Definition: TrigTauMonitorBaseAlgorithm.h:81
TrigTauMonitorBaseAlgorithm::m_hltTauJetKey
SG::ReadHandleKey< xAOD::TauJetContainer > m_hltTauJetKey
Definition: TrigTauMonitorBaseAlgorithm.h:117
TrigTauMonitorBaseAlgorithm::matchObjects
bool matchObjects(const T1 *tau_1, const T2 *tau_2, float threshold) const
Definition: TrigTauMonitorBaseAlgorithm.h:90
ReadDecorHandleKey.h
Property holding a SG store/key/clid/attr name from which a ReadDecorHandle is made.
ParticleGun_SamplingFraction.eta2
eta2
Definition: ParticleGun_SamplingFraction.py:96
TrigTauMonitorBaseAlgorithm::m_trigInfo
std::map< std::string, TrigTauInfo > m_trigInfo
Definition: TrigTauMonitorBaseAlgorithm.h:100
TrigTauMonitorBaseAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: TrigTauMonitorBaseAlgorithm.cxx:16
TrigTauMonitorBaseAlgorithm::m_phase1l1jTauRoIThresholdPatternsKey
SG::ReadDecorHandleKey< xAOD::jFexTauRoIContainer > m_phase1l1jTauRoIThresholdPatternsKey
Definition: TrigTauMonitorBaseAlgorithm.h:112
CxxUtils::wrapToPi
T wrapToPi(T phi)
Wrap angle in radians to [-pi, pi].
Definition: phihelper.h:24
TrigTauMonitorBaseAlgorithm::m_phase1l1eTauRoIKey
SG::ReadHandleKey< xAOD::eFexTauRoIContainer > m_phase1l1eTauRoIKey
Definition: TrigTauMonitorBaseAlgorithm.h:109
eFexTauRoIContainer.h
TrigTauMonitorBaseAlgorithm::getTrigInfoMap
std::map< std::string, TrigTauInfo > & getTrigInfoMap()
Definition: TrigTauMonitorBaseAlgorithm.h:44
TrigTauMonitorBaseAlgorithm::getL1cTAUs
std::vector< std::pair< const xAOD::eFexTauRoI *, const xAOD::jFexTauRoI * > > getL1cTAUs(const EventContext &ctx, const std::string &l1_item) const
Definition: TrigTauMonitorBaseAlgorithm.cxx:189
TrigTauMonitorBaseAlgorithm::m_phase1l1cTauRoIDecorKey
SG::ReadDecorHandleKey< xAOD::eFexTauRoIContainer > m_phase1l1cTauRoIDecorKey
Definition: TrigTauMonitorBaseAlgorithm.h:114
TrigTauMonitorBaseAlgorithm::classifyOnlineTaus
std::tuple< std::vector< const xAOD::TauJet * >, std::vector< const xAOD::TauJet * >, std::vector< const xAOD::TauJet * > > classifyOnlineTaus(const std::vector< const xAOD::TauJet * > &taus, const float threshold=0.0) const
Definition: TrigTauMonitorBaseAlgorithm.cxx:317
xAOD::eta1
setEt setPhi setE277 setWeta2 eta1
Definition: TrigEMCluster_v1.cxx:41
TrigTauMonitorBaseAlgorithm::classifyTausAll
std::vector< const xAOD::TauJet * > classifyTausAll(const std::vector< const xAOD::TauJet * > &taus, const float threshold=0.0) const
Definition: TrigTauMonitorBaseAlgorithm.cxx:304
TrigTauMonitorBaseAlgorithm::m_L1_select_by_et_only
Gaudi::Property< bool > m_L1_select_by_et_only
Definition: TrigTauMonitorBaseAlgorithm.h:37
TrigTauMonitorBaseAlgorithm::m_phase1l1eTauRoIThresholdPatternsKey
SG::ReadDecorHandleKey< xAOD::eFexTauRoIContainer > m_phase1l1eTauRoIThresholdPatternsKey
Definition: TrigTauMonitorBaseAlgorithm.h:110
TrigTauMonitorBaseAlgorithm::getL1eTAUs
std::vector< const xAOD::eFexTauRoI * > getL1eTAUs(const EventContext &ctx, const std::string &l1_item) const
Definition: TrigTauMonitorBaseAlgorithm.cxx:125
SG::ReadHandleKey
Property holding a SG store/key/clid from which a ReadHandle is made.
Definition: StoreGate/StoreGate/ReadHandleKey.h:39
jFexTauRoIContainer.h
TrigTauMonitorBaseAlgorithm::m_L1_Phase1_thresholds
Gaudi::Property< std::map< std::string, float > > m_L1_Phase1_thresholds
Definition: TrigTauMonitorBaseAlgorithm.h:35
TrigTauMonitorBaseAlgorithm::m_do_variable_plots
Gaudi::Property< bool > m_do_variable_plots
Definition: TrigTauMonitorBaseAlgorithm.h:41
AthMonitorAlgorithm
Base class for Athena Monitoring Algorithms.
Definition: AthMonitorAlgorithm.h:36
TrigTauMonitorBaseAlgorithm::m_phase1l1jTauRoIKey
SG::ReadHandleKey< xAOD::jFexTauRoIContainer > m_phase1l1jTauRoIKey
Definition: TrigTauMonitorBaseAlgorithm.h:111
TrigTauMonitorBaseAlgorithm::getOnlineTausAll
std::vector< const xAOD::TauJet * > getOnlineTausAll(const std::string &trigger, bool include_0P=true) const
Definition: TrigTauMonitorBaseAlgorithm.cxx:55
TrigTauMonitorBaseAlgorithm::classifyOfflineTaus
std::pair< std::vector< const xAOD::TauJet * >, std::vector< const xAOD::TauJet * > > classifyOfflineTaus(const std::vector< const xAOD::TauJet * > &taus, const float threshold=0.0) const
Definition: TrigTauMonitorBaseAlgorithm.cxx:336
TrigTauMonitorBaseAlgorithm::m_L1_Phase1_threshold_patterns
Gaudi::Property< std::map< std::string, uint64_t > > m_L1_Phase1_threshold_patterns
Definition: TrigTauMonitorBaseAlgorithm.h:36
TrigTauMonitorBaseAlgorithm::m_legacyl1TauRoIKey
SG::ReadHandleKey< xAOD::EmTauRoIContainer > m_legacyl1TauRoIKey
Definition: TrigTauMonitorBaseAlgorithm.h:108
TrigTauMonitorBaseAlgorithm::TrigTauMonitorBaseAlgorithm
TrigTauMonitorBaseAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Definition: TrigTauMonitorBaseAlgorithm.cxx:11
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AthMonitorAlgorithm.h
TrigTauMonitorBaseAlgorithm::getOfflineTaus
std::pair< std::vector< const xAOD::TauJet * >, std::vector< const xAOD::TauJet * > > getOfflineTaus(const EventContext &ctx, const float threshold=20.0) const
Definition: TrigTauMonitorBaseAlgorithm.cxx:119
TrigTauMonitorBaseAlgorithm::m_phase1l1cTauRoIKey
SG::ReadHandleKey< xAOD::eFexTauRoIContainer > m_phase1l1cTauRoIKey
Definition: TrigTauMonitorBaseAlgorithm.h:113
TauJetContainer.h
Monitored.h
Header file to be included by clients of the Monitored infrastructure.
TrigTauMonitorBaseAlgorithm::dR
double dR(const double eta1, const double phi1, const double eta2, const double phi2) const
Definition: TrigTauMonitorBaseAlgorithm.h:65
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
threshold
Definition: chainparser.cxx:74
TrigTauMonitorBaseAlgorithm
Definition: TrigTauMonitorBaseAlgorithm.h:24
phihelper.h
Helper for azimuthal angle calculations.
TrigTauMonitorBaseAlgorithm::m_do_efficiency_plots
Gaudi::Property< bool > m_do_efficiency_plots
Definition: TrigTauMonitorBaseAlgorithm.h:40
TrigTauMonitorBaseAlgorithm::m_offlineTauJetKey
SG::ReadHandleKey< xAOD::TauJetContainer > m_offlineTauJetKey
Definition: TrigTauMonitorBaseAlgorithm.h:106
TrigTauMonitorBaseAlgorithm::fillHistograms
virtual StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
Definition: TrigTauMonitorBaseAlgorithm.cxx:277
TrigTauInfo
Definition: TrigTauInfo.h:15
TrigTauMonitorBaseAlgorithm::m_hltTauJetCaloMVAOnlyKey
SG::ReadHandleKey< xAOD::TauJetContainer > m_hltTauJetCaloMVAOnlyKey
Definition: TrigTauMonitorBaseAlgorithm.h:120
TrigTauMonitorBaseAlgorithm::processEvent
virtual StatusCode processEvent(const EventContext &ctx) const =0
TrigTauMonitorBaseAlgorithm::getL1jTAUs
std::vector< const xAOD::jFexTauRoI * > getL1jTAUs(const EventContext &ctx, const std::string &l1_item) const
Definition: TrigTauMonitorBaseAlgorithm.cxx:157
TrigTauMonitorBaseAlgorithm::matchObjects
bool matchObjects(const T1 *tau, const std::vector< const T2 * > &tau_vec, float threshold) const
Definition: TrigTauMonitorBaseAlgorithm.h:73
TrigTauMonitorBaseAlgorithm::getL1LegacyTAUs
std::vector< const xAOD::EmTauRoI * > getL1LegacyTAUs(const EventContext &ctx, const std::string &l1_item) const
Definition: TrigTauMonitorBaseAlgorithm.cxx:233
TrigTauInfo.h
TrigTauMonitorBaseAlgorithm::m_phase1l1cTauRoIThresholdPatternsKey
SG::ReadDecorHandleKey< xAOD::eFexTauRoIContainer > m_phase1l1cTauRoIThresholdPatternsKey
Definition: TrigTauMonitorBaseAlgorithm.h:115
TrigTauMonitorBaseAlgorithm::m_triggers
Gaudi::Property< std::vector< std::string > > m_triggers
Definition: TrigTauMonitorBaseAlgorithm.h:32
TrigTauMonitorBaseAlgorithm::getOnlineContainerKey
const SG::ReadHandleKey< xAOD::TauJetContainer > & getOnlineContainerKey(const std::string &trigger) const
Definition: TrigTauMonitorBaseAlgorithm.cxx:263
TrigTauMonitorBaseAlgorithm::getTrigInfo
const TrigTauInfo & getTrigInfo(const std::string &trigger) const
Definition: TrigTauMonitorBaseAlgorithm.h:45
TrigTauMonitorBaseAlgorithm::m_eventInfoDecorKey
SG::ReadDecorHandleKey< xAOD::EventInfo > m_eventInfoDecorKey
Definition: TrigTauMonitorBaseAlgorithm.h:104
SG::ReadDecorHandleKey
Property holding a SG store/key/clid/attr name from which a ReadDecorHandle is made.
Definition: StoreGate/StoreGate/ReadDecorHandleKey.h:85
TrigTauMonitorBaseAlgorithm::getOnlineTaus
std::tuple< std::vector< const xAOD::TauJet * >, std::vector< const xAOD::TauJet * >, std::vector< const xAOD::TauJet * > > getOnlineTaus(const std::string &trigger) const
Definition: TrigTauMonitorBaseAlgorithm.cxx:77
TrigTauMonitorBaseAlgorithm::m_hltTauJetLRTKey
SG::ReadHandleKey< xAOD::TauJetContainer > m_hltTauJetLRTKey
Definition: TrigTauMonitorBaseAlgorithm.h:119
dumpTgcDigiThreshold.threshold
list threshold
Definition: dumpTgcDigiThreshold.py:34
TrigTauMonitorBaseAlgorithm::getOfflineTausAll
std::vector< const xAOD::TauJet * > getOfflineTausAll(const EventContext &ctx, const float threshold=20.0) const
Definition: TrigTauMonitorBaseAlgorithm.cxx:83
TrigTauMonitorBaseAlgorithm::m_hltTauJetLLPKey
SG::ReadHandleKey< xAOD::TauJetContainer > m_hltTauJetLLPKey
Definition: TrigTauMonitorBaseAlgorithm.h:118
PhysDESDM_Quirks.trigger
trigger
Definition: PhysDESDM_Quirks.py:27