CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
DQMRootOutputModule Class Reference
Inheritance diagram for DQMRootOutputModule:
edm::one::OutputModule<> edm::one::OutputModuleBase edm::EDConsumerBase

Public Member Functions

virtual void beginJob () override
 
 DQMRootOutputModule (edm::ParameterSet const &pset)
 
virtual ~DQMRootOutputModule ()
 
- Public Member Functions inherited from edm::one::OutputModule<>
 OutputModule (edm::ParameterSet const &iPSet)
 
- Public Member Functions inherited from edm::one::OutputModuleBase
BranchIDLists const * branchIDLists ()
 
std::array< bool, NumBranchTypes > const & hasNewlyDroppedBranch () const
 
SelectedProductsForBranchType const & keptProducts () const
 
int maxEvents () const
 
const ModuleDescriptionmoduleDescription () const
 
OutputModuleBaseoperator= (OutputModuleBase const &)=delete
 
 OutputModuleBase (ParameterSet const &pset)
 
 OutputModuleBase (OutputModuleBase const &)=delete
 
std::string const & processName () const
 
int remainingEvents () const
 
bool selected (BranchDescription const &desc) const
 
void selectProducts (ProductRegistry const &preg, ThinnedAssociationsHelper const &)
 
SubProcessParentageHelper const * subProcessParentageHelper () const
 
ThinnedAssociationsHelper const * thinnedAssociationsHelper () const
 
bool wantAllEvents () const
 
virtual ~OutputModuleBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

Static Public Member Functions

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

Private Member Functions

void finishEndFile ()
 
virtual bool isFileOpen () const override
 
virtual void openFile (edm::FileBlock const &) override
 
virtual void postForkReacquireResources (unsigned int childIndex, unsigned int numberOfChildren) override
 
virtual void reallyCloseFile () override
 
void startEndFile ()
 
virtual void write (edm::EventForOutput const &e) override
 
virtual void writeLuminosityBlock (edm::LuminosityBlockForOutput const &) override
 
virtual void writeRun (edm::RunForOutput const &) override
 

Private Attributes

ULong64_t m_beginTime
 
std::map< unsigned int, unsigned int > m_dqmKindToTypeIndex
 
bool m_enableMultiThread
 
ULong64_t m_endTime
 
std::auto_ptr< TFile > m_file
 
std::string m_fileName
 
unsigned int m_filterOnRun
 
ULong64_t m_firstIndex
 
std::string m_fullNameBuffer
 
std::string * m_fullNameBufferPtr
 
TTree * m_indicesTree
 
edm::JobReport::Token m_jrToken
 
ULong64_t m_lastIndex
 
std::string m_logicalFileName
 
unsigned int m_lumi
 
unsigned int m_presentHistoryIndex
 
edm::ProcessHistoryRegistry m_processHistoryRegistry
 
unsigned int m_run
 
std::vector< edm::ProcessHistoryIDm_seenHistories
 
std::vector< boost::shared_ptr< TreeHelperBase > > m_treeHelpers
 
unsigned int m_type
 

Additional Inherited Members

- Public Types inherited from edm::one::OutputModuleBase
typedef OutputModuleBase ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Protected Member Functions inherited from edm::one::OutputModuleBase
void configure (OutputModuleDescription const &desc)
 
ModuleDescription const & description () const
 
void doBeginJob ()
 
bool doBeginLuminosityBlock (LuminosityBlockPrincipal const &lbp, EventSetup const &c, ModuleCallingContext const *)
 
bool doBeginRun (RunPrincipal const &rp, EventSetup const &c, ModuleCallingContext const *)
 
void doEndJob ()
 
bool doEndLuminosityBlock (LuminosityBlockPrincipal const &lbp, EventSetup const &c, ModuleCallingContext const *)
 
bool doEndRun (RunPrincipal const &rp, EventSetup const &c, ModuleCallingContext const *)
 
bool doEvent (EventPrincipal const &ep, EventSetup const &c, ActivityRegistry *, ModuleCallingContext const *)
 
void doPreallocate (PreallocationConfiguration const &)
 
std::map< BranchID::value_type, BranchID::value_type > const & droppedBranchIDToKeptBranchID ()
 
ParameterSetID selectorConfig () const
 
void setEventSelectionInfo (std::map< std::string, std::vector< std::pair< std::string, int > > > const &outputModulePathPositions, bool anyProductProduced)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Definition at line 182 of file DQMRootOutputModule.cc.

Constructor & Destructor Documentation

DQMRootOutputModule::DQMRootOutputModule ( edm::ParameterSet const &  pset)
explicit

Definition at line 271 of file DQMRootOutputModule.cc.

271  :
274 m_fileName(pset.getUntrackedParameter<std::string>("fileName")),
275 m_logicalFileName(pset.getUntrackedParameter<std::string>("logicalFileName")),
276 m_file(0),
277 m_treeHelpers(kNIndicies,boost::shared_ptr<TreeHelperBase>()),
279 m_filterOnRun(pset.getUntrackedParameter<unsigned int>("filterOnRun")),
280 m_enableMultiThread(false),
282 m_indicesTree(0)
283 {
284 }
unsigned int m_presentHistoryIndex
std::auto_ptr< TFile > m_file
OutputModuleBase(ParameterSet const &pset)
std::vector< boost::shared_ptr< TreeHelperBase > > m_treeHelpers
std::string * m_fullNameBufferPtr
DQMRootOutputModule::~DQMRootOutputModule ( )
virtual

Definition at line 299 of file DQMRootOutputModule.cc.

300 {
301 }

Member Function Documentation

void DQMRootOutputModule::beginJob ( void  )
overridevirtual

Reimplemented from edm::one::OutputModuleBase.

Definition at line 292 of file DQMRootOutputModule.cc.

References DQMStore::enableMultiThread_, and m_enableMultiThread.

293 {
294  // Determine if we are running multithreading asking to the DQMStore. Not to be moved in the ctor
295  edm::Service<DQMStore> dstore;
297 }
bool enableMultiThread_
Definition: DQMStore.h:704
void DQMRootOutputModule::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 602 of file DQMRootOutputModule.cc.

References edm::ConfigurationDescriptions::addDefault(), edm::ParameterSetDescription::addOptionalUntracked(), edm::ParameterSetDescription::addUntracked(), DEFINE_FWK_MODULE, edm::OutputModule::fillDescription(), edm::ParameterSetDescription::setAllowAnything(), AlCaHLTBitMon_QueryRunRegistry::string, and mitigatedMETSequence_cff::U.

602  {
604 
605  desc.addUntracked<std::string>("fileName");
606  desc.addUntracked<std::string>("logicalFileName","");
607  desc.addUntracked<unsigned int>("filterOnRun",0)
608  ->setComment("Only write the run with this run number. 0 means write all runs.");
609  desc.addOptionalUntracked<int>("splitLevel", 99)
610  ->setComment("UNUSED Only here to allow older configurations written for PoolOutputModule to work.");
611  edm::OutputModule::fillDescription(desc, std::vector<std::string>(1U, std::string("drop *")));
612 
614  dataSet.setAllowAnything();
615  desc.addUntracked<edm::ParameterSetDescription>("dataset", dataSet)
616  ->setComment("PSet is only used by Data Operations and not by this module.");
617 
618  descriptions.addDefault(desc);
619 
620 }
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
void setAllowAnything()
allow any parameter label/value pairs
void addDefault(ParameterSetDescription const &psetDescription)
static void fillDescription(ParameterSetDescription &desc, std::vector< std::string > const &iDefaultOutputCommands=ProductSelectorRules::defaultSelectionStrings())
ParameterDescriptionBase * addOptionalUntracked(U const &iLabel, T const &value)
void DQMRootOutputModule::finishEndFile ( )
private

Definition at line 586 of file DQMRootOutputModule.cc.

References m_file, m_jrToken, and edm::JobReport::outputFileClosed().

Referenced by reallyCloseFile().

586  {
587  //std::cout << "DQMRootOutputModule::finishEndFile"<< std::endl;
588  m_file->Write();
589  m_file->Close();
592 }
std::auto_ptr< TFile > m_file
void outputFileClosed(Token fileToken)
Definition: JobReport.cc:517
edm::JobReport::Token m_jrToken
bool DQMRootOutputModule::isFileOpen ( ) const
overrideprivatevirtual

Reimplemented from edm::one::OutputModuleBase.

Definition at line 319 of file DQMRootOutputModule.cc.

References m_file.

320 {
321  return nullptr!=m_file.get();
322 }
std::auto_ptr< TFile > m_file
void DQMRootOutputModule::openFile ( edm::FileBlock const &  )
overrideprivatevirtual

Reimplemented from edm::one::OutputModuleBase.

Definition at line 325 of file DQMRootOutputModule.cc.

References edm::createGlobalIdentifier(), edm::one::OutputModuleBase::description(), cms::Digest::digest(), MonitorElement::DQM_KIND_INT, MonitorElement::DQM_KIND_REAL, MonitorElement::DQM_KIND_STRING, MonitorElement::DQM_KIND_TH1D, MonitorElement::DQM_KIND_TH1F, MonitorElement::DQM_KIND_TH1S, MonitorElement::DQM_KIND_TH2D, MonitorElement::DQM_KIND_TH2F, MonitorElement::DQM_KIND_TH2S, MonitorElement::DQM_KIND_TH3F, MonitorElement::DQM_KIND_TPROFILE, MonitorElement::DQM_KIND_TPROFILE2D, mps_fire::i, kBeginTimeBranch, kEndTimeBranch, kFirstIndex, kFloatIndex, kIndicesTree, kIntIndex, kLastIndex, kLumiBranch, kProcessHistoryIndexBranch, kRunBranch, kStringIndex, kTH1DIndex, kTH1FIndex, kTH1SIndex, kTH2DIndex, kTH2FIndex, kTH2SIndex, kTH3FIndex, kTProfile2DIndex, kTProfileIndex, kTypeBranch, kTypeNames, m_beginTime, m_dqmKindToTypeIndex, m_endTime, m_file, m_fileName, m_firstIndex, m_fullNameBufferPtr, m_indicesTree, m_jrToken, m_lastIndex, m_logicalFileName, m_lumi, m_presentHistoryIndex, m_run, m_treeHelpers, m_type, makeHelper(), edm::JobReport::outputFileOpened(), AlCaHLTBitMon_QueryRunRegistry::string, and cms::MD5Result::toString().

Referenced by Vispa.Main.Application.Application::_readCommandLineAttributes(), Vispa.Main.Application.Application::doubleClickOnFile(), Vispa.Main.Application.Application::openFileDialog(), and Vispa.Main.Application.Application::openRecentFileSlot().

326 {
327  //NOTE: I need to also set the I/O performance settings
328 
329  m_file = std::auto_ptr<TFile>(new TFile(m_fileName.c_str(),"RECREATE",
330  "1" //This is the file format version number
331  ));
332 
334  cms::Digest branchHash;
337  std::string(),
338  "DQMRootOutputModule",
339  description().moduleLabel(),
341  std::string(),
342  branchHash.digest().toString(),
343  std::vector<std::string>()
344  );
345 
346 
348  m_indicesTree->Branch(kRunBranch,&m_run);
349  m_indicesTree->Branch(kLumiBranch,&m_lumi);
353  m_indicesTree->Branch(kTypeBranch,&m_type);
356  m_indicesTree->SetDirectory(m_file.get());
357 
358  unsigned int i = 0;
359  for(std::vector<boost::shared_ptr<TreeHelperBase> >::iterator it = m_treeHelpers.begin(), itEnd = m_treeHelpers.end();
360  it != itEnd;
361  ++it,++i) {
362  //std::cout <<"making "<<kTypeNames[i]<<std::endl;
363  TTree* tree = new TTree(kTypeNames[i],kTypeNames[i]);
364  *it = boost::shared_ptr<TreeHelperBase>(makeHelper(i,tree,m_fullNameBufferPtr));
365  tree->SetDirectory(m_file.get()); //TFile takes ownership
366  }
367 
380 }
static const char *const kRunBranch
Definition: format.h:41
ModuleDescription const & description() const
static const char *const kTypeNames[]
Definition: format.h:28
static const char *const kIndicesTree
Definition: format.h:40
unsigned int m_presentHistoryIndex
static TreeHelperBase * makeHelper(unsigned int iTypeIndex, TTree *iTree, std::string *iFullNameBufferPtr)
static const char *const kFirstIndex
Definition: format.h:47
static const char *const kLumiBranch
Definition: format.h:42
MD5Result digest() const
Definition: Digest.cc:194
std::map< unsigned int, unsigned int > m_dqmKindToTypeIndex
std::auto_ptr< TFile > m_file
static const char *const kTypeBranch
Definition: format.h:46
static const char *const kProcessHistoryIndexBranch
Definition: format.h:43
Token outputFileOpened(std::string const &physicalFileName, std::string const &logicalFileName, std::string const &catalog, std::string const &outputModuleClassName, std::string const &moduleLabel, std::string const &guid, std::string const &dataType, std::string const &branchHash, std::vector< std::string > const &branchNames)
Definition: JobReport.cc:471
static const char *const kEndTimeBranch
Definition: format.h:45
std::vector< boost::shared_ptr< TreeHelperBase > > m_treeHelpers
std::string * m_fullNameBufferPtr
static const char *const kLastIndex
Definition: format.h:48
std::string toString() const
Definition: Digest.cc:87
static const char *const kBeginTimeBranch
Definition: format.h:44
edm::JobReport::Token m_jrToken
Definition: tree.py:1
std::string createGlobalIdentifier()
void DQMRootOutputModule::postForkReacquireResources ( unsigned int  childIndex,
unsigned int  numberOfChildren 
)
overrideprivatevirtual

Reimplemented from edm::one::OutputModuleBase.

Definition at line 384 of file DQMRootOutputModule.cc.

References corrVsCorr::filename, m_fileName, and callgraph::path.

384  {
385  // this is copied from IOPool/Output/src/PoolOutputModule.cc, for consistency
386  unsigned int digits = 0;
387  while (numberOfChildren != 0) {
388  ++digits;
389  numberOfChildren /= 10;
390  }
391  // protect against zero numberOfChildren
392  if (digits == 0) {
393  digits = 3;
394  }
395 
396  char buffer[digits + 2];
397  snprintf(buffer, digits + 2, "_%0*d", digits, childIndex);
398 
400  m_fileName = (filename.parent_path() / (filename.stem().string() + buffer + filename.extension().string())).string();
401 }
void DQMRootOutputModule::reallyCloseFile ( )
overrideprivatevirtual

Reimplemented from edm::one::OutputModuleBase.

Definition at line 523 of file DQMRootOutputModule.cc.

References finishEndFile(), and startEndFile().

523  {
524  startEndFile();
525  finishEndFile();
526 }
void DQMRootOutputModule::startEndFile ( )
private

Definition at line 529 of file DQMRootOutputModule.cc.

References edm::ProcessHistory::begin(), edm::pset::Registry::begin(), edm::ProcessHistory::end(), edm::pset::Registry::end(), edm::ProcessHistoryRegistry::getMapped(), diffTreeTool::index, edm::pset::Registry::instance(), kMetaDataDirectory, kParameterSetBranch, kParameterSetTree, kPHIndexBranch, kProcessConfigurationParameterSetIDBranch, kProcessConfigurationPassID, kProcessConfigurationProcessNameBranch, kProcessConfigurationReleaseVersion, kProcessHistoryTree, m_file, m_processHistoryRegistry, m_seenHistories, edm::one::OutputModuleBase::processName(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by reallyCloseFile().

529  {
530  //std::cout << "DQMRootOutputModule::startEndFile"<< std::endl;
531  //fill in the meta data
532  m_file->cd();
533  TDirectory* metaDataDirectory = m_file->mkdir(kMetaDataDirectory);
534 
535 
536  //Write out the Process History
537  TTree* processHistoryTree = new TTree(kProcessHistoryTree,kProcessHistoryTree);
538  processHistoryTree->SetDirectory(metaDataDirectory);
539 
540  unsigned int index = 0;
541  processHistoryTree->Branch(kPHIndexBranch,&index);
543  processHistoryTree->Branch(kProcessConfigurationProcessNameBranch,&processName);
544  std::string parameterSetID;
545  processHistoryTree->Branch(kProcessConfigurationParameterSetIDBranch,&parameterSetID);
546  std::string releaseVersion;
547  processHistoryTree->Branch(kProcessConfigurationReleaseVersion,&releaseVersion);
548  std::string passID;
549  processHistoryTree->Branch(kProcessConfigurationPassID,&passID);
550 
551  for(std::vector<edm::ProcessHistoryID>::iterator it = m_seenHistories.begin(), itEnd = m_seenHistories.end();
552  it !=itEnd;
553  ++it) {
555  assert(0!=history);
556  index = 0;
557  for(edm::ProcessHistory::collection_type::const_iterator itPC = history->begin(), itPCEnd = history->end();
558  itPC != itPCEnd;
559  ++itPC,++index) {
560  processName = itPC->processName();
561  releaseVersion = itPC->releaseVersion();
562  passID = itPC->passID();
563  parameterSetID = itPC->parameterSetID().compactForm();
564  processHistoryTree->Fill();
565  }
566  }
567 
568  //Store the ParameterSets
569  TTree* parameterSetsTree = new TTree(kParameterSetTree,kParameterSetTree);
570  parameterSetsTree->SetDirectory(metaDataDirectory);
571  std::string blob;
572  parameterSetsTree->Branch(kParameterSetBranch,&blob);
573 
575  assert(0!=psr);
576  for(edm::pset::Registry::const_iterator it = psr->begin(), itEnd = psr->end();
577  it != itEnd;
578  ++it) {
579  blob.clear();
580  it->second.toString(blob);
581  parameterSetsTree->Fill();
582  }
583 
584 }
const_iterator begin() const
static const char *const kProcessHistoryTree
Definition: format.h:54
map_type::const_iterator const_iterator
Definition: Registry.h:63
bool getMapped(ProcessHistoryID const &key, ProcessHistory &value) const
const_iterator end() const
Definition: Registry.h:69
edm::ProcessHistoryRegistry m_processHistoryRegistry
static const char *const kPHIndexBranch
Definition: format.h:55
static const char *const kParameterSetBranch
Definition: format.h:62
static const char *const kMetaDataDirectory
Definition: format.h:52
std::auto_ptr< TFile > m_file
static const char *const kParameterSetTree
Definition: format.h:61
const_iterator begin() const
Definition: Registry.h:65
static const char *const kProcessConfigurationPassID
Definition: format.h:59
static const char *const kProcessConfigurationReleaseVersion
Definition: format.h:58
std::string const & processName() const
static const char *const kProcessConfigurationProcessNameBranch
Definition: format.h:56
const_iterator end() const
static Registry * instance()
Definition: Registry.cc:12
static const char *const kProcessConfigurationParameterSetIDBranch
Definition: format.h:57
std::vector< edm::ProcessHistoryID > m_seenHistories
void DQMRootOutputModule::write ( edm::EventForOutput const &  e)
overrideprivatevirtual

Implements edm::one::OutputModuleBase.

Definition at line 405 of file DQMRootOutputModule.cc.

Referenced by pkg.AbstractPkg::generate().

405  {
406 }
void DQMRootOutputModule::writeLuminosityBlock ( edm::LuminosityBlockForOutput const &  iLumi)
overrideprivatevirtual

Implements edm::one::OutputModuleBase.

Definition at line 410 of file DQMRootOutputModule.cc.

References edm::LuminosityBlockForOutput::beginTime(), edm::LuminosityBlockForOutput::endTime(), spr::find(), DQMStore::getAllContents(), hcalTTPDigis_cfi::id, edm::LuminosityBlockForOutput::id(), mps_monitormerge::items, kNoTypesStored, m_beginTime, m_dqmKindToTypeIndex, m_enableMultiThread, m_endTime, m_filterOnRun, m_firstIndex, m_indicesTree, m_jrToken, m_lastIndex, m_lumi, m_presentHistoryIndex, m_processHistoryRegistry, m_run, m_seenHistories, m_treeHelpers, m_type, edm::OccurrenceForOutput::processHistory(), edm::OccurrenceForOutput::processHistoryID(), edm::ProcessHistoryRegistry::registerProcessHistory(), edm::JobReport::reportLumiSection(), edm::LuminosityBlockID::run(), edm::LuminosityBlockID::value(), and edm::Timestamp::value().

410  {
411  //std::cout << "DQMRootOutputModule::writeLuminosityBlock"<< std::endl;
412  edm::Service<DQMStore> dstore;
413  m_run = iLumi.id().run();
414  m_lumi = iLumi.id().value();
415  m_beginTime = iLumi.beginTime().value();
416  m_endTime = iLumi.endTime().value();
417  bool shouldWrite = (m_filterOnRun == 0 ||
418  (m_filterOnRun != 0 && m_filterOnRun == m_run));
419 
420  if (! shouldWrite)
421  return;
422  std::vector<MonitorElement *> items(dstore->getAllContents("",
424  m_enableMultiThread ? m_lumi : 0));
425  for(std::vector<MonitorElement*>::iterator it = items.begin(), itEnd=items.end();
426  it!=itEnd;
427  ++it) {
428  if((*it)->getLumiFlag()) {
429  std::map<unsigned int,unsigned int>::iterator itFound = m_dqmKindToTypeIndex.find((*it)->kind());
430  assert(itFound !=m_dqmKindToTypeIndex.end());
431  m_treeHelpers[itFound->second]->fill(*it);
432  }
433  }
434 
435  edm::ProcessHistoryID id = iLumi.processHistoryID();
436  std::vector<edm::ProcessHistoryID>::iterator itFind = std::find(m_seenHistories.begin(),m_seenHistories.end(),id);
437  if(itFind == m_seenHistories.end()) {
438  m_processHistoryRegistry.registerProcessHistory(iLumi.processHistory());
440  m_seenHistories.push_back(id);
441  } else {
442  m_presentHistoryIndex = itFind - m_seenHistories.begin();
443  }
444 
445  //Now store the relationship between run/lumi and indices in the other TTrees
446  bool storedLumiIndex = false;
447  unsigned int typeIndex = 0;
448  for(std::vector<boost::shared_ptr<TreeHelperBase> >::iterator it = m_treeHelpers.begin(), itEnd = m_treeHelpers.end();
449  it != itEnd;
450  ++it,++typeIndex) {
451  if((*it)->wasFilled()) {
452  m_type = typeIndex;
453  (*it)->getRangeAndReset(m_firstIndex,m_lastIndex);
454  storedLumiIndex = true;
455  m_indicesTree->Fill();
456  }
457  }
458  if(not storedLumiIndex) {
459  //need to record lumis even if we stored no MonitorElements since some later DQM modules
460  // look to see what lumis were processed
462  m_firstIndex=0;
463  m_lastIndex=0;
464  m_indicesTree->Fill();
465  }
466 
468  jr->reportLumiSection(m_jrToken, m_run, m_lumi);
469 }
unsigned int m_presentHistoryIndex
bool registerProcessHistory(ProcessHistory const &processHistory)
edm::ProcessHistoryRegistry m_processHistoryRegistry
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:20
std::vector< MonitorElement * > getAllContents(const std::string &path, uint32_t runNumber=0, uint32_t lumi=0) const
Definition: DQMStore.cc:2001
std::map< unsigned int, unsigned int > m_dqmKindToTypeIndex
std::vector< boost::shared_ptr< TreeHelperBase > > m_treeHelpers
edm::JobReport::Token m_jrToken
void reportLumiSection(JobReport::Token token, unsigned int run, unsigned int lumiSectId, unsigned long nEvents=0)
Definition: JobReport.cc:543
std::vector< edm::ProcessHistoryID > m_seenHistories
void DQMRootOutputModule::writeRun ( edm::RunForOutput const &  iRun)
overrideprivatevirtual

Implements edm::one::OutputModuleBase.

Definition at line 471 of file DQMRootOutputModule.cc.

References edm::RunForOutput::beginTime(), edm::RunForOutput::endTime(), spr::find(), DQMStore::getAllContents(), hcalTTPDigis_cfi::id, edm::RunForOutput::id(), mps_monitormerge::items, m_beginTime, m_dqmKindToTypeIndex, m_enableMultiThread, m_endTime, m_filterOnRun, m_firstIndex, m_indicesTree, m_jrToken, m_lastIndex, m_lumi, m_presentHistoryIndex, m_processHistoryRegistry, m_run, m_seenHistories, m_treeHelpers, m_type, edm::OccurrenceForOutput::processHistory(), edm::OccurrenceForOutput::processHistoryID(), edm::ProcessHistoryRegistry::registerProcessHistory(), edm::JobReport::reportRunNumber(), edm::RunID::run(), and edm::Timestamp::value().

471  {
472  //std::cout << "DQMRootOutputModule::writeRun"<< std::endl;
473  edm::Service<DQMStore> dstore;
474  m_run = iRun.id().run();
475  m_lumi = 0;
476  m_beginTime = iRun.beginTime().value();
477  m_endTime = iRun.endTime().value();
478  bool shouldWrite = (m_filterOnRun == 0 ||
479  (m_filterOnRun != 0 && m_filterOnRun == m_run));
480 
481  if (! shouldWrite)
482  return;
483 
484  std::vector<MonitorElement*> items(dstore->getAllContents("",
485  m_enableMultiThread ? m_run : 0));
486  for(std::vector<MonitorElement*>::iterator it = items.begin(), itEnd=items.end();
487  it!=itEnd;
488  ++it) {
489  if(not (*it)->getLumiFlag()) {
490  std::map<unsigned int,unsigned int>::iterator itFound = m_dqmKindToTypeIndex.find((*it)->kind());
491  assert (itFound !=m_dqmKindToTypeIndex.end());
492  m_treeHelpers[itFound->second]->fill(*it);
493  }
494  }
495 
496  edm::ProcessHistoryID id = iRun.processHistoryID();
497  std::vector<edm::ProcessHistoryID>::iterator itFind = std::find(m_seenHistories.begin(),m_seenHistories.end(),id);
498  if(itFind == m_seenHistories.end()) {
499  m_processHistoryRegistry.registerProcessHistory(iRun.processHistory());
501  m_seenHistories.push_back(id);
502  } else {
503  m_presentHistoryIndex = itFind - m_seenHistories.begin();
504  }
505 
506  //Now store the relationship between run/lumi and indices in the other TTrees
507  unsigned int typeIndex = 0;
508  for(std::vector<boost::shared_ptr<TreeHelperBase> >::iterator it = m_treeHelpers.begin(), itEnd = m_treeHelpers.end();
509  it != itEnd;
510  ++it,++typeIndex) {
511  if((*it)->wasFilled()) {
512  m_type = typeIndex;
513  (*it)->getRangeAndReset(m_firstIndex,m_lastIndex);
514  m_indicesTree->Fill();
515  }
516  }
517 
519  jr->reportRunNumber(m_jrToken, m_run);
520 }
unsigned int m_presentHistoryIndex
bool registerProcessHistory(ProcessHistory const &processHistory)
edm::ProcessHistoryRegistry m_processHistoryRegistry
void reportRunNumber(JobReport::Token token, unsigned int run)
Definition: JobReport.cc:553
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:20
std::vector< MonitorElement * > getAllContents(const std::string &path, uint32_t runNumber=0, uint32_t lumi=0) const
Definition: DQMStore.cc:2001
std::map< unsigned int, unsigned int > m_dqmKindToTypeIndex
std::vector< boost::shared_ptr< TreeHelperBase > > m_treeHelpers
edm::JobReport::Token m_jrToken
std::vector< edm::ProcessHistoryID > m_seenHistories

Member Data Documentation

ULong64_t DQMRootOutputModule::m_beginTime
private

Definition at line 209 of file DQMRootOutputModule.cc.

Referenced by openFile(), writeLuminosityBlock(), and writeRun().

std::map<unsigned int, unsigned int> DQMRootOutputModule::m_dqmKindToTypeIndex
private

Definition at line 218 of file DQMRootOutputModule.cc.

Referenced by openFile(), writeLuminosityBlock(), and writeRun().

bool DQMRootOutputModule::m_enableMultiThread
private

Definition at line 214 of file DQMRootOutputModule.cc.

Referenced by beginJob(), writeLuminosityBlock(), and writeRun().

ULong64_t DQMRootOutputModule::m_endTime
private

Definition at line 210 of file DQMRootOutputModule.cc.

Referenced by openFile(), writeLuminosityBlock(), and writeRun().

std::auto_ptr<TFile> DQMRootOutputModule::m_file
private

Definition at line 202 of file DQMRootOutputModule.cc.

Referenced by finishEndFile(), isFileOpen(), openFile(), and startEndFile().

std::string DQMRootOutputModule::m_fileName
private

Definition at line 200 of file DQMRootOutputModule.cc.

Referenced by openFile(), and postForkReacquireResources().

unsigned int DQMRootOutputModule::m_filterOnRun
private

Definition at line 213 of file DQMRootOutputModule.cc.

Referenced by writeLuminosityBlock(), and writeRun().

ULong64_t DQMRootOutputModule::m_firstIndex
private

Definition at line 211 of file DQMRootOutputModule.cc.

Referenced by openFile(), writeLuminosityBlock(), and writeRun().

std::string DQMRootOutputModule::m_fullNameBuffer
private

Definition at line 216 of file DQMRootOutputModule.cc.

std::string* DQMRootOutputModule::m_fullNameBufferPtr
private

Definition at line 217 of file DQMRootOutputModule.cc.

Referenced by openFile().

TTree* DQMRootOutputModule::m_indicesTree
private

Definition at line 219 of file DQMRootOutputModule.cc.

Referenced by openFile(), writeLuminosityBlock(), and writeRun().

edm::JobReport::Token DQMRootOutputModule::m_jrToken
private

Definition at line 223 of file DQMRootOutputModule.cc.

Referenced by finishEndFile(), openFile(), writeLuminosityBlock(), and writeRun().

ULong64_t DQMRootOutputModule::m_lastIndex
private

Definition at line 212 of file DQMRootOutputModule.cc.

Referenced by openFile(), writeLuminosityBlock(), and writeRun().

std::string DQMRootOutputModule::m_logicalFileName
private

Definition at line 201 of file DQMRootOutputModule.cc.

Referenced by openFile().

unsigned int DQMRootOutputModule::m_lumi
private

Definition at line 206 of file DQMRootOutputModule.cc.

Referenced by openFile(), writeLuminosityBlock(), and writeRun().

unsigned int DQMRootOutputModule::m_presentHistoryIndex
private

Definition at line 208 of file DQMRootOutputModule.cc.

Referenced by openFile(), writeLuminosityBlock(), and writeRun().

edm::ProcessHistoryRegistry DQMRootOutputModule::m_processHistoryRegistry
private

Definition at line 222 of file DQMRootOutputModule.cc.

Referenced by startEndFile(), writeLuminosityBlock(), and writeRun().

unsigned int DQMRootOutputModule::m_run
private

Definition at line 205 of file DQMRootOutputModule.cc.

Referenced by openFile(), writeLuminosityBlock(), and writeRun().

std::vector<edm::ProcessHistoryID> DQMRootOutputModule::m_seenHistories
private

Definition at line 221 of file DQMRootOutputModule.cc.

Referenced by startEndFile(), writeLuminosityBlock(), and writeRun().

std::vector<boost::shared_ptr<TreeHelperBase> > DQMRootOutputModule::m_treeHelpers
private

Definition at line 203 of file DQMRootOutputModule.cc.

Referenced by openFile(), writeLuminosityBlock(), and writeRun().

unsigned int DQMRootOutputModule::m_type
private

Definition at line 207 of file DQMRootOutputModule.cc.

Referenced by openFile(), writeLuminosityBlock(), and writeRun().