67 #include "TTreeCache.h"
108 void checkReleaseVersion(std::vector<ProcessHistory> processHistoryVector,
std::string const&
fileName) {
111 for (
auto const& ph : processHistoryVector) {
112 for (
auto const& pc : ph) {
116 <<
"a release (" << pc.releaseVersion() <<
") used in writing the input file, " << fileName <<
".\n"
117 <<
"Forward compatibility cannot be supported.\n";
137 return eventAux.
event();
148 std::shared_ptr<InputFile> filePtr,
149 std::shared_ptr<EventSkipperByID> eventSkipperByID,
153 unsigned int nStreams,
154 unsigned int treeCacheSize,
155 int treeMaxVirtualSize,
162 std::shared_ptr<BranchIDListHelper> branchIDListHelper,
164 std::shared_ptr<ThinnedAssociationsHelper> thinnedAssociationsHelper,
165 std::vector<BranchID>
const* associationsFromSecondary,
166 std::shared_ptr<DuplicateChecker> duplicateChecker,
167 bool dropDescendants,
169 std::vector<std::shared_ptr<IndexIntoFile>>
const& indexesIntoFiles,
171 std::vector<ProcessHistoryID>& orderedProcessHistoryIDs,
172 bool bypassVersionCheck,
173 bool labelRawDataLikeMC,
175 bool enablePrefetching,
176 bool enforceGUIDInFileName)
178 logicalFile_(logicalFileName),
179 processConfiguration_(processConfiguration),
180 processHistoryRegistry_(&processHistoryRegistry),
182 eventSkipperByID_(eventSkipperByID),
183 fileFormatVersion_(),
186 indexIntoFile_(*indexIntoFileSharedPtr_),
187 orderedProcessHistoryIDs_(orderedProcessHistoryIDs),
188 indexIntoFileBegin_(indexIntoFile_.
begin(
191 indexIntoFileEnd_(indexIntoFileBegin_),
192 indexIntoFileIter_(indexIntoFileBegin_),
195 eventProcessHistoryIDs_(),
196 eventProcessHistoryIter_(eventProcessHistoryIDs_.
begin()),
197 savedRunAuxiliary_(),
198 skipAnyEvents_(skipAnyEvents),
199 noRunLumiSort_(noRunLumiSort),
200 noEventSort_(noEventSort),
201 enforceGUIDInFileName_(enforceGUIDInFileName),
202 whyNotFastClonable_(0),
203 hasNewlyDroppedBranch_(),
204 branchListIndexesUnchanged_(
false),
234 branchIDListHelper_(branchIDListHelper),
235 processBlockHelper_(processBlockHelper),
236 fileThinnedAssociationsHelper_(),
237 thinnedAssociationsHelper_(thinnedAssociationsHelper),
238 processingMode_(processingMode),
239 runHelper_(runHelper),
240 newBranchToOldBranch_(),
241 eventHistoryTree_(nullptr),
242 eventToProcessBlockIndexesBranch_(
248 duplicateChecker_(duplicateChecker),
249 provenanceAdaptor_(),
250 provenanceReaderMaker_(),
251 eventProductProvenanceRetrievers_(),
252 parentageIDLookup_(),
253 daqProvenanceHelper_(),
254 edProductClass_(
TypeWithDict::byName(
"edm::WrapperBase").getClass()),
255 inputType_(inputType) {
266 if (
nullptr == metaDataTree.get()) {
277 fft->SetAddress(&fftPtr);
315 using PsetMap = std::map<ParameterSetID, ParameterSetBlob>;
317 PsetMap* psetMapPtr = &psetMap;
326 if (
nullptr == psetTree.get()) {
331 using IdToBlobs = std::pair<ParameterSetID, ParameterSetBlob>;
333 IdToBlobs* pIdToBlob = &idToBlob;
336 std::unique_ptr<TTreeCache> psetTreeCache =
338 psetTreeCache->SetEnablePrefetching(
false);
339 filePtr_->SetCacheRead(psetTreeCache.get());
340 for (Long64_t
i = 0;
i != psetTree->GetEntries(); ++
i) {
341 psetTree->GetEntry(
i);
342 psetMap.insert(idToBlob);
367 auto branchIDListsAPtr = std::make_unique<BranchIDLists>();
376 std::make_unique<ThinnedAssociationsHelper>();
380 &thinnedAssociationsHelperPtr);
417 for (
auto const& psetEntry : psetMap) {
419 pset.setID(psetEntry.first);
430 inputProdDescReg, pHistMap, pHistVector, processConfigurations, psetIdConverter,
true);
438 inputProdDescReg, pHistMap, pHistVector, processConfigurations, psetIdConverter,
false);
450 <<
"Failed to find thinnedAssociationsHelper branch in metaData tree.\n";
454 if (!bypassVersionCheck) {
455 checkReleaseVersion(pHistVector,
file());
458 if (labelRawDataLikeMC) {
462 BranchKey finder(rawData, source,
"",
"");
463 ProductRegistry::ProductList::iterator it = pList.lower_bound(finder);
464 if (it != pList.end() && it->first.friendlyClassName() == rawData && it->first.moduleLabel() ==
source) {
480 it = pList.lower_bound(finder);
481 assert(!(it != pList.end() && it->first.friendlyClassName() == rawData && it->first.moduleLabel() ==
source));
491 for (
auto const&
history : pHistVector) {
529 auto newReg = std::make_unique<ProductRegistry>();
534 for (
auto const& product : prodList) {
538 newReg->copyProduct(prod);
542 <<
"Cannot change friendly class name algorithm without more development work\n"
543 <<
"to update BranchIDLists and ThinnedAssociationsHelper. Contact the framework group.\n";
547 newReg->copyProduct(newBD);
553 *newReg, productSelectorRules, dropDescendants, inputType, storedProcessBlockHelper, processBlockHelper);
557 *associationsFromSecondary);
564 for (
auto& product : newReg->productListUpdator()) {
569 for (
auto& product : newReg->productListUpdator()) {
570 product.second.setOnDemand(
true);
587 for (
auto const& product : prodList) {
588 if (product.second.branchType() ==
InProcess) {
589 std::vector<std::string>
const&
processes = storedProcessBlockHelper.processesWithProcessBlockProducts();
590 auto it =
std::find(processes.begin(), processes.end(), product.second.processName());
591 if (it != processes.end()) {
596 ++nBranches[product.second.branchType()];
602 t->numberOfBranchesToAdd(nBranches[i]);
606 for (
auto const& product : prodList) {
609 std::vector<std::string>
const&
processes = storedProcessBlockHelper.processesWithProcessBlockProducts();
611 if (it != processes.end()) {
634 processBlockTree->trainCache(
"*");
643 std::unique_ptr<TTree> entryDescriptionTree(
645 if (
nullptr == entryDescriptionTree.get()) {
663 if (idBuffer != entryDescriptionBuffer.
id()) {
666 entryDescriptionMap.insert(std::make_pair(entryDescriptionBuffer.
id(), entryDescriptionBuffer));
673 if (newID != oldID) {
690 if (
nullptr == parentageTree.get()) {
708 if (newID != oldID) {
767 std::vector<TTree*> processBlockTrees;
768 std::vector<std::string> processesWithProcessBlockTrees;
772 processBlockTrees.push_back(processBlockTree->tree());
773 processesWithProcessBlockTrees.push_back(processBlockTree->processName());
783 std::move(processesWithProcessBlockTrees),
793 std::vector<TTree*> processBlockTrees;
794 std::vector<std::string> processesWithProcessBlockTrees;
798 processBlockTrees.push_back(processBlockTree->tree());
799 processesWithProcessBlockTrees.push_back(processBlockTree->processName());
808 std::move(processesWithProcessBlockTrees));
876 eventAux.id().event(),
925 event = eventAux.
event();
952 struct RunItemSortByRun {
953 bool operator()(RunItem
const&
a, RunItem
const&
b)
const {
return a.run_ < b.run_; }
955 struct RunItemSortByRunPhid {
956 bool operator()(RunItem
const&
a, RunItem
const&
b)
const {
957 return a.run_ < b.run_ || (!(b.run_ < a.run_) && a.phid_ < b.phid_);
968 firstEventEntry_(entry),
969 lastEventEntry_(entry == IndexIntoFile::invalidEntry ? IndexIntoFile::invalidEntry : entry + 1) {}
976 struct LumiItemSortByRunLumi {
977 bool operator()(LumiItem
const&
a, LumiItem
const&
b)
const {
978 return a.run_ < b.run_ || (!(b.run_ < a.run_) && a.lumi_ < b.lumi_);
981 struct LumiItemSortByRunLumiPhid {
982 bool operator()(LumiItem
const&
a, LumiItem
const&
b)
const {
987 if (a.lumi_ < b.lumi_)
989 if (b.lumi_ < a.lumi_)
991 return a.phid_ < b.phid_;
1006 typedef std::list<LumiItem> LumiList;
1009 typedef std::set<LuminosityBlockID> RunLumiSet;
1010 RunLumiSet runLumiSet;
1012 typedef std::list<RunItem>
RunList;
1015 typedef std::set<RunNumber_t> RunSet;
1018 typedef std::set<RunItem, RunItemSortByRunPhid> RunItemSet;
1019 RunItemSet runItemSet;
1021 typedef std::map<RunNumber_t, ProcessHistoryID> PHIDMap;
1036 bool newRun =
false;
1037 bool newLumi =
false;
1048 if (iFirst || prevPhid != reducedPHID || prevRun != evtAux.run()) {
1050 newRun = newLumi =
true;
1051 }
else if (prevLumi != evtAux.luminosityBlock()) {
1054 prevPhid = reducedPHID;
1055 prevRun = evtAux.run();
1056 prevLumi = evtAux.luminosityBlock();
1062 LumiItem& currentLumi = lumis.back();
1064 ++currentLumi.lastEventEntry_;
1068 RunItem
item(reducedPHID, evtAux.run());
1069 if (runItemSet.insert(
item).second) {
1071 runSet.insert(evtAux.run());
1072 phidMap.insert(std::make_pair(evtAux.run(), reducedPHID));
1082 typedef std::map<RunNumber_t, IndexIntoFile::EntryNumber_t> RunMap;
1085 typedef std::vector<RunItem> RunVector;
1086 RunVector emptyRuns;
1095 if (runSet.insert(runAux->run()).
second) {
1097 emptyRuns.emplace_back(reducedPHID, runAux->run());
1100 phidMap.insert(std::make_pair(runAux->run(), reducedPHID));
1107 RunItemSortByRun runItemSortByRun;
1110 RunList::iterator itRuns = runs.begin(), endRuns = runs.end();
1111 for (
auto const& emptyRun : emptyRuns) {
1112 for (; itRuns != endRuns; ++itRuns) {
1113 if (runItemSortByRun(emptyRun, *itRuns)) {
1117 runs.insert(itRuns, emptyRun);
1122 typedef std::vector<LumiItem> LumiVector;
1123 LumiVector emptyLumis;
1125 typedef std::map<LuminosityBlockID, IndexIntoFile::EntryNumber_t> RunLumiMap;
1126 RunLumiMap runLumiMap;
1133 if (runLumiSet.insert(lumiID).second) {
1138 PHIDMap::const_iterator iPhidMap = phidMap.find(lumiAux->run());
1139 assert(iPhidMap != phidMap.end());
1140 emptyLumis.emplace_back(
1150 LumiItemSortByRunLumi lumiItemSortByRunLumi;
1153 LumiList::iterator itLumis = lumis.begin(), endLumis = lumis.end();
1154 for (
auto const& emptyLumi : emptyLumis) {
1155 for (; itLumis != endLumis; ++itLumis) {
1156 if (lumiItemSortByRunLumi(emptyLumi, *itLumis)) {
1160 lumis.insert(itLumis, emptyLumi);
1165 typedef std::map<RunItem, int, RunItemSortByRunPhid> RunCountMap;
1166 RunCountMap runCountMap;
1172 for (
auto&
run : runs) {
1173 RunCountMap::const_iterator countMapItem = runCountMap.find(
run);
1174 if (countMapItem == runCountMap.end()) {
1175 countMapItem = runCountMap.insert(std::make_pair(
run, rcount)).first;
1176 assert(countMapItem != runCountMap.end());
1179 std::vector<ProcessHistoryID>::const_iterator phidItem =
find_in_all(phids,
run.phid_);
1180 if (phidItem == phids.end()) {
1181 phids.push_back(
run.phid_);
1182 phidItem = phids.end() - 1;
1184 entries.emplace_back(countMapItem->second,
1187 phidItem - phids.begin(),
1195 typedef std::map<LumiItem, int, LumiItemSortByRunLumiPhid> LumiCountMap;
1196 LumiCountMap lumiCountMap;
1198 for (
auto&
lumi : lumis) {
1199 RunCountMap::const_iterator runCountMapItem = runCountMap.find(RunItem(
lumi.phid_,
lumi.run_));
1200 assert(runCountMapItem != runCountMap.end());
1201 LumiCountMap::const_iterator countMapItem = lumiCountMap.find(
lumi);
1202 if (countMapItem == lumiCountMap.end()) {
1203 countMapItem = lumiCountMap.insert(std::make_pair(
lumi, lcount)).first;
1204 assert(countMapItem != lumiCountMap.end());
1207 std::vector<ProcessHistoryID>::const_iterator phidItem =
find_in_all(phids,
lumi.phid_);
1208 assert(phidItem != phids.end());
1209 entries.emplace_back(runCountMapItem->second,
1210 countMapItem->second,
1212 phidItem - phids.begin(),
1215 lumi.firstEventEntry_,
1216 lumi.lastEventEntry_);
1227 <<
"in the input file.\n";
1231 if (guidFromName !=
fid_.
fid()) {
1233 <<
"GUID " << guidFromName <<
" extracted from file name " <<
file_
1234 <<
" is inconsistent with the GUID read from the file " <<
fid_.
fid();
1239 if (
runTree().entries() > 0) {
1245 for (
auto& phid : phidVec) {
1259 std::shared_ptr<IndexIntoFile::EventFinder>(std::make_shared<RootFileEventFinder>(
eventTree_)));
1262 bool needEventNumbers =
false;
1263 bool needIndexesForDuplicateChecker =
1265 if (inputType !=
InputType::Primary || needIndexesForDuplicateChecker || usingGoToEvent) {
1266 needEventNumbers =
true;
1268 bool needEventEntries =
false;
1271 needEventEntries =
true;
1287 treePointer->close();
1288 treePointer =
nullptr;
1320 if (eventToProcessBlockIndexesBranch ==
nullptr) {
1341 bool assertOnFailure) {
1359 if (!eventHistoryBranch) {
1362 eventHistoryBranch->SetAddress(&pHistory);
1365 eventSelectionIDs.swap(
history_->eventSelectionIDs());
1366 branchListIndexes.swap(
history_->branchListIndexes());
1371 assert(eventSelectionIDBranch !=
nullptr);
1375 assert(branchListIndexesBranch !=
nullptr);
1380 for (
auto& esID : eventSelectionIDs) {
1398 auto lumiAuxiliary = std::make_shared<LuminosityBlockAuxiliary>();
1409 lumiAuxiliary->setProcessHistoryID(
provenanceAdaptor_->convertID(lumiAuxiliary->processHistoryID()));
1412 lumiAuxiliary->setProcessHistoryID(
daqProvenanceHelper_->mapProcessHistoryID(lumiAuxiliary->processHistoryID()));
1417 return lumiAuxiliary;
1421 auto runAuxiliary = std::make_shared<RunAuxiliary>();
1427 RunAux* pRunAux = &runAux;
1432 runAuxiliary->setProcessHistoryID(
provenanceAdaptor_->convertID(runAuxiliary->processHistoryID()));
1435 runAuxiliary->setProcessHistoryID(
daqProvenanceHelper_->mapProcessHistoryID(runAuxiliary->processHistoryID()));
1437 return runAuxiliary;
1448 phIndexOfSkippedEvent, runOfSkippedEvent, lumiOfSkippedEvent, skippedEventEntry);
1456 if (
eventSkipperByID_->skipIt(runOfSkippedEvent, lumiOfSkippedEvent, evtAux.id().event())) {
1463 phIndexOfSkippedEvent, runOfSkippedEvent, lumiOfSkippedEvent, evtAux.id().event(),
file_)) {
1470 while (offset < 0) {
1537 auto const& evtAux = principal.
aux();
1552 return {
found, succeeded};
1557 const_cast<EventID&
>(evtAux.id()).setLuminosityBlockNumber(evtAux.oldLuminosityBlock());
1558 evtAux.resetObsoleteInfo();
1563 if (!
fillEventHistory(evtAux, eventSelectionIDs, branchListIndexes, assertOnFailure)) {
1566 runHelper_->overrideRunNumber(evtAux.id(), evtAux.isRealData());
1583 : evtAux.processHistoryID());
1589 return {
found, succeeded};
1597 runHelper_->overrideRunNumber(runAuxiliary->id());
1598 return runAuxiliary;
1621 runHelper_->overrideRunNumber(runAuxiliary->id());
1622 filePtr_->reportInputRunNumber(runAuxiliary->run());
1641 runAuxiliary->setBeginTime(evtAux.time());
1652 runAuxiliary->setProcessHistoryID(evtAux.processHistoryID());
1657 return runAuxiliary;
1662 std::vector<unsigned int> nEntries;
1665 nEntries.push_back(processBlockTree->entries());
1669 std::make_unique<StoredProcessBlockHelper>();
1724 assert(entryNumber >= 0);
1725 mergeableRunProductMetadata->
readRun(
1758 return std::make_shared<LuminosityBlockAuxiliary>(
1766 runHelper_->overrideRunNumber(lumiAuxiliary->id());
1767 filePtr_->reportInputLumiSection(lumiAuxiliary->run(), lumiAuxiliary->luminosityBlock());
1774 lumiAuxiliary->setBeginTime(evtAux.time());
1781 return lumiAuxiliary;
1853 history_ = std::make_unique<History>();
1855 if (!eventHistoryTree_) {
1862 std::vector<std::shared_ptr<IndexIntoFile>>
const& indexesIntoFiles,
1881 for (
auto& product : pList) {
1887 if (it != processes.end()) {
1903 std::set<BranchID>& branchesToDrop,
1904 std::map<BranchID, BranchID>
const& droppedToKeptAlias)
const {
1905 if (dropDescendants) {
1906 branchChildren_->appendToDescendants(branch, branchesToDrop, droppedToKeptAlias);
1908 branchesToDrop.insert(branch.
branchID());
1914 bool dropDescendants,
1922 std::map<BranchID, BranchID> droppedToKeptAlias;
1923 for (
auto const& product : prodList) {
1937 std::set<BranchID> branchesToDrop;
1938 std::vector<BranchDescription const*> associationDescriptions;
1939 for (
auto const& product : prodList) {
1946 associationDescriptions.push_back(&prod);
1950 }
else if (!productSelector.
selected(prod)) {
1963 std::set<BranchID> keptProductsInEvent;
1964 for (
auto const& product : prodList) {
1966 if (branchesToDrop.find(prod.
branchID()) == branchesToDrop.end() && prod.
present() &&
1968 keptProductsInEvent.insert(prod.
branchID());
1973 std::map<BranchID, bool> keepAssociation;
1975 associationDescriptions, keptProductsInEvent, keepAssociation);
1977 for (
auto association : associationDescriptions) {
1984 auto temp = std::make_unique<ThinnedAssociationsHelper>();
1986 auto iter = keepAssociation.find(associationBranches.association());
1987 if (iter != keepAssociation.end() && iter->second) {
1988 temp->addAssociation(associationBranches);
1996 std::set<std::string> processesWithKeptProcessBlockProducts;
1997 std::set<BranchID>::const_iterator branchesToDropEnd = branchesToDrop.end();
1998 for (ProductRegistry::ProductList::iterator it = prodList.begin(), itEnd = prodList.end(); it != itEnd;) {
2000 bool drop = branchesToDrop.find(prod.
branchID()) != branchesToDropEnd;
2005 LogWarning(
"RootFile") <<
"Branch '" << prod.
branchName() <<
"' is being dropped from the input\n"
2006 <<
"of file '" <<
file_ <<
"' because it is dependent on a branch\n"
2007 <<
"that was explicitly dropped.\n";
2012 assert(it != processes.end());
2020 ProductRegistry::ProductList::iterator icopy = it;
2022 prodList.erase(icopy);
2025 processesWithKeptProcessBlockProducts.insert(prod.
processName());
2036 for (ProductRegistry::ProductList::iterator it = prodList.begin(), itEnd = prodList.end(); it != itEnd;) {
2040 void*
p = cp->New();
2043 if (edp->isMergeable()) {
2045 ProductRegistry::ProductList::iterator icopy = it;
2047 prodList.erase(icopy);
2058 std::set<std::string>
const& processesWithKeptProcessBlockProducts,
2076 std::vector<unsigned int> nEntries;
2079 nEntries.push_back(processBlockTree->entries());
2083 bool isModified =
false;
2084 std::vector<unsigned int> finalIndexToStoredIndex;
2086 if (firstInputFile) {
2088 storedProcessBlockHelper, processesWithKeptProcessBlockProducts, nEntries, finalIndexToStoredIndex);
2092 processesWithKeptProcessBlockProducts,
2094 finalIndexToStoredIndex,
2102 std::vector<edm::propagate_const<std::unique_ptr<RootTree>>> newProcessBlockTrees;
2104 for (
unsigned int j = 0;
j < nFinalProducts; ++
j) {
2105 unsigned int iStored = finalIndexToStoredIndex[
j];
2106 newProcessBlockTrees.push_back(
std::move(processBlockTrees_[iStored]));
2108 processBlockTrees_.swap(newProcessBlockTrees);
2119 int treeMaxVirtualSize,
2120 bool enablePrefetching,
2148 return std::make_unique<MakeFullProvenanceReader>();
2150 auto entryDescriptionMap = std::make_unique<EntryDescriptionMap>();
2152 return std::make_unique<MakeOldProvenanceReader>(
std::move(entryDescriptionMap));
2154 return std::make_unique<MakeDummyProvenanceReader>();
2174 std::vector<ParentageID>
const& iParentageIDLookup,
2177 std::set<ProductProvenance>
readProvenance(
unsigned int)
const override;
2182 unsigned int transitionIndex,
2183 std::atomic<
const std::set<ProductProvenance>*>& writeTo)
const override;
2191 std::shared_ptr<std::recursive_mutex>
mutex_;
2196 std::vector<ParentageID>
const& iParentageIDLookup,
2199 rootTree_(iRootTree),
2200 pProvVector_(&provVector_),
2201 parentageIDLookup_(iParentageIDLookup),
2202 daqProvenanceHelper_(daqProvenanceHelper),
2211 template <
typename R>
2212 void readProvenanceAsyncImpl(
R const* iThis,
2215 unsigned int transitionIndex,
2216 std::atomic<
const std::set<ProductProvenance>*>& writeTo,
2218 SignalType
const* pre,
2219 SignalType
const* post) {
2220 if (
nullptr == writeTo.load()) {
2223 auto pWriteTo = &writeTo;
2228 *taskHolder.group(),
2236 serviceToken]()
mutable {
2237 if (
nullptr == pWriteTo->load()) {
2239 std::unique_ptr<const std::set<ProductProvenance>> prov;
2242 pre->emit(*(iContext->getStreamContext()), *iContext);
2244 prov = std::make_unique<const std::set<ProductProvenance>>(iThis->readProvenance(transitionIndex));
2246 post->emit(*(iContext->getStreamContext()), *iContext);
2251 post->emit(*(iContext->getStreamContext()), *iContext);
2254 holder.doneWaiting(std::current_exception());
2257 const std::set<ProductProvenance>* expected =
nullptr;
2259 if (pWriteTo->compare_exchange_strong(expected, prov.get())) {
2263 holder.doneWaiting(std::exception_ptr());
2271 unsigned int transitionIndex,
2272 std::atomic<
const std::set<ProductProvenance>*>& writeTo)
const {
2273 readProvenanceAsyncImpl(
this,
2278 moduleCallingContext,
2279 rootTree_->rootDelayedReader()->preEventReadFromSourceSignal(),
2280 rootTree_->rootDelayedReader()->postEventReadFromSourceSignal());
2285 std::lock_guard<std::recursive_mutex> guard(*
mutex_);
2290 std::set<ProductProvenance> retValue;
2301 <<
"ReducedProvenanceReader::ReadProvenance\n"
2302 <<
"The parentage ID index value " << prov.parentageIDIndex_
2303 <<
" is out of bounds. The maximum value is " <<
parentageIDLookup_.size() - 1 <<
".\n"
2304 <<
"This should never happen.\n"
2305 <<
"Please report this to the framework hypernews forum 'hn-cms-edmFramework@cern.ch'.\n";
2317 std::set<ProductProvenance>
readProvenance(
unsigned int transitionIndex)
const override;
2322 unsigned int transitionIndex,
2323 std::atomic<
const std::set<ProductProvenance>*>& writeTo)
const override;
2330 std::shared_ptr<std::recursive_mutex>
mutex_;
2336 rootTree_(rootTree),
2338 pInfoVector_(&infoVector_),
2339 daqProvenanceHelper_(daqProvenanceHelper),
2345 unsigned int transitionIndex,
2346 std::atomic<
const std::set<ProductProvenance>*>& writeTo)
const {
2347 readProvenanceAsyncImpl(
this,
2352 moduleCallingContext,
2359 std::lock_guard<std::recursive_mutex> guard(*
mutex_);
2363 std::set<ProductProvenance> retValue;
2371 retValue.emplace(
info);
2383 std::set<ProductProvenance>
readProvenance(
unsigned int transitionIndex)
const override;
2388 unsigned int transitionIndex,
2389 std::atomic<
const std::set<ProductProvenance>*>& writeTo)
const override;
2397 std::shared_ptr<std::recursive_mutex>
mutex_;
2405 rootTree_(rootTree),
2407 pInfoVector_(&infoVector_),
2408 entryDescriptionMap_(theMap),
2409 daqProvenanceHelper_(daqProvenanceHelper),
2415 unsigned int transitionIndex,
2416 std::atomic<
const std::set<ProductProvenance>*>& writeTo)
const {
2417 readProvenanceAsyncImpl(
this,
2422 moduleCallingContext,
2423 rootTree_->rootDelayedReader()->preEventReadFromSourceSignal(),
2424 rootTree_->rootDelayedReader()->postEventReadFromSourceSignal());
2429 std::lock_guard<std::recursive_mutex> guard(*
mutex_);
2433 std::set<ProductProvenance> retValue;
2437 Parentage parentage(iter->second.parents());
2442 retValue.emplace(
info.branchID(), parentage.id());
2454 std::set<ProductProvenance>
readProvenance(
unsigned int)
const override;
2457 unsigned int transitionIndex,
2458 std::atomic<
const std::set<ProductProvenance>*>& writeTo)
const override;
2465 return std::set<ProductProvenance>{};
2469 unsigned int transitionIndex,
2470 std::atomic<
const std::set<ProductProvenance>*>& writeTo)
const {
2471 if (
nullptr == writeTo.load()) {
2472 auto emptyProv = std::make_unique<const std::set<ProductProvenance>>();
2473 const std::set<ProductProvenance>* expected =
nullptr;
2474 if (writeTo.compare_exchange_strong(expected, emptyProv.get())) {
2475 emptyProv.release();
2482 return std::make_unique<DummyProvenanceReader>();
2487 return std::make_unique<OldProvenanceReader>(&rootTree, *
entryDescriptionMap_, daqProvenanceHelper);
2492 return std::make_unique<FullProvenanceReader>(&rootTree, daqProvenanceHelper);
2497 return std::make_unique<ReducedProvenanceReader>(&rootTree,
parentageIDLookup_, daqProvenanceHelper);
void initializeFromPrimaryInput(StoredProcessBlockHelper const &storedProcessBlockHelper)
Int_t getEntry(TBranch *branch, EntryNumber entryNumber)
void fillEventNumbersOrEntries(bool needEventNumbers, bool needEventEntries) const
EventNumber_t event() const
list processes
Run mode ##.
std::string const & idToParameterSetBlobsBranchName()
edm::propagate_const< std::unique_ptr< ThinnedAssociationsHelper > > fileThinnedAssociationsHelper_
std::vector< ProcessConfiguration > ProcessConfigurationVector
std::string const & branchName() const
StoredProductProvenanceVector provVector_
bool selected(BranchDescription const &desc) const
std::string const & BranchTypeToAuxiliaryBranchName(BranchType const &branchType)
unsigned int const defaultNonEventLearningEntries
EntryNumber_t firstEventEntryThisRun()
EventToProcessBlockIndexes eventToProcessBlockIndexes_
static constexpr int invalidIndex
BranchType const & branchType() const
std::string const & parentageTreeName()
std::vector< BranchIDList > BranchIDLists
std::shared_ptr< BranchIDLists const > branchIDLists_
roottree::EntryNumber EntryNumber
std::string const & entryDescriptionBranchName()
bool skipEvents(int &offset)
edm::propagate_const< std::shared_ptr< DuplicateChecker > > duplicateChecker_
bool initializedFromInput() const
FileFormatVersion fileFormatVersion() const
std::shared_ptr< LuminosityBlockAuxiliary > fillLumiAuxiliary()
ProductProvenanceVector infoVector_
static std::string const source("source")
static Timestamp invalidTimestamp()
ForwardSequence::const_iterator lower_bound_all(ForwardSequence const &s, Datum const &d)
wrappers for std::lower_bound
bool firstFileDropProcessesAndReorderStored(StoredProcessBlockHelper &storedProcessBlockHelper, std::set< std::string > const &processesToKeep, std::vector< unsigned int > const &nEntries, std::vector< unsigned int > &finalIndexToStoredIndex) const
uint16_t *__restrict__ id
void readEntryDescriptionTree(EntryDescriptionMap &entryDescriptionMap, InputType inputType)
void fillBranchEntryMeta(TBranch *branch, EntryNumber entryNumber, T *&pbuf)
bool branchListIndexesUnchanged() const
std::vector< std::string > const & branchNames() const
EventAuxiliary fillEventAuxiliary(IndexIntoFile::EntryNumber_t entry)
bool setEntryAtNextEventInLumi(RunNumber_t run, LuminosityBlockNumber_t lumi)
void fillLuminosityBlockPrincipal(ProcessHistory const *processHistory, DelayedReader *reader=nullptr)
bool enforceGUIDInFileName_
static PFTauRenderPlugin instance
void readProvenanceAsync(WaitingTaskHolder task, ModuleCallingContext const *moduleCallingContext, unsigned int transitionIndex, std::atomic< const std::set< ProductProvenance > * > &writeTo) const override
MakeOldProvenanceReader(std::unique_ptr< EntryDescriptionMap > &&entryDescriptionMap)
std::vector< BranchID > & parentsForUpdate()
edm::propagate_const< std::shared_ptr< EventSkipperByID > > eventSkipperByID_
edm::propagate_const< std::shared_ptr< ThinnedAssociationsHelper > > thinnedAssociationsHelper_
DaqProvenanceHelper const * daqProvenanceHelper_
std::map< std::string, std::string > newBranchToOldBranch_
constexpr unsigned int numberOfRunLumiEventProductTrees
ProcessHistoryID const & processHistoryID() const
bool empty() const
True if no runs, lumis, or events are in the file.
std::map< BranchKey, BranchDescription > ProductList
BranchID const & mapBranchID(BranchID const &branchID) const
EntryType getEntryType() const
bool registerProcessHistory(ProcessHistory const &processHistory)
bool setEntryAtRun(RunNumber_t run)
void readRun_(RunPrincipal &runPrincipal)
std::string_view stemFromPath(std::string_view path)
ProductProvenanceVector * pInfoVector_
edm::propagate_const< ProcessHistoryRegistry * > processHistoryRegistry_
std::unique_ptr< ProvenanceReaderBase > makeReader(RootTree &eventTree, DaqProvenanceHelper const *daqProvenanceHelper) const override
edm::propagate_const< std::unique_ptr< DaqProvenanceHelper > > daqProvenanceHelper_
edm::propagate_const< std::shared_ptr< RunAuxiliary > > savedRunAuxiliary_
unsigned long long EventNumber_t
EntryNumber const & entries() const
void setSignals(signalslot::Signal< void(StreamContext const &, ModuleCallingContext const &)> const *preEventReadSource, signalslot::Signal< void(StreamContext const &, ModuleCallingContext const &)> const *postEventReadSource)
LuminosityBlockAuxiliary const & aux() const
std::string const & fileFormatVersionBranchName()
void dropProcessesAndReorder(StoredProcessBlockHelper &, std::set< std::string > const &processesWithKeptProcessBlockProducts, ProcessBlockHelper const *)
IndexIntoFileItr begin(SortOrder sortOrder) const
std::string const & processName() const
FullProvenanceReader(RootTree *rootTree, DaqProvenanceHelper const *daqProvenanceHelper)
EventAuxiliary eventAuxCache_
EntryDescriptionMap const & entryDescriptionMap_
std::vector< BranchID > const & parents() const
bool initializeFirstProcessBlockEntry()
std::string const & eventSelectionsBranchName()
edm::propagate_const< std::unique_ptr< EntryDescriptionMap > > entryDescriptionMap_
void initializeDuplicateChecker(std::vector< std::shared_ptr< IndexIntoFile >> const &indexesIntoFiles, std::vector< std::shared_ptr< IndexIntoFile >>::size_type currentIndexIntoFile)
InputSource::ProcessingMode processingMode_
~RootFileEventFinder() override
constexpr std::shared_ptr< T > & get_underlying_safe(propagate_const< std::shared_ptr< T >> &iP)
IndexIntoFile::IndexIntoFileItr indexIntoFileIter_
std::shared_ptr< ProductProvenanceRetriever const > eventProductProvenanceRetriever(size_t index) const
bool fillEventHistory(EventAuxiliary &evtAux, EventSelectionIDVector &eventSelectionIDs, BranchListIndexes &branchListIndexes, bool assertOnFailure=true)
std::unique_ptr< ProvenanceReaderBase > makeReader(RootTree &eventTree, DaqProvenanceHelper const *daqProvenanceHelper) const override
void stable_sort_all(RandomAccessSequence &s)
wrappers for std::stable_sort
std::shared_ptr< std::recursive_mutex > mutex_
EventAuxiliary const & fillThisEventAuxiliary()
LuminosityBlockNumber_t lumi() const
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
LuminosityBlockNumber_t luminosityBlock() const
void trainCache(char const *branchNames)
SharedResourcesAcquirer acquirer_
~FullProvenanceReader() override
ServiceToken presentToken() const
std::unique_ptr< ProvenanceReaderBase > makeReader(RootTree &eventTree, DaqProvenanceHelper const *daqProvenanceHelper) const override
std::shared_ptr< ProductRegistry const > productRegistry() const
unsigned int LuminosityBlockNumber_t
IndexIntoFileItr findRunPosition(RunNumber_t run) const
Same as findPosition.
edm::propagate_const< ProcessBlockHelper * > processBlockHelper_
TBranch * branchEntryInfoBranch() const
void advanceToNextLumiOrRun()
MakeReducedProvenanceReader(std::vector< ParentageID > const &parentageIDLookup)
IndexIntoFileItr findPosition(RunNumber_t run, LuminosityBlockNumber_t lumi=0U, EventNumber_t event=0U) const
std::vector< EventSelectionID > EventSelectionIDVector
edm::propagate_const< TClass * > edProductClass_
FileFormatVersion fileFormatVersion_
unsigned int currentProcessBlockTree_
TTree const * metaTree() const
std::string const & parameterSetsTreeName()
void fillEventToProcessBlockIndexes()
void setPosition(IndexIntoFile::IndexIntoFileItr const &position)
void updateFileBlock(FileBlock &)
void fillProcessBlockPrincipal(std::string const &processName, DelayedReader *reader=nullptr)
std::vector< edm::propagate_const< std::shared_ptr< ProductProvenanceRetriever > > > eventProductProvenanceRetrievers_
edm::propagate_const< RootTree * > rootTree_
void setNumberOfEvents(EntryNumber_t nevents)
ProductList const & productList() const
U second(std::pair< T, U > const &p)
std::vector< EventProcessHistoryID >::const_iterator eventProcessHistoryIter_
void reduceProcessHistoryIDs(ProcessHistoryRegistry const &processHistoryRegistry)
TTree const * tree() const
bool containsItem(RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event) const
DaqProvenanceHelper const * daqProvenanceHelper_
std::string const logicalFile_
std::vector< BranchListIndex > BranchListIndexes
IndexIntoFile::IndexIntoFileItr indexIntoFileEnd_
void readParentageTree(InputType inputType)
std::string const & processHistoryMapBranchName()
std::vector< ProcessHistoryID > & setProcessHistoryIDs()
edm::propagate_const< std::unique_ptr< StoredMergeableRunProductMetadata > > storedMergeableRunProductMetadata_
TClass * getClass() const
std::string const & className() const
bool wasLastEventJustRead() const
void insertEntryForIndex(unsigned int index)
std::tuple< layerClusterToCaloParticle, caloParticleToLayerCluster > association
DelayedReader * resetAndGetRootDelayedReader() const
std::unique_ptr< ProvenanceReaderBase > makeReader(RootTree &eventTree, DaqProvenanceHelper const *daqProvenanceHelper) const override
bool setEntryAtLumi(RunNumber_t run, LuminosityBlockNumber_t lumi)
void setPresenceInProductRegistry(ProductRegistry &, StoredProcessBlockHelper const &)
std::string friendlyName(std::string const &iFullName)
static constexpr RunNumber_t invalidRun
EventNumber_t getEventNumberOfEntry(roottree::EntryNumber entry) const override
std::string const & entryDescriptionTreeName()
std::string const & fid() const
std::shared_ptr< std::recursive_mutex > mutex_
std::string const & mergeableRunProductMetadataBranchName()
RootTree const & runTree() const
std::set< ProductProvenance > readProvenance(unsigned int transitionIndex) const override
IndexIntoFile::EntryNumber_t lastEventEntryNumberRead_
void copyPosition(IndexIntoFileItr const &position)
Copy the position without modifying the pointer to the IndexIntoFile or size.
std::string const & indexIntoFileBranchName()
IndexIntoFileItr end(SortOrder sortOrder) const
Used to end an iteration over the Runs, Lumis, and Events in a file.
std::string const & eventHistoryBranchName()
void skipEventBackward(int &phIndexOfEvent, RunNumber_t &runOfEvent, LuminosityBlockNumber_t &lumiOfEvent, EntryNumber_t &eventEntry)
Long64_t numEntries(TFile *hdl, std::string const &trname)
EntryNumber_t firstEventEntryThisLumi()
edm::propagate_const< RootTree * > rootTree_
std::shared_ptr< RunAuxiliary > readRunAuxiliary_()
int processHistoryIDIndex() const
std::shared_ptr< LuminosityBlockAuxiliary > readLuminosityBlockAuxiliary_()
bool isEarlierRelease(std::string const &a, std::string const &b)
StoredProductProvenanceVector const * pProvVector_
int whyNotFastClonable() const
void fillProcessBlockHelper_()
std::set< ProductProvenance > readProvenance(unsigned int transitionIndex) const override
edm::propagate_const< std::unique_ptr< ProvenanceAdaptor > > provenanceAdaptor_
StreamID streamID() const
std::set< ProductProvenance > readProvenance(unsigned int) const override
static ServiceRegistry & instance()
edm::propagate_const< TBranch * > eventToProcessBlockIndexesBranch_
std::shared_ptr< RunAuxiliary > fillRunAuxiliary()
void setSignals(signalslot::Signal< void(StreamContext const &, ModuleCallingContext const &)> const *preEventReadSource, signalslot::Signal< void(StreamContext const &, ModuleCallingContext const &)> const *postEventReadSource)
std::vector< BranchDescription const * > allBranchDescriptions() const
std::map< ParameterSetID, ParameterSetID > ParameterSetIdConverter
bool iterationWillBeInEntryOrder(SortOrder sortOrder) const
Used to determine whether or not to disable fast cloning.
std::string const & friendlyClassName() const
std::shared_ptr< FileBlock > createFileBlock()
std::vector< edm::propagate_const< RootTree * > > treePointers_
BranchID const & branchID() const
TypeWithDict const & unwrappedType() const
void setDropped(bool isDropped)
bool insertMapped(value_type const &v, bool forceUpdate=false)
void updateFriendlyClassName()
std::array< bool, NumBranchTypes > const & hasNewlyDroppedBranch() const
IndexIntoFile::EntryType getNextItemType(RunNumber_t &run, LuminosityBlockNumber_t &lumi, EventNumber_t &event)
std::string const & metaDataTreeName()
EntryDescriptionID id() const
bool wasFirstEventJustRead() const
bool nextProcessBlock_(ProcessBlockPrincipal &)
bool entryContinues() const
std::string const & parameterSetMapBranchName()
std::string const & eventToProcessBlockIndexesBranchName()
Hash< ProcessHistoryType > ProcessHistoryID
edm::propagate_const< std::unique_ptr< History > > history_
ProcessHistoryVector vector_type
SerialTaskQueueChain & serialQueueChain() const
std::vector< ProductProvenance > ProductProvenanceVector
std::vector< std::string > const & processesWithProcessBlockProducts() const
virtual signalslot::Signal< void(StreamContext const &, ModuleCallingContext const &)> const * preEventReadFromSourceSignal() const =0
std::string const & processHistoryBranchName()
IndexIntoFile & indexIntoFile_
void updateTTreePointers(TTree *ev, TTree *meta, TTree *lumi, TTree *lumiMeta, TTree *run, TTree *runMeta, std::vector< TTree * > processBlockTrees, std::vector< std::string > processesWithProcessBlockTrees)
SharedResourcesAcquirer acquirer_
edm::propagate_const< std::unique_ptr< MakeProvenanceReader > > provenanceReaderMaker_
EntryNumber const & entryNumber() const
ProcessHistoryMap collection_type
bool containsItem(RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event) const
bool goToEvent(EventID const &eventID)
std::string createGlobalIdentifier(bool binary=false)
std::string getReleaseVersion()
std::shared_ptr< RunAuxiliary const > savedRunAuxiliary() const
void setAtEventEntry(IndexIntoFile::EntryNumber_t entry)
void fixIndexes(std::vector< ProcessHistoryID > &processHistoryIDs)
DelayedReader * rootDelayedReader() const
std::vector< RunOrLumiEntry > & setRunOrLumiEntries()
EntryNumber const & entryNumberForIndex(unsigned int index) const
void conversion(EventAux const &from, EventAuxiliary &to)
std::array< bool, NumBranchTypes > hasNewlyDroppedBranch_
unsigned int value() const
std::string const & processName() const
std::vector< std::string > const & processesWithProcessBlockProducts() const
static constexpr EntryNumber_t invalidEntry
ForwardSequence::const_iterator find_in_all(ForwardSequence const &s, Datum const &d)
wrappers for std::find
std::shared_ptr< ProductRegistry const > productRegistry_
void setIfFastClonable(int remainingEvents, int remainingLumis)
std::vector< EventNumber_t > & unsortedEventNumbers()
MergeableRunProductMetadata * mergeableRunProductMetadata()
void fillBranchEntry(TBranch *branch, T *&pbuf)
static constexpr LuminosityBlockNumber_t invalidLumi
IndexIntoFileItr findLumiPosition(RunNumber_t run, LuminosityBlockNumber_t lumi) const
edm::propagate_const< std::shared_ptr< BranchChildren > > branchChildren_
std::string const & parentageBranchName()
edm::propagate_const< std::shared_ptr< InputFile > > filePtr_
void setIndex(unsigned int value)
std::shared_ptr< BranchChildren const > branchChildren() const
void dropOnInputAndReorder(ProductRegistry &, ProductSelectorRules const &, bool dropDescendants, InputType, StoredProcessBlockHelper &, ProcessBlockHelper const *)
std::vector< edm::propagate_const< std::unique_ptr< RootTree > > > processBlockTrees_
LuminosityBlockNumber_t luminosityBlock() const
ProcessHistoryID const & processHistoryID(int i) const
ProductList & productListUpdator()
void setProcessHistoryID(ProcessHistoryID const &phid)
unsigned int transitionIndex() const
IndexIntoFile::EntryNumber_t EntryNumber
std::vector< ParentageID > const & parentageIDLookup_
std::shared_ptr< std::recursive_mutex > mutex_
~OldProvenanceReader() override
std::shared_ptr< ProductProvenanceRetriever > makeProductProvenanceRetriever(unsigned int iStreamIndex)
std::vector< StoredProductProvenance > StoredProductProvenanceVector
std::string const & file() const
std::string const & productDescriptionBranchName()
std::string const & processConfigurationBranchName()
void readProcessBlock_(ProcessBlockPrincipal &)
IndexIntoFile::IndexIntoFileItr indexIntoFileBegin_
ProcessHistoryID const & processHistoryID() const
void fillEventPrincipal(EventAuxiliary const &aux, ProcessHistory const *processHistory, DelayedReader *reader=nullptr)
void doneFileInitialization()
Clears the temporary vector of event numbers to reduce memory usage.
EventID const & id() const
edm::propagate_const< RunHelperBase * > runHelper_
bool branchListIndexesUnchanged_
std::string moduleName(StableProvenance const &provenance, ProcessHistory const &history)
bool endOfProcessBlocksReached() const
edm::propagate_const< TTree * > eventHistoryTree_
void readAllFromSourceAndMergeImmediately(MergeableRunProductMetadata const *mergeableRunProductMetadata=nullptr)
void readLuminosityBlock_(LuminosityBlockPrincipal &lumiPrincipal)
std::vector< EventEntryInfo > * pInfoVector_
unsigned int const defaultNonEventCacheSize
RootFile(std::string const &fileName, ProcessConfiguration const &processConfiguration, std::string const &logicalFileName, std::shared_ptr< InputFile > filePtr, std::shared_ptr< EventSkipperByID > eventSkipperByID, bool skipAnyEvents, int remainingEvents, int remainingLumis, unsigned int nStreams, unsigned int treeCacheSize, int treeMaxVirtualSize, InputSource::ProcessingMode processingMode, RunHelperBase *runHelper, bool noRunLumiSort, bool noEventSort, ProductSelectorRules const &productSelectorRules, InputType inputType, std::shared_ptr< BranchIDListHelper > branchIDListHelper, ProcessBlockHelper *, std::shared_ptr< ThinnedAssociationsHelper > thinnedAssociationsHelper, std::vector< BranchID > const *associationsFromSecondary, std::shared_ptr< DuplicateChecker > duplicateChecker, bool dropDescendantsOfDroppedProducts, ProcessHistoryRegistry &processHistoryRegistry, std::vector< std::shared_ptr< IndexIntoFile >> const &indexesIntoFiles, std::vector< std::shared_ptr< IndexIntoFile >>::size_type currentIndexIntoFile, std::vector< ProcessHistoryID > &orderedProcessHistoryIDs, bool bypassVersionCheck, bool labelRawDataLikeMC, bool usingGoToEvent, bool enablePrefetching, bool enforceGUIDInFileName)
void fillEventNumbers() const
void initialize(ProductSelectorRules const &rules, std::vector< BranchDescription const * > const &branchDescriptions)
static int position[264][3]
std::string const & BranchTypeToProductProvenanceBranchName(BranchType const &BranchType)
std::tuple< bool, bool > readCurrentEvent(EventPrincipal &cache, bool assertOnFailure=true)
std::vector< ProcessHistoryID > & orderedProcessHistoryIDs_
std::string const & productDependenciesBranchName()
void readProvenanceAsync(WaitingTaskHolder task, ModuleCallingContext const *moduleCallingContext, unsigned int transitionIndex, std::atomic< const std::set< ProductProvenance > * > &writeTo) const override
void initAssociationsFromSecondary(std::vector< BranchID > const &)
std::string const & thinnedAssociationsHelperBranchName()
void setParents(std::vector< BranchID > parents)
std::string const & entryDescriptionIDBranchName()
~DummyProvenanceReader() override
void setWillBeContinued(bool iContinued)
void makeProcessBlockRootTrees(std::shared_ptr< InputFile > filePtr, int treeMaxVirtualSize, bool enablePrefetching, InputType inputType, StoredProcessBlockHelper const &storedProcessBlockHelper)
edm::propagate_const< TBranch * > provBranch_
std::unique_ptr< MakeProvenanceReader > makeProvenanceReaderMaker(InputType inputType)
bool readEvent(EventPrincipal &cache)
std::unique_ptr< WrapperBase > getWrapperBasePtr(void *p, int offset)
std::string const & branchIDListBranchName()
BranchID const & originalBranchID() const
std::string const & branchListIndexesBranchName()
std::vector< ParentageID > parentageIDLookup_
void fillRunPrincipal(ProcessHistoryRegistry const &processHistoryRegistry, DelayedReader *reader=nullptr)
bool setEntryAtEvent(RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event)
std::map< EntryDescriptionID, EventEntryDescription > EntryDescriptionMap
std::vector< ParentageID > const & parentageIDLookup_
ReducedProvenanceReader(RootTree *iRootTree, std::vector< ParentageID > const &iParentageIDLookup, DaqProvenanceHelper const *daqProvenanceHelper)
Log< level::Warning, false > LogWarning
std::string const & eventHistoryTreeName()
RootFileEventFinder(RootTree &eventTree)
ParentageID const & mapParentageID(ParentageID const &phid) const
edm::propagate_const< std::shared_ptr< BranchIDListHelper > > branchIDListHelper_
void validateFile(InputType inputType, bool usingGoToEvent)
std::set< ProductProvenance > readProvenance(unsigned int) const override
IndexIntoFile::IndexIntoFileItr indexIntoFileIter() const
bool dropProcessesAndReorderStored(StoredProcessBlockHelper &storedProcessBlockHelper, std::set< std::string > const &processesToKeep, std::vector< unsigned int > const &nEntries, std::vector< unsigned int > &finalIndexToStoredIndex, std::vector< std::string > const &firstFileFinalProcesses) const
std::string const & newBranchToOldBranch(std::string const &newBranch) const
T first(std::pair< T, U > const &p)
std::unique_ptr< TTreeCache > trainCache(TTree *tree, InputFile &file, unsigned int cacheSize, char const *branchNames)
static ParentageRegistry * instance()
OldProvenanceReader(RootTree *rootTree, EntryDescriptionMap const &theMap, DaqProvenanceHelper const *daqProvenanceHelper)
SharedResourcesAcquirer acquirer_
IndexIntoFileItr findEventPosition(RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event) const
unsigned int const defaultLearningEntries
void setEventFinder(std::shared_ptr< EventFinder > ptr)
EntryNumber_t entry() const
std::vector< EventEntryInfo > infoVector_
void markBranchToBeDropped(bool dropDescendants, BranchDescription const &branch, std::set< BranchID > &branchesToDrop, std::map< BranchID, BranchID > const &droppedToKeptAlias) const
EventAuxiliary const & aux() const
edm::propagate_const< std::unique_ptr< StoredProcessBlockHelper > > storedProcessBlockHelper_
LuminosityBlockNumber_t peekAheadAtLumi() const
std::string const & fileIdentifierBranchName()
virtual signalslot::Signal< void(StreamContext const &, ModuleCallingContext const &)> const * postEventReadFromSourceSignal() const =0
unsigned int index() const
void setIsMergeable(BranchDescription &)
std::string const & processBlockHelperBranchName()
void readProvenanceAsync(WaitingTaskHolder task, ModuleCallingContext const *moduleCallingContext, unsigned int transitionIndex, std::atomic< const std::set< ProductProvenance > * > &writeTo) const override
EventNumber_t event() const
std::string const & moduleDescriptionMapBranchName()
bool insertMapped(value_type const &v)
void skipEventForward(int &phIndexOfSkippedEvent, RunNumber_t &runOfSkippedEvent, LuminosityBlockNumber_t &lumiOfSkippedEvent, EntryNumber_t &skippedEventEntry)
std::vector< EventProcessHistoryID > eventProcessHistoryIDs_
static Registry * instance()
DaqProvenanceHelper const * daqProvenanceHelper_
TypeWithDict const & wrappedType() const
void copyProduct(BranchDescription const &productdesc)
void readEventHistoryTree()
void readProvenanceAsync(WaitingTaskHolder task, ModuleCallingContext const *moduleCallingContext, unsigned int transitionIndex, std::atomic< const std::set< ProductProvenance > * > &writeTo) const override
void push(oneapi::tbb::task_group &iGroup, T &&iAction)
asynchronously pushes functor iAction into queue
void setEntryNumber(EntryNumber theEntryNumber)
void reportOpened(std::string const &inputType)