CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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::core::OutputModuleCore edm::EDConsumerBase

Public Member Functions

void beginJob () override
 
 DQMRootOutputModule (edm::ParameterSet const &pset)
 
 ~DQMRootOutputModule () override
 
- Public Member Functions inherited from edm::one::OutputModule<>
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
const OutputModuleoperator= (const OutputModule &)=delete
 
 OutputModule (edm::ParameterSet const &iPSet)
 
 OutputModule (const OutputModule &)=delete
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
- Public Member Functions inherited from edm::one::OutputModuleBase
OutputModuleBaseoperator= (OutputModuleBase const &)=delete
 
 OutputModuleBase (ParameterSet const &pset)
 
 OutputModuleBase (OutputModuleBase const &)=delete
 
SharedResourcesAcquirersharedResourcesAcquirer ()
 
SubProcessParentageHelper const * subProcessParentageHelper () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
- Public Member Functions inherited from edm::core::OutputModuleCore
BranchIDLists const * branchIDLists () const
 
std::array< bool,
NumBranchTypes > const & 
hasNewlyDroppedBranch () const
 
SelectedProductsForBranchType
const & 
keptProducts () const
 
int maxEvents () const
 
const ModuleDescriptionmoduleDescription () const
 
OutputModuleCoreoperator= (OutputModuleCore const &)=delete
 
 OutputModuleCore (ParameterSet const &pset)
 
 OutputModuleCore (OutputModuleCore const &)=delete
 
OutputProcessBlockHelper const & outputProcessBlockHelper () const
 
std::string const & processName () const
 
int remainingEvents () const
 
bool selected (BranchDescription const &desc) const
 
void selectProducts (ProductRegistry const &preg, ThinnedAssociationsHelper const &, ProcessBlockHelperBase const &)
 
ThinnedAssociationsHelper const * thinnedAssociationsHelper () const
 
bool wantAllEvents () const
 
 ~OutputModuleCore () override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESProxyIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex >
const & 
esGetTokenRecordIndicesVector (edm::Transition iTrans) const
 
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 & 
itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::array< std::vector< ModuleDescription const * > *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, 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 selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::core::OutputModuleCore
static const std::string & baseType ()
 
static void fillDescription (ParameterSetDescription &desc, std::vector< std::string > const &iDefaultOutputCommands=ProductSelectorRules::defaultSelectionStrings())
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 

Private Member Functions

void finishEndFile ()
 
bool isFileOpen () const override
 
void openFile (edm::FileBlock const &) override
 
void reallyCloseFile () override
 
void startEndFile ()
 
void write (edm::EventForOutput const &e) override
 
void writeLuminosityBlock (edm::LuminosityBlockForOutput const &) override
 
void writeRun (edm::RunForOutput const &) override
 

Private Attributes

ULong64_t m_beginTime
 
std::map< unsigned int,
unsigned int > 
m_dqmKindToTypeIndex
 
ULong64_t m_endTime
 
std::unique_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::ProcessHistoryID
m_seenHistories
 
std::vector< std::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::core::OutputModuleCore
typedef OutputModuleCore ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Protected Member Functions inherited from edm::one::OutputModuleBase
void configure (OutputModuleDescription const &desc)
 
void doBeginJob ()
 
bool doEvent (EventTransitionInfo const &, ActivityRegistry *, ModuleCallingContext const *)
 
void doPreallocate (PreallocationConfiguration const &)
 
- Protected Member Functions inherited from edm::core::OutputModuleCore
void configure (OutputModuleDescription const &desc)
 
ModuleDescription const & description () const
 
void doAccessInputProcessBlock (ProcessBlockPrincipal const &, ModuleCallingContext const *)
 
void doBeginJob_ ()
 
bool doBeginLuminosityBlock (LumiTransitionInfo const &, ModuleCallingContext const *)
 
void doBeginProcessBlock (ProcessBlockPrincipal const &, ModuleCallingContext const *)
 
bool doBeginRun (RunTransitionInfo const &, ModuleCallingContext const *)
 
void doEndJob ()
 
bool doEndLuminosityBlock (LumiTransitionInfo const &, ModuleCallingContext const *)
 
void doEndProcessBlock (ProcessBlockPrincipal const &, ModuleCallingContext const *)
 
bool doEndRun (RunTransitionInfo const &, ModuleCallingContext const *)
 
bool doEvent_ (EventTransitionInfo const &, ActivityRegistry *, ModuleCallingContext const *)
 
void doPreallocate_ (PreallocationConfiguration const &)
 
std::map< BranchID::value_type,
BranchID::value_type > const & 
droppedBranchIDToKeptBranchID ()
 
virtual void preallocLumis (unsigned int)
 
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)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< B > consumes (edm::InputTag tag) noexcept
 
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 ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
constexpr auto esConsumes () noexcept
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag) noexcept
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
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)
 
void resetItemsToGetFrom (BranchType iType)
 
- Protected Attributes inherited from edm::core::OutputModuleCore
std::atomic< int > remainingEvents_
 

Detailed Description

Definition at line 198 of file DQMRootOutputModule.cc.

Constructor & Destructor Documentation

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

Definition at line 282 of file DQMRootOutputModule.cc.

285  m_fileName(pset.getUntrackedParameter<std::string>("fileName")),
286  m_logicalFileName(pset.getUntrackedParameter<std::string>("logicalFileName")),
287  m_file(nullptr),
288  m_treeHelpers(kNIndicies, std::shared_ptr<TreeHelperBase>()),
290  m_filterOnRun(pset.getUntrackedParameter<unsigned int>("filterOnRun")),
292  m_indicesTree(nullptr) {
293  // Declare dependencies for all Lumi and Run tokens here. In
294  // principle could use the keep statements, but then DQMToken would
295  // have to be made persistent (transient products are ignored),
296  // which would lead to a need to (finally) remove underscores from
297  // DQM module labels.
298  consumesMany<DQMToken, edm::InLumi>();
299  consumesMany<DQMToken, edm::InRun>();
300 }
unsigned int m_presentHistoryIndex
std::vector< std::shared_ptr< TreeHelperBase > > m_treeHelpers
std::unique_ptr< TFile > m_file
OutputModuleBase(ParameterSet const &pset)
std::string * m_fullNameBufferPtr
DQMRootOutputModule::~DQMRootOutputModule ( )
override

Definition at line 309 of file DQMRootOutputModule.cc.

309 {}

Member Function Documentation

void DQMRootOutputModule::beginJob ( void  )
overridevirtual

Reimplemented from edm::core::OutputModuleCore.

Definition at line 307 of file DQMRootOutputModule.cc.

307 {}
void DQMRootOutputModule::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 563 of file DQMRootOutputModule.cc.

References edm::ConfigurationDescriptions::addDefault(), edm::ParameterSetDescription::addOptionalUntracked(), edm::ParameterSetDescription::addUntracked(), submitPVResolutionJobs::desc, edm::core::OutputModuleCore::fillDescription(), keep, edm::ParameterSetDescription::setAllowAnything(), and AlCaHLTBitMon_QueryRunRegistry::string.

563  {
565 
566  desc.addUntracked<std::string>("fileName");
567  desc.addUntracked<std::string>("logicalFileName", "");
568  desc.addUntracked<unsigned int>("filterOnRun", 0)
569  ->setComment("Only write the run with this run number. 0 means write all runs.");
570  desc.addOptionalUntracked<int>("splitLevel", 99)
571  ->setComment("UNUSED Only here to allow older configurations written for PoolOutputModule to work.");
572  const std::vector<std::string> keep = {"drop *", "keep DQMToken_*_*_*"};
574 
576  dataSet.setAllowAnything();
577  desc.addUntracked<edm::ParameterSetDescription>("dataset", dataSet)
578  ->setComment("PSet is only used by Data Operations and not by this module.");
579 
580  descriptions.addDefault(desc);
581 }
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
void setAllowAnything()
allow any parameter label/value pairs
const int keep
void addDefault(ParameterSetDescription const &psetDescription)
ParameterDescriptionBase * addOptionalUntracked(U const &iLabel, T const &value)
static void fillDescription(ParameterSetDescription &desc, std::vector< std::string > const &iDefaultOutputCommands=ProductSelectorRules::defaultSelectionStrings())
void DQMRootOutputModule::finishEndFile ( )
private

Definition at line 548 of file DQMRootOutputModule.cc.

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

Referenced by reallyCloseFile().

548  {
549  //std::cout << "DQMRootOutputModule::finishEndFile"<< std::endl;
550  m_file->Write();
551  m_file->Close();
554 }
std::unique_ptr< TFile > m_file
void outputFileClosed(Token fileToken)
Definition: JobReport.cc:431
edm::JobReport::Token m_jrToken
bool DQMRootOutputModule::isFileOpen ( ) const
overrideprivatevirtual

Reimplemented from edm::core::OutputModuleCore.

Definition at line 326 of file DQMRootOutputModule.cc.

References m_file.

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

Reimplemented from edm::core::OutputModuleCore.

Definition at line 328 of file DQMRootOutputModule.cc.

References edm::createGlobalIdentifier(), edm::core::OutputModuleCore::description(), cms::Digest::digest(), mps_fire::i, MonitorElementData::INT, kBeginTimeBranch, kCmsGuid, 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(), MonitorElementData::REAL, MonitorElementData::STRING, AlCaHLTBitMon_QueryRunRegistry::string, MonitorElementData::TH1D, MonitorElementData::TH1F, MonitorElementData::TH1S, MonitorElementData::TH2D, MonitorElementData::TH2F, MonitorElementData::TH2S, MonitorElementData::TH3F, cms::MD5Result::toString(), MonitorElementData::TPROFILE, MonitorElementData::TPROFILE2D, HcalDetIdTransform::transform(), MainPageGenerator::tree, and trackerHitRTTI::vector.

328  {
329  //NOTE: I need to also set the I/O performance settings
330 
331  m_file = std::make_unique<TFile>(m_fileName.c_str(),
332  "RECREATE",
333  "1" //This is the file format version number
334  );
335 
337  cms::Digest branchHash;
339  std::transform(guid.begin(), guid.end(), guid.begin(), (int (*)(int))std::toupper);
340 
341  m_file->WriteObject(&guid, kCmsGuid);
342  m_jrToken = jr->outputFileOpened(m_fileName,
344  std::string(),
345  "DQMRootOutputModule",
346  description().moduleLabel(),
347  guid,
348  std::string(),
349  branchHash.digest().toString(),
350  std::vector<std::string>());
351 
353  m_indicesTree->Branch(kRunBranch, &m_run);
354  m_indicesTree->Branch(kLumiBranch, &m_lumi);
358  m_indicesTree->Branch(kTypeBranch, &m_type);
361  m_indicesTree->SetDirectory(m_file.get());
362 
363  unsigned int i = 0;
364  for (std::vector<std::shared_ptr<TreeHelperBase> >::iterator it = m_treeHelpers.begin(), itEnd = m_treeHelpers.end();
365  it != itEnd;
366  ++it, ++i) {
367  //std::cout <<"making "<<kTypeNames[i]<<std::endl;
368  TTree* tree = new TTree(kTypeNames[i], kTypeNames[i]);
369  *it = std::shared_ptr<TreeHelperBase>(makeHelper(i, tree, m_fullNameBufferPtr));
370  tree->SetDirectory(m_file.get()); //TFile takes ownership
371  }
372 
385 }
static const char *const kRunBranch
Definition: format.h:59
static const char *const kTypeNames[]
Definition: format.h:39
static const char *const kIndicesTree
Definition: format.h:58
unsigned int m_presentHistoryIndex
static TreeHelperBase * makeHelper(unsigned int iTypeIndex, TTree *iTree, std::string *iFullNameBufferPtr)
static const char *const kFirstIndex
Definition: format.h:65
static const char *const kLumiBranch
Definition: format.h:60
std::map< unsigned int, unsigned int > m_dqmKindToTypeIndex
MD5Result digest()
Definition: Digest.cc:171
ModuleDescription const & description() const
static const char *const kTypeBranch
Definition: format.h:64
std::vector< std::shared_ptr< TreeHelperBase > > m_treeHelpers
static const char *const kProcessHistoryIndexBranch
Definition: format.h:61
static const char *const kEndTimeBranch
Definition: format.h:63
std::unique_ptr< TFile > m_file
std::string createGlobalIdentifier(bool binary=false)
std::string * m_fullNameBufferPtr
static const char *const kCmsGuid
Definition: format.h:69
static const char *const kLastIndex
Definition: format.h:66
std::string toString() const
Definition: Digest.cc:95
static const char *const kBeginTimeBranch
Definition: format.h:62
edm::JobReport::Token m_jrToken
unsigned transform(const HcalDetId &id, unsigned transformCode)
void DQMRootOutputModule::reallyCloseFile ( )
overrideprivatevirtual

Reimplemented from edm::core::OutputModuleCore.

Definition at line 490 of file DQMRootOutputModule.cc.

References finishEndFile(), and startEndFile().

490  {
491  startEndFile();
492  finishEndFile();
493 }
void DQMRootOutputModule::startEndFile ( )
private

Definition at line 495 of file DQMRootOutputModule.cc.

References cms::cuda::assert(), edm::ProcessHistory::begin(), edm::pset::Registry::begin(), edm::ProcessHistory::end(), edm::pset::Registry::end(), edm::ProcessHistoryRegistry::getMapped(), isotrackTrainRegressor::history, edm::pset::Registry::instance(), kMetaDataDirectory, kParameterSetBranch, kParameterSetTree, kPHIndexBranch, kProcessConfigurationParameterSetIDBranch, kProcessConfigurationPassID, kProcessConfigurationProcessNameBranch, kProcessConfigurationReleaseVersion, kProcessHistoryTree, m_file, m_processHistoryRegistry, m_seenHistories, edm::core::OutputModuleCore::processName(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by reallyCloseFile().

495  {
496  //std::cout << "DQMRootOutputModule::startEndFile"<< std::endl;
497  //fill in the meta data
498  m_file->cd();
499  TDirectory* metaDataDirectory = m_file->mkdir(kMetaDataDirectory);
500 
501  //Write out the Process History
502  TTree* processHistoryTree = new TTree(kProcessHistoryTree, kProcessHistoryTree);
503  processHistoryTree->SetDirectory(metaDataDirectory);
504 
505  unsigned int index = 0;
506  processHistoryTree->Branch(kPHIndexBranch, &index);
508  processHistoryTree->Branch(kProcessConfigurationProcessNameBranch, &processName);
509  std::string parameterSetID;
510  processHistoryTree->Branch(kProcessConfigurationParameterSetIDBranch, &parameterSetID);
511  std::string releaseVersion;
512  processHistoryTree->Branch(kProcessConfigurationReleaseVersion, &releaseVersion);
513  std::string passID;
514  processHistoryTree->Branch(kProcessConfigurationPassID, &passID);
515 
516  for (std::vector<edm::ProcessHistoryID>::iterator it = m_seenHistories.begin(), itEnd = m_seenHistories.end();
517  it != itEnd;
518  ++it) {
520  assert(nullptr != history);
521  index = 0;
522  for (edm::ProcessHistory::collection_type::const_iterator itPC = history->begin(), itPCEnd = history->end();
523  itPC != itPCEnd;
524  ++itPC, ++index) {
525  processName = itPC->processName();
526  releaseVersion = itPC->releaseVersion();
527  passID = itPC->passID();
528  parameterSetID = itPC->parameterSetID().compactForm();
529  tbb::this_task_arena::isolate([&] { processHistoryTree->Fill(); });
530  }
531  }
532 
533  //Store the ParameterSets
534  TTree* parameterSetsTree = new TTree(kParameterSetTree, kParameterSetTree);
535  parameterSetsTree->SetDirectory(metaDataDirectory);
536  std::string blob;
537  parameterSetsTree->Branch(kParameterSetBranch, &blob);
538 
540  assert(nullptr != psr);
541  for (edm::pset::Registry::const_iterator it = psr->begin(), itEnd = psr->end(); it != itEnd; ++it) {
542  blob.clear();
543  it->second.toString(blob);
544  tbb::this_task_arena::isolate([&] { parameterSetsTree->Fill(); });
545  }
546 }
const_iterator begin() const
static const char *const kProcessHistoryTree
Definition: format.h:75
map_type::const_iterator const_iterator
Definition: Registry.h:61
bool getMapped(ProcessHistoryID const &key, ProcessHistory &value) const
const_iterator end() const
Definition: Registry.h:65
edm::ProcessHistoryRegistry m_processHistoryRegistry
assert(be >=bs)
static const char *const kPHIndexBranch
Definition: format.h:76
static const char *const kParameterSetBranch
Definition: format.h:83
static const char *const kMetaDataDirectory
Definition: format.h:73
static const char *const kParameterSetTree
Definition: format.h:82
const_iterator begin() const
Definition: Registry.h:63
std::unique_ptr< TFile > m_file
static const char *const kProcessConfigurationPassID
Definition: format.h:80
std::string const & processName() const
static const char *const kProcessConfigurationReleaseVersion
Definition: format.h:79
static const char *const kProcessConfigurationProcessNameBranch
Definition: format.h:77
const_iterator end() const
static Registry * instance()
Definition: Registry.cc:12
static const char *const kProcessConfigurationParameterSetIDBranch
Definition: format.h:78
std::vector< edm::ProcessHistoryID > m_seenHistories
void DQMRootOutputModule::write ( edm::EventForOutput const &  e)
overrideprivatevirtual

Implements edm::core::OutputModuleCore.

Definition at line 387 of file DQMRootOutputModule.cc.

Referenced by pkg.AbstractPkg::generate().

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

Implements edm::core::OutputModuleCore.

Definition at line 389 of file DQMRootOutputModule.cc.

References cms::cuda::assert(), edm::LuminosityBlockForOutput::beginTime(), edm::LuminosityBlockForOutput::endTime(), spr::find(), dqm::implementation::IGetter::getAllContents(), gpuClustering::id, edm::LuminosityBlockForOutput::id(), mps_monitormerge::items, kNoTypesStored, m_beginTime, m_dqmKindToTypeIndex, 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(), edm::Timestamp::value(), and trackerHitRTTI::vector.

389  {
390  //std::cout << "DQMRootOutputModule::writeLuminosityBlock"<< std::endl;
391  edm::Service<DQMStore> dstore;
392  m_run = iLumi.id().run();
393  m_lumi = iLumi.id().value();
394  m_beginTime = iLumi.beginTime().value();
395  m_endTime = iLumi.endTime().value();
396  bool shouldWrite = (m_filterOnRun == 0 || (m_filterOnRun != 0 && m_filterOnRun == m_run));
397 
398  if (!shouldWrite)
399  return;
400  std::vector<MonitorElement*> items(dstore->getAllContents("", m_run, m_lumi));
401  for (std::vector<MonitorElement*>::iterator it = items.begin(), itEnd = items.end(); it != itEnd; ++it) {
402  assert((*it)->getScope() == MonitorElementData::Scope::LUMI);
403  std::map<unsigned int, unsigned int>::iterator itFound = m_dqmKindToTypeIndex.find((int)(*it)->kind());
404  assert(itFound != m_dqmKindToTypeIndex.end());
405  m_treeHelpers[itFound->second]->fill(*it);
406  }
407 
408  const edm::ProcessHistoryID& id = iLumi.processHistoryID();
409  std::vector<edm::ProcessHistoryID>::iterator itFind = std::find(m_seenHistories.begin(), m_seenHistories.end(), id);
410  if (itFind == m_seenHistories.end()) {
411  m_processHistoryRegistry.registerProcessHistory(iLumi.processHistory());
413  m_seenHistories.push_back(id);
414  } else {
415  m_presentHistoryIndex = itFind - m_seenHistories.begin();
416  }
417 
418  //Now store the relationship between run/lumi and indices in the other TTrees
419  bool storedLumiIndex = false;
420  unsigned int typeIndex = 0;
421  for (std::vector<std::shared_ptr<TreeHelperBase> >::iterator it = m_treeHelpers.begin(), itEnd = m_treeHelpers.end();
422  it != itEnd;
423  ++it, ++typeIndex) {
424  if ((*it)->wasFilled()) {
425  m_type = typeIndex;
426  (*it)->getRangeAndReset(m_firstIndex, m_lastIndex);
427  storedLumiIndex = true;
428  tbb::this_task_arena::isolate([&] { m_indicesTree->Fill(); });
429  }
430  }
431  if (not storedLumiIndex) {
432  //need to record lumis even if we stored no MonitorElements since some later DQM modules
433  // look to see what lumis were processed
435  m_firstIndex = 0;
436  m_lastIndex = 0;
437  tbb::this_task_arena::isolate([&] { m_indicesTree->Fill(); });
438  }
439 
442 }
uint16_t *__restrict__ id
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:19
assert(be >=bs)
virtual std::vector< dqm::harvesting::MonitorElement * > getAllContents(std::string const &path) const
Definition: DQMStore.cc:609
std::map< unsigned int, unsigned int > m_dqmKindToTypeIndex
std::vector< std::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:457
std::vector< edm::ProcessHistoryID > m_seenHistories
void DQMRootOutputModule::writeRun ( edm::RunForOutput const &  iRun)
overrideprivatevirtual

Implements edm::core::OutputModuleCore.

Definition at line 444 of file DQMRootOutputModule.cc.

References cms::cuda::assert(), edm::RunForOutput::beginTime(), edm::RunForOutput::endTime(), spr::find(), dqm::implementation::IGetter::getAllContents(), gpuClustering::id, edm::RunForOutput::id(), mps_monitormerge::items, m_beginTime, m_dqmKindToTypeIndex, 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(), edm::Timestamp::value(), and trackerHitRTTI::vector.

444  {
445  //std::cout << "DQMRootOutputModule::writeRun"<< std::endl;
446  edm::Service<DQMStore> dstore;
447  m_run = iRun.id().run();
448  m_lumi = 0;
449  m_beginTime = iRun.beginTime().value();
450  m_endTime = iRun.endTime().value();
451  bool shouldWrite = (m_filterOnRun == 0 || (m_filterOnRun != 0 && m_filterOnRun == m_run));
452 
453  if (!shouldWrite)
454  return;
455 
456  std::vector<MonitorElement*> items(dstore->getAllContents("", m_run, 0));
457  for (std::vector<MonitorElement*>::iterator it = items.begin(), itEnd = items.end(); it != itEnd; ++it) {
458  assert((*it)->getScope() == MonitorElementData::Scope::RUN);
459  std::map<unsigned int, unsigned int>::iterator itFound = m_dqmKindToTypeIndex.find((int)(*it)->kind());
460  assert(itFound != m_dqmKindToTypeIndex.end());
461  m_treeHelpers[itFound->second]->fill(*it);
462  }
463 
464  const edm::ProcessHistoryID& id = iRun.processHistoryID();
465  std::vector<edm::ProcessHistoryID>::iterator itFind = std::find(m_seenHistories.begin(), m_seenHistories.end(), id);
466  if (itFind == m_seenHistories.end()) {
467  m_processHistoryRegistry.registerProcessHistory(iRun.processHistory());
469  m_seenHistories.push_back(id);
470  } else {
471  m_presentHistoryIndex = itFind - m_seenHistories.begin();
472  }
473 
474  //Now store the relationship between run/lumi and indices in the other TTrees
475  unsigned int typeIndex = 0;
476  for (std::vector<std::shared_ptr<TreeHelperBase> >::iterator it = m_treeHelpers.begin(), itEnd = m_treeHelpers.end();
477  it != itEnd;
478  ++it, ++typeIndex) {
479  if ((*it)->wasFilled()) {
480  m_type = typeIndex;
481  (*it)->getRangeAndReset(m_firstIndex, m_lastIndex);
482  tbb::this_task_arena::isolate([&] { m_indicesTree->Fill(); });
483  }
484  }
485 
488 }
uint16_t *__restrict__ id
unsigned int m_presentHistoryIndex
bool registerProcessHistory(ProcessHistory const &processHistory)
edm::ProcessHistoryRegistry m_processHistoryRegistry
void reportRunNumber(JobReport::Token token, unsigned int run)
Definition: JobReport.cc:468
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
assert(be >=bs)
virtual std::vector< dqm::harvesting::MonitorElement * > getAllContents(std::string const &path) const
Definition: DQMStore.cc:609
std::map< unsigned int, unsigned int > m_dqmKindToTypeIndex
std::vector< std::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 224 of file DQMRootOutputModule.cc.

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

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

Definition at line 232 of file DQMRootOutputModule.cc.

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

ULong64_t DQMRootOutputModule::m_endTime
private

Definition at line 225 of file DQMRootOutputModule.cc.

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

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

Definition at line 217 of file DQMRootOutputModule.cc.

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

std::string DQMRootOutputModule::m_fileName
private

Definition at line 215 of file DQMRootOutputModule.cc.

Referenced by openFile().

unsigned int DQMRootOutputModule::m_filterOnRun
private

Definition at line 228 of file DQMRootOutputModule.cc.

Referenced by writeLuminosityBlock(), and writeRun().

ULong64_t DQMRootOutputModule::m_firstIndex
private

Definition at line 226 of file DQMRootOutputModule.cc.

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

std::string DQMRootOutputModule::m_fullNameBuffer
private

Definition at line 230 of file DQMRootOutputModule.cc.

std::string* DQMRootOutputModule::m_fullNameBufferPtr
private

Definition at line 231 of file DQMRootOutputModule.cc.

Referenced by openFile().

TTree* DQMRootOutputModule::m_indicesTree
private

Definition at line 233 of file DQMRootOutputModule.cc.

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

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

Definition at line 237 of file DQMRootOutputModule.cc.

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

ULong64_t DQMRootOutputModule::m_lastIndex
private

Definition at line 227 of file DQMRootOutputModule.cc.

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

std::string DQMRootOutputModule::m_logicalFileName
private

Definition at line 216 of file DQMRootOutputModule.cc.

Referenced by openFile().

unsigned int DQMRootOutputModule::m_lumi
private

Definition at line 221 of file DQMRootOutputModule.cc.

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

unsigned int DQMRootOutputModule::m_presentHistoryIndex
private

Definition at line 223 of file DQMRootOutputModule.cc.

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

edm::ProcessHistoryRegistry DQMRootOutputModule::m_processHistoryRegistry
private

Definition at line 236 of file DQMRootOutputModule.cc.

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

unsigned int DQMRootOutputModule::m_run
private

Definition at line 220 of file DQMRootOutputModule.cc.

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

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

Definition at line 235 of file DQMRootOutputModule.cc.

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

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

Definition at line 218 of file DQMRootOutputModule.cc.

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

unsigned int DQMRootOutputModule::m_type
private

Definition at line 222 of file DQMRootOutputModule.cc.

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