ATLAS Offline Software
TrigTauMonitorL1Algorithm.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 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  Gaudi::Property<unsigned int> m_offline_tau_id{this, "OfflineTauID", TauID::RNN, "Offline TauID (1: RNN, 2: GNTau)"};
20 
21  // We need access to the xTOB-based RoI container to retrieve the BDT score
22  SG::ReadHandleKey<xAOD::eFexTauRoIContainer> m_phase1l1eTauxRoIKey{this, "Phase1L1eTauxRoIKey", "L1_eTauxRoI", "eTau Phase1 L1 xRoI key"};
23 
24  std::vector<const xAOD::eFexTauRoI*> getL1xTOBeTAUs() const;
25  unsigned int getBDTScore(const xAOD::eFexTauRoI* roi, const std::vector<const xAOD::eFexTauRoI*>& xtob_rois) const;
26 
27  virtual StatusCode processEvent(const EventContext& ctx) const override;
28 
29  template <typename T = xAOD::eFexTauRoI>
30  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
31  {
32  ATH_MSG_DEBUG("Fill L1 efficiencies: " << trigger);
33 
34  const TrigTauInfo& info = getTrigInfo(trigger);
35 
36  auto monGroup = getGroup(trigger+"_L1_Efficiency_"+nProng);
37 
38  auto tauPt = Monitored::Scalar<float>("tauPt", 0.0);
39  auto tauEta = Monitored::Scalar<float>("tauEta", 0.0);
40  auto tauPhi = Monitored::Scalar<float>("tauPhi", 0.0);
41  auto averageMu = Monitored::Scalar<float>("averageMu", 0.0);
42  auto L1_match = Monitored::Scalar<bool>("L1_pass", false);
43  auto L1_match_highPt = Monitored::Scalar<bool>("L1_pass_highPt", false);
44 
45  averageMu = lbAverageInteractionsPerCrossing(ctx);
46 
47  for(const xAOD::TauJet* offline_tau : offline_tau_vec) {
48  tauPt = offline_tau->pt()/Gaudi::Units::GeV;
49  tauEta = offline_tau->eta();
50  tauPhi = offline_tau->phi();
51 
52  bool is_highPt = tauPt > info.getL1TauThreshold() + 20.0;
53 
54  L1_match = false;
55  for(const T* roi : rois) {
56  L1_match = matchObjects(offline_tau, roi, 0.3);
57  if(L1_match) break;
58  }
59 
60  fill(monGroup, tauPt, tauEta, tauPhi, averageMu, L1_match);
61 
62  if(is_highPt) {
63  L1_match_highPt = static_cast<bool>(L1_match);
64  fill(monGroup, tauEta, tauPhi, L1_match_highPt);
65  }
66  }
67 
68  ATH_MSG_DEBUG("After fill L1 efficiencies: " << trigger);
69  }
70 
71  void fillL1eTauVars(const std::string& trigger, const std::vector<const xAOD::eFexTauRoI*>& rois, const std::vector<const xAOD::eFexTauRoI*>& xtob_rois) const;
72  void fillL1jTauVars(const std::string& trigger, const std::vector<const xAOD::jFexTauRoI*>& rois) const;
73  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;
74 };
75 
76 #endif
python.TIDAMonTool.monGroup
def monGroup(analysis_chain)
Definition: TIDAMonTool.py:301
GeV
#define GeV
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/Root/HelperFunctions.cxx:18
TauAnalysisTools::tauEta
double tauEta(const xAOD::TauJet &xTau)
return tau eta
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/Root/HelperFunctions.cxx:100
TauAnalysisTools::tauPt
double tauPt(const xAOD::TauJet &xTau)
return tau pt in GeV
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/Root/HelperFunctions.cxx:86
TrigTauMonitorL1Algorithm::getL1xTOBeTAUs
std::vector< const xAOD::eFexTauRoI * > getL1xTOBeTAUs() const
Definition: TrigTauMonitorL1Algorithm.cxx:163
TrigTauMonitorL1Algorithm::getBDTScore
unsigned int getBDTScore(const xAOD::eFexTauRoI *roi, const std::vector< const xAOD::eFexTauRoI * > &xtob_rois) const
Definition: TrigTauMonitorL1Algorithm.cxx:179
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:89
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:125
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:30
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
TrigTauMonitorBaseAlgorithm
Definition: TrigTauMonitorBaseAlgorithm.h:24
TrigTauMonitorL1Algorithm::m_phase1l1eTauxRoIKey
SG::ReadHandleKey< xAOD::eFexTauRoIContainer > m_phase1l1eTauxRoIKey
Definition: TrigTauMonitorL1Algorithm.h:22
AthMonitorAlgorithm::lbAverageInteractionsPerCrossing
virtual float lbAverageInteractionsPerCrossing(const EventContext &ctx=Gaudi::Hive::currentContext()) const
Calculate the average mu, i.e.
Definition: AthMonitorAlgorithm.cxx:227
TrigTauMonitorL1Algorithm::m_requireOfflineTaus
Gaudi::Property< bool > m_requireOfflineTaus
Definition: TrigTauMonitorL1Algorithm.h:18
TrigTauMonitorL1Algorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: TrigTauMonitorL1Algorithm.cxx:13
TrigTauMonitorL1Algorithm::m_offline_tau_id
Gaudi::Property< unsigned int > m_offline_tau_id
Definition: TrigTauMonitorL1Algorithm.h:19
TrigTauInfo
Definition: TrigTauInfo.h:15
TrigTauMonitorL1Algorithm::fillL1jTauVars
void fillL1jTauVars(const std::string &trigger, const std::vector< const xAOD::jFexTauRoI * > &rois) const
Definition: TrigTauMonitorL1Algorithm.cxx:107
TrigTauMonitorBaseAlgorithm::matchObjects
bool matchObjects(const T1 *tau, const std::vector< const T2 * > &tau_vec, float threshold) const
Definition: TrigTauMonitorBaseAlgorithm.h:78
TriggerTest.rois
rois
Definition: TriggerTest.py:23
TrigTauMonitorBaseAlgorithm::getTrigInfo
const TrigTauInfo & getTrigInfo(const std::string &trigger) const
Definition: TrigTauMonitorBaseAlgorithm.h:51
Monitored::Scalar
Declare a monitored scalar variable.
Definition: MonitoredScalar.h:34
python.ParticleTypeUtil.info
def info
Definition: ParticleTypeUtil.py:87
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