4#ifndef ASGANALYSISALGORITHMS_RNTUPLEFIELDHELPERS_H
5#define ASGANALYSISALGORITHMS_RNTUPLEFIELDHELPERS_H
22#include <ROOT/RNTupleModel.hxx>
65 virtual StatusCode
setup( ROOT::RNTupleModel& model,
68 MsgStream&
msg )
override;
71 virtual StatusCode
setup ( TTree& ,
74 MsgStream&
msg )
override;
77 std::unique_ptr< SG::TypelessConstAccessor >
m_acc;
90 virtual StatusCode
setup( ROOT::RNTupleModel& model,
93 MsgStream&
msg )
override;
95 virtual StatusCode
setup ( TTree& ,
98 MsgStream&
msg )
override;
100 StatusCode
resize(
size_t size, MsgStream&
msg );
108 std::unique_ptr< SG::TypelessConstAccessor >
m_acc;
133 virtual StatusCode
addBranch( ROOT::RNTupleModel& model,
143 std::vector< std::unique_ptr<ElementFieldProcessor> >
m_fields;
156 virtual StatusCode
addBranch( ROOT::RNTupleModel& model,
166 std::vector< std::unique_ptr<ContainerFieldProcessor> >
m_fields;
173 using AsgMessagingForward::AsgMessagingForward;
178 StatusCode
setupTree(
const std::vector<std::string>& branches,
179 std::unordered_set<std::string> nonContainers,
181 ROOT::RNTupleModel& model );
185 ROOT::RNTupleModel& model );
192 std::unordered_map< std::string, std::unique_ptr<TreeBranchHelpers::IObjectProcessor> >
m_processors;
Base class for elements of a container that can have aux data.
Manage index tracking and synchronization of auxiliary data.
the interface for the central systematics service
ContainerFieldProcessor()=default
ContainerFieldProcessor & operator=(const ContainerFieldProcessor &)=delete
const SG::IAuxTypeVectorFactory * m_factory
virtual ~ContainerFieldProcessor()=default
std::unique_ptr< SG::TypelessConstAccessor > m_acc
ContainerFieldProcessor(const ContainerFieldProcessor &)=delete
virtual StatusCode setup(ROOT::RNTupleModel &model, const BranchConfig &branchConfig, OutputBranchData &outputData, MsgStream &msg) override
std::shared_ptr< void > m_field
StatusCode resize(size_t size, MsgStream &msg)
virtual StatusCode addBranch(ROOT::RNTupleModel &model, const BranchConfig &branchConfig, OutputBranchData &outputData) override
ContainerProcessor & operator=(const ContainerProcessor &)=delete
std::vector< std::unique_ptr< ContainerFieldProcessor > > m_fields
TVirtualCollectionProxy * m_collProxy
virtual ~ContainerProcessor()=default
ContainerProcessor(const std::string &sgName)
ContainerProcessor(const ContainerProcessor &)=delete
virtual StatusCode retrieveProcess(StoreType &evtStore) override
retrieve and process the object
virtual ~ElementFieldProcessor()=default
ElementFieldProcessor(const ElementFieldProcessor &)=delete
std::unique_ptr< SG::TypelessConstAccessor > m_acc
ElementFieldProcessor & operator=(const ElementFieldProcessor &)=delete
ElementFieldProcessor()=default
virtual StatusCode setup(ROOT::RNTupleModel &model, const BranchConfig &branchConfig, OutputBranchData &outputData, MsgStream &msg) override
std::shared_ptr< void > m_field
const SG::IAuxTypeVectorFactory * m_factory
ElementProcessor & operator=(const ElementProcessor &)=delete
virtual StatusCode retrieveProcess(StoreType &evtStore) override
retrieve and process the object
virtual ~ElementProcessor()=default
ElementProcessor(const std::string &sgName)
ElementProcessor(const ElementProcessor &)=delete
std::vector< std::unique_ptr< ElementFieldProcessor > > m_fields
virtual StatusCode addBranch(ROOT::RNTupleModel &model, const BranchConfig &branchConfig, OutputBranchData &outputData) override
ProcessorList & operator=(const ProcessorList &)=delete
std::optional< int > defaultBasketSize
StatusCode setupTree(const std::vector< std::string > &branches, std::unordered_set< std::string > nonContainers, ISystematicsSvc &sysSvc, ROOT::RNTupleModel &model)
std::unordered_set< std::string > m_nonContainers
std::unordered_map< std::string, std::unique_ptr< TreeBranchHelpers::IObjectProcessor > > m_processors
TreeBranchHelpers::IObjectProcessor & getObjectProcessor(const BranchConfig &, const std::string &sgName)
StatusCode setupBranch(const BranchConfig &branchConfig, OutputBranchData &outputData, ROOT::RNTupleModel &model)
ProcessorList(const ProcessorList &)=delete
virtual ~ProcessorList()=default
the interface class for branch processors
the interface class for classes reading an object from the event store and processing it
Base class for elements of a container that can have aux data.
Interface for factory objects that create vectors.
Helper class to provide const generic access to aux data.
The Athena Transient Store API.
base class to forward messages to another class
Class mimicking the AthMessaging class from the offline software.
Wrapper for TEvent to make it look like StoreGate.
const std::string process
TreeBranchHelpers::OutputBranchData OutputBranchData
TreeBranchHelpers::BranchConfig BranchConfig
Select isolated Photons, Electrons and Muons.
void ErrorHandler ATLAS_NOT_THREAD_SAFE(Int_t level, Bool_t abort, const char *location, const char *message)
Function filtering the warnings coming from ROOT.
std::function< void *()> getData
std::function< void(size_t)> resize
the user configuration of an output branch
the data for a single output branch