ATLAS Offline Software
Control
AthenaExamples
AthExBasics
src
RunTriggerMatching.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
RunTriggerMatching.h
"
6
#include "
TrigDecisionTool/ChainGroup.h
"
7
#include <vector>
8
9
RunTriggerMatching::RunTriggerMatching
(
const
std::string &
name
, ISvcLocator *pSvcLocator)
10
:
AthReentrantAlgorithm
(
name
, pSvcLocator) {
11
}
12
13
StatusCode
RunTriggerMatching::initialize
() {
14
15
// Initialise the data handles
16
ATH_CHECK
(
m_containerKey
.initialize());
17
// Initialise the tool handles
18
ATH_CHECK
(
m_trigDec
.retrieve());
19
ATH_CHECK
(
m_matchingTool
.retrieve());
20
// Initialise counter
21
m_matchCounter
= 0;
22
return
StatusCode::SUCCESS;
23
}
24
25
StatusCode
RunTriggerMatching::execute
(
const
EventContext& ctx)
const
{
26
27
// Get the particle containers requested
28
SG::ReadHandle<xAOD::IParticleContainer>
particles
{
m_containerKey
, ctx};
29
if
( !
particles
.isValid() ) {
30
ATH_MSG_ERROR
(
"Couldn't retrieve IParticles with key: "
<<
m_containerKey
.key() );
31
return
StatusCode::FAILURE;
32
}
33
34
// Get the full list of triggers that were available for this event matching the user string
35
const
Trig::ChainGroup
*
chain
=
m_trigDec
->getChainGroup(
m_triggerString
);
36
const
std::vector<std::string> fired_triggers =
chain
->getListOfTriggers();
37
38
// For triggers that fired, count events where at least one offline object
39
// from the provided container matches that trigger
40
for
(
const
std::string& fired : fired_triggers) {
41
if
(
m_trigDec
->isPassed(fired)) {
42
for
(
const
xAOD::IParticle
*
part
: *
particles
) {
43
if
(
m_matchingTool
->match(*
part
, fired, 0.1,
false
)) {
44
m_matchCounter
++;
45
break
;
46
}
47
}
48
}
49
}
50
51
return
StatusCode::SUCCESS;
52
53
}
54
55
// Print the contents of the map
56
StatusCode
RunTriggerMatching::finalize
() {
57
ATH_MSG_INFO
(
"========================="
);
58
ATH_MSG_INFO
(
"SUMMARY OF TRIGGER COUNTS"
);
59
ATH_MSG_INFO
(
"========================="
);
60
ATH_MSG_INFO
(
"Number of events where a trigger matching the user string"
);
61
ATH_MSG_INFO
(
"fired and is matched to at least one offline object in "
<<
m_containerKey
.key() <<
" : "
<<
std::to_string
(
m_matchCounter
));
62
63
return
StatusCode::SUCCESS;
64
}
65
66
67
68
69
LArG4FSStartPointFilter.part
part
Definition:
LArG4FSStartPointFilter.py:21
RunTriggerMatching::m_containerKey
SG::ReadHandleKey< xAOD::IParticleContainer > m_containerKey
Read handle for the offline object container - set to muons by default.
Definition:
RunTriggerMatching.h:34
runLayerRecalibration.chain
chain
Definition:
runLayerRecalibration.py:175
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition:
AthMsgStreamMacros.h:31
SG::ReadHandle
Definition:
StoreGate/StoreGate/ReadHandle.h:70
ChainGroup.h
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition:
Event/xAOD/xAODBase/xAODBase/IParticle.h:41
RunTriggerMatching::m_trigDec
PublicToolHandle< Trig::TrigDecisionTool > m_trigDec
Tool handle for the trigger decision and matching tools.
Definition:
RunTriggerMatching.h:36
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition:
AthReentrantAlgorithm.h:83
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition:
AthMsgStreamMacros.h:33
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition:
PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
RunTriggerMatching::m_triggerString
Gaudi::Property< std::string > m_triggerString
String to select triggers to use in the matching with offline objects.
Definition:
RunTriggerMatching.h:32
ATH_CHECK
#define ATH_CHECK
Definition:
AthCheckMacros.h:40
RunTriggerMatching::initialize
virtual StatusCode initialize() override
Definition:
RunTriggerMatching.cxx:13
RunTriggerMatching::execute
virtual StatusCode execute(const EventContext &) const override
Definition:
RunTriggerMatching.cxx:25
RunTriggerMatching::RunTriggerMatching
RunTriggerMatching(const std::string &name, ISvcLocator *pSvcLocator)
Definition:
RunTriggerMatching.cxx:9
Trig::ChainGroup
Definition:
ChainGroup.h:51
name
std::string name
Definition:
Control/AthContainers/Root/debug.cxx:221
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition:
GeometryDefs.h:34
RunTriggerMatching::m_matchCounter
std::atomic< unsigned int > m_matchCounter
Integer counter for the requested triggers.
Definition:
RunTriggerMatching.h:30
RunTriggerMatching::finalize
virtual StatusCode finalize() override
Definition:
RunTriggerMatching.cxx:56
LArG4FSStartPointFilter.particles
list particles
Definition:
LArG4FSStartPointFilter.py:84
RunTriggerMatching.h
RunTriggerMatching::m_matchingTool
PublicToolHandle< Trig::R3MatchingTool > m_matchingTool
Definition:
RunTriggerMatching.h:37
Generated on Thu Nov 7 2024 21:25:14 for ATLAS Offline Software by
1.8.18