ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Reconstruction
HeavyIonRec
HIJetRec
Root
HIJetSignificanceTool.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
StoreGate/WriteDecorHandle.h
"
6
7
#include "
HIJetSignificanceTool.h
"
8
#include "
xAODCaloEvent/CaloCluster.h
"
9
10
HIJetSignificanceTool::HIJetSignificanceTool
(
const
std::string& name)
11
:
asg
::
AsgTool
(name)
12
{
13
declareInterface<IJetDecorator>(
this
);
14
}
15
16
17
StatusCode
HIJetSignificanceTool::initialize
()
18
{
19
//First we chekc that jet container name is defined
20
if
(
m_jetContainerName
.empty() ){
21
ATH_MSG_ERROR
(
"HIJetSignificanceTool needs to have its input jet container name configured!"
);
22
return
StatusCode::FAILURE;
23
}
24
//Preped Jet Container Name
25
m_jetSignificanceKey
=
m_jetContainerName
+
"."
+
m_jetSignificanceKey
.key();
26
m_jetCellSignificanceKey
=
m_jetContainerName
+
"."
+
m_jetCellSignificanceKey
.key();
27
m_jetCellSigSamplingKey
=
m_jetContainerName
+
"."
+
m_jetCellSigSamplingKey
.key();
28
m_jetNMaxSigTileKey
=
m_jetContainerName
+
"."
+
m_jetNMaxSigTileKey
.key();
29
m_jetSignificanceTileKey
=
m_jetContainerName
+
"."
+
m_jetSignificanceTileKey
.key();
30
31
//Keys Initialization
32
ATH_CHECK
(
m_jetSignificanceKey
.initialize() );
33
ATH_CHECK
(
m_jetCellSignificanceKey
.initialize() );
34
ATH_CHECK
(
m_jetCellSigSamplingKey
.initialize() );
35
ATH_CHECK
(
m_jetNMaxSigTileKey
.initialize() );
36
ATH_CHECK
(
m_jetSignificanceTileKey
.initialize() );
37
38
return
StatusCode::SUCCESS;
39
}
40
41
42
StatusCode
HIJetSignificanceTool::decorate
(
const
xAOD::JetContainer
& jets )
const
43
{
44
//From decor keys to handlers
45
SG::WriteDecorHandle<xAOD::JetContainer, float>
jetSignificanceDecorHandle(
m_jetSignificanceKey
);
46
SG::WriteDecorHandle<xAOD::JetContainer, float>
jetCellSignificanceDecorHandle (
m_jetCellSignificanceKey
);
47
SG::WriteDecorHandle<xAOD::JetContainer, float>
jetCellSigSamplingDecorHandle (
m_jetCellSigSamplingKey
);
48
SG::WriteDecorHandle<xAOD::JetContainer, int >
jetNMaxSigTileDecorHandle (
m_jetNMaxSigTileKey
);
49
SG::WriteDecorHandle<xAOD::JetContainer, float>
jetSignificanceTileDecorHandle (
m_jetSignificanceTileKey
);
50
51
//Here we were passing through JetConstituentVector. Now we access this directly and in a loop of jets, not for single instances
52
//const xAOD::JetConstituentVector constituents = jets.getConstituents();
53
//for(xAOD::JetConstituentVector::iterator itr = constituents.begin(); itr != constituents.end(); ++itr)
54
for
(
const
xAOD::Jet
*
jet
: jets)
55
{
56
float
significance=0;
57
float
cell_sig=0;
58
int
cell_sig_sampling=-1;
59
int
n_sig_max_tile=0;
60
float
sig_tile=0;
61
float
E_tile=0;
62
// loop over raw constituents. Look for clusters
63
size_t
num =
jet
->numConstituents();
64
for
(
size_t
i = 0; i < num; i++)
65
{
66
const
xAOD::CaloCluster
* cl=
static_cast<
const
xAOD::CaloCluster
*
>
( (
jet
->rawConstituent(i)) );
67
if
( !cl)
continue
;
68
69
double
m=0;
70
double
m2=0;
71
unsigned
int
samp_max=CaloSampling::Unknown;
72
73
74
double
cl_E=cl->altE();
//signifiance moments were computed from unsubtracted cell energies
75
double
sigma_cl=0;
76
77
for
(
unsigned
int
isample=12; isample<21; isample++) E_tile+=cl->eSample( (
CaloSampling::CaloSample
) isample);
78
79
if
(cl->retrieveMoment(
xAOD::CaloCluster::SIGNIFICANCE
,m) )
80
{
81
sigma_cl=cl_E/m;
82
significance+=sigma_cl*sigma_cl;
83
}
84
if
(cl->retrieveMoment(
xAOD::CaloCluster::CELL_SIG_SAMPLING
,m2))
85
{
86
samp_max=
static_cast<
unsigned
int
>
(m2);
87
if
(
CaloSampling::getSamplingName
(samp_max).
find
(
"Tile"
)!=std::string::npos)
88
{
89
n_sig_max_tile++;
90
sig_tile+=sigma_cl*sigma_cl;
91
}
92
}
93
94
if
( cl->retrieveMoment(
xAOD::CaloCluster::CELL_SIGNIFICANCE
,m) )
95
{
96
if
( m > cell_sig )
97
{
98
cell_sig=m;
99
if
(samp_max!=CaloSampling::Unknown) cell_sig_sampling=samp_max;
100
}
101
}
102
}
103
significance=
jet
->jetP4(
xAOD::JetEMScaleMomentum
).E()/std::sqrt(significance);
104
sig_tile=E_tile/std::sqrt(sig_tile);
105
106
// set the attributes
107
jetSignificanceDecorHandle(*
jet
) = significance;
108
jetCellSignificanceDecorHandle(*
jet
) = cell_sig;
109
jetCellSigSamplingDecorHandle(*
jet
) = cell_sig_sampling;
110
jetNMaxSigTileDecorHandle(*
jet
) = n_sig_max_tile;
111
jetSignificanceTileDecorHandle(*
jet
) = sig_tile;
112
113
}
//End of loop over jets
114
115
return
StatusCode::SUCCESS;
116
}
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
CaloCluster.h
HIJetSignificanceTool.h
WriteDecorHandle.h
Handle class for adding a decoration to an object.
CaloSampling::getSamplingName
static std::string getSamplingName(CaloSample theSample)
Returns a string (name) for each CaloSampling.
Definition
Calorimeter/CaloGeoHelpers/Root/CaloSampling.cxx:18
CaloSampling::CaloSample
CaloSample
Definition
Calorimeter/CaloGeoHelpers/CaloGeoHelpers/CaloSampling.h:22
HIJetSignificanceTool::m_jetSignificanceKey
SG::WriteDecorHandleKey< xAOD::JetContainer > m_jetSignificanceKey
Definition
HIJetSignificanceTool.h:42
HIJetSignificanceTool::m_jetCellSigSamplingKey
SG::WriteDecorHandleKey< xAOD::JetContainer > m_jetCellSigSamplingKey
Definition
HIJetSignificanceTool.h:44
HIJetSignificanceTool::HIJetSignificanceTool
HIJetSignificanceTool(const std::string &name)
Definition
HIJetSignificanceTool.cxx:10
HIJetSignificanceTool::m_jetCellSignificanceKey
SG::WriteDecorHandleKey< xAOD::JetContainer > m_jetCellSignificanceKey
Definition
HIJetSignificanceTool.h:43
HIJetSignificanceTool::m_jetNMaxSigTileKey
SG::WriteDecorHandleKey< xAOD::JetContainer > m_jetNMaxSigTileKey
Definition
HIJetSignificanceTool.h:45
HIJetSignificanceTool::decorate
virtual StatusCode decorate(const xAOD::JetContainer &jets) const override
Decorate a jet collection without otherwise modifying it.
Definition
HIJetSignificanceTool.cxx:42
HIJetSignificanceTool::initialize
virtual StatusCode initialize() override
Dummy implementation of the initialisation function.
Definition
HIJetSignificanceTool.cxx:17
HIJetSignificanceTool::m_jetContainerName
Gaudi::Property< std::string > m_jetContainerName
Definition
HIJetSignificanceTool.h:48
HIJetSignificanceTool::m_jetSignificanceTileKey
SG::WriteDecorHandleKey< xAOD::JetContainer > m_jetSignificanceTileKey
Definition
HIJetSignificanceTool.h:46
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::CaloCluster_v1::CELL_SIGNIFICANCE
@ CELL_SIGNIFICANCE
Cell significance = E/sig of the cell with the largest |E|/sig.
Definition
CaloCluster_v1.h:162
xAOD::CaloCluster_v1::CELL_SIG_SAMPLING
@ CELL_SIG_SAMPLING
CaloSample of the cell with the largest |E|/sig.
Definition
CaloCluster_v1.h:164
xAOD::CaloCluster_v1::SIGNIFICANCE
@ SIGNIFICANCE
Cluster significance.
Definition
CaloCluster_v1.h:160
find
std::string find(const std::string &s)
return a remapped string
Definition
hcg.cxx:140
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::CaloCluster
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.
Definition
Event/xAOD/xAODCaloEvent/xAODCaloEvent/CaloCluster.h:19
xAOD::JetEMScaleMomentum
@ JetEMScaleMomentum
Definition
JetTypes.h:28
xAOD::JetContainer
JetContainer_v1 JetContainer
Definition of the current "jet container version".
Definition
JetContainer.h:17
Generated on
for ATLAS Offline Software by
1.17.0