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