ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Reconstruction
Jet
JetCalibTools
src
InSituCalibStep.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
// InSituCalibStep.cxx
8
// Implementation file for class InSituCalibStep
10
11
#include "
JetCalibTools/InSituCalibStep.h
"
12
#include "
PathResolver/PathResolver.h
"
13
#include "
AsgDataHandles/ReadDecorHandle.h
"
14
15
InSituCalibStep::InSituCalibStep
(
const
std::string& name)
16
:
asg
::
AsgTool
( name ){ }
17
19
// Public methods:
21
22
StatusCode
InSituCalibStep::initialize
() {
23
ATH_MSG_DEBUG
(
"Initializing "
<< name() );
24
ATH_MSG_DEBUG
(
"Reading from "
<<
m_jetInScale
<<
" and writing to "
<<
m_jetOutScale
);
25
// Initialise ReadHandle(s)
26
ATH_CHECK
(
m_evtInfoKey
.initialize() );
27
28
if
(
m_isMC
)
29
ATH_MSG_WARNING
(
"InSituCalibStep::calibrate : Running over MC, will not calibrate unless expert option CalibrateMC is set to true"
);
30
31
ATH_CHECK
(
m_histTool_EtaInter
.retrieve() );
32
ATH_CHECK
(
m_histTool_Abs
.retrieve() );
33
34
if
(
m_histTool_Abs
.size() !=
m_histTool_EtaInter
.size() )
35
return
StatusCode::FAILURE;
36
37
return
StatusCode::SUCCESS;
38
}
39
40
41
StatusCode
InSituCalibStep::calibrate
(
xAOD::JetContainer
& jets)
const
{
42
43
ATH_MSG_DEBUG
(
"calibrating jet collection."
);
44
45
// Retrieve EventInfo object, for time-dependent calibration and isMC flag
46
unsigned
int
rNumber = 0;
47
if
(
retrieveEventInfo
(rNumber).isFailure())
48
return
StatusCode::FAILURE;
49
if
( (
bool
)(
m_isMC
) && !( (
bool
)(
m_CalibrateMC
)) )
//no calibration
50
return
StatusCode::SUCCESS;
51
unsigned
int
runNumber =
static_cast<
unsigned
int
>
(rNumber+0.5);
52
// Pick up the correct time-dependent histogram
53
unsigned
int
periodInd = 9999;
54
for
(
unsigned
int
i=0; i<
m_RunNumBoundaries
.size()-1; i++){
55
unsigned
int
firstRun =
m_RunNumBoundaries
[i] + 1.5;
56
unsigned
int
lastRun =
m_RunNumBoundaries
[i+1]+0.5;
57
if
(firstRun<=runNumber && runNumber <= lastRun ){
58
periodInd = i;
59
break
;
60
}
61
}
62
63
if
(periodInd==9999){
// periodInd could not be set
64
ATH_MSG_WARNING
(
"No calibration found for run number "
<<runNumber);
65
}
66
67
if
( periodInd >=
m_histTool_Abs
.size() )
//outside run numbers, return no calibration
68
return
StatusCode::SUCCESS;
69
70
JetHelper::JetContext
jc;
71
for
(
xAOD::Jet
*
jet
: jets){
72
const
xAOD::JetFourMom_t
jetStartP4 =
jet
->getAttribute<
xAOD::JetFourMom_t
>(
m_jetInScale
);
73
jet
->setJetP4(jetStartP4);
74
75
// Retrieve absolute and relative calibration factors
76
const
double
R_abs =
m_histTool_Abs
[periodInd]->getValue(*
jet
,jc);
77
double
c_rel =
m_histTool_EtaInter
[periodInd]->getValue(*
jet
,jc);
78
double
correction = c_rel/R_abs;
79
80
xAOD::JetFourMom_t
calibP4=
jet
->jetP4();
81
calibP4 = calibP4 * correction;
82
// Set the output scale
83
jet
->setAttribute<
xAOD::JetFourMom_t
>(
m_jetOutScale
,calibP4);
84
jet
->setJetP4(calibP4);
85
}
86
return
StatusCode::SUCCESS;
87
}
88
89
StatusCode
InSituCalibStep::retrieveEventInfo
(
unsigned
int
&
r
)
const
{
90
91
const
xAOD::EventInfo
* eventObj =
nullptr
;
92
static
std::atomic<unsigned int> eventInfoWarnings = 0;
93
SG::ReadHandle<xAOD::EventInfo>
rhEvtInfo(
m_evtInfoKey
);
94
if
( rhEvtInfo.
isValid
() ) {
95
eventObj = rhEvtInfo.
cptr
();
96
r
= eventObj->
runNumber
();
97
}
else
{
98
++eventInfoWarnings;
99
if
( eventInfoWarnings < 20 )
100
ATH_MSG_ERROR
(
" InSituCalibStep::calibrate : Failed to retrieve event information."
);
101
return
StatusCode::SUCCESS;
//error is recoverable, so return SUCCESS
102
}
103
return
StatusCode::SUCCESS;
104
}
105
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition
AthMsgStreamMacros.h:33
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition
AthMsgStreamMacros.h:32
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
ReadDecorHandle.h
Handle class for reading a decoration on an object.
InSituCalibStep.h
PathResolver.h
InSituCalibStep::m_histTool_Abs
ToolHandleArray< JetHelper::IVarTool > m_histTool_Abs
Definition
InSituCalibStep.h:56
InSituCalibStep::m_jetInScale
Gaudi::Property< std::string > m_jetInScale
Definition
InSituCalibStep.h:50
InSituCalibStep::m_CalibrateMC
Gaudi::Property< bool > m_CalibrateMC
Definition
InSituCalibStep.h:47
InSituCalibStep::retrieveEventInfo
StatusCode retrieveEventInfo(unsigned int &r) const
Definition
InSituCalibStep.cxx:89
InSituCalibStep::initialize
virtual StatusCode initialize() override
Dummy implementation of the initialisation function.
Definition
InSituCalibStep.cxx:22
InSituCalibStep::calibrate
virtual StatusCode calibrate(xAOD::JetContainer &) const override
Apply calibration to a jet container.
Definition
InSituCalibStep.cxx:41
InSituCalibStep::m_jetOutScale
Gaudi::Property< std::string > m_jetOutScale
Definition
InSituCalibStep.h:51
InSituCalibStep::m_histTool_EtaInter
ToolHandleArray< JetHelper::IVarTool > m_histTool_EtaInter
Definition
InSituCalibStep.h:54
InSituCalibStep::m_evtInfoKey
SG::ReadHandleKey< xAOD::EventInfo > m_evtInfoKey
Definition
InSituCalibStep.h:60
InSituCalibStep::InSituCalibStep
InSituCalibStep(const std::string &name="InSituCalibStep")
Constructor with parameters:
Definition
InSituCalibStep.cxx:15
InSituCalibStep::m_RunNumBoundaries
Gaudi::Property< std::vector< unsigned int > > m_RunNumBoundaries
Definition
InSituCalibStep.h:58
InSituCalibStep::m_isMC
Gaudi::Property< bool > m_isMC
Definition
InSituCalibStep.h:48
JetHelper::JetContext
Class JetContext Designed to read AOD information related to the event, N vertices,...
Definition
JetContext.h:27
SG::ReadHandle
Definition
StoreGate/StoreGate/ReadHandle.h:67
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
SG::ReadHandle::cptr
const_pointer_type cptr()
Dereference the pointer.
asg::AsgTool::AsgTool
AsgTool(const std::string &name)
Constructor specifying the tool instance's name.
Definition
AsgTool.cxx:58
xAOD::EventInfo_v1::runNumber
uint32_t runNumber() const
The current event's run number.
r
int r
Definition
globals.cxx:22
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::EventInfo
EventInfo_v1 EventInfo
Definition of the latest event info version.
Definition
IEventInfoCnvTool.h:16
xAOD::JetContainer
JetContainer_v1 JetContainer
Definition of the current "jet container version".
Definition
JetContainer.h:17
xAOD::JetFourMom_t
ROOT::Math::LorentzVector< ROOT::Math::PtEtaPhiM4D< double > > JetFourMom_t
Base 4 Momentum type for Jet.
Definition
JetTypes.h:17
Generated on
for ATLAS Offline Software by
1.17.0