ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TrigSteer
HLTSeeding
src
FSRoIsUnpackingTool.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
FSRoIsUnpackingTool.h
"
6
#include "
xAODTrigger/TrigCompositeContainer.h
"
7
8
9
FSRoIsUnpackingTool::FSRoIsUnpackingTool
(
const
std::string&
type
,
10
const
std::string& name,
11
const
IInterface* parent)
12
:
RoIsUnpackingToolBase
(
type
, name, parent) {
13
}
14
15
16
StatusCode
FSRoIsUnpackingTool::initialize
() {
17
ATH_CHECK
(
RoIsUnpackingToolBase::initialize
());
18
return
StatusCode::SUCCESS;
19
}
20
21
22
StatusCode
FSRoIsUnpackingTool::start
() {
23
ATH_CHECK
(
decodeMapping
([](
const
std::string& name){
24
return
name.find(
"FS"
) == 0 or name.empty();
25
}));
26
27
m_allFSChains
.clear();
28
29
for
(
auto
thresholdToChain:
m_thresholdToChainMapping
) {
30
m_allFSChains
.insert( thresholdToChain.second.begin(), thresholdToChain.second.end() );
31
}
32
36
for
(
auto
id
:
m_allFSChains
) {
37
ATH_MSG_DEBUG
(
"FS Chain "
<<
id
);
38
}
39
40
return
StatusCode::SUCCESS;
41
}
42
43
44
StatusCode
FSRoIsUnpackingTool::unpack
(
const
EventContext& ctx,
45
const
ROIB::RoIBResult
&
/*roib*/
,
46
const
HLT::IDSet
& activeChains)
const
{
47
using namespace
TrigCompositeUtils
;
48
SG::WriteHandle<DecisionContainer>
handle =
createAndStore
(
m_decisionsKey
, ctx );
49
auto
*decisionOutput = handle.ptr();
50
51
HLT::IDSet
activeFSChains;
52
// see if any chain we care of is active
53
std::set_intersection(activeChains.begin(), activeChains.end(),
54
m_allFSChains
.begin(),
m_allFSChains
.end(),
55
std::inserter(activeFSChains, activeFSChains.end()));
56
57
// This hltSeedingNodeName() denotes an initial node with no parents
58
auto
*decision =
TrigCompositeUtils::newDecisionIn
( decisionOutput,
hltSeedingNodeName
() );
59
addChainsToDecision
(
HLT::Identifier
(
"FSNOSEED"
), decision, activeChains );
60
61
ATH_MSG_DEBUG
(
"Unpacking FS RoI for "
<< activeFSChains.size() <<
" chains: "
<< [&](){
62
TrigCompositeUtils::DecisionIDContainer ids;
63
TrigCompositeUtils::decisionIDs( decision, ids );
64
return std::vector<TrigCompositeUtils::DecisionID>( ids.begin(), ids.end() ); }() );
65
66
auto
roiHandle =
SG::makeHandle
(
m_trigRoIsKey
, ctx );
67
ATH_CHECK
(roiHandle.record( std::make_unique<TrigRoiDescriptorCollection>() ));
69
if
( !
m_roiupdater
.empty() ) {
70
roiHandle->push_back(
m_roiupdater
->execute(ctx) );
71
}
72
else
{
73
roiHandle->push_back( std::make_unique<TrigRoiDescriptor>(
RoiDescriptor::FULLSCAN
) );
74
}
75
76
ATH_MSG_DEBUG
(
"Linking to FS RoI descriptor"
);
77
decision->setObjectLink(
initialRoIString
(),
ElementLink<TrigRoiDescriptorCollection>
(
m_trigRoIsKey
.key(), 0, ctx ) );
78
79
return
StatusCode::SUCCESS;
80
}
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x,...)
Definition
AthMsgStreamMacros.h:43
FSRoIsUnpackingTool.h
createAndStore
SG::WriteHandle< DecisionContainer > createAndStore(const SG::WriteHandleKey< DecisionContainer > &key, const EventContext &ctx)
Creates and right away records the DecisionContainer with the key.
Definition
TrigCompositeUtilsRoot.cxx:28
TrigCompositeContainer.h
ElementLink
ElementLink implementation for ROOT usage.
Definition
A/AthLinks/ElementLink.h:40
FSRoIsUnpackingTool::initialize
virtual StatusCode initialize() override
Definition
FSRoIsUnpackingTool.cxx:16
FSRoIsUnpackingTool::m_allFSChains
HLT::IDSet m_allFSChains
Definition
FSRoIsUnpackingTool.h:25
FSRoIsUnpackingTool::start
virtual StatusCode start() override
Definition
FSRoIsUnpackingTool.cxx:22
FSRoIsUnpackingTool::FSRoIsUnpackingTool
FSRoIsUnpackingTool(const std::string &type, const std::string &name, const IInterface *parent)
Definition
FSRoIsUnpackingTool.cxx:9
FSRoIsUnpackingTool::unpack
StatusCode unpack(const EventContext &ctx, const ROIB::RoIBResult &roib, const HLT::IDSet &activeChains) const override
Definition
FSRoIsUnpackingTool.cxx:44
HLT::Identifier
Definition
TrigCompositeUtils/TrigCompositeUtils/HLTIdentifier.h:19
ROIB::RoIBResult
Class holding the LVL1 RoIB result build by the RoIBuilder.
Definition
RoIBResult.h:47
RoIsUnpackingToolBase::m_decisionsKey
SG::WriteHandleKey< TrigCompositeUtils::DecisionContainer > m_decisionsKey
Definition
RoIsUnpackingToolBase.h:51
RoIsUnpackingToolBase::m_roiupdater
ToolHandle< IRoiUpdaterTool > m_roiupdater
Definition
RoIsUnpackingToolBase.h:68
RoIsUnpackingToolBase::RoIsUnpackingToolBase
RoIsUnpackingToolBase(const std::string &type, const std::string &name, const IInterface *parent)
Definition
RoIsUnpackingToolBase.cxx:10
RoIsUnpackingToolBase::addChainsToDecision
void addChainsToDecision(HLT::Identifier thresholdId, TrigCompositeUtils::Decision *d, const HLT::IDSet &activeChains) const
Definition
RoIsUnpackingToolBase.cxx:88
RoIsUnpackingToolBase::initialize
virtual StatusCode initialize() override
Definition
RoIsUnpackingToolBase.cxx:16
RoIsUnpackingToolBase::m_trigRoIsKey
SG::WriteHandleKey< TrigRoiDescriptorCollection > m_trigRoIsKey
Definition
RoIsUnpackingToolBase.h:57
RoIsUnpackingToolBase::decodeMapping
StatusCode decodeMapping(std::function< bool(const std::string &)> &&filter)
Fills mapping from L1 threshold -> to HLT chain.
Definition
RoIsUnpackingToolBase.cxx:52
RoIsUnpackingToolBase::m_thresholdToChainMapping
std::map< HLT::Identifier, HLT::IDVec > m_thresholdToChainMapping
Definition
RoIsUnpackingToolBase.h:70
RoiDescriptor::FULLSCAN
static constexpr bool FULLSCAN
convenient
Definition
RoiDescriptor.h:46
SG::WriteHandle
Definition
StoreGate/StoreGate/WriteHandle.h:73
HLT::IDSet
std::set< HLT::Identifier > IDSet
Definition
TrigCompositeUtils/TrigCompositeUtils/HLTIdentifier.h:56
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition
ReadCondHandle.h:268
TrigCompositeUtils
Definition
TrigComposite.h:19
TrigCompositeUtils::newDecisionIn
Decision * newDecisionIn(DecisionContainer *dc, const std::string &name)
Helper method to create a Decision object, place it in the container and return a pointer to it.
Definition
TrigCompositeUtilsRoot.cxx:44
TrigCompositeUtils::initialRoIString
const std::string & initialRoIString()
Definition
TrigCompositeUtils.h:418
TrigCompositeUtils::hltSeedingNodeName
const std::string & hltSeedingNodeName()
Definition
TrigCompositeUtils.h:425
type
Generated on
for ATLAS Offline Software by
1.17.0