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 | Private Member Functions | Private Attributes
edm::RunPrincipal Class Reference

#include <RunPrincipal.h>

Inheritance diagram for edm::RunPrincipal:
edm::Principal edm::EDProductGetter

Public Types

typedef RunAuxiliary Auxiliary
 
typedef Principal Base
 
- Public Types inherited from edm::Principal
typedef std::vector< BasicHandleBasicHandleVec
 
typedef unsigned long CacheIdentifier_t
 
typedef boost::filter_iterator
< FilledProductPtr,
ProductHolderCollection::const_iterator > 
const_iterator
 
typedef ProductHolderBase const * ConstProductHolderPtr
 
typedef std::string ProcessName
 
typedef
ProcessHistory::const_iterator 
ProcessNameConstIterator
 
typedef std::vector
< std::shared_ptr
< ProductHolderBase > > 
ProductHolderCollection
 
typedef std::shared_ptr
< ProductHolderBase
SharedProductPtr
 
typedef
ProductHolderCollection::size_type 
size_type
 

Public Member Functions

RunAuxiliary const & aux () const
 
Timestamp const & beginTime () const
 
Timestamp const & endTime () const
 
void fillRunPrincipal (ProcessHistoryRegistry const &processHistoryRegistry, DelayedReader *reader=0)
 
RunID const & id () const
 
RunIndex index () const
 
void mergeAuxiliary (RunAuxiliary const &aux)
 
void put (BranchDescription const &bd, std::unique_ptr< WrapperBase > edp)
 
void readImmediate () const
 
ProcessHistoryID const & reducedProcessHistoryID () const
 
RunNumber_t run () const
 
 RunPrincipal (std::shared_ptr< RunAuxiliary > aux, std::shared_ptr< ProductRegistry const > reg, ProcessConfiguration const &pc, HistoryAppender *historyAppender, unsigned int iRunIndex)
 
void setComplete ()
 
void setEndTime (Timestamp const &time)
 
void setUnscheduledHandler (std::shared_ptr< UnscheduledHandler >)
 
 ~RunPrincipal ()
 
- Public Member Functions inherited from edm::Principal
void addAliasedProduct (std::shared_ptr< BranchDescription const > bd)
 
void addInputProduct (std::shared_ptr< BranchDescription const > bd)
 
void addScheduledProduct (std::shared_ptr< BranchDescription const > bd)
 
void addSourceProduct (std::shared_ptr< BranchDescription const > bd)
 
void addUnscheduledProduct (std::shared_ptr< BranchDescription const > bd)
 
void adjustIndexesAfterProductRegistryAddition ()
 
bool adjustToNewProductRegistry (ProductRegistry const &reg)
 
const_iterator begin () const
 
BranchType const & branchType () const
 
CacheIdentifier_t cacheIdentifier () const
 
void clearPrincipal ()
 
void deleteProduct (BranchID const &id)
 
const_iterator end () const
 
void fillPrincipal (ProcessHistoryID const &hist, ProcessHistoryRegistry const &phr, DelayedReader *reader)
 
ProductData const * findProductByTag (TypeID const &typeID, InputTag const &tag, ModuleCallingContext const *mcc) const
 
void getAllProvenance (std::vector< Provenance const * > &provenances) const
 
BasicHandle getByLabel (KindOfType kindOfType, TypeID const &typeID, InputTag const &inputTag, EDConsumerBase const *consumes, ModuleCallingContext const *mcc) const
 
BasicHandle getByLabel (KindOfType kindOfType, TypeID const &typeID, std::string const &label, std::string const &instance, std::string const &process, EDConsumerBase const *consumes, ModuleCallingContext const *mcc) const
 
BasicHandle getByToken (KindOfType kindOfType, TypeID const &typeID, ProductHolderIndex index, bool skipCurrentProcess, bool &ambiguous, ModuleCallingContext const *mcc) const
 
OutputHandle getForOutput (BranchID const &bid, bool getProd, ModuleCallingContext const *mcc) const
 
void getManyByType (TypeID const &typeID, BasicHandleVec &results, EDConsumerBase const *consumes, ModuleCallingContext const *mcc) const
 
ConstProductHolderPtr getProductHolder (BranchID const &oid) const
 
ConstProductHolderPtr getProductHolderByIndex (ProductHolderIndex const &oid) const
 
Provenance getProvenance (BranchID const &bid, ModuleCallingContext const *mcc) const
 
bool isComplete () const
 
std::vector< unsigned int > const & lookupProcessOrder () const
 
void prefetch (ProductHolderIndex index, bool skipCurrentProcess, ModuleCallingContext const *mcc) const
 
 Principal (std::shared_ptr< ProductRegistry const > reg, std::shared_ptr< ProductHolderIndexHelper const > productLookup, ProcessConfiguration const &pc, BranchType bt, HistoryAppender *historyAppender)
 
ProcessConfiguration const & processConfiguration () const
 
ProcessHistory const & processHistory () const
 
ProcessHistoryID const & processHistoryID () const
 
EDProductGetter const * prodGetter () const
 
ProductHolderIndexHelper const & productLookup () const
 
ProductRegistry const & productRegistry () const
 
DelayedReaderreader () const
 
void readFromSource (ProductHolderBase const &phb, ModuleCallingContext const *mcc) const
 
void recombine (Principal &other, std::vector< BranchID > const &bids)
 
size_t size () const
 
virtual ~Principal ()
 
- Public Member Functions inherited from edm::EDProductGetter
 EDProductGetter ()
 
unsigned int transitionIndex () const
 
virtual ~EDProductGetter ()
 

Private Member Functions

virtual bool isComplete_ () const override
 
void resolveProductImmediate (ProductHolderBase const &phb) const
 
virtual unsigned int transitionIndex_ () const override
 
virtual bool unscheduledFill (std::string const &, ModuleCallingContext const *mcc) const override
 

Private Attributes

std::shared_ptr< RunAuxiliaryaux_
 
bool complete_
 
RunIndex index_
 
ProcessHistoryID m_reducedHistoryID
 

Additional Inherited Members

- Static Public Member Functions inherited from edm::EDProductGetter
static void assignEDProductGetter (EDProductGetter const *&)
 
static EDProductGetter const * switchProductGetter (EDProductGetter const *)
 These can only be used internally by the framework. More...
 
- Protected Member Functions inherited from edm::Principal
void addProduct_ (std::auto_ptr< ProductHolderBase > phb)
 
void addProductOrThrow (std::auto_ptr< ProductHolderBase > phb)
 
void checkUniquenessAndType (WrapperBase const *prod, ProductHolderBase const *productHolder) const
 
ProductHolderBasegetExistingProduct (BranchID const &branchID)
 
ProductHolderBasegetExistingProduct (ProductHolderBase const &phb)
 
void putOrMerge (std::unique_ptr< WrapperBase > prod, ProductHolderBase const *productHolder) const
 
void putOrMerge (std::unique_ptr< WrapperBase > prod, ProductProvenance &prov, ProductHolderBase *productHolder)
 

Detailed Description

Definition at line 31 of file RunPrincipal.h.

Member Typedef Documentation

Definition at line 33 of file RunPrincipal.h.

Definition at line 34 of file RunPrincipal.h.

Constructor & Destructor Documentation

edm::RunPrincipal::RunPrincipal ( std::shared_ptr< RunAuxiliary aux,
std::shared_ptr< ProductRegistry const >  reg,
ProcessConfiguration const &  pc,
HistoryAppender historyAppender,
unsigned int  iRunIndex 
)

Definition at line 10 of file RunPrincipal.cc.

15  :
16  Base(reg, reg->productLookup(InRun), pc, InRun, historyAppender),
17  aux_(aux), index_(iRunIndex), complete_(false) {
18  }
std::shared_ptr< RunAuxiliary > aux_
Definition: RunPrincipal.h:112
RunAuxiliary const & aux() const
Definition: RunPrincipal.h:57
edm::RunPrincipal::~RunPrincipal ( )
inline

Definition at line 42 of file RunPrincipal.h.

42 {}

Member Function Documentation

RunAuxiliary const& edm::RunPrincipal::aux ( ) const
inline

Definition at line 57 of file RunPrincipal.h.

References aux_.

Referenced by edm::SubProcess::beginRun(), beginTime(), endTime(), id(), edm::PoolSource::readRun_(), run(), and edm::RootOutputFile::writeRun().

57  {
58  return *aux_;
59  }
std::shared_ptr< RunAuxiliary > aux_
Definition: RunPrincipal.h:112
Timestamp const& edm::RunPrincipal::beginTime ( ) const
inline
Timestamp const& edm::RunPrincipal::endTime ( ) const
inline
void edm::RunPrincipal::fillRunPrincipal ( ProcessHistoryRegistry const &  processHistoryRegistry,
DelayedReader reader = 0 
)

Definition at line 21 of file RunPrincipal.cc.

References aux_, complete_, edm::Principal::fillPrincipal(), m_reducedHistoryID, edm::Principal::processHistory(), parseEventContent::prod, edm::Principal::reader(), and edm::ProcessHistoryRegistry::reducedProcessHistoryID().

Referenced by dqmservices::DQMProtobufReader::readRun_(), LHESource::readRun_(), edm::RootFile::readRun_(), DQMRootSource::readRun_(), and edm::InputSource::readRun_().

21  {
22  complete_ = false;
23 
24  m_reducedHistoryID = processHistoryRegistry.reducedProcessHistoryID(aux_->processHistoryID());
25  fillPrincipal(aux_->processHistoryID(), processHistoryRegistry, reader);
26 
27  for(auto const& prod : *this) {
28  prod->setProcessHistory(processHistory());
29  }
30  }
ProcessHistory const & processHistory() const
Definition: Principal.h:137
ProcessHistoryID m_reducedHistoryID
Definition: RunPrincipal.h:113
std::shared_ptr< RunAuxiliary > aux_
Definition: RunPrincipal.h:112
DelayedReader * reader() const
Definition: Principal.h:171
void fillPrincipal(ProcessHistoryID const &hist, ProcessHistoryRegistry const &phr, DelayedReader *reader)
Definition: Principal.cc:327
RunID const& edm::RunPrincipal::id ( void  ) const
inline

Definition at line 69 of file RunPrincipal.h.

References aux(), and edm::RunAuxiliary::id().

Referenced by DQMRootSource::readRun_(), edm::GetProductCheckerOutputModule::writeRun(), and DQMRootOutputModule::writeRun().

69  {
70  return aux().id();
71  }
RunID const & id() const
Definition: RunAuxiliary.h:37
RunAuxiliary const & aux() const
Definition: RunPrincipal.h:57
RunIndex edm::RunPrincipal::index ( ) const
inline

Multiple Runs may be processed simultaneously. The return value can be used to identify a particular Run. The value will range from 0 to one less than the maximum number of allowed simultaneous Runs. A particular value will be reused once the processing of the previous Run using that index has been completed.

Definition at line 53 of file RunPrincipal.h.

References index_.

Referenced by BeautifulSoup.PageElement::_invert(), edm::SubProcess::beginRun(), edm::EDLooperBase::doBeginLuminosityBlock(), edm::EDLooperBase::doBeginRun(), edm::EDLooperBase::doDuringLoop(), edm::EDLooperBase::doEndLuminosityBlock(), edm::EDLooperBase::doEndRun(), edm::stream::EDAnalyzerAdaptorBase::doStreamBeginRun(), edm::stream::ProducingModuleAdaptorBase< T >::doStreamBeginRun(), edm::Run::index(), edm::OccurrenceTraits< RunPrincipal, BranchActionGlobalBegin >::makeGlobalContext(), edm::OccurrenceTraits< RunPrincipal, BranchActionGlobalEnd >::makeGlobalContext(), edm::OccurrenceTraits< LuminosityBlockPrincipal, BranchActionGlobalBegin >::makeGlobalContext(), edm::OccurrenceTraits< LuminosityBlockPrincipal, BranchActionGlobalEnd >::makeGlobalContext(), edm::PoolSource::readRun_(), edm::OccurrenceTraits< RunPrincipal, BranchActionStreamBegin >::setStreamContext(), edm::OccurrenceTraits< RunPrincipal, BranchActionStreamEnd >::setStreamContext(), edm::OccurrenceTraits< LuminosityBlockPrincipal, BranchActionStreamBegin >::setStreamContext(), edm::OccurrenceTraits< LuminosityBlockPrincipal, BranchActionStreamEnd >::setStreamContext(), transitionIndex_(), edm::OutputModuleCommunicatorT< T >::writeLumi(), and edm::OutputModuleCommunicatorT< T >::writeRun().

53  {
54  return index_;
55  }
virtual bool edm::RunPrincipal::isComplete_ ( ) const
inlineoverrideprivatevirtual

Reimplemented from edm::Principal.

Definition at line 103 of file RunPrincipal.h.

References complete_.

103 {return complete_;}
void edm::RunPrincipal::mergeAuxiliary ( RunAuxiliary const &  aux)
inline

Definition at line 85 of file RunPrincipal.h.

References aux_.

85  {
86  return aux_->mergeAuxiliary(aux);
87  }
std::shared_ptr< RunAuxiliary > aux_
Definition: RunPrincipal.h:112
RunAuxiliary const & aux() const
Definition: RunPrincipal.h:57
void edm::RunPrincipal::put ( BranchDescription const &  bd,
std::unique_ptr< WrapperBase edp 
)

Definition at line 33 of file RunPrincipal.cc.

References edm::BranchDescription::branchID(), edm::hlt::Exception, edm::Principal::getExistingProduct(), edm::errors::InsertFailure, and edm::Principal::putOrMerge().

Referenced by LHESource::beginRun(), edm::Run::commit_(), and LHESource::endRun().

35  {
36 
37  // Assert commented out for LHESource.
38  // assert(bd.produced());
39  if(edp.get() == nullptr) {
40  throw edm::Exception(edm::errors::InsertFailure,"Null Pointer")
41  << "put: Cannot put because unique_ptr to product is null."
42  << "\n";
43  }
44  ProductHolderBase* phb = getExistingProduct(bd.branchID());
45  assert(phb);
46  // ProductHolder assumes ownership
47  putOrMerge(std::move(edp), phb);
48  }
void putOrMerge(std::unique_ptr< WrapperBase > prod, ProductHolderBase const *productHolder) const
Definition: Principal.cc:819
ProductHolderBase * getExistingProduct(BranchID const &branchID)
Definition: Principal.cc:383
void edm::RunPrincipal::readImmediate ( ) const

Definition at line 51 of file RunPrincipal.cc.

References edm::ProductHolderBase::branchDescription(), parseEventContent::prod, edm::BranchDescription::produced(), edm::ProductHolderBase::productUnavailable(), resolveProductImmediate(), and edm::ProductHolderBase::singleProduct().

Referenced by edm::RootFile::readRun_().

51  {
52  for(auto const& prod : *this) {
53  ProductHolderBase const& phb = *prod;
54  if(phb.singleProduct() && !phb.branchDescription().produced()) {
55  if(!phb.productUnavailable()) {
57  }
58  }
59  }
60  }
void resolveProductImmediate(ProductHolderBase const &phb) const
Definition: RunPrincipal.cc:63
ProcessHistoryID const& edm::RunPrincipal::reducedProcessHistoryID ( ) const
inline

Definition at line 65 of file RunPrincipal.h.

References m_reducedHistoryID.

Referenced by edm::SubProcess::beginRun().

65  {
66  return m_reducedHistoryID;
67  }
ProcessHistoryID m_reducedHistoryID
Definition: RunPrincipal.h:113
void edm::RunPrincipal::resolveProductImmediate ( ProductHolderBase const &  phb) const
private

Definition at line 63 of file RunPrincipal.cc.

References edm::ProductHolderBase::branchDescription(), edm::getProduct(), edm::BranchDescription::produced(), edm::Principal::putOrMerge(), and edm::Principal::reader().

Referenced by readImmediate().

63  {
64  if(phb.branchDescription().produced()) return; // nothing to do.
65  if(!reader()) return; // nothing to do.
66 
67  // must attempt to load from persistent store
68  BranchKey const bk = BranchKey(phb.branchDescription());
69  std::unique_ptr<WrapperBase> edp(reader()->getProduct(bk, this));
70 
71  // Now fix up the ProductHolder
72  if(edp.get() != nullptr) {
73  putOrMerge(std::move(edp), &phb);
74  }
75  }
void putOrMerge(std::unique_ptr< WrapperBase > prod, ProductHolderBase const *productHolder) const
Definition: Principal.cc:819
T const * getProduct(RefCore const &ref)
Definition: RefCoreGet.h:36
DelayedReader * reader() const
Definition: Principal.h:171
RunNumber_t edm::RunPrincipal::run ( void  ) const
inline
void edm::RunPrincipal::setComplete ( )
inline

Definition at line 97 of file RunPrincipal.h.

References complete_.

Referenced by edm::InputSource::doEndRun().

97  {
98  complete_ = true;
99  }
void edm::RunPrincipal::setEndTime ( Timestamp const &  time)
inline

Definition at line 81 of file RunPrincipal.h.

References aux_.

Referenced by edm::InputSource::doEndRun().

81  {
82  aux_->setEndTime(time);
83  }
std::shared_ptr< RunAuxiliary > aux_
Definition: RunPrincipal.h:112
void edm::RunPrincipal::setUnscheduledHandler ( std::shared_ptr< UnscheduledHandler )
inline

Definition at line 89 of file RunPrincipal.h.

89 {}
unsigned int edm::RunPrincipal::transitionIndex_ ( ) const
overrideprivatevirtual

Implements edm::EDProductGetter.

Definition at line 78 of file RunPrincipal.cc.

References index(), and edm::RunIndex::value().

78  {
79  return index().value();
80  }
unsigned int value() const
Definition: RunIndex.h:50
RunIndex index() const
Definition: RunPrincipal.h:53
virtual bool edm::RunPrincipal::unscheduledFill ( std::string const &  ,
ModuleCallingContext const *  mcc 
) const
inlineoverrideprivatevirtual

Implements edm::Principal.

Definition at line 105 of file RunPrincipal.h.

106  {return false;}

Member Data Documentation

std::shared_ptr<RunAuxiliary> edm::RunPrincipal::aux_
private

Definition at line 112 of file RunPrincipal.h.

Referenced by aux(), fillRunPrincipal(), mergeAuxiliary(), and setEndTime().

bool edm::RunPrincipal::complete_
private

Definition at line 116 of file RunPrincipal.h.

Referenced by fillRunPrincipal(), isComplete_(), and setComplete().

RunIndex edm::RunPrincipal::index_
private

Definition at line 114 of file RunPrincipal.h.

Referenced by index().

ProcessHistoryID edm::RunPrincipal::m_reducedHistoryID
private

Definition at line 113 of file RunPrincipal.h.

Referenced by fillRunPrincipal(), and reducedProcessHistoryID().