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

#include <IdDictGroup.h>

Collaboration diagram for IdDictGroup:

Classes

struct  IdDictRegionTreeNode
 Tree structure for fast unpacking. More...
 

Public Member Functions

 IdDictGroup ()
 
 IdDictGroup (const std::string &name)
 
 ~IdDictGroup ()
 
const std::string & name ()
 
const std::vector< IdDictDictEntry * > & entries ()
 
const std::vector< IdDictRegion * > & regions ()
 
MultiRange build_multirange () const
 Get MultiRange for this group. More...
 
void add_dictentry (IdDictDictEntry *entry)
 
void resolve_references (const IdDictMgr &idd, IdDictDictionary &dictionary, size_t &index)
 
void generate_implementation (const IdDictMgr &idd, IdDictDictionary &dictionary, const std::string &tag="")
 
void reset_implementation ()
 
bool verify () const
 
void sort ()
 Sort: More...
 
void clear ()
 
int unpack (const Identifier &id, const ExpandedIdentifier &prefix, size_t index2, ExpandedIdentifier &unpackedId, std::vector< const IdDictFieldImplementation * > *impls=nullptr) const
 Unpack the value_type id to an expanded Identifier, considering the provided prefix (result will include the prefix) and up to index2 - (index1 is assumed to be 0, i.e. More...
 
void build_region_tree ()
 Take the list of regions and build a tree structure for fast unpacking. More...
 
void dump () const
 Dump regions and tree for this group. More...
 
void dump_regions () const
 Dump the list of regions for this group. More...
 
void dump_tree () const
 Dump the tree structure built from the regions for fast unpacking. More...
 

Private Member Functions

void add_tree_field (const IdDictRegion &re, unsigned ifield, unsigned inode)
 Recursively add new nodes to the tree structure. More...
 

Private Attributes

std::string m_name
 
std::vector< IdDictDictEntry * > m_entries
 
std::vector< IdDictRegion * > m_regions
 
bool m_generated_implementation
 
std::vector< IdDictRegionTreeNodem_region_tree
 The list of region nodes. More...
 

Detailed Description

Definition at line 25 of file IdDictGroup.h.

Constructor & Destructor Documentation

◆ IdDictGroup() [1/2]

IdDictGroup::IdDictGroup ( )

Definition at line 22 of file IdDictGroup.cxx.

23  :
25 }

◆ IdDictGroup() [2/2]

IdDictGroup::IdDictGroup ( const std::string &  name)

Definition at line 27 of file IdDictGroup.cxx.

28  :
29  m_name(name),
31 }

◆ ~IdDictGroup()

IdDictGroup::~IdDictGroup ( )

Definition at line 33 of file IdDictGroup.cxx.

33  {
34 }

Member Function Documentation

◆ add_dictentry()

void IdDictGroup::add_dictentry ( IdDictDictEntry entry)

Definition at line 71 of file IdDictGroup.cxx.

71  {
72  m_entries.push_back(region);
73 }

◆ add_tree_field()

void IdDictGroup::add_tree_field ( const IdDictRegion re,
unsigned  ifield,
unsigned  inode 
)
private

Recursively add new nodes to the tree structure.

Parameters
reThe region we're processing.
ifieldThe index of the next field to add.
inodeThe index of the node to which to add.

Definition at line 339 of file IdDictGroup.cxx.

342 {
343  using element_type = IdentifierField::element_type;
344  using element_vector = IdentifierField::element_vector;
345  using size_type = IdentifierField::size_type;
346  using index_vector = IdentifierField::index_vector;
347 
348  // Helper to retrieve the indices that may actually be used by a field.
349  // n is the node we're looking for. We use the ored_field referenced there
350  // to know what can actually be stored in the field.
351  // impl gives the field that we're trying to match.
352  // So we return the indices for the ored_field corresponding
353  // to valid values for impl.
354  auto get_field_indices = [] (const IdDictRegionTreeNode& n,
356  {
357  index_vector indices;
358  const Range::field& ored_field = n.m_impl.ored_field();
359  if (impl.field().isEnumerated()) {
360  const element_vector& vals = impl.field().get_values();
361  indices.reserve (vals.size());
362  for (element_type v : vals) {
363  indices.push_back (ored_field.get_value_index (v));
364  }
365  }
366  else if (impl.field().isBounded()) {
367  auto [minval, maxval] = impl.field().get_minmax();
368  size_type minidx = ored_field.get_value_index (minval);
369  size_type maxidx = ored_field.get_value_index (maxval);
370  indices.resize (maxidx - minidx + 1);
371  std::iota (indices.begin(), indices.end(), minidx);
372  }
373  else {
374  std::abort();
375  }
376  return indices;
377  };
378 
379  // This will be the field we're matching.
380  const IdDictFieldImplementation& prev_impl = re.implementation(ifield-1);
381 
382  {
383  // Get the children for the current node.
384  IdDictRegionTreeNode& n = m_region_tree.at(inode);
385  auto& children = std::get<0> (n.m_children);
386 
387  // If we're looking at the last field, fill in the node pointersj
388  // with END; then we're done.
389  if (ifield == re.n_implementation()) {
390  index_vector indices = get_field_indices (n, prev_impl);
391  for (size_t idx : indices) {
393  }
394  return;
395  }
396 
397  // Verify consistency of the field with what's stored in the node.
398  if (prev_impl.bits() != n.m_impl.bits() ||
399  prev_impl.bits_offset() != n.m_impl.bits_offset() ||
400  prev_impl.ored_field() != n.m_impl.ored_field())
401  {
402  dump();
403  std::abort();
404  }
405 
406  // If this implementation has a field that is not equivalent with what
407  // we saved in the node, then save it in m_other_impls.
408  if (n.m_impl.field() != prev_impl.field()) {
409  if (!n.m_other_impls) {
410  n.m_other_impls = std::make_unique<std::vector<const IdDictFieldImplementation*> > (1, &prev_impl);
411  }
412  else {
413  if (std::ranges::find_if (*n.m_other_impls,
414  [&](const IdDictFieldImplementation* a)
415  { return a->field() == prev_impl.field(); })
416  == n.m_other_impls->end())
417  {
418  n.m_other_impls->push_back (&prev_impl);
419  }
420  }
421  }
422  }
423 
424  // Indices we want to store.
425  index_vector indices = get_field_indices (m_region_tree[inode], prev_impl);
426  const IdDictFieldImplementation& impl = re.implementation(ifield);
427 
428  // Children for the node.
429  auto children = [&]() -> std::vector<unsigned>& { return std::get<0> (m_region_tree[inode].m_children); };
430 
431  unsigned new_node = 0;
432  std::vector<unsigned> nodes_seen;
433 
434  // Loop over indices that we want to add.
435  for (size_t idx : indices) {
436 
437  // If we've already recorded this index as END, fail.
438  unsigned next_node = children().at (idx);
439  if (next_node == IdDictRegionTreeNode::END) {
440  dump();
441  std::abort();
442  }
443 
444  if (next_node != 0) {
445  // There is an existing node. Process it recursively; but we only
446  // need to this once for each unique node.
447  if (std::ranges::find (nodes_seen, next_node) == nodes_seen.end()) {
448  add_tree_field (re, ifield+1, next_node);
449  nodes_seen.push_back (next_node);
450  }
451  }
452  else {
453  // No node had been recorded for this index.
454  if (new_node != 0) {
455  // We've already made a new node. So just record it.
456  children().at(idx) = new_node;
457  }
458  else {
459  // Need to make a new node.
460  new_node = m_region_tree.size();
461  if (new_node == IdDictRegionTreeNode::END) {
462  std::abort();
463  }
464  // Careful --- this will invalidate references to nodes.
465  m_region_tree.emplace_back (impl);
466  children().at(idx) = new_node;
467  add_tree_field (re, ifield+1, new_node);
468  }
469  }
470  }
471 }

◆ build_multirange()

MultiRange IdDictGroup::build_multirange ( ) const

Get MultiRange for this group.

Definition at line 51 of file IdDictGroup.cxx.

51  {
53 
54  for (const IdDictRegion* region : m_regions) {
55 
56  // skip regions created from parents
57  if ("dummy" == region->name()) continue;
58 
59  // skip empty regions - may arise from alternate_regions
60  // where a tag selects an empty region
61  if (region->is_empty()) continue;
62 
63  Range r = region->build_range();
64  result.add(std::move(r));
65  }
66 
67  return(result);
68 }

◆ build_region_tree()

void IdDictGroup::build_region_tree ( )

Take the list of regions and build a tree structure for fast unpacking.

Definition at line 478 of file IdDictGroup.cxx.

479 {
480  // Loop through regions.
481  [[maybe_unused]] unsigned iregion = 0; // Region index, really only for debugging.
482  for (const IdDictRegion* re : m_regions) {
483  // Skip dummy/empty regions.
484  if (re->fieldSize() == 0 || re->name() == "dummy") {
485  ++iregion;
486  continue;
487  }
488 
489  // Add an initial node if we haven't done so already.
490  if (m_region_tree.empty()) {
491  m_region_tree.emplace_back (re->implementation(0));
492  }
493 
494  // Add nodes for the current region, starting at field 1.
495  add_tree_field (*re, 1, 0);
496 
497  ++iregion;
498  }
499 
500  // Compress child vectors if possible.
501  for (IdDictRegionTreeNode& n : m_region_tree) {
502  n.optimize();
503  }
504 }

◆ clear()

void IdDictGroup::clear ( )

Definition at line 178 of file IdDictGroup.cxx.

178  {
179  for (IdDictDictEntry* region : m_entries) {
180  region->clear();
181  delete region;
182  }
183 
184  m_entries.clear();
185 }

◆ dump()

void IdDictGroup::dump ( ) const

Dump regions and tree for this group.

Definition at line 510 of file IdDictGroup.cxx.

511 {
512  std::cout << "===== IdDictGroup " << m_name << "\n";
513  dump_regions();
514  dump_tree();
515 }

◆ dump_regions()

void IdDictGroup::dump_regions ( ) const

Dump the list of regions for this group.

Definition at line 521 of file IdDictGroup.cxx.

522 {
523  std::cout << "Regions:\n";
524  for (unsigned iregion = 0; const IdDictRegion* re : m_regions) {
525  std::cout << " " << iregion++ << " " << re->name() << " " << re->group_name() << " " << re->tag() << "\n";
526  size_t nimpl = re->n_implementation();
527  bool first = true;
528  for (size_t i = 0; i < nimpl; ++i) {
529  const IdDictFieldImplementation& impl = re->implementation(i);
530  std::cout << (first ? " " : "; ") << impl.field() << " " << impl.ored_field() << " " << impl.bits() << "/" << impl.bits_offset();
531  first = false;
532  }
533  std::cout << "\n";
534  }
535 }

◆ dump_tree()

void IdDictGroup::dump_tree ( ) const

Dump the tree structure built from the regions for fast unpacking.

Definition at line 541 of file IdDictGroup.cxx.

542 {
543  size_t sz = 0;
544  for (const auto& n : m_region_tree) {
545  if (n.m_children.index() == 0) {
546  sz += std::get<0>(n.m_children).size();
547  }
548  }
549  std::cout << "Region Tree totsize " << sz << "\n";
550  for (unsigned inode = 0; const auto& n : m_region_tree) {
551  std::cout << " " << inode++ << " " << n.m_impl.field()
552  << " " << n.m_impl.ored_field() << " -- ";
553 
554  if (n.m_children.index() == 0) {
555  const auto& children = std::get<0> (n.m_children);
556  unsigned istart = 0;
557  unsigned ichild = 0;
558  bool first = true;
559  for (size_t i = 0; uint64_t c : children) {
560  if (c != ichild) {
561  if (ichild != 0) {
562  if (!first) std::cout << " ";
563  first = false;
564  if (istart != i-1) {
565  std::cout << istart << "-";
566  }
567  std::cout << i-1 << ":";
568  if (ichild == IdDictRegionTreeNode::END) {
569  std::cout << "END";
570  }
571  else {
572  std::cout << ichild;
573  }
574  }
575  ichild = c;
576  istart = i;
577  }
578  ++i;
579  }
580  if (ichild != 0) {
581  if (!first) std::cout << " ";
582  if (istart != children.size()-1) {
583  std::cout << istart << "-";
584  }
585  std::cout << children.size()-1 << ":";
586  if (ichild == IdDictRegionTreeNode::END) {
587  std::cout << "END";
588  }
589  else {
590  std::cout << ichild;
591  }
592  }
593  }
594  else {
595  const auto& children = std::get<1> (n.m_children);
596  if (children.first == 1) {
597  std::cout << "0:";
598  }
599  else {
600  std::cout << "0-" << children.first-1 << ":";
601  }
602  if (children.second == IdDictRegionTreeNode::END) {
603  std::cout << "END";
604  }
605  else {
606  std::cout << children.second;
607  }
608  }
609  if (n.m_other_impls) {
610  std::cout << " [";
611  bool first = true;
612  for (const IdDictFieldImplementation* ii : *n.m_other_impls) {
613  if (!first)
614  std::cout << "; ";
615  else
616  first = false;
617  std::cout << ii->field();
618  }
619  std::cout << "]";
620  }
621  std::cout << "\n";
622  }
623  std::cout.flush();
624 }

◆ entries()

const std::vector< IdDictDictEntry * > & IdDictGroup::entries ( )

Definition at line 41 of file IdDictGroup.cxx.

41  {
42  return(m_entries);
43 }

◆ generate_implementation()

void IdDictGroup::generate_implementation ( const IdDictMgr idd,
IdDictDictionary dictionary,
const std::string &  tag = "" 
)

Definition at line 88 of file IdDictGroup.cxx.

90  {
91  if (Debugger::debug()) {
92  std::cout << "IdDictGroup::generate_implementation>" << std::endl;
93  }
94 
96  // Loop over entries and fill regions vec with selected region
97  // (AltRegions have a selection)
98  for (IdDictDictEntry* ent : m_entries) {
99  ent->generate_implementation(idd, dictionary, tag);
100  // Get region and save in m_regions
101  IdDictRegion* region = dynamic_cast<IdDictRegion*> (ent);
102  if (region) {
103  m_regions.push_back(region);
104  } else {
105  IdDictAltRegions* altregions = dynamic_cast<IdDictAltRegions*> (ent);
106  if (altregions) {
107  m_regions.push_back(altregions->selected_region());
108  }
109  }
110  }
111 
112  if (m_regions.size() != m_entries.size()) {
113  std::cout << "IdDictGroup::generate_implementation - mismatch of sizes: regions/entries "
114  << m_regions.size() << " " << m_entries.size()
115  << std::endl;
116  }
117 
119  }
120 }

◆ name()

const std::string & IdDictGroup::name ( )

Definition at line 36 of file IdDictGroup.cxx.

36  {
37  return(m_name);
38 }

◆ regions()

const std::vector< IdDictRegion * > & IdDictGroup::regions ( )

Definition at line 46 of file IdDictGroup.cxx.

46  {
47  return(m_regions);
48 }

◆ reset_implementation()

void IdDictGroup::reset_implementation ( )

Definition at line 123 of file IdDictGroup.cxx.

123  {
125  m_regions.clear();
126  for (IdDictDictEntry* ent : m_entries) {
127  ent->reset_implementation();
128  }
130  }
131 }

◆ resolve_references()

void IdDictGroup::resolve_references ( const IdDictMgr idd,
IdDictDictionary dictionary,
size_t &  index 
)

Definition at line 76 of file IdDictGroup.cxx.

78  {
79  for (IdDictDictEntry* ent : m_entries) {
80  ent->set_index(index);
81  index++;
82 
83  ent->resolve_references(idd, dictionary);
84  }
85 }

◆ sort()

void IdDictGroup::sort ( )

Sort:

Loop over regions and sort according to their first identifier

Definition at line 148 of file IdDictGroup.cxx.

148  {
149  std::map< ExpandedIdentifier, IdDictDictEntry* > regions;
150 
151  for (IdDictRegion* region : m_regions) {
152  Range range = region->build_range();
153  RangeIterator itr(range);
154  auto first = itr.begin();
155  auto last = itr.end();
156  if (first != last) {
157  regions[*first] = region;
158  } else {
159  std::cout << "IdDictDictionary::sort - WARNING empty region cannot sort "
160  << std::endl;
161  }
162  }
163  if (regions.size() == m_regions.size()) {
164  // Reorder the regions
166  std::vector<IdDictRegion*>::size_type vecIt = 0;
167  for (; mapIt != regions.end(); ++mapIt, ++vecIt) {
168  m_entries[vecIt] = (*mapIt).second;
169  }
170  } else {
171  std::cout << "IdDictGroup::sort - WARNING region map size is NOT the same as the vector size. Map size "
172  << regions.size() << " vector size " << m_regions.size()
173  << std::endl;
174  }
175 }

◆ unpack()

int IdDictGroup::unpack ( const Identifier id,
const ExpandedIdentifier prefix,
size_t  index2,
ExpandedIdentifier unpackedId,
std::vector< const IdDictFieldImplementation * > *  impls = nullptr 
) const

Unpack the value_type id to an expanded Identifier, considering the provided prefix (result will include the prefix) and up to index2 - (index1 is assumed to be 0, i.e.

part of prefix). If impls is provided, then fill it with pointers to the implementations for each unpacked field.

Returns 0 on success, nonzero on error.

Definition at line 230 of file IdDictGroup.cxx.

235 {
236  using element_type = ExpandedIdentifier::element_type;
237  using size_type = IdentifierField::size_type;
238 
239  // Give up if the tree representation hasn't been built.
240  if (m_region_tree.empty()) std::abort();
241 
242  // Clear output.
243  unpackedId.clear();
244  if (impls) {
245  impls->clear();
246  impls->reserve (12);
247  }
248 
249  // Start at the first node, and assume success.
250  unsigned inode = 0;
251  int ret = 0;
252 
253  // Loop over fields.
254  for (size_t index = 0; index <= index2; ++index) {
255 
256  // Fetch the node.
257  const IdDictRegionTreeNode& n = m_region_tree.at(inode);
258 
259  // Find the index+value for this field. If we're looking at a prefix,
260  // get it from there; otherwise, unpack from the input identifier.
261  element_type val;
262  size_type validx;
263  if (index < prefix.fields()) {
264  val = prefix[index];
265  validx = n.m_impl.ored_field().get_value_index (val);
266  }
267  else {
268  validx = n.m_impl.unpackToIndex (id);
269  try {
270  val = n.m_impl.ored_field().get_value_at (validx);
271  } catch (const std::out_of_range&) {
272  ret = 1;
273  break;
274  }
275  }
276 
277  // Find the next node.
278  if (n.m_children.index() == 0) {
279  // Children stored as a vector.
280  const auto& children = std::get<0> (n.m_children);
281  if (validx < children.size()) {
282  inode = children[validx];
283  }
284  else {
285  inode = 0;
286  }
287  }
288  else {
289  // Children stored as a size,node-number field.
290  const auto& children = std::get<1> (n.m_children);
291  if (validx < children.first) {
292  inode = children.second;
293  }
294  else {
295  inode = 0;
296  }
297  }
298 
299  // Give up if no regions match the identifier.
300  if (!inode) {
301  break;
302  }
303 
304  // Record this field in the output.
305  unpackedId.add (val);
306 
307  // Also return the implementation, if requested.
308  // But we need to be sure that we return an implementation that actually
309  // matches the field value.
310  if (impls) {
311  if (n.m_impl.field().match (val)) {
312  impls->push_back (&n.m_impl);
313  }
314  else if (n.m_other_impls) {
315  for (const IdDictFieldImplementation* ii : *n.m_other_impls) {
316  if (ii->field().match (val)) {
317  impls->push_back (ii);
318  break;
319  }
320  }
321  }
322  if (unpackedId.fields() != impls->size()) std::abort();
323  }
324 
325  // Stop if we've reached the end of the identifier.
326  if (inode == IdDictRegionTreeNode::END) break;
327  }
328 
329  return ret;
330 }

◆ verify()

bool IdDictGroup::verify ( ) const

Definition at line 134 of file IdDictGroup.cxx.

134  {
135  // Should check that all regions have the same number of levels,
136  // which is part of the definition of a group
137  return(true);
138 }

Member Data Documentation

◆ m_entries

std::vector<IdDictDictEntry*> IdDictGroup::m_entries
private

Definition at line 116 of file IdDictGroup.h.

◆ m_generated_implementation

bool IdDictGroup::m_generated_implementation
private

Definition at line 118 of file IdDictGroup.h.

◆ m_name

std::string IdDictGroup::m_name
private

Definition at line 115 of file IdDictGroup.h.

◆ m_region_tree

std::vector<IdDictRegionTreeNode> IdDictGroup::m_region_tree
private

The list of region nodes.

Definition at line 213 of file IdDictGroup.h.

◆ m_regions

std::vector<IdDictRegion*> IdDictGroup::m_regions
private

Definition at line 117 of file IdDictGroup.h.


The documentation for this class was generated from the following files:
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
beamspotman.r
def r
Definition: beamspotman.py:672
IdDictGroup::m_name
std::string m_name
Definition: IdDictGroup.h:115
IdDictAltRegions::selected_region
IdDictRegion * selected_region()
Currently selected region.
Definition: IdDictAltRegions.h:81
fitman.sz
sz
Definition: fitman.py:527
get_generator_info.result
result
Definition: get_generator_info.py:21
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
IdentifierField::element_type
ExpandedIdentifier::element_type element_type
Definition: IdentifierField.h:85
index
Definition: index.py:1
IdDictGroup::m_regions
std::vector< IdDictRegion * > m_regions
Definition: IdDictGroup.h:117
Trk::indices
std::pair< long int, long int > indices
Definition: AlSymMatBase.h:24
ExpandedIdentifier::add
void add(element_type value)
Append a value into a new field.
RangeIterator
This iterator is able to generate all possible identifiers, from a fully bounded Range.
Definition: RangeIterator.h:19
ExpandedIdentifier::fields
size_type fields() const
IdDictDictEntry
Definition: IdDictDictEntry.h:13
IdDictAltRegions
Definition: IdDictAltRegions.h:20
IdDictGroup::dump_tree
void dump_tree() const
Dump the tree structure built from the regions for fast unpacking.
Definition: IdDictGroup.cxx:541
IdDictRegion
Definition: IdDictRegion.h:20
IdDictGroup::m_entries
std::vector< IdDictDictEntry * > m_entries
Definition: IdDictGroup.h:116
IdentifierField::match
bool match(element_type value) const
The basic match operation Given a value, test to see if it satisfies the constraints for this field.
Definition: IdentifierField.cxx:71
IdDictFieldImplementation::field
const Range::field & field() const
Definition: IdDictFieldImplementation.h:191
IdentifierField::get_value_index
size_type get_value_index(element_type value) const
Definition: IdentifierField.cxx:49
lumiFormat.i
int i
Definition: lumiFormat.py:85
beamspotman.n
n
Definition: beamspotman.py:727
IdDictFieldImplementation::bits_offset
size_type bits_offset() const
Definition: IdDictFieldImplementation.h:208
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:194
checkCorrelInHIST.prefix
dictionary prefix
Definition: checkCorrelInHIST.py:391
xAOD::uint64_t
uint64_t
Definition: EventInfo_v1.cxx:123
IdDictFieldImplementation::ored_field
const Range::field & ored_field() const
Definition: IdDictFieldImplementation.h:196
Debugger::debug
static bool debug()
Definition: Debugger.h:18
IdDictGroup::regions
const std::vector< IdDictRegion * > & regions()
Definition: IdDictGroup.cxx:46
IdentifierField::element_vector
std::vector< element_type > element_vector
Definition: IdentifierField.h:87
IdDictGroup::m_region_tree
std::vector< IdDictRegionTreeNode > m_region_tree
The list of region nodes.
Definition: IdDictGroup.h:213
IdDictGroup::IdDictRegionTreeNode::END
static constexpr unsigned END
Special value used to indicate that we've reached the end.
Definition: IdDictGroup.h:210
MultiRange
A MultiRange combines several Ranges.
Definition: MultiRange.h:17
master.dictionary
dictionary
Definition: master.py:47
Trk::index2
@ index2
Definition: BoundarySurfaceFace.h:49
IdentifierField::size_type
ExpandedIdentifier::size_type size_type
Definition: IdentifierField.h:86
IdentifierField::index_vector
std::vector< size_type > index_vector
Definition: IdentifierField.h:88
ReadLUTFromCool.maxidx
maxidx
Definition: ReadLUTFromCool.py:116
Range
A Range describes the possible ranges for the field values of an ExpandedIdentifier.
Definition: DetectorDescription/Identifier/Identifier/Range.h:29
python.PyAthena.v
v
Definition: PyAthena.py:154
impl
Definition: CaloGPUClusterAndCellDataMonitorOptions.h:46
IdDictGroup::name
const std::string & name()
Definition: IdDictGroup.cxx:36
DeMoScan.index
string index
Definition: DeMoScan.py:362
a
TList * a
Definition: liststreamerinfos.cxx:10
IdDictGroup::m_generated_implementation
bool m_generated_implementation
Definition: IdDictGroup.h:118
IdDictGroup::add_tree_field
void add_tree_field(const IdDictRegion &re, unsigned ifield, unsigned inode)
Recursively add new nodes to the tree structure.
Definition: IdDictGroup.cxx:339
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
DeMoScan.first
bool first
Definition: DeMoScan.py:534
re
const boost::regex re(r_e)
IdentifierField
This is the individual specification for the range of one ExpandedIdentifier IdentifierField.
Definition: IdentifierField.h:83
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
ExpandedIdentifier::clear
void clear()
Erase all fields.
python.DecayParser.children
children
Definition: DecayParser.py:31
CaloCondBlobAlgs_fillNoiseFromASCII.tag
string tag
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:23
IdDictFieldImplementation
IdDictFieldImplementation is used to capture the specification of a single field of an Identifier.
Definition: IdDictFieldImplementation.h:58
ExpandedIdentifier::element_type
int element_type
Definition: DetectorDescription/Identifier/Identifier/ExpandedIdentifier.h:106
IdDictGroup::dump_regions
void dump_regions() const
Dump the list of regions for this group.
Definition: IdDictGroup.cxx:521
python.compressB64.c
def c
Definition: compressB64.py:93
inode
Definition: listroot.cxx:155
IdDictFieldImplementation::bits
size_type bits() const
Definition: IdDictFieldImplementation.h:202
IdDictGroup::dump
void dump() const
Dump regions and tree for this group.
Definition: IdDictGroup.cxx:510
PlotCalibFromCool.vals
vals
Definition: PlotCalibFromCool.py:474