ATLAS Offline Software
Loading...
Searching...
No Matches
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
15class Range;
16class IdDictMgr;
19class IdDictRegion;
20
22public:
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
112 void find_neighbours (IdDictDictionary& dictionary);
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,
119 IdDictDictionary& dictionary,
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
131protected:
132 std::vector <std::unique_ptr<IdDictRegionEntry> > m_entries;
133private:
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};//?
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
160inline
161const std::string& IdDictRegion::name() const
162{
163 return m_name;
164}
165
166
167inline
168const std::string& IdDictRegion::tag() const
169{
170 return m_tag;
171}
172
173
174inline
176{
177 return m_index;
178}
179
180
181inline
182double IdDictRegion::eta0() const
183{
184 return m_eta0;
185}
186
187
188inline
189double IdDictRegion::deta() const
190{
191 return m_deta;
192}
193
194
195inline
196double IdDictRegion::phi0() const
197{
198 return m_phi0;
199}
200
201
202inline
203double IdDictRegion::dphi() const
204{
205 return m_dphi;
206}
207
208
209inline
211{
212 return m_next_abs_eta;
213}
214
215
216inline
218{
219 return m_prev_abs_eta;
220}
221
222
223inline
224const std::vector<const IdDictRegion*>& IdDictRegion::prev_samp() const
225{
226 return m_prev_samp;
227}
228
229
230inline
231const std::vector<const IdDictRegion*>& IdDictRegion::next_samp() const
232{
233 return m_next_samp;
234}
235
236
237inline
238const std::vector<const IdDictRegion*>& IdDictRegion::prev_subdet() const
239{
240 return m_prev_subdet;
241}
242
243
244inline
245const std::vector<const IdDictRegion*>& IdDictRegion::next_subdet() const
246{
247 return m_next_subdet;
248}
249
250
251inline
252const std::vector<std::string>& IdDictRegion::prev_samp_names() const
253{
254 return m_prev_samp_names;
255}
256
257
258inline
259const std::vector<std::string>& IdDictRegion::next_samp_names() const
260{
261 return m_next_samp_names;
262}
263
264
265inline
266const std::vector<std::string>& IdDictRegion::prev_subdet_names() const
267{
268 return m_prev_subdet_names;
269}
270
271
272inline
273const std::vector<std::string>& IdDictRegion::next_subdet_names() const
274{
275 return m_next_subdet_names;
276}
277
278
279inline
281{
282 return m_entries.size();
283}
284
285
286inline
288{
289 return *m_entries.at(i);
290}
291
292
293inline
295{
296 return m_is_empty;
297}
298
299
301inline
302const std::vector<std::unique_ptr<IdDictRegionEntry> >& IdDictRegion::entries()
303{
304 return m_entries;
305}
306
307
308#endif
309
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.
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
virtual void generate_implementation(const IdDictMgr &idd, IdDictDictionary &dictionary, const std::string &tag="") override
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