ATLAS Offline Software
Loading...
Searching...
No Matches
columnar Namespace Reference

Namespaces

namespace  ClusterHelpers
namespace  ContainerId
 a namespace for holding the ids for the different "virtual" containers
namespace  Detail
namespace  detail
namespace  EgammaHelpers
namespace  EventInfoHelpers
namespace  MetDef
namespace  MetHelpers
namespace  TestUtils
namespace  TrackHelpers

Classes

class  AccessorTemplate
 the raw column accessor template class More...
class  AccessorTemplate< CI, CT, ColumnAccessMode::input, CM >
class  AccessorTemplate< CI, CT, ColumnAccessMode::output, CM >
class  AccessorTemplate< CI, std::vector< CT >, ColumnAccessMode::input, CM >
 a std::vector accessor for types that can be implemented via conversions More...
class  AccessorTemplate< CI, std::vector< CT >, ColumnAccessMode::input, ColumnarModeArray >
class  AccessorTemplate< CI, std::vector< std::vector< CT > >, ColumnAccessMode::input, ColumnarModeArray >
class  AccessorTemplate< VariantContainerId< CIBase, CIList... >, CT, CAM, ColumnarModeArray >
class  AccessorTemplate< VariantContainerId< CIBase, CIList... >, CT, CAM, ColumnarModeXAOD >
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
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< CT, CM >
struct  ColumnTypeTraits< LinkCastColumn< LT, ELT >, ColumnarModeArray >
struct  ColumnTypeTraits< LinkCastColumn< LT, ELT >, ColumnarModeXAOD >
struct  ColumnTypeTraits< LinkCastColumn< VariantContainerId< CIBase, CIList... >, ELT >, ColumnarModeArray >
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 >
struct  ColumnTypeTraits< std::vector< CT >, ColumnarModeXAOD >
class  ColumnVectorData
 a class that holds the columnar data for a single call More...
struct  ColumnVectorElementHeader
 the header information for a single element in the columnar data vector More...
class  ColumnVectorHeader
 the header information for the entire columnar data vector More...
class  ConfigurableColumnExampleTool
 example of a columnar tool with optional columns More...
class  FilterRange
 a simple range adaptor that filters the elements of a range More...
class  FilterRangeIterator
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  MetAssocationAccessors
 the accessors MetAssociationHelper needs to implement its operations More...
class  MetAssociationHelper
 a columnar version of xAOD::MissingETAssociationHelper More...
class  ModularExampleTool
 an example of a columnar tool with a modular structure More...
class  MomentumAccessorExampleTool
 an example of a columnar tool that uses momentum accessors More...
class  MomentumAccessors
 a handle to hold a IMomentumAccessors object 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< CI, ColumnarModeArray >
class  ObjectId< CI, ColumnarModeXAOD >
class  ObjectId< VariantContainerId< CIList... >, ColumnarModeArray >
class  ObjectId< VariantContainerId< CIList... >, ColumnarModeXAOD >
 a "variant" link to a single object
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  ObjectTypeAccessor
 a specialized accessor for retrieving the xAOD object type of objects More...
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 >
class  OptObjectId< VariantContainerId< CIList... >, ColumnarModeArray >
class  OptObjectId< VariantContainerId< CIList... >, ColumnarModeXAOD >
class  PythonToolHandle
 a handle to a python tool for use via nanobind More...
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  ToolColumnVectorMap
 a class that interfaces an IColumnarTool to a ColumnVectorHeader More...
struct  VariantContainerId
 a "variant" ContainerId More...
class  VariantExampleTool
 an example of a columnar tool using "variant" object ids and column accessors More...
class  VectorExampleTool
 an example of a columnar tool that reads a vector column More...

Concepts

concept  ContainerIdConcept
 concept for a container id
concept  RegularContainerIdConcept

Typedefs

using ClusterId = ObjectId<ContainerId::cluster>
using OptClusterId = OptObjectId<ContainerId::cluster>
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<ContainerIdConcept CI, typename CT, typename CM = ColumnarModeDefault>
using ColumnAccessor = AccessorTemplate<CI,CT,ColumnAccessMode::input,CM>
template<ContainerIdConcept CI, typename CT, typename CM = ColumnarModeDefault>
using ColumnDecorator = AccessorTemplate<CI,CT,ColumnAccessMode::output,CM>
template<ContainerIdConcept CI, typename CT, typename CM = ColumnarModeDefault>
using ColumnUpdater = AccessorTemplate<CI,CT,ColumnAccessMode::update,CM>
using ColumnarModeDefault = ColumnarModeXAOD
using EventContextRange = ObjectRange<ContainerId::eventContext>
using EventContextId = ObjectId<ContainerId::eventContext>
using ParticleRange = ObjectRange<ContainerId::particle>
using ParticleId = ObjectId<ContainerId::particle>
using OptParticleId = OptObjectId<ContainerId::particle>
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>
using Particle0Range = ObjectRange<ContainerId::particle0>
using Particle0Id = ObjectId<ContainerId::particle0>
using OptParticle0Id = OptObjectId<ContainerId::particle0>
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>
using Particle1Range = ObjectRange<ContainerId::particle1>
using Particle1Id = ObjectId<ContainerId::particle1>
using OptParticle1Id = OptObjectId<ContainerId::particle1>
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>
using Particle2Range = ObjectRange<ContainerId::particle2>
using Particle2Id = ObjectId<ContainerId::particle2>
using OptParticle2Id = OptObjectId<ContainerId::particle2>
template<typename CT, typename CM = ColumnarModeDefault>
using Particle2Accessor = AccessorTemplate<ContainerId::particle2,CT,ColumnAccessMode::input,CM>
template<typename CT, typename CM = ColumnarModeDefault>
using Particle2Decorator = AccessorTemplate<ContainerId::particle2,CT,ColumnAccessMode::output,CM>
using ElectronRange = ObjectRange<ContainerId::electron>
using ElectronId = ObjectId<ContainerId::electron>
using OptElectronId = OptObjectId<ContainerId::electron>
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>
using PhotonRange = ObjectRange<ContainerId::photon>
using PhotonId = ObjectId<ContainerId::photon>
using OptPhotonId = OptObjectId<ContainerId::photon>
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>
using EgammaRange = ObjectRange<ContainerId::egamma>
using EgammaId = ObjectId<ContainerId::egamma>
using OptEgammaId = OptObjectId<ContainerId::egamma>
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>
using MutableEgammaRange = ObjectRange<ContainerId::mutableEgamma>
using MutableEgammaId = ObjectId<ContainerId::mutableEgamma>
using OptMutableEgammaId = OptObjectId<ContainerId::mutableEgamma>
template<typename CT, typename CM = ColumnarModeDefault>
using MutableEgammaAccessor = AccessorTemplate<ContainerId::mutableEgamma,CT,ColumnAccessMode::input,CM>
template<typename CT, typename CM = ColumnarModeDefault>
using MutableEgammaDecorator = AccessorTemplate<ContainerId::mutableEgamma,CT,ColumnAccessMode::output,CM>
using EventInfoRange = ObjectRange<ContainerId::eventInfo>
using EventInfoId = ObjectId<ContainerId::eventInfo>
using OptEventInfoId = OptObjectId<ContainerId::eventInfo>
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>
using ColumnarOffsetType = std::size_t
 the type used for the size and offsets in the columnar data
using JetRange = ObjectRange<ContainerId::jet>
using JetId = ObjectId<ContainerId::jet>
using OptJetId = OptObjectId<ContainerId::jet>
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>
using MutableJetRange = ObjectRange<ContainerId::mutableJet>
using MutableJetId = ObjectId<ContainerId::mutableJet>
using OptMutableJetId = OptObjectId<ContainerId::mutableJet>
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>
using MetRange = ObjectRange<ContainerId::met>
using MetId = ObjectId<ContainerId::met>
using OptMetId = OptObjectId<ContainerId::met>
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>
using Met0Range = ObjectRange<ContainerId::met0>
using Met0Id = ObjectId<ContainerId::met0>
using OptMet0Id = OptObjectId<ContainerId::met0>
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>
using Met1Range = ObjectRange<ContainerId::met1>
using Met1Id = ObjectId<ContainerId::met1>
using OptMet1Id = OptObjectId<ContainerId::met1>
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>
using MutableMetRange = ObjectRange<ContainerId::mutableMet>
using MutableMetId = ObjectId<ContainerId::mutableMet>
using OptMutableMetId = OptObjectId<ContainerId::mutableMet>
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 MetAssociationRange = ObjectRange<ContainerId::metAssociation>
using MetAssociationId = ObjectId<ContainerId::metAssociation>
using OptMetAssociationId = OptObjectId<ContainerId::metAssociation>
using MuonRange = ObjectRange<ContainerId::muon>
using MuonId = ObjectId<ContainerId::muon>
using OptMuonId = OptObjectId<ContainerId::muon>
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>
using MuonTrackDef = columnar::VariantContainerId<columnar::ContainerId::track0,columnar::ContainerId::track0,columnar::ContainerId::track3,columnar::ContainerId::track1,columnar::ContainerId::track2>
using TauJetRange = ObjectRange<ContainerId::tauJet>
using TauJetId = ObjectId<ContainerId::tauJet>
using OptTauJetId = OptObjectId<ContainerId::tauJet>
template<typename CT, typename CM = ColumnarModeDefault>
using TauJetAccessor = AccessorTemplate<ContainerId::tauJet,CT,ColumnAccessMode::input,CM>
template<typename CT, typename CM = ColumnarModeDefault>
using TauJetDecorator = AccessorTemplate<ContainerId::tauJet,CT,ColumnAccessMode::output,CM>
using TrackId = ObjectId<ContainerId::track>
using OptTrackId = OptObjectId<ContainerId::track>
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>
using OptTrack0Id = OptObjectId<ContainerId::track0>
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>
using OptTrack1Id = OptObjectId<ContainerId::track1>
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>
using OptTrack2Id = OptObjectId<ContainerId::track2>
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>
using OptTrack3Id = OptObjectId<ContainerId::track3>
template<typename CT, typename CM = ColumnarModeDefault>
using Track3Accessor = AccessorTemplate<ContainerId::track3,CT,ColumnAccessMode::input,CM>
template<typename CT, typename CM = ColumnarModeDefault>
using Track3Decorator = AccessorTemplate<ContainerId::track3,CT,ColumnAccessMode::output,CM>
using VertexId = ObjectId<ContainerId::vertex>
using OptVertexId = OptObjectId<ContainerId::vertex>
template<typename CT, typename CM = ColumnarModeDefault>
using VertexAccessor = AccessorTemplate<ContainerId::vertex,CT,ColumnAccessMode::input,CM>
template<typename CT, typename CM = ColumnarModeDefault>
using VertexDecorator = AccessorTemplate<ContainerId::vertex,CT,ColumnAccessMode::output,CM>

Enumerations

enum class  ColumnAccessMode { input , output , update }
 an enum for the different access modes for a column More...

Functions

template<ContainerIdConcept 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
void moveAccessor (unsigned &dataIndex, std::unique_ptr< ColumnAccessorDataArray > &accessorData, unsigned &sourceIndex, std::unique_ptr< ColumnAccessorDataArray > &sourceData)
void addColumnAccessMode (ColumnInfo &info, ColumnAccessMode accessMode)
void mergeColumnInfo (ColumnInfo &target, const ColumnInfo &source)
template<ContainerIdConcept CI, typename CM>
void resetIParticle (MomentumAccessors< CI, CM > &accessors)
 reset the dynamic momentum accessors to various default implementations
template<ContainerIdConcept CI, typename CM>
void resetPtEtaPhiReadM (MomentumAccessors< CI, CM > &accessors, ColumnarTool< CM > &columnarTool)
template<ContainerIdConcept CI, typename CM>
void resetPtEtaPhiFixedM (MomentumAccessors< CI, CM > &accessors, ColumnarTool< CM > &columnarTool, double mValue)
template<ContainerIdConcept CI, typename CM>
void resetJet (MomentumAccessors< CI, CM > &accessors, ColumnarTool< CM > &columnarTool)
template<ContainerIdConcept CI, typename CM>
void resetJetConstituentScale (MomentumAccessors< CI, CM > &accessors, ColumnarTool< CM > &columnarTool, const std::string &prefix="JetConstitScaleMomentum_")
template<ContainerIdConcept CI, typename CM>
void resetElectron (MomentumAccessors< CI, CM > &accessors, ColumnarTool< CM > &columnarTool)
template<ContainerIdConcept CI, typename CM>
void resetPhoton (MomentumAccessors< CI, CM > &accessors, ColumnarTool< CM > &columnarTool)
template<ContainerIdConcept CI, typename CM>
void resetEgamma (MomentumAccessors< CI, CM > &accessors, ColumnarTool< CM > &columnarTool)
template<ContainerIdConcept CI, typename CM>
void resetMuon (MomentumAccessors< CI, CM > &accessors, ColumnarTool< CM > &columnarTool)
template<ContainerIdConcept CI, typename CM>
void resetTau (MomentumAccessors< CI, CM > &accessors, ColumnarTool< CM > &columnarTool)
template<ContainerIdConcept CI, typename CM>
void resetObjectType (MomentumAccessors< CI, CM > &accessors, ColumnarTool< CM > &columnarTool, xAODType::ObjectType type)
double deltaPhi (double phiA, double phiB)
 delta Phi in range [-pi,pi[
template<ContainerIdConcept CI1, ContainerIdConcept CI2, typename CM>
double deltaRapidity (const MomentumAccessors< CI1, CM > &momAcc1, ObjectId< CI1, CM > p1, const MomentumAccessors< CI2, CM > &momAcc2, ObjectId< CI2, CM > p2, bool useRapidity=true)
 Computes efficiently \( \Delta{y} \).
template<ContainerIdConcept CI1, ContainerIdConcept CI2, typename CM>
bool isInDeltaR (const MomentumAccessors< CI1, CM > &momAcc1, ObjectId< CI1, CM > p1, const MomentumAccessors< CI2, CM > &momAcc2, ObjectId< CI2, CM > p2, double dR, bool useRapidity=true)
 Check if 2 particles are in a \( \Delta{R} \) cone.
template<ContainerIdConcept CI>
std::ostream & operator<< (std::ostream &str, const ObjectId< CI, ColumnarModeXAOD > &obj)
template<ContainerIdConcept CI>
bool operator== (const ObjectId< CI, ColumnarModeXAOD > &lhs, const ObjectId< CI, ColumnarModeXAOD > &rhs)
template<ContainerIdConcept CI>
bool operator!= (const ObjectId< CI, ColumnarModeXAOD > &lhs, const ObjectId< CI, ColumnarModeXAOD > &rhs)
template<ContainerIdConcept CI>
std::ostream & operator<< (std::ostream &str, const ObjectId< CI, ColumnarModeArray > &obj)
template<ContainerIdConcept CI>
bool operator== (const ObjectId< CI, ColumnarModeArray > &lhs, const ObjectId< CI, ColumnarModeArray > &rhs)
template<ContainerIdConcept CI>
bool operator!= (const ObjectId< CI, ColumnarModeArray > &lhs, const ObjectId< CI, ColumnarModeArray > &rhs)
template<ContainerIdConcept CI>
bool operator== (const OptObjectId< CI, ColumnarModeXAOD > &lhs, const OptObjectId< CI, ColumnarModeXAOD > &rhs)
template<ContainerIdConcept CI>
bool operator!= (const OptObjectId< CI, ColumnarModeXAOD > &lhs, const OptObjectId< CI, ColumnarModeXAOD > &rhs)
template<ContainerIdConcept CI>
bool operator== (const OptObjectId< CI, ColumnarModeArray > &lhs, const OptObjectId< CI, ColumnarModeArray > &rhs)
template<ContainerIdConcept CI>
bool operator!= (const OptObjectId< CI, ColumnarModeArray > &lhs, const OptObjectId< CI, ColumnarModeArray > &rhs)
void renameContainers (IColumnarTool &tool, const std::vector< std::pair< std::string, std::string > > &renames)
 rename containers in the columnar tool
template<typename... CIList>
std::ostream & operator<< (std::ostream &str, const ObjectLink< VariantContainerId< CIList... >, ColumnarModeXAOD > &obj)
template<typename... CIList>
std::ostream & operator<< (std::ostream &str, const ObjectLink< VariantContainerId< CIList... >, ColumnarModeArray > &obj)
template<ContainerIdConcept... CIList>
std::ostream & operator<< (std::ostream &str, const ObjectId< VariantContainerId< CIList... >, ColumnarModeXAOD > &obj)
template<ContainerIdConcept... CIList>
bool operator== (const ObjectId< VariantContainerId< CIList... >, ColumnarModeXAOD > &lhs, const ObjectId< VariantContainerId< CIList... >, ColumnarModeXAOD > &rhs)
template<ContainerIdConcept... CIList>
bool operator!= (const ObjectId< VariantContainerId< CIList... >, ColumnarModeXAOD > &lhs, const ObjectId< VariantContainerId< CIList... >, ColumnarModeXAOD > &rhs)
template<ContainerIdConcept... CIList>
std::ostream & operator<< (std::ostream &str, const ObjectId< VariantContainerId< CIList... >, ColumnarModeArray > &obj)
template<ContainerIdConcept... CIList>
bool operator== (const ObjectId< VariantContainerId< CIList... >, ColumnarModeArray > &lhs, const ObjectId< VariantContainerId< CIList... >, ColumnarModeArray > &rhs)
template<ContainerIdConcept... CIList>
bool operator!= (const ObjectId< VariantContainerId< CIList... >, ColumnarModeArray > &lhs, const ObjectId< VariantContainerId< CIList... >, ColumnarModeArray > &rhs)
template<ContainerIdConcept... CIList>
std::ostream & operator<< (std::ostream &str, const OptObjectId< VariantContainerId< CIList... >, ColumnarModeXAOD > &obj)
template<ContainerIdConcept... CIList>
bool operator== (const OptObjectId< VariantContainerId< CIList... >, ColumnarModeXAOD > &lhs, const OptObjectId< VariantContainerId< CIList... >, ColumnarModeXAOD > &rhs)
template<ContainerIdConcept... CIList>
bool operator!= (const OptObjectId< VariantContainerId< CIList... >, ColumnarModeXAOD > &lhs, const OptObjectId< VariantContainerId< CIList... >, ColumnarModeXAOD > &rhs)
template<ContainerIdConcept... CIList>
std::ostream & operator<< (std::ostream &str, const OptObjectId< VariantContainerId< CIList... >, ColumnarModeArray > &obj)
template<ContainerIdConcept... CIList>
bool operator== (const OptObjectId< VariantContainerId< CIList... >, ColumnarModeArray > &lhs, const OptObjectId< VariantContainerId< CIList... >, ColumnarModeArray > &rhs)
template<ContainerIdConcept... CIList>
bool operator!= (const OptObjectId< VariantContainerId< CIList... >, ColumnarModeArray > &lhs, const OptObjectId< VariantContainerId< CIList... >, ColumnarModeArray > &rhs)

Variables

constexpr unsigned columnarAccessMode = COLUMNAR_DEFAULT_ACCESS_MODE
constexpr ColumnarOffsetType invalidObjectIndex = static_cast<ColumnarOffsetType>(-1)
 the value for an invalid element index
const std::string numberOfEventsName = "EventInfo"
 the name used for the column containing the number of events

Detailed Description

Author
Nils Krumnack
Nils Krumnack

Includes

Author
Nils Krumnack
Matthew Feickert
Matthias Vigl
Giordon Stark

Typedef Documentation

◆ ClusterAccessor

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::ClusterAccessor = AccessorTemplate<ContainerId::cluster,CT,ColumnAccessMode::input,CM>

Definition at line 28 of file ClusterDef.h.

◆ ClusterDecorator

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::ClusterDecorator = AccessorTemplate<ContainerId::cluster,CT,ColumnAccessMode::output,CM>

Definition at line 29 of file ClusterDef.h.

◆ ClusterId

Definition at line 26 of file ClusterDef.h.

◆ ColumnAccessor

template<ContainerIdConcept CI, typename CT, typename CM = ColumnarModeDefault>
using columnar::ColumnAccessor = AccessorTemplate<CI,CT,ColumnAccessMode::input,CM>

Definition at line 261 of file ColumnAccessor.h.

◆ ColumnarModeDefault

Definition at line 108 of file ColumnarDef.h.

◆ ColumnarOffsetType

using columnar::ColumnarOffsetType = std::size_t

the type used for the size and offsets in the columnar data

Todo
This type still needs to be adjusted to match whatever uproot uses for its offset maps.

Definition at line 20 of file IColumnarTool.h.

◆ ColumnDecorator

template<ContainerIdConcept CI, typename CT, typename CM = ColumnarModeDefault>
using columnar::ColumnDecorator = AccessorTemplate<CI,CT,ColumnAccessMode::output,CM>

Definition at line 262 of file ColumnAccessor.h.

◆ ColumnUpdater

template<ContainerIdConcept CI, typename CT, typename CM = ColumnarModeDefault>
using columnar::ColumnUpdater = AccessorTemplate<CI,CT,ColumnAccessMode::update,CM>

Definition at line 263 of file ColumnAccessor.h.

◆ EgammaAccessor

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::EgammaAccessor = AccessorTemplate<ContainerId::egamma,CT,ColumnAccessMode::input,CM>

Definition at line 52 of file EgammaDef.h.

◆ EgammaDecorator

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::EgammaDecorator = AccessorTemplate<ContainerId::egamma,CT,ColumnAccessMode::output,CM>

Definition at line 53 of file EgammaDef.h.

◆ EgammaId

Definition at line 50 of file EgammaDef.h.

◆ EgammaRange

Definition at line 49 of file EgammaDef.h.

◆ ElectronAccessor

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::ElectronAccessor = AccessorTemplate<ContainerId::electron,CT,ColumnAccessMode::input,CM>

Definition at line 40 of file EgammaDef.h.

◆ ElectronDecorator

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::ElectronDecorator = AccessorTemplate<ContainerId::electron,CT,ColumnAccessMode::output,CM>

Definition at line 41 of file EgammaDef.h.

◆ ElectronId

Definition at line 38 of file EgammaDef.h.

◆ ElectronRange

◆ EventContextId

◆ EventContextRange

◆ EventInfoAccessor

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::EventInfoAccessor = AccessorTemplate<ContainerId::eventInfo,CT,ColumnAccessMode::input,CM>

Definition at line 34 of file EventInfoDef.h.

◆ EventInfoDecorator

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::EventInfoDecorator = AccessorTemplate<ContainerId::eventInfo,CT,ColumnAccessMode::output,CM>

Definition at line 35 of file EventInfoDef.h.

◆ EventInfoId

◆ EventInfoRange

◆ JetAccessor

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::JetAccessor = AccessorTemplate<ContainerId::jet,CT,ColumnAccessMode::input,CM>

Definition at line 28 of file JetDef.h.

◆ JetDecorator

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::JetDecorator = AccessorTemplate<ContainerId::jet,CT,ColumnAccessMode::output,CM>

Definition at line 29 of file JetDef.h.

◆ JetId

Definition at line 26 of file JetDef.h.

◆ JetRange

Definition at line 25 of file JetDef.h.

◆ Met0Accessor

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::Met0Accessor = AccessorTemplate<ContainerId::met0,CT,ColumnAccessMode::input,CM>

Definition at line 58 of file MetDef.h.

◆ Met0Decorator

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::Met0Decorator = AccessorTemplate<ContainerId::met0,CT,ColumnAccessMode::output,CM>

Definition at line 59 of file MetDef.h.

◆ Met0Id

Definition at line 56 of file MetDef.h.

◆ Met0Range

Definition at line 55 of file MetDef.h.

◆ Met1Accessor

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::Met1Accessor = AccessorTemplate<ContainerId::met1,CT,ColumnAccessMode::input,CM>

Definition at line 64 of file MetDef.h.

◆ Met1Decorator

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::Met1Decorator = AccessorTemplate<ContainerId::met1,CT,ColumnAccessMode::output,CM>

Definition at line 65 of file MetDef.h.

◆ Met1Id

Definition at line 62 of file MetDef.h.

◆ Met1Range

Definition at line 61 of file MetDef.h.

◆ MetAccessor

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::MetAccessor = AccessorTemplate<ContainerId::met,CT,ColumnAccessMode::input,CM>

Definition at line 52 of file MetDef.h.

◆ MetAssociationId

◆ MetAssociationRange

◆ MetDecorator

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::MetDecorator = AccessorTemplate<ContainerId::met,CT,ColumnAccessMode::output,CM>

Definition at line 53 of file MetDef.h.

◆ MetId

Definition at line 50 of file MetDef.h.

◆ MetRange

Definition at line 49 of file MetDef.h.

◆ MuonAccessor

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::MuonAccessor = AccessorTemplate<ContainerId::muon,CT,ColumnAccessMode::input,CM>

Definition at line 27 of file MuonDef.h.

◆ MuonDecorator

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::MuonDecorator = AccessorTemplate<ContainerId::muon,CT,ColumnAccessMode::output,CM>

Definition at line 28 of file MuonDef.h.

◆ MuonId

Definition at line 25 of file MuonDef.h.

◆ MuonRange

Definition at line 24 of file MuonDef.h.

◆ MuonTrackDef

◆ MutableEgammaAccessor

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::MutableEgammaAccessor = AccessorTemplate<ContainerId::mutableEgamma,CT,ColumnAccessMode::input,CM>

Definition at line 58 of file EgammaDef.h.

◆ MutableEgammaDecorator

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::MutableEgammaDecorator = AccessorTemplate<ContainerId::mutableEgamma,CT,ColumnAccessMode::output,CM>

Definition at line 59 of file EgammaDef.h.

◆ MutableEgammaId

◆ MutableEgammaRange

◆ MutableJetAccessor

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::MutableJetAccessor = AccessorTemplate<ContainerId::mutableJet,CT,ColumnAccessMode::input,CM>

Definition at line 34 of file JetDef.h.

◆ MutableJetDecorator

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::MutableJetDecorator = AccessorTemplate<ContainerId::mutableJet,CT,ColumnAccessMode::output,CM>

Definition at line 35 of file JetDef.h.

◆ MutableJetId

Definition at line 32 of file JetDef.h.

◆ MutableJetRange

◆ MutableJetUpdater

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::MutableJetUpdater = AccessorTemplate<ContainerId::mutableJet,CT,ColumnAccessMode::update,CM>

Definition at line 36 of file JetDef.h.

◆ MutableMetAccessor

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::MutableMetAccessor = AccessorTemplate<ContainerId::mutableMet,CT,ColumnAccessMode::input,CM>

Definition at line 70 of file MetDef.h.

◆ MutableMetDecorator

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::MutableMetDecorator = AccessorTemplate<ContainerId::mutableMet,CT,ColumnAccessMode::output,CM>

Definition at line 71 of file MetDef.h.

◆ MutableMetId

Definition at line 68 of file MetDef.h.

◆ MutableMetRange

◆ OptClusterId

◆ OptEgammaId

Definition at line 51 of file EgammaDef.h.

◆ OptElectronId

◆ OptEventInfoId

◆ OptJetId

Definition at line 27 of file JetDef.h.

◆ OptMet0Id

Definition at line 57 of file MetDef.h.

◆ OptMet1Id

Definition at line 63 of file MetDef.h.

◆ OptMetAssociationId

◆ OptMetId

Definition at line 51 of file MetDef.h.

◆ OptMuonId

Definition at line 26 of file MuonDef.h.

◆ OptMutableEgammaId

◆ OptMutableJetId

◆ OptMutableMetId

◆ OptParticle0Id

◆ OptParticle1Id

◆ OptParticle2Id

◆ OptParticleId

◆ OptPhotonId

Definition at line 45 of file EgammaDef.h.

◆ OptTauJetId

Definition at line 26 of file TauJetDef.h.

◆ OptTrack0Id

Definition at line 51 of file TrackDef.h.

◆ OptTrack1Id

Definition at line 55 of file TrackDef.h.

◆ OptTrack2Id

Definition at line 59 of file TrackDef.h.

◆ OptTrack3Id

Definition at line 63 of file TrackDef.h.

◆ OptTrackId

Definition at line 47 of file TrackDef.h.

◆ OptVertexId

Definition at line 68 of file TrackDef.h.

◆ Particle0Accessor

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::Particle0Accessor = AccessorTemplate<ContainerId::particle0,CT,ColumnAccessMode::input,CM>

Definition at line 44 of file ParticleDef.h.

◆ Particle0Decorator

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::Particle0Decorator = AccessorTemplate<ContainerId::particle0,CT,ColumnAccessMode::output,CM>

Definition at line 45 of file ParticleDef.h.

◆ Particle0Id

◆ Particle0Range

◆ Particle1Accessor

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::Particle1Accessor = AccessorTemplate<ContainerId::particle1,CT,ColumnAccessMode::input,CM>

Definition at line 50 of file ParticleDef.h.

◆ Particle1Decorator

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::Particle1Decorator = AccessorTemplate<ContainerId::particle1,CT,ColumnAccessMode::output,CM>

Definition at line 51 of file ParticleDef.h.

◆ Particle1Id

◆ Particle1Range

◆ Particle2Accessor

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::Particle2Accessor = AccessorTemplate<ContainerId::particle2,CT,ColumnAccessMode::input,CM>

Definition at line 56 of file ParticleDef.h.

◆ Particle2Decorator

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::Particle2Decorator = AccessorTemplate<ContainerId::particle2,CT,ColumnAccessMode::output,CM>

Definition at line 57 of file ParticleDef.h.

◆ Particle2Id

◆ Particle2Range

◆ ParticleAccessor

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::ParticleAccessor = AccessorTemplate<ContainerId::particle,CT,ColumnAccessMode::input,CM>

Definition at line 38 of file ParticleDef.h.

◆ ParticleDecorator

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::ParticleDecorator = AccessorTemplate<ContainerId::particle,CT,ColumnAccessMode::output,CM>

Definition at line 39 of file ParticleDef.h.

◆ ParticleId

Definition at line 36 of file ParticleDef.h.

◆ ParticleRange

◆ PhotonAccessor

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::PhotonAccessor = AccessorTemplate<ContainerId::photon,CT,ColumnAccessMode::input,CM>

Definition at line 46 of file EgammaDef.h.

◆ PhotonDecorator

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::PhotonDecorator = AccessorTemplate<ContainerId::photon,CT,ColumnAccessMode::output,CM>

Definition at line 47 of file EgammaDef.h.

◆ PhotonId

Definition at line 44 of file EgammaDef.h.

◆ PhotonRange

Definition at line 43 of file EgammaDef.h.

◆ TauJetAccessor

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::TauJetAccessor = AccessorTemplate<ContainerId::tauJet,CT,ColumnAccessMode::input,CM>

Definition at line 27 of file TauJetDef.h.

◆ TauJetDecorator

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::TauJetDecorator = AccessorTemplate<ContainerId::tauJet,CT,ColumnAccessMode::output,CM>

Definition at line 28 of file TauJetDef.h.

◆ TauJetId

Definition at line 25 of file TauJetDef.h.

◆ TauJetRange

Definition at line 24 of file TauJetDef.h.

◆ Track0Accessor

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::Track0Accessor = AccessorTemplate<ContainerId::track0,CT,ColumnAccessMode::input,CM>

Definition at line 52 of file TrackDef.h.

◆ Track0Decorator

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::Track0Decorator = AccessorTemplate<ContainerId::track0,CT,ColumnAccessMode::output,CM>

Definition at line 53 of file TrackDef.h.

◆ Track1Accessor

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::Track1Accessor = AccessorTemplate<ContainerId::track1,CT,ColumnAccessMode::input,CM>

Definition at line 56 of file TrackDef.h.

◆ Track1Decorator

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::Track1Decorator = AccessorTemplate<ContainerId::track1,CT,ColumnAccessMode::output,CM>

Definition at line 57 of file TrackDef.h.

◆ Track2Accessor

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::Track2Accessor = AccessorTemplate<ContainerId::track2,CT,ColumnAccessMode::input,CM>

Definition at line 60 of file TrackDef.h.

◆ Track2Decorator

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::Track2Decorator = AccessorTemplate<ContainerId::track2,CT,ColumnAccessMode::output,CM>

Definition at line 61 of file TrackDef.h.

◆ Track3Accessor

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::Track3Accessor = AccessorTemplate<ContainerId::track3,CT,ColumnAccessMode::input,CM>

Definition at line 64 of file TrackDef.h.

◆ Track3Decorator

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::Track3Decorator = AccessorTemplate<ContainerId::track3,CT,ColumnAccessMode::output,CM>

Definition at line 65 of file TrackDef.h.

◆ TrackAccessor

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::TrackAccessor = AccessorTemplate<ContainerId::track,CT,ColumnAccessMode::input,CM>

Definition at line 48 of file TrackDef.h.

◆ TrackDecorator

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::TrackDecorator = AccessorTemplate<ContainerId::track,CT,ColumnAccessMode::output,CM>

Definition at line 49 of file TrackDef.h.

◆ TrackId

Definition at line 46 of file TrackDef.h.

◆ VertexAccessor

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::VertexAccessor = AccessorTemplate<ContainerId::vertex,CT,ColumnAccessMode::input,CM>

Definition at line 69 of file TrackDef.h.

◆ VertexDecorator

template<typename CT, typename CM = ColumnarModeDefault>
using columnar::VertexDecorator = AccessorTemplate<ContainerId::vertex,CT,ColumnAccessMode::output,CM>

Definition at line 70 of file TrackDef.h.

◆ VertexId

Definition at line 67 of file TrackDef.h.

Enumeration Type Documentation

◆ ColumnAccessMode

enum class columnar::ColumnAccessMode
strong

an enum for the different access modes for a column

Enumerator
input 

an input column

output 

an output column

update 

an updateable column

Definition at line 18 of file ColumnInfo.h.

19 {
21 input,
22
24 output,
25
27 update
28 };
output
Definition merge.py:16

Function Documentation

◆ addColumnAccessMode()

void columnar::addColumnAccessMode ( ColumnInfo & info,
ColumnAccessMode accessMode )

Definition at line 24 of file ColumnInfoHelpers.cxx.

25 {
26 if (info.accessMode == ColumnAccessMode::input)
27 info.accessMode = accessMode;
28 else if (info.accessMode != accessMode)
29 throw std::runtime_error ("conflicting access modes for column " + info.name);
30 }
@ input
an input column
Definition ColumnInfo.h:21

◆ deltaPhi()

double columnar::deltaPhi ( double phiA,
double phiB )
inline

delta Phi in range [-pi,pi[

Definition at line 23 of file MomentumHelpers.h.

24 {
25 return -remainder( -phiA + phiB, 2*M_PI );
26 }
#define M_PI
std::vector< std::string > remainder(const std::vector< std::string > &v1, const std::vector< std::string > &v2)

◆ deltaRapidity()

template<ContainerIdConcept CI1, ContainerIdConcept CI2, typename CM>
double columnar::deltaRapidity ( const MomentumAccessors< CI1, CM > & momAcc1,
ObjectId< CI1, CM > p1,
const MomentumAccessors< CI2, CM > & momAcc2,
ObjectId< CI2, CM > p2,
bool useRapidity = true )

Computes efficiently \( \Delta{y} \).

Definition at line 32 of file MomentumHelpers.h.

33 {
34 if (useRapidity)
35 return momAcc1.rapidity(p1) - momAcc2.rapidity(p2);
36 else
37 return momAcc1.eta(p1) - momAcc2.eta(p2);
38 }
double rapidity(ObjectId< CI, CM > object) const
double eta(ObjectId< CI, CM > object) const

◆ isInDeltaR()

template<ContainerIdConcept CI1, ContainerIdConcept CI2, typename CM>
bool columnar::isInDeltaR ( const MomentumAccessors< CI1, CM > & momAcc1,
ObjectId< CI1, CM > p1,
const MomentumAccessors< CI2, CM > & momAcc2,
ObjectId< CI2, CM > p2,
double dR,
bool useRapidity = true )

Check if 2 particles are in a \( \Delta{R} \) cone.

Parameters
dR[in] \( \Delta{R} \)
Returns
true if they are

Definition at line 46 of file MomentumHelpers.h.

48 {
49 const double dPhi = std::abs( xAOD::P4Helpers::deltaPhi(momAcc1.phi(p1),momAcc2.phi(p2)) ); // in [-pi,pi)
50 if ( CxxUtils::fpcompare::greater(dPhi,dR) ) return false; // <==
51 const double dRapidity = std::abs( deltaRapidity(momAcc1,p1,momAcc2,p2,useRapidity) );
52 if ( CxxUtils::fpcompare::greater(dRapidity,dR) ) return false; // <==
53 const double deltaR2 = dRapidity*dRapidity + dPhi*dPhi;
54 if ( CxxUtils::fpcompare::greater(deltaR2,dR*dR) ) return false; // <==
55 return true;
56 }
double phi(ObjectId< CI, CM > object) const
bool greater(double a, double b)
Compare two FP numbers, working around x87 precision issues.
Definition fpcompare.h:140
double deltaRapidity(const MomentumAccessors< CI1, CM > &momAcc1, ObjectId< CI1, CM > p1, const MomentumAccessors< CI2, CM > &momAcc2, ObjectId< CI2, CM > p2, bool useRapidity=true)
Computes efficiently .
double deltaPhi(double phiA, double phiB)
delta Phi in range [-pi,pi[

◆ mergeColumnInfo()

void columnar::mergeColumnInfo ( ColumnInfo & target,
const ColumnInfo & source )

Definition at line 34 of file ColumnInfoHelpers.cxx.

35 {
36 if (target.name != source.name)
37 throw std::runtime_error ("mismatched column names in mergeColumnInfo: " + target.name + " and " + source.name);
38
39 if (target.type == nullptr || source.type == nullptr)
40 throw std::runtime_error ("missing type information in mergeColumnInfo for column: " + target.name);
41 if (*target.type != *source.type)
42 throw std::runtime_error ("mismatched column types in mergeColumnInfo for column: " + target.name + ": " + boost::core::demangle(target.type->name()) + " and " + boost::core::demangle(source.type->name()));
43
44 addColumnAccessMode (target, source.accessMode);
45
46 if (target.offsetName != source.offsetName)
47 throw std::runtime_error ("mismatched offset names in mergeColumnInfo for column: " + target.name + ": " + target.offsetName + " and " + source.offsetName);
48
49 if (target.fixedDimensions != source.fixedDimensions)
50 throw std::runtime_error ("mismatched fixed dimensions in mergeColumnInfo for column: " + target.name);
51
52 if (target.isOffset != source.isOffset)
53 throw std::runtime_error ("mismatched isOffset in mergeColumnInfo for column: " + target.name);
54
55 if (target.replacesColumn.empty())
56 target.replacesColumn = source.replacesColumn;
57 else if (!source.replacesColumn.empty() && target.replacesColumn != source.replacesColumn)
58 throw std::runtime_error ("mismatched replacesColumn in mergeColumnInfo for column: " + target.name + ": " + target.replacesColumn + " and " + source.replacesColumn);
59
60 if (!source.isOptional)
61 target.isOptional = false;
62
63 if (target.linkTargetNames != source.linkTargetNames)
64 throw std::runtime_error ("mismatched linkTargetNames in mergeColumnInfo for column: " + target.name);
65
66 if (target.variantLinkKeyColumn != source.variantLinkKeyColumn)
67 throw std::runtime_error ("mismatched variantLinkKeyColumn in mergeColumnInfo for column: " + target.name + ": " + target.variantLinkKeyColumn + " and " + source.variantLinkKeyColumn);
68 }
void addColumnAccessMode(ColumnInfo &info, ColumnAccessMode accessMode)

◆ moveAccessor()

void columnar::moveAccessor ( unsigned & dataIndex,
std::unique_ptr< ColumnAccessorDataArray > & accessorData,
unsigned & sourceIndex,
std::unique_ptr< ColumnAccessorDataArray > & sourceData )

Definition at line 30 of file ColumnAccessorDataArray.cxx.

31 {
32 if (accessorData != nullptr)
33 throw std::runtime_error ("trying to set a columnar accessor that has already been set, overwriting not yet supported");
34
35 dataIndex = sourceIndex;
36 sourceIndex = 0;
37
38 if (sourceData)
39 {
40 if (sourceData->selfPtr != &sourceData)
41 throw std::logic_error ("selfPtr not set correctly");
42
43 accessorData = std::move (sourceData);
44 accessorData->selfPtr = &accessorData;
45 accessorData->dataIndexPtr = &dataIndex;
46 }
47 }

◆ operator!=() [1/8]

template<ContainerIdConcept CI>
bool columnar::operator!= ( const ObjectId< CI, ColumnarModeArray > & lhs,
const ObjectId< CI, ColumnarModeArray > & rhs )

Definition at line 174 of file ObjectId.h.

175 {
176 return lhs.getIndex() != rhs.getIndex();
177 }
std::size_t getIndex() const noexcept
Definition ObjectId.h:145

◆ operator!=() [2/8]

template<ContainerIdConcept CI>
bool columnar::operator!= ( const ObjectId< CI, ColumnarModeXAOD > & lhs,
const ObjectId< CI, ColumnarModeXAOD > & rhs )

Definition at line 88 of file ObjectId.h.

89 {
90 return &lhs.getXAODObjectNoexcept() != &rhs.getXAODObjectNoexcept();
91 }
xAODObject & getXAODObjectNoexcept() const noexcept
Definition ObjectId.h:54

◆ operator!=() [3/8]

template<ContainerIdConcept... CIList>
bool columnar::operator!= ( const ObjectId< VariantContainerId< CIList... >, ColumnarModeArray > & lhs,
const ObjectId< VariantContainerId< CIList... >, ColumnarModeArray > & rhs )

Definition at line 202 of file VariantObjectId.h.

203 {
204 return lhs.getVariantIndex() != rhs.getVariantIndex() || lhs.getObjectIndex() != rhs.getObjectIndex();
205 }

◆ operator!=() [4/8]

template<ContainerIdConcept... CIList>
bool columnar::operator!= ( const ObjectId< VariantContainerId< CIList... >, ColumnarModeXAOD > & lhs,
const ObjectId< VariantContainerId< CIList... >, ColumnarModeXAOD > & rhs )

Definition at line 99 of file VariantObjectId.h.

100 {
101 return &lhs.getXAODObjectNoexcept() != &rhs.getXAODObjectNoexcept();
102 }

◆ operator!=() [5/8]

template<ContainerIdConcept CI>
bool columnar::operator!= ( const OptObjectId< CI, ColumnarModeArray > & lhs,
const OptObjectId< CI, ColumnarModeArray > & rhs )

Definition at line 204 of file OptObjectId.h.

205 {
206 return lhs.getIndex() != rhs.getIndex();
207 }

◆ operator!=() [6/8]

template<ContainerIdConcept CI>
bool columnar::operator!= ( const OptObjectId< CI, ColumnarModeXAOD > & lhs,
const OptObjectId< CI, ColumnarModeXAOD > & rhs )

Definition at line 100 of file OptObjectId.h.

101 {
102 return lhs.getXAODObjectNoexcept() != rhs.getXAODObjectNoexcept();
103 }
xAODObject * getXAODObjectNoexcept() const noexcept
Definition OptObjectId.h:78

◆ operator!=() [7/8]

template<ContainerIdConcept... CIList>
bool columnar::operator!= ( const OptObjectId< VariantContainerId< CIList... >, ColumnarModeArray > & lhs,
const OptObjectId< VariantContainerId< CIList... >, ColumnarModeArray > & rhs )

Definition at line 242 of file VariantOptObjectId.h.

243 {
244 return lhs.getVariantIndex() != rhs.getVariantIndex() || lhs.getObjectIndex() != rhs.getObjectIndex();
245 }

◆ operator!=() [8/8]

template<ContainerIdConcept... CIList>
bool columnar::operator!= ( const OptObjectId< VariantContainerId< CIList... >, ColumnarModeXAOD > & lhs,
const OptObjectId< VariantContainerId< CIList... >, ColumnarModeXAOD > & rhs )

Definition at line 108 of file VariantOptObjectId.h.

109 {
110 return &lhs.getXAODObjectNoexcept() != &rhs.getXAODObjectNoexcept();
111 }

◆ operator<<() [1/8]

template<ContainerIdConcept CI>
std::ostream & columnar::operator<< ( std::ostream & str,
const ObjectId< CI, ColumnarModeArray > & obj )

Definition at line 162 of file ObjectId.h.

163 {
164 return str << CI::idName << "/" << obj.getIndex();
165 }

◆ operator<<() [2/8]

template<ContainerIdConcept CI>
std::ostream & columnar::operator<< ( std::ostream & str,
const ObjectId< CI, ColumnarModeXAOD > & obj )

Definition at line 76 of file ObjectId.h.

77 {
78 return str << &obj.getXAODObjectNoexcept() << "/" << obj.getXAODObjectNoexcept().index();
79 }

◆ operator<<() [3/8]

template<ContainerIdConcept... CIList>
std::ostream & columnar::operator<< ( std::ostream & str,
const ObjectId< VariantContainerId< CIList... >, ColumnarModeArray > & obj )

Definition at line 189 of file VariantObjectId.h.

190 {
191 using CI = VariantContainerId<CIList...>;
192 return str << CI::idNameArray.at(obj.getVariantIndex()) << "/" << obj.getObjectIndex();
193 }
a "variant" ContainerId
Definition VariantDef.h:98
std::map< std::string, HypoJetVector >::const_iterator CI

◆ operator<<() [4/8]

template<ContainerIdConcept... CIList>
std::ostream & columnar::operator<< ( std::ostream & str,
const ObjectId< VariantContainerId< CIList... >, ColumnarModeXAOD > & obj )

Definition at line 87 of file VariantObjectId.h.

88 {
89 return str << &obj.getXAODObjectNoexcept() << "/" << obj.getXAODObjectNoexcept().index();
90 }

◆ operator<<() [5/8]

template<typename... CIList>
std::ostream & columnar::operator<< ( std::ostream & str,
const ObjectLink< VariantContainerId< CIList... >, ColumnarModeArray > & obj )

Definition at line 297 of file VariantLinkColumn.h.

298 {
299 return str << obj.getLinkKey() << "/" << obj.getLinkIndex();
300 }

◆ operator<<() [6/8]

template<typename... CIList>
std::ostream & columnar::operator<< ( std::ostream & str,
const ObjectLink< VariantContainerId< CIList... >, ColumnarModeXAOD > & obj )

Definition at line 135 of file VariantLinkColumn.h.

136 {
137 return str << obj.getXAODObject() << "/" << obj.getXAODObject()->type();
138 }

◆ operator<<() [7/8]

template<ContainerIdConcept... CIList>
std::ostream & columnar::operator<< ( std::ostream & str,
const OptObjectId< VariantContainerId< CIList... >, ColumnarModeArray > & obj )

Definition at line 229 of file VariantOptObjectId.h.

230 {
231 using CI = VariantContainerId<CIList...>;
232 return str << CI::idNameArray.at(obj.getVariantIndex()) << "/" << obj.getObjectIndex();
233 }

◆ operator<<() [8/8]

template<ContainerIdConcept... CIList>
std::ostream & columnar::operator<< ( std::ostream & str,
const OptObjectId< VariantContainerId< CIList... >, ColumnarModeXAOD > & obj )

Definition at line 96 of file VariantOptObjectId.h.

97 {
98 return str << &obj.getXAODObjectNoexcept() << "/" << obj.getXAODObjectNoexcept().index();
99 }

◆ operator==() [1/8]

template<ContainerIdConcept CI>
bool columnar::operator== ( const ObjectId< CI, ColumnarModeArray > & lhs,
const ObjectId< CI, ColumnarModeArray > & rhs )

Definition at line 168 of file ObjectId.h.

169 {
170 return lhs.getIndex() == rhs.getIndex();
171 }

◆ operator==() [2/8]

template<ContainerIdConcept CI>
bool columnar::operator== ( const ObjectId< CI, ColumnarModeXAOD > & lhs,
const ObjectId< CI, ColumnarModeXAOD > & rhs )

Definition at line 82 of file ObjectId.h.

83 {
84 return &lhs.getXAODObjectNoexcept() == &rhs.getXAODObjectNoexcept();
85 }

◆ operator==() [3/8]

template<ContainerIdConcept... CIList>
bool columnar::operator== ( const ObjectId< VariantContainerId< CIList... >, ColumnarModeArray > & lhs,
const ObjectId< VariantContainerId< CIList... >, ColumnarModeArray > & rhs )

Definition at line 196 of file VariantObjectId.h.

197 {
198 return lhs.getVariantIndex() == rhs.getVariantIndex() && lhs.getObjectIndex() == rhs.getObjectIndex();
199 }

◆ operator==() [4/8]

template<ContainerIdConcept... CIList>
bool columnar::operator== ( const ObjectId< VariantContainerId< CIList... >, ColumnarModeXAOD > & lhs,
const ObjectId< VariantContainerId< CIList... >, ColumnarModeXAOD > & rhs )

Definition at line 93 of file VariantObjectId.h.

94 {
95 return &lhs.getXAODObjectNoexcept() == &rhs.getXAODObjectNoexcept();
96 }

◆ operator==() [5/8]

template<ContainerIdConcept CI>
bool columnar::operator== ( const OptObjectId< CI, ColumnarModeArray > & lhs,
const OptObjectId< CI, ColumnarModeArray > & rhs )

Definition at line 198 of file OptObjectId.h.

199 {
200 return lhs.getIndex() == rhs.getIndex();
201 }

◆ operator==() [6/8]

template<ContainerIdConcept CI>
bool columnar::operator== ( const OptObjectId< CI, ColumnarModeXAOD > & lhs,
const OptObjectId< CI, ColumnarModeXAOD > & rhs )

Definition at line 94 of file OptObjectId.h.

95 {
96 return lhs.getXAODObjectNoexcept() == rhs.getXAODObjectNoexcept();
97 }

◆ operator==() [7/8]

template<ContainerIdConcept... CIList>
bool columnar::operator== ( const OptObjectId< VariantContainerId< CIList... >, ColumnarModeArray > & lhs,
const OptObjectId< VariantContainerId< CIList... >, ColumnarModeArray > & rhs )

Definition at line 236 of file VariantOptObjectId.h.

237 {
238 return lhs.getVariantIndex() == rhs.getVariantIndex() && lhs.getObjectIndex() == rhs.getObjectIndex();
239 }

◆ operator==() [8/8]

template<ContainerIdConcept... CIList>
bool columnar::operator== ( const OptObjectId< VariantContainerId< CIList... >, ColumnarModeXAOD > & lhs,
const OptObjectId< VariantContainerId< CIList... >, ColumnarModeXAOD > & rhs )

Definition at line 102 of file VariantOptObjectId.h.

103 {
104 return &lhs.getXAODObjectNoexcept() == &rhs.getXAODObjectNoexcept();
105 }

◆ renameContainers()

void columnar::renameContainers ( IColumnarTool & tool,
const std::vector< std::pair< std::string, std::string > > & renames )

rename containers in the columnar tool

The interface itself only allows renaming individual columns, but sometimes it is nice to rename a whole container. This happens strictly on the basis of the name, i.e. it being prefixed with "Container.".

Definition at line 23 of file ColumnarToolHelpers.cxx.

24 {
25 if (!renames.empty())
26 {
27 auto columnInfo = tool.getColumnInfo ();
28 for (auto& [from, to] : renames)
29 {
30 for (auto& column : columnInfo)
31 {
32 if (column.name.starts_with (from) && (column.name.size() == from.size() || column.name[from.size()] == '.'))
33 {
34 std::string newName = to + column.name.substr (from.size());
35 tool.renameColumn (column.name, newName);
36 }
37 }
38 }
39 }
40 }

◆ resetAccessor()

template<ContainerIdConcept CI, typename CT, ColumnAccessMode CAM, typename CM>
void columnar::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

This allows users to have blank column accessors that only get initialized if they are actually used. This avoids the need to have accessors wrapped inside std::optional or similar constructs. Besides making accessor use slightly more consistent it should also make the code a little more efficient.

Definition at line 252 of file ColumnAccessor.h.

252 {})
253 {
254 accessor = AccessorTemplate<CI,CT,CAM,CM> (columnBase, name, std::move (info));
255 }

◆ resetEgamma()

template<ContainerIdConcept CI, typename CM>
void columnar::resetEgamma ( MomentumAccessors< CI, CM > & accessors,
ColumnarTool< CM > & columnarTool )

Definition at line 361 of file MomentumAccessors.h.

361 {
362 resetPtEtaPhiReadM (accessors, columnarTool); }
void resetPtEtaPhiReadM(MomentumAccessors< CI, CM > &accessors, ColumnarTool< CM > &columnarTool)

◆ resetElectron()

template<ContainerIdConcept CI, typename CM>
void columnar::resetElectron ( MomentumAccessors< CI, CM > & accessors,
ColumnarTool< CM > & columnarTool )

Definition at line 355 of file MomentumAccessors.h.

355 {
constexpr double electronMassInMeV
the mass of the electron (in MeV)
void resetPtEtaPhiFixedM(MomentumAccessors< CI, CM > &accessors, ColumnarTool< CM > &columnarTool, double mValue)

◆ resetIParticle()

template<ContainerIdConcept CI, typename CM>
void columnar::resetIParticle ( MomentumAccessors< CI, CM > & accessors)

reset the dynamic momentum accessors to various default implementations

These are convenience functions to avoid the user having to know how a specific particle type is implemented. I decided to make them standalone functions, as that makes it seamless to define further specializations if needed in other packages. In particular tracking momentum accessors need some enums from xAODTracking for the xAOD hypothesis, which I don't want to include here.

Definition at line 340 of file MomentumAccessors.h.

340 {
341 accessors.reset (std::in_place_type<Detail::MomentumAccessorsIParticle<CI,CM>>); }
columnar momentum accessors that redirect to the xAOD::IParticle interface internally

◆ resetJet()

template<ContainerIdConcept CI, typename CM>
void columnar::resetJet ( MomentumAccessors< CI, CM > & accessors,
ColumnarTool< CM > & columnarTool )

Definition at line 349 of file MomentumAccessors.h.

349 {
350 resetPtEtaPhiReadM (accessors, columnarTool); }

◆ resetJetConstituentScale()

template<ContainerIdConcept CI, typename CM>
void columnar::resetJetConstituentScale ( MomentumAccessors< CI, CM > & accessors,
ColumnarTool< CM > & columnarTool,
const std::string & prefix = "JetConstitScaleMomentum_" )

Definition at line 352 of file MomentumAccessors.h.

352 {
353 accessors.reset (std::in_place_type<Detail::FullMomentumAccessorsPtEtaPhiM<Detail::CoreMomentumAccessorsPtEtaPhiReadM<CI,CM>>>, columnarTool, prefix); }
generic columnar momentum accessors that use a pt, eta, phi, m representation underneath
a core momentum accessor that reads pt, eta, phi, and m from the file

◆ resetMuon()

template<ContainerIdConcept CI, typename CM>
void columnar::resetMuon ( MomentumAccessors< CI, CM > & accessors,
ColumnarTool< CM > & columnarTool )

Definition at line 364 of file MomentumAccessors.h.

364 {
365 resetPtEtaPhiFixedM (accessors, columnarTool, ParticleConstants::muonMassInMeV); }
constexpr double muonMassInMeV
the mass of the muon (in MeV)

◆ resetObjectType()

template<ContainerIdConcept CI, typename CM>
void columnar::resetObjectType ( MomentumAccessors< CI, CM > & accessors,
ColumnarTool< CM > & columnarTool,
xAODType::ObjectType type )

Definition at line 371 of file MomentumAccessors.h.

372 {
373 switch (type)
374 {
376 resetElectron (accessors, columnarTool);
377 break;
379 resetPhoton (accessors, columnarTool);
380 break;
382 resetMuon (accessors, columnarTool);
383 break;
385 resetTau (accessors, columnarTool);
386 break;
388 resetJet (accessors, columnarTool);
389 break;
390 default:
391 throw std::runtime_error ("Unknown object type for momentum accessors: " + std::to_string(static_cast<unsigned>(type)));
392 }
393 }
void resetElectron(MomentumAccessors< CI, CM > &accessors, ColumnarTool< CM > &columnarTool)
void resetPhoton(MomentumAccessors< CI, CM > &accessors, ColumnarTool< CM > &columnarTool)
void resetMuon(MomentumAccessors< CI, CM > &accessors, ColumnarTool< CM > &columnarTool)
void resetTau(MomentumAccessors< CI, CM > &accessors, ColumnarTool< CM > &columnarTool)
void resetJet(MomentumAccessors< CI, CM > &accessors, ColumnarTool< CM > &columnarTool)
@ Jet
The object is a jet.
Definition ObjectType.h:40
@ Photon
The object is a photon.
Definition ObjectType.h:47
@ Muon
The object is a muon.
Definition ObjectType.h:48
@ Electron
The object is an electron.
Definition ObjectType.h:46
@ Tau
The object is a tau (jet)
Definition ObjectType.h:49

◆ resetPhoton()

template<ContainerIdConcept CI, typename CM>
void columnar::resetPhoton ( MomentumAccessors< CI, CM > & accessors,
ColumnarTool< CM > & columnarTool )

Definition at line 358 of file MomentumAccessors.h.

358 {
359 resetPtEtaPhiFixedM (accessors, columnarTool, ParticleConstants::photonMassInMeV); }
constexpr double photonMassInMeV
various mass-less particles

◆ resetPtEtaPhiFixedM()

template<ContainerIdConcept CI, typename CM>
void columnar::resetPtEtaPhiFixedM ( MomentumAccessors< CI, CM > & accessors,
ColumnarTool< CM > & columnarTool,
double mValue )

Definition at line 346 of file MomentumAccessors.h.

346 {
347 accessors.reset (std::in_place_type<Detail::FullMomentumAccessorsPtEtaPhiM<Detail::CoreMomentumAccessorsPtEtaPhiFixedM<CI,CM>>>, columnarTool, mValue); }
a core momentum accessor that reads pt, eta, phi from the file, but uses a fixed value for m

◆ resetPtEtaPhiReadM()

template<ContainerIdConcept CI, typename CM>
void columnar::resetPtEtaPhiReadM ( MomentumAccessors< CI, CM > & accessors,
ColumnarTool< CM > & columnarTool )

Definition at line 343 of file MomentumAccessors.h.

343 {
344 accessors.reset (std::in_place_type<Detail::FullMomentumAccessorsPtEtaPhiM<Detail::CoreMomentumAccessorsPtEtaPhiReadM<CI,CM>>>, columnarTool); }

◆ resetTau()

template<ContainerIdConcept CI, typename CM>
void columnar::resetTau ( MomentumAccessors< CI, CM > & accessors,
ColumnarTool< CM > & columnarTool )

Definition at line 367 of file MomentumAccessors.h.

367 {
368 resetPtEtaPhiReadM (accessors, columnarTool); }

Variable Documentation

◆ columnarAccessMode

unsigned columnar::columnarAccessMode = COLUMNAR_DEFAULT_ACCESS_MODE
constexpr

Definition at line 15 of file ColumnarDef.h.

◆ invalidObjectIndex

ColumnarOffsetType columnar::invalidObjectIndex = static_cast<ColumnarOffsetType>(-1)
inlineconstexpr

the value for an invalid element index

This is mostly used for invalid element links

Definition at line 25 of file IColumnarTool.h.

◆ numberOfEventsName

const std::string columnar::numberOfEventsName = "EventInfo"
inline

the name used for the column containing the number of events

Essentially this shows up in a large number of places, and I'm not sure what the best name for it is. I'm currently using "EventInfo", because technically it is the number of EventInfo objects the data has. I'm pretty sure that this will be confusing to many people.

Todo
Find a better name than "EventInfo".

Definition at line 38 of file IColumnarTool.h.