ATLAS Offline Software
Loading...
Searching...
No Matches
cTauRoIThresholdsTool.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
7#include "GaudiKernel/ThreadLocalContext.h"
9#include "utilities.h"
10using namespace HLTSeedingNs;
11
12
15 ATH_CHECK(m_jTauLinkKey.initialize());
16 return StatusCode::SUCCESS;
17}
18
19uint64_t cTauRoIThresholdsTool::getPattern(const EventContext& ctx,
20 const xAOD::eFexTauRoI& eTau,
21 const RoIThresholdsTool::ThrVec& menuThresholds,
22 const TrigConf::L1ThrExtraInfoBase& /*menuExtraInfo*/) const {
23
24 // Get the jTau matched to the eTau
27 if (not jTauLinkAcc.isPresent()) {
28 ATH_MSG_ERROR("Decoration " << m_jTauLinkKey.key() << " is missing, cannot create cTau threshold pattern");
29 throw SG::ExcNullReadHandle(m_jTauLinkKey.clid(), m_jTauLinkKey.key(), m_jTauLinkKey.storeHandle().name());
30 }
31 jTauLink_t jTauLink = jTauLinkAcc(eTau);
32 bool matched{jTauLink.isValid()};
33
34 if (matched) {
35 const xAOD::jFexTauRoI* jTau = *jTauLink;
36
37 ATH_MSG_DEBUG("eFex tau eta,phi = " << eTau.iEta() << ", " << eTau.iPhi()
38 << ", jFex tau eta,phi = " << jTau->globalEta() << ", " << jTau->globalPhi()
39 << ", eFex et (100 MeV/counts) = " << eTau.etTOB() << ", jFex et (200 MeV/counts) = " << jTau->tobEt() << ", jFex iso (200 MeV/counts) = " << jTau->tobIso()
40 << ", eFex rCore/BDT = " << eTau.tauOneThresholds() << ", eFex rHad = " << eTau.tauTwoThresholds());
41 } else {
42 ATH_MSG_DEBUG("eFex tau eta,phi = " << eTau.iEta() << ", " << eTau.iPhi()
43 << ", eFex et (100 MeV/counts) = " << eTau.etTOB() << ", no matching jTau found"
44 << ", eFex rCore/BDT = " << eTau.tauOneThresholds() << ", eFex rHad = " << eTau.tauTwoThresholds());
45 }
46
47
48 uint64_t thresholdMask{0};
49
50 // Iterate through thresholds and see which ones are passed
51 for (const std::shared_ptr<TrigConf::L1Threshold>& thrBase : menuThresholds) {
52 auto thr = static_cast<TrigConf::L1Threshold_cTAU*>(thrBase.get());
53
54 // Check isolation threshold - unmatched eTau treated as perfectly isolated, ATR-25927
55 // The core and isolation E_T values are multiplied by 2 to normalise to 100 MeV/counts units
56 bool passIso = matched ? TCS::cTauMultiplicity::checkIsolationWP(eTau, **jTauLink, *thr) : true;
57
58 // Check eTAU rCore/BDT and rHad thresholds
59 bool passeTAUWP = TCS::cTauMultiplicity::checkeTAUWP(eTau, *thr);
60
61 // Check et threshold - using iEta coordinate for the eFEX ensures a 0.1 granularity of the eta coordinate,
62 // as expected from the menu method thrValue100MeV
63 bool passEt = eTau.etTOB() > thr->thrValue100MeV(eTau.iEta());
64
65 if (passIso && passeTAUWP && passEt) {
66 thresholdMask |= (1_u64<<thr->mapping());
67 }
68
69 } // loop over thr
70
71 return thresholdMask;
72}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_DEBUG(x)
Exceptions that can be thrown from StoreGate.
Handle class for reading a decoration on an object.
std::vector< std::shared_ptr< TrigConf::L1Threshold > > ThrVec
virtual StatusCode initialize() override
Exception — Deference of read handle failed.
Handle class for reading a decoration on an object.
bool isPresent() const
Is the referenced container present in SG?
static bool checkeTAUWP(const xAOD::eFexTauRoI &eTau, const TrigConf::L1Threshold_cTAU &thr)
static bool checkIsolationWP(const xAOD::eFexTauRoI &eTau, const xAOD::jFexTauRoI &jTau, const TrigConf::L1Threshold_cTAU &thr)
L1 extra information for certain threshold types.
SG::ReadDecorHandleKey< xAOD::eFexTauRoIContainer > m_jTauLinkKey
virtual StatusCode initialize() override
virtual uint64_t getPattern(const EventContext &ctx, const xAOD::eFexTauRoI &eTau, const ThrVec &menuThresholds, const TrigConf::L1ThrExtraInfoBase &menuExtraInfo) const override
int iPhi() const
Setter for the above.
int iEta() const
setter for the above
unsigned int tauOneThresholds() const
Tau Condition 1 (generic) results.
unsigned int etTOB() const
Cluster ET (TOB ET scale, 100 MeV/count)
unsigned int tauTwoThresholds() const
Tau Condition 2 (generic) results.
uint globalPhi() const
int globalEta() const
uint16_t tobIso() const
uint16_t tobEt() const
jFexTauRoI_v1 jFexTauRoI
Define the latest version of the jFexSRJetRoI class.
Definition jFexTauRoI.h:13
eFexTauRoI_v1 eFexTauRoI
Define the latest version of the eFexTauRoI class.
Definition eFexTauRoI.h:16