ATLAS Offline Software
IdDictRegion.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3  */
4 
5 #include "IdDict/IdDictRegion.h"
9 #include "src/Debugger.h"
10 #include <iostream>
11 
12 IdDictRegion::IdDictRegion (const std::string& name,
13  const std::string& group,
14  const std::string& tag)
15  : m_name (name),
16  m_group (group),
17  m_tag (tag)
18 {
19 }
20 
21 
22 std::string
24  return(m_group);
25 }
26 
27 
29 {
30  return m_implementation.size();
31 }
32 
33 
35 {
36  return m_implementation.at(i);
37 }
38 
39 
40 void
42  m_index = index;
43 }
44 
46 void
48  m_entries.push_back(entry);
49 }
50 
52 void
54  m_entries.insert(m_entries.begin(), entry);
55 }
56 
57 
60 {
61  return m_implementation.at(i);
62 }
63 
64 
66 {
67  m_implementation.resize (m_implementation.size() + 1);
68  return m_implementation.back();
69 }
70 
71 
73 void IdDictRegion::set_next_abs_eta_name (const std::string& name)
74 {
76 }
77 
78 
80 void IdDictRegion::add_prev_samp_name (const std::string& name)
81 {
82  m_prev_samp_names.push_back (name);
83 
84 }
85 
86 
88 void IdDictRegion::add_next_samp_name (const std::string& name)
89 {
90  m_next_samp_names.push_back (name);
91 }
92 
93 
95 void IdDictRegion::add_prev_subdet_name (const std::string& name)
96 {
97  m_prev_subdet_names.push_back (name);
98 }
99 
100 
102 void IdDictRegion::add_next_subdet_name (const std::string& name)
103 {
104  m_next_subdet_names.push_back (name);
105 }
106 
107 
109 void IdDictRegion::set_etaphi (double eta0, double deta,
110  double phi0, double dphi)
111 {
112  m_eta0 = eta0;
113  m_deta = deta;
114  m_phi0 = phi0;
115  m_dphi = dphi;
116 }
117 
118 
121 {
122  m_is_empty = true;
123 }
124 
125 
126 void
129  for (it = m_entries.begin(); it != m_entries.end(); ++it) {
131  entry->resolve_references(idd, dictionary, *this);
132  }
133 }
134 
135 void
138  const std::string& tag) {
139  if (Debugger::debug()) {
140  std::cout << "IdDictRegion::generate_implementation>" << std::endl;
141  }
144  for (it = m_entries.begin(); it != m_entries.end(); ++it) {
147  }
149  }
150 }
151 
152 void
154  // Find the neighbours
155  IdDictRegion* region = 0;
156 
157  if ("" != m_next_abs_eta_name) {
158  region = dictionary.find_region(m_next_abs_eta_name, m_group);
159  if (region) {
160  region->m_prev_abs_eta = this;
161  m_next_abs_eta = region;
162  }
163  }
164  for (unsigned int i = 0; i < m_prev_samp_names.size(); ++i) {
165  if ("" != m_prev_samp_names[i]) {
166  region = dictionary.find_region(m_prev_samp_names[i], m_group);
167  if (region) {
168  m_prev_samp.push_back(region);
169  }
170  }
171  }
172  for (unsigned int i = 0; i < m_next_samp_names.size(); ++i) {
173  if ("" != m_next_samp_names[i]) {
174  region = dictionary.find_region(m_next_samp_names[i], m_group);
175  if (region) {
176  m_next_samp.push_back(region);
177  }
178  }
179  }
180 
181  for (unsigned int i = 0; i < m_prev_subdet_names.size(); ++i) {
182  if ("" != m_prev_subdet_names[i]) {
183  region = dictionary.find_region(m_prev_subdet_names[i], m_group);
184  if (region) {
185  m_prev_subdet.push_back(region);
186  }
187  }
188  }
189  for (unsigned int i = 0; i < m_next_subdet_names.size(); ++i) {
190  if ("" != m_next_subdet_names[i]) {
191  region = dictionary.find_region(m_next_subdet_names[i], m_group);
192  if (region) {
193  m_next_subdet.push_back(region);
194  }
195  }
196  }
197 }
198 
199 void
202  m_implementation.clear(); // remove implementation
204  for (it = m_entries.begin(); it != m_entries.end(); ++it) {
207  }
208  // reset neighbours
209  m_prev_abs_eta = 0;
210  m_next_abs_eta = 0;
211  m_prev_samp.clear();
212  m_next_samp.clear();
213  m_prev_subdet.clear();
214  m_next_subdet.clear();
215 
217  }
218 }
219 
220 bool IdDictRegion::verify() const {
221  return(true);
222 }
223 
224 void
227  for (it = m_entries.begin(); it != m_entries.end(); ++it) {
229  entry->clear();
230  delete entry;
231  }
232  m_entries.clear();
233 }
234 
235 size_t
237  return m_implementation.size();
238 }
239 
240 size_t
242  return m_entries.size();
243 }
244 
245 void
247  // For each region, loop over its levels and set the bit offset
248  // for each FieldImplementation
249 
250  size_t bits_offset = 0;
252  impl.optimize(); // optimize for decoding
253  impl.set_bits_offset(bits_offset);
254  bits_offset += impl.bits();
255 
256  // Set whether or not to decode index
257  Range::field field = impl.ored_field();
258  if ((not field.isBounded()) || (0 != field.get_minimum())) {
259  impl.set_decode_index(true);
260  }
261  }
262 }
263 
264 Range
266  Range result;
267 
268  std::vector <IdDictRegionEntry*>::const_iterator it;
269  for (it = m_entries.begin(); it != m_entries.end(); ++it) {
270  const IdDictRegionEntry& entry = *(*it);
271  Range r = entry.build_range();
272  result.add(std::move(r));
273  }
274  return(result);
275 }
IdDictRegion::eta0
double eta0() const
Definition: IdDictRegion.h:175
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
beamspotman.r
def r
Definition: beamspotman.py:672
IdDictRegion::clear
virtual void clear() override
Definition: IdDictRegion.cxx:225
IdDictRegion::deta
double deta() const
Definition: IdDictRegion.h:182
IdDictRegion::build_range
virtual Range build_range() const override
Definition: IdDictRegion.cxx:265
IdDictRegion::reset_implementation
virtual void reset_implementation() override
Definition: IdDictRegion.cxx:200
IdDictRegionEntry::clear
virtual void clear()
Definition: IdDictRegionEntry.cxx:29
get_generator_info.result
result
Definition: get_generator_info.py:21
IdDictRegion::m_next_subdet
std::vector< const IdDictRegion * > m_next_subdet
Definition: IdDictRegion.h:143
IdDictRegion::m_dphi
float m_dphi
Definition: IdDictRegion.h:147
index
Definition: index.py:1
IdDictRegion::m_eta0
float m_eta0
Definition: IdDictRegion.h:144
IdDictRegion::add_prev_samp_name
void add_prev_samp_name(const std::string &name)
Add a previous sample name.
Definition: IdDictRegion.cxx:80
IdDictDictionary.h
InDetAccessor::phi0
@ phi0
Definition: InDetAccessor.h:33
IdDictRegion::m_prev_abs_eta
IdDictRegion * m_prev_abs_eta
Definition: IdDictRegion.h:138
IdDictRegion::find_neighbours
void find_neighbours(const IdDictDictionary &dictionary)
Definition: IdDictRegion.cxx:153
IdDictRegion::m_prev_subdet
std::vector< const IdDictRegion * > m_prev_subdet
Definition: IdDictRegion.h:142
skel.it
it
Definition: skel.GENtoEVGEN.py:407
IdDictRegionEntry::reset_implementation
virtual void reset_implementation()
Definition: IdDictRegionEntry.cxx:22
Debugger.h
ReadOfcFromCool.field
field
Definition: ReadOfcFromCool.py:48
IdDictRegionEntry::resolve_references
virtual void resolve_references(const IdDictMgr &, IdDictDictionary &, IdDictRegion &)
Definition: IdDictRegionEntry.cxx:11
m_name
std::string m_name
Definition: ColumnarPhysliteTest.cxx:63
IdDictRegion::add_next_samp_name
void add_next_samp_name(const std::string &name)
Add a next sample name.
Definition: IdDictRegion.cxx:88
IdDictRegionEntry.h
IdDictRegion::m_deta
float m_deta
Definition: IdDictRegion.h:145
IdDictRegion::tag
const std::string & tag() const
Definition: IdDictRegion.h:161
IdDictRegion::verify
virtual bool verify() const override
Definition: IdDictRegion.cxx:220
IdDictRegion::phi0
double phi0() const
Definition: IdDictRegion.h:189
IdDictRegion
Definition: IdDictRegion.h:20
IdDictRegion::new_implementation
IdDictFieldImplementation & new_implementation()
Add a new implementation object and return a reference to it.
Definition: IdDictRegion.cxx:65
IdDictRegion::m_prev_samp
std::vector< const IdDictRegion * > m_prev_samp
Definition: IdDictRegion.h:140
IdDictRegion::implementation
const IdDictFieldImplementation & implementation(size_t i) const
Definition: IdDictRegion.cxx:34
IdDictMgr
Definition: IdDictMgr.h:14
IdDictRegion::m_next_abs_eta
IdDictRegion * m_next_abs_eta
Definition: IdDictRegion.h:139
IdDictRegion::set_etaphi
void set_etaphi(double eta0, double deta, double phi0, double dphi)
Set eta/phi variables.
Definition: IdDictRegion.cxx:109
IdDictRegion::m_index
size_t m_index
Definition: IdDictRegion.h:128
IdDictRegion::set_is_empty
void set_is_empty()
Set is_empty flag.
Definition: IdDictRegion.cxx:120
lumiFormat.i
int i
Definition: lumiFormat.py:85
IdDictRegion::m_is_empty
bool m_is_empty
Definition: IdDictRegion.h:132
IdDictRegion::add_entry
void add_entry(IdDictRegionEntry *entry)
Add entry to the end of the list.
Definition: IdDictRegion.cxx:47
IdDictRegion::fieldSize
size_t fieldSize() const
Definition: IdDictRegion.cxx:236
IdDictRegion::integrate_bits
void integrate_bits()
Definition: IdDictRegion.cxx:246
IdDictRegion::add_next_subdet_name
void add_next_subdet_name(const std::string &name)
Add a next subdetector name.
Definition: IdDictRegion.cxx:102
Debugger::debug
static bool debug()
Definition: Debugger.h:18
IdDictRegion::m_next_abs_eta_name
std::string m_next_abs_eta_name
Definition: IdDictRegion.h:133
IdDictRegion::n_implementation
size_t n_implementation() const
Definition: IdDictRegion.cxx:28
IdDictRegion::generate_implementation
virtual void generate_implementation(const IdDictMgr &idd, IdDictDictionary &dictionary, const std::string &tag="") override
Definition: IdDictRegion.cxx:136
IdDictRegion::set_index
virtual void set_index(size_t index) override
Definition: IdDictRegion.cxx:41
IdDictRegion::size
size_t size() const
Definition: IdDictRegion.cxx:241
IdDictRegion::m_entries
std::vector< IdDictRegionEntry * > m_entries
Definition: IdDictRegion.h:125
GetAllXsec.entry
list entry
Definition: GetAllXsec.py:132
IdDictRegion::m_group
std::string m_group
Definition: IdDictRegion.h:130
IdDictRegion::m_prev_samp_names
std::vector< std::string > m_prev_samp_names
Definition: IdDictRegion.h:134
IdDictRegion::entry
const IdDictRegionEntry & entry(size_t i) const
Definition: IdDictRegion.h:280
master.dictionary
dictionary
Definition: master.py:47
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
IdDictRegion::prepend_entry
void prepend_entry(IdDictRegionEntry *entry)
Add entry to the start of the list.
Definition: IdDictRegion.cxx:53
Range
A Range describes the possible ranges for the field values of an ExpandedIdentifier.
Definition: DetectorDescription/Identifier/Identifier/Range.h:29
IdDictRegion::m_next_samp_names
std::vector< std::string > m_next_samp_names
Definition: IdDictRegion.h:135
IdDictDictionary
Definition: IdDictDictionary.h:30
IdDictRegionEntry
Definition: IdDictRegionEntry.h:14
IdDictFieldImplementation.h
IdDictRegion::m_prev_subdet_names
std::vector< std::string > m_prev_subdet_names
Definition: IdDictRegion.h:136
impl
Definition: CaloGPUClusterAndCellDataMonitorOptions.h:46
IdDictRegion::m_generated_implementation
bool m_generated_implementation
Definition: IdDictRegion.h:149
IdDictRegion::set_next_abs_eta_name
void set_next_abs_eta_name(const std::string &name)
Set the name for next_abs_eta.
Definition: IdDictRegion.cxx:73
CaloLCW_tf.group
group
Definition: CaloLCW_tf.py:28
IdDictRegion::add_prev_subdet_name
void add_prev_subdet_name(const std::string &name)
Add a previous subdetector name.
Definition: IdDictRegion.cxx:95
IdentifierField
This is the individual specification for the range of one ExpandedIdentifier IdentifierField.
Definition: IdentifierField.h:83
IdDictRegion::index
size_t index() const
Definition: IdDictRegion.h:168
IdDictRegion::dphi
double dphi() const
Definition: IdDictRegion.h:196
IdDictRegion.h
IdDictRegion::IdDictRegion
IdDictRegion(const std::string &name, const std::string &group, const std::string &tag)
Definition: IdDictRegion.cxx:12
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::m_phi0
float m_phi0
Definition: IdDictRegion.h:146
IdDictRegion::m_implementation
std::vector< IdDictFieldImplementation > m_implementation
Definition: IdDictRegion.h:127
IdDictRegion::m_next_samp
std::vector< const IdDictRegion * > m_next_samp
Definition: IdDictRegion.h:141
IdDictRegion::name
const std::string & name() const
Definition: IdDictRegion.h:154
IdDictRegionEntry::build_range
virtual Range build_range() const =0
IdDictRegionEntry::generate_implementation
virtual void generate_implementation(const IdDictMgr &, IdDictDictionary &, IdDictRegion &, const std::string &)
Definition: IdDictRegionEntry.cxx:16
IdDictRegion::group_name
virtual std::string group_name() const override
Definition: IdDictRegion.cxx:23
IdDictRegion::resolve_references
virtual void resolve_references(const IdDictMgr &idd, IdDictDictionary &dictionary) override
Definition: IdDictRegion.cxx:127
IdDictRegion::m_next_subdet_names
std::vector< std::string > m_next_subdet_names
Definition: IdDictRegion.h:137