CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
dqmservices::DQMProtobufReader Class Reference

#include <DQMProtobufReader.h>

Inheritance diagram for dqmservices::DQMProtobufReader:
edm::PuttableSourceBase edm::InputSource edm::ProducerBase edm::ProductRegistryHelper

Public Types

typedef dqm::legacy::DQMStore DQMStore
 
typedef dqm::legacy::MonitorElement MonitorElement
 
- Public Types inherited from edm::InputSource
enum  ItemType {
  IsInvalid, IsStop, IsFile, IsRun,
  IsLumi, IsEvent, IsRepeat, IsSynchronize
}
 
enum  ProcessingMode { Runs, RunsAndLumis, RunsLumisAndEvents }
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex >>
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 

Public Member Functions

 DQMProtobufReader (edm::ParameterSet const &, edm::InputSourceDescription const &)
 
 ~DQMProtobufReader () override
 
- Public Member Functions inherited from edm::PuttableSourceBase
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
 PuttableSourceBase (ParameterSet const &, InputSourceDescription const &)
 
void registerProducts () final
 Register any produced products. More...
 
- 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...
 
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
 
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...
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
 ~ProducerBase () noexcept(false) override
 

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 beginLuminosityBlock (edm::LuminosityBlock &lb) override
 
edm::InputSource::ItemType getNextItemType () override
 
void logFileAction (char const *msg, char const *fileName) const
 
bool prepareNextFile ()
 
void readEvent_ (edm::EventPrincipal &) override
 
void readLuminosityBlock_ (edm::LuminosityBlockPrincipal &lbCache) override
 
std::shared_ptr< edm::LuminosityBlockAuxiliaryreadLuminosityBlockAuxiliary_ () override
 
void readRun_ (edm::RunPrincipal &rpCache) override
 
std::shared_ptr< edm::RunAuxiliaryreadRunAuxiliary_ () override
 

Private Attributes

DQMFileIterator::LumiEntry currentLumi_
 
DQMFileIterator fiterator_
 
bool flagDeleteDatFiles_
 
bool flagEndOfRunKills_
 
bool flagLoadFiles_
 
bool flagSkipFirstLumis_
 
InputSource::ItemType nextItemType
 
std::unique_ptr< double > streamReader_
 

Additional Inherited Members

- 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::PuttableSourceBase
void beginJob () override
 Begin protected makes it easier to do template programming. More...
 
- Protected Member Functions inherited from edm::InputSource
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
 
- Protected Member Functions inherited from edm::ProducerBase
ProducesCollector producesCollector ()
 

Detailed Description

Definition at line 19 of file DQMProtobufReader.h.

Member Typedef Documentation

Definition at line 22 of file DQMProtobufReader.h.

Definition at line 21 of file DQMProtobufReader.h.

Constructor & Destructor Documentation

DQMProtobufReader::DQMProtobufReader ( edm::ParameterSet const &  pset,
edm::InputSourceDescription const &  desc 
)
explicit

Definition at line 11 of file DQMProtobufReader.cc.

References flagDeleteDatFiles_, flagEndOfRunKills_, flagLoadFiles_, flagSkipFirstLumis_, and edm::ParameterSet::getUntrackedParameter().

13  flagSkipFirstLumis_ = pset.getUntrackedParameter<bool>("skipFirstLumis");
14  flagEndOfRunKills_ = pset.getUntrackedParameter<bool>("endOfRunKills");
15  flagDeleteDatFiles_ = pset.getUntrackedParameter<bool>("deleteDatFiles");
16  flagLoadFiles_ = pset.getUntrackedParameter<bool>("loadFiles");
17 
18  produces<std::string, edm::Transition::BeginLuminosityBlock>("sourceDataPath");
19  produces<std::string, edm::Transition::BeginLuminosityBlock>("sourceJsonPath");
20 }
PuttableSourceBase(ParameterSet const &, InputSourceDescription const &)
DQMProtobufReader::~DQMProtobufReader ( )
override

Definition at line 22 of file DQMProtobufReader.cc.

22 {}

Member Function Documentation

void DQMProtobufReader::beginLuminosityBlock ( edm::LuminosityBlock lb)
overrideprivatevirtual

Reimplemented from edm::PuttableSourceBase.

Definition at line 101 of file DQMProtobufReader.cc.

References currentLumi_, fiterator_, flagLoadFiles_, dqmservices::DQMFileIterator::LumiEntry::get_data_path(), dqmservices::DQMFileIterator::LumiEntry::get_json_path(), dqm::dqmstoreimpl::DQMStore::getAllContents(), dqm::dqmstoreimpl::DQMStore::load(), dqmservices::DQMFileIterator::logFileAction(), dqmservices::DQMFileIterator::logLumiState(), eostools::move(), castor_dqm_sourceclient_file_cfg::path, edm::LuminosityBlock::put(), and AlCaHLTBitMon_QueryRunRegistry::string.

101  {
103 
104  // clear the old lumi histograms
105  std::vector<MonitorElement*> allMEs = store->getAllContents("");
106  for (auto const& ME : allMEs) {
107  // We do not want to reset Run Products here!
108  if (ME->getLumiFlag()) {
109  ME->Reset();
110  }
111  }
112 
113  // load the new file
116 
117  std::unique_ptr<std::string> path_product(new std::string(path));
118  std::unique_ptr<std::string> json_product(new std::string(jspath));
119 
120  lb.put(std::move(path_product), "sourceDataPath");
121  lb.put(std::move(json_product), "sourceJsonPath");
122 
123  if (flagLoadFiles_) {
124  if (!boost::filesystem::exists(path)) {
125  fiterator_.logFileAction("Data file is missing ", path);
126  fiterator_.logLumiState(currentLumi_, "error: data file missing");
127  return;
128  }
129 
130  fiterator_.logFileAction("Initiating request to open file ", path);
131  fiterator_.logFileAction("Successfully opened file ", path);
132  store->load(path);
133  fiterator_.logFileAction("Closed file ", path);
134  fiterator_.logLumiState(currentLumi_, "close: ok");
135  } else {
136  fiterator_.logFileAction("Not loading the data file at source level ", path);
137  fiterator_.logLumiState(currentLumi_, "close: not loading");
138  }
139 }
void logLumiState(const LumiEntry &lumi, const std::string &msg)
bool load(std::string const &filename, OpenRunDirs stripdirs=StripRunDirs, bool fileMustExist=true)
Definition: DQMStore.cc:2639
Definition: ME.h:11
void put(std::unique_ptr< PROD > product)
Put a new product.
void logFileAction(const std::string &msg, const std::string &fileName="") const
std::vector< MonitorElement * > getAllContents(std::string const &path, uint32_t runNumber=0, uint32_t lumi=0) const
Definition: DQMStore.cc:1616
DQMFileIterator::LumiEntry currentLumi_
def move(src, dest)
Definition: eostools.py:511
void DQMProtobufReader::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 143 of file DQMProtobufReader.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::addUntracked(), DEFINE_FWK_INPUT_SOURCE, DQMProtobufReader_cff::DQMProtobufReader, edm::IDGeneratorSourceBase< PuttableSourceBase >::fillDescription(), dqmservices::DQMFileIterator::fillDescription(), and edm::ParameterSetDescription::setComment().

143  {
145 
146  desc.setComment(
147  "Creates runs and lumis and fills the dqmstore from protocol buffer "
148  "files.");
150 
151  desc.addUntracked<bool>("skipFirstLumis", false)
152  ->setComment(
153  "Skip (and ignore the minEventsPerLumi parameter) for the files "
154  "which have been available at the begining of the processing. "
155  "If set to true, the reader will open last available file for "
156  "processing.");
157 
158  desc.addUntracked<bool>("deleteDatFiles", false)
159  ->setComment(
160  "Delete data files after they have been closed, in order to "
161  "save disk space.");
162 
163  desc.addUntracked<bool>("endOfRunKills", false)
164  ->setComment(
165  "Kill the processing as soon as the end-of-run file appears, even if "
166  "there are/will be unprocessed lumisections.");
167 
168  desc.addUntracked<bool>("loadFiles", true)
169  ->setComment(
170  "Tells the source load the data files. If set to false, source will create skeleton lumi transitions.");
171 
173  descriptions.add("source", desc);
174 }
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
void setComment(std::string const &value)
static void fillDescription(ParameterSetDescription &desc)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
static void fillDescription(edm::ParameterSetDescription &d)
edm::InputSource::ItemType DQMProtobufReader::getNextItemType ( )
overrideprivatevirtual

Implements edm::InputSource.

Definition at line 24 of file DQMProtobufReader.cc.

References dqmservices::DQMFileIterator::delay(), fiterator_, flagEndOfRunKills_, svgfig::load(), dqmservices::DQMFileIterator::logFileAction(), dqmservices::DQMFileIterator::lumiReady(), edm::shutdown_flag, dqmservices::DQMFileIterator::state(), and dqmservices::DQMFileIterator::update_state().

24  {
26  typedef DQMFileIterator::LumiEntry LumiEntry;
27 
28  // fiterator_.logFileAction("getNextItemType");
29 
30  for (;;) {
32 
33  if (edm::shutdown_flag.load()) {
34  fiterator_.logFileAction("Shutdown flag was set, shutting down.");
35  return InputSource::IsStop;
36  }
37 
38  // check for end of run file and force quit
39  if (flagEndOfRunKills_ && (fiterator_.state() != State::OPEN)) {
40  return InputSource::IsStop;
41  }
42 
43  // check for end of run and quit if everything has been processed.
44  // this is the clean exit
45  if ((!fiterator_.lumiReady()) && (fiterator_.state() == State::EOR)) {
46  return InputSource::IsStop;
47  }
48 
49  // skip to the next file if we have no files openned yet
50  if (fiterator_.lumiReady()) {
51  return InputSource::IsLumi;
52  }
53 
54  fiterator_.delay();
55  // BUG: for an unknown reason it fails after a certain time if we use
56  // IsSynchronize state
57  //
58  // comment out in order to block at this level
59  // return InputSource::IsSynchronize;
60  }
61 
62  // this is unreachable
63 }
volatile std::atomic< bool > shutdown_flag
void logFileAction(const std::string &msg, const std::string &fileName="") const
def load(fileName)
Definition: svgfig.py:547
void dqmservices::DQMProtobufReader::logFileAction ( char const *  msg,
char const *  fileName 
) const
private
bool dqmservices::DQMProtobufReader::prepareNextFile ( )
private
void DQMProtobufReader::readEvent_ ( edm::EventPrincipal )
overrideprivatevirtual

Implements edm::InputSource.

Definition at line 141 of file DQMProtobufReader.cc.

141 {};
void DQMProtobufReader::readLuminosityBlock_ ( edm::LuminosityBlockPrincipal lbCache)
overrideprivatevirtual

Reimplemented from edm::InputSource.

Definition at line 93 of file DQMProtobufReader.cc.

References edm::LuminosityBlockPrincipal::fillLuminosityBlockPrincipal(), edm::LuminosityBlockPrincipal::id(), edm::LuminosityBlockID::luminosityBlock(), edm::InputSource::processHistoryRegistryForUpdate(), edm::JobReport::reportInputLumiSection(), and edm::LuminosityBlockID::run().

93  {
94  // fiterator_.logFileAction("readLuminosityBlock_");
95 
97  jr->reportInputLumiSection(lbCache.id().run(), lbCache.id().luminosityBlock());
99 }
void fillLuminosityBlockPrincipal(ProcessHistoryRegistry const &processHistoryRegistry, DelayedReader *reader=0)
void reportInputLumiSection(unsigned int run, unsigned int lumiSectId)
Definition: JobReport.cc:465
RunNumber_t run() const
LuminosityBlockNumber_t luminosityBlock() const
ProcessHistoryRegistry & processHistoryRegistryForUpdate()
Definition: InputSource.h:327
std::shared_ptr< edm::LuminosityBlockAuxiliary > DQMProtobufReader::readLuminosityBlockAuxiliary_ ( )
overrideprivatevirtual
void DQMProtobufReader::readRun_ ( edm::RunPrincipal rpCache)
overrideprivatevirtual

Reimplemented from edm::InputSource.

Definition at line 72 of file DQMProtobufReader.cc.

References edm::RunPrincipal::fillRunPrincipal(), dqm::dqmstoreimpl::DQMStore::getAllContents(), and edm::InputSource::processHistoryRegistryForUpdate().

72  {
73  // fiterator_.logFileAction("readRun_");
75 
77  std::vector<MonitorElement*> allMEs = store->getAllContents("");
78  for (auto const& ME : allMEs) {
79  ME->Reset();
80  }
81 }
void fillRunPrincipal(ProcessHistoryRegistry const &processHistoryRegistry, DelayedReader *reader=0)
Definition: RunPrincipal.cc:26
Definition: ME.h:11
std::vector< MonitorElement * > getAllContents(std::string const &path, uint32_t runNumber=0, uint32_t lumi=0) const
Definition: DQMStore.cc:1616
ProcessHistoryRegistry & processHistoryRegistryForUpdate()
Definition: InputSource.h:327
std::shared_ptr< edm::RunAuxiliary > DQMProtobufReader::readRunAuxiliary_ ( )
overrideprivatevirtual

Implements edm::InputSource.

Definition at line 65 of file DQMProtobufReader.cc.

References printConversionInfo::aux, fiterator_, and dqmservices::DQMFileIterator::runNumber().

65  {
66  // fiterator_.logFileAction("readRunAuxiliary_");
67 
69  return std::shared_ptr<edm::RunAuxiliary>(aux);
70 }

Member Data Documentation

DQMFileIterator::LumiEntry dqmservices::DQMProtobufReader::currentLumi_
private

Definition at line 49 of file DQMProtobufReader.h.

Referenced by beginLuminosityBlock(), and readLuminosityBlockAuxiliary_().

DQMFileIterator dqmservices::DQMProtobufReader::fiterator_
private
bool dqmservices::DQMProtobufReader::flagDeleteDatFiles_
private

Definition at line 44 of file DQMProtobufReader.h.

Referenced by DQMProtobufReader().

bool dqmservices::DQMProtobufReader::flagEndOfRunKills_
private

Definition at line 43 of file DQMProtobufReader.h.

Referenced by DQMProtobufReader(), and getNextItemType().

bool dqmservices::DQMProtobufReader::flagLoadFiles_
private

Definition at line 45 of file DQMProtobufReader.h.

Referenced by beginLuminosityBlock(), and DQMProtobufReader().

bool dqmservices::DQMProtobufReader::flagSkipFirstLumis_
private

Definition at line 42 of file DQMProtobufReader.h.

Referenced by DQMProtobufReader().

InputSource::ItemType dqmservices::DQMProtobufReader::nextItemType
private

Definition at line 51 of file DQMProtobufReader.h.

std::unique_ptr<double> dqmservices::DQMProtobufReader::streamReader_
private

Definition at line 47 of file DQMProtobufReader.h.