CMS 3D CMS Logo

RootEmbeddedFileSequence.cc
Go to the documentation of this file.
1 /*----------------------------------------------------------------------
2 ----------------------------------------------------------------------*/
3 #include "EmbeddedRootSource.h"
4 #include "InputFile.h"
5 #include "RootFile.h"
7 #include "RootTree.h"
8 
19 
20 #include "CLHEP/Random/RandFlat.h"
21 
22 #include <random>
23 #include <algorithm>
24 #include <atomic>
25 
26 namespace {
27  std::atomic<unsigned int> badFilesSkipped_{0};
28  auto operator"" _uz(unsigned long long i) -> std::size_t { return std::size_t{i}; } // uz will be in C++23
29 } // namespace
30 
31 namespace edm {
32  class EventPrincipal;
33 
38  input_(input),
39  orderedProcessHistoryIDs_(),
40  sequential_(pset.getUntrackedParameter<bool>("sequential", false)),
41  sameLumiBlock_(pset.getUntrackedParameter<bool>("sameLumiBlock", false)),
42  fptr_(nullptr),
43  eventsRemainingInFile_(0),
44  // The default value provided as the second argument to the getUntrackedParameter function call
45  // is not used when the ParameterSet has been validated and the parameters are not optional
46  // in the description. This is currently true when PoolSource is the primary input source.
47  // The modules that use PoolSource as a SecSource have not defined their fillDescriptions function
48  // yet, so the ParameterSet does not get validated yet. As soon as all the modules with a SecSource
49  // have defined descriptions, the defaults in the getUntrackedParameterSet function calls can
50  // and should be deleted from the code.
51  initialNumberOfEventsToSkip_(pset.getUntrackedParameter<unsigned int>("skipEvents", 0U)),
52  treeCacheSize_(pset.getUntrackedParameter<unsigned int>("cacheSize", roottree::defaultCacheSize)),
53  enablePrefetching_(false),
54  enforceGUIDInFileName_(pset.getUntrackedParameter<bool>("enforceGUIDInFileName", false)),
55  maxFileSkips_(pset.getUntrackedParameter<unsigned int>("maxFileSkips", std::min(3_uz, numberOfFiles()))) {
56  if (noFiles()) {
58  << "RootEmbeddedFileSequence no input files specified for secondary input source.\n";
59  }
60  //
61  // The SiteLocalConfig controls the TTreeCache size and the prefetching settings.
63  if (pSLC.isAvailable()) {
64  if (treeCacheSize_ != 0U && pSLC->sourceTTreeCacheSize()) {
65  treeCacheSize_ = *(pSLC->sourceTTreeCacheSize());
66  }
67  enablePrefetching_ = pSLC->enablePrefetching();
68  }
69 
70  // Set the pointer to the function that reads an event.
71  if (sameLumiBlock_) {
72  if (sequential_) {
74  } else {
76  }
77  } else {
78  if (sequential_) {
80  } else {
82  }
83  }
84 
85  // For the secondary input source we do not stage in.
86  if (sequential_) {
87  // We open the first file
88  if (!atFirstFile()) {
90  initFile(false);
91  }
92  assert(rootFile());
93  rootFile()->setAtEventEntry(IndexIntoFile::invalidEntry);
94  if (!sameLumiBlock_) {
96  }
97  } else {
98  // We randomly choose the first file to open.
99  // We cannot use the random number service yet.
100  std::ifstream f("/dev/urandom");
101  unsigned int seed;
102  f.read(reinterpret_cast<char*>(&seed), sizeof(seed));
103  std::default_random_engine dre(seed);
104  std::uniform_int_distribution<int> distribution(0, numberOfFiles() - 1);
105  while (!rootFile() && badFilesSkipped_ < maxFileSkips_) {
106  int offset = distribution(dre);
109  if (not rootFile()) {
110  ++badFilesSkipped_;
111  }
112  }
113  }
114  if (rootFile()) {
115  input_.productRegistryUpdate().updateFromInput(rootFile()->productRegistry()->productList());
116  } else {
117  throw Exception(errors::FileOpenError) << "RootEmbeddedFileSequence::RootEmbeddedFileSequence(): "
118  << " input file retries exhausted.\n";
119  }
120  }
121 
123 
125 
127  // delete the RootFile object.
128  if (rootFile()) {
129  rootFile().reset();
130  }
131  }
132 
134  initTheFile(skipBadFiles, false, nullptr, "mixingFiles", InputType::SecondarySource);
135  }
136 
138  std::shared_ptr<InputFile> filePtr) {
139  size_t currentIndexIntoFile = sequenceNumberOfFile();
140  return std::make_shared<RootFile>(fileNames()[0],
142  logicalFileName(),
143  filePtr,
144  input_.nStreams(),
147  input_.runHelper(),
152  currentIndexIntoFile,
157  }
158 
160  // offset is decremented by the number of events actually skipped.
161  bool completed = rootFile()->skipEntries(offset);
162  while (!completed) {
163  setAtNextFile();
164  if (noMoreFiles()) {
165  setAtFirstFile();
166  }
167  initFile(false);
168  assert(rootFile());
169  rootFile()->setAtEventEntry(IndexIntoFile::invalidEntry);
170  completed = rootFile()->skipEntries(offset);
171  }
172  }
173 
175  EventPrincipal& cache, size_t& fileNameHash, CLHEP::HepRandomEngine*, EventID const*, bool recycleFiles) {
176  assert(rootFile());
177  bool found = rootFile()->nextEventEntry();
178  if (found) {
179  found = rootFile()->readCurrentEvent(cache);
180  }
181  if (!found) {
182  setAtNextFile();
183  if (noMoreFiles()) {
184  if (recycleFiles) {
185  setAtFirstFile();
186  } else {
187  return false;
188  }
189  }
190  initFile(false);
191  assert(rootFile());
192  rootFile()->setAtEventEntry(IndexIntoFile::invalidEntry);
193  return readOneSequential(cache, fileNameHash, nullptr, nullptr, recycleFiles);
194  }
195  fileNameHash = lfnHash();
196  return true;
197  }
198 
200  EventPrincipal& cache, size_t& fileNameHash, CLHEP::HepRandomEngine*, EventID const* idp, bool recycleFiles) {
201  assert(idp);
202  EventID const& id = *idp;
205  if (offset > 0) {
206  assert(rootFile());
207  while (offset > 0) {
208  bool found = readOneSequentialWithID(cache, fileNameHash, nullptr, idp, recycleFiles);
209  if (!found) {
210  return false;
211  }
212  --offset;
213  }
214  }
215  assert(rootFile());
216  if (noMoreFiles() || rootFile()->indexIntoFileIter().run() != id.run() ||
217  rootFile()->indexIntoFileIter().lumi() != id.luminosityBlock()) {
218  bool found = skipToItem(id.run(), id.luminosityBlock(), 0, 0, false);
219  if (!found) {
220  return false;
221  }
222  }
223  assert(rootFile());
224  bool found = rootFile()->setEntryAtNextEventInLumi(id.run(), id.luminosityBlock());
225  if (found) {
226  found = rootFile()->readCurrentEvent(cache);
227  }
228  if (!found) {
229  found = skipToItemInNewFile(id.run(), id.luminosityBlock(), 0);
230  if (!found) {
231  return false;
232  }
233  return readOneSequentialWithID(cache, fileNameHash, nullptr, idp, recycleFiles);
234  }
235  fileNameHash = lfnHash();
236  return true;
237  }
238 
240  size_t& fileNameHash,
242  EventID const& id = idx.eventID();
243  bool found = skipToItem(id.run(), id.luminosityBlock(), id.event(), idx.fileNameHash());
244  if (!found) {
245  throw Exception(errors::NotFound) << "RootEmbeddedFileSequence::readOneSpecified(): Secondary Input files"
246  << " do not contain specified event:\n"
247  << id << " in file id " << idx.fileNameHash() << "\n";
248  }
249  assert(rootFile());
250  found = rootFile()->readCurrentEvent(cache);
251  assert(found);
252  fileNameHash = idx.fileNameHash();
253  if (fileNameHash == 0U) {
254  fileNameHash = lfnHash();
255  }
256  }
257 
259  EventPrincipal& cache, size_t& fileNameHash, CLHEP::HepRandomEngine* engine, EventID const*, bool) {
260  assert(rootFile());
261  assert(engine);
262  unsigned int currentSeqNumber = sequenceNumberOfFile();
263  while (eventsRemainingInFile_ == 0) {
264  bool opened{false};
265  while (!opened && badFilesSkipped_ < maxFileSkips_) {
266  unsigned int newSeqNumber = CLHEP::RandFlat::shootInt(engine, fileCatalogItems().size());
267  setAtFileSequenceNumber(newSeqNumber);
268  if (newSeqNumber != currentSeqNumber) {
270  currentSeqNumber = newSeqNumber;
271  }
272  if (rootFile()) {
273  eventsRemainingInFile_ = rootFile()->eventTree().entries();
274  if (eventsRemainingInFile_ == 0) {
275  if (!input_.skipBadFiles()) {
276  throw Exception(errors::NotFound) << "RootEmbeddedFileSequence::readOneRandom(): Secondary Input file "
277  << fileNames()[0] << " contains no events.\n";
278  }
279  LogWarning("RootEmbeddedFileSequence") << "RootEmbeddedFileSequence::readOneRandom(): Secondary Input file "
280  << fileNames()[0] << " contains no events and will be skipped.\n";
281  ++badFilesSkipped_;
282  } else {
283  opened = true;
284  }
285  } else {
286  if (newSeqNumber != currentSeqNumber) {
287  ++badFilesSkipped_;
288  }
289  }
290  }
291  if (not opened) {
292  throw Exception(errors::FileOpenError) << "RootEmbeddedFileSequence::readOneRandom(): "
293  << " input file retries exhausted.\n";
294  }
295  rootFile()->setAtEventEntry(CLHEP::RandFlat::shootInt(engine, eventsRemainingInFile_) - 1);
296  }
297  rootFile()->nextEventEntry();
298 
299  bool found = rootFile()->readCurrentEvent(cache);
300  if (!found) {
301  rootFile()->setAtEventEntry(0);
302  found = rootFile()->readCurrentEvent(cache);
303  assert(found);
304  }
305  fileNameHash = lfnHash();
307  return true;
308  }
309 
311  size_t& fileNameHash,
312  CLHEP::HepRandomEngine* engine,
313  EventID const* idp,
314  bool recycleFiles) {
315  assert(engine);
316  assert(idp);
317  EventID const& id = *idp;
318  if (noMoreFiles() || !rootFile() || rootFile()->indexIntoFileIter().run() != id.run() ||
319  rootFile()->indexIntoFileIter().lumi() != id.luminosityBlock()) {
320  bool found = skipToItem(id.run(), id.luminosityBlock(), 0);
321  if (!found) {
322  return false;
323  }
324  int eventsInLumi = 0;
325  assert(rootFile());
326  while (rootFile()->setEntryAtNextEventInLumi(id.run(), id.luminosityBlock()))
327  ++eventsInLumi;
328  found = skipToItem(id.run(), id.luminosityBlock(), 0);
329  assert(found);
330  int eventInLumi = CLHEP::RandFlat::shootInt(engine, eventsInLumi);
331  for (int i = 0; i < eventInLumi; ++i) {
332  bool foundEventInLumi = rootFile()->setEntryAtNextEventInLumi(id.run(), id.luminosityBlock());
333  assert(foundEventInLumi);
334  }
335  }
336  assert(rootFile());
337  bool found = rootFile()->setEntryAtNextEventInLumi(id.run(), id.luminosityBlock());
338  if (found) {
339  found = rootFile()->readCurrentEvent(cache);
340  }
341  if (!found) {
342  found = rootFile()->setEntryAtItem(id.run(), id.luminosityBlock(), 0);
343  if (!found) {
344  return false;
345  }
346  return readOneRandomWithID(cache, fileNameHash, engine, idp, recycleFiles);
347  }
348  fileNameHash = lfnHash();
349  return true;
350  }
351 
353  size_t& fileNameHash,
354  CLHEP::HepRandomEngine* engine,
355  EventID const* id,
356  bool recycleFiles) {
357  assert(!sameLumiBlock_ || id != nullptr);
358  assert(sequential_ || engine != nullptr);
359  return (this->*fptr_)(cache, fileNameHash, engine, id, recycleFiles);
360  }
361 
363  desc.addUntracked<bool>("sequential", false)
364  ->setComment(
365  "True: loopEvents() reads events sequentially from beginning of first file.\n"
366  "False: loopEvents() first reads events beginning at random event. New files also chosen randomly");
367  desc.addUntracked<bool>("sameLumiBlock", false)
368  ->setComment(
369  "True: loopEvents() reads events only in same lumi as the specified event.\n"
370  "False: loopEvents() reads events regardless of lumi.");
371  desc.addUntracked<unsigned int>("skipEvents", 0U)
372  ->setComment(
373  "Skip the first 'skipEvents' events. Used only if 'sequential' is True and 'sameLumiBlock' is False");
374  desc.addUntracked<unsigned int>("maxFileSkips")
375  ->setComment(
376  "How many files to try if 'sequential' is False and 'skipBadFiles' is True.\n"
377  "Defaults to 3 (or # of files if smaller).");
378  desc.addUntracked<unsigned int>("cacheSize", roottree::defaultCacheSize)
379  ->setComment("Size of ROOT TTree prefetch cache. Affects performance.");
380  desc.addUntracked<bool>("enforceGUIDInFileName", false)
381  ->setComment(
382  "True: file name part is required to be equal to the GUID of the file\n"
383  "False: file name can be anything");
384  }
385 } // namespace edm
edm::RootInputFileSequence::noMoreFiles
bool noMoreFiles() const
Definition: RootInputFileSequence.h:68
edm::RootEmbeddedFileSequence::initFile_
void initFile_(bool skipBadFiles) override
Definition: RootEmbeddedFileSequence.cc:133
ThinnedAssociationsHelper.h
electrons_cff.bool
bool
Definition: electrons_cff.py:366
mps_fire.i
i
Definition: mps_fire.py:428
input
static const std::string input
Definition: EdmProvDump.cc:48
edm::RootInputFileSequence::setAtFirstFile
void setAtFirstFile()
Definition: RootInputFileSequence.h:73
mps_splice.numberOfFiles
numberOfFiles
Definition: mps_splice.py:59
MessageLogger.h
funct::false
false
Definition: Factorize.h:29
edm::EmbeddedRootSource::productSelectorRules
ProductSelectorRules const & productSelectorRules() const
Definition: EmbeddedRootSource.h:46
edm::RootInputFileSequence::setAtFileSequenceNumber
void setAtFileSequenceNumber(size_t offset)
Definition: RootInputFileSequence.h:74
getEcalConditions_orcoffint2r_cff.catalog
catalog
Definition: getEcalConditions_orcoffint2r_cff.py:40
edm::RootEmbeddedFileSequence::skipEntries
void skipEntries(unsigned int offset)
Definition: RootEmbeddedFileSequence.cc:159
f
double f[11][100]
Definition: MuScleFitUtils.cc:78
EmbeddedRootSource.h
BranchIDListHelper.h
edm::RootEmbeddedFileSequence::eventsRemainingInFile_
int eventsRemainingInFile_
Definition: RootEmbeddedFileSequence.h:69
edm
HLT enums.
Definition: AlignableModifier.h:19
edm::min
EventID const & min(EventID const &lh, EventID const &rh)
Definition: EventID.h:116
edm::RootInputFileSequence::atFirstFile
bool atFirstFile() const
Definition: RootInputFileSequence.h:66
edm::RootEmbeddedFileSequence::~RootEmbeddedFileSequence
~RootEmbeddedFileSequence() override
Definition: RootEmbeddedFileSequence.cc:122
edm::EmbeddedRootSource::processHistoryRegistryForUpdate
ProcessHistoryRegistry & processHistoryRegistryForUpdate()
Definition: VectorInputSource.h:57
BranchID.h
edm::RootEmbeddedFileSequence::sameLumiBlock_
bool sameLumiBlock_
Definition: RootEmbeddedFileSequence.h:67
edm::IndexIntoFile::invalidEntry
static constexpr EntryNumber_t invalidEntry
Definition: IndexIntoFile.h:236
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
edm::RootEmbeddedFileSequence::readOneEvent
bool readOneEvent(EventPrincipal &cache, size_t &fileNameHash, CLHEP::HepRandomEngine *, EventID const *id, bool recycleFiles)
Definition: RootEmbeddedFileSequence.cc:352
edm::RootInputFileSequence::lfnHash
size_t lfnHash() const
Definition: RootInputFileSequence.h:87
edm::ProductRegistry::updateFromInput
void updateFromInput(ProductList const &other)
Definition: ProductRegistry.cc:209
RootTree.h
cms::cuda::assert
assert(be >=bs)
edm::InputFileCatalog
Definition: InputFileCatalog.h:32
edm::errors::NoSecondaryFiles
Definition: EDMException.h:60
InputFileCatalog.h
remoteMonitoring_LED_IterMethod_cfg.skipBadFiles
skipBadFiles
Definition: remoteMonitoring_LED_IterMethod_cfg.py:24
edm::RootInputFileSequence::logicalFileName
std::string const & logicalFileName() const
Definition: RootInputFileSequence.h:81
edm::errors::NotFound
Definition: EDMException.h:57
edm::SecondaryEventIDAndFileInfo
Definition: SecondaryEventIDAndFileInfo.h:8
newFWLiteAna.found
found
Definition: newFWLiteAna.py:118
edm::Service::isAvailable
bool isAvailable() const
Definition: Service.h:40
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
edm::errors::FileOpenError
Definition: EDMException.h:49
heavyIonCSV_trainingSettings.idx
idx
Definition: heavyIonCSV_trainingSettings.py:5
edm::EmbeddedRootSource::skipBadFiles
bool skipBadFiles() const
Definition: EmbeddedRootSource.h:42
edm::RootEmbeddedFileSequence::readOneSpecified
void readOneSpecified(EventPrincipal &cache, size_t &fileNameHash, SecondaryEventIDAndFileInfo const &id)
Definition: RootEmbeddedFileSequence.cc:239
fileCollector.seed
seed
Definition: fileCollector.py:127
edm::RootInputFileSequence::initFile
void initFile(bool skipBadFiles)
Definition: RootInputFileSequence.h:56
edm::RootEmbeddedFileSequence::enablePrefetching_
bool enablePrefetching_
Definition: RootEmbeddedFileSequence.h:72
edm::RootEmbeddedFileSequence::initialNumberOfEventsToSkip_
int initialNumberOfEventsToSkip_
Definition: RootEmbeddedFileSequence.h:70
BXlumiParameters_cfi.lumi
lumi
Definition: BXlumiParameters_cfi.py:6
edm::RootInputFileSequence::RootFileSharedPtr
std::shared_ptr< RootFile > RootFileSharedPtr
Definition: RootInputFileSequence.h:55
edm::EmbeddedRootSource::runHelper
RunHelperBase * runHelper()
Definition: EmbeddedRootSource.h:47
edm::EventPrincipal
Definition: EventPrincipal.h:46
edm::RootEmbeddedFileSequence::readOneSequentialWithID
bool readOneSequentialWithID(EventPrincipal &cache, size_t &fileNameHash, CLHEP::HepRandomEngine *, EventID const *id, bool)
Definition: RootEmbeddedFileSequence.cc:199
edm::RootEmbeddedFileSequence::closeFile_
void closeFile_() override
Definition: RootEmbeddedFileSequence.cc:126
Service.h
edm::RootInputFileSequence::setAtNextFile
void setAtNextFile()
Definition: RootInputFileSequence.h:76
edm::roottree::defaultCacheSize
unsigned const int defaultCacheSize
Definition: RootTree.h:47
ParameterSetDescription.h
utilities.cache
def cache(function)
Definition: utilities.py:3
mitigatedMETSequence_cff.U
U
Definition: mitigatedMETSequence_cff.py:36
edm::RootInputFileSequence
Definition: RootInputFileSequence.h:32
edm::ParameterSet
Definition: ParameterSet.h:47
edm::EmbeddedRootSource::bypassVersionCheck
bool bypassVersionCheck() const
Definition: EmbeddedRootSource.h:43
edmPickEvents.event
event
Definition: edmPickEvents.py:273
edm::RootInputFileSequence::skipToItemInNewFile
bool skipToItemInNewFile(RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event)
Definition: RootInputFileSequence.cc:132
edm::RootInputFileSequence::noFiles
bool noFiles() const
Definition: RootInputFileSequence.h:69
edm::EmbeddedRootSource
Definition: EmbeddedRootSource.h:34
edm::RootInputFileSequence::rootFile
std::shared_ptr< RootFile const > rootFile() const
Definition: RootInputFileSequence.h:90
edm::Service
Definition: Service.h:30
createfilelist.int
int
Definition: createfilelist.py:10
edm::RootEmbeddedFileSequence::orderedProcessHistoryIDs_
std::vector< ProcessHistoryID > orderedProcessHistoryIDs_
Definition: RootEmbeddedFileSequence.h:64
edm::EmbeddedRootSource::treeMaxVirtualSize
int treeMaxVirtualSize() const
Definition: EmbeddedRootSource.h:45
edm::RootEmbeddedFileSequence::readOneRandom
bool readOneRandom(EventPrincipal &cache, size_t &fileNameHash, CLHEP::HepRandomEngine *, EventID const *, bool)
Definition: RootEmbeddedFileSequence.cc:258
edm::RootEmbeddedFileSequence::makeRootFile
RootFileSharedPtr makeRootFile(std::shared_ptr< InputFile > filePtr) override
Definition: RootEmbeddedFileSequence.cc:137
RootFile.h
InputFile.h
edm::RootEmbeddedFileSequence::readOneSequential
bool readOneSequential(EventPrincipal &cache, size_t &fileNameHash, CLHEP::HepRandomEngine *, EventID const *, bool recycleFiles)
Definition: RootEmbeddedFileSequence.cc:174
edm::RootEmbeddedFileSequence::input_
EmbeddedRootSource & input_
Definition: RootEmbeddedFileSequence.h:62
edm::RootEmbeddedFileSequence::fptr_
bool(RootEmbeddedFileSequence::* fptr_)(EventPrincipal &, size_t &, CLHEP::HepRandomEngine *, EventID const *, bool)
Definition: RootEmbeddedFileSequence.h:68
edm::RootEmbeddedFileSequence::endJob
void endJob()
Definition: RootEmbeddedFileSequence.cc:124
edm::RootEmbeddedFileSequence::treeCacheSize_
unsigned int treeCacheSize_
Definition: RootEmbeddedFileSequence.h:71
edm::RootEmbeddedFileSequence::maxFileSkips_
unsigned int maxFileSkips_
Definition: RootEmbeddedFileSequence.h:74
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
std
Definition: JetResolutionObject.h:76
writedatasetfile.run
run
Definition: writedatasetfile.py:27
edm::RootEmbeddedFileSequence::readOneRandomWithID
bool readOneRandomWithID(EventPrincipal &cache, size_t &fileNameHash, CLHEP::HepRandomEngine *, EventID const *id, bool)
Definition: RootEmbeddedFileSequence.cc:310
InputSource.h
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:29
Exception
Definition: hltDiff.cc:245
edm::RootEmbeddedFileSequence::sequential_
bool sequential_
Definition: RootEmbeddedFileSequence.h:66
edm::InputType::SecondarySource
edm::RootEmbeddedFileSequence::RootEmbeddedFileSequence
RootEmbeddedFileSequence(ParameterSet const &pset, EmbeddedRootSource &input, InputFileCatalog const &catalog)
Definition: RootEmbeddedFileSequence.cc:34
edm::RootInputFileSequence::initTheFile
void initTheFile(bool skipBadFiles, bool deleteIndexIntoFile, InputSource *input, char const *inputTypeName, InputType inputType)
Definition: RootInputFileSequence.cc:182
edm::EmbeddedRootSource::productRegistryUpdate
ProductRegistry & productRegistryUpdate()
Definition: VectorInputSource.h:55
edm::RootInputFileSequence::indexesIntoFiles
std::vector< std::shared_ptr< IndexIntoFile > > const & indexesIntoFiles() const
Definition: RootInputFileSequence.h:85
edm::EmbeddedRootSource::nStreams
unsigned int nStreams() const
Definition: EmbeddedRootSource.h:44
edm::RootEmbeddedFileSequence::fillDescription
static void fillDescription(ParameterSetDescription &desc)
Definition: RootEmbeddedFileSequence.cc:362
edm::RootInputFileSequence::numberOfFiles
size_t numberOfFiles() const
Definition: RootInputFileSequence.h:71
ParameterSet.h
edm::EventID
Definition: EventID.h:31
hltrates_dqm_sourceclient-live_cfg.offset
offset
Definition: hltrates_dqm_sourceclient-live_cfg.py:82
RootEmbeddedFileSequence.h
edm::RootInputFileSequence::sequenceNumberOfFile
size_t sequenceNumberOfFile() const
Definition: RootInputFileSequence.h:70
edm::RootInputFileSequence::fileNames
std::vector< std::string > const & fileNames() const
Definition: RootInputFileSequence.h:79
edm::ProcessConfiguration
Definition: ProcessConfiguration.h:14
edm::RootEmbeddedFileSequence::enforceGUIDInFileName_
bool enforceGUIDInFileName_
Definition: RootEmbeddedFileSequence.h:73
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
edm::RootInputFileSequence::skipToItem
bool skipToItem(RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event, size_t fileNameHash=0U, bool currentFileFirst=true)
Definition: RootInputFileSequence.cc:150
SiteLocalConfig.h
findQualityFiles.size
size
Write out results.
Definition: findQualityFiles.py:443
edm::RootInputFileSequence::fileCatalogItems
std::vector< FileCatalogItem > const & fileCatalogItems() const
Definition: RootInputFileSequence.cc:35