25 std::shared_ptr<InputFile> filePtr,
31 inputType_(inputType),
32 wrapperBaseTClass_(TClass::GetClass(
"edm::WrapperBase")) {
43 std::pair<SharedResourcesAcquirer*, std::recursive_mutex*>
48 std::unique_ptr<WrapperBase>
58 return std::unique_ptr<WrapperBase>();
62 TBranch*
br = branchInfo.productBranch_;
67 return std::unique_ptr<WrapperBase>();
73 std::shared_ptr<void> refCoreStreamerGuard(
nullptr,[](
void*){
setRefCoreStreamer(
false);
75 TClass*
cp = branchInfo.classCache_;
77 branchInfo.classCache_ = TClass::GetClass(branchInfo.branchDescription_.wrappedName().c_str());
78 cp = branchInfo.classCache_;
82 std::unique_ptr<WrapperBase> edp =
getWrapperBasePtr(p, branchInfo.offsetToWrapperBase_);
87 exception.
addContext(
"Rethrowing an exception that happened on a different thread.");
virtual ~RootDelayedReader()
void setRefCoreStreamer(bool resetAll=false)
BranchInfo const & getBranchInfo(iterator const &iter) const
std::shared_ptr< std::recursive_mutex > mutex_
std::pair< SharedResourcesAcquirer *, std::recursive_mutex * > sharedResources_() const override
virtual std::unique_ptr< WrapperBase > getProduct_(BranchKey const &k, EDProductGetter const *ep) override
std::exception_ptr lastException_
static SharedResourcesRegistry * instance()
BranchType branchType() const
RootDelayedReader(RootTree const &tree, std::shared_ptr< InputFile > filePtr, InputType inputType)
roottree::BranchMap::const_iterator iterator
EntryNumber const & entryNumberForIndex(unsigned int index) const
bool found(iterator const &iter) const
void getEntry(TBranch *branch, EntryNumber entry) const
void addContext(std::string const &context)
unsigned int transitionIndex() const
std::unique_ptr< SharedResourcesAcquirer > resourceAcquirer_
edm::propagate_const< TClass * > wrapperBaseTClass_
iterator branchIter(BranchKey const &k) const
std::unique_ptr< WrapperBase > getWrapperBasePtr(void *p, int offset)
edm::propagate_const< DelayedReader * > nextReader_
std::pair< SharedResourcesAcquirer, std::shared_ptr< std::recursive_mutex > > createAcquirerForSourceDelayedReader()