ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Reconstruction
Jet
JetCalibTools
src
JetResponseTool.cxx
Go to the documentation of this file.
1
2
3
/*
4
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
5
*/
6
7
// JetResponseTool.cxx
8
// Implementation file for class JetResponseTool
10
11
#include <iomanip>
12
13
#include "
JetCalibTools/JetResponseTool.h
"
14
#include "
AsgDataHandles/ReadHandle.h
"
15
#include "
AsgDataHandles/WriteDecorHandle.h
"
16
#include "
AsgDataHandles/ReadDecorHandle.h
"
17
#include "
AthContainers/ConstDataVector.h
"
18
#include "
FourMomUtils/xAODP4Helpers.h
"
19
20
JetResponseTool::JetResponseTool
(
const
std::string& name)
21
:
asg
::
AsgTool
( name ){ }
22
23
24
26
// Public methods:
28
29
StatusCode
JetResponseTool::initialize
() {
30
ATH_MSG_DEBUG
(
"Initializing "
<< name() );
31
32
// Data read from reco jets
33
ATH_CHECK
(
m_jetContainerKey
.initialize());
34
35
m_jetMatchedTruthJetKey
=
SG::ReadDecorHandleKey<xAOD::JetContainer>
(
m_jetContainerKey
,
m_jetMatchedTruthJetKey
.key());
36
ATH_CHECK
(
m_jetMatchedTruthJetKey
.initialize());
37
38
m_jetRecoIsolKey
=
SG::ReadDecorHandleKey<xAOD::JetContainer>
(
m_jetContainerKey
,
m_jetRecoIsolKey
.key());
39
ATH_CHECK
(
m_jetRecoIsolKey
.initialize());
40
41
// Data read from truth jets
42
ATH_CHECK
(
m_truthJetContainerKey
.initialize());
// Not used directly but it has to be there
43
44
m_jetTruthIsolKey
=
SG::ReadDecorHandleKey<xAOD::JetContainer>
(
m_truthJetContainerKey
,
m_jetTruthIsolKey
.key());
45
ATH_CHECK
(
m_jetTruthIsolKey
.initialize());
46
47
// Decorations to write
48
m_jetResponseKey
=
SG::WriteDecorHandleKey<xAOD::JetContainer>
(
m_jetContainerKey
,
m_jetResponseKey
.key());
49
m_jetIsolatedKey
=
SG::WriteDecorHandleKey<xAOD::JetContainer>
(
m_jetContainerKey
,
m_jetIsolatedKey
.key());
50
51
ATH_CHECK
(
m_jetResponseKey
.initialize());
52
ATH_CHECK
(
m_jetIsolatedKey
.initialize());
53
54
return
StatusCode::SUCCESS;
55
}
56
57
58
StatusCode
JetResponseTool::decorate
(
const
xAOD::JetContainer
& jets)
const
{
59
SG::ReadDecorHandle<xAOD::JetContainer, ElementLink<xAOD::JetContainer>
> jetMatchedTruthJetHandle(
m_jetMatchedTruthJetKey
);
60
SG::ReadDecorHandle<xAOD::JetContainer, float>
jetRecoIsolHandle(
m_jetRecoIsolKey
);
61
SG::ReadDecorHandle<xAOD::JetContainer, float>
jetTruthIsolHandle(
m_jetTruthIsolKey
);
62
SG::WriteDecorHandle<xAOD::JetContainer, float>
jetResponseHandle(
m_jetResponseKey
);
63
SG::WriteDecorHandle<xAOD::JetContainer, char>
jetIsolatedHandle(
m_jetIsolatedKey
);
64
65
ConstDataVector<xAOD::JetContainer>
sel_jets(
SG::VIEW_ELEMENTS
);
66
for
(
const
xAOD::Jet
*
jet
: jets) {
67
jetResponseHandle(*
jet
) = -1.;
// Invalid initialisation
68
jetIsolatedHandle(*
jet
) =
false
;
69
if
(
jet
->pt() >
m_recoJetMinPt
) {
70
sel_jets.
push_back
(
jet
);
71
}
72
}
73
74
ATH_MSG_DEBUG
(
"Selected "
<< sel_jets.size() <<
" reco jets above "
<<
m_recoJetMinPt
.value() <<
" MeV"
);
75
76
for
(
const
xAOD::Jet
*
jet
: sel_jets) {
77
if
(jetMatchedTruthJetHandle(*jet).isValid()) {
78
const
xAOD::Jet
* matched_truthjet = *jetMatchedTruthJetHandle(*
jet
);
79
float
Eresponse =
jet
->e() / matched_truthjet->
e
();
80
ATH_MSG_VERBOSE
(
" Jet energy response : "
<< std::setprecision(3) << Eresponse);
81
jetResponseHandle(*
jet
) = Eresponse;
82
}
83
84
bool
isIsol =
isIsolated
(jetRecoIsolHandle(*
jet
),jetTruthIsolHandle(*
jet
));
85
jetIsolatedHandle(*
jet
) = isIsol;
86
ATH_MSG_VERBOSE
(
" Jet "
<<
jet
->index() <<
" with pt "
<< std::setprecision(3) <<
jet
->pt() <<
" isolated? "
<< isIsol);
87
ATH_MSG_VERBOSE
(
" Isolation fractions: Truth "
<< std::setprecision(3) << jetTruthIsolHandle(*
jet
) <<
", Reco "
<< jetRecoIsolHandle(*
jet
));
88
}
89
90
return
StatusCode::SUCCESS;
91
}
92
93
94
bool
JetResponseTool::isIsolated
(
float
recoIsolFrac,
float
truthIsolFrac)
const
{
95
return
(recoIsolFrac <
m_recoIsolMaxFrac
) && (truthIsolFrac <
m_truthIsolMaxFrac
);
96
}
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition
AthMsgStreamMacros.h:28
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
ReadDecorHandle.h
Handle class for reading a decoration on an object.
ReadHandle.h
Handle class for reading from StoreGate.
WriteDecorHandle.h
Handle class for adding a decoration to an object.
ConstDataVector.h
DataVector adapter that acts like it holds const pointers.
JetResponseTool.h
ConstDataVector
DataVector adapter that acts like it holds const pointers.
Definition
ConstDataVector.h:76
ConstDataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
JetResponseTool::m_jetRecoIsolKey
SG::ReadDecorHandleKey< xAOD::JetContainer > m_jetRecoIsolKey
Definition
JetResponseTool.h:56
JetResponseTool::m_jetMatchedTruthJetKey
SG::ReadDecorHandleKey< xAOD::JetContainer > m_jetMatchedTruthJetKey
Definition
JetResponseTool.h:53
JetResponseTool::m_jetIsolatedKey
SG::WriteDecorHandleKey< xAOD::JetContainer > m_jetIsolatedKey
Definition
JetResponseTool.h:59
JetResponseTool::m_jetResponseKey
SG::WriteDecorHandleKey< xAOD::JetContainer > m_jetResponseKey
Definition
JetResponseTool.h:58
JetResponseTool::initialize
virtual StatusCode initialize() override
Dummy implementation of the initialisation function.
Definition
JetResponseTool.cxx:29
JetResponseTool::decorate
virtual StatusCode decorate(const xAOD::JetContainer &jets) const override
Decorate a jet collection without otherwise modifying it.
Definition
JetResponseTool.cxx:58
JetResponseTool::m_recoJetMinPt
Gaudi::Property< float > m_recoJetMinPt
Definition
JetResponseTool.h:45
JetResponseTool::m_recoIsolMaxFrac
Gaudi::Property< float > m_recoIsolMaxFrac
Definition
JetResponseTool.h:47
JetResponseTool::isIsolated
bool isIsolated(float recoIsolFrac, float truthIsolFrac) const
Definition
JetResponseTool.cxx:94
JetResponseTool::JetResponseTool
JetResponseTool(const std::string &name="JetResponseTool")
Constructor with parameters:
Definition
JetResponseTool.cxx:20
JetResponseTool::m_jetTruthIsolKey
SG::ReadDecorHandleKey< xAOD::JetContainer > m_jetTruthIsolKey
Definition
JetResponseTool.h:55
JetResponseTool::m_truthIsolMaxFrac
Gaudi::Property< float > m_truthIsolMaxFrac
Definition
JetResponseTool.h:46
JetResponseTool::m_jetContainerKey
SG::ReadHandleKey< xAOD::JetContainer > m_jetContainerKey
Definition
JetResponseTool.h:51
JetResponseTool::m_truthJetContainerKey
SG::ReadHandleKey< xAOD::JetContainer > m_truthJetContainerKey
Definition
JetResponseTool.h:52
SG::ReadDecorHandleKey
Property holding a SG store/key/clid/attr name from which a ReadDecorHandle is made.
Definition
StoreGate/StoreGate/ReadDecorHandleKey.h:86
SG::ReadDecorHandle
Handle class for reading a decoration on an object.
Definition
StoreGate/StoreGate/ReadDecorHandle.h:94
SG::WriteDecorHandleKey
Property holding a SG store/key/clid/attr name from which a WriteDecorHandle is made.
Definition
StoreGate/StoreGate/WriteDecorHandleKey.h:90
SG::WriteDecorHandle
Handle class for adding a decoration to an object.
Definition
StoreGate/StoreGate/WriteDecorHandle.h:100
asg::AsgTool::AsgTool
AsgTool(const std::string &name)
Constructor specifying the tool instance's name.
Definition
AsgTool.cxx:58
xAOD::Jet_v1::e
virtual double e() const
The total energy of the particle.
Definition
Jet_v1.cxx:63
SG::VIEW_ELEMENTS
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
Definition
OwnershipPolicy.h:18
asg
Definition
DataHandleTestTool.h:28
jet
Definition
JetCalibTools_PlotJESFactors.cxx:23
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
xAODP4Helpers.h
Generated on
for ATLAS Offline Software by
1.17.0