ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
PhysicsAnalysis
Columnar
ColumnarVariant
ColumnarVariant
VariantDef.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
*/
4
6
7
8
#ifndef COLUMNAR_VARIANT_VARIANT_DEF_H
9
#define COLUMNAR_VARIANT_VARIANT_DEF_H
10
11
#include <
ColumnarCore/ContainerId.h
>
12
13
#include <boost/mp11/list.hpp>
14
#include <boost/mp11/algorithm.hpp>
15
#include <array>
16
#include <tuple>
17
18
namespace
columnar
19
{
95
96
template
<
ContainerIdConcept
CIBase,
ContainerIdConcept
... CIList>
97
struct
VariantContainerId
98
{
99
static_assert
(
sizeof
...(CIList) > 0,
"need to have at least one variant container type for VariantContainerId"
);
100
102
static
constexpr
bool
isContainerId
=
true
;
103
105
static
constexpr
bool
regularObjectId
=
false
;
106
108
static
constexpr
bool
variantObjectId
=
true
;
109
111
static
constexpr
bool
isMutable
= CIBase::isMutable;
112
114
static
constexpr
bool
perEventRange
=
false
;
115
117
static
constexpr
bool
perEventId
=
false
;
118
120
using
xAODObjectIdType
=
typename
CIBase::xAODObjectIdType;
121
123
using
xAODObjectRangeType
=
typename
CIBase::xAODObjectRangeType;
124
126
using
xAODElementLinkType
=
typename
CIBase::xAODElementLinkType;
127
128
131
132
using
baseId
= CIBase;
133
134
static
constexpr
std::size_t
numVariants
=
sizeof
...(CIList);
135
136
static
constexpr
std::array<std::string_view,numVariants>
idNameArray
= {CIList::idName...};
137
138
template
<ContainerIdConcept CI>
139
static
constexpr
bool
isValidContainer
()
140
{
141
return
(... || std::is_same_v<CI,CIList>);
142
}
143
145
template
<ContainerIdConcept CI>
146
static
constexpr
unsigned
getVariantIndex
()
147
{
148
constexpr
unsigned
index
= boost::mp11::mp_find<std::tuple<CIList...>,
CI
>::value;
149
return
index
;
150
}
151
152
using
mpCIList
= boost::mp11::mp_list<CIList...>;
153
};
154
}
155
156
#endif
ContainerId.h
columnar::ContainerIdConcept
concept for a container id
Definition
ContainerId.h:198
columnar
Definition
ClusterDef.h:16
index
Definition
index.py:1
columnar::VariantContainerId
a "variant" ContainerId
Definition
VariantDef.h:98
columnar::VariantContainerId< columnar::Track0Def, columnar::Track0Def >::idNameArray
static constexpr std::array< std::string_view, numVariants > idNameArray
Definition
VariantDef.h:136
columnar::VariantContainerId::getVariantIndex
static constexpr unsigned getVariantIndex()
get the index of the given container in the list
Definition
VariantDef.h:146
columnar::VariantContainerId< columnar::Track0Def, columnar::Track0Def >::isContainerId
static constexpr bool isContainerId
Definition
VariantDef.h:102
columnar::VariantContainerId< columnar::Track0Def, columnar::Track0Def >::numVariants
static constexpr std::size_t numVariants
Definition
VariantDef.h:134
columnar::VariantContainerId< columnar::Track0Def, columnar::Track0Def >::variantObjectId
static constexpr bool variantObjectId
Definition
VariantDef.h:108
columnar::VariantContainerId< columnar::Track0Def, columnar::Track0Def >::baseId
CIBase baseId
Definition
VariantDef.h:132
columnar::VariantContainerId< columnar::Track0Def, columnar::Track0Def >::mpCIList
boost::mp11::mp_list< CIList... > mpCIList
Definition
VariantDef.h:152
columnar::VariantContainerId< columnar::Track0Def, columnar::Track0Def >::xAODObjectIdType
typename CIBase::xAODObjectIdType xAODObjectIdType
Definition
VariantDef.h:120
columnar::VariantContainerId< columnar::Track0Def, columnar::Track0Def >::perEventRange
static constexpr bool perEventRange
Definition
VariantDef.h:114
columnar::VariantContainerId< columnar::Track0Def, columnar::Track0Def >::isMutable
static constexpr bool isMutable
Definition
VariantDef.h:111
columnar::VariantContainerId< columnar::Track0Def, columnar::Track0Def >::perEventId
static constexpr bool perEventId
Definition
VariantDef.h:117
columnar::VariantContainerId::isValidContainer
static constexpr bool isValidContainer()
Definition
VariantDef.h:139
columnar::VariantContainerId< columnar::Track0Def, columnar::Track0Def >::xAODElementLinkType
typename CIBase::xAODElementLinkType xAODElementLinkType
Definition
VariantDef.h:126
columnar::VariantContainerId< columnar::Track0Def, columnar::Track0Def >::regularObjectId
static constexpr bool regularObjectId
Definition
VariantDef.h:105
columnar::VariantContainerId< columnar::Track0Def, columnar::Track0Def >::xAODObjectRangeType
typename CIBase::xAODObjectRangeType xAODObjectRangeType
Definition
VariantDef.h:123
CI
std::map< std::string, HypoJetVector >::const_iterator CI
Definition
xAODJetCollector.h:18
Generated on
for ATLAS Offline Software by
1.17.0