ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Reconstruction
Jet
JetMonitoring
src
JetHistoTriggEfficiency.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3
*/
4
#include "
AthenaMonitoringKernel/GenericMonitoringTool.h
"
5
#include "
JetMonitoring/JetHistoTriggEfficiency.h
"
6
7
#include "
JetMonitoring/JetMonitoringAlg.h
"
8
#include "
TrigDecisionInterface/Conditions.h
"
9
10
11
JetHistoTriggEfficiency::JetHistoTriggEfficiency
(
const
std::string&
type
,
const
std::string & name ,
const
IInterface* parent):
12
AthAlgTool
(
type
, name, parent )
13
,
m_selectTool
(this)
14
,
m_jetVar
(this)
15
{
16
declareInterface<IJetHistoFiller>(
this
);
17
18
declareProperty
(
"Selector"
,
m_selectTool
);
19
declareProperty
(
"Var"
,
m_jetVar
);
20
21
}
22
23
24
StatusCode
JetHistoTriggEfficiency::initialize
() {
25
ATH_MSG_DEBUG
(
" initialize "
);
26
27
if
(
m_selectTool
.isEnabled()){
28
ATH_CHECK
(
m_selectTool
.retrieve());
29
ATH_MSG_DEBUG
(
" pre-select jets with "
<<
m_selectTool
->name() );
30
}
else
{
m_selectTool
.disable();}
31
32
ATH_CHECK
(
m_jetVar
.retrieve());
33
34
return
StatusCode::SUCCESS;
35
}
36
37
StatusCode
JetHistoTriggEfficiency::processJetContainer
(
const
JetMonitoringAlg
& parentAlg,
const
xAOD::JetContainer
& jets,
const
EventContext& ctx)
const
{
38
if
(jets.empty())
return
StatusCode::SUCCESS;
39
40
// we assume this tool is invoked in an alg selecting a reference trigger.
41
ATH_MSG_DEBUG
(
" working on "
<<
m_probeTrigChain
);
42
// check our probe trigger is enabled
43
static
const
SG::AuxElement::ConstAccessor< std::vector< std::string > > acc_disabledTriggers(
"disabledTriggers"
);
44
auto
eventInfo = parentAlg.
GetEventInfo
(ctx);
45
if
( acc_disabledTriggers.isAvailable( *eventInfo ) ) {
46
const
std::vector<std::string> & disabledTriggers = acc_disabledTriggers( *eventInfo );
47
for
(
const
std::string & s: disabledTriggers )
if
(s==
m_probeTrigChain
)
return
StatusCode::SUCCESS;
48
}
49
50
// check trigger bits
51
const
unsigned
int
probeBits = parentAlg.
isPassedBits
(
m_probeTrigChain
);
52
53
54
// disable the L1 test for probe chains with 'noalg' in the chain name
55
// such chains have no HLT cuts, so requiring L1 to pass results in 100% efficiency.
56
std::string sprob =
m_probeTrigChain
;
57
bool
noalg = sprob.find(
"noalg"
) != std::string::npos;
58
59
if
(!(probeBits &
TrigDefs::L1_isPassedAfterVeto
) and !noalg)
return
StatusCode::SUCCESS;
60
if
( (probeBits &
TrigDefs::EF_prescaled
) )
return
StatusCode::SUCCESS;
61
62
63
// Find the probe jet.
64
// --> choose the nth jet passing the pre-selection (where n=m_jetIndex)
65
const
xAOD::Jet
* probeJet =
nullptr
;
66
size_t
npassed=0;
67
bool
doJetSelect =
m_selectTool
.isEnabled();
68
if
(!
m_sortJets
) {
69
for
(
const
xAOD::Jet
* j: jets){
70
if
( doJetSelect && !
m_selectTool
->keep(*j) )
continue
;
71
if
(npassed==
m_jetIndex
) {probeJet = j;
break
; }
// found !
72
npassed++;
73
}
74
}
else
{
//first sort jets according to variable passed, then select the nth jet from the sorted container
75
std::list<const xAOD::Jet*> tmpList;
76
for
(
const
xAOD::Jet
* j: jets){
77
if
( doJetSelect && !
m_selectTool
->keep(*j) )
continue
;
78
tmpList.push_back(j);
79
}
80
auto
sort
= [
this
] (
const
xAOD::Jet
* j1,
const
xAOD::Jet
* j2) {
return
m_jetVar
->value(*j1) >
m_jetVar
->value(*j2); } ;
81
tmpList.sort(
sort
);
82
for
(
const
xAOD::Jet
* j : tmpList ) {
83
if
(npassed==
m_jetIndex
) {probeJet = j;
break
; }
// found !
84
npassed++;
85
}
86
}
87
88
if
(probeJet ==
nullptr
)
return
StatusCode::SUCCESS;
89
90
// trigger passed ?
91
92
bool
trigPassed = parentAlg.
isPassed
(
m_probeTrigChain
);
93
ATH_MSG_DEBUG
(
" trigPassed "
<< trigPassed <<
" "
<<
m_jetVar
->value(*probeJet) );
94
// ask the framework to fill our TEfficiency
95
auto
trigpassS=
Monitored::Scalar<bool>
(
"trigPassed"
,trigPassed);
96
97
auto
jetVarS=
Monitored::Scalar<float>
(
"jetVar"
,
98
m_jetVar
->value(*probeJet) );
99
100
parentAlg.
fill
(
m_group
,trigpassS, jetVarS );
101
102
return
StatusCode::SUCCESS;
103
}
104
105
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:29
GenericMonitoringTool.h
JetHistoTriggEfficiency.h
JetMonitoringAlg.h
sort
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.
Definition
DVL_algorithms.h:554
Conditions.h
AthAlgTool::AthAlgTool
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
Definition
AthAlgTool.cxx:16
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition
AthCommonDataStore.h:145
AthMonitorAlgorithm::GetEventInfo
SG::ReadHandle< xAOD::EventInfo > GetEventInfo(const EventContext &) const
Return a ReadHandle for an EventInfo object (get run/event numbers, etc.).
Definition
AthMonitorAlgorithm.cxx:111
JetHistoTriggEfficiency::m_probeTrigChain
Gaudi::Property< std::string > m_probeTrigChain
Definition
JetHistoTriggEfficiency.h:32
JetHistoTriggEfficiency::m_selectTool
ToolHandle< IJetSelector > m_selectTool
Definition
JetHistoTriggEfficiency.h:35
JetHistoTriggEfficiency::m_sortJets
Gaudi::Property< bool > m_sortJets
Definition
JetHistoTriggEfficiency.h:34
JetHistoTriggEfficiency::processJetContainer
virtual StatusCode processJetContainer(const JetMonitoringAlg &parentAlg, const xAOD::JetContainer &jets, const EventContext &ctx) const
Definition
JetHistoTriggEfficiency.cxx:37
JetHistoTriggEfficiency::m_jetVar
ToolHandle< IJetHistoVarTool > m_jetVar
Definition
JetHistoTriggEfficiency.h:36
JetHistoTriggEfficiency::m_group
Gaudi::Property< std::string > m_group
Definition
JetHistoTriggEfficiency.h:31
JetHistoTriggEfficiency::m_jetIndex
Gaudi::Property< size_t > m_jetIndex
Definition
JetHistoTriggEfficiency.h:33
JetHistoTriggEfficiency::JetHistoTriggEfficiency
JetHistoTriggEfficiency(const std::string &type, const std::string &name, const IInterface *parent)
Definition
JetHistoTriggEfficiency.cxx:11
JetHistoTriggEfficiency::initialize
virtual StatusCode initialize()
Definition
JetHistoTriggEfficiency.cxx:24
JetMonitoringAlg
A monitoring algorithm in charge of filling histogram for a JetContainer.
Definition
JetMonitoringAlg.h:26
JetMonitoringAlg::isPassedBits
unsigned int isPassedBits(const std::string &c) const
Definition
JetMonitoringAlg.cxx:115
JetMonitoringAlg::isPassed
bool isPassed(const std::string &c) const
Definition
JetMonitoringAlg.cxx:112
Monitored::Scalar
Declare a monitored scalar variable.
Definition
MonitoredScalar.h:34
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.
Definition
AthMonitorAlgorithm.cxx:99
TrigDefs::EF_prescaled
static const unsigned int EF_prescaled
Definition
TrigEvent/TrigDecisionInterface/TrigDecisionInterface/Conditions.h:49
TrigDefs::L1_isPassedAfterVeto
static const unsigned int L1_isPassedAfterVeto
Definition
TrigEvent/TrigDecisionInterface/TrigDecisionInterface/Conditions.h:59
xAOD::Jet
Jet_v1 Jet
Definition of the current "jet version".
Definition
Event/xAOD/xAODJet/xAODJet/Jet.h:17
xAOD::JetContainer
JetContainer_v1 JetContainer
Definition of the current "jet container version".
Definition
JetContainer.h:17
type
Generated on
for ATLAS Offline Software by
1.17.0