ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TrigSteer
TrigCompositeUtils
TrigCompositeUtils
IPartCombItr.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 TRIGCOMPOSITEUTILS_IPARTCOMBITR_H
6
#define TRIGCOMPOSITEUTILS_IPARTCOMBITR_H
7
8
#include "
xAODBase/IParticleContainer.h
"
9
#include "
TrigCompositeUtils/KFromNItr.h
"
10
#include "
TrigCompositeUtils/LinkInfo.h
"
11
#include "
TrigCompositeUtils/ProductItr.h
"
12
13
#include <iterator>
14
#include <vector>
15
#include <tuple>
16
#include <functional>
17
18
19
namespace
TrigCompositeUtils
20
{
21
22
enum class
FilterType
23
{
25
All
,
27
UniqueObjects
,
29
UniqueRoIs
,
31
UniqueInitialRoIs
32
};
33
34
bool
uniqueObjects
(
const
std::vector<
LinkInfo<xAOD::IParticleContainer>
> &links);
36
bool
uniqueInitialRoIs
(
const
std::vector<
LinkInfo<xAOD::IParticleContainer>
> &links);
38
bool
uniqueRoIs
(
const
std::vector<
LinkInfo<xAOD::IParticleContainer>
> &links);
39
40
class
IPartCombItr
41
{
42
public
:
43
using
VecLInfo_t
= std::vector<LinkInfo<xAOD::IParticleContainer>>;
44
using
LInfoItr_t
= VecLInfo_t::const_iterator;
45
using
FilterFunc_t
= std::function<bool(
const
IPartCombItr::VecLInfo_t
&)>;
46
47
using
iterator_category
= std::input_iterator_tag;
48
using
value_type
=
VecLInfo_t
;
49
using
reference
=
const
value_type
&;
50
using
pointer
=
const
value_type
*;
51
using
difference_type
= std::ptrdiff_t;
52
54
static
FilterFunc_t
getFilter
(
FilterType
filter);
55
57
IPartCombItr
();
58
68
IPartCombItr
(
69
const
std::vector<std::tuple<std::size_t, LInfoItr_t, LInfoItr_t>> &pieces,
70
FilterFunc_t
filter);
71
81
IPartCombItr
(
82
const
std::vector<std::tuple<std::size_t, LInfoItr_t, LInfoItr_t>> &pieces,
83
FilterType
filter =
FilterType::UniqueObjects
);
84
86
std::size_t
size
()
const
{
return
m_current
.size(); }
87
89
std::size_t
nLegs
()
const
{
return
m_linkInfoItrs
.size(); }
90
98
void
reset
();
99
101
bool
exhausted
()
const
;
102
104
reference
operator*
()
const
;
105
pointer
operator->
()
const
;
106
108
IPartCombItr
&
operator++
();
109
111
IPartCombItr
operator++
(
int
);
112
114
bool
operator==
(
const
IPartCombItr
&other)
const
;
115
bool
operator!=
(
const
IPartCombItr
&other)
const
;
116
117
private
:
118
FilterFunc_t
m_filter
;
119
std::vector<LInfoItr_t>
m_linkInfoItrs
;
120
ProductItr<KFromNItr>
m_idxItr
;
121
void
readCurrent
();
122
VecLInfo_t
m_current
;
123
124
};
//> end class IPartCombItr
125
}
// namespace TrigCompositeUtils
126
127
#endif
//> !TRIGCOMPOSITEUTILS_IPARTCOMBITR_H
KFromNItr.h
LinkInfo.h
ProductItr.h
TrigCompositeUtils::IPartCombItr
Definition
IPartCombItr.h:41
TrigCompositeUtils::IPartCombItr::value_type
VecLInfo_t value_type
Definition
IPartCombItr.h:48
TrigCompositeUtils::IPartCombItr::iterator_category
std::input_iterator_tag iterator_category
Definition
IPartCombItr.h:47
TrigCompositeUtils::IPartCombItr::pointer
const value_type * pointer
Definition
IPartCombItr.h:50
TrigCompositeUtils::IPartCombItr::reset
void reset()
Reset the iterator to its starting point.
Definition
IPartCombItr.cxx:120
TrigCompositeUtils::IPartCombItr::m_filter
FilterFunc_t m_filter
Definition
IPartCombItr.h:118
TrigCompositeUtils::IPartCombItr::m_linkInfoItrs
std::vector< LInfoItr_t > m_linkInfoItrs
Definition
IPartCombItr.h:119
TrigCompositeUtils::IPartCombItr::operator->
pointer operator->() const
Definition
IPartCombItr.cxx:139
TrigCompositeUtils::IPartCombItr::size
std::size_t size() const
The size of each combination.
Definition
IPartCombItr.h:86
TrigCompositeUtils::IPartCombItr::IPartCombItr
IPartCombItr()
A default constructed iterator acts as a past-the-end iterator.
Definition
IPartCombItr.cxx:88
TrigCompositeUtils::IPartCombItr::operator!=
bool operator!=(const IPartCombItr &other) const
Definition
IPartCombItr.cxx:171
TrigCompositeUtils::IPartCombItr::difference_type
std::ptrdiff_t difference_type
Definition
IPartCombItr.h:51
TrigCompositeUtils::IPartCombItr::m_current
VecLInfo_t m_current
Definition
IPartCombItr.h:122
TrigCompositeUtils::IPartCombItr::readCurrent
void readCurrent()
Definition
IPartCombItr.cxx:176
TrigCompositeUtils::IPartCombItr::VecLInfo_t
std::vector< LinkInfo< xAOD::IParticleContainer > > VecLInfo_t
Definition
IPartCombItr.h:43
TrigCompositeUtils::IPartCombItr::reference
const value_type & reference
Definition
IPartCombItr.h:49
TrigCompositeUtils::IPartCombItr::FilterFunc_t
std::function< bool(const IPartCombItr::VecLInfo_t &)> FilterFunc_t
Definition
IPartCombItr.h:45
TrigCompositeUtils::IPartCombItr::operator++
IPartCombItr & operator++()
Pre-increment operator.
Definition
IPartCombItr.cxx:146
TrigCompositeUtils::IPartCombItr::nLegs
std::size_t nLegs() const
The number of legs.
Definition
IPartCombItr.h:89
TrigCompositeUtils::IPartCombItr::LInfoItr_t
VecLInfo_t::const_iterator LInfoItr_t
Definition
IPartCombItr.h:44
TrigCompositeUtils::IPartCombItr::operator*
reference operator*() const
Dereference.
Definition
IPartCombItr.cxx:132
TrigCompositeUtils::IPartCombItr::m_idxItr
ProductItr< KFromNItr > m_idxItr
Definition
IPartCombItr.h:120
TrigCompositeUtils::IPartCombItr::exhausted
bool exhausted() const
True if this iterator is past the end.
Definition
IPartCombItr.cxx:127
TrigCompositeUtils::IPartCombItr::getFilter
static FilterFunc_t getFilter(FilterType filter)
Get a function corresponding to the specified FilterType enum.
Definition
IPartCombItr.cxx:74
TrigCompositeUtils::IPartCombItr::operator==
bool operator==(const IPartCombItr &other) const
Iterator comparison functions.
Definition
IPartCombItr.cxx:163
TrigCompositeUtils::ProductItr
Iterates over all combinations of the provided input iterators.
Definition
ProductItr.h:43
reference
Definition
hcg.cxx:440
TrigCompositeUtils
Definition
TrigComposite.h:19
TrigCompositeUtils::uniqueObjects
bool uniqueObjects(const std::vector< LinkInfo< xAOD::IParticleContainer > > &links)
Helper function that returns true if no objects are repeated.
Definition
IPartCombItr.cxx:37
TrigCompositeUtils::uniqueRoIs
bool uniqueRoIs(const std::vector< LinkInfo< xAOD::IParticleContainer > > &links)
Helper function that returns true if no objects share a final RoI.
Definition
IPartCombItr.cxx:60
TrigCompositeUtils::uniqueInitialRoIs
bool uniqueInitialRoIs(const std::vector< LinkInfo< xAOD::IParticleContainer > > &links)
Helper function that returns true if no objects share an initial RoI.
Definition
IPartCombItr.cxx:46
TrigCompositeUtils::FilterType
FilterType
Definition
IPartCombItr.h:23
TrigCompositeUtils::FilterType::UniqueRoIs
@ UniqueRoIs
Do not allow any two objects to share an RoI.
Definition
IPartCombItr.h:29
TrigCompositeUtils::FilterType::UniqueInitialRoIs
@ UniqueInitialRoIs
Do not allow any two objects to share an initial RoI.
Definition
IPartCombItr.h:31
TrigCompositeUtils::FilterType::All
@ All
Allow all combinations.
Definition
IPartCombItr.h:25
TrigCompositeUtils::FilterType::UniqueObjects
@ UniqueObjects
Do not allow any repeated objects.
Definition
IPartCombItr.h:27
LinkInfo
Helper to keep a Decision object, ElementLink and ActiveState (with respect to some requested ChainGr...
Definition
LinkInfo.h:22
IParticleContainer.h
Generated on
for ATLAS Offline Software by
1.17.0