ATLAS Offline Software
TileCellContainerCnv.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 "TileCellContainerCnv.h"
8 
9 #include "GaudiKernel/StatusCode.h"
10 #include "GaudiKernel/MsgStream.h"
11 #include "GaudiKernel/IChronoStatSvc.h"
12 
13 // Athena
14 #include "StoreGate/StoreGateSvc.h"
15 
16 // false positive
17 // cppcheck-suppress uninitMemberVar
20  // Must create DataVector that does NOT own elements
21  , m_storeGate(0)
22  , m_tileTBID(0)
23  , m_mbtsMgr(0)
24  , m_version(0)
25  , m_id()
26  , m_dde()
27  , m_gainIndex()
28  , m_gain()
29 {
30 }
31 
32 
34 {
35 }
36 
38 {
39  // Call base clase initialize
40  if (!AthenaPoolConverter::initialize().isSuccess()) {
41  return StatusCode::FAILURE;
42  }
43 
44  // version 2 by default
45  m_version = 2;
46 
47  // Get the messaging service, print where you are
48  MsgStream log(msgSvc(), "TileCellContainerCnv");
49  log << MSG::INFO << "TileCellContainerCnv::initialize(), packing format version " << m_version << endmsg;
50 
51  // get StoreGate service
52  StatusCode sc=service("StoreGateSvc",m_storeGate);
53  if (sc.isFailure()) {
54  this->initIdToIndex();
55  log << MSG::ERROR << "StoreGate service not found !" << endmsg;
56  // log << MSG::FATAL << "StoreGate service not found !" << endmsg;
57  // return StatusCode::FAILURE;
58  }
59 
61  sc=service("DetectorStore",detStore);
62  if (sc.isFailure()) {
63  this->initIdToIndex();
64  log << MSG::ERROR << "DetectorStore service not found!" << endmsg;
65  // log << MSG::FATAL << "DetectorStore service not found!" << endmsg;
66  // return StatusCode::FAILURE;
67  }
68 
69  sc = detStore->retrieve(m_tileTBID);
70  if (sc.isFailure()) {
71  this->initIdToIndex();
72  log << MSG::ERROR << "No TileTBID helper" << endmsg;
73  // log << MSG::FATAL << "No TileTBID helper" << endmsg;
74  // return StatusCode::FAILURE;
75  } else {
76  for (int side=0; side<NSIDE; ++side) {
77  for (int phi=0; phi<NPHI; ++phi) {
78  for (int eta=0; eta<NETA; ++eta) {
80  }
81  }
82  }
83  }
84 
85  sc = detStore->retrieve(m_mbtsMgr);
86  if (sc.isFailure()) {
87  log << MSG::WARNING << "Unable to retrieve MbtsDetDescrManager from DetectorStore" << endmsg;
88  memset(m_dde,0,sizeof(m_dde));
89  } else {
90  for (int side=0; side<NSIDE; ++side) {
91  for (int phi=0; phi<NPHI; ++phi) {
92  for (int eta=0; eta<NETA; ++eta) {
94  }
95  }
96  }
97  }
98 
99 
100  // set CaloGain <-> gain index mapping for all possible TileCal gains
101  for (int i=0; i<17; ++i) m_gainIndex[i] = 8;
102  m_gain[0] = -2; // put non-existing gain here
110 
111  return StatusCode::SUCCESS;
112 }
113 
115 {
116  for (int side=0; side<NSIDE; ++side) {
117  for (int phi=0; phi<NPHI; ++phi) {
118  for (int eta=0; eta<NETA; ++eta) {
120  }
121  }
122  }
123 }
124 
126 {
127  // Convert every TileCell to 3 32-bit integers: ID,Ene, and (time,qual,qain)
128 
129  MsgStream log(msgSvc(),"TileCellContainerCnv" );
130  MSG::Level logLevel = log.level();
131  bool lDebug = (logLevel<=MSG::DEBUG);
132  bool lVerbose = (logLevel<=MSG::VERBOSE);
133 
134  std::string name = m_storeGate->proxy(cont)->name();
135  auto vecCell = std::make_unique<TileCellVec>();
136  vecCell->reserve(NCELLMBTS);
137 
138  if (lDebug) log << MSG::DEBUG << "storing TileCells from " << name << " in POOL" << endmsg;
139 
140  vecCell->push_back(m_version);
141  int nMBTSfound=0;
142 
143  std::vector<const TileCell *> allCells;
144 
145  switch (m_version) {
146 
147  case 1: // 3 words per cell, energy scale factor is 1000, time scale factor is 100
148  for (const TileCell* cell : *cont) {
149  if (lVerbose)
150  log << MSG::VERBOSE
151  << "ene=" << cell->energy()
152  << " time=" << cell->time()
153  << " qual=" << (int)cell->qual1()
154  << " gain=" << (int)cell->gain()
155  << endmsg;
156  unsigned int id = cell->ID().get_identifier32().get_compact();
157  int ene = round32(cell->energy() * 1000.);
158  unsigned int tim = 0x8000 + round16(cell->time()*100.);
159  unsigned int qua = std::max(0, std::min(0xFF, (int)cell->qual1()));
160  unsigned int gai = std::max(0, std::min(0xFF, 0x80 + (int)(cell->gain())));
161  unsigned int tqg = (tim<<16) | (qua<<8) | gai;
162  vecCell->push_back(id);
163  vecCell->push_back((unsigned int)ene);
164  vecCell->push_back(tqg);
165  if (lVerbose)
166  log << MSG::VERBOSE << "packing cell in three words "
167  << MSG::hex << id << " " << ene << " " << tqg << MSG::dec << endmsg;
168  }
169  break;
170 
171  case 2: // 1 or 2 words for MBTS cells, 3 words for others, energy scale factor is 1000, time scale factor is 100
172 
173  // prepare vector with all cells first, expect at least 32 MBTS cells
174  allCells.resize(NCELLMBTS);
175  for (const TileCell* cell : *cont) {
176  Identifier id = cell->ID();
177  if (m_tileTBID->is_tiletb(id)) {
178  int side = std::max(0,m_tileTBID->type(id));
179  int phi = m_tileTBID->module(id);
180  int eta = m_tileTBID->channel(id);
181  int ind = cell_index(side,phi,eta);
182  if (eta<NETA && phi<NPHI && ind < NCELLMBTS) {
183  allCells[ind] = cell;
184  ++nMBTSfound;
185  } else {
186  allCells.push_back(cell);
187  }
188  } else {
189  allCells.push_back(cell);
190  }
191  }
192 
193  if (nMBTSfound>0) {
194 
195  // save first 32 cells (MBTS) without identifiers, 2 words per cell, put zeros for empty cells
196  // if MBTS energy is in pCb, then LSB corresponds to 1/12 ADC count of high gain
197  for (int ind=0; ind<NCELLMBTS; ++ind) {
198  int energy = 0;
199  int time = 0;
200  int quality= 0;
201  int gain = m_gain[0]; // non-existing gain in CaloGain - to mark non-existing cells
202  const TileCell* cell = allCells[ind];
203  if (cell) {
204  energy = round32(cell->energy() * 1000.);
205  time = round16(cell->time() * 100.);
206  quality= cell->qual1();
207  gain = cell->gain();
208 
209  if (lVerbose)
210  log << MSG::VERBOSE
211  << "ind=" << ind
212  << " ene=" << cell->energy()
213  << " time=" << cell->time()
214  << " qual=" << (int)cell->qual1()
215  << " gain=" << (int)cell->gain()
216  << endmsg;
217  }
218  else {
219  if (lVerbose)
220  log << MSG::VERBOSE
221  << "ind=" << ind
222  << " create MBTS cell with zero energy"
223  << endmsg;
224  }
225 
226  // put correct MBTS cells in one word
227  if (time == 0 && // expect time to be equal to zero
228  -0x10000 < energy && energy < 0xEFFFF && // expect energy within (-65,980) pCb
229  -17 < gain && gain < 0 ) { // expext only gains in TileCal range
230 
231  unsigned int ene = energy+0x10000; // shift by 65 pCb (65*10^3 because of scaling)
232  unsigned int qua = std::max(0, std::min(0xFF, quality)); // 8 bits for quality
233  unsigned int gai = m_gainIndex[-gain];
234  unsigned int gqe = (gai << 28) | (qua<<20) | ene; // upper most bit is always 1 here
235  vecCell->push_back(gqe);
236 
237  if (lVerbose)
238  log << MSG::VERBOSE << "packing cell " << ind << " in one word "
239  << MSG::hex << gqe << MSG::dec << endmsg;
240 
241  } else { // cells with time, use 2 words for channel
242  // but make sure that upper most bit in energy word is zero
243 
244  unsigned int ene = std::max(0, std::min(0x7FFFFFFF, 0x40000000 + energy));
245  unsigned int tim = std::max(0, std::min(0xFFFF, 0x8000 + time));
246  unsigned int qua = std::max(0, std::min(0xFF, quality)); // 8 bits for quality
247  unsigned int gai = std::max(0, std::min(0xFF, 0x80 + gain));
248  unsigned int tqg = (tim<<16) | (qua<<8) | gai;
249  vecCell->push_back(ene);
250  vecCell->push_back(tqg);
251 
252  if (lVerbose)
253  log << MSG::VERBOSE << "packing cell " << ind << " in two words "
254  << MSG::hex << ene << " " << tqg << MSG::dec << endmsg;
255  }
256  }
257 
258  } else {
259 
260  (*vecCell)[0] = 1; // no MBTS found - use version 1 for packing
261  }
262 
263  // keep all other cells (if any) with identifiers, 3 words per cell
264  for (unsigned int ind=NCELLMBTS; ind<allCells.size(); ++ind) {
265 
266  const TileCell* cell = allCells[ind];
267 
268  if (lVerbose)
269  log << MSG::VERBOSE
270  << "ind=" << ind
271  << " ene=" << cell->energy()
272  << " time=" << cell->time()
273  << " qual=" << (int)cell->qual1()
274  << " gain=" << (int)cell->gain()
275  << endmsg;
276 
277  unsigned int id = cell->ID().get_identifier32().get_compact();
278  int ene = round32(cell->energy() * 1000.);
279  unsigned int tim = 0x8000 + round16(cell->time()*100.);
280  unsigned int qua = std::max(0, std::min(0xFF, (int)cell->qual1()));
281  unsigned int gai = std::max(0, std::min(0xFF, 0x80 + (int)(cell->gain())));
282  unsigned int tqg = (tim<<16) | (qua<<8) | gai;
283  vecCell->push_back(id);
284  vecCell->push_back((unsigned int)ene);
285  vecCell->push_back(tqg);
286 
287  if (lVerbose)
288  log << MSG::VERBOSE << "packing cell " << ind << " in three words "
289  << MSG::hex << id << " " << ene << " " << tqg << MSG::dec << endmsg;
290  }
291  break;
292 
293  default:
294 
295  log << MSG::ERROR << "Unknown version of TileCellVec, ver="<<m_version << endmsg;
296 
297  }
298 
299  if (lDebug) log << MSG::DEBUG << "Storing data vector of size " << vecCell->size() << " with version " << vecCell->front() << endmsg;
300 
301  return vecCell.release();
302 }
303 
305 {
306  // Fill TileCellContainer from vector, creating cells from 3 integers
307 
308  MsgStream log(msgSvc(), "TileCellContainerCnv");
309  MSG::Level logLevel = log.level();
310  bool lDebug = (logLevel<=MSG::DEBUG);
311  bool lVerbose = (logLevel<=MSG::VERBOSE);
312 
313  std::unique_ptr<TileCellVec> vec(this->poolReadObject<TileCellVec>());
314 
315  if (lDebug) log << MSG::DEBUG << "Read TileCell Vec, size " << vec->size() << endmsg;
316 
317  // create the TileCellContainer
318  auto cont = std::make_unique<TileCellContainer>();
319 
320  TileCellVec::const_iterator it = vec->begin();
321  TileCellVec::const_iterator last = vec->end();
322 
323  unsigned int version = *it++;
324  int iCell = 0;
325 
326  switch (version) {
327  case 1:
328 
329  for (; it != last; ) {
330 
332  int ene = (int)(*it++);
333  unsigned int tqg = *it++;
334 
335  float ener = ene*1e-3;
336  float time = ((int)(tqg>>16) - 0x8000 ) * 0.01;
337  uint16_t qual = ((tqg>>8) & 0xFF);
339  int gain = (int)(tqg & 0xFF) - 0x80;
340 
341  if (lVerbose) {
342  log << MSG::VERBOSE << "reading cell " << (iCell++) << " "
343  << MSG::hex << id << MSG::dec << " " << ene << " "
344  << MSG::hex << tqg << MSG::dec << endmsg;
345  log << MSG::VERBOSE << "ene=" << ener << " time=" << time
346  << " qual=" << qual << " gain=" << gain << endmsg;
347  }
348 
349  TileCell * cell = new TileCell(NULL,id,ener,time,qual,qbit,(CaloGain::CaloGain)gain);
350  cont->push_back(cell);
351  }
352  break;
353 
354  case 2:
355 
356  for (; it != last; ) {
357 
358  Identifier id;
359  CaloDetDescrElement * dde = NULL;
360  float ener = 0.0;
361  float time = 0.0;
362  uint16_t qual = 0;
364  int gain = m_gain[0]; // non-existing gain in CaloGain - to mark non-existing cells
365 
366  if (lVerbose)
367  log << MSG::VERBOSE << "reading cell " << iCell << " ";
368 
369  if (iCell < NCELLMBTS) { // first 32 cells are MBTS cells without identifier
370 
371  id = m_id[iCell]; // identifier is taken from array
372  dde = m_dde[iCell]; // mbtsDDE is taken from array
373 
374  int ene = (int)(*it++); // first word is energy
375 
376  if (lVerbose)
377  log << MSG::hex << id << " " << ene << " " << MSG::dec;
378 
379  if (ene < 0 ) { // upper most bit is set, it means that everything is packed in one word
380 
381  if (lVerbose)
382  log << endmsg;
383 
384  time = 0.0; // time was zero and it was not saved
385  ener = ((ene & 0xFFFFF) - 0x10000) * 1e-3;
386  qual = ((ene>>20) & 0xFF);
387  gain = m_gain[((ene>>28) & 0x7)]; // gain is taken from array
388 
389  } else { // two words packing
390 
391  unsigned int tqg = *it++;
392  if (lVerbose)
393  log << MSG::hex << tqg << MSG::dec << endmsg;
394 
395  ener = (ene - 0x40000000) * 1e-3;
396  time = ((int)(tqg>>16) - 0x8000 ) * 0.01;
397  qual = ((tqg>>8) & 0xFF);
398  gain = (int)(tqg & 0xFF) - 0x80;
399  }
400 
401  } else { // three words packing for remaining cells
402 
403  id = Identifier(Identifier32(*it++));
404  int ene = (int)(*it++);
405  unsigned int tqg = *it++;
406 
407  if (lVerbose)
408  log << MSG::hex << id << MSG::dec << " " << ene << " "
409  << MSG::hex << tqg << MSG::dec << endmsg;
410 
411  ener = ene*1e-3;
412  time = ((int)(tqg>>16) - 0x8000 ) * 0.01;
413  qual = ((tqg>>8) & 0xFF);
414  gain = (int)(tqg & 0xFF) - 0x80;
415  }
416 
417  if (lVerbose)
418  log << MSG::VERBOSE << "ene=" << ener << " time=" << time
419  << " qual=" << qual << " gain=" << gain << endmsg;
420 
421  if (gain != m_gain[0]) { // don't create cells with non-existing gain
422  TileCell * cell = new TileCell(dde,id,ener,time,qual,qbit,(CaloGain::CaloGain)gain);
423  cont->push_back(cell);
424  }
425  else {
426  if (lVerbose)
427  log << MSG::VERBOSE << "Don't create MBTS cell with invalid gain" << endmsg;
428  }
429  ++iCell;
430  }
431  break;
432 
433  default:
434 
435  log << MSG::ERROR << "Unknown version of TileCellVec, ver="<<version << endmsg;
436  }
437 
438  return cont.release();
439 }
440 
TileCell
Definition: TileCell.h:57
Identifier32
Definition: Identifier32.h:25
TileTBID::channel_id
Identifier channel_id(int type, int module, int channel) const
identifer for one channel of a Tile testbeam detector
Definition: TileTBID.cxx:196
TileCellContainerCnv::m_gainIndex
int m_gainIndex[17]
Definition: TileCellContainerCnv.h:50
ReadCellNoiseFromCool.cell
cell
Definition: ReadCellNoiseFromCool.py:53
max
#define max(a, b)
Definition: cfImp.cxx:41
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
TileCellContainerCnv::NPHI
static const int NPHI
Definition: TileCellContainerCnv.h:41
TileTBID::is_tiletb
bool is_tiletb(const Identifier &id) const
Test ID if it is TileTBID.
Definition: TileTBID.cxx:86
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
TileCellContainerCnv::round16
int round16(double x)
Definition: TileCellContainerCnv.h:59
TileCellContainerCnv::m_gain
int m_gain[8]
Definition: TileCellContainerCnv.h:51
TileCellContainerCnv::initialize
virtual StatusCode initialize() override
initialization
Definition: TileCellContainerCnv.cxx:37
TileCellContainerCnv::m_storeGate
StoreGateSvc * m_storeGate
Definition: TileCellContainerCnv.h:34
CaloDetDescrElement
This class groups all DetDescr information related to a CaloCell. Provides a generic interface for al...
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:66
python.TrigPSCPythonDbSetup.logLevel
logLevel
If HLT PSK is set on command line read it from DB instead of COOL (ATR-25974)
Definition: TrigPSCPythonDbSetup.py:27
CaloCondBlobAlgs_fillNoiseFromASCII.gain
gain
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:110
skel.it
it
Definition: skel.GENtoEVGEN.py:423
vec
std::vector< size_t > vec
Definition: CombinationsGeneratorTest.cxx:12
TileCellContainerCnv::NETA
static const int NETA
Definition: TileCellContainerCnv.h:42
TileTBID::type
int type(const Identifier &id) const
extract type field from TileTB identifier
Definition: Calorimeter/CaloIdentifier/CaloIdentifier/TileTBID.h:146
TileCellContainerCnv::TileCellContainerCnv
TileCellContainerCnv(ISvcLocator *svcloc)
Definition: TileCellContainerCnv.cxx:18
CaloGain::TILELOWLOW
@ TILELOWLOW
Definition: CaloGain.h:12
TileCellContainerCnv::m_version
int m_version
Definition: TileCellContainerCnv.h:38
AthenaPoolConverter::initialize
virtual StatusCode initialize() override
Gaudi Service Interface method implementations:
Definition: AthenaPoolConverter.cxx:27
TileTBID::module
int module(const Identifier &id) const
extract module field from TileTB identifier
Definition: Calorimeter/CaloIdentifier/CaloIdentifier/TileTBID.h:150
TileCellContainerCnv::m_tileTBID
const TileTBID * m_tileTBID
Definition: TileCellContainerCnv.h:35
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
MbtsDetDescrManager.h
TRT::Hit::side
@ side
Definition: HitInfo.h:83
CaloGain::TILEHIGHHIGH
@ TILEHIGHHIGH
Definition: CaloGain.h:15
TileCellContainerCnv::m_id
Identifier m_id[NCELLMBTS]
Definition: TileCellContainerCnv.h:48
TileCellContainerCnv::NSIDE
static const int NSIDE
Definition: TileCellContainerCnv.h:40
CaloGain::INVALIDGAIN
@ INVALIDGAIN
Definition: CaloGain.h:18
python.LArBadChannelDBAlg.x7FFFFFFF
x7FFFFFFF
Definition: LArBadChannelDBAlg.py:72
TileCellContainerCnv::m_mbtsMgr
const MbtsDetDescrManager * m_mbtsMgr
Definition: TileCellContainerCnv.h:36
CxxUtils::vec
typename vecDetail::vec_typedef< T, N >::type vec
Define a nice alias for the vectorized type.
Definition: vec.h:207
TileTBID.h
StoreGateSvc
The Athena Transient Store API.
Definition: StoreGateSvc.h:128
TileCellContainerCnv::createPersistent
virtual TileCellVec * createPersistent(TileCellContainer *cont) override
Definition: TileCellContainerCnv.cxx:125
TrigConf::MSGTC::Level
Level
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:21
ParticleGun_FastCalo_ChargeFlip_Config.energy
energy
Definition: ParticleGun_FastCalo_ChargeFlip_Config.py:78
TileCellContainerCnv::createTransient
virtual TileCellContainer * createTransient() override
Definition: TileCellContainerCnv.cxx:304
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:88
StdJOSetup.msgSvc
msgSvc
Provide convenience handles for various services.
Definition: StdJOSetup.py:36
T_AthenaPoolCustomCnv
Compatibility for old converter classes that don't get passed the key.
Definition: T_AthenaPoolCustomCnv.h:132
lumiFormat.i
int i
Definition: lumiFormat.py:92
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
CaloGain::TILEONELOW
@ TILEONELOW
Definition: CaloGain.h:16
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
TileCellContainerCnv::cell_index
int cell_index(int side, int phi, int eta) const
Definition: TileCellContainerCnv.h:45
TileCellVec
Definition: TileContainer.h:73
TileCell::MASK_CMPC
@ MASK_CMPC
Definition: TileCell.h:66
MbtsDetDescrManager::get_element
CaloDetDescrElement * get_element(const Identifier &elementId) const
Definition: MbtsDetDescrManager.cxx:29
CaloGain::TILEHIGHLOW
@ TILEHIGHLOW
Definition: CaloGain.h:14
TileCellContainerCnv::round32
int round32(double x)
Definition: TileCellContainerCnv.h:53
TileTBID::channel
int channel(const Identifier &id) const
extract channel field from TileTB identifier
Definition: Calorimeter/CaloIdentifier/CaloIdentifier/TileTBID.h:154
min
#define min(a, b)
Definition: cfImp.cxx:40
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
CaloGain::TILELOWHIGH
@ TILELOWHIGH
Definition: CaloGain.h:13
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:194
StoreGateSvc::proxy
virtual SG::DataProxy * proxy(const void *const pTransient) const override final
get proxy for a given data object address in memory
TileCellContainerCnv.h
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
SG::DataProxy::name
virtual const name_type & name() const override final
Retrieve data object key == string.
CaloGain::CaloGain
CaloGain
Definition: CaloGain.h:11
TileCellContainerCnv::m_dde
CaloDetDescrElement * m_dde[NCELLMBTS]
Definition: TileCellContainerCnv.h:49
TileCellContainerCnv::~TileCellContainerCnv
virtual ~TileCellContainerCnv()
Definition: TileCellContainerCnv.cxx:33
get_generator_info.version
version
Definition: get_generator_info.py:33
TileCell::MASK_TIME
@ MASK_TIME
Definition: TileCell.h:67
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
DEBUG
#define DEBUG
Definition: page_access.h:11
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
beamspotman.qual
qual
Definition: beamspotman.py:481
python.Constants.VERBOSE
int VERBOSE
Definition: Control/AthenaCommon/python/Constants.py:14
TileCellContainerCnv::NCELLMBTS
static const int NCELLMBTS
Definition: TileCellContainerCnv.h:43
TileContainer
Definition: TileContainer.h:38
StoreGateSvc.h
CaloGain::TILEONEHIGH
@ TILEONEHIGH
Definition: CaloGain.h:17
checkFileSG.ind
list ind
Definition: checkFileSG.py:118
TileCellContainerCnv::initIdToIndex
void initIdToIndex()
Definition: TileCellContainerCnv.cxx:114