ATLAS Offline Software
TrigTauMonitorL1Algorithm.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_TRIGTAUMONITORL1ALGORITHM_H
6 #define TRIGTAUMONITORING_TRIGTAUMONITORL1ALGORITHM_H
7 
9 
11 public:
12  TrigTauMonitorL1Algorithm(const std::string& name, ISvcLocator* pSvcLocator);
13 
14  virtual StatusCode initialize() override;
15 
16 private:
17  // Require at least 1 offline Tau per event (will bias the variable distributions for background events)
18  Gaudi::Property<bool> m_requireOfflineTaus{this, "RequireOfflineTaus", true, "Require at leat 1 offline tau per event"};
19 
20  // We need access to the xTOB-based RoI container to retrieve the BDT score
21  SG::ReadHandleKey<xAOD::eFexTauRoIContainer> m_phase1l1eTauxRoIKey{this, "Phase1L1eTauxRoIKey", "L1_eTauxRoI", "eTau Phase1 L1 xRoI key"};
22 
23  std::vector<const xAOD::eFexTauRoI*> getL1xTOBeTAUs() const;
24  unsigned int getBDTScore(const xAOD::eFexTauRoI* roi, const std::vector<const xAOD::eFexTauRoI*>& xtob_rois) const;
25 
26  virtual StatusCode processEvent(const EventContext& ctx) const override;
27 
28  template <typename T = xAOD::eFexTauRoI>
29  void fillL1Efficiencies(const EventContext& ctx, const std::vector<const xAOD::TauJet*>& offline_tau_vec, const std::string& nProng, const std::string& trigger, const std::vector<const T*>& rois) const
30  {
31  ATH_MSG_DEBUG("Fill L1 efficiencies: " << trigger);
32 
34 
35  auto monGroup = getGroup(trigger+"_L1_Efficiency_"+nProng);
36 
37  auto tauPt = Monitored::Scalar<float>("tauPt", 0.0);
38  auto tauEta = Monitored::Scalar<float>("tauEta", 0.0);
39  auto tauPhi = Monitored::Scalar<float>("tauPhi", 0.0);
40  auto averageMu = Monitored::Scalar<float>("averageMu", 0.0);
41  auto L1_match = Monitored::Scalar<bool>("L1_pass", false);
42  auto L1_match_highPt = Monitored::Scalar<bool>("L1_pass_highPt", false);
43 
44  averageMu = lbAverageInteractionsPerCrossing(ctx);
45 
46  for(const xAOD::TauJet* offline_tau : offline_tau_vec) {
47  tauPt = offline_tau->pt()/Gaudi::Units::GeV;
48  tauEta = offline_tau->eta();
49  tauPhi = offline_tau->phi();
50 
51  bool is_highPt = tauPt > info.getL1TauThreshold() + 20.0;
52 
53  L1_match = false;
54  for(const T* roi : rois) {
55  L1_match = matchObjects(offline_tau, roi, 0.3);
56  if(L1_match) break;
57  }
58 
59  fill(monGroup, tauPt, tauEta, tauPhi, averageMu, L1_match);
60 
61  if(is_highPt) {
62  L1_match_highPt = static_cast<bool>(L1_match);
63  fill(monGroup, tauEta, tauPhi, L1_match_highPt);
64  }
65  }
66 
67  ATH_MSG_DEBUG("After fill L1 efficiencies: " << trigger);
68  }
69 
70  void fillL1eTauVars(const std::string& trigger, const std::vector<const xAOD::eFexTauRoI*>& rois, const std::vector<const xAOD::eFexTauRoI*>& xtob_rois) const;
71  void fillL1jTauVars(const std::string& trigger, const std::vector<const xAOD::jFexTauRoI*>& rois) const;
72  void fillL1cTauVars(const std::string& trigger, const std::vector<std::pair<const xAOD::eFexTauRoI*, const xAOD::jFexTauRoI*>>& rois, const std::vector<const xAOD::eFexTauRoI*>& xtob_rois) const;
73  void fillL1LegacyVars(const std::string& trigger, const std::vector<const xAOD::EmTauRoI*>& rois) const;
74 };
75 
76 #endif
grepfile.info
info
Definition: grepfile.py:38
python.TIDAMonTool.monGroup
def monGroup(analysis_chain)
Definition: TIDAMonTool.py:295
TauAnalysisTools::tauEta
double tauEta(const xAOD::TauJet &xTau)
return tau eta
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/Root/HelperFunctions.cxx:99
TauAnalysisTools::tauPt
double tauPt(const xAOD::TauJet &xTau)
return tau pt in GeV
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/Root/HelperFunctions.cxx:85
TrigTauMonitorL1Algorithm::getL1xTOBeTAUs
std::vector< const xAOD::eFexTauRoI * > getL1xTOBeTAUs() const
Definition: TrigTauMonitorL1Algorithm.cxx:189
TrigTauMonitorL1Algorithm::fillL1LegacyVars
void fillL1LegacyVars(const std::string &trigger, const std::vector< const xAOD::EmTauRoI * > &rois) const
Definition: TrigTauMonitorL1Algorithm.cxx:169
TrigTauMonitorL1Algorithm::getBDTScore
unsigned int getBDTScore(const xAOD::eFexTauRoI *roi, const std::vector< const xAOD::eFexTauRoI * > &xtob_rois) const
Definition: TrigTauMonitorL1Algorithm.cxx:205
SG::ReadHandleKey
Property holding a SG store/key/clid from which a ReadHandle is made.
Definition: StoreGate/StoreGate/ReadHandleKey.h:39
TrigTauMonitorL1Algorithm::TrigTauMonitorL1Algorithm
TrigTauMonitorL1Algorithm(const std::string &name, ISvcLocator *pSvcLocator)
Definition: TrigTauMonitorL1Algorithm.cxx:8
xAOD::eFexTauRoI_v1
Class describing a LVL1 eFEX tau region of interest.
Definition: eFexTauRoI_v1.h:29
TrigTauMonitorL1Algorithm::fillL1eTauVars
void fillL1eTauVars(const std::string &trigger, const std::vector< const xAOD::eFexTauRoI * > &rois, const std::vector< const xAOD::eFexTauRoI * > &xtob_rois) const
Definition: TrigTauMonitorL1Algorithm.cxx:94
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
xAOD::TauJet_v3
Class describing a tau jet.
Definition: TauJet_v3.h:41
TrigTauMonitorL1Algorithm::processEvent
virtual StatusCode processEvent(const EventContext &ctx) const override
Definition: TrigTauMonitorL1Algorithm.cxx:22
TrigTauMonitorL1Algorithm
Definition: TrigTauMonitorL1Algorithm.h:10
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.
TrigTauMonitorBaseAlgorithm.h
TrigTauMonitorL1Algorithm::fillL1cTauVars
void fillL1cTauVars(const std::string &trigger, const std::vector< std::pair< const xAOD::eFexTauRoI *, const xAOD::jFexTauRoI * >> &rois, const std::vector< const xAOD::eFexTauRoI * > &xtob_rois) const
Definition: TrigTauMonitorL1Algorithm.cxx:130
TrigTauMonitorL1Algorithm::fillL1Efficiencies
void fillL1Efficiencies(const EventContext &ctx, const std::vector< const xAOD::TauJet * > &offline_tau_vec, const std::string &nProng, const std::string &trigger, const std::vector< const T * > &rois) const
Definition: TrigTauMonitorL1Algorithm.h:29
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
TrigTauMonitorBaseAlgorithm
Definition: TrigTauMonitorBaseAlgorithm.h:24
TrigTauMonitorL1Algorithm::m_phase1l1eTauxRoIKey
SG::ReadHandleKey< xAOD::eFexTauRoIContainer > m_phase1l1eTauxRoIKey
Definition: TrigTauMonitorL1Algorithm.h:21
AthMonitorAlgorithm::lbAverageInteractionsPerCrossing
virtual float lbAverageInteractionsPerCrossing(const EventContext &ctx=Gaudi::Hive::currentContext()) const
Calculate the average mu, i.e.
Definition: AthMonitorAlgorithm.cxx:222
TrigTauMonitorL1Algorithm::m_requireOfflineTaus
Gaudi::Property< bool > m_requireOfflineTaus
Definition: TrigTauMonitorL1Algorithm.h:18
TrigTauMonitorL1Algorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: TrigTauMonitorL1Algorithm.cxx:13
TrigTauInfo
Definition: TrigTauInfo.h:15
TrigTauMonitorL1Algorithm::fillL1jTauVars
void fillL1jTauVars(const std::string &trigger, const std::vector< const xAOD::jFexTauRoI * > &rois) const
Definition: TrigTauMonitorL1Algorithm.cxx:112
TrigTauMonitorBaseAlgorithm::matchObjects
bool matchObjects(const T1 *tau, const std::vector< const T2 * > &tau_vec, float threshold) const
Definition: TrigTauMonitorBaseAlgorithm.h:73
TriggerTest.rois
rois
Definition: TriggerTest.py:23
TrigTauMonitorBaseAlgorithm::getTrigInfo
const TrigTauInfo & getTrigInfo(const std::string &trigger) const
Definition: TrigTauMonitorBaseAlgorithm.h:45
Monitored::Scalar
Declare a monitored scalar variable.
Definition: MonitoredScalar.h:34
GeV
#define GeV
Definition: CaloTransverseBalanceVecMon.cxx:30
AthMonitorAlgorithm::getGroup
const ToolHandle< GenericMonitoringTool > & getGroup(const std::string &name) const
Get a specific monitoring tool from the tool handle array.
Definition: AthMonitorAlgorithm.cxx:164
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35
PhysDESDM_Quirks.trigger
trigger
Definition: PhysDESDM_Quirks.py:27