|
class | AccessorTemplate |
| the raw column accessor template class More...
|
|
struct | ColumnAccessModeTraits |
|
struct | ColumnAccessModeTraits< ColumnAccessMode::input > |
|
struct | ColumnAccessModeTraits< ColumnAccessMode::output > |
|
struct | ColumnAccessModeTraits< ColumnAccessMode::update > |
|
struct | ColumnAccessorDataArray |
| all the data about a column accessor that the ColumnarTool needs to know about More...
|
|
struct | ColumnarMemoryTest |
|
struct | ColumnarModeArray |
|
struct | ColumnarModeXAOD |
|
struct | ColumnarPhysLiteTest |
|
class | ColumnarTool |
| the base class for all columnar components More...
|
|
struct | ColumnarToolDataArray |
|
class | ColumnarToolWrapper |
| a class that wraps an IColumnarTool for use in Python More...
|
|
class | ColumnarToolWrapperData |
| a class that holds the columnar data for a single call to ColumnarToolWrapper More...
|
|
struct | ColumnDataArray |
|
struct | ColumnInfo |
| a struct that contains meta-information about each column that's needed to interface the column with the columnar data store More...
|
|
struct | ColumnTypeTraits |
| a trait class to provide information about the column type More...
|
|
struct | ColumnTypeTraits< LinkCastColumn< LT, ELT >, ColumnarModeArray > |
|
struct | ColumnTypeTraits< LinkCastColumn< LT, ELT >, ColumnarModeXAOD > |
|
struct | ColumnTypeTraits< NativeColumn< CT >, CM > |
|
struct | ColumnTypeTraits< OptObjectId< LT >, ColumnarModeArray > |
|
struct | ColumnTypeTraits< OptObjectId< LT >, ColumnarModeXAOD > |
|
struct | ColumnTypeTraits< RetypeColumn< UT, CT >, CM > |
|
struct | ColumnTypeTraits< std::string, ColumnarModeArray > |
|
struct | ColumnTypeTraits< std::string, ColumnarModeXAOD > |
|
class | ConfigurableColumnExampleTool |
| example of a columnar tool with optional columns More...
|
|
struct | ContainerIdTraits |
|
struct | ContainerIdTraits< ContainerId::cluster > |
|
struct | ContainerIdTraits< ContainerId::egamma > |
|
struct | ContainerIdTraits< ContainerId::electron > |
|
struct | ContainerIdTraits< ContainerId::eventContext > |
|
struct | ContainerIdTraits< ContainerId::eventInfo > |
|
struct | ContainerIdTraits< ContainerId::jet > |
|
struct | ContainerIdTraits< ContainerId::metAssociation > |
|
struct | ContainerIdTraits< ContainerId::muon > |
|
struct | ContainerIdTraits< ContainerId::mutableJet > |
|
struct | ContainerIdTraits< ContainerId::mutableMet > |
|
struct | ContainerIdTraits< ContainerId::photon > |
|
struct | ContainerIdTraits< ContainerId::vertex > |
|
class | IColumnarTool |
| an interface for tools that operate on columnar data More...
|
|
struct | LinkCastColumn |
| a special column type that behaves like an OptObjectId, but applies an internal cast in xAOD mode More...
|
|
class | LinkColumnExampleTool |
| an example of a tool reading an element link More...
|
|
class | ModularExampleTool |
| an example of a columnar tool with a modular structure More...
|
|
struct | NativeColumn |
| a type wrapper to force AccessorTemplate to treat the type as native More...
|
|
struct | ObjectColumn |
| a special type to use for columns accessing containers/offset maps More...
|
|
class | ObjectId |
| a class representing a single object (electron, muons, etc.) More...
|
|
class | ObjectId< O, ColumnarModeArray > |
|
class | ObjectId< O, ColumnarModeXAOD > |
|
class | ObjectRange |
| a class representing a continuous sequence of objects (a.k.a. a container) More...
|
|
class | ObjectRange< CI, ColumnarModeArray > |
|
class | ObjectRange< CI, ColumnarModeXAOD > |
|
class | ObjectRangeIteratorArray |
| an iterator over objects in an ObjectRange More...
|
|
class | ObjectRangeIteratorXAODContainer |
|
class | ObjectRangeIteratorXAODSinglet |
|
class | OptionalColumnExampleTool |
| example of a columnar tool with optional columns More...
|
|
class | OptObjectId |
| a class representing a single optional object (electron, muons, etc.) More...
|
|
class | OptObjectId< CI, ColumnarModeArray > |
|
class | OptObjectId< CI, ColumnarModeXAOD > |
|
struct | RetypeColumn |
| a type wrapper to make AccessorTemplate convert the underlying column type to a different type More...
|
|
class | SimpleSelectorExampleTool |
| this is the simplest example of a columnar tool More...
|
|
class | StringExampleTool |
| an example of a columnar tool that reads a vector column More...
|
|
class | VectorExampleTool |
| an example of a columnar tool that reads a vector column More...
|
|
|
using | ColumnType = typename ColumnTypeTraits< CT, CM >::ColumnType |
|
using | UserType = typename ColumnTypeTraits< CT, CM >::UserType |
|
template<ContainerId CI, typename CT , typename CM = ColumnarModeDefault> |
using | ColumnAccessor = AccessorTemplate< CI, CT, ColumnAccessMode::input, CM > |
|
template<ContainerId CI, typename CT , typename CM = ColumnarModeDefault> |
using | ColumnDecorator = AccessorTemplate< CI, CT, ColumnAccessMode::output, CM > |
|
template<ContainerId CI, typename CT , typename CM = ColumnarModeDefault> |
using | ColumnUpdater = AccessorTemplate< CI, CT, ColumnAccessMode::update, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | JetAccessor = AccessorTemplate< ContainerId::jet, CT, ColumnAccessMode::input, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | JetDecorator = AccessorTemplate< ContainerId::jet, CT, ColumnAccessMode::output, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | MutableJetAccessor = AccessorTemplate< ContainerId::mutableJet, CT, ColumnAccessMode::input, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | MutableJetDecorator = AccessorTemplate< ContainerId::mutableJet, CT, ColumnAccessMode::output, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | MutableJetUpdater = AccessorTemplate< ContainerId::mutableJet, CT, ColumnAccessMode::update, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | MuonAccessor = AccessorTemplate< ContainerId::muon, CT, ColumnAccessMode::input, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | MuonDecorator = AccessorTemplate< ContainerId::muon, CT, ColumnAccessMode::output, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | TrackAccessor = AccessorTemplate< ContainerId::track, CT, ColumnAccessMode::input, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | TrackDecorator = AccessorTemplate< ContainerId::track, CT, ColumnAccessMode::output, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | Track0Accessor = AccessorTemplate< ContainerId::track0, CT, ColumnAccessMode::input, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | Track0Decorator = AccessorTemplate< ContainerId::track0, CT, ColumnAccessMode::output, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | Track1Accessor = AccessorTemplate< ContainerId::track1, CT, ColumnAccessMode::input, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | Track1Decorator = AccessorTemplate< ContainerId::track1, CT, ColumnAccessMode::output, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | Track2Accessor = AccessorTemplate< ContainerId::track2, CT, ColumnAccessMode::input, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | Track2Decorator = AccessorTemplate< ContainerId::track2, CT, ColumnAccessMode::output, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | ElectronAccessor = AccessorTemplate< ContainerId::electron, CT, ColumnAccessMode::input, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | ElectronDecorator = AccessorTemplate< ContainerId::electron, CT, ColumnAccessMode::output, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | PhotonAccessor = AccessorTemplate< ContainerId::photon, CT, ColumnAccessMode::input, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | PhotonDecorator = AccessorTemplate< ContainerId::photon, CT, ColumnAccessMode::output, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | EgammaAccessor = AccessorTemplate< ContainerId::egamma, CT, ColumnAccessMode::input, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | EgammaDecorator = AccessorTemplate< ContainerId::egamma, CT, ColumnAccessMode::output, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | ClusterAccessor = AccessorTemplate< ContainerId::cluster, CT, ColumnAccessMode::input, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | ClusterDecorator = AccessorTemplate< ContainerId::cluster, CT, ColumnAccessMode::output, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | EventInfoAccessor = AccessorTemplate< ContainerId::eventInfo, CT, ColumnAccessMode::input, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | EventInfoDecorator = AccessorTemplate< ContainerId::eventInfo, CT, ColumnAccessMode::output, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | ParticleAccessor = AccessorTemplate< ContainerId::particle, CT, ColumnAccessMode::input, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | ParticleDecorator = AccessorTemplate< ContainerId::particle, CT, ColumnAccessMode::output, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | Particle0Accessor = AccessorTemplate< ContainerId::particle0, CT, ColumnAccessMode::input, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | Particle0Decorator = AccessorTemplate< ContainerId::particle0, CT, ColumnAccessMode::output, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | Particle1Accessor = AccessorTemplate< ContainerId::particle1, CT, ColumnAccessMode::input, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | Particle1Decorator = AccessorTemplate< ContainerId::particle1, CT, ColumnAccessMode::output, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | MetAccessor = AccessorTemplate< ContainerId::met, CT, ColumnAccessMode::input, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | MetDecorator = AccessorTemplate< ContainerId::met, CT, ColumnAccessMode::output, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | Met0Accessor = AccessorTemplate< ContainerId::met0, CT, ColumnAccessMode::input, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | Met0Decorator = AccessorTemplate< ContainerId::met0, CT, ColumnAccessMode::output, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | Met1Accessor = AccessorTemplate< ContainerId::met1, CT, ColumnAccessMode::input, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | Met1Decorator = AccessorTemplate< ContainerId::met1, CT, ColumnAccessMode::output, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | MutableMetAccessor = AccessorTemplate< ContainerId::mutableMet, CT, ColumnAccessMode::input, CM > |
|
template<typename CT , typename CM = ColumnarModeDefault> |
using | MutableMetDecorator = AccessorTemplate< ContainerId::mutableMet, CT, ColumnAccessMode::output, CM > |
|
using | ColumnarModeDefault = ColumnarModeXAOD |
|
using | JetId = ObjectId< ContainerId::jet > |
|
using | MutableJetId = ObjectId< ContainerId::mutableJet > |
|
using | MuonId = ObjectId< ContainerId::muon > |
|
using | EventInfoId = ObjectId< ContainerId::eventInfo > |
|
using | EventContextId = ObjectId< ContainerId::eventContext > |
|
using | ElectronId = ObjectId< ContainerId::electron > |
|
using | PhotonId = ObjectId< ContainerId::photon > |
|
using | EgammaId = ObjectId< ContainerId::egamma > |
|
using | ClusterId = ObjectId< ContainerId::cluster > |
|
using | TrackId = ObjectId< ContainerId::track > |
|
using | VertexId = ObjectId< ContainerId::vertex > |
|
using | ParticleId = ObjectId< ContainerId::particle > |
|
using | Particle0Id = ObjectId< ContainerId::particle0 > |
|
using | Particle1Id = ObjectId< ContainerId::particle1 > |
|
using | MetId = ObjectId< ContainerId::met > |
|
using | Met0Id = ObjectId< ContainerId::met0 > |
|
using | Met1Id = ObjectId< ContainerId::met1 > |
|
using | MutableMetId = ObjectId< ContainerId::mutableMet > |
|
using | MetAssociationId = ObjectId< ContainerId::metAssociation > |
|
using | xAODContainer = typename ContainerIdTraits< CI >::xAODObjectRangeType |
|
using | CM = ColumnarModeXAOD |
|
using | EventInfoRange = ObjectRange< ContainerId::eventInfo > |
|
using | EventContextRange = ObjectRange< ContainerId::eventContext > |
|
using | JetRange = ObjectRange< ContainerId::jet > |
|
using | MutableJetRange = ObjectRange< ContainerId::mutableJet > |
|
using | EgammaRange = ObjectRange< ContainerId::egamma > |
|
using | ElectronRange = ObjectRange< ContainerId::electron > |
|
using | PhotonRange = ObjectRange< ContainerId::photon > |
|
using | MuonRange = ObjectRange< ContainerId::muon > |
|
using | ParticleRange = ObjectRange< ContainerId::particle > |
|
using | Particle0Range = ObjectRange< ContainerId::particle0 > |
|
using | Particle1Range = ObjectRange< ContainerId::particle1 > |
|
using | MetRange = ObjectRange< ContainerId::met > |
|
using | Met0Range = ObjectRange< ContainerId::met0 > |
|
using | Met1Range = ObjectRange< ContainerId::met1 > |
|
using | MutableMetRange = ObjectRange< ContainerId::mutableMet > |
|
using | MetAssociationRange = ObjectRange< ContainerId::metAssociation > |
|
using | OptJetId = OptObjectId< ContainerId::jet > |
|
using | OptMutableJetId = OptObjectId< ContainerId::mutableJet > |
|
using | OptMuonId = OptObjectId< ContainerId::muon > |
|
using | OptElectronId = OptObjectId< ContainerId::electron > |
|
using | OptPhotonId = OptObjectId< ContainerId::photon > |
|
using | OptEgammaId = OptObjectId< ContainerId::egamma > |
|
using | OptClusterId = OptObjectId< ContainerId::cluster > |
|
using | OptTrackId = OptObjectId< ContainerId::track > |
|
using | OptTrack0Id = OptObjectId< ContainerId::track0 > |
|
using | OptTrack1Id = OptObjectId< ContainerId::track1 > |
|
using | OptTrack2Id = OptObjectId< ContainerId::track2 > |
|
using | OptVertexId = OptObjectId< ContainerId::vertex > |
|
using | OptParticleId = OptObjectId< ContainerId::particle > |
|
using | OptParticle0Id = OptObjectId< ContainerId::particle0 > |
|
using | OptParticle1Id = OptObjectId< ContainerId::particle1 > |
|
using | OptMetId = OptObjectId< ContainerId::met > |
|
using | OptMet0Id = OptObjectId< ContainerId::met0 > |
|
using | OptMet1Id = OptObjectId< ContainerId::met1 > |
|
using | OptMutableMetId = OptObjectId< ContainerId::mutableMet > |
|
using | OptMetAssociationId = OptObjectId< ContainerId::metAssociation > |
|
using | OptEventInfoId = OptObjectId< ContainerId::eventInfo > |
|
using | ElementType = typename ColumnTypeTraits< CT, CM >::ColumnType |
|
using | ColumnarOffsetType = std::size_t |
| the type used for the size and offsets in the columnar data More...
|
|
|
template<typename CT , typename CM > |
| requires ((std::is_integral_v< CT >||std::is_floating_point_v< CT >) &&!std::is_same_v< CT, bool >) struct ColumnTypeTraits< CT |
|
template<ContainerId OT, typename CT , typename CM > |
| requires (ColumnTypeTraits< CT, CM >::useConvertInput||ColumnTypeTraits< CT, CM >::useConvertWithDataInput) class AccessorTemplate< CI |
| a std::vector accessor for types that can be implemented via conversions More...
|
|
| AccessorTemplate ()=default |
|
| AccessorTemplate (ColumnarTool< CM > &columnBase, const std::string &name, ColumnInfo &&info={}) |
|
decltype(auto) | operator() (ObjectId< OT, CM > id) const noexcept |
|
bool | isAvailable (ObjectId< OT, CM > id) const noexcept |
|
std::optional< UserType > | getOptional (ObjectId< OT, CM > id) const |
|
template<ContainerId CI, typename CT , ColumnAccessMode CAM, typename CM > |
void | resetAccessor (AccessorTemplate< CI, CT, CAM, CM > &accessor, ColumnarTool< CM > &columnBase, const std::string &name, ColumnInfo &&info={}) |
| reset a column accessor to point to a new column More...
|
|
void | moveAccessor (unsigned &dataIndex, std::unique_ptr< ColumnAccessorDataArray > &accessorData, unsigned &sourceIndex, std::unique_ptr< ColumnAccessorDataArray > &sourceData) |
|
template<ContainerId CI> |
bool | operator== (const ObjectId< CI, ColumnarModeXAOD > &lhs, const ObjectId< CI, ColumnarModeXAOD > &rhs) |
|
template<ContainerId CI> |
bool | operator!= (const ObjectId< CI, ColumnarModeXAOD > &lhs, const ObjectId< CI, ColumnarModeXAOD > &rhs) |
|
template<ContainerId CI> |
bool | operator== (const ObjectId< CI, ColumnarModeArray > &lhs, const ObjectId< CI, ColumnarModeArray > &rhs) |
|
template<ContainerId CI> |
bool | operator!= (const ObjectId< CI, ColumnarModeArray > &lhs, const ObjectId< CI, ColumnarModeArray > &rhs) |
|
template<ContainerId CI> |
| requires (std::is_same_v< typename ContainerIdTraits< CI >::xAODObjectRangeType, typename ContainerIdTraits< CI >::xAODObjectIdType >) class ObjectRange< CI |
|
| ObjectRange (xAODContainer &val_singlet) noexcept |
|
xAODContainer & | getXAODObject () const noexcept |
|
auto | begin () const noexcept |
|
auto | end () const noexcept |
|
bool | empty () const noexcept |
|
std::size_t | size () const noexcept |
|
ObjectId< CI, CM > | operator[] (std::size_t) const noexcept |
|
template<typename Acc , typename... Args> |
requiresdecltype(auto) std::invocable< Acc, ObjectRange< CI, ColumnarModeXAOD >, Args... > | operator() (Acc &acc, Args &&... args) const |
|
template<ContainerId CI> |
bool | operator== (const OptObjectId< CI, ColumnarModeXAOD > &lhs, const OptObjectId< CI, ColumnarModeXAOD > &rhs) |
|
template<ContainerId CI> |
bool | operator!= (const OptObjectId< CI, ColumnarModeXAOD > &lhs, const OptObjectId< CI, ColumnarModeXAOD > &rhs) |
|
template<ContainerId CI> |
bool | operator== (const OptObjectId< CI, ColumnarModeArray > &lhs, const OptObjectId< CI, ColumnarModeArray > &rhs) |
|
template<ContainerId CI> |
bool | operator!= (const OptObjectId< CI, ColumnarModeArray > &lhs, const OptObjectId< CI, ColumnarModeArray > &rhs) |
|
template<ContainerId CI> |
| requires (CI==ContainerId::particle0||CI==ContainerId::particle1) struct ContainerIdTraits< CI > final |
|
template<ContainerId CI, typename CT > |
requires(ColumnTypeTraits< CT, ColumnarModeXAOD >::isNativeType) struct ColumnTypeTraits< std | requires (ColumnTypeTraits< CT, ColumnarModeArray >::isNativeType) class AccessorTemplate< CI |
|
| AccessorTemplate (AccessorTemplate &&that) |
|
AccessorTemplate & | operator= (AccessorTemplate &&that) |
|
std::span< const ElementType > | operator() (ObjectId< CI, CM > id) const noexcept |
|
bool | isAvailable (ObjectId< CI, CM > id) const noexcept |
|
void | renameContainers (IColumnarTool &tool, const std::vector< std::pair< std::string, std::string >> &renames) |
| rename containers in the columnar tool More...
|
|
the id for the different "virtual" containers
To first order these are just the different xAOD types, and have a direct mapping to the xAOD types. In the columnar world we don't really have objects like that, but there are still columns that belong together, which (mostly) share an offset map and a common prefix to their names. In effect these are virtual containers.
One big difference to the xAOD world is that the container id is really referring to just a single container. If you have e.g. two JetContainer instances in your tool, you need to use two different container ids for them. That is because in the columnar world the virtual containers come with completely separate columns, have separate offset maps, etc.
A given container id also only has a meaning within the context of one specific tool instance. If you have multiple instances of a tool they may be connected to different containers/columns each. If a tool has subtools they need to coordinate their container ids as well, making subtools a lot more tightly connected than in the xAOD world.
For xAOD code the container id must match the container used, as there is an underlying xAOD object for the code. For columnar code they are essentially arbitrary, but to make it work for xAOD mode. There are some containers that have special meaning (e.g. event
), but most of them have the same behavior, just for different containers.
By default all referenced xAOD objects are const-qualified, as most tools will anyways work on const-qualified objects. And since the prototype works mostly with accessors directly, it bypasses most of the situations in which the xAOD objects are required to be mutable. I now (13 Jan 25) started to add a mutable version of some containers, because if you need to interface with preexisting xAOD code it can matter. For now I'd say use it sparingly.
Most classes in the prototype are templates that take the container id as a template parameter. In part this is to support the xAOD mode, but it also serves an important role in columanr mode, as it allows to perform a lot of safety checks at compile time. E.g. it allows to guarantee that an ObjectId always refers to a valid entry in the container and that it can only be used with columns that are associated with that container.
- Note
- Whenever you add a new container id here, you also need to add an associated ContainerIdTraits specialization for that container id (in the correct header file). You should also add proper type aliases for ObjectId, ObjectRange, OptObjectId, and ColumnAccessor. These type aliases are essential for keeping user code reasonably compact.
Enumerator |
---|
jet | |
mutableJet | |
muon | |
electron | |
photon | |
egamma | |
cluster | |
track | |
track0 | |
track1 | |
track2 | |
vertex | |
particle | |
particle0 | |
particle1 | |
met | |
met0 | |
met1 | |
mutableMet | |
metAssociation | |
eventInfo | |
eventContext | |
Definition at line 70 of file ContainerId.h.