ATLAS Offline Software
egammaOQFlagsBuilder.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // INCLUDE HEADER FILES:
6 #include "egammaOQFlagsBuilder.h"
8 #include "xAODEgamma/Egamma.h"
10 #include <algorithm>
11 #include <vector>
12 
16 #include "FourMomUtils/P4Helpers.h"
17 #include "GaudiKernel/SystemOfUnits.h"
19 #include "StoreGate/ReadHandle.h"
20 #include "StoreGate/StoreGateSvc.h"
21 
22 namespace {
23 bool
24 findCentralCell(const xAOD::CaloCluster* cluster, Identifier& cellCentrId)
25 {
26 
27  bool thereIsACentrCell = false;
28 
29  // LOOP OVER CLUSTER TO FIND THE CENTRAL CELL IN S2
31  xAOD::CaloCluster::const_cell_iterator cellIterEnd = cluster->cell_end();
32  float clusEta = cluster->eta();
33  float clusPhi = cluster->phi();
34  float energymax = -999999.;
35 
36  for (; cellIter != cellIterEnd; cellIter++) {
37  const CaloCell* cell = (*cellIter);
38  if (!cell) {
39  continue;
40  }
41  float eta = cell->eta();
42  float phi = cell->phi();
43  float energy = cell->energy();
44  CaloSampling::CaloSample layer = cell->caloDDE()->getSampling();
45  if (std::abs(eta - clusEta) < 0.025 &&
46  std::abs(P4Helpers::deltaPhi(phi, clusPhi)) < 0.025 &&
48  (energy > energymax)) {
49  energymax = energy;
50  cellCentrId = cellIter->ID();
51  thereIsACentrCell = true;
52  }
53  }
54  return thereIsACentrCell;
55 }
56 bool
57 isCore(const Identifier Id,
58  const std::vector<IdentifierHash>& neighbourList,
59  const CaloCell_ID* calocellId)
60 {
61  const IdentifierHash hashId = calocellId->calo_cell_hash(Id);
62  std::vector<IdentifierHash>::const_iterator it =
63  std::find(neighbourList.begin(), neighbourList.end(), hashId);
64  return (it != neighbourList.end());
65 }
66 
67 std::vector<IdentifierHash>
68 findNeighbours(const Identifier cellCentrId,
69  const LArEM_ID* emHelper,
70  const CaloCell_ID* calocellId)
71 {
72  std::vector<IdentifierHash> neighbourList;
73  const IdentifierHash hashId = calocellId->calo_cell_hash(cellCentrId);
74  emHelper->get_neighbours(hashId, LArNeighbours::all2D, neighbourList);
75  return neighbourList;
76 }
77 
78 void maskIflagIf(
79  unsigned int &iflag,
80  const xAOD::EgammaParameters::BitDefOQ &parameter,
81  const bool &applyMask
82 ){
83  if (applyMask) {
84  iflag |= (0x1 << parameter);
85  }
86 }
87 
88 template <typename ...T>
89 bool chainIsAffected(
90  const ToolHandle<ICaloAffectedTool> &affectedTool,
91  const xAOD::CaloCluster* cluster,
92  const CaloAffectedRegionInfoVec* affCont,
93  const float &deta,
94  const float &dphi,
95  const int &problemType,
96  const T ...samplings
97 ) {
98  bool value = false;
99 
100  for (const CaloSampling::CaloSample sampling : {samplings...}) {
101  value |= affectedTool->isAffected(
102  cluster,
103  affCont,
104  deta,
105  dphi,
106  sampling,
107  sampling,
108  problemType);
109  }
110 
111  return value;
112 }
113 
114 void coreCellHelper(const bool isMissing, const bool isMasked,
115  const bool isSporadicNoise, const bool isAffected,
116  const bool isHighQ, unsigned int& iflag) {
117  maskIflagIf(iflag, xAOD::EgammaParameters::MissingFEBCellCore, isMissing);
118  maskIflagIf(iflag, xAOD::EgammaParameters::MaskedCellCore, isMasked);
119  maskIflagIf(iflag, xAOD::EgammaParameters::SporadicNoiseLowQCore, isSporadicNoise);
120  maskIflagIf(iflag, xAOD::EgammaParameters::AffectedCellCore, isAffected);
121  maskIflagIf(iflag, xAOD::EgammaParameters::HighQCore, isHighQ);
122 }
123 
124 void missingHelper(const bool isPresampler, const bool isL1,
125  const bool isStripCoreCell, const bool isL2, const bool isL3,
126  unsigned int& iflag) {
127  if (isPresampler) {
129  } else if (isL1) {
131  if (isStripCoreCell) {
132  iflag |= (0x1 << xAOD::EgammaParameters::BadS1Core);
133  }
134  } else if (isL2) {
136  } else if (isL3) {
138  }
139 }
140 
141 void maskedHelper(const bool isPresampler, const bool isL1,
142  const bool isStripCoreCell, const bool isL2, const bool isL3,
143  unsigned int& iflag) {
144  if (isPresampler) {
146  } else if (isL1) {
148  maskIflagIf(iflag, xAOD::EgammaParameters::BadS1Core, isStripCoreCell);
149  } else if (isL2) {
151  } else if (isL3) {
153  }
154 }
155 
156 void affectedHelper(const bool isPresampler, const bool isL1, const bool isL2,
157  const bool isL3, unsigned int& iflag) {
158  if (isPresampler) {
160  } else if (isL1) {
162  } else if (isL2) {
164  } else if (isL3) {
166  }
167 }
168 
169 } // end anonymous namespace
170 
172  const std::string& name,
173  const IInterface* parent)
175  , m_emHelper(nullptr)
176  , m_calocellId(nullptr)
177 {
178  declareInterface<IegammaOQFlagsBuilder>(this);
179 }
180 
183 {
185  ATH_CHECK(m_bcContKey.initialize());
187 
188  // Get CaloAffectedTool
189  ATH_CHECK(m_affectedTool.retrieve());
190  ATH_CHECK(detStore()->retrieve(m_calocellId, "CaloCell_ID"));
192 
193  return StatusCode::SUCCESS;
194 }
195 
198 {
199  return StatusCode::SUCCESS;
200 }
201 
203 egammaOQFlagsBuilder::execute(const EventContext& ctx,
204  xAOD::Egamma& eg) const
205 {
206  // Protection against bad pointers
207  const xAOD::CaloCluster* cluster = eg.caloCluster();
208  if (!cluster) {
209  return StatusCode::SUCCESS;
210  }
211  if (cluster->size() == 0) {
212  return StatusCode::SUCCESS;
213  }
214  //
215  const float clusterEta = cluster->eta();
216  //
217  // In case we have the sizes set during the cluster construction.
218  int etaSize = cluster->getClusterEtaSize();
219  int phiSize = cluster->getClusterPhiSize();
220  // If no proper size could be found automatically, deduce by hand
221  // for the known std cases
222  if (etaSize == 0 && phiSize == 0) {
223  if (xAOD::EgammaHelpers::isBarrel(cluster)) {
224  etaSize = 3;
225  phiSize = 7;
226  }
227  else {
228  etaSize = 5;
229  phiSize = 5;
230  }
231  }
232 
233  unsigned int iflag = eg.OQ();
234 
235  // Set timing bit
236  const double absEnergyGeV = std::abs(cluster->e() * (1. / Gaudi::Units::GeV));
237  maskIflagIf(
238  iflag,
240  absEnergyGeV != 0 && std::abs(cluster->time()) > m_TCut + m_TCutVsE / absEnergyGeV);
241 
242  // Declare totE and badE for LarQ cleaning
243  double totE = 0;
244  double badE = 0;
245  double energyCellMax = 0;
246  // Find the central cell in the middle layer
247  Identifier cellCentrId;
248  bool foundCentralCell = findCentralCell(cluster, cellCentrId);
249  if (foundCentralCell) {
250  // Find the list of neighbours cells, to define the 3x3 cluster core
251  std::vector<IdentifierHash> neighbourList =
252  findNeighbours(cellCentrId, m_emHelper, m_calocellId);
253  // Get Bad-channel info for this event
255  const LArBadChannelCont* larBadChanCont = *larBadChanHdl;
256 
257  // Loop over all the Lar cluster cells
259  xAOD::CaloCluster::const_cell_iterator cellIterEnd = cluster->cell_end();
260  for (; cellIter != cellIterEnd; cellIter++) {
261  const CaloCell* cell = (*cellIter);
262  if (!cell) {
263  continue;
264  }
265  // Check we are not tile
266  if (cell->caloDDE()->is_tile()) {
267  continue;
268  }
269  // Find cell parameters and properties
270  const float eta = cell->eta();
271  // float phi = cell->phi(); // no longer used
272  const float qual = cell->quality();
273  const bool isHighQ = qual >= 4000;
274  const CaloSampling::CaloSample layer = cell->caloDDE()->getSampling();
275 
276  const bool isMissing = ((cell->provenance() & 0x0A00) == 0x0A00);
277  const bool isMasked = ((cell->provenance() & 0x0A00) == 0x0800);
278  const bool isPresampler = (layer == CaloSampling::PreSamplerB ||
280  const bool isL1 =
282  const bool isL2 =
284  const bool isL3 =
286 
287  // Calculate badE et totE
288  if ((cell->provenance() & 0x2000) && !(cell->provenance() & 0x0800)) {
289  totE += cell->e();
290  if (cell->e() > energyCellMax) {
291  energyCellMax = cell->e();
292  }
293  if (qual > m_QCellCut) {
294  badE += cell->e();
295  }
296  }
297  const bool isACoreCell = isCore(cell->ID(), neighbourList, m_calocellId);
298 
299  bool isStripCoreCell = false;
301  std::abs(eta - clusterEta) < 0.025 / 2.) {
302  isStripCoreCell = true;
303  }
304 
305  // Set HEC bit
307  qual > m_QCellHECCut) {
308  iflag |= (0x1 << xAOD::EgammaParameters::HECHighQ);
309  }
310 
311  // Set LAr bits
312  const LArBadChannel bc = larBadChanCont->offlineStatus(cell->ID());
313  const bool isAffected =
314  (bc.deadCalib() || bc.lowNoiseHG() || bc.lowNoiseMG() ||
315  bc.lowNoiseLG() || bc.distorted() || bc.unstable() ||
316  bc.unstableNoiseHG() || bc.unstableNoiseMG() || bc.unstableNoiseLG() ||
317  bc.peculiarCalibrationLine() || bc.almostDead() || bc.shortProblem());
318 
319  const bool isSporadicNoise =
321 
322  if (isACoreCell) {
323  coreCellHelper(isMissing, isMasked, isSporadicNoise, isAffected,
324  isHighQ, iflag);
325  } // end if isACoreCell
326  else {
327  if (isMissing) {
328  missingHelper(isPresampler, isL1, isStripCoreCell, isL2, isL3, iflag);
329  } // isMissing
330  if (isMasked) {
331  maskedHelper(isPresampler, isL1, isStripCoreCell, isL2, isL3, iflag);
332  } // isMasked
333  if (isAffected) {
334  affectedHelper(isPresampler, isL1, isL2, isL3, iflag);
335  } // is affected
336 
337  maskIflagIf(iflag, xAOD::EgammaParameters::SporadicNoiseLowQEdge, isSporadicNoise);
338  maskIflagIf(iflag, xAOD::EgammaParameters::HighQEdge, isHighQ);
339  }
340  } // end loop over LAr cells
341 
342  // Set LArQCleaning bit
343  double egammaLArQCleaning = 0;
344  if (totE != 0) {
345  egammaLArQCleaning = badE / totE;
346  }
347  maskIflagIf(
348  iflag,
350  egammaLArQCleaning > m_LArQCut);
351 
352  // Set HighRcell bit//
353  double ratioCell = 0;
354  if (totE != 0) {
355  ratioCell = energyCellMax / totE;
356  }
357  maskIflagIf(
358  iflag,
360  ratioCell > m_RcellCut);
361  } // close if found central cell
362 
363  // Check the HV components
364  float deta = 0;
365  float dphi = 0;
366 
367  // Get affected info for this event
369  const CaloAffectedRegionInfoVec* affCont = *affHdl;
370  if (!affCont) {
371  ATH_MSG_WARNING("Do not have affected regions info, is this expected ?");
372  }
373 
374  //--------------> PRE SAMPLER
375  deta = 0.5 * 0.025 * etaSize;
376  dphi = 0.5 * 0.025 * phiSize;
377 
378  bool isNonNominalHVPS = chainIsAffected(
380  cluster,
381  affCont,
382  deta,
383  dphi,
384  1,
387  maskIflagIf(iflag, xAOD::EgammaParameters::NonNominalHVPS, isNonNominalHVPS);
388  bool isDeadHVPS = chainIsAffected(
390  cluster,
391  affCont,
392  deta,
393  dphi,
394  2,
397  maskIflagIf(iflag, xAOD::EgammaParameters::DeadHVPS, isDeadHVPS);
398 
399  //---------------> SAMPLING 2 : CLUSTER CORE
400  deta = 0.5 * 0.025 * 3.;
401  dphi = 0.5 * 0.025 * 3.;
402  bool isDeadHVS2Core = chainIsAffected(
404  cluster,
405  affCont,
406  deta,
407  dphi,
408  2,
411  maskIflagIf(iflag, xAOD::EgammaParameters::DeadHVS1S2S3Core, isDeadHVS2Core);
412 
413  //----------------> SAMPLINGS 1,2,3 : CLUSTER EDGE
414  deta = 0.5 * 0.025 * etaSize;
415  dphi = 0.5 * 0.025 * phiSize;
416 
417  bool isNonNominalHVS1S2S3 = chainIsAffected(
419  cluster,
420  affCont,
421  deta,
422  dphi,
423  1,
430  maskIflagIf(iflag, xAOD::EgammaParameters::NonNominalHVS1S2S3, isNonNominalHVS1S2S3);
431 
432  bool isDeadHVS1S2S3Edge = chainIsAffected(
434  cluster,
435  affCont,
436  deta,
437  dphi,
438  2,
445  maskIflagIf(iflag, xAOD::EgammaParameters::DeadHVS1S2S3Edge, isDeadHVS1S2S3Edge);
446 
447  eg.setOQ(iflag);
448  ATH_MSG_DEBUG("Executing egammaOQFlagsBuilder::execute");
449  return StatusCode::SUCCESS;
450 }
451 
xAOD::EgammaParameters::BitDefOQ
BitDefOQ
Definition: EgammaDefs.h:46
CaloAffectedRegionInfoVec.h
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
xAOD::EgammaParameters::MissingFEBCellEdgePS
@ MissingFEBCellEdgePS
Missing FEB in the edge of the cluster.
Definition: EgammaDefs.h:62
xAOD::CaloCluster_v1::phi
virtual double phi() const
The azimuthal angle ( ) of the particle.
Definition: CaloCluster_v1.cxx:256
LArBadChannel::shortProblem
bool shortProblem() const
Definition: LArBadChannel.h:111
CaloAffectedRegionInfoVec
std::vector< CaloAffectedRegionInfo > CaloAffectedRegionInfoVec
Definition: CaloAffectedRegionInfoVec.h:11
xAOD::CaloCluster_v1::time
flt_t time() const
Access cluster time.
LArBadChannel::lowNoiseHG
bool lowNoiseHG() const
Definition: LArBadChannel.h:114
egammaOQFlagsBuilder::m_affKey
SG::ReadCondHandleKey< CaloAffectedRegionInfoVec > m_affKey
Definition: egammaOQFlagsBuilder.h:78
xAOD::CaloCluster_v1::cell_begin
const_cell_iterator cell_begin() const
Iterator of the underlying CaloClusterCellLink (const version)
Definition: CaloCluster_v1.h:812
xAOD::EgammaParameters::AffectedCellCore
@ AffectedCellCore
Affected cell in the core of the cluster.
Definition: EgammaDefs.h:91
LArEM_ID.h
CaloCell_Base_ID::calo_cell_hash
IdentifierHash calo_cell_hash(const Identifier cellId) const
create hash id from 'global' cell id
constants.EMB1
int EMB1
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:53
ReadCellNoiseFromCool.cell
cell
Definition: ReadCellNoiseFromCool.py:53
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
LArBadChannel::deadCalib
bool deadCalib() const
Definition: LArBadChannel.h:108
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
xAOD::EgammaParameters::LArQCleaning
@ LArQCleaning
Cleaning based on LArQ factor--> sum[ E(Q>4000)/E].
Definition: EgammaDefs.h:105
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
LArBadChannel::unstableNoiseLG
bool unstableNoiseLG() const
Definition: LArBadChannel.h:122
ParticleTest.eg
eg
Definition: ParticleTest.py:29
egammaOQFlagsBuilder::m_affectedTool
ToolHandle< ICaloAffectedTool > m_affectedTool
Definition: egammaOQFlagsBuilder.h:85
LArBadChannel::lowNoiseLG
bool lowNoiseLG() const
Definition: LArBadChannel.h:120
xAOD::EgammaParameters::HighQEdge
@ HighQEdge
High quality factor cell in the edge of the cluster.
Definition: EgammaDefs.h:89
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
xAOD::EgammaParameters::HECHighQ
@ HECHighQ
High quality factor cell in the HEC.
Definition: EgammaDefs.h:101
egammaOQFlagsBuilder::finalize
StatusCode finalize()
finalize method
Definition: egammaOQFlagsBuilder.cxx:197
egammaOQFlagsBuilder.h
xAOD::EgammaParameters::AffectedCellEdgeS2
@ AffectedCellEdgeS2
Affected middle cell in the edge of the cluster.
Definition: EgammaDefs.h:97
xAOD::EgammaParameters::MaskedCellEdgePS
@ MaskedCellEdgePS
Masked presampler cell in the edge of the cluster.
Definition: EgammaDefs.h:73
LArBadXCont
Conditions-Data class holding LAr Bad Channel or Bad Feb information.
Definition: LArBadChannelCont.h:28
egammaOQFlagsBuilder::m_LArQCut
Gaudi::Property< double > m_LArQCut
Definition: egammaOQFlagsBuilder.h:103
xAOD::EgammaParameters::MissingFEBCellEdgeS1
@ MissingFEBCellEdgeS1
Missing FEB in the edge of the cluster.
Definition: EgammaDefs.h:64
LArBadChannel::sporadicBurstNoise
bool sporadicBurstNoise() const
Definition: LArBadChannel.h:126
xAOD::EgammaParameters::BadS1Core
@ BadS1Core
Missing FEB or masked cell in S1 core (corresponding to the 8 strips in front of the core of the clus...
Definition: EgammaDefs.h:81
skel.it
it
Definition: skel.GENtoEVGEN.py:423
egammaOQFlagsBuilder::m_QCellSporCut
Gaudi::Property< double > m_QCellSporCut
Definition: egammaOQFlagsBuilder.h:102
xAOD::EgammaParameters::MissingFEBCellEdgeS2
@ MissingFEBCellEdgeS2
Missing FEB in the edge of the cluster.
Definition: EgammaDefs.h:66
egammaOQFlagsBuilder::m_calocellId
const CaloCell_ID * m_calocellId
Definition: egammaOQFlagsBuilder.h:91
egammaOQFlagsBuilder::m_bcContKey
SG::ReadCondHandleKey< LArBadChannelCont > m_bcContKey
Handle to bad-channel CDO.
Definition: egammaOQFlagsBuilder.h:71
xAOD::EgammaParameters::NonNominalHVPS
@ NonNominalHVPS
Non Nominal High Voltage in the EM Presampler.
Definition: EgammaDefs.h:55
LArBadChannel::almostDead
bool almostDead() const
Definition: LArBadChannel.h:110
athena.value
value
Definition: athena.py:122
xAOD::Egamma_v1
Definition: Egamma_v1.h:56
xAOD::EgammaParameters::MaskedCellEdgeS1
@ MaskedCellEdgeS1
Masked strip cell in the edge of the cluster.
Definition: EgammaDefs.h:75
LArBadXCont::offlineStatus
LArBC_t offlineStatus(const Identifier id) const
Query the status of a particular channel by offline ID This is the main client access method.
egammaOQFlagsBuilder::execute
virtual StatusCode execute(const EventContext &ctx, xAOD::Egamma &egamma) const
standard execute method
Definition: egammaOQFlagsBuilder.cxx:203
egammaOQFlagsBuilder::m_emHelper
const LArEM_ID * m_emHelper
Definition: egammaOQFlagsBuilder.h:90
egammaOQFlagsBuilder::m_QCellHECCut
Gaudi::Property< double > m_QCellHECCut
Definition: egammaOQFlagsBuilder.h:101
egammaOQFlagsBuilder::m_RcellCut
Gaudi::Property< double > m_RcellCut
Definition: egammaOQFlagsBuilder.h:106
xAOD::EgammaParameters::DeadHVPS
@ DeadHVPS
Dead High Voltage in the EM Presampler.
Definition: EgammaDefs.h:48
xAOD::EgammaParameters::AffectedCellEdgeS1
@ AffectedCellEdgeS1
Affected strip cell in the edge of the cluster.
Definition: EgammaDefs.h:95
CaloCell_ID.h
AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
xAOD::EgammaParameters::MissingFEBCellEdgeS3
@ MissingFEBCellEdgeS3
Missing FEB in the edge of the cluster.
Definition: EgammaDefs.h:68
LArBadChannel::unstableNoiseHG
bool unstableNoiseHG() const
Definition: LArBadChannel.h:116
egammaOQFlagsBuilder::m_TCut
Gaudi::Property< double > m_TCut
Definition: egammaOQFlagsBuilder.h:104
xAOD::EgammaHelpers::isBarrel
bool isBarrel(const xAOD::Egamma *eg)
return true if the cluster is in the barrel
Definition: EgammaxAODHelpers.cxx:34
Egamma.h
xAOD::CaloCluster_v1
Description of a calorimeter cluster.
Definition: CaloCluster_v1.h:59
P4Helpers::deltaPhi
double deltaPhi(double phiA, double phiB)
delta Phi in range [-pi,pi[
Definition: P4Helpers.h:29
EgammaxAODHelpers.h
xAOD::EgammaParameters::HighQCore
@ HighQCore
High quality factor cell in the core of the cluster.
Definition: EgammaDefs.h:87
ParticleGun_FastCalo_ChargeFlip_Config.energy
energy
Definition: ParticleGun_FastCalo_ChargeFlip_Config.py:78
xAOD::EgammaParameters::MaskedCellEdgeS2
@ MaskedCellEdgeS2
Masked middle cell in the edge of the cluster.
Definition: EgammaDefs.h:77
constants.EMB2
int EMB2
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:54
xAOD::CaloCluster_v1::getClusterEtaSize
unsigned int getClusterEtaSize() const
Get eta size from cluster size.
Definition: CaloCluster_v1.cxx:823
xAOD::CaloCluster_v1::eta
virtual double eta() const
The pseudorapidity ( ) of the particle.
Definition: CaloCluster_v1.cxx:251
CaloSampling::CaloSample
CaloSample
Definition: Calorimeter/CaloGeoHelpers/CaloGeoHelpers/CaloSampling.h:22
CaloCluster.h
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
LArBadChannel::unstableNoiseMG
bool unstableNoiseMG() const
Definition: LArBadChannel.h:119
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
LArBadChannel
Definition: LArBadChannel.h:10
xAOD::EgammaParameters::NonNominalHVS1S2S3
@ NonNominalHVS1S2S3
Non Nominal High Voltage in the EM strips, middle and back.
Definition: EgammaDefs.h:57
test_pyathena.parent
parent
Definition: test_pyathena.py:15
xAOD::CaloCluster_v1::size
size_t size() const
size method (forwarded from CaloClusterCellLink obj)
Definition: CaloCluster_v1.cxx:996
constants.EME1
int EME1
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:55
xAOD::EgammaParameters::AffectedCellEdgeS3
@ AffectedCellEdgeS3
Affected back cell in the edge of the cluster.
Definition: EgammaDefs.h:99
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CaloCell_ID
Helper class for offline cell identifiers.
Definition: CaloCell_ID.h:34
egammaOQFlagsBuilder::egammaOQFlagsBuilder
egammaOQFlagsBuilder(const std::string &type, const std::string &name, const IInterface *parent)
Default constructor.
Definition: egammaOQFlagsBuilder.cxx:171
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
xAOD::CaloCluster_v1::getClusterPhiSize
unsigned int getClusterPhiSize() const
Get phi size from cluster size.
Definition: CaloCluster_v1.cxx:845
xAOD::EgammaParameters::MissingFEBCellCore
@ MissingFEBCellCore
Missing FEB in the core of the cluster.
Definition: EgammaDefs.h:60
P4Helpers.h
egammaOQFlagsBuilder::m_cellsKey
SG::ReadHandleKey< CaloCellContainer > m_cellsKey
Definition: egammaOQFlagsBuilder.h:93
LArBadChannel::lowNoiseMG
bool lowNoiseMG() const
Definition: LArBadChannel.h:117
HWIdentifier.h
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
CaloCell_ID_FCS::EME3
@ EME3
Definition: FastCaloSim_CaloCell_ID.h:26
LArBadChannel::peculiarCalibrationLine
bool peculiarCalibrationLine() const
Definition: LArBadChannel.h:124
LArEM_Base_ID::get_neighbours
int get_neighbours(const IdentifierHash id, const LArNeighbours::neighbourOption &option, std::vector< IdentifierHash > &neighbourList) const
access to hashes for neighbours return == 0 for neighbours found option = prevInPhi,...
Definition: LArEM_Base_ID.cxx:696
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
egammaOQFlagsBuilder::initialize
StatusCode initialize()
initialize method
Definition: egammaOQFlagsBuilder.cxx:182
CaloCell::ID
Identifier ID() const
get ID (from cached data member) non-virtual and inline for fast access
Definition: CaloCell.h:279
xAOD::EgammaParameters::DeadHVS1S2S3Edge
@ DeadHVS1S2S3Edge
Dead High Voltage in the EM strips, middle and back affecting the edge of the cluster.
Definition: EgammaDefs.h:52
xAOD::EgammaParameters::SporadicNoiseLowQEdge
@ SporadicNoiseLowQEdge
Sporadic noisy cell in the edge of the cluster.
Definition: EgammaDefs.h:85
CaloCell_ID_FCS::HEC0
@ HEC0
Definition: FastCaloSim_CaloCell_ID.h:27
xAOD::EgammaParameters::AffectedCellEdgePS
@ AffectedCellEdgePS
Affected presampler cell in the edge of the cluster.
Definition: EgammaDefs.h:93
xAOD::EgammaParameters::HighRcell
@ HighRcell
High R_cell -—> Energy of the most energetic cell / total energy of the cluster.
Definition: EgammaDefs.h:111
LArBadChannel::unstable
bool unstable() const
Definition: LArBadChannel.h:112
CaloCell
Data object for each calorimeter readout cell.
Definition: CaloCell.h:57
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
CaloCell_ID_FCS::PreSamplerE
@ PreSamplerE
Definition: FastCaloSim_CaloCell_ID.h:23
CaloCell_ID_FCS::PreSamplerB
@ PreSamplerB
Definition: FastCaloSim_CaloCell_ID.h:19
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
xAOD::CaloCluster_v1::cell_end
const_cell_iterator cell_end() const
Definition: CaloCluster_v1.h:813
LArBadChannel::distorted
bool distorted() const
Definition: LArBadChannel.h:113
beamspotman.qual
qual
Definition: beamspotman.py:481
xAOD::EgammaParameters::OutTime
@ OutTime
Out of time cell.
Definition: EgammaDefs.h:103
xAOD::EgammaParameters::MaskedCellEdgeS3
@ MaskedCellEdgeS3
Masked back cell in the edge of the cluster.
Definition: EgammaDefs.h:79
LArEM_ID
Helper class for LArEM offline identifiers.
Definition: LArEM_ID.h:118
ReadHandle.h
Handle class for reading from StoreGate.
AthAlgTool
Definition: AthAlgTool.h:26
IdentifierHash
Definition: IdentifierHash.h:38
CaloCell_ID_FCS::HEC3
@ HEC3
Definition: FastCaloSim_CaloCell_ID.h:30
CaloCell_ID_FCS::EMB3
@ EMB3
Definition: FastCaloSim_CaloCell_ID.h:22
GeV
#define GeV
Definition: CaloTransverseBalanceVecMon.cxx:30
xAOD::EgammaParameters::SporadicNoiseLowQCore
@ SporadicNoiseLowQCore
Sporadic noisy cell in the core of the cluster.
Definition: EgammaDefs.h:83
StoreGateSvc.h
xAOD::EgammaParameters::DeadHVS1S2S3Core
@ DeadHVS1S2S3Core
Dead High Voltage in the EM strips, middle and back affecting the core of the cluster.
Definition: EgammaDefs.h:50
xAOD::CaloCluster_v1::e
virtual double e() const
The total energy of the particle.
Definition: CaloCluster_v1.cxx:265
LArNeighbours::all2D
@ all2D
Definition: LArNeighbours.h:18
constants.EME2
int EME2
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:56
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35
egammaOQFlagsBuilder::m_QCellCut
Gaudi::Property< double > m_QCellCut
Definition: egammaOQFlagsBuilder.h:100
egammaOQFlagsBuilder::m_TCutVsE
Gaudi::Property< double > m_TCutVsE
Definition: egammaOQFlagsBuilder.h:105
xAOD::EgammaParameters::MaskedCellCore
@ MaskedCellCore
Masked cell in the core of the cluster.
Definition: EgammaDefs.h:71