ATLAS Offline Software
IdDictRegion.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef IDDICT_IdDictRegion_H
6 #define IDDICT_IdDictRegion_H
7 
10 
11 #include <string>
12 #include <vector>
13 #include <memory>
14 
15 class Range;
16 class IdDictMgr;
17 class IdDictDictionary;
18 class IdDictRegionEntry;
19 class IdDictRegion;
20 
21 class IdDictRegion : public IdDictDictEntry{
22 public:
23  // ==================================
24  //** @name Constructor/destructor
25  // @{
26 
27  IdDictRegion (const std::string& name,
28  const std::string& group,
29  const std::string& tag);
30  virtual ~IdDictRegion ();
31 
34 
35  IdDictRegion (const IdDictRegion&) = delete;
37 
38 
40  // ==================================
41  //** @name Simple accessors.
42  // @{
43 
44  const std::string& name() const;
45  virtual std::string group_name () const override;
46  const std::string& tag() const;
47  size_t fieldSize() const;
48  size_t size() const;
49  size_t index() const;
50  size_t n_implementation() const;
51  const IdDictFieldImplementation& implementation(size_t i) const;
52  double eta0() const;
53  double deta() const;
54  double phi0() const;
55  double dphi() const;
56  const IdDictRegion* next_abs_eta() const;
57  const IdDictRegion* prev_abs_eta() const;
58  const std::vector<const IdDictRegion*>& prev_samp() const;
59  const std::vector<const IdDictRegion*>& next_samp() const;
60  const std::vector<const IdDictRegion*>& prev_subdet() const;
61  const std::vector<const IdDictRegion*>& next_subdet() const;
62  const std::vector<std::string>& prev_samp_names() const;
63  const std::vector<std::string>& next_samp_names() const;
64  const std::vector<std::string>& prev_subdet_names() const;
65  const std::vector<std::string>& next_subdet_names() const;
66  size_t n_entries() const;
67  const IdDictRegionEntry& entry(size_t i) const;
68  bool is_empty() const;
69 
70 
72  // ==================================
73  //** @name Methods used to initialize the object.
74  // @{
75 
77  void add_entry (std::unique_ptr<IdDictRegionEntry> entry);
78 
80  void prepend_entry (std::unique_ptr<IdDictRegionEntry> entry);
81 
83  const std::vector<std::unique_ptr<IdDictRegionEntry> >& entries();
84 
87 
90 
92  void set_next_abs_eta_name (const std::string& name);
93 
95  void add_prev_samp_name (const std::string& name);
96 
98  void add_next_samp_name (const std::string& name);
99 
101  void add_prev_subdet_name (const std::string& name);
102 
104  void add_next_subdet_name (const std::string& name);
105 
107  void set_etaphi (double eta0, double deta, double phi0, double dphi);
108 
110  void set_is_empty();
111 
113 
114  virtual void set_index (size_t index) override;
115  virtual Range build_range () const override;
116  virtual void resolve_references (IdDictMgr& idd,
117  IdDictDictionary& dictionary) override;
118  virtual void generate_implementation (const IdDictMgr& idd,
120  const std::string& tag = "") override;
121  virtual void reset_implementation () override;
122  virtual bool verify () const override;
123  virtual void clear () override;
124 
125  // Loop over levels and set the bit offset for each FieldImplementation
126  void integrate_bits();
127 
129 
130 
131 protected:
132  std::vector <std::unique_ptr<IdDictRegionEntry> > m_entries;
133 private:
134  std::vector <IdDictFieldImplementation> m_implementation;
135  size_t m_index{};
136  std::string m_name;
137  std::string m_group;
138  std::string m_tag;
139  bool m_is_empty{false};//?
140  std::string m_next_abs_eta_name;
141  std::vector<std::string> m_prev_samp_names;
142  std::vector<std::string> m_next_samp_names;
143  std::vector<std::string> m_prev_subdet_names;
144  std::vector<std::string> m_next_subdet_names;
147  std::vector<const IdDictRegion*> m_prev_samp;
148  std::vector<const IdDictRegion*> m_next_samp;
149  std::vector<const IdDictRegion*> m_prev_subdet;
150  std::vector<const IdDictRegion*> m_next_subdet;
151  float m_eta0{};
152  float m_deta{};
153  float m_phi0{};
154  float m_dphi{};
155 
157 };
158 
159 
160 inline
161 const std::string& IdDictRegion::name() const
162 {
163  return m_name;
164 }
165 
166 
167 inline
168 const std::string& IdDictRegion::tag() const
169 {
170  return m_tag;
171 }
172 
173 
174 inline
175 size_t IdDictRegion::index() const
176 {
177  return m_index;
178 }
179 
180 
181 inline
182 double IdDictRegion::eta0() const
183 {
184  return m_eta0;
185 }
186 
187 
188 inline
189 double IdDictRegion::deta() const
190 {
191  return m_deta;
192 }
193 
194 
195 inline
196 double IdDictRegion::phi0() const
197 {
198  return m_phi0;
199 }
200 
201 
202 inline
203 double IdDictRegion::dphi() const
204 {
205  return m_dphi;
206 }
207 
208 
209 inline
211 {
212  return m_next_abs_eta;
213 }
214 
215 
216 inline
218 {
219  return m_prev_abs_eta;
220 }
221 
222 
223 inline
224 const std::vector<const IdDictRegion*>& IdDictRegion::prev_samp() const
225 {
226  return m_prev_samp;
227 }
228 
229 
230 inline
231 const std::vector<const IdDictRegion*>& IdDictRegion::next_samp() const
232 {
233  return m_next_samp;
234 }
235 
236 
237 inline
238 const std::vector<const IdDictRegion*>& IdDictRegion::prev_subdet() const
239 {
240  return m_prev_subdet;
241 }
242 
243 
244 inline
245 const std::vector<const IdDictRegion*>& IdDictRegion::next_subdet() const
246 {
247  return m_next_subdet;
248 }
249 
250 
251 inline
252 const std::vector<std::string>& IdDictRegion::prev_samp_names() const
253 {
254  return m_prev_samp_names;
255 }
256 
257 
258 inline
259 const std::vector<std::string>& IdDictRegion::next_samp_names() const
260 {
261  return m_next_samp_names;
262 }
263 
264 
265 inline
266 const std::vector<std::string>& IdDictRegion::prev_subdet_names() const
267 {
268  return m_prev_subdet_names;
269 }
270 
271 
272 inline
273 const std::vector<std::string>& IdDictRegion::next_subdet_names() const
274 {
275  return m_next_subdet_names;
276 }
277 
278 
279 inline
281 {
282  return m_entries.size();
283 }
284 
285 
286 inline
288 {
289  return *m_entries.at(i);
290 }
291 
292 
293 inline
295 {
296  return m_is_empty;
297 }
298 
299 
301 inline
302 const std::vector<std::unique_ptr<IdDictRegionEntry> >& IdDictRegion::entries()
303 {
304  return m_entries;
305 }
306 
307 
308 #endif
309 
IdDictRegion::eta0
double eta0() const
Definition: IdDictRegion.h:182
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
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
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
IdDictRegion::~IdDictRegion
virtual ~IdDictRegion()
IdDictRegion::next_samp
const std::vector< const IdDictRegion * > & next_samp() const
Definition: IdDictRegion.h:231
IdDictRegion::next_samp_names
const std::vector< std::string > & next_samp_names() const
Definition: IdDictRegion.h:259
IdDictRegion::add_next_samp_name
void add_next_samp_name(const std::string &name)
Add a next sample name.
Definition: IdDictRegion.cxx:92
IdDictRegion::m_deta
float m_deta
Definition: IdDictRegion.h:152
IdDictDictEntry
Definition: IdDictDictEntry.h:13
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_name
std::string m_name
Definition: IdDictRegion.h:136
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::next_subdet
const std::vector< const IdDictRegion * > & next_subdet() const
Definition: IdDictRegion.h:245
IdDictRegion::prev_subdet_names
const std::vector< std::string > & prev_subdet_names() const
Definition: IdDictRegion.h:266
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
IdDictRegion::next_abs_eta
const IdDictRegion * next_abs_eta() const
Definition: IdDictRegion.h:210
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::IdDictRegion
IdDictRegion(IdDictRegion &&)
IdDictRegion::fieldSize
size_t fieldSize() const
Definition: IdDictRegion.cxx:228
IdDictRegion::find_neighbours
void find_neighbours(IdDictDictionary &dictionary)
Definition: IdDictRegion.cxx:153
IdDictRegion::IdDictRegion
IdDictRegion(const IdDictRegion &)=delete
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::prev_abs_eta
const IdDictRegion * prev_abs_eta() const
Definition: IdDictRegion.h:217
IdDictRegion::add_next_subdet_name
void add_next_subdet_name(const std::string &name)
Add a next subdetector name.
Definition: IdDictRegion.cxx:106
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
IdDictDictEntry.h
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
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
IdDictRegion::m_tag
std::string m_tag
Definition: IdDictRegion.h:138
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
IdDictRegionEntry
Definition: IdDictRegionEntry.h:14
IdDictFieldImplementation.h
IdDictRegion::m_prev_subdet_names
std::vector< std::string > m_prev_subdet_names
Definition: IdDictRegion.h:143
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
IdDictRegion::prev_subdet
const std::vector< const IdDictRegion * > & prev_subdet() const
Definition: IdDictRegion.h:238
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
IdDictRegion::m_entries
std::vector< std::unique_ptr< IdDictRegionEntry > > m_entries
Definition: IdDictRegion.h:132
IdDictRegion::n_entries
size_t n_entries() const
Definition: IdDictRegion.h:280
IdDictRegion::index
size_t index() const
Definition: IdDictRegion.h:175
IdDictRegion::dphi
double dphi() const
Definition: IdDictRegion.h:203
IdDictRegion::next_subdet_names
const std::vector< std::string > & next_subdet_names() const
Definition: IdDictRegion.h:273
IdDictRegion::IdDictRegion
IdDictRegion(const std::string &name, const std::string &group, const std::string &tag)
Definition: IdDictRegion.cxx:12
IdDictFieldImplementation
IdDictFieldImplementation is used to capture the specification of a single field of an Identifier.
Definition: IdDictFieldImplementation.h:58
IdDictRegion::prev_samp_names
const std::vector< std::string > & prev_samp_names() const
Definition: IdDictRegion.h:252
IdDictRegion::is_empty
bool is_empty() const
Definition: IdDictRegion.h:294
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
IdDictRegion::entries
const std::vector< std::unique_ptr< IdDictRegionEntry > > & entries()
Non-const access to entry pointers.
Definition: IdDictRegion.h:302
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
IdDictRegion::prev_samp
const std::vector< const IdDictRegion * > & prev_samp() const
Definition: IdDictRegion.h:224