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
 
size_t n_regions () const
 
const IdDictRegionregion (size_t index) const
 
const std::vector< IdDictRegion * > & regions ()
 Non-const access to regions. More...
 
MultiRange build_multirange () const
 Get MultiRange for this group. More...
 
void add_dictentry (IdDictDictEntry *entry)
 
void resolve_references (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 62 of file IdDictGroup.cxx.

62  {
63  m_entries.push_back(region);
64 }

◆ 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 330 of file IdDictGroup.cxx.

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

◆ build_multirange()

MultiRange IdDictGroup::build_multirange ( ) const

Get MultiRange for this group.

Definition at line 42 of file IdDictGroup.cxx.

42  {
44 
45  for (const IdDictRegion* region : m_regions) {
46 
47  // skip regions created from parents
48  if ("dummy" == region->name()) continue;
49 
50  // skip empty regions - may arise from alternate_regions
51  // where a tag selects an empty region
52  if (region->is_empty()) continue;
53 
55  result.add(std::move(r));
56  }
57 
58  return(result);
59 }

◆ build_region_tree()

void IdDictGroup::build_region_tree ( )

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

Definition at line 469 of file IdDictGroup.cxx.

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

◆ clear()

void IdDictGroup::clear ( )

Definition at line 168 of file IdDictGroup.cxx.

168  {
169  for (IdDictDictEntry* region : m_entries) {
170  region->clear();
171  delete region;
172  }
173 
174  m_entries.clear();
175  m_region_tree.clear();
176 }

◆ dump()

void IdDictGroup::dump ( ) const

Dump regions and tree for this group.

Definition at line 501 of file IdDictGroup.cxx.

502 {
503  std::cout << "===== IdDictGroup " << m_name << "\n";
504  dump_regions();
505  dump_tree();
506 }

◆ dump_regions()

void IdDictGroup::dump_regions ( ) const

Dump the list of regions for this group.

Definition at line 512 of file IdDictGroup.cxx.

513 {
514  std::cout << "Regions:\n";
515  for (unsigned iregion = 0; const IdDictRegion* re : m_regions) {
516  std::cout << " " << iregion++ << " " << re->name() << " " << re->group_name() << " " << re->tag() << "\n";
517  size_t nimpl = re->n_implementation();
518  bool first = true;
519  for (size_t i = 0; i < nimpl; ++i) {
520  const IdDictFieldImplementation& impl = re->implementation(i);
521  std::cout << (first ? " " : "; ") << impl.field() << " " << impl.ored_field() << " " << impl.bits() << "/" << impl.bits_offset();
522  first = false;
523  }
524  std::cout << "\n";
525  }
526 }

◆ dump_tree()

void IdDictGroup::dump_tree ( ) const

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

Definition at line 532 of file IdDictGroup.cxx.

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

◆ generate_implementation()

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

Definition at line 79 of file IdDictGroup.cxx.

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

◆ n_regions()

size_t IdDictGroup::n_regions ( ) const
inline

Definition at line 228 of file IdDictGroup.h.

229 {
230  return m_regions.size();
231 }

◆ name()

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

Definition at line 222 of file IdDictGroup.h.

222  {
223  return m_name;
224 }

◆ region()

const IdDictRegion & IdDictGroup::region ( size_t  index) const
inline

Definition at line 235 of file IdDictGroup.h.

236 {
237  return *m_regions.at(index);
238 }

◆ regions()

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

Non-const access to regions.

Definition at line 37 of file IdDictGroup.cxx.

37  {
38  return(m_regions);
39 }

◆ reset_implementation()

void IdDictGroup::reset_implementation ( )

Definition at line 114 of file IdDictGroup.cxx.

114  {
116  m_regions.clear();
117  for (IdDictDictEntry* ent : m_entries) {
118  ent->reset_implementation();
119  }
121  }
122 }

◆ resolve_references()

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

Definition at line 67 of file IdDictGroup.cxx.

69  {
70  for (IdDictDictEntry* ent : m_entries) {
71  ent->set_index(index);
72  index++;
73 
74  ent->resolve_references(idd, dictionary);
75  }
76 }

◆ sort()

void IdDictGroup::sort ( )

Sort:

Loop over regions and sort according to their first identifier

Definition at line 139 of file IdDictGroup.cxx.

139  {
140  std::map< ExpandedIdentifier, IdDictDictEntry* > regions;
141 
142  for (IdDictRegion* region : m_regions) {
144  RangeIterator itr(range);
145  auto first = itr.begin();
146  auto last = itr.end();
147  if (first != last) {
148  regions[*first] = region;
149  } else {
150  std::cout << "IdDictDictionary::sort - WARNING empty region cannot sort "
151  << std::endl;
152  }
153  }
154  if (regions.size() == m_regions.size()) {
155  // Reorder the regions
156  std::vector<IdDictRegion*>::size_type vecIt = 0;
157  for (auto& p : regions) {
158  m_entries[vecIt++] = p.second;
159  }
160  } else {
161  std::cout << "IdDictGroup::sort - WARNING region map size is NOT the same as the vector size. Map size "
162  << regions.size() << " vector size " << m_regions.size()
163  << std::endl;
164  }
165 }

◆ 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 221 of file IdDictGroup.cxx.

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

◆ verify()

bool IdDictGroup::verify ( ) const

Definition at line 125 of file IdDictGroup.cxx.

125  {
126  // Should check that all regions have the same number of levels,
127  // which is part of the definition of a group
128  return(true);
129 }

Member Data Documentation

◆ m_entries

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

Definition at line 120 of file IdDictGroup.h.

◆ m_generated_implementation

bool IdDictGroup::m_generated_implementation
private

Definition at line 122 of file IdDictGroup.h.

◆ m_name

std::string IdDictGroup::m_name
private

Definition at line 119 of file IdDictGroup.h.

◆ m_region_tree

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

The list of region nodes.

Definition at line 217 of file IdDictGroup.h.

◆ m_regions

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

Definition at line 121 of file IdDictGroup.h.


The documentation for this class was generated from the following files:
beamspotman.r
def r
Definition: beamspotman.py:672
IdDictRegion::clear
virtual void clear() override
Definition: IdDictRegion.cxx:225
IdDictGroup::m_name
std::string m_name
Definition: IdDictGroup.h:119
IdDictRegion::build_range
virtual Range build_range() const override
Definition: IdDictRegion.cxx:265
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:138
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:121
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
IdDictGroup::name
const std::string & name() const
Definition: IdDictGroup.h:222
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:532
IdDictRegion
Definition: IdDictRegion.h:20
IdDictGroup::m_entries
std::vector< IdDictDictEntry * > m_entries
Definition: IdDictGroup.h:120
IdDictGroup::region
const IdDictRegion & region(size_t index) const
Definition: IdDictGroup.h:235
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
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:209
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()
Non-const access to regions.
Definition: IdDictGroup.cxx:37
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:217
IdDictGroup::IdDictRegionTreeNode::END
static constexpr unsigned END
Special value used to indicate that we've reached the end.
Definition: IdDictGroup.h:214
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
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:122
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:330
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
IdDictRegion::is_empty
bool is_empty() const
Definition: IdDictRegion.h:287
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:512
python.compressB64.c
def c
Definition: compressB64.py:93
IdDictRegion::name
const std::string & name() const
Definition: IdDictRegion.h:154
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:501
PlotCalibFromCool.vals
vals
Definition: PlotCalibFromCool.py:474