CMS 3D CMS Logo

List of all members | 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::InputSource edm::ProductRegistryHelper

Public Member Functions

 DQMProtobufReader (edm::ParameterSet const &, edm::InputSourceDescription const &)
 
 ~DQMProtobufReader ()
 
- 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 doBeginLumi (LuminosityBlockPrincipal &lbp, ProcessContext const *)
 Called by framework at beginning of lumi block. More...
 
void doBeginRun (RunPrincipal &rp, ProcessContext const *)
 Called by framework at beginning of run. More...
 
void doEndJob ()
 Called by framework at end of job. More...
 
void doEndLumi (LuminosityBlockPrincipal &lbp, bool cleaningUpAfterException, ProcessContext const *)
 Called by framework at end of lumi block. More...
 
void doEndRun (RunPrincipal &rp, bool cleaningUpAfterException, ProcessContext const *)
 Called by framework at end of run. More...
 
void doPostForkReacquireResources (std::shared_ptr< multicore::MessageReceiverForSource >)
 
void doPreForkReleaseResources ()
 Called by the framework before forking the process. 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)
 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
 
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)
 
bool skipForForking ()
 
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

virtual void beginLuminosityBlock (edm::LuminosityBlock &lb) override
 
virtual edm::InputSource::ItemType getNextItemType () override
 
void logFileAction (char const *msg, char const *fileName) const
 
bool prepareNextFile ()
 
virtual void readEvent_ (edm::EventPrincipal &) override
 
virtual void readLuminosityBlock_ (edm::LuminosityBlockPrincipal &lbCache) override
 
virtual std::shared_ptr< edm::LuminosityBlockAuxiliaryreadLuminosityBlockAuxiliary_ () override
 
virtual void readRun_ (edm::RunPrincipal &rpCache) override
 
virtual 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 Types inherited from edm::InputSource
enum  ItemType {
  IsInvalid, IsStop, IsFile, IsRun,
  IsLumi, IsEvent, IsRepeat, IsSynchronize
}
 
enum  ProcessingMode { Runs, RunsAndLumis, RunsLumisAndEvents }
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- 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
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 16 of file DQMProtobufReader.h.

Constructor & Destructor Documentation

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

Definition at line 12 of file DQMProtobufReader.cc.

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

14  : InputSource(pset, desc), fiterator_(pset) {
15 
16  flagSkipFirstLumis_ = pset.getUntrackedParameter<bool>("skipFirstLumis");
17  flagEndOfRunKills_ = pset.getUntrackedParameter<bool>("endOfRunKills");
18  flagDeleteDatFiles_ = pset.getUntrackedParameter<bool>("deleteDatFiles");
19  flagLoadFiles_ = pset.getUntrackedParameter<bool>("loadFiles");
20 
21  produces<std::string, edm::InLumi>("sourceDataPath");
22  produces<std::string, edm::InLumi>("sourceJsonPath");
23 }
InputSource(ParameterSet const &, InputSourceDescription const &)
Constructor.
Definition: InputSource.cc:47
DQMProtobufReader::~DQMProtobufReader ( )

Definition at line 25 of file DQMProtobufReader.cc.

25 {}

Member Function Documentation

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

Reimplemented from edm::InputSource.

Definition at line 109 of file DQMProtobufReader.cc.

References currentLumi_, fiterator_, flagLoadFiles_, dqmservices::DQMFileIterator::LumiEntry::get_data_path(), dqmservices::DQMFileIterator::LumiEntry::get_json_path(), dqmservices::DQMFileIterator::logFileAction(), dqmservices::DQMFileIterator::logLumiState(), eostools::move(), callgraph::path, edm::LuminosityBlock::put(), and AlCaHLTBitMon_QueryRunRegistry::string.

109  {
111 
112  // clear the old lumi histograms
113  std::vector<MonitorElement*> allMEs = store->getAllContents("");
114  for (auto const& ME : allMEs) {
115  // We do not want to reset Run Products here!
116  if (ME->getLumiFlag()) {
117  ME->Reset();
118  }
119  }
120 
121  // load the new file
124 
125  std::unique_ptr<std::string> path_product(new std::string(path));
126  std::unique_ptr<std::string> json_product(new std::string(jspath));
127 
128  lb.put(std::move(path_product), "sourceDataPath");
129  lb.put(std::move(json_product), "sourceJsonPath");
130 
131  if (flagLoadFiles_) {
132  if (!boost::filesystem::exists(path)) {
133  fiterator_.logFileAction("Data file is missing ", path);
134  fiterator_.logLumiState(currentLumi_, "error: data file missing");
135  return;
136  }
137 
138  fiterator_.logFileAction("Initiating request to open file ", path);
139  fiterator_.logFileAction("Successfully opened file ", path);
140  store->load(path);
141  fiterator_.logFileAction("Closed file ", path);
142  fiterator_.logLumiState(currentLumi_, "close: ok");
143  } else {
144  fiterator_.logFileAction("Not loading the data file at source level ", path);
145  fiterator_.logLumiState(currentLumi_, "close: not loading");
146  }
147 }
void logLumiState(const LumiEntry &lumi, const std::string &msg)
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
DQMFileIterator::LumiEntry currentLumi_
def move(src, dest)
Definition: eostools.py:510
void DQMProtobufReader::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 152 of file DQMProtobufReader.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::addUntracked(), DEFINE_FWK_INPUT_SOURCE, edm::ProducerSourceBase::fillDescription(), dqmservices::DQMFileIterator::fillDescription(), and edm::ParameterSetDescription::setComment().

153  {
155 
156  desc.setComment(
157  "Creates runs and lumis and fills the dqmstore from protocol buffer "
158  "files.");
160 
161  desc.addUntracked<bool>("skipFirstLumis", false)
162  ->setComment(
163  "Skip (and ignore the minEventsPerLumi parameter) for the files "
164  "which have been available at the begining of the processing. "
165  "If set to true, the reader will open last available file for "
166  "processing.");
167 
168  desc.addUntracked<bool>("deleteDatFiles", false)
169  ->setComment(
170  "Delete data files after they have been closed, in order to "
171  "save disk space.");
172 
173  desc.addUntracked<bool>("endOfRunKills", false)
174  ->setComment(
175  "Kill the processing as soon as the end-of-run file appears, even if "
176  "there are/will be unprocessed lumisections.");
177 
178  desc.addUntracked<bool>("loadFiles", true)
179  ->setComment(
180  "Tells the source load the data files. If set to false, source will create skeleton lumi transitions.");
181 
183  descriptions.add("source", desc);
184 }
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 27 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().

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

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

Reimplemented from edm::InputSource.

Definition at line 99 of file DQMProtobufReader.cc.

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

100  {
101  // fiterator_.logFileAction("readLuminosityBlock_");
102 
104  jr->reportInputLumiSection(lbCache.id().run(),
105  lbCache.id().luminosityBlock());
107 }
void fillLuminosityBlockPrincipal(ProcessHistoryRegistry const &processHistoryRegistry, DelayedReader *reader=0)
void reportInputLumiSection(unsigned int run, unsigned int lumiSectId)
Definition: JobReport.cc:548
RunNumber_t run() const
LuminosityBlockNumber_t luminosityBlock() const
ProcessHistoryRegistry & processHistoryRegistryForUpdate()
Definition: InputSource.h:357
std::shared_ptr< edm::LuminosityBlockAuxiliary > DQMProtobufReader::readLuminosityBlockAuxiliary_ ( )
overrideprivatevirtual
void DQMProtobufReader::readRun_ ( edm::RunPrincipal rpCache)
overrideprivatevirtual

Reimplemented from edm::InputSource.

Definition at line 76 of file DQMProtobufReader.cc.

References edm::RunPrincipal::fillRunPrincipal(), and edm::InputSource::processHistoryRegistryForUpdate().

76  {
77  // fiterator_.logFileAction("readRun_");
79 
81  std::vector<MonitorElement*> allMEs = store->getAllContents("");
82  for (auto const& ME : allMEs) {
83  ME->Reset();
84  }
85 }
void fillRunPrincipal(ProcessHistoryRegistry const &processHistoryRegistry, DelayedReader *reader=0)
Definition: RunPrincipal.cc:20
Definition: ME.h:11
ProcessHistoryRegistry & processHistoryRegistryForUpdate()
Definition: InputSource.h:357
std::shared_ptr< edm::RunAuxiliary > DQMProtobufReader::readRunAuxiliary_ ( )
overrideprivatevirtual

Implements edm::InputSource.

Definition at line 68 of file DQMProtobufReader.cc.

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

68  {
69  // fiterator_.logFileAction("readRunAuxiliary_");
70 
73  return std::shared_ptr<edm::RunAuxiliary>(aux);
74 }

Member Data Documentation

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

Definition at line 46 of file DQMProtobufReader.h.

Referenced by beginLuminosityBlock(), and readLuminosityBlockAuxiliary_().

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

Definition at line 41 of file DQMProtobufReader.h.

Referenced by DQMProtobufReader().

bool dqmservices::DQMProtobufReader::flagEndOfRunKills_
private

Definition at line 40 of file DQMProtobufReader.h.

Referenced by DQMProtobufReader(), and getNextItemType().

bool dqmservices::DQMProtobufReader::flagLoadFiles_
private

Definition at line 42 of file DQMProtobufReader.h.

Referenced by beginLuminosityBlock(), and DQMProtobufReader().

bool dqmservices::DQMProtobufReader::flagSkipFirstLumis_
private

Definition at line 39 of file DQMProtobufReader.h.

Referenced by DQMProtobufReader().

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

Definition at line 48 of file DQMProtobufReader.h.

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

Definition at line 44 of file DQMProtobufReader.h.