CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
DQMRootSource Class Reference
Inheritance diagram for DQMRootSource:
edm::InputSource

Classes

class  RunLumiPHIDKey
 
class  RunPHIDKey
 

Public Member Functions

 DQMRootSource (edm::ParameterSet const &, const edm::InputSourceDescription &)
 
 ~DQMRootSource () override
 
- Public Member Functions inherited from edm::InputSource
std::shared_ptr< ActivityRegistryactReg () const
 Accessor for Activity Registry. More...
 
std::shared_ptr< BranchIDListHelper const > branchIDListHelper () const
 Accessors for branchIDListHelper. More...
 
std::shared_ptr< BranchIDListHelper > & branchIDListHelper ()
 
void closeFile (FileBlock *, bool cleaningUpAfterException)
 close current file More...
 
void doBeginJob ()
 Called by framework at beginning of job. More...
 
virtual void doBeginLumi (LuminosityBlockPrincipal &lbp, ProcessContext const *)
 Called by framework at beginning of lumi block. More...
 
virtual void doBeginRun (RunPrincipal &rp, ProcessContext const *)
 Called by framework at beginning of run. More...
 
void doEndJob ()
 Called by framework at end of job. More...
 
ProcessingController::ForwardState forwardState () const
 
bool goToEvent (EventID const &eventID)
 
 InputSource (ParameterSet const &, InputSourceDescription const &)
 Constructor. More...
 
 InputSource (InputSource const &)=delete
 
void issueReports (EventID const &eventID, StreamID streamID)
 issue an event report More...
 
LuminosityBlockNumber_t luminosityBlock () const
 Accessor for current luminosity block number. More...
 
std::shared_ptr< LuminosityBlockAuxiliaryluminosityBlockAuxiliary () const
 Called by the framework to merge or insert lumi in principal cache. More...
 
int maxEvents () const
 
int maxLuminosityBlocks () const
 
ModuleDescription const & moduleDescription () const
 Accessor for 'module' description. More...
 
ItemType nextItemType ()
 Advances the source to the next item. More...
 
InputSourceoperator= (InputSource const &)=delete
 
ProcessConfiguration const & processConfiguration () const
 Accessor for Process Configuration. More...
 
std::string const & processGUID () const
 Accessor for global process identifier. More...
 
ProcessHistoryRegistry const & processHistoryRegistry () const
 Accessors for process history registry. More...
 
ProcessHistoryRegistryprocessHistoryRegistry ()
 
ProcessingMode processingMode () const
 RunsLumisAndEvents (default), RunsAndLumis, or Runs. More...
 
std::shared_ptr< ProductRegistry const > productRegistry () const
 Accessors for product registry. More...
 
std::shared_ptr< ProductRegistry > & productRegistry ()
 
bool randomAccess () const
 
void readAndMergeLumi (LuminosityBlockPrincipal &lbp)
 Read next luminosity block (same as a prior lumi) More...
 
void readAndMergeRun (RunPrincipal &rp)
 Read next run (same as a prior run) More...
 
void readEvent (EventPrincipal &ep, StreamContext &)
 Read next event. More...
 
bool readEvent (EventPrincipal &ep, EventID const &, StreamContext &)
 Read a specific event. More...
 
std::unique_ptr< FileBlockreadFile ()
 Read next file. More...
 
void readLuminosityBlock (LuminosityBlockPrincipal &lumiPrincipal, HistoryAppender &historyAppender)
 Read next luminosity block (new lumi) More...
 
std::shared_ptr< LuminosityBlockAuxiliaryreadLuminosityBlockAuxiliary ()
 Read next luminosity block Auxilary. More...
 
void readRun (RunPrincipal &runPrincipal, HistoryAppender &historyAppender)
 Read next run (new run) More...
 
std::shared_ptr< RunAuxiliaryreadRunAuxiliary ()
 Read next run Auxiliary. More...
 
ProcessHistoryID const & reducedProcessHistoryID () const
 
virtual void registerProducts ()
 Register any produced products. More...
 
int remainingEvents () const
 
int remainingLuminosityBlocks () const
 
void repeat ()
 Reset the remaining number of events/lumis to the maximum number. More...
 
std::pair< SharedResourcesAcquirer *, std::recursive_mutex * > resourceSharedWithDelayedReader ()
 Returns nullptr if no resource shared between the Source and a DelayedReader. More...
 
ProcessingController::ReverseState reverseState () const
 
void rewind ()
 Begin again at the first event. More...
 
RunNumber_t run () const
 Accessor for current run number. More...
 
std::shared_ptr< RunAuxiliaryrunAuxiliary () const
 Called by the framework to merge or insert run in principal cache. More...
 
void setLuminosityBlockNumber_t (LuminosityBlockNumber_t lb)
 Set the luminosity block ID. More...
 
void setRunNumber (RunNumber_t r)
 Set the run number. More...
 
void skipEvents (int offset)
 
std::shared_ptr< ThinnedAssociationsHelper const > thinnedAssociationsHelper () const
 Accessors for thinnedAssociationsHelper. More...
 
std::shared_ptr< ThinnedAssociationsHelper > & thinnedAssociationsHelper ()
 
Timestamp const & timestamp () const
 Accessor for the current time, as seen by the input source. More...
 
virtual ~InputSource () noexcept(false)
 Destructor. More...
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::InputSource
static const std::string & baseType ()
 
static void fillDescription (ParameterSetDescription &desc)
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 

Private Member Functions

void closeFile_ () override
 
 DQMRootSource (const DQMRootSource &)=delete
 
edm::InputSource::ItemType getNextItemType () override
 
void logFileAction (char const *msg, char const *fileName) const
 
const DQMRootSourceoperator= (const DQMRootSource &)=delete
 
void readElements ()
 
void readEvent_ (edm::EventPrincipal &) override
 
std::unique_ptr< edm::FileBlockreadFile_ () override
 
void readLuminosityBlock_ (edm::LuminosityBlockPrincipal &lbCache) override
 
std::shared_ptr< edm::LuminosityBlockAuxiliaryreadLuminosityBlockAuxiliary_ () override
 
void readNextItemType ()
 
void readRun_ (edm::RunPrincipal &rpCache) override
 
std::shared_ptr< edm::RunAuxiliaryreadRunAuxiliary_ () override
 
bool setupFile (unsigned int iIndex)
 
bool skipIt (edm::RunNumber_t, edm::LuminosityBlockNumber_t) const
 

Private Attributes

edm::InputFileCatalog m_catalog
 
std::unique_ptr< TFile > m_file
 
size_t m_fileIndex
 
unsigned int m_filterOnRun
 
std::vector< edm::ProcessHistoryIDm_historyIDs
 
edm::JobReport::Token m_jrToken
 
bool m_justOpenedFileSoNeedToGenerateRunTransition
 
unsigned int m_lastSeenLumi2
 
edm::ProcessHistoryID m_lastSeenReducedPHID
 
edm::ProcessHistoryID m_lastSeenReducedPHID2
 
unsigned int m_lastSeenRun
 
unsigned int m_lastSeenRun2
 
edm::LuminosityBlockAuxiliary m_lumiAux
 
std::set< MonitorElement * > m_lumiElements
 
std::vector< edm::LuminosityBlockRangem_lumisToProcess
 
std::list< unsigned int >::iterator m_nextIndexItr
 
edm::InputSource::ItemType m_nextItemType
 
std::list< unsigned int > m_orderedIndices
 
std::list< unsigned int >::iterator m_presentIndexItr
 
std::string m_presentlyOpenFileName
 
std::vector< edm::ProcessHistoryIDm_reducedHistoryIDs
 
edm::RunAuxiliary m_runAux
 
std::set< MonitorElement * > m_runElements
 
std::vector< RunLumiToRange > m_runlumiToRange
 
std::vector< edm::RunNumber_tm_runsToProcess
 
bool m_shouldReadMEs
 
bool m_skipBadFiles
 
std::vector< std::shared_ptr< TreeReaderBase > > m_treeReaders
 
std::vector< TTree * > m_trees
 

Additional Inherited Members

- Public Types inherited from edm::InputSource
enum  ItemType {
  IsInvalid, IsStop, IsFile, IsRun,
  IsLumi, IsEvent, IsRepeat, IsSynchronize
}
 
enum  ProcessingMode { Runs, RunsAndLumis, RunsLumisAndEvents }
 
- Public Attributes inherited from edm::InputSource
signalslot::Signal< void(StreamContext const &, ModuleCallingContext const &)> postEventReadFromSourceSignal_
 
signalslot::Signal< void(StreamContext const &, ModuleCallingContext const &)> preEventReadFromSourceSignal_
 
- Protected Member Functions inherited from edm::InputSource
virtual void beginJob ()
 Begin protected makes it easier to do template programming. More...
 
void decreaseRemainingEventsBy (int iSkipped)
 
bool eventCached () const
 
bool newLumi () const
 
bool newRun () const
 
ProcessHistoryRegistryprocessHistoryRegistryForUpdate ()
 
ProductRegistryproductRegistryUpdate ()
 
void reset () const
 
void resetEventCached ()
 
void resetLuminosityBlockAuxiliary (bool isNewLumi=true) const
 
void resetNewLumi ()
 
void resetNewRun ()
 
void resetRunAuxiliary (bool isNewRun=true) const
 
void setEventCached ()
 Called by the framework to merge or ached() const {return eventCached_;}. More...
 
void setLuminosityBlockAuxiliary (LuminosityBlockAuxiliary *lbp)
 
void setNewLumi ()
 
void setNewRun ()
 
void setRunAuxiliary (RunAuxiliary *rp)
 
void setTimestamp (Timestamp const &theTime)
 To set the current time, as seen by the input source. More...
 
virtual void skip (int offset)
 
ItemType state () const
 

Detailed Description

Definition at line 294 of file DQMRootSource.cc.

Constructor & Destructor Documentation

DQMRootSource::DQMRootSource ( edm::ParameterSet const &  iPSet,
const edm::InputSourceDescription iDesc 
)

Definition at line 429 of file DQMRootSource.cc.

References edm::InputFileCatalog::fileNames(), edm::InputSource::IsStop, kFloatIndex, kIntIndex, kStringIndex, kTH1DIndex, kTH1FIndex, kTH1SIndex, kTH2DIndex, kTH2FIndex, kTH2SIndex, kTH3FIndex, kTProfile2DIndex, kTProfileIndex, m_catalog, m_fileIndex, m_lumisToProcess, m_nextItemType, m_runsToProcess, m_treeReaders, and edm::sortAndRemoveOverlaps().

430  : edm::InputSource(iPSet, iDesc),
431  m_catalog(iPSet.getUntrackedParameter<std::vector<std::string> >("fileNames"),
432  iPSet.getUntrackedParameter<std::string>("overrideCatalog")),
434  m_fileIndex(0),
435  m_trees(kNIndicies, static_cast<TTree*>(nullptr)),
436  m_treeReaders(kNIndicies, std::shared_ptr<TreeReaderBase>()),
438  m_lastSeenRun(0),
440  m_lastSeenRun2(0),
441  m_lastSeenLumi2(0),
442  m_filterOnRun(iPSet.getUntrackedParameter<unsigned int>("filterOnRun", 0)),
443  m_skipBadFiles(iPSet.getUntrackedParameter<bool>("skipBadFiles", false)),
444  m_lumisToProcess(iPSet.getUntrackedParameter<std::vector<edm::LuminosityBlockRange> >(
445  "lumisToProcess", std::vector<edm::LuminosityBlockRange>())),
447  m_shouldReadMEs(true) {
449  for (std::vector<edm::LuminosityBlockRange>::const_iterator itr = m_lumisToProcess.begin();
450  itr != m_lumisToProcess.end();
451  ++itr)
452  m_runsToProcess.push_back(itr->startRun());
453 
454  if (m_fileIndex == m_catalog.fileNames().size()) {
456  } else {
457  m_treeReaders[kIntIndex].reset(new TreeSimpleReader<Long64_t>());
458  m_treeReaders[kFloatIndex].reset(new TreeSimpleReader<double>());
459  m_treeReaders[kStringIndex].reset(new TreeObjectReader<std::string>());
460  m_treeReaders[kTH1FIndex].reset(new TreeObjectReader<TH1F>());
461  m_treeReaders[kTH1SIndex].reset(new TreeObjectReader<TH1S>());
462  m_treeReaders[kTH1DIndex].reset(new TreeObjectReader<TH1D>());
463  m_treeReaders[kTH2FIndex].reset(new TreeObjectReader<TH2F>());
464  m_treeReaders[kTH2SIndex].reset(new TreeObjectReader<TH2S>());
465  m_treeReaders[kTH2DIndex].reset(new TreeObjectReader<TH2D>());
466  m_treeReaders[kTH3FIndex].reset(new TreeObjectReader<TH3F>());
467  m_treeReaders[kTProfileIndex].reset(new TreeObjectReader<TProfile>());
468  m_treeReaders[kTProfile2DIndex].reset(new TreeObjectReader<TProfile2D>());
469  }
470 }
edm::InputSource::ItemType m_nextItemType
unsigned int m_lastSeenRun2
std::vector< edm::RunNumber_t > m_runsToProcess
unsigned int m_filterOnRun
bool m_justOpenedFileSoNeedToGenerateRunTransition
edm::InputFileCatalog m_catalog
edm::ProcessHistoryID m_lastSeenReducedPHID2
std::vector< TTree * > m_trees
std::vector< std::string > const & fileNames() const
unsigned int m_lastSeenLumi2
std::vector< std::shared_ptr< TreeReaderBase > > m_treeReaders
std::vector< edm::LuminosityBlockRange > m_lumisToProcess
edm::ProcessHistoryID m_lastSeenReducedPHID
std::vector< EventRange > & sortAndRemoveOverlaps(std::vector< EventRange > &eventRange)
Definition: EventRange.cc:98
unsigned int m_lastSeenRun
DQMRootSource::~DQMRootSource ( )
override

Definition at line 477 of file DQMRootSource.cc.

References logFileAction(), m_file, and m_presentlyOpenFileName.

477  {
478  if (m_file.get() != nullptr && m_file->IsOpen()) {
479  m_file->Close();
480  logFileAction(" Closed file ", m_presentlyOpenFileName.c_str());
481  }
482 }
void logFileAction(char const *msg, char const *fileName) const
std::unique_ptr< TFile > m_file
std::string m_presentlyOpenFileName
DQMRootSource::DQMRootSource ( const DQMRootSource )
privatedelete

Member Function Documentation

void DQMRootSource::closeFile_ ( )
overrideprivatevirtual

Reimplemented from edm::InputSource.

Definition at line 647 of file DQMRootSource.cc.

References edm::JobReport::inputFileClosed(), m_file, m_jrToken, and edm::Primary.

647  {
648  if (m_file.get() == nullptr) {
649  return;
650  }
653 }
edm::JobReport::Token m_jrToken
std::unique_ptr< TFile > m_file
void inputFileClosed(InputType inputType, Token fileToken)
Definition: JobReport.cc:376
void DQMRootSource::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 413 of file DQMRootSource.cc.

References edm::ConfigurationDescriptions::addDefault(), edm::ParameterSetDescription::addUntracked(), and AlCaHLTBitMon_QueryRunRegistry::string.

413  {
415  desc.addUntracked<std::vector<std::string> >("fileNames")->setComment("Names of files to be processed.");
416  desc.addUntracked<unsigned int>("filterOnRun", 0)->setComment("Just limit the process to the selected run.");
417  desc.addUntracked<bool>("skipBadFiles", false)->setComment("Skip the file if it is not valid");
418  desc.addUntracked<std::string>("overrideCatalog", std::string())
419  ->setComment("An alternate file catalog to use instead of the standard site one.");
420  std::vector<edm::LuminosityBlockRange> defaultLumis;
421  desc.addUntracked<std::vector<edm::LuminosityBlockRange> >("lumisToProcess", defaultLumis)
422  ->setComment("Skip any lumi inside the specified run:lumi range.");
423 
424  descriptions.addDefault(desc);
425 }
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
void addDefault(ParameterSetDescription const &psetDescription)
edm::InputSource::ItemType DQMRootSource::getNextItemType ( )
overrideprivatevirtual

Implements edm::InputSource.

Definition at line 503 of file DQMRootSource.cc.

References m_nextItemType.

503  {
504  //std::cout <<"getNextItemType "<<m_nextItemType<<std::endl;
505  return m_nextItemType;
506 }
edm::InputSource::ItemType m_nextItemType
void DQMRootSource::logFileAction ( char const *  msg,
char const *  fileName 
) const
private

Definition at line 1074 of file DQMRootSource.cc.

References DEFINE_FWK_INPUT_SOURCE, MillePedeFileConverter_cfg::fileName, and edm::FlushMessageLog().

Referenced by setupFile(), and ~DQMRootSource().

1074  {
1075  edm::LogAbsolute("fileAction") << std::setprecision(0) << edm::TimeOfDay() << msg << fileName;
1077 }
void FlushMessageLog()
tuple msg
Definition: mps_check.py:285
const DQMRootSource& DQMRootSource::operator= ( const DQMRootSource )
privatedelete
void DQMRootSource::readElements ( )
private

Definition at line 655 of file DQMRootSource.cc.

References kNoTypesStored, m_orderedIndices, m_presentIndexItr, m_reducedHistoryIDs, RunInfoPI::m_run, m_runlumiToRange, m_shouldReadMEs, m_treeReaders, DQM::reader, and skipIt().

Referenced by readLuminosityBlock_(), and readRun_().

655  {
657  RunLumiToRange runLumiRange = m_runlumiToRange[*m_presentIndexItr];
658  bool shouldContinue = false;
659  do {
660  shouldContinue = false;
662  while (m_presentIndexItr != m_orderedIndices.end() &&
665 
666  if (runLumiRange.m_type != kNoTypesStored) {
667  std::shared_ptr<TreeReaderBase> reader = m_treeReaders[runLumiRange.m_type];
668  ULong64_t index = runLumiRange.m_firstIndex;
669  ULong64_t endIndex = runLumiRange.m_lastIndex + 1;
670  for (; index != endIndex; ++index) {
671  bool isLumi = runLumiRange.m_lumi != 0;
672  if (m_shouldReadMEs)
673  reader->read(index, *store, isLumi);
674 
675  //std::cout << runLumiRange.m_run << " " << runLumiRange.m_lumi <<" "<<index<< " " << runLumiRange.m_type << std::endl;
676  }
677  }
678 
679  if (m_presentIndexItr != m_orderedIndices.end()) {
680  //are there more parts to this same run/lumi?
681  const RunLumiToRange nextRunLumiRange = m_runlumiToRange[*m_presentIndexItr];
682  //continue to the next item if that item is either
683  if ((m_reducedHistoryIDs.at(nextRunLumiRange.m_historyIDIndex) ==
684  m_reducedHistoryIDs.at(runLumiRange.m_historyIDIndex)) &&
685  (nextRunLumiRange.m_run == runLumiRange.m_run) && (nextRunLumiRange.m_lumi == runLumiRange.m_lumi)) {
686  shouldContinue = true;
687  runLumiRange = nextRunLumiRange;
688  }
689  }
690  } while (shouldContinue);
691 }
std::list< unsigned int >::iterator m_presentIndexItr
reader
Definition: DQM.py:105
std::vector< edm::ProcessHistoryID > m_reducedHistoryIDs
std::vector< RunLumiToRange > m_runlumiToRange
std::list< unsigned int > m_orderedIndices
std::vector< std::shared_ptr< TreeReaderBase > > m_treeReaders
bool skipIt(edm::RunNumber_t, edm::LuminosityBlockNumber_t) const
void DQMRootSource::readEvent_ ( edm::EventPrincipal )
overrideprivatevirtual

Implements edm::InputSource.

Definition at line 499 of file DQMRootSource.cc.

499  {
500  //std::cout << "readEvent_" << std::endl;
501 }
std::unique_ptr< edm::FileBlock > DQMRootSource::readFile_ ( )
overrideprivatevirtual

Reimplemented from edm::InputSource.

Definition at line 618 of file DQMRootSource.cc.

References edm::InputFileCatalog::fileNames(), edm::JobReport::inputFileOpened(), edm::InputSource::IsStop, edm::InputFileCatalog::logicalFileNames(), m_catalog, m_file, m_fileIndex, m_jrToken, m_nextItemType, m_orderedIndices, m_presentIndexItr, m_presentlyOpenFileName, RunInfoPI::m_run, m_runlumiToRange, readNextItemType(), setupFile(), skipIt(), and AlCaHLTBitMon_QueryRunRegistry::string.

618  {
619  auto const numFiles = m_catalog.fileNames().size();
620  while (m_fileIndex < numFiles && not setupFile(m_fileIndex++)) {
621  }
622 
623  if (m_file.get() == nullptr) {
624  //last file in list was bad
626  return std::unique_ptr<edm::FileBlock>(new edm::FileBlock);
627  }
628 
630  while (m_presentIndexItr != m_orderedIndices.end() &&
633 
637  std::string(),
638  std::string(),
639  "DQMRootSource",
640  "source",
641  m_file->GetUUID().AsString(), //edm::createGlobalIdentifier(),
642  std::vector<std::string>());
643 
644  return std::unique_ptr<edm::FileBlock>(new edm::FileBlock);
645 }
edm::InputSource::ItemType m_nextItemType
edm::JobReport::Token m_jrToken
void readNextItemType()
std::list< unsigned int >::iterator m_presentIndexItr
Token inputFileOpened(std::string const &physicalFileName, std::string const &logicalFileName, std::string const &catalog, std::string const &inputType, std::string const &inputSourceClassName, std::string const &moduleLabel, std::string const &guid, std::vector< std::string > const &branchNames)
Definition: JobReport.cc:320
std::vector< RunLumiToRange > m_runlumiToRange
edm::InputFileCatalog m_catalog
std::list< unsigned int > m_orderedIndices
std::vector< std::string > const & logicalFileNames() const
std::vector< std::string > const & fileNames() const
std::unique_ptr< TFile > m_file
bool skipIt(edm::RunNumber_t, edm::LuminosityBlockNumber_t) const
std::string m_presentlyOpenFileName
bool setupFile(unsigned int iIndex)
void DQMRootSource::readLuminosityBlock_ ( edm::LuminosityBlockPrincipal lbCache)
overrideprivatevirtual

Reimplemented from edm::InputSource.

Definition at line 586 of file DQMRootSource.cc.

References edm::LuminosityBlockPrincipal::fillLuminosityBlockPrincipal(), edm::LuminosityBlockPrincipal::id(), edm::LuminosityBlockID::luminosityBlock(), m_lastSeenLumi2, m_lastSeenReducedPHID2, m_lastSeenRun2, m_orderedIndices, m_presentIndexItr, m_reducedHistoryIDs, m_runlumiToRange, m_shouldReadMEs, edm::InputSource::processHistoryRegistryForUpdate(), readElements(), readNextItemType(), edm::JobReport::reportInputLumiSection(), and edm::LuminosityBlockID::run().

586  {
587  assert(m_presentIndexItr != m_orderedIndices.end());
588  RunLumiToRange runLumiRange = m_runlumiToRange[*m_presentIndexItr];
589  assert(runLumiRange.m_run == lbCache.id().run());
590  assert(runLumiRange.m_lumi == lbCache.id().luminosityBlock());
591 
592  //NOTE: need to reset all lumi block elements at this point
593  if ((m_lastSeenLumi2 != runLumiRange.m_lumi || m_lastSeenRun2 != runLumiRange.m_run ||
594  m_lastSeenReducedPHID2 != m_reducedHistoryIDs.at(runLumiRange.m_historyIDIndex)) &&
595  m_shouldReadMEs) {
597  std::vector<MonitorElement*> allMEs = (*store).getAllContents("");
598  //for(auto const& ME : allMEs) {
599  // // We do not want to reset Run Products here!
600  // if (ME->getLumiFlag()) {
601  // ME->Reset();
602  // }
603  //}
604  m_lastSeenReducedPHID2 = m_reducedHistoryIDs.at(runLumiRange.m_historyIDIndex);
605  m_lastSeenRun2 = runLumiRange.m_run;
606  m_lastSeenLumi2 = runLumiRange.m_lumi;
607  }
608 
610  readElements();
611 
613  jr->reportInputLumiSection(lbCache.id().run(), lbCache.id().luminosityBlock());
614 
616 }
unsigned int m_lastSeenRun2
void readNextItemType()
std::list< unsigned int >::iterator m_presentIndexItr
std::vector< edm::ProcessHistoryID > m_reducedHistoryIDs
void fillLuminosityBlockPrincipal(ProcessHistoryRegistry const &processHistoryRegistry, DelayedReader *reader=0)
std::vector< RunLumiToRange > m_runlumiToRange
void reportInputLumiSection(unsigned int run, unsigned int lumiSectId)
Definition: JobReport.cc:465
edm::ProcessHistoryID m_lastSeenReducedPHID2
std::list< unsigned int > m_orderedIndices
RunNumber_t run() const
unsigned int m_lastSeenLumi2
LuminosityBlockNumber_t luminosityBlock() const
ProcessHistoryRegistry & processHistoryRegistryForUpdate()
Definition: InputSource.h:327
std::shared_ptr< edm::LuminosityBlockAuxiliary > DQMRootSource::readLuminosityBlockAuxiliary_ ( )
overrideprivatevirtual

Implements edm::InputSource.

Definition at line 523 of file DQMRootSource.cc.

References m_historyIDs, m_lumiAux, m_nextIndexItr, m_orderedIndices, m_runlumiToRange, and edm::LuminosityBlockAuxiliary::setProcessHistoryID().

523  {
524  //std::cout <<"readLuminosityBlockAuxiliary_"<<std::endl;
525  assert(m_nextIndexItr != m_orderedIndices.end());
526  const RunLumiToRange runLumiRange = m_runlumiToRange[*m_nextIndexItr];
527  m_lumiAux = edm::LuminosityBlockAuxiliary(edm::LuminosityBlockID(runLumiRange.m_run, runLumiRange.m_lumi),
528  edm::Timestamp(runLumiRange.m_beginTime),
529  edm::Timestamp(runLumiRange.m_endTime));
530  assert(m_historyIDs.size() > runLumiRange.m_historyIDIndex);
531  //std::cout <<"lumi "<<m_lumiAux.beginTime().value()<<" "<<runLumiRange.m_beginTime<<std::endl;
532  m_lumiAux.setProcessHistoryID(m_historyIDs[runLumiRange.m_historyIDIndex]);
533 
534  return std::make_shared<edm::LuminosityBlockAuxiliary>(m_lumiAux);
535 }
std::vector< RunLumiToRange > m_runlumiToRange
edm::LuminosityBlockAuxiliary m_lumiAux
std::vector< edm::ProcessHistoryID > m_historyIDs
std::list< unsigned int > m_orderedIndices
void setProcessHistoryID(ProcessHistoryID const &phid)
std::list< unsigned int >::iterator m_nextIndexItr
void DQMRootSource::readNextItemType ( )
private

Definition at line 693 of file DQMRootSource.cc.

References edm::InputFileCatalog::fileNames(), edm::InputSource::IsFile, edm::InputSource::IsLumi, edm::InputSource::IsRun, edm::InputSource::IsStop, m_catalog, m_fileIndex, m_justOpenedFileSoNeedToGenerateRunTransition, m_lastSeenReducedPHID, m_lastSeenRun, m_nextIndexItr, m_nextItemType, m_orderedIndices, m_reducedHistoryIDs, RunInfoPI::m_run, m_runlumiToRange, and skipIt().

Referenced by readFile_(), readLuminosityBlock_(), and readRun_().

693  {
694  //Do the work of actually figuring out where next to go
695 
696  assert(m_nextIndexItr != m_orderedIndices.end());
697  RunLumiToRange runLumiRange = m_runlumiToRange[*m_nextIndexItr];
698 
700  if (runLumiRange.m_lumi != 0 && m_nextItemType == edm::InputSource::IsRun) {
702  return;
703  }
704  ++m_nextIndexItr;
705  } else {
706  //NOTE: the following makes the iterator not be advanced in the
707  //do while loop below.
708  runLumiRange.m_run = 0;
709  }
710 
711  bool shouldContinue = false;
712  do {
713  shouldContinue = false;
714  while (m_nextIndexItr != m_orderedIndices.end() &&
716  ++m_nextIndexItr;
717 
718  if (m_nextIndexItr == m_orderedIndices.end()) {
719  //go to next file
721  //std::cout <<"going to next file"<<std::endl;
722  if (m_fileIndex == m_catalog.fileNames().size()) {
724  }
725  break;
726  }
727  const RunLumiToRange nextRunLumiRange = m_runlumiToRange[*m_nextIndexItr];
728  //continue to the next item if that item is the same run or lumi as we just did
729  if ((m_reducedHistoryIDs.at(nextRunLumiRange.m_historyIDIndex) ==
730  m_reducedHistoryIDs.at(runLumiRange.m_historyIDIndex)) &&
731  (nextRunLumiRange.m_run == runLumiRange.m_run) && (nextRunLumiRange.m_lumi == runLumiRange.m_lumi)) {
732  shouldContinue = true;
733  ++m_nextIndexItr;
734  //std::cout <<"advancing " <<nextRunLumiRange.m_run<<" "<<nextRunLumiRange.m_lumi<<std::endl;
735  }
736  } while (shouldContinue);
737 
738  if (m_nextIndexItr != m_orderedIndices.end()) {
742  } else {
744  }
745  }
746 }
edm::InputSource::ItemType m_nextItemType
std::vector< edm::ProcessHistoryID > m_reducedHistoryIDs
std::vector< RunLumiToRange > m_runlumiToRange
bool m_justOpenedFileSoNeedToGenerateRunTransition
edm::InputFileCatalog m_catalog
std::list< unsigned int > m_orderedIndices
std::vector< std::string > const & fileNames() const
edm::ProcessHistoryID m_lastSeenReducedPHID
bool skipIt(edm::RunNumber_t, edm::LuminosityBlockNumber_t) const
std::list< unsigned int >::iterator m_nextIndexItr
unsigned int m_lastSeenRun
void DQMRootSource::readRun_ ( edm::RunPrincipal rpCache)
overrideprivatevirtual

If the collate option is not set for the DQMStore, we should indeed be sure to reset all histograms after a run transition, but we should definitely avoid doing it using a local, private copy of the actual content of the DQMStore. Clients are completely free to delete/add MonitorElements from the DQMStore and the local copy stored in the std::set will never notice it until it will try to reset a deleted object. That's why the resetting directly queries the DQMStore for its current content.

Reimplemented from edm::InputSource.

Definition at line 537 of file DQMRootSource.cc.

References edm::RunPrincipal::fillRunPrincipal(), edm::RunPrincipal::id(), m_filterOnRun, m_justOpenedFileSoNeedToGenerateRunTransition, m_lastSeenReducedPHID, m_lastSeenRun, m_orderedIndices, m_presentIndexItr, m_reducedHistoryIDs, m_runlumiToRange, m_shouldReadMEs, edm::InputSource::processHistoryRegistryForUpdate(), readElements(), readNextItemType(), edm::JobReport::reportInputRunNumber(), and edm::RunID::run().

537  {
538  assert(m_presentIndexItr != m_orderedIndices.end());
539  RunLumiToRange runLumiRange = m_runlumiToRange[*m_presentIndexItr];
540 
542  unsigned int runID = rpCache.id().run();
543  assert(runID == runLumiRange.m_run);
544 
545  m_shouldReadMEs = (m_filterOnRun == 0 || (m_filterOnRun != 0 && m_filterOnRun == runID));
546  // std::cout <<"readRun_"<<std::endl;
547  // std::cout <<"m_shouldReadMEs " << m_shouldReadMEs <<std::endl;
548 
559  //NOTE: need to reset all run elements at this point
560  if (m_lastSeenRun != runID || m_lastSeenReducedPHID != m_reducedHistoryIDs.at(runLumiRange.m_historyIDIndex)) {
561  if (m_shouldReadMEs) {
563  std::vector<MonitorElement*> allMEs = (*store).getAllContents("");
564  for (auto const& ME : allMEs) {
565  if (!(*store).isCollate())
566  ME->Reset();
567  }
568  }
569  m_lastSeenReducedPHID = m_reducedHistoryIDs.at(runLumiRange.m_historyIDIndex);
570  m_lastSeenRun = runID;
571  }
572 
574 
575  //NOTE: it is possible to have a Run when all we have stored is lumis
576  if (runLumiRange.m_lumi == 0) {
577  readElements();
578  }
579 
581  jr->reportInputRunNumber(rpCache.id().run());
582 
584 }
void readNextItemType()
RunNumber_t run() const
Definition: RunID.h:36
void reportInputRunNumber(unsigned int run)
Definition: JobReport.cc:471
std::list< unsigned int >::iterator m_presentIndexItr
unsigned int m_filterOnRun
void fillRunPrincipal(ProcessHistoryRegistry const &processHistoryRegistry, DelayedReader *reader=0)
Definition: RunPrincipal.cc:26
std::vector< edm::ProcessHistoryID > m_reducedHistoryIDs
Definition: ME.h:11
std::vector< RunLumiToRange > m_runlumiToRange
bool m_justOpenedFileSoNeedToGenerateRunTransition
std::list< unsigned int > m_orderedIndices
RunID const & id() const
Definition: RunPrincipal.h:64
ProcessHistoryRegistry & processHistoryRegistryForUpdate()
Definition: InputSource.h:327
edm::ProcessHistoryID m_lastSeenReducedPHID
unsigned int m_lastSeenRun
std::shared_ptr< edm::RunAuxiliary > DQMRootSource::readRunAuxiliary_ ( )
overrideprivatevirtual

Implements edm::InputSource.

Definition at line 508 of file DQMRootSource.cc.

References m_historyIDs, m_nextIndexItr, m_orderedIndices, m_runAux, m_runlumiToRange, and edm::RunAuxiliary::setProcessHistoryID().

508  {
509  //std::cout <<"readRunAuxiliary_"<<std::endl;
510  assert(m_nextIndexItr != m_orderedIndices.end());
511  RunLumiToRange runLumiRange = m_runlumiToRange[*m_nextIndexItr];
512 
513  //NOTE: the setBeginTime and setEndTime functions of RunAuxiliary only work if the previous value was invalid
514  // therefore we must copy
516  runLumiRange.m_run, edm::Timestamp(runLumiRange.m_beginTime), edm::Timestamp(runLumiRange.m_endTime));
517  assert(m_historyIDs.size() > runLumiRange.m_historyIDIndex);
518  //std::cout <<"readRunAuxiliary_ "<<m_historyIDs[runLumiRange.m_historyIDIndex]<<std::endl;
519  m_runAux.setProcessHistoryID(m_historyIDs[runLumiRange.m_historyIDIndex]);
520  return std::make_shared<edm::RunAuxiliary>(m_runAux);
521 }
edm::RunAuxiliary m_runAux
std::vector< RunLumiToRange > m_runlumiToRange
std::vector< edm::ProcessHistoryID > m_historyIDs
std::list< unsigned int > m_orderedIndices
std::list< unsigned int >::iterator m_nextIndexItr
void setProcessHistoryID(ProcessHistoryID const &phid)
Definition: RunAuxiliary.h:26
bool DQMRootSource::setupFile ( unsigned int  iIndex)
private

Definition at line 748 of file DQMRootSource.cc.

References cms::Exception::addAdditionalInfo(), cms::Exception::addContext(), cms::Exception::additionalInfo(), trigObjTnPSource_cfi::configs, edm::InputFileCatalog::fallbackFileNames(), edm::InputFileCatalog::fileNames(), edm::errors::FileOpenError, edm::errors::FileReadError, edm::threadLocalException::getException(), mps_fire::i, edm::ProcessHistory::id(), edm::pset::Registry::instance(), kBeginTimeBranch, kEndTimeBranch, kFirstIndex, kIndicesTree, kLastIndex, kLumiBranch, kMetaDataDirectoryAbsolute, kNIndicies, kParameterSetBranch, kParameterSetTree, kPHIndexBranch, kProcessConfigurationParameterSetIDBranch, kProcessConfigurationPassID, kProcessConfigurationProcessNameBranch, kProcessConfigurationReleaseVersion, kProcessHistoryIndexBranch, kProcessHistoryTree, kRunBranch, kTypeBranch, kTypeNames, logFileAction(), m_catalog, m_file, m_historyIDs, m_justOpenedFileSoNeedToGenerateRunTransition, m_nextIndexItr, m_orderedIndices, m_presentIndexItr, m_presentlyOpenFileName, m_reducedHistoryIDs, m_runlumiToRange, m_skipBadFiles, m_treeReaders, m_trees, eostools::move(), edm::InputSource::processHistoryRegistryForUpdate(), SimL1EmulatorRepack_CalouGT_cff::processName, edm::ProcessHistoryRegistry::reducedProcessHistoryID(), edm::ParameterSet::registerFromString(), edm::ProcessHistoryRegistry::registerProcessHistory(), alignCSCRings::s, edm::threadLocalException::setException(), AlCaHLTBitMon_QueryRunRegistry::string, and groupFilesInBlocks::temp.

Referenced by readFile_().

748  {
749  if (m_file.get() != nullptr && iIndex > 0) {
750  m_file->Close();
751  logFileAction(" Closed file ", m_presentlyOpenFileName.c_str());
752  }
753  logFileAction(" Initiating request to open file ", m_catalog.fileNames()[iIndex].c_str());
754 
755  auto fallbackFileName = m_catalog.fallbackFileNames()[iIndex];
756  bool hasFallback = !fallbackFileName.empty() && fallbackFileName != m_catalog.fileNames()[iIndex];
757 
758  m_presentlyOpenFileName.clear();
759  m_file.reset();
760 
761  std::unique_ptr<TFile> newFile;
762  std::list<std::string> originalInfo;
763  try {
764  // ROOT's context management implicitly assumes that a file is opened and
765  // closed on the same thread. To avoid the problem, we declare a local
766  // TContext object; when it goes out of scope, its destructor unregisters
767  // the context, guaranteeing the context is unregistered in the same thread
768  // it was registered in.
769  {
770  TDirectory::TContext contextEraser;
771  newFile = std::unique_ptr<TFile>(TFile::Open(m_catalog.fileNames()[iIndex].c_str()));
772  }
773  //Since ROOT6, we can not propagate an exception through ROOT's plugin
774  // system so we trap them and then pull from this function
775  std::exception_ptr e = edm::threadLocalException::getException();
776  if (e != std::exception_ptr()) {
777  edm::threadLocalException::setException(std::exception_ptr());
778  std::rethrow_exception(e);
779  }
780 
781  } catch (cms::Exception const& e) {
782  if (!hasFallback) {
783  if (m_skipBadFiles) {
784  return false;
785  } else {
787  ex.addContext("Opening DQM Root file");
788  ex << "\nInput file " << m_catalog.fileNames()[iIndex]
789  << " was not found, could not be opened, or is corrupted.\n";
790  throw ex;
791  }
792  }
793  originalInfo = e.additionalInfo(); // save in case of fallback error
794  newFile.reset();
795  }
796  if (newFile && not newFile->IsZombie()) {
798  logFileAction(" Successfully opened file ", m_presentlyOpenFileName.c_str());
799  } else {
800  if (!hasFallback) {
801  if (m_skipBadFiles) {
802  return false;
803  } else {
805  ex << "Input file " << m_catalog.fileNames()[iIndex].c_str() << " could not be opened.\n";
806  ex.addContext("Opening DQM Root file");
807  throw ex;
808  }
809  }
810  newFile.reset();
811  }
812 
813  if (!newFile && hasFallback) {
814  logFileAction(" Initiating request to open fallback file ", fallbackFileName.c_str());
815  try {
816  {
817  TDirectory::TContext contextEraser;
818  newFile = std::unique_ptr<TFile>(TFile::Open(fallbackFileName.c_str()));
819  }
820  std::exception_ptr e = edm::threadLocalException::getException();
821  if (e != std::exception_ptr()) {
822  edm::threadLocalException::setException(std::exception_ptr());
823  std::rethrow_exception(e);
824  }
825  } catch (cms::Exception const& e) {
826  if (m_skipBadFiles) {
827  return false;
828  } else {
830  ex.addContext("Opening DQM Root file");
831  ex << "\nInput file " << m_catalog.fileNames()[iIndex] << " and fallback input file " << fallbackFileName
832  << " were not found, could not be opened, or are corrupted.\n";
833  for (auto const& s : originalInfo) {
834  ex.addAdditionalInfo(s);
835  }
836  throw ex;
837  }
838  }
839  if (not newFile->IsZombie()) {
840  m_presentlyOpenFileName = fallbackFileName;
841  logFileAction(" Successfully opened fallback file ", m_presentlyOpenFileName.c_str());
842  } else {
843  if (m_skipBadFiles) {
844  return false;
845  } else {
847  ex << "Input file " << m_catalog.fileNames()[iIndex] << " and fallback input file " << fallbackFileName
848  << " could not be opened.\n";
849  ex.addContext("Opening DQM Root file");
850  for (auto const& s : originalInfo) {
851  ex.addAdditionalInfo(s);
852  }
853  throw ex;
854  }
855  }
856  }
857 
858  //Check file format version, which is encoded in the Title of the TFile
859  if (0 != strcmp(newFile->GetTitle(), "1")) {
860  if (m_skipBadFiles) {
861  return false;
862  } else {
864  ex << "Input file " << m_presentlyOpenFileName << " does not appear to be a DQM Root file.\n";
865  throw ex;
866  }
867  }
868 
869  //Get meta Data
870  TDirectory* metaDir = newFile->GetDirectory(kMetaDataDirectoryAbsolute);
871  if (nullptr == metaDir) {
872  if (!m_skipBadFiles) {
874  ex << "Input file " << m_presentlyOpenFileName
875  << " appears to be corrupted since it does not have the proper internal structure.\n"
876  " Check to see if the file was closed properly.\n";
877  ex.addContext("Opening DQM Root file");
878  throw ex;
879  } else {
880  return false;
881  }
882  }
883  m_file = std::move(newFile); //passed all tests so now we want to use this file
884  TTree* parameterSetTree = dynamic_cast<TTree*>(metaDir->Get(kParameterSetTree));
885  assert(nullptr != parameterSetTree);
886 
888  assert(nullptr != psr);
889  {
890  std::string blob;
891  std::string* pBlob = &blob;
892  parameterSetTree->SetBranchAddress(kParameterSetBranch, &pBlob);
893  for (unsigned int index = 0; index != parameterSetTree->GetEntries(); ++index) {
894  parameterSetTree->GetEntry(index);
896  }
897  }
898 
899  {
900  TTree* processHistoryTree = dynamic_cast<TTree*>(metaDir->Get(kProcessHistoryTree));
901  assert(nullptr != processHistoryTree);
902  unsigned int phIndex = 0;
903  processHistoryTree->SetBranchAddress(kPHIndexBranch, &phIndex);
905  std::string* pProcessName = &processName;
906  processHistoryTree->SetBranchAddress(kProcessConfigurationProcessNameBranch, &pProcessName);
907  std::string parameterSetIDBlob;
908  std::string* pParameterSetIDBlob = &parameterSetIDBlob;
909  processHistoryTree->SetBranchAddress(kProcessConfigurationParameterSetIDBranch, &pParameterSetIDBlob);
910  std::string releaseVersion;
911  std::string* pReleaseVersion = &releaseVersion;
912  processHistoryTree->SetBranchAddress(kProcessConfigurationReleaseVersion, &pReleaseVersion);
913  std::string passID;
914  std::string* pPassID = &passID;
915  processHistoryTree->SetBranchAddress(kProcessConfigurationPassID, &pPassID);
916 
918  std::vector<edm::ProcessConfiguration> configs;
919  configs.reserve(5);
920  m_historyIDs.clear();
921  m_reducedHistoryIDs.clear();
922  for (unsigned int i = 0; i != processHistoryTree->GetEntries(); ++i) {
923  processHistoryTree->GetEntry(i);
924  if (phIndex == 0) {
925  if (not configs.empty()) {
926  edm::ProcessHistory ph(configs);
927  m_historyIDs.push_back(ph.id());
928  phr.registerProcessHistory(ph);
929  m_reducedHistoryIDs.push_back(phr.reducedProcessHistoryID(ph.id()));
930  }
931  configs.clear();
932  }
933  edm::ParameterSetID psetID(parameterSetIDBlob);
934  edm::ProcessConfiguration pc(processName, psetID, releaseVersion, passID);
935  configs.push_back(pc);
936  }
937  if (not configs.empty()) {
938  edm::ProcessHistory ph(configs);
939  m_historyIDs.push_back(ph.id());
940  phr.registerProcessHistory(ph);
941  m_reducedHistoryIDs.push_back(phr.reducedProcessHistoryID(ph.id()));
942  //std::cout <<"inserted "<<ph.id()<<std::endl;
943  }
944  }
945 
946  //Setup the indices
947  TTree* indicesTree = dynamic_cast<TTree*>(m_file->Get(kIndicesTree));
948  assert(nullptr != indicesTree);
949 
950  m_runlumiToRange.clear();
951  m_runlumiToRange.reserve(indicesTree->GetEntries());
952  m_orderedIndices.clear();
953 
954  RunLumiToRange temp;
955  indicesTree->SetBranchAddress(kRunBranch, &temp.m_run);
956  indicesTree->SetBranchAddress(kLumiBranch, &temp.m_lumi);
957  indicesTree->SetBranchAddress(kBeginTimeBranch, &temp.m_beginTime);
958  indicesTree->SetBranchAddress(kEndTimeBranch, &temp.m_endTime);
959  indicesTree->SetBranchAddress(kProcessHistoryIndexBranch, &temp.m_historyIDIndex);
960  indicesTree->SetBranchAddress(kTypeBranch, &temp.m_type);
961  indicesTree->SetBranchAddress(kFirstIndex, &temp.m_firstIndex);
962  indicesTree->SetBranchAddress(kLastIndex, &temp.m_lastIndex);
963 
964  //Need to reorder items since if there was a merge done the same Run
965  //and/or Lumi can appear multiple times but we want to process them
966  //all at once
967 
968  //We use a std::list for m_orderedIndices since inserting into the
969  //middle of a std::list does not disrupt the iterators to already
970  //existing entries
971 
972  //The Map is used to see if a Run/Lumi pair has appeared before
973  typedef std::map<RunLumiPHIDKey, std::list<unsigned int>::iterator> RunLumiToLastEntryMap;
974  RunLumiToLastEntryMap runLumiToLastEntryMap;
975 
976  //Need to group all lumis for the same run together and move the run
977  //entry to the beginning
978  typedef std::map<RunPHIDKey, std::pair<std::list<unsigned int>::iterator, std::list<unsigned int>::iterator> >
979  RunToFirstLastEntryMap;
980  RunToFirstLastEntryMap runToFirstLastEntryMap;
981 
982  for (Long64_t index = 0; index != indicesTree->GetEntries(); ++index) {
983  indicesTree->GetEntry(index);
984  // std::cout <<"read r:"<<temp.m_run
985  // <<" l:"<<temp.m_lumi
986  // <<" b:"<<temp.m_beginTime
987  // <<" e:"<<temp.m_endTime
988  // <<" fi:" << temp.m_firstIndex
989  // <<" li:" << temp.m_lastIndex
990  // <<" type:" << temp.m_type << std::endl;
991  m_runlumiToRange.push_back(temp);
992 
993  RunLumiPHIDKey runLumi(m_reducedHistoryIDs.at(temp.m_historyIDIndex), temp.m_run, temp.m_lumi);
994  RunPHIDKey runKey(m_reducedHistoryIDs.at(temp.m_historyIDIndex), temp.m_run);
995 
996  RunLumiToLastEntryMap::iterator itFind = runLumiToLastEntryMap.find(runLumi);
997  if (itFind == runLumiToLastEntryMap.end()) {
998  //does not already exist
999  //does the run for this already exist?
1000  std::list<unsigned int>::iterator itLastOfRun = m_orderedIndices.end();
1001 
1002  RunToFirstLastEntryMap::iterator itRunFirstLastEntryFind = runToFirstLastEntryMap.find(runKey);
1003  bool needNewEntryInRunFirstLastEntryMap = true;
1004  if (itRunFirstLastEntryFind != runToFirstLastEntryMap.end()) {
1005  needNewEntryInRunFirstLastEntryMap = false;
1006  if (temp.m_lumi != 0) {
1007  //lumis go to the end
1008  itLastOfRun = itRunFirstLastEntryFind->second.second;
1009  //we want to insert after this one so must advance the iterator
1010  ++itLastOfRun;
1011  } else {
1012  //runs go at the beginning
1013  itLastOfRun = itRunFirstLastEntryFind->second.first;
1014  }
1015  }
1016  std::list<unsigned int>::iterator iter = m_orderedIndices.insert(itLastOfRun, index);
1017  runLumiToLastEntryMap[runLumi] = iter;
1018  if (needNewEntryInRunFirstLastEntryMap)
1019  runToFirstLastEntryMap[runKey] = std::make_pair(iter, iter);
1020  else {
1021  if (temp.m_lumi != 0) {
1022  //lumis go at end
1023  runToFirstLastEntryMap[runKey].second = iter;
1024  } else {
1025  //since we haven't yet seen this run/lumi combination it means we haven't yet seen
1026  // a run so we can put this first
1027  runToFirstLastEntryMap[runKey].first = iter;
1028  }
1029  }
1030  } else {
1031  //We need to do a merge since the run/lumi already appeared. Put it after the existing entry
1032  //std::cout <<" found a second instance of "<<runLumi.first<<" "<<runLumi.second<<" at "<<index<<std::endl;
1033  std::list<unsigned int>::iterator itNext = itFind->second;
1034  ++itNext;
1035  std::list<unsigned int>::iterator iter = m_orderedIndices.insert(itNext, index);
1036  RunToFirstLastEntryMap::iterator itRunFirstLastEntryFind = runToFirstLastEntryMap.find(runKey);
1037  if (itRunFirstLastEntryFind->second.second == itFind->second) {
1038  //if the previous one was the last in the run, we need to update to make this one the last
1039  itRunFirstLastEntryFind->second.second = iter;
1040  }
1041  itFind->second = iter;
1042  }
1043  }
1044  m_nextIndexItr = m_orderedIndices.begin();
1046 
1047  if (m_nextIndexItr != m_orderedIndices.end()) {
1048  for (size_t index = 0; index < kNIndicies; ++index) {
1049  m_trees[index] = dynamic_cast<TTree*>(m_file->Get(kTypeNames[index]));
1050  assert(nullptr != m_trees[index]);
1051  m_treeReaders[index]->setTree(m_trees[index]);
1052  }
1053  }
1054  //After a file open, the framework expects to see a new 'IsRun'
1056 
1057  return true;
1058 }
static const char *const kProcessHistoryTree
Definition: format.h:72
static const char *const kRunBranch
Definition: format.h:59
static const char *const kTypeNames[]
Definition: format.h:39
void logFileAction(char const *msg, char const *fileName) const
static const char *const kIndicesTree
Definition: format.h:58
bool registerProcessHistory(ProcessHistory const &processHistory)
static const char *const kFirstIndex
Definition: format.h:65
static const char *const kLumiBranch
Definition: format.h:60
std::list< unsigned int >::iterator m_presentIndexItr
std::vector< edm::ProcessHistoryID > m_reducedHistoryIDs
std::list< std::string > const & additionalInfo() const
Definition: Exception.cc:149
static const char *const kPHIndexBranch
Definition: format.h:73
static const char *const kParameterSetBranch
Definition: format.h:80
std::vector< RunLumiToRange > m_runlumiToRange
std::vector< edm::ProcessHistoryID > m_historyIDs
bool m_justOpenedFileSoNeedToGenerateRunTransition
edm::InputFileCatalog m_catalog
static const char *const kParameterSetTree
Definition: format.h:79
std::list< unsigned int > m_orderedIndices
static const char *const kTypeBranch
Definition: format.h:64
ProcessHistoryID const & reducedProcessHistoryID(ProcessHistoryID const &fullID) const
static const char *const kProcessHistoryIndexBranch
Definition: format.h:61
static const char *const kEndTimeBranch
Definition: format.h:63
std::vector< std::string > const & fallbackFileNames() const
std::vector< TTree * > m_trees
static const char *const kProcessConfigurationPassID
Definition: format.h:77
static void registerFromString(std::string const &rep)
Definition: ParameterSet.cc:79
static const char *const kMetaDataDirectoryAbsolute
Definition: format.h:69
std::vector< std::string > const & fileNames() const
static const char *const kLastIndex
Definition: format.h:66
std::vector< std::shared_ptr< TreeReaderBase > > m_treeReaders
static const char *const kProcessConfigurationReleaseVersion
Definition: format.h:76
void setException(std::exception_ptr e)
ProcessHistoryRegistry & processHistoryRegistryForUpdate()
Definition: InputSource.h:327
static const char *const kProcessConfigurationProcessNameBranch
Definition: format.h:74
std::unique_ptr< TFile > m_file
static const char *const kBeginTimeBranch
Definition: format.h:62
std::exception_ptr getException()
std::list< unsigned int >::iterator m_nextIndexItr
std::string m_presentlyOpenFileName
def move(src, dest)
Definition: eostools.py:511
static Registry * instance()
Definition: Registry.cc:12
static const char *const kProcessConfigurationParameterSetIDBranch
Definition: format.h:75
bool DQMRootSource::skipIt ( edm::RunNumber_t  run,
edm::LuminosityBlockNumber_t  lumi 
) const
private

Definition at line 1060 of file DQMRootSource.cc.

References edm::binary_search_all(), electrons_cff::bool, edm::lessThan(), m_lumisToProcess, m_runsToProcess, and edm::search_all().

Referenced by readElements(), readFile_(), and readNextItemType().

1060  {
1061  if (!m_runsToProcess.empty() && edm::search_all(m_runsToProcess, run) && lumi == 0) {
1062  return false;
1063  }
1064 
1066  edm::LuminosityBlockRange lumiRange = edm::LuminosityBlockRange(lumiID, lumiID);
1068  if (!m_lumisToProcess.empty() && !binary_search_all(m_lumisToProcess, lumiRange, lt)) {
1069  return true;
1070  }
1071  return false;
1072 }
std::vector< edm::RunNumber_t > m_runsToProcess
RunNumber_t run() const
Accessor for current run number.
Definition: InputSource.cc:436
std::vector< edm::LuminosityBlockRange > m_lumisToProcess
bool search_all(ForwardSequence const &s, Datum const &d)
Definition: Algorithms.h:36
bool binary_search_all(ForwardSequence const &s, Datum const &d)
wrappers for std::binary_search
Definition: Algorithms.h:58
bool lessThan(EventRange const &lh, EventRange const &rh)
Definition: EventRange.cc:64

Member Data Documentation

edm::InputFileCatalog DQMRootSource::m_catalog
private

Definition at line 370 of file DQMRootSource.cc.

Referenced by DQMRootSource(), readFile_(), readNextItemType(), and setupFile().

std::unique_ptr<TFile> DQMRootSource::m_file
private

Definition at line 380 of file DQMRootSource.cc.

Referenced by closeFile_(), readFile_(), setupFile(), and ~DQMRootSource().

size_t DQMRootSource::m_fileIndex
private

Definition at line 375 of file DQMRootSource.cc.

Referenced by DQMRootSource(), readFile_(), and readNextItemType().

unsigned int DQMRootSource::m_filterOnRun
private

Definition at line 390 of file DQMRootSource.cc.

Referenced by readRun_().

std::vector<edm::ProcessHistoryID> DQMRootSource::m_historyIDs
private

Definition at line 399 of file DQMRootSource.cc.

Referenced by readLuminosityBlockAuxiliary_(), readRunAuxiliary_(), and setupFile().

edm::JobReport::Token DQMRootSource::m_jrToken
private

Definition at line 402 of file DQMRootSource.cc.

Referenced by closeFile_(), and readFile_().

bool DQMRootSource::m_justOpenedFileSoNeedToGenerateRunTransition
private

Definition at line 395 of file DQMRootSource.cc.

Referenced by readNextItemType(), readRun_(), and setupFile().

unsigned int DQMRootSource::m_lastSeenLumi2
private

Definition at line 389 of file DQMRootSource.cc.

Referenced by readLuminosityBlock_().

edm::ProcessHistoryID DQMRootSource::m_lastSeenReducedPHID
private

Definition at line 385 of file DQMRootSource.cc.

Referenced by readNextItemType(), and readRun_().

edm::ProcessHistoryID DQMRootSource::m_lastSeenReducedPHID2
private

Definition at line 387 of file DQMRootSource.cc.

Referenced by readLuminosityBlock_().

unsigned int DQMRootSource::m_lastSeenRun
private

Definition at line 386 of file DQMRootSource.cc.

Referenced by readNextItemType(), and readRun_().

unsigned int DQMRootSource::m_lastSeenRun2
private

Definition at line 388 of file DQMRootSource.cc.

Referenced by readLuminosityBlock_().

edm::LuminosityBlockAuxiliary DQMRootSource::m_lumiAux
private

Definition at line 372 of file DQMRootSource.cc.

Referenced by readLuminosityBlockAuxiliary_().

std::set<MonitorElement*> DQMRootSource::m_lumiElements
private

Definition at line 397 of file DQMRootSource.cc.

std::vector<edm::LuminosityBlockRange> DQMRootSource::m_lumisToProcess
private

Definition at line 392 of file DQMRootSource.cc.

Referenced by DQMRootSource(), and skipIt().

std::list<unsigned int>::iterator DQMRootSource::m_nextIndexItr
private
edm::InputSource::ItemType DQMRootSource::m_nextItemType
private

Definition at line 373 of file DQMRootSource.cc.

Referenced by DQMRootSource(), getNextItemType(), readFile_(), and readNextItemType().

std::list<unsigned int> DQMRootSource::m_orderedIndices
private
std::list<unsigned int>::iterator DQMRootSource::m_presentIndexItr
private

Definition at line 378 of file DQMRootSource.cc.

Referenced by readElements(), readFile_(), readLuminosityBlock_(), readRun_(), and setupFile().

std::string DQMRootSource::m_presentlyOpenFileName
private

Definition at line 376 of file DQMRootSource.cc.

Referenced by readFile_(), setupFile(), and ~DQMRootSource().

std::vector<edm::ProcessHistoryID> DQMRootSource::m_reducedHistoryIDs
private
edm::RunAuxiliary DQMRootSource::m_runAux
private

Definition at line 371 of file DQMRootSource.cc.

Referenced by readRunAuxiliary_().

std::set<MonitorElement*> DQMRootSource::m_runElements
private

Definition at line 398 of file DQMRootSource.cc.

std::vector<RunLumiToRange> DQMRootSource::m_runlumiToRange
private
std::vector<edm::RunNumber_t> DQMRootSource::m_runsToProcess
private

Definition at line 393 of file DQMRootSource.cc.

Referenced by DQMRootSource(), and skipIt().

bool DQMRootSource::m_shouldReadMEs
private

Definition at line 396 of file DQMRootSource.cc.

Referenced by readElements(), readLuminosityBlock_(), and readRun_().

bool DQMRootSource::m_skipBadFiles
private

Definition at line 391 of file DQMRootSource.cc.

Referenced by setupFile().

std::vector<std::shared_ptr<TreeReaderBase> > DQMRootSource::m_treeReaders
private

Definition at line 382 of file DQMRootSource.cc.

Referenced by DQMRootSource(), readElements(), and setupFile().

std::vector<TTree*> DQMRootSource::m_trees
private

Definition at line 381 of file DQMRootSource.cc.

Referenced by setupFile().