ATLAS Offline Software
Classes | Public Member Functions | Private Member Functions | Private Attributes | List of all members
CaloSuperCellIDTool Class Reference

#include <CaloSuperCellIDTool.h>

Inheritance diagram for CaloSuperCellIDTool:
Collaboration diagram for CaloSuperCellIDTool:

Classes

struct  IDMapElt
 Mapping table entry. More...
 

Public Member Functions

 CaloSuperCellIDTool (const std::string &type, const std::string &name, const IInterface *parent)
 Standard Gaudi tool constructor. More...
 
virtual StatusCode initialize ()
 Standard Gaudi initialize method. More...
 
virtual Identifier offlineToSuperCellID (const Identifier &id) const
 Given an offline cell identifier, return the corresponding supercell identifier. More...
 
virtual std::vector< IdentifiersuperCellToOfflineID (const Identifier &id) const
 Given a supercell identifier, return the list of corresponding offline cell identifiers. More...
 
virtual std::vector< IdentifierofflineToSuperCellRegion (const Identifier &reg_id) const
 Given an offline region identifier, return the corresponding supercell region identifier(s). More...
 
virtual std::vector< IdentifiersuperCellToOfflineRegion (const Identifier &reg_id) const
 Given a supercell region identifier, return the corresponding offline region identifier(s). More...
 

Private Member Functions

void initFCALIDMap ()
 FCAL is a special case. More...
 
void initIDMap ()
 Initialize the mapping table. More...
 
void addMapEntry (const IDMapElt &elt)
 Add an entry to the region mapping table. More...
 

Private Attributes

std::vector< IDMapEltm_idmap
 List of mapping table entries. More...
 
std::vector< int > m_offlineIndex
 Entry I contains the index in the mapping table of the first entry for the offline region with hash I, or -1 if there is no mapping entry. More...
 
std::vector< int > m_superCellIndex
 Entry I contains the index in the mapping table of the first entry for the supercell region with hash I, or -1 if there is no mapping entry. More...
 
std::vector< int > m_superCellIndexEnd
 Entry I contains one past the index in the mapping table of the last entry for the supercell region with hash I, or -1 if there is no mapping entry. More...
 
std::vector< Identifierm_fcal_fromCell
 hashTable for FCAL More...
 
std::vector< std::vector< Identifier > > m_fcal_fromSuperCell
 
const CaloCell_IDm_cell_helper
 Entry point for calorimeter ID helpers. More...
 
const CaloCell_SuperCell_IDm_sc_helper
 

Detailed Description

Definition at line 29 of file CaloSuperCellIDTool.h.

Constructor & Destructor Documentation

◆ CaloSuperCellIDTool()

CaloSuperCellIDTool::CaloSuperCellIDTool ( const std::string &  type,
const std::string &  name,
const IInterface *  parent 
)

Standard Gaudi tool constructor.

Parameters
typeThe name of the tool type.
nameThe tool name.
parentThe tool's Gaudi parent.

Definition at line 52 of file CaloSuperCellIDTool.cxx.

55  : base_class (type, name, parent),
56  m_cell_helper(nullptr),
57  m_sc_helper(nullptr)
58 {
59 }

Member Function Documentation

◆ addMapEntry()

void CaloSuperCellIDTool::addMapEntry ( const IDMapElt elt)
private

Add an entry to the region mapping table.

Helper to add an entry to the region mapping table.

Definition at line 232 of file CaloSuperCellIDTool.cxx.

233 {
234  assert (elt.m_cell_reg < m_offlineIndex.size());
235  if (m_offlineIndex[elt.m_cell_reg] == -1)
236  m_offlineIndex[elt.m_cell_reg] = m_idmap.size();
237 
238  assert (elt.m_sc_reg < m_superCellIndex.size());
239  if (m_superCellIndex[elt.m_sc_reg] == -1)
240  m_superCellIndex[elt.m_sc_reg] = m_idmap.size();
241  assert (elt.m_sc_reg < m_superCellIndexEnd.size());
242  m_superCellIndexEnd[elt.m_sc_reg] = m_idmap.size()+1;
243 
244  m_idmap.push_back (elt);
245 }

◆ initFCALIDMap()

void CaloSuperCellIDTool::initFCALIDMap ( )
private

FCAL is a special case.

Definition at line 251 of file CaloSuperCellIDTool.cxx.

252 {
253  const LArFCAL_Base_ID* sfcal_helper = m_sc_helper->fcal_idHelper();
254  const LArFCAL_Base_ID* fcal_helper = m_cell_helper->fcal_idHelper();
255 
256  m_fcal_fromCell.clear();
257  m_fcal_fromSuperCell.clear();
258  m_fcal_fromCell.resize(fcal_helper->channel_hash_max());
259  m_fcal_fromSuperCell.resize(sfcal_helper->channel_hash_max());
260 
261  for (const Identifier& cell_id : fcal_helper->fcal_range()) {
262  const int sc_phi = fcal_helper->phi (cell_id);
263  const int sc_lay = fcal_helper->module (cell_id);
264  const int cell_ieta = fcal_helper->eta (cell_id);
265  int sc_pn = fcal_helper->pos_neg( cell_id );
266  int sc_ieta = -1;
267  if (sc_lay==3) {
268  sc_ieta = cell_ieta / 4;
269  }
270  else if (sc_lay==2) {
271  sc_ieta = cell_ieta / 4;
272  }
273  else if (sc_lay==1) {
274  if (cell_ieta < 16)
275  sc_ieta = 0;
276  else if (cell_ieta < 24)
277  sc_ieta = 1;
278  else
279  sc_ieta = 2 + (cell_ieta-24)/4;
280  }
281  Identifier sc_id = sfcal_helper->channel_id(sc_pn, sc_lay, sc_ieta, sc_phi);
282  IdentifierHash sc_hash = sfcal_helper->channel_hash( sc_id );
283  IdentifierHash cell_hash = fcal_helper->channel_hash( cell_id );
284  m_fcal_fromCell[ cell_hash ] = sc_id;
285  m_fcal_fromSuperCell[ sc_hash ].push_back( cell_id );
286  }
287 
288  // Allow dumping the mapping table for validation.
289  if (msgLvl (MSG::DEBUG)) {
290  msg(MSG::DEBUG) << "\n LArFCAL ---------------------------\n";
291  for (const Identifier& sc_id : sfcal_helper->fcal_range()) {
292  IdentifierHash sc_hash = sfcal_helper->channel_hash( sc_id );
293  std::vector<Identifier> cells = m_fcal_fromSuperCell[ sc_hash ];
294  msg(MSG::DEBUG) <<
296  (" %5d %2d/%2d/%2d/%2d ... %2d cells\n") %
297  sc_hash %
298  sfcal_helper->pos_neg(sc_id) %
299  sfcal_helper->module(sc_id) %
300  sfcal_helper->eta(sc_id) %
301  sfcal_helper->phi(sc_id) %
302  (int)cells.size();
303  }
304  msg(MSG::DEBUG) << endmsg;
305  }
306 }

◆ initialize()

StatusCode CaloSuperCellIDTool::initialize ( )
virtual

Standard Gaudi initialize method.

Definition at line 65 of file CaloSuperCellIDTool.cxx.

66 {
68  CHECK( detStore()->retrieve (m_cell_helper, "CaloCell_ID") );
69  CHECK( detStore()->retrieve (m_sc_helper, "CaloCell_SuperCell_ID") );
70 
71  initIDMap ();
72 
73  return StatusCode::SUCCESS;
74 }

◆ initIDMap()

void CaloSuperCellIDTool::initIDMap ( )
private

Initialize the mapping table.

Definition at line 80 of file CaloSuperCellIDTool.cxx.

81 {
82  m_offlineIndex.clear();
83  m_superCellIndex.clear();
84  m_superCellIndexEnd.clear();
85  m_idmap.clear();
86 
87  // One entry in the index tables for each region hash; -1 means no entry.
91 
92  // Loop over all offline regions.
93  for (const Identifier& cell_reg : m_cell_helper->reg_range()) {
94  if (m_cell_helper->is_em(cell_reg) ||
95  m_cell_helper->is_hec(cell_reg) ||
96  m_cell_helper->is_fcal(cell_reg))
97  {
98  int sub_calo = m_cell_helper->sub_calo (cell_reg);
99  int pos_neg = m_cell_helper->pos_neg (cell_reg);
100  int sampling = m_cell_helper->sampling (cell_reg);
101  int cell_ietamin = m_cell_helper->eta_min (cell_reg);
102  int cell_ietamax = m_cell_helper->eta_max (cell_reg);
103  float cell_etasize = m_cell_helper->etaGranularity(cell_reg);
104  float inv_cell_etasize = 1. / cell_etasize;
105  // The condition here will never be true, but we put it in to
106  // prevent the compiler from attempting to vectorize the two divisions
107  // here. On x86_64, the two single-precision divisions take
108  // two vector lanes leaving two unused. The two unused ones
109  // can end up with zeros in the denominator leading to a spurious FPE.
110  if (inv_cell_etasize < 0) break;
111  float cell_phisize = m_cell_helper->phiGranularity(cell_reg);
112  float inv_cell_phisize = 1. / cell_phisize;
113  float cell_etamin = m_cell_helper->eta0 (cell_reg);
114  float cell_etamax = cell_etamin +
115  cell_etasize*(cell_ietamax - cell_ietamin + 1);
116 
117  // Find all overlapping supercell regions in the same sampling
118  // and make table entries. HEC supercells are summed
119  // over samplings, so don't make sampling requirements there.
120  for (const Identifier& sc_reg : m_sc_helper->reg_range()) {
121  if (m_sc_helper->sub_calo (sc_reg) == sub_calo &&
122  m_sc_helper->pos_neg (sc_reg) == pos_neg &&
123  (sub_calo == CaloCell_ID::LARHEC ||
124  m_sc_helper->sampling (sc_reg) == sampling))
125  {
126  int sc_ietamin = m_sc_helper->eta_min (sc_reg);
127  int sc_ietamax = m_sc_helper->eta_max (sc_reg);
128  float sc_etasize = m_sc_helper->etaGranularity(sc_reg);
129  float sc_phisize = m_sc_helper->phiGranularity(sc_reg);
130  float sc_etamin = m_sc_helper->eta0 (sc_reg);
131  float sc_etamax= sc_etamin + sc_etasize*(sc_ietamax - sc_ietamin + 1);
132 
133  // Find the overlap between the offline and supercell regions.
134  float etamin = std::max (cell_etamin, sc_etamin);
135  float etamax = std::min (cell_etamax, sc_etamax);
136 
137  if (etamin < etamax - 1e-4) {
138  // There's overlap --- make a table entry.
139  IDMapElt elt;
140  elt.m_cell_reg = m_cell_helper->calo_region_hash (cell_reg);
141  elt.m_sc_reg = m_sc_helper->calo_region_hash (sc_reg);
142  elt.m_etadiv = int (sc_etasize * inv_cell_etasize + 0.1);
143  elt.m_phidiv = int (sc_phisize * inv_cell_phisize + 0.1);
144 
145  if (sub_calo == CaloCell_ID::LARHEC) {
146  // FIXME: Shouldn't have to special-case this.
147  elt.m_cell_ieta_adj = 0;
148  elt.m_sc_ieta_adj = 0;
149  }
150  else {
151  elt.m_cell_ieta_adj = cell_ietamin;
152  elt.m_sc_ieta_adj = sc_ietamin;
153  }
154 
155  elt.m_cell_ietamin = int ((etamin - cell_etamin) * inv_cell_etasize +
156  cell_ietamin + 0.1);
157  elt.m_cell_ietamax = int ((etamax - cell_etamin) * inv_cell_etasize +
158  cell_ietamin - 0.1);
159  const float inv_sc_etasize = 1. / sc_etasize;
160  elt.m_sc_ietamin = int ((etamin - sc_etamin) * inv_sc_etasize +
161  sc_ietamin + 0.1);
162  elt.m_sc_ietamax = int ((etamax - sc_etamin) * inv_sc_etasize +
163  sc_ietamin - 0.1);
164 
165  addMapEntry (elt);
166  }
167  }
168  }
169  }
170  else if (m_cell_helper->is_tile(cell_reg)) {
171  int section = m_cell_helper->section (cell_reg);
173  continue;
174  int sub_calo = m_cell_helper->sub_calo (cell_reg);
175  int side = m_cell_helper->side (cell_reg);
176  Identifier sc_reg = m_sc_helper->region_id (sub_calo, section, side, 0);
177 
178  IDMapElt elt;
179  elt.m_cell_reg = m_cell_helper->calo_region_hash (cell_reg);
180  elt.m_sc_reg = m_sc_helper->calo_region_hash (sc_reg);
181  elt.m_etadiv = 1;
182  elt.m_phidiv = 1;
183  elt.m_cell_ieta_adj = 0;
184  elt.m_sc_ieta_adj = 0;
185  elt.m_cell_ietamin = m_cell_helper->eta_min (cell_reg);
186  elt.m_cell_ietamax = m_cell_helper->eta_max (cell_reg);
187  elt.m_sc_ietamin = m_sc_helper->eta_min (sc_reg);
188  elt.m_sc_ietamax = m_sc_helper->eta_max (sc_reg);
189  addMapEntry (elt);
190  }
191  }
192 
193 
194  // Allow dumping the mapping table for validation.
195  if (msgLvl (MSG::DEBUG)) {
196  msg(MSG::DEBUG) << "CaloSuperCellIDTool mapping table:\n";
197  msg(MSG::DEBUG) << "LArEM ----------------------------\n";
198  for (const IDMapElt& elt : m_idmap) {
199  Identifier cell_reg = m_cell_helper->region_id (elt.m_cell_reg);
200  Identifier sc_reg = m_sc_helper->region_id (elt.m_sc_reg);
201  msg(MSG::DEBUG) <<
203  (" %3d %d/%2d/%2d/%d %3d %d/%2d/%2d/%d %d %d %3d %3d %3d %3d %3d %3d\n") %
204  (int)elt.m_cell_reg %
205  m_cell_helper->sub_calo(cell_reg) %
206  posneg_or_section (m_cell_helper, cell_reg) %
207  sampling_or_side (m_cell_helper, cell_reg) %
208  m_cell_helper->region(cell_reg) %
209  (int)elt.m_sc_reg %
210  m_sc_helper->sub_calo(sc_reg) %
211  posneg_or_section (m_sc_helper, sc_reg) %
212  sampling_or_side (m_sc_helper, sc_reg) %
213  m_sc_helper->region(sc_reg) %
214 
215  elt.m_etadiv % elt.m_phidiv %
216  elt.m_cell_ietamin % elt.m_cell_ietamax %
217  elt.m_sc_ietamin % elt.m_sc_ietamax %
218  elt.m_cell_ieta_adj % elt.m_sc_ieta_adj;
219  }
220  msg(MSG::DEBUG) << endmsg;
221  }
222 
223  initFCALIDMap();
224 
225  msg(MSG::INFO ) << "Done with initIDMap" << endmsg;
226 }

◆ offlineToSuperCellID()

Identifier CaloSuperCellIDTool::offlineToSuperCellID ( const Identifier id) const
virtual

Given an offline cell identifier, return the corresponding supercell identifier.

If none exists, an invalid identifier is returned.

Definition at line 315 of file CaloSuperCellIDTool.cxx.

316 {
317  if (m_cell_helper->is_em(id) || m_cell_helper->is_hec(id)) {
318  // Look for the first entry in the mapping table for this offline region.
319  Identifier reg_id = m_cell_helper->region_id (id);
321  assert (rhash < m_offlineIndex.size());
322  int ndx = m_offlineIndex[rhash];
323  if (ndx < 0)
324  return {};
325 
326  // Now search through all entries for this offline region to find one
327  // that includes this cell.
328  int ieta = m_cell_helper->eta (id);
329 
330  do {
331  const IDMapElt& elt = m_idmap[ndx];
332  if (elt.m_cell_ietamin <= ieta && elt.m_cell_ietamax >= ieta) {
333  // Found a matching entry. Calculate the corresponding supercell
334  // indices and return the new ID.
335 
336  int ieta_sc = ((ieta - elt.m_cell_ietamin + elt.m_cell_ieta_adj) /
337  elt.m_etadiv) +
338  elt.m_sc_ietamin - elt.m_sc_ieta_adj;
339 
340  return m_sc_helper->cell_id (m_sc_helper->region_id (elt.m_sc_reg),
341  ieta_sc,
342  m_cell_helper->phi(id) / elt.m_phidiv);
343  }
344  ++ndx;
345  } while (ndx < (int)m_idmap.size() && m_idmap[ndx].m_cell_reg == rhash);
346  }
347 
348  else if (m_cell_helper->is_fcal(id)) {
349  const LArFCAL_ID* fcal_helper = m_cell_helper->fcal_idHelper();
350  IdentifierHash cell_hash = fcal_helper->channel_hash(id);
351  return m_fcal_fromCell[ cell_hash ];
352  }
353 
354  else if (m_cell_helper->is_tile(id)) {
355  int section = m_cell_helper->section (id);
356  int sample_offline = m_cell_helper->sample(id);
357  int tower = m_cell_helper->tower(id);
358 
359  // A couple special cases in the transition region.
360  // cf. http://hep.uchicago.edu/atlas/tilecal/level1/geometry.html
361  // The cell at the end of the barrel is grouped with barrel cells,
362  // rather than with the endcap cells at the same eta, and analogously
363  // for the D4 cell.
364  // Be careful: tower indices start with 0 here, but with 1 on the
365  // referenced diagram.
366  //
367 
368  if (section == TileID::BARREL && tower == 9 &&
369  sample_offline == TileID::SAMP_A)
370  {
371  tower = 8;
372  }
373  else if (section == TileID::GAPDET && tower == 9 &&
374  sample_offline == TileID::SAMP_C)
375  {
377  }
378 
379  else if (section == TileID::GAPDET && tower == 8 &&
380  sample_offline == TileID::SAMP_D)
381  {
382  tower = 9;
384  }
385 
387  return {};
388 
389  int sample_sc = sample_offline;
390  if (sample_sc != TileID::SAMP_D) sample_sc = TileID::SAMP_A;
391 
393  section,
394  m_cell_helper->side(id),
395  m_cell_helper->module(id),
396  tower,
397  sample_sc);
398  }
399 
400  return {};
401 }

◆ offlineToSuperCellRegion()

std::vector< Identifier > CaloSuperCellIDTool::offlineToSuperCellRegion ( const Identifier reg_id) const
virtual

Given an offline region identifier, return the corresponding supercell region identifier(s).

There will normally be only one, but it's possible for there to be multiple matches. If none exists, an invalid identifier is returned.

Definition at line 514 of file CaloSuperCellIDTool.cxx.

515 {
516  std::vector<Identifier> out;
517 
518  // Look for the first entry in the mapping table for this offline region.
520  assert (rhash < m_offlineIndex.size());
521  int ndx = m_offlineIndex[rhash];
522  while (ndx >= 0 &&
523  ndx < (int)m_idmap.size() &&
524  m_idmap[ndx].m_cell_reg == rhash)
525  {
526  out.push_back (m_sc_helper->region_id (m_idmap[ndx].m_sc_reg));
527  ++ndx;
528  }
529 
530  return out;
531 }

◆ superCellToOfflineID()

std::vector< Identifier > CaloSuperCellIDTool::superCellToOfflineID ( const Identifier id) const
virtual

Given a supercell identifier, return the list of corresponding offline cell identifiers.

Definition at line 409 of file CaloSuperCellIDTool.cxx.

410 {
411  std::vector<Identifier> out;
412 
413  // Look for the first entry in the mapping table for this supercell region.
414  if (m_sc_helper->is_em (id) || m_sc_helper->is_hec (id)) {
415  Identifier reg_id = m_sc_helper->region_id (id);
416  IdentifierHash rhash = m_sc_helper->calo_region_hash (reg_id);
417  assert (rhash < m_superCellIndex.size());
418  int ndx = m_superCellIndex[rhash];
419  if (ndx < 0)
420  return out;
421  int end = m_superCellIndexEnd[rhash];
422  if (end < 0)
423  return out;
424 
425  // Now search through all entries for this supercell region to find one
426  // that includes this supercell.
427  int ieta = m_sc_helper->eta (id);
428 
429  for (; ndx < end; ++ndx) {
430  const IDMapElt& elt = m_idmap[ndx];
431  if (elt.m_sc_reg == rhash &&
432  elt.m_sc_ietamin <= ieta &&
433  elt.m_sc_ietamax >= ieta)
434  {
435  // Found a matching entry.
436  // Find the overlapping eta range in the offline region.
437 
438  int ieta0 = (ieta - elt.m_sc_ietamin + elt.m_sc_ieta_adj) * elt.m_etadiv +
439  elt.m_cell_ietamin - elt.m_cell_ieta_adj;
440  Identifier cell_reg_id = m_cell_helper->region_id (elt.m_cell_reg);
441  int ieta = std::max (ieta0, elt.m_cell_ietamin);
442  int ietamax = std::min (ieta0 + elt.m_etadiv - 1, elt.m_cell_ietamax);
443 
444  // Add all matching cells to the output list.
445  int iphi0 = m_sc_helper->phi (id) * elt.m_phidiv;
446  for (; ieta <= ietamax; ++ieta) {
447  for (int ip = 0; ip < elt.m_phidiv; ip++) {
448  out.push_back(m_cell_helper->cell_id (cell_reg_id, ieta, iphi0+ip));
449  }
450  }
451  }
452  }
453  }
454 
455  else if ( m_sc_helper->is_fcal( id ) ) {
456  const LArFCAL_Base_ID* sfcal_helper = m_sc_helper->fcal_idHelper();
457  IdentifierHash sc_hash = sfcal_helper->channel_hash( id );
458  out = m_fcal_fromSuperCell[ sc_hash ];
459  }
460 
461  else if (m_sc_helper->is_tile (id)) {
462  int module = m_sc_helper->module(id);
463  int tower = m_sc_helper->tower(id);
464  int sample = m_sc_helper->sample(id);
465 
466  const Tile_Base_ID* tile_helper = m_cell_helper->tile_idHelper();
467 
468  Identifier reg_id = tile_helper->region_id (m_sc_helper->section(id),
469  m_sc_helper->side(id));
470 
471  Identifier cell_id;
472 
473  // Transition region special cases.
474  if (tower == 8 && sample == TileID::SAMP_A) {
475  if (tile_helper->cell_id (reg_id, module, 9, sample, cell_id))
476  out.push_back (cell_id);
477  }
478  if (tower == 9) {
479  Identifier greg_id = tile_helper->region_id (TileID::GAPDET,
480  m_sc_helper->side(id));
481  if (tile_helper->cell_id (greg_id, module, 8, TileID::SAMP_D, cell_id))
482  out.push_back (cell_id);
483  if (sample == TileID::SAMP_A) {
484  if (tile_helper->cell_id (greg_id, module, 9, TileID::SAMP_C, cell_id))
485  out.push_back (cell_id);
486  }
487  return out;
488  }
489 
490 
491  if (tile_helper->cell_id (reg_id, module, tower, sample, cell_id))
492  out.push_back (cell_id);
493 
494  if (sample == TileID::SAMP_A) {
495  if(tile_helper->cell_id(reg_id, module, tower, TileID::SAMP_BC, cell_id))
496  out.push_back (cell_id);
497  if(tile_helper->cell_id(reg_id, module, tower, TileID::SAMP_D, cell_id))
498  out.push_back (cell_id);
499  }
500  }
501 
502  return out;
503 }

◆ superCellToOfflineRegion()

std::vector< Identifier > CaloSuperCellIDTool::superCellToOfflineRegion ( const Identifier reg_id) const
virtual

Given a supercell region identifier, return the corresponding offline region identifier(s).

There will normally be only one, but it's possible for there to be multiple matches. If none exists, an invalid identifier is returned.

Definition at line 542 of file CaloSuperCellIDTool.cxx.

543 {
544  std::vector<Identifier> out;
545 
546  // Look for the first entry in the mapping table for this offline region.
547  IdentifierHash rhash = m_sc_helper->calo_region_hash (reg_id);
548  assert (rhash < m_superCellIndex.size());
549  int ndx = m_superCellIndex[rhash];
550  int end = m_superCellIndexEnd[rhash];
551  for (; ndx < end; ++ndx) {
552  if (m_idmap[ndx].m_sc_reg == rhash)
553  out.push_back (m_cell_helper->region_id (m_idmap[ndx].m_cell_reg));
554  }
555 
556  return out;
557 }

Member Data Documentation

◆ m_cell_helper

const CaloCell_ID* CaloSuperCellIDTool::m_cell_helper
private

Entry point for calorimeter ID helpers.

Definition at line 158 of file CaloSuperCellIDTool.h.

◆ m_fcal_fromCell

std::vector<Identifier> CaloSuperCellIDTool::m_fcal_fromCell
private

hashTable for FCAL

Definition at line 154 of file CaloSuperCellIDTool.h.

◆ m_fcal_fromSuperCell

std::vector< std::vector<Identifier> > CaloSuperCellIDTool::m_fcal_fromSuperCell
private

Definition at line 155 of file CaloSuperCellIDTool.h.

◆ m_idmap

std::vector<IDMapElt> CaloSuperCellIDTool::m_idmap
private

List of mapping table entries.

Definition at line 138 of file CaloSuperCellIDTool.h.

◆ m_offlineIndex

std::vector<int> CaloSuperCellIDTool::m_offlineIndex
private

Entry I contains the index in the mapping table of the first entry for the offline region with hash I, or -1 if there is no mapping entry.

Definition at line 142 of file CaloSuperCellIDTool.h.

◆ m_sc_helper

const CaloCell_SuperCell_ID* CaloSuperCellIDTool::m_sc_helper
private

Definition at line 159 of file CaloSuperCellIDTool.h.

◆ m_superCellIndex

std::vector<int> CaloSuperCellIDTool::m_superCellIndex
private

Entry I contains the index in the mapping table of the first entry for the supercell region with hash I, or -1 if there is no mapping entry.

Definition at line 146 of file CaloSuperCellIDTool.h.

◆ m_superCellIndexEnd

std::vector<int> CaloSuperCellIDTool::m_superCellIndexEnd
private

Entry I contains one past the index in the mapping table of the last entry for the supercell region with hash I, or -1 if there is no mapping entry.

Definition at line 151 of file CaloSuperCellIDTool.h.


The documentation for this class was generated from the following files:
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
CaloSuperCellIDTool::addMapEntry
void addMapEntry(const IDMapElt &elt)
Add an entry to the region mapping table.
Definition: CaloSuperCellIDTool.cxx:232
RunTileCalibRec.cells
cells
Definition: RunTileCalibRec.py:271
LArFCAL_Base_ID
Definition: LArFCAL_Base_ID.h:19
CaloCell_Base_ID::region
int region(const Identifier id) const
LAr field values (NOT_VALID == invalid request)
max
#define max(a, b)
Definition: cfImp.cxx:41
CaloCell_Base_ID::tower
int tower(const Identifier id) const
Tile field values (NOT_VALID == invalid request)
vtune_athena.format
format
Definition: vtune_athena.py:14
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
LArFCAL_Base_ID::pos_neg
int pos_neg(const Identifier id) const
pos_neg : +/- 2 (A/C side)
CaloIDHelper::channel_hash_max
size_type channel_hash_max() const
One more than the largest channel (cell) hash code.
initialize
void initialize()
Definition: run_EoverP.cxx:894
Tile_Base_ID::SAMP_A
@ SAMP_A
Definition: Tile_Base_ID.h:53
CaloCell_Base_ID::pos_neg
int pos_neg(const Identifier id) const
LAr field values (NOT_VALID == invalid request)
CaloCell_Base_ID::region_id
Identifier region_id(const int subCalo, const int barec_or_posneg, const int sampling_or_fcalmodule, const int region_or_dummy) const
Make a region ID from constituting fields and subCalo index; for (Mini)FCAL and Tiles,...
Tile_Base_ID::SAMP_BC
@ SAMP_BC
Definition: Tile_Base_ID.h:54
CaloSuperCellIDTool::initFCALIDMap
void initFCALIDMap()
FCAL is a special case.
Definition: CaloSuperCellIDTool.cxx:251
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
LArFCAL_Base_ID::module
int module(const Identifier id) const
module [1,3]
LArFCAL_Base_ID::channel_hash
IdentifierHash channel_hash(Identifier channelId) const
Convert a connected channel (cell) Identifier to a hash code.
CaloCell_Base_ID::LARHEC
@ LARHEC
Definition: CaloCell_Base_ID.h:46
Tile_Base_ID::GAPDET
@ GAPDET
Definition: Tile_Base_ID.h:48
CaloCell_Base_ID::eta_max
int eta_max(const Identifier regId) const
max value of eta index (-999 == failure)
CaloCell_Base_ID::is_tile
bool is_tile(const Identifier id) const
test if the id belongs to the Tiles
CaloCell_Base_ID::module
int module(const Identifier id) const
Tile field values (NOT_VALID == invalid request)
Tile_Base_ID::BARREL
@ BARREL
Definition: Tile_Base_ID.h:48
CaloCell_Base_ID::is_hec
bool is_hec(const Identifier id) const
test if the id belongs to the HEC
CaloSuperCellIDTool::m_idmap
std::vector< IDMapElt > m_idmap
List of mapping table entries.
Definition: CaloSuperCellIDTool.h:138
LArFCAL_Base_ID::eta
int eta(const Identifier id) const
eta [0,63] module 1 ; [0,31] module 2 ; [0,15] module 3
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
CaloCell_SuperCell_ID::fcal_idHelper
const LArFCAL_SuperCell_ID * fcal_idHelper() const
access to FCAL idHelper
Definition: CaloCell_SuperCell_ID.h:80
Tile_Base_ID::SAMP_C
@ SAMP_C
Definition: Tile_Base_ID.h:54
TRT::Hit::side
@ side
Definition: HitInfo.h:83
LArFCAL_Base_ID::fcal_range
id_range fcal_range() const
Range over full set of FCAL Identifiers.
CaloCell_Base_ID::reg_range
id_range reg_range(void) const
Range over set of region Identifiers (LAr + Tiles)
CaloCell_Base_ID::calo_region_hash
IdentifierHash calo_region_hash(const Identifier regionId) const
create hash id from 'global' region id
CaloSuperCellIDTool::m_fcal_fromSuperCell
std::vector< std::vector< Identifier > > m_fcal_fromSuperCell
Definition: CaloSuperCellIDTool.h:155
python.PyAthena.module
module
Definition: PyAthena.py:134
Tile_Base_ID::EXTBAR
@ EXTBAR
Definition: Tile_Base_ID.h:48
LArFCAL_Base_ID::phi
int phi(const Identifier id) const
phi [0,15]
Tile_Base_ID::region_id
Identifier region_id(int index) const
build single region, module, tower, cell, pmt, adc identifiers
Definition: Tile_Base_ID.cxx:405
CaloSuperCellIDTool::initIDMap
void initIDMap()
Initialize the mapping table.
Definition: CaloSuperCellIDTool.cxx:80
CaloSuperCellIDTool::m_fcal_fromCell
std::vector< Identifier > m_fcal_fromCell
hashTable for FCAL
Definition: CaloSuperCellIDTool.h:154
CaloCell_Base_ID::is_em
bool is_em(const Identifier id) const
test if the id belongs to LArEM
CaloCell_Base_ID::eta0
float eta0(const Identifier regId) const
minimum LAr eta for this region
FullCPAlgorithmsTest_eljob.sample
sample
Definition: FullCPAlgorithmsTest_eljob.py:100
CaloCell_Base_ID::sample
int sample(const Identifier id) const
Tile field values (NOT_VALID == invalid request)
CaloSuperCellIDTool::m_superCellIndexEnd
std::vector< int > m_superCellIndexEnd
Entry I contains one past the index in the mapping table of the last entry for the supercell region w...
Definition: CaloSuperCellIDTool.h:151
CaloCell_Base_ID::is_fcal
bool is_fcal(const Identifier id) const
test if the id belongs to the FCAL - true also for MiniFCAL
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
CaloCell_Base_ID::sampling
int sampling(const Identifier id) const
LAr field values (NOT_VALID == invalid request)
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
LArFCAL_Base_ID::channel_id
Identifier channel_id(const ExpandedIdentifier &exp_id) const
cell identifier for a channel from ExpandedIdentifier
Tile_Base_ID
This class factors out code common between TileID and Tile_SuperCell_ID.
Definition: Tile_Base_ID.h:39
test_pyathena.parent
parent
Definition: test_pyathena.py:15
CaloCell_Base_ID::eta
int eta(const Identifier id) const
LAr field values (NOT_VALID == invalid request)
find_tgc_unfilled_channelids.ip
ip
Definition: find_tgc_unfilled_channelids.py:3
CaloCell_Base_ID::sub_calo
int sub_calo(const Identifier id) const
returns an int taken from SUBCALO enum and describing the subCalo to which the Id belongs.
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
CaloCell_Base_ID::phiGranularity
float phiGranularity(const Identifier regId) const
LAr phi granularity (NOT_VALID == failure)
min
#define min(a, b)
Definition: cfImp.cxx:40
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
CaloCell_Base_ID::eta_min
int eta_min(const Identifier regId) const
min value of eta index (-999 == failure)
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
CaloCell_Base_ID::phi
int phi(const Identifier id) const
LAr field values (NOT_VALID == invalid request)
CaloCell_Base_ID::cell_id
Identifier cell_id(const int subCalo, const int barec_or_posneg, const int sampling_or_fcalmodule, const int region_or_dummy, const int eta, const int phi) const
Make a cell (== channel) ID from constituting fields and subCalo index; for (Mini)FCAL,...
Tile_Base_ID::SAMP_D
@ SAMP_D
Definition: Tile_Base_ID.h:55
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
CaloCell_Base_ID::side
int side(const Identifier id) const
Tile field values (NOT_VALID == invalid request)
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
DEBUG
#define DEBUG
Definition: page_access.h:11
CaloSuperCellIDTool::m_offlineIndex
std::vector< int > m_offlineIndex
Entry I contains the index in the mapping table of the first entry for the offline region with hash I...
Definition: CaloSuperCellIDTool.h:142
IdentifierHash
Definition: IdentifierHash.h:38
CaloSuperCellIDTool::m_sc_helper
const CaloCell_SuperCell_ID * m_sc_helper
Definition: CaloSuperCellIDTool.h:159
section
void section(const std::string &sec)
Definition: TestTriggerMenuAccess.cxx:22
Tile_Base_ID::cell_id
Identifier cell_id(const Identifier &any_id) const
Definition: Tile_Base_ID.cxx:581
LArCellBinning.etamin
etamin
Definition: LArCellBinning.py:137
CaloSuperCellIDTool::m_superCellIndex
std::vector< int > m_superCellIndex
Entry I contains the index in the mapping table of the first entry for the supercell region with hash...
Definition: CaloSuperCellIDTool.h:146
LArFCAL_ID
Helper class for LArFCAL offline identifiers.
Definition: LArFCAL_ID.h:60
CaloCell_Base_ID::calo_region_hash_max
size_type calo_region_hash_max(void) const
cell 'global' region table max size
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
CaloSuperCellIDTool::m_cell_helper
const CaloCell_ID * m_cell_helper
Entry point for calorimeter ID helpers.
Definition: CaloSuperCellIDTool.h:158
CaloCell_ID::tile_idHelper
const TileID * tile_idHelper() const
access to Tile idHelper
Definition: CaloCell_ID.h:81
CaloCell_ID::fcal_idHelper
const LArFCAL_ID * fcal_idHelper() const
access to FCAL idHelper
Definition: CaloCell_ID.h:75
CaloCell_Base_ID::section
int section(const Identifier id) const
Tile field values (NOT_VALID == invalid request)
CaloCell_Base_ID::etaGranularity
float etaGranularity(const Identifier regId) const
LAr eta granularity (NOT_VALID == failure)