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