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 IdDictRegion::~IdDictRegion () = default;
21 
24 
25 
26 std::string
28  return(m_group);
29 }
30 
31 
33 {
34  return m_implementation.size();
35 }
36 
37 
39 {
40  return m_implementation.at(i);
41 }
42 
43 
44 void
46  m_index = index;
47 }
48 
50 void
51 IdDictRegion::add_entry(std::unique_ptr<IdDictRegionEntry> entry) {
52  m_entries.push_back(std::move(entry));
53 }
54 
56 void
57 IdDictRegion::prepend_entry(std::unique_ptr<IdDictRegionEntry> entry) {
58  m_entries.insert(m_entries.begin(), std::move(entry));
59 }
60 
61 
64 {
65  return m_implementation.at(i);
66 }
67 
68 
70 {
71  m_implementation.resize (m_implementation.size() + 1);
72  return m_implementation.back();
73 }
74 
75 
77 void IdDictRegion::set_next_abs_eta_name (const std::string& name)
78 {
80 }
81 
82 
84 void IdDictRegion::add_prev_samp_name (const std::string& name)
85 {
86  m_prev_samp_names.push_back (name);
87 
88 }
89 
90 
92 void IdDictRegion::add_next_samp_name (const std::string& name)
93 {
94  m_next_samp_names.push_back (name);
95 }
96 
97 
99 void IdDictRegion::add_prev_subdet_name (const std::string& name)
100 {
101  m_prev_subdet_names.push_back (name);
102 }
103 
104 
106 void IdDictRegion::add_next_subdet_name (const std::string& name)
107 {
108  m_next_subdet_names.push_back (name);
109 }
110 
111 
113 void IdDictRegion::set_etaphi (double eta0, double deta,
114  double phi0, double dphi)
115 {
116  m_eta0 = eta0;
117  m_deta = deta;
118  m_phi0 = phi0;
119  m_dphi = dphi;
120 }
121 
122 
125 {
126  m_is_empty = true;
127 }
128 
129 
130 void
132  for (auto& entry : m_entries) {
133  entry->resolve_references(idd, dictionary, *this);
134  }
135 }
136 
137 void
140  const std::string& tag) {
141  if (Debugger::debug()) {
142  std::cout << "IdDictRegion::generate_implementation>" << std::endl;
143  }
145  for (auto& entry : m_entries) {
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
203  for (auto& entry : m_entries) {
205  }
206  // reset neighbours
207  m_prev_abs_eta = 0;
208  m_next_abs_eta = 0;
209  m_prev_samp.clear();
210  m_next_samp.clear();
211  m_prev_subdet.clear();
212  m_next_subdet.clear();
213 
215  }
216 }
217 
218 bool IdDictRegion::verify() const {
219  return(true);
220 }
221 
222 void
224  m_entries.clear();
225 }
226 
227 size_t
229  return m_implementation.size();
230 }
231 
232 size_t
234  return m_entries.size();
235 }
236 
237 void
239  // For each region, loop over its levels and set the bit offset
240  // for each FieldImplementation
241 
242  size_t bits_offset = 0;
244  impl.optimize(); // optimize for decoding
245  impl.set_bits_offset(bits_offset);
246  bits_offset += impl.bits();
247 
248  // Set whether or not to decode index
249  Range::field field = impl.ored_field();
250  if ((not field.isBounded()) || (0 != field.get_minimum())) {
251  impl.set_decode_index(true);
252  }
253  }
254 }
255 
256 Range
258  Range result;
259 
260  for (auto& entry : m_entries) {
261  Range r = entry->build_range();
262  result.add(std::move(r));
263  }
264  return(result);
265 }
IdDictRegion::eta0
double eta0() const
Definition: IdDictRegion.h:182
beamspotman.r
def r
Definition: beamspotman.py:672
IdDictRegion::clear
virtual void clear() override
Definition: IdDictRegion.cxx:223
IdDictRegion::deta
double deta() const
Definition: IdDictRegion.h:189
IdDictRegion::build_range
virtual Range build_range() const override
Definition: IdDictRegion.cxx:257
IdDictRegion::reset_implementation
virtual void reset_implementation() override
Definition: IdDictRegion.cxx:200
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:150
IdDictRegion::m_dphi
float m_dphi
Definition: IdDictRegion.h:154
index
Definition: index.py:1
IdDictRegion::m_eta0
float m_eta0
Definition: IdDictRegion.h:151
IdDictRegion::add_prev_samp_name
void add_prev_samp_name(const std::string &name)
Add a previous sample name.
Definition: IdDictRegion.cxx:84
IdDictDictionary.h
InDetAccessor::phi0
@ phi0
Definition: InDetAccessor.h:33
IdDictRegion::m_prev_abs_eta
IdDictRegion * m_prev_abs_eta
Definition: IdDictRegion.h:145
IdDictRegion::m_prev_subdet
std::vector< const IdDictRegion * > m_prev_subdet
Definition: IdDictRegion.h:149
IdDictRegionEntry::reset_implementation
virtual void reset_implementation()
Definition: IdDictRegionEntry.cxx:22
IdDictRegion::~IdDictRegion
virtual ~IdDictRegion()
Debugger.h
ReadOfcFromCool.field
field
Definition: ReadOfcFromCool.py:48
m_name
std::string m_name
Definition: ColumnarPhysliteTest.cxx:64
IdDictRegion::add_next_samp_name
void add_next_samp_name(const std::string &name)
Add a next sample name.
Definition: IdDictRegion.cxx:92
IdDictRegionEntry.h
IdDictRegion::m_deta
float m_deta
Definition: IdDictRegion.h:152
IdDictRegion::tag
const std::string & tag() const
Definition: IdDictRegion.h:168
IdDictRegion::verify
virtual bool verify() const override
Definition: IdDictRegion.cxx:218
IdDictRegion::phi0
double phi0() const
Definition: IdDictRegion.h:196
IdDictRegion
Definition: IdDictRegion.h:21
IdDictRegion::new_implementation
IdDictFieldImplementation & new_implementation()
Add a new implementation object and return a reference to it.
Definition: IdDictRegion.cxx:69
IdDictRegion::m_prev_samp
std::vector< const IdDictRegion * > m_prev_samp
Definition: IdDictRegion.h:147
IdDictRegion::implementation
const IdDictFieldImplementation & implementation(size_t i) const
Definition: IdDictRegion.cxx:38
IdDictMgr
Definition: IdDictMgr.h:16
IdDictRegion::m_next_abs_eta
IdDictRegion * m_next_abs_eta
Definition: IdDictRegion.h:146
IdDictRegion::set_etaphi
void set_etaphi(double eta0, double deta, double phi0, double dphi)
Set eta/phi variables.
Definition: IdDictRegion.cxx:113
IdDictRegion::m_index
size_t m_index
Definition: IdDictRegion.h:135
IdDictRegion::add_entry
void add_entry(std::unique_ptr< IdDictRegionEntry > entry)
Add entry to the end of the list.
Definition: IdDictRegion.cxx:51
IdDictRegion::set_is_empty
void set_is_empty()
Set is_empty flag.
Definition: IdDictRegion.cxx:124
lumiFormat.i
int i
Definition: lumiFormat.py:85
IdDictRegion::m_is_empty
bool m_is_empty
Definition: IdDictRegion.h:139
IdDictRegion::operator=
IdDictRegion & operator=(IdDictRegion &&)
IdDictRegion::fieldSize
size_t fieldSize() const
Definition: IdDictRegion.cxx:228
IdDictRegion::find_neighbours
void find_neighbours(IdDictDictionary &dictionary)
Definition: IdDictRegion.cxx:153
IdDictRegion::resolve_references
virtual void resolve_references(IdDictMgr &idd, IdDictDictionary &dictionary) override
Definition: IdDictRegion.cxx:131
IdDictRegion::integrate_bits
void integrate_bits()
Definition: IdDictRegion.cxx:238
IdDictRegion::add_next_subdet_name
void add_next_subdet_name(const std::string &name)
Add a next subdetector name.
Definition: IdDictRegion.cxx:106
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:140
IdDictRegion::n_implementation
size_t n_implementation() const
Definition: IdDictRegion.cxx:32
IdDictRegion::generate_implementation
virtual void generate_implementation(const IdDictMgr &idd, IdDictDictionary &dictionary, const std::string &tag="") override
Definition: IdDictRegion.cxx:138
IdDictRegion::set_index
virtual void set_index(size_t index) override
Definition: IdDictRegion.cxx:45
IdDictRegion::size
size_t size() const
Definition: IdDictRegion.cxx:233
GetAllXsec.entry
list entry
Definition: GetAllXsec.py:132
IdDictRegion::m_group
std::string m_group
Definition: IdDictRegion.h:137
IdDictRegion::m_prev_samp_names
std::vector< std::string > m_prev_samp_names
Definition: IdDictRegion.h:141
IdDictRegion::entry
const IdDictRegionEntry & entry(size_t i) const
Definition: IdDictRegion.h:287
master.dictionary
dictionary
Definition: master.py:47
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
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:142
IdDictRegion::prepend_entry
void prepend_entry(std::unique_ptr< IdDictRegionEntry > entry)
Add entry to the start of the list.
Definition: IdDictRegion.cxx:57
IdDictDictionary
Definition: IdDictDictionary.h:31
IdDictFieldImplementation.h
IdDictRegion::m_prev_subdet_names
std::vector< std::string > m_prev_subdet_names
Definition: IdDictRegion.h:143
impl
Definition: CaloGPUClusterAndCellDataMonitorOptions.h:46
IdDictRegion::m_generated_implementation
bool m_generated_implementation
Definition: IdDictRegion.h:156
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:77
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:99
IdentifierField
This is the individual specification for the range of one ExpandedIdentifier IdentifierField.
Definition: IdentifierField.h:83
IdDictRegion::m_entries
std::vector< std::unique_ptr< IdDictRegionEntry > > m_entries
Definition: IdDictRegion.h:132
IdDictRegion::index
size_t index() const
Definition: IdDictRegion.h:175
IdDictRegion::dphi
double dphi() const
Definition: IdDictRegion.h:203
IdDictRegionEntry::resolve_references
virtual void resolve_references(IdDictMgr &, IdDictDictionary &, IdDictRegion &)
Definition: IdDictRegionEntry.cxx:11
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:153
IdDictRegion::m_implementation
std::vector< IdDictFieldImplementation > m_implementation
Definition: IdDictRegion.h:134
IdDictRegion::m_next_samp
std::vector< const IdDictRegion * > m_next_samp
Definition: IdDictRegion.h:148
IdDictRegion::name
const std::string & name() const
Definition: IdDictRegion.h:161
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:27
IdDictRegion::m_next_subdet_names
std::vector< std::string > m_next_subdet_names
Definition: IdDictRegion.h:144