136 input::BranchInfo
const& branchInfo = iter->second;
137 TBranch* br = branchInfo.productBranch_;
138 assert(br !=
nullptr);
139 auto const& pd = branchInfo.branchDescription_;
147 <<
"Attempt to delay read a produced product!\n";
152 InputSourceMutexSentry sentry;
155 TClass* cl = TClass::GetClass(pd.wrappedName().c_str());
156 auto get_product = [
this, cl, br](
auto entry) {
157 unique_ptr<EDProduct>
p{
static_cast<EDProduct*
>(cl->New())};
158 EDProduct* pp =
p.get();
160 unsigned long long ticks = 0;
164 br->DropBaskets(
"all");
172 configureProductIDStreamer();
173 configureRefCoreStreamer();
188 configureProductIDStreamer();
189 configureRefCoreStreamer();
193 vector<ProductProvenance> ppv;
194 unique_ptr<ProductProvenance const> prov;
199 for (
auto const&
val : ppv) {
200 if (
val.productID() ==
pid) {
201 prov.reset(
new ProductProvenance(
val));
220 result->getRangeSetID(),
231 auto p = get_product(*it);
232 vector<ProductProvenance> new_ppv;
233 unique_ptr<ProductProvenance const> new_prov;
235 auto p_ppv = &new_ppv;
238 for (
auto const&
val : new_ppv) {
239 if (
val.productID() ==
pid) {
240 new_prov.reset(
new ProductProvenance(
val));
252 if (!mergedRangeSet.is_valid() && !newRS.is_valid()) {
257 }
else if (mergedRangeSet.is_valid() && !newRS.is_valid()) {
264 }
else if (!mergedRangeSet.is_valid() && newRS.is_valid()) {
268 mergedRangeSet = newRS;
273 principal_->insert_pp(const_cast<Group*>(grp),
274 make_unique<ProductProvenance const>(*new_prov));
275 prov = move(new_prov);
281 result->combine(
p.get());
282 mergedRangeSet.merge(newRS);
311 "RootDelayedReader::getProduct_"}
312 <<
"\nThe following ranges corresponding to the product:\n" 313 <<
" '" << branchInfo.branchDescription_ <<
"'" 314 <<
"\ncannot be aggregated\n" 315 << mergedRangeSet <<
" and\n" 316 << newRS <<
"\nPlease contact artists@fnal.gov.\n";
322 configureProductIDStreamer();
323 configureRefCoreStreamer();
RunID const & runID() const
SubRunID const & subRunID() const
int64_t saveMemoryObjectThreshold_
RangeSet resolveRangeSet(RangeSetInfo const &rs)
static RangeSet forSubRun(SubRunID)
void swap(Handle< T > &a, Handle< T > &b)
cet::exempt_ptr< input::BranchMap const > branches_
std::enable_if_t< detail::are_handles< T, U >::value, bool > disjoint_ranges(T const &a, U const &b)
std::vector< input::EntryNumber > const entrySet_
TBranch * provenanceBranch_
cet::coded_exception< errors::ErrorCodes, ExceptionDetail::translate > Exception
bool const compactSubRunRanges_
std::enable_if_t< detail::are_handles< T, U >::value, bool > overlapping_ranges(T const &a, U const &b)
std::enable_if_t< detail::are_handles< T, U >::value, bool > same_ranges(T const &a, U const &b)
cet::exempt_ptr< Principal > principal_
cet::exempt_ptr< BranchIDLists const > branchIDLists_
static RangeSet forRun(RunID)
FileFormatVersion fileFormatVersion_