ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
DetectorDescription
Identifier
Identifier
MultiRange.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 IDENTIFIER_MULTIRANGE_H
6
#define IDENTIFIER_MULTIRANGE_H
7
8
#include "
Identifier/ExpandedIdentifier.h
"
9
#include "
Identifier/Range.h
"
10
#include "
Identifier/RangeIterator.h
"
11
#include <vector>
12
#include <iosfwd>
13
#include <string>
14
class
MsgStream;
15
17
class
MultiRange
{
18
public
:
19
using
range_vector
= std::vector<Range> ;
20
using
element_type
=
ExpandedIdentifier::element_type
;
21
using
size_type
=
ExpandedIdentifier::size_type
;
22
using
const_iterator
= range_vector::const_iterator;
23
30
class
identifier_factory
{
31
public
:
32
identifier_factory
() =
default
;
33
identifier_factory
(
const
MultiRange
& multirange);
34
void
operator ++
();
35
const
ExpandedIdentifier
&
operator *
()
const
;
36
bool
operator ==
(
const
identifier_factory
& other)
const
;
37
38
private
:
39
using
id_vec
= std::vector<ExpandedIdentifier>;
40
using
id_iterator
= id_vec::iterator;
41
using
id_const_iterator
= id_vec::const_iterator;
42
43
ExpandedIdentifier
m_id
{};
44
ConstRangeIterator
m_id_fac_it
{};
45
ConstRangeIterator
m_id_fac_end
{};
46
range_vector::const_iterator
m_range_it
{};
47
range_vector::const_iterator
m_range_end
{};
48
id_iterator
m_id_vec_it
{};
49
id_iterator
m_id_vec_end
{};
50
};
51
52
class
const_identifier_factory
{
53
public
:
54
const_identifier_factory
() =
default
;
55
const_identifier_factory
(
const
MultiRange
& multirange);
56
void
operator ++
();
57
const
ExpandedIdentifier
&
operator *
()
const
;
58
bool
operator ==
(
const
const_identifier_factory
& other)
const
;
59
60
private
:
61
using
id_vec
= std::vector<ExpandedIdentifier>;
62
using
id_iterator
= id_vec::iterator;
63
using
id_const_iterator
= id_vec::const_iterator;
64
65
ExpandedIdentifier
m_id
{};
66
ConstRangeIterator
m_id_fac_it
{};
67
ConstRangeIterator
m_id_fac_end
{};
68
range_vector::const_iterator
m_range_it
{};
69
range_vector::const_iterator
m_range_end
{};
70
id_iterator
m_id_vec_it
{};
71
id_iterator
m_id_vec_end
{};
72
};
73
74
MultiRange
() =
default
;
79
MultiRange
(
const
Range
&
r
,
const
Range
& s);
80
81
void
clear
();
82
83
void
add
(
const
Range
& range);
84
86
void
add
(
Range
&& range);
87
89
void
add
(
const
ExpandedIdentifier
&
id
);
90
92
void
remove_range
(
const
ExpandedIdentifier
&
id
);
93
95
Range
&
back
();
96
98
int
match
(
const
ExpandedIdentifier
&
id
)
const
;
99
101
const
Range
&
operator []
(
size_type
index
)
const
;
102
size_type
size
()
const
;
103
const_iterator
begin
()
const
;
104
const_iterator
end
()
const
;
105
109
size_type
cardinality
()
const
;
110
111
// Up to a given id
112
size_type
cardinalityUpTo
(
const
ExpandedIdentifier
&
id
)
const
;
113
115
bool
has_overlap
()
const
;
116
117
// identifier_factory management
118
identifier_factory
factory_begin
();
119
const_identifier_factory
factory_begin
()
const
;
120
identifier_factory
factory_end
();
121
const_identifier_factory
factory_end
()
const
;
122
void
show
(std::ostream& s)
const
;
123
void
show
(MsgStream & out)
const
;
125
operator
std::string ()
const
;
126
127
private
:
128
friend
class
identifier_factory
;
129
friend
class
const_identifier_factory
;
130
using
id_vec
= std::vector<ExpandedIdentifier>;
131
range_vector
m_ranges
;
132
};
133
134
#endif
ExpandedIdentifier.h
Range.h
RangeIterator.h
ConstRangeIterator
Definition
RangeIterator.h:46
ExpandedIdentifier
Definition
DetectorDescription/Identifier/Identifier/ExpandedIdentifier.h:105
ExpandedIdentifier::size_type
element_vector::size_type size_type
Definition
DetectorDescription/Identifier/Identifier/ExpandedIdentifier.h:115
ExpandedIdentifier::element_type
int element_type
Definition
DetectorDescription/Identifier/Identifier/ExpandedIdentifier.h:109
MultiRange::const_identifier_factory
Definition
MultiRange.h:52
MultiRange::const_identifier_factory::m_range_end
range_vector::const_iterator m_range_end
Definition
MultiRange.h:69
MultiRange::const_identifier_factory::operator*
const ExpandedIdentifier & operator*() const
Definition
MultiRange.cxx:229
MultiRange::const_identifier_factory::operator==
bool operator==(const const_identifier_factory &other) const
Definition
MultiRange.cxx:234
MultiRange::const_identifier_factory::operator++
void operator++()
Definition
MultiRange.cxx:208
MultiRange::const_identifier_factory::m_id
ExpandedIdentifier m_id
Definition
MultiRange.h:65
MultiRange::const_identifier_factory::id_iterator
id_vec::iterator id_iterator
Definition
MultiRange.h:62
MultiRange::const_identifier_factory::m_id_fac_end
ConstRangeIterator m_id_fac_end
Definition
MultiRange.h:67
MultiRange::const_identifier_factory::const_identifier_factory
const_identifier_factory()=default
MultiRange::const_identifier_factory::m_id_fac_it
ConstRangeIterator m_id_fac_it
Definition
MultiRange.h:66
MultiRange::const_identifier_factory::id_vec
std::vector< ExpandedIdentifier > id_vec
Definition
MultiRange.h:61
MultiRange::const_identifier_factory::m_id_vec_it
id_iterator m_id_vec_it
Definition
MultiRange.h:70
MultiRange::const_identifier_factory::m_id_vec_end
id_iterator m_id_vec_end
Definition
MultiRange.h:71
MultiRange::const_identifier_factory::id_const_iterator
id_vec::const_iterator id_const_iterator
Definition
MultiRange.h:63
MultiRange::const_identifier_factory::m_range_it
range_vector::const_iterator m_range_it
Definition
MultiRange.h:68
MultiRange::identifier_factory
This factory is able to generate all possible identifiers, from a fully bounded Range.
Definition
MultiRange.h:30
MultiRange::identifier_factory::m_range_it
range_vector::const_iterator m_range_it
Definition
MultiRange.h:46
MultiRange::identifier_factory::operator==
bool operator==(const identifier_factory &other) const
Definition
MultiRange.cxx:183
MultiRange::identifier_factory::m_range_end
range_vector::const_iterator m_range_end
Definition
MultiRange.h:47
MultiRange::identifier_factory::m_id_vec_it
id_iterator m_id_vec_it
Definition
MultiRange.h:48
MultiRange::identifier_factory::m_id_vec_end
id_iterator m_id_vec_end
Definition
MultiRange.h:49
MultiRange::identifier_factory::id_const_iterator
id_vec::const_iterator id_const_iterator
Definition
MultiRange.h:41
MultiRange::identifier_factory::m_id_fac_it
ConstRangeIterator m_id_fac_it
Definition
MultiRange.h:44
MultiRange::identifier_factory::id_vec
std::vector< ExpandedIdentifier > id_vec
Definition
MultiRange.h:39
MultiRange::identifier_factory::m_id_fac_end
ConstRangeIterator m_id_fac_end
Definition
MultiRange.h:45
MultiRange::identifier_factory::identifier_factory
identifier_factory()=default
MultiRange::identifier_factory::id_iterator
id_vec::iterator id_iterator
Definition
MultiRange.h:40
MultiRange::identifier_factory::operator*
const ExpandedIdentifier & operator*() const
Definition
MultiRange.cxx:178
MultiRange::identifier_factory::operator++
void operator++()
Definition
MultiRange.cxx:157
MultiRange::identifier_factory::m_id
ExpandedIdentifier m_id
Definition
MultiRange.h:43
MultiRange::clear
void clear()
Definition
MultiRange.cxx:19
MultiRange::id_vec
std::vector< ExpandedIdentifier > id_vec
Definition
MultiRange.h:130
MultiRange::cardinalityUpTo
size_type cardinalityUpTo(const ExpandedIdentifier &id) const
Definition
MultiRange.cxx:90
MultiRange::has_overlap
bool has_overlap() const
Check if there are overlaps between any couple of Ranges.
Definition
MultiRange.cxx:100
MultiRange::show
void show(std::ostream &s) const
Definition
MultiRange.cxx:240
MultiRange::const_iterator
range_vector::const_iterator const_iterator
Definition
MultiRange.h:22
MultiRange::factory_end
identifier_factory factory_end()
Definition
MultiRange.cxx:126
MultiRange::operator[]
const Range & operator[](size_type index) const
Accessors.
Definition
MultiRange.cxx:65
MultiRange::remove_range
void remove_range(const ExpandedIdentifier &id)
Remove a Range made from a single ExpandedIdentifier.
Definition
MultiRange.cxx:45
MultiRange::m_ranges
range_vector m_ranges
Definition
MultiRange.h:131
MultiRange::element_type
ExpandedIdentifier::element_type element_type
Definition
MultiRange.h:20
MultiRange::cardinality
size_type cardinality() const
Computes a possible cardinality from all ranges.
Definition
MultiRange.cxx:84
MultiRange::begin
const_iterator begin() const
Definition
MultiRange.cxx:76
MultiRange::back
Range & back()
Get the last entered Range.
Definition
MultiRange.cxx:54
MultiRange::size_type
ExpandedIdentifier::size_type size_type
Definition
MultiRange.h:21
MultiRange::factory_begin
identifier_factory factory_begin()
Definition
MultiRange.cxx:114
MultiRange::end
const_iterator end() const
Definition
MultiRange.cxx:80
MultiRange::range_vector
std::vector< Range > range_vector
Definition
MultiRange.h:19
MultiRange::add
void add(const Range &range)
Definition
MultiRange.cxx:24
MultiRange::match
int match(const ExpandedIdentifier &id) const
Match an identifier.
Definition
MultiRange.cxx:59
MultiRange::MultiRange
MultiRange()=default
MultiRange::size
size_type size() const
Definition
MultiRange.cxx:72
Range
A Range describes the possible ranges for the field values of an ExpandedIdentifier.
Definition
DetectorDescription/Identifier/Identifier/Range.h:31
r
int r
Definition
globals.cxx:22
index
Definition
index.py:1
Generated on
for ATLAS Offline Software by
1.17.0