CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes
edm::DQMStreamerReader Class Reference

#include <DQMStreamerReader.h>

Inheritance diagram for edm::DQMStreamerReader:
edm::StreamerInputSource edm::RawInputSource edm::InputSource edm::ProductRegistryHelper

Public Types

typedef std::vector< std::string > Strings
 
- 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 Member Functions

 DQMStreamerReader (ParameterSet const &pset, InputSourceDescription const &desc)
 
bool newHeader ()
 
virtual ~DQMStreamerReader ()
 
- Public Member Functions inherited from edm::StreamerInputSource
void deserializeAndMergeWithRegistry (InitMsgView const &initView, bool subsequent=false)
 
void deserializeEvent (EventMsgView const &eventView)
 
std::auto_ptr< SendJobHeaderdeserializeRegistry (InitMsgView const &initView)
 
 StreamerInputSource (ParameterSet const &pset, InputSourceDescription const &desc)
 
virtual ~StreamerInputSource ()
 
- Public Member Functions inherited from edm::RawInputSource
 RawInputSource (ParameterSet const &pset, InputSourceDescription const &desc)
 
virtual ~RawInputSource ()
 
- Public Member Functions inherited from edm::InputSource
boost::shared_ptr
< ActivityRegistry
actReg () const
 Accessor for Activity Registry. More...
 
boost::shared_ptr
< BranchIDListHelper
branchIDListHelper () const
 Accessor for branchIDListHelper. More...
 
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 (boost::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...
 
boost::shared_ptr
< LuminosityBlockAuxiliary
luminosityBlockAuxiliary () 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
 
bool primary () const
 Accessor for primary input source flag. More...
 
ProcessConfiguration const & processConfiguration () const
 Accessor for Process Configuration. More...
 
std::string const & processGUID () const
 Accessor for global process identifier. More...
 
ProcessHistoryRegistry const & processHistoryRegistry () const
 Const accessor for process history registry. More...
 
ProcessHistoryRegistryprocessHistoryRegistryForUpdate ()
 Non-const accessor for process history registry. More...
 
ProcessingMode processingMode () const
 RunsLumisAndEvents (default), RunsAndLumis, or Runs. More...
 
boost::shared_ptr
< ProductRegistry const > 
productRegistry () const
 Accessor for product registry. More...
 
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...
 
boost::shared_ptr
< LuminosityBlockAuxiliary
readLuminosityBlockAuxiliary ()
 Read next luminosity block Auxilary. More...
 
void readRun (RunPrincipal &runPrincipal, HistoryAppender &historyAppender)
 Read next run (new run) More...
 
boost::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...
 
SharedResourcesAcquirerresourceSharedWithDelayedReader () const
 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...
 
boost::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 ()
 
Timestamp const & timestamp () const
 Accessor for the current time, as seen by the input source. More...
 
virtual ~InputSource ()
 Destructor. More...
 

Static Public Member Functions

static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::StreamerInputSource
static void fillDescription (ParameterSetDescription &description)
 
static void mergeIntoRegistry (SendJobHeader const &header, ProductRegistry &, BranchIDListHelper &, bool subsequent)
 
static unsigned int uncompressBuffer (unsigned char *inputBuffer, unsigned int inputSize, std::vector< unsigned char > &outputBuffer, unsigned int expectedFullSize)
 
- Static Public Member Functions inherited from edm::RawInputSource
static void fillDescription (ParameterSetDescription &description)
 
- 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 &)
 

Protected Member Functions

virtual bool checkNextEvent ()
 
virtual void skip (int toSkip)
 
- Protected Member Functions inherited from edm::StreamerInputSource
void resetAfterEndRun ()
 
- Protected Member Functions inherited from edm::RawInputSource
void makeEvent (EventPrincipal &eventPrincipal, EventAuxiliary const &eventAuxiliary)
 
void setInputFileTransitionsEachEvent ()
 
- Protected Member Functions inherited from edm::InputSource
void decreaseRemainingEventsBy (int iSkipped)
 
bool eventCached () const
 
boost::shared_ptr
< LuminosityBlockPrincipal >
const 
luminosityBlockPrincipal () const
 
bool newLumi () const
 
bool newRun () const
 
ProcessHistoryRegistryprocessHistoryRegistryUpdate () const
 
ProductRegistryproductRegistryUpdate () const
 
void reset () const
 
void resetEventCached ()
 
void resetLuminosityBlockAuxiliary (bool isNewLumi=true) const
 
void resetNewLumi ()
 
void resetNewRun ()
 
void resetRunAuxiliary (bool isNewRun=true) const
 
boost::shared_ptr
< RunPrincipal > const 
runPrincipal () 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...
 
ItemType state () const
 

Private Member Functions

bool acceptEvent (const EventMsgView *)
 
void closeFile_ ()
 
EventMsgView const * getEventMsg ()
 
InitMsgView const * getHeaderMsg ()
 
bool matchTriggerSel (Strings const &tnames)
 
void openFile_ (std::string filename)
 
bool openNextFile_ ()
 
EventMsgView const * prepareNextEvent ()
 
bool prepareNextFile ()
 
void reset_ ()
 
bool triggerSel ()
 

Private Attributes

bool acceptAllEvt_
 
TriggerSelectorPtr eventSelector_
 
boost::shared_ptr
< EventSkipperByID
eventSkipperByID_
 
DQMFileIterator fiterator_
 
bool flagDeleteDatFiles_
 
bool flagEndOfRunKills_
 
bool flagSkipFirstLumis_
 
Strings hltSel_
 
bool matchTriggerSel_
 
unsigned int minEventsPerLs_
 
unsigned int processedEventPerLs_
 
std::string runInputDir_
 
unsigned int runNumber_
 
std::string streamLabel_
 
std::unique_ptr
< StreamerInputFile
streamReader_
 

Additional Inherited Members

- Static Protected Member Functions inherited from edm::StreamerInputSource
static void buildClassCache (SendDescs const &descs)
 
static void declareStreamers (SendDescs const &descs)
 

Detailed Description

Definition at line 31 of file DQMStreamerReader.h.

Member Typedef Documentation

typedef std::vector<std::string> edm::DQMStreamerReader::Strings

Definition at line 40 of file DQMStreamerReader.h.

Constructor & Destructor Documentation

edm::DQMStreamerReader::DQMStreamerReader ( ParameterSet const &  pset,
InputSourceDescription const &  desc 
)

Definition at line 31 of file DQMStreamerReader.cc.

References flagDeleteDatFiles_, flagEndOfRunKills_, flagSkipFirstLumis_, edm::ParameterSet::getUntrackedParameter(), hltSel_, minEventsPerLs_, reset_(), runInputDir_, runNumber_, AlCaHLTBitMon_QueryRunRegistry::string, and triggerSel().

33  : StreamerInputSource(pset, desc),
35  streamReader_(),
37 
38  runNumber_ = pset.getUntrackedParameter<unsigned int>("runNumber");
39  runInputDir_ = pset.getUntrackedParameter<std::string>("runInputDir");
40  hltSel_ =
41  pset.getUntrackedParameter<std::vector<std::string> >("SelectEvents");
42 
43  minEventsPerLs_ = pset.getUntrackedParameter<int>("minEventsPerLumi");
44  flagSkipFirstLumis_ = pset.getUntrackedParameter<bool>("skipFirstLumis");
45  flagEndOfRunKills_ = pset.getUntrackedParameter<bool>("endOfRunKills");
46  flagDeleteDatFiles_ = pset.getUntrackedParameter<bool>("deleteDatFiles");
47 
48  triggerSel();
49 
50  reset_();
51 }
StreamerInputSource(ParameterSet const &pset, InputSourceDescription const &desc)
std::unique_ptr< StreamerInputFile > streamReader_
DQMFileIterator fiterator_
static std::auto_ptr< EventSkipperByID > create(ParameterSet const &pset)
boost::shared_ptr< EventSkipperByID > eventSkipperByID_
edm::DQMStreamerReader::~DQMStreamerReader ( )
virtual

Definition at line 53 of file DQMStreamerReader.cc.

References closeFile_().

Member Function Documentation

bool edm::DQMStreamerReader::acceptEvent ( const EventMsgView evtmsg)
private

Check the trigger path to accept event

Definition at line 344 of file DQMStreamerReader.cc.

References acceptAllEvt_, eventSelector_, EventMsgView::hltCount(), EventMsgView::hltTriggerBits(), and matchTriggerSel_.

Referenced by prepareNextEvent().

344  {
345 
346  if (acceptAllEvt_) return true;
347  if (!matchTriggerSel_) return false;
348 
349  std::vector<unsigned char> hltTriggerBits_;
350  int hltTriggerCount_ = evtmsg->hltCount();
351  if (hltTriggerCount_ > 0) {
352  hltTriggerBits_.resize(1 + (hltTriggerCount_ - 1) / 4);
353  }
354  evtmsg->hltTriggerBits(&hltTriggerBits_[0]);
355 
356  if (eventSelector_->wantAll() ||
357  eventSelector_->acceptEvent(&hltTriggerBits_[0], evtmsg->hltCount())) {
358  return true;
359  }else{
360  return false;
361  }
362 }
void hltTriggerBits(uint8 *put_here) const
TriggerSelectorPtr eventSelector_
uint32 hltCount() const
Definition: EventMessage.h:95
bool edm::DQMStreamerReader::checkNextEvent ( )
protectedvirtual

This is the actual code for checking the new event and/or deserializing it.

Implements edm::RawInputSource.

Definition at line 286 of file DQMStreamerReader.cc.

References edm::StreamerInputSource::deserializeAndMergeWithRegistry(), edm::StreamerInputSource::deserializeEvent(), getHeaderMsg(), prepareNextEvent(), processedEventPerLs_, and streamReader_.

286  {
287  EventMsgView const* eview = prepareNextEvent();
288  if (eview == nullptr) {
289  return false;
290  }
291 
292  // this is reachable only if eview is set
293  // and the file is openned
294  if (streamReader_->newHeader()) {
295  // A new file has been opened and we must compare Headers here !!
296  // Get header/init from reader
297  InitMsgView const* header = getHeaderMsg();
298  deserializeAndMergeWithRegistry(*header, true);
299  }
300 
302  deserializeEvent(*eview);
303 
304  return true;
305 }
InitMsgView const * getHeaderMsg()
EventMsgView const * prepareNextEvent()
std::unique_ptr< StreamerInputFile > streamReader_
void deserializeEvent(EventMsgView const &eventView)
unsigned int processedEventPerLs_
void deserializeAndMergeWithRegistry(InitMsgView const &initView, bool subsequent=false)
void edm::DQMStreamerReader::closeFile_ ( )
privatevirtual

Reimplemented from edm::InputSource.

Definition at line 134 of file DQMStreamerReader.cc.

References streamReader_.

Referenced by openNextFile_(), prepareNextEvent(), prepareNextFile(), and ~DQMStreamerReader().

134  {
135  if (streamReader_.get() != nullptr) {
136  streamReader_->closeStreamerFile();
137  streamReader_ = nullptr;
138  }
139 }
std::unique_ptr< StreamerInputFile > streamReader_
void edm::DQMStreamerReader::fillDescriptions ( ConfigurationDescriptions descriptions)
static

Definition at line 381 of file DQMStreamerReader.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::addUntracked(), edm::EventSkipperByID::fillDescription(), edm::StreamerInputSource::fillDescription(), edm::DQMFileIterator::fillDescription(), and edm::ParameterSetDescription::setComment().

382  {
384  desc.setComment("Reads events from streamer files.");
385 
386  desc.addUntracked<std::vector<std::string> >("SelectEvents")
387  ->setComment("HLT path to select events ");
388 
389  desc.addUntracked<int>("minEventsPerLumi", 1)->setComment(
390  "Minimum number of events to process per lumisection, "
391  "before switching to a new input file. If the next file "
392  "does not yet exist, "
393  "the number of processed events will be bigger.");
394 
395  desc.addUntracked<bool>("skipFirstLumis", false)->setComment(
396  "Skip (and ignore the minEventsPerLumi parameter) for the files "
397  "which have been available at the begining of the processing. "
398  "If set to true, the reader will open last available file for "
399  "processing.");
400 
401  desc.addUntracked<bool>("deleteDatFiles", false)->setComment(
402  "Delete data files after they have been closed, in order to "
403  "save disk space.");
404 
405  desc.addUntracked<bool>("endOfRunKills", false)->setComment(
406  "Kill the processing as soon as the end-of-run file appears, even if "
407  "there are/will be unprocessed lumisections.");
408 
409  // desc.addUntracked<unsigned int>("skipEvents", 0U)
410  // ->setComment("Skip the first 'skipEvents' events that otherwise would "
411  // "have been processed.");
412 
413  // This next parameter is read in the base class, but its default value
414  // depends on the derived class, so it is set here.
415  desc.addUntracked<bool>("inputFileTransitionsEachEvent", false);
416 
420 
421  descriptions.add("source", desc);
422 }
static void fillDescription(ParameterSetDescription &description)
static void fillDescription(ParameterSetDescription &d)
static void fillDescription(ParameterSetDescription &desc)
EventMsgView const * edm::DQMStreamerReader::getEventMsg ( )
private

Definition at line 171 of file DQMStreamerReader.cc.

References producerFileCleanner::msg, and streamReader_.

Referenced by prepareNextEvent().

171  {
172  if (!streamReader_->next()) {
173  return nullptr;
174  }
175 
176  EventMsgView const* msg = streamReader_->currentRecord();
177 
178  // if (msg != nullptr) dumpEventView(msg);
179  return msg;
180 }
std::unique_ptr< StreamerInputFile > streamReader_
InitMsgView const * edm::DQMStreamerReader::getHeaderMsg ( )
private

Definition at line 159 of file DQMStreamerReader.cc.

References InitMsgView::code(), edm::hlt::Exception, edm::errors::FileReadError, Header::INIT, and streamReader_.

Referenced by checkNextEvent(), and openFile_().

159  {
160  InitMsgView const* header = streamReader_->startMessage();
161 
162  if (header->code() != Header::INIT) { // INIT Msg
163  throw Exception(errors::FileReadError, "DQMStreamerReader::readHeader")
164  << "received wrong message type: expected INIT, got " << header->code()
165  << "\n";
166  }
167 
168  return header;
169 }
std::unique_ptr< StreamerInputFile > streamReader_
uint32 code() const
Definition: InitMessage.h:70
bool edm::DQMStreamerReader::matchTriggerSel ( Strings const &  tnames)
private

Check if hlt selection matches any trigger name taken from the header file

Definition at line 324 of file DQMStreamerReader.cc.

References end, hltSel_, i, matchTriggerSel_, edm::regexMatch(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by openFile_().

324  {
325  matchTriggerSel_ = false;
326  for (Strings::const_iterator i(hltSel_.begin()), end(hltSel_.end());
327  i!=end; ++i){
328  std::string hltPath(*i);
329  boost::erase_all(hltPath, " \t");
330  std::vector<Strings::const_iterator> matches = regexMatch(tnames, hltPath);
331  if (matches.empty()){
332  edm::LogWarning("Trigger selection does not match any trigger path!!!") << std::endl;
333  matchTriggerSel_ = false;
334  }else{
335  matchTriggerSel_ = true;
336  }
337  }
338  return matchTriggerSel_;
339 }
int i
Definition: DBlmapReader.cc:9
#define end
Definition: vmac.h:37
std::vector< std::vector< std::string >::const_iterator > regexMatch(std::vector< std::string > const &strings, boost::regex const &regexp)
Definition: RegexMatch.cc:30
bool edm::DQMStreamerReader::newHeader ( )
void edm::DQMStreamerReader::openFile_ ( std::string  filename)
private

Definition at line 99 of file DQMStreamerReader.cc.

References acceptAllEvt_, edm::ParameterSet::addParameter(), edm::StreamerInputSource::deserializeAndMergeWithRegistry(), eventSelector_, eventSkipperByID_, flagDeleteDatFiles_, getHeaderMsg(), hltSel_, matchTriggerSel(), processedEventPerLs_, and streamReader_.

Referenced by openNextFile_().

99  {
101  edm::ParameterSet pset;
102 
103  streamReader_ = std::unique_ptr<StreamerInputFile>(
104  new StreamerInputFile(newStreamerFile_, eventSkipperByID_));
105 
106  InitMsgView const* header = getHeaderMsg();
107  deserializeAndMergeWithRegistry(*header, false);
108 
109  // dump the list of HLT trigger name from the header
110  // dumpInitHeader(header);
111 
112  // if specific trigger selection is requested, check if the requested triggers
113  // match with trigger paths in the header file
114  if (!acceptAllEvt_){
115  Strings tnames;
116  header->hltTriggerNames(tnames);
117 
118  pset.addParameter<Strings>("SelectEvents", hltSel_);
119  eventSelector_.reset(new TriggerSelector(pset, tnames));
120 
121  // check if any trigger path name requested matches with trigger name in the header file
122  matchTriggerSel(tnames);
123  }
124 
125  // our initialization
127 
128  if (flagDeleteDatFiles_) {
129  // unlink the file
130  unlink(newStreamerFile_.c_str());
131  }
132 }
std::vector< std::string > Strings
Definition: MsgTools.h:18
bool matchTriggerSel(Strings const &tnames)
InitMsgView const * getHeaderMsg()
TriggerSelectorPtr eventSelector_
std::unique_ptr< StreamerInputFile > streamReader_
void addParameter(std::string const &name, T const &value)
Definition: ParameterSet.h:142
unsigned int processedEventPerLs_
void deserializeAndMergeWithRegistry(InitMsgView const &initView, bool subsequent=false)
boost::shared_ptr< EventSkipperByID > eventSkipperByID_
bool edm::DQMStreamerReader::openNextFile_ ( )
private

Definition at line 141 of file DQMStreamerReader.cc.

References closeFile_(), fiterator_, edm::DQMFileIterator::front(), edm::DQMFileIterator::logFileAction(), fjr2json::lumi, edm::DQMFileIterator::make_path_data(), openFile_(), AlCaHLTBitMon_ParallelJobs::p, edm::DQMFileIterator::pop(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by prepareNextFile().

141  {
142  closeFile_();
143 
144  const DQMFileIterator::LumiEntry& lumi = fiterator_.front();
146  fiterator_.pop();
147 
148  if (boost::filesystem::exists(p)) {
149  openFile_(p);
150  return true;
151  } else {
152  /* dat file missing */
153  fiterator_.logFileAction("Data file (specified in json) is missing:", p);
154 
155  return false;
156  }
157 }
std::string make_path_data(const LumiEntry &lumi)
tuple lumi
Definition: fjr2json.py:35
void openFile_(std::string filename)
const LumiEntry & front()
void logFileAction(const std::string &msg, const std::string &fileName="") const
DQMFileIterator fiterator_
EventMsgView const * edm::DQMStreamerReader::prepareNextEvent ( )
private

Waits and reads the event header. If end-of-run nullptr is returned.

Definition at line 246 of file DQMStreamerReader.cc.

References acceptEvent(), closeFile_(), edm::DQMFileIterator::delay(), fiterator_, getEventMsg(), GetRecoTauVFromDQM_MC_cff::next, prepareNextFile(), streamReader_, and edm::DQMFileIterator::updateWatchdog().

Referenced by checkNextEvent(), and skip().

246  {
248 
249  EventMsgView const* eview = nullptr;
250  typedef DQMFileIterator::State State;
251 
252  // wait for the next event
253  for (;;) {
254  // edm::LogAbsolute("DQMStreamerReader")
255  // << "State loop.";
256  bool next = prepareNextFile();
257  if (!next) return nullptr;
258 
259  // sleep
260  if (streamReader_.get() == nullptr) {
261  // the reader does not exist
262  fiterator_.delay();
263  } else {
264  // our reader exists, try to read out an event
265  eview = getEventMsg();
266 
267  if (eview == nullptr) {
268  // read unsuccessful
269  // this means end of file, so close the file
270  closeFile_();
271  } else {
272  if (!acceptEvent(eview)) {
273  continue;
274  } else {
275  return eview;
276  }
277  }
278  }
279  }
280  return eview;
281 }
bool acceptEvent(const EventMsgView *)
std::unique_ptr< StreamerInputFile > streamReader_
EventMsgView const * getEventMsg()
DQMFileIterator fiterator_
bool edm::DQMStreamerReader::prepareNextFile ( )
private

Prepare (open) the next file for reading. It is used by prepareNextEvent and in the constructor.

Does not block/wait.

Return false if this is end of run and/or no more file are available. However, return of "true" does not imply the file has been openned, but we need to wait until some future file becomes available.

Definition at line 192 of file DQMStreamerReader.cc.

References closeFile_(), fiterator_, flagEndOfRunKills_, edm::DQMFileIterator::lumiReady(), minEventsPerLs_, openNextFile_(), processedEventPerLs_, edm::DQMFileIterator::state(), streamReader_, and edm::DQMFileIterator::update_state().

Referenced by prepareNextEvent(), and reset_().

192  {
193  typedef DQMFileIterator::State State;
194 
195  for (;;) {
197 
198  // check for end of run file and force quit
199  if (flagEndOfRunKills_ && (fiterator_.state() != State::OPEN)) {
200  closeFile_();
201  return false;
202  }
203 
204  // check for end of run and quit if everything has been processed.
205  // this clean exit
206  if ((streamReader_.get() == nullptr) && (!fiterator_.lumiReady()) &&
207  (fiterator_.state() == State::EOR)) {
208 
209  closeFile_();
210  return false;
211  }
212 
213  // if this is end of run and no more files to process
214  // close it
216  (!fiterator_.lumiReady()) && (fiterator_.state() == State::EOR)) {
217 
218  closeFile_();
219  return false;
220  }
221 
222  // skip to the next file if we have no files openned yet
223  if (streamReader_.get() == nullptr) {
224  if (fiterator_.lumiReady()) {
225  openNextFile_();
226  // we might need to open once more (if .dat is missing)
227  continue;
228  }
229  }
230 
231  // or if there is a next file and enough eventshas been processed.
233  openNextFile_();
234  // we might need to open once more (if .dat is missing)
235  continue;
236  }
237 
238  return true;
239  }
240 }
std::unique_ptr< StreamerInputFile > streamReader_
unsigned int processedEventPerLs_
DQMFileIterator fiterator_
void edm::DQMStreamerReader::reset_ ( )
privatevirtual

Reimplemented from edm::RawInputSource.

Definition at line 55 of file DQMStreamerReader.cc.

References edm::DQMFileIterator::advanceToLumi(), edm::DQMFileIterator::delay(), fiterator_, flagSkipFirstLumis_, ConfigFiles::l, edm::DQMFileIterator::lastLumiFound(), edm::DQMFileIterator::logFileAction(), GetRecoTauVFromDQM_MC_cff::next, prepareNextFile(), streamReader_, and edm::DQMFileIterator::update_state().

Referenced by DQMStreamerReader().

55  {
56  // We have to load at least a single header,
57  // so the ProductRegistry gets initialized.
58  //
59  // This must happen here (inside the constructor),
60  // as ProductRegistry gets frozen after we initialize:
61  // https://cmssdt.cern.ch/SDT/lxr/source/FWCore/Framework/src/Schedule.cc#441
62 
64  "Waiting for the first lumi in order to initialize.");
65 
67 
68  // Fast-forward to the last open file.
69  if (flagSkipFirstLumis_) {
70  unsigned int l = fiterator_.lastLumiFound();
71  if (l > 1) {
73  }
74  }
75 
76  for (;;) {
77  bool next = prepareNextFile();
78 
79  // check for end of run
80  if (!next) {
82  "End of run reached before DQMStreamerReader was initialised.");
83  return;
84  }
85 
86  // check if we have a file openned
87  if (streamReader_.get() != nullptr) {
88  // we are now initialised
89  break;
90  }
91 
92  // wait
93  fiterator_.delay();
94  }
95 
96  fiterator_.logFileAction("DQMStreamerReader initialised.");
97 }
void advanceToLumi(unsigned int lumi)
std::unique_ptr< StreamerInputFile > streamReader_
void logFileAction(const std::string &msg, const std::string &fileName="") const
unsigned int lastLumiFound()
DQMFileIterator fiterator_
void edm::DQMStreamerReader::skip ( int  toSkip)
protectedvirtual

Reimplemented from edm::InputSource.

Definition at line 364 of file DQMStreamerReader.cc.

References EventMsgView::event(), eventSkipperByID_, i, EventMsgView::lumi(), prepareNextEvent(), and EventMsgView::run().

364  {
365  for (int i = 0; i != toSkip; ++i) {
366  EventMsgView const* evMsg = prepareNextEvent();
367 
368  if (evMsg == nullptr) {
369  return;
370  }
371 
372  // If the event would have been skipped anyway, don't count it as a skipped
373  // event.
374  if (eventSkipperByID_ && eventSkipperByID_->skipIt(
375  evMsg->run(), evMsg->lumi(), evMsg->event())) {
376  --i;
377  }
378  }
379 }
int i
Definition: DBlmapReader.cc:9
uint32 lumi() const
Definition: EventMessage.cc:85
uint32 run() const
Definition: EventMessage.cc:73
EventMsgView const * prepareNextEvent()
uint32 event() const
Definition: EventMessage.cc:79
boost::shared_ptr< EventSkipperByID > eventSkipperByID_
bool edm::DQMStreamerReader::triggerSel ( )
private

If hlt trigger selection is '*', return a boolean variable to accept all events

Definition at line 310 of file DQMStreamerReader.cc.

References acceptAllEvt_, end, hltSel_, i, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by DQMStreamerReader().

310  {
311  acceptAllEvt_ = false;
312  for (Strings::const_iterator i(hltSel_.begin()), end(hltSel_.end());
313  i!=end; ++i){
314  std::string hltPath(*i);
315  boost::erase_all(hltPath, " \t");
316  if (hltPath == "*") acceptAllEvt_ = true;
317  }
318  return acceptAllEvt_;
319 }
int i
Definition: DBlmapReader.cc:9
#define end
Definition: vmac.h:37

Member Data Documentation

bool edm::DQMStreamerReader::acceptAllEvt_
private

Definition at line 64 of file DQMStreamerReader.h.

Referenced by acceptEvent(), openFile_(), and triggerSel().

TriggerSelectorPtr edm::DQMStreamerReader::eventSelector_
private

Definition at line 83 of file DQMStreamerReader.h.

Referenced by acceptEvent(), and openFile_().

boost::shared_ptr<EventSkipperByID> edm::DQMStreamerReader::eventSkipperByID_
private

Definition at line 82 of file DQMStreamerReader.h.

Referenced by openFile_(), and skip().

DQMFileIterator edm::DQMStreamerReader::fiterator_
private

Definition at line 79 of file DQMStreamerReader.h.

Referenced by openNextFile_(), prepareNextEvent(), prepareNextFile(), and reset_().

bool edm::DQMStreamerReader::flagDeleteDatFiles_
private

Definition at line 77 of file DQMStreamerReader.h.

Referenced by DQMStreamerReader(), and openFile_().

bool edm::DQMStreamerReader::flagEndOfRunKills_
private

Definition at line 76 of file DQMStreamerReader.h.

Referenced by DQMStreamerReader(), and prepareNextFile().

bool edm::DQMStreamerReader::flagSkipFirstLumis_
private

Definition at line 75 of file DQMStreamerReader.h.

Referenced by DQMStreamerReader(), and reset_().

Strings edm::DQMStreamerReader::hltSel_
private

Definition at line 70 of file DQMStreamerReader.h.

Referenced by DQMStreamerReader(), matchTriggerSel(), openFile_(), and triggerSel().

bool edm::DQMStreamerReader::matchTriggerSel_
private

Definition at line 65 of file DQMStreamerReader.h.

Referenced by acceptEvent(), and matchTriggerSel().

unsigned int edm::DQMStreamerReader::minEventsPerLs_
private

Definition at line 73 of file DQMStreamerReader.h.

Referenced by DQMStreamerReader(), and prepareNextFile().

unsigned int edm::DQMStreamerReader::processedEventPerLs_
private

Definition at line 72 of file DQMStreamerReader.h.

Referenced by checkNextEvent(), openFile_(), and prepareNextFile().

std::string edm::DQMStreamerReader::runInputDir_
private

Definition at line 68 of file DQMStreamerReader.h.

Referenced by DQMStreamerReader().

unsigned int edm::DQMStreamerReader::runNumber_
private

Definition at line 67 of file DQMStreamerReader.h.

Referenced by DQMStreamerReader().

std::string edm::DQMStreamerReader::streamLabel_
private

Definition at line 69 of file DQMStreamerReader.h.

std::unique_ptr<StreamerInputFile> edm::DQMStreamerReader::streamReader_
private