ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
PhysicsAnalysis
D3PDMaker
egammaD3PDAnalysis
src
egammaNbCellsGainAlg.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
// $Id: egammaNbCellsGainAlg.cxx 775880 2016-09-29 15:35:25Z ssnyder $
11
12
13
#include "
egammaNbCellsGainAlg.h
"
14
#include "
D3PDMakerInterfaces/ICollectionGetterTool.h
"
15
#include "
xAODEgamma/Egamma.h
"
16
#include "
xAODCaloEvent/CaloCluster.h
"
17
#include "
AthenaKernel/errorcheck.h
"
18
19
20
21
namespace
D3PD
{
22
23
24
egammaNbCellsGainAlg::egammaNbCellsGainAlg
(
const
std::string& name,
25
ISvcLocator* svcloc)
26
:
AthAlgorithm
(name, svcloc),
27
m_getter
(this)
28
{
29
declareProperty
(
"AuxPrefix"
,
m_auxPrefix
,
30
"Prefix to add to aux data items."
);
31
declareProperty
(
"AllowMissing"
,
m_allowMissing
=
false
,
32
"If true, don't complain if input objects are missing."
);
33
declareProperty
(
"Getter"
,
m_getter
,
34
"Getter instance for the input egamma objects."
);
35
}
36
37
41
StatusCode
egammaNbCellsGainAlg::initialize
()
42
{
43
ATH_MSG_INFO
(
" Starting egammaNbCellsGainAlg"
);
44
45
CHECK
( AthAlgorithm::initialize() );
46
CHECK
(
m_getter
.retrieve() );
47
CHECK
(
m_getter
->configureD3PD<
xAOD::Egamma
>() );
48
return
StatusCode::SUCCESS;
49
}
50
51
55
StatusCode
egammaNbCellsGainAlg::execute
(
const
EventContext&
/*ctx*/
)
56
{
57
StatusCode
sc
= StatusCode::SUCCESS;
58
59
ATH_MSG_DEBUG
(
" In execute: Getting egamma Objects "
);
60
61
#define DECOR(TYPE,N) xAOD::Egamma::Decorator<TYPE> N (m_auxPrefix + #N)
62
DECOR
(
int
, nbCells_s0LowGain);
63
DECOR
(
int
, nbCells_s0MedGain);
64
DECOR
(
int
, nbCells_s0HighGain);
65
66
DECOR
(
int
, nbCells_s1LowGain);
67
DECOR
(
int
, nbCells_s1MedGain);
68
DECOR
(
int
, nbCells_s1HighGain);
69
70
DECOR
(
int
, nbCells_s2LowGain);
71
DECOR
(
int
, nbCells_s2MedGain);
72
DECOR
(
int
, nbCells_s2HighGain);
73
74
DECOR
(
int
, nbCells_s3LowGain);
75
DECOR
(
int
, nbCells_s3MedGain);
76
DECOR
(
int
, nbCells_s3HighGain);
77
#undef DECOR
78
79
CHECK
(
m_getter
->reset (
m_allowMissing
) );
80
while
(
const
xAOD::Egamma
* eg =
m_getter
->next<
xAOD::Egamma
>()){
81
const
xAOD::CaloCluster
*cluster = eg->caloCluster();
82
83
int
cell_nbcells_gainlow[4];
84
int
cell_nbcells_gainmed[4];
85
int
cell_nbcells_gainhgh[4];
86
87
for
(
int
i=0; i<4; i++){
88
cell_nbcells_gainlow[i]=0;
89
cell_nbcells_gainmed[i]=0;
90
cell_nbcells_gainhgh[i]=0;
91
}
92
93
ATH_MSG_DEBUG
(
" Checking Cluster "
);
94
95
if
(cluster){
96
if
(cluster->
getCellLinks
()){
97
98
for
(
const
CaloCell
* cell : *cluster) {
99
int
sampling = cell->caloDDE()->getSampling();
100
int
layer = -1;
101
switch
(sampling){
102
case
CaloCell_ID::PreSamplerB:
103
case
CaloCell_ID::PreSamplerE:
104
layer=0;
105
break
;
106
case
CaloCell_ID::EMB1:
107
case
CaloCell_ID::EME1:
108
layer=1;
109
break
;
110
case
CaloCell_ID::EMB2:
111
case
CaloCell_ID::EME2:
112
layer=2;
113
break
;
114
case
CaloCell_ID::EMB3:
115
case
CaloCell_ID::EME3:
116
layer=3;
117
break
;
118
default
:
119
break
;
120
}
121
122
if
(layer < 0)
continue
;
123
124
switch
(cell->gain()){
125
case
0: cell_nbcells_gainhgh[layer]++;
break
;
126
case
1: cell_nbcells_gainmed[layer]++;
break
;
127
case
2: cell_nbcells_gainlow[layer]++;
break
;
128
default
:
break
;
129
}
130
}
131
}
132
}
133
134
nbCells_s0LowGain(*eg) = cell_nbcells_gainlow[0];
135
nbCells_s0MedGain(*eg) = cell_nbcells_gainmed[0];
136
nbCells_s0HighGain(*eg) = cell_nbcells_gainhgh[0];
137
138
nbCells_s1LowGain(*eg) = cell_nbcells_gainlow[1];
139
nbCells_s1MedGain(*eg) = cell_nbcells_gainmed[1];
140
nbCells_s1HighGain(*eg) = cell_nbcells_gainhgh[1];
141
142
nbCells_s2LowGain(*eg) = cell_nbcells_gainlow[2];
143
nbCells_s2MedGain(*eg) = cell_nbcells_gainmed[2];
144
nbCells_s2HighGain(*eg) = cell_nbcells_gainhgh[2];
145
146
nbCells_s3LowGain(*eg) = cell_nbcells_gainlow[3];
147
nbCells_s3MedGain(*eg) = cell_nbcells_gainmed[3];
148
nbCells_s3HighGain(*eg) = cell_nbcells_gainhgh[3];
149
150
m_getter
->releaseElement (eg);
151
}
152
153
return
sc
;
154
}
155
}
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition
AthMsgStreamMacros.h:31
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
errorcheck.h
Helpers for checking error return status codes and reporting errors.
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition
Control/AthenaKernel/AthenaKernel/errorcheck.h:422
Egamma.h
CaloCluster.h
ICollectionGetterTool.h
Abstract interface to get a collection of objects and iterate over it.
sc
static Double_t sc
Definition
LArPhysWaveHECTool.cxx:37
AthAlgorithm::AthAlgorithm
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
Definition
AthAlgorithm.cxx:10
AthCommonAlgorithm< Gaudi::Algorithm >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition
AthCommonDataStore.h:145
CaloCell
Data object for each calorimeter readout cell.
Definition
CaloCell.h:57
D3PD::egammaNbCellsGainAlg::execute
virtual StatusCode execute(const EventContext &ctx)
Standard Gaudi execute method.
Definition
egammaNbCellsGainAlg.cxx:55
D3PD::egammaNbCellsGainAlg::egammaNbCellsGainAlg
egammaNbCellsGainAlg(const std::string &name, ISvcLocator *svcloc)
Standard Gaudi algorithm constructor.
Definition
egammaNbCellsGainAlg.cxx:24
D3PD::egammaNbCellsGainAlg::m_getter
ToolHandle< ICollectionGetterTool > m_getter
Property: Getter for input egamma objects.
Definition
egammaNbCellsGainAlg.h:59
D3PD::egammaNbCellsGainAlg::m_auxPrefix
std::string m_auxPrefix
Property: Prefix to add to aux data items.
Definition
egammaNbCellsGainAlg.h:56
D3PD::egammaNbCellsGainAlg::m_allowMissing
bool m_allowMissing
Property: If true, don't complain if input objects are missing.
Definition
egammaNbCellsGainAlg.h:62
D3PD::egammaNbCellsGainAlg::initialize
virtual StatusCode initialize()
Standard Gaudi initialize method.
Definition
egammaNbCellsGainAlg.cxx:41
xAOD::CaloCluster_v1::getCellLinks
const CaloClusterCellLink * getCellLinks() const
Get a pointer to the CaloClusterCellLink object (const version).
Definition
CaloCluster_v1.cxx:829
DECOR
#define DECOR(TYPE, N)
egammaNbCellsGainAlg.h
Number of cells with given gain by layer.
D3PD
Block filler tool for noisy FEB information.
Definition
CaloCellDetailsFillerTool.cxx:29
xAOD::CaloCluster
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.
Definition
Event/xAOD/xAODCaloEvent/xAODCaloEvent/CaloCluster.h:19
xAOD::Egamma
Egamma_v1 Egamma
Definition of the current "egamma version".
Definition
Egamma.h:17
Generated on
for ATLAS Offline Software by
1.17.0