CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes
edm::PrincipalCache Class Reference

#include <PrincipalCache.h>

Public Types

enum  ProcessBlockType { ProcessBlockType::New, ProcessBlockType::Input }
 

Public Member Functions

void adjustEventsToNewProductRegistry (std::shared_ptr< ProductRegistry const > reg)
 
void adjustIndexesAfterProductRegistryAddition ()
 
void deleteRun (ProcessHistoryID const &phid, RunNumber_t run)
 
EventPrincipaleventPrincipal (unsigned int iStreamIndex) const
 
std::shared_ptr< LuminosityBlockPrincipalgetAvailableLumiPrincipalPtr ()
 
bool hasRunPrincipal () const
 
ProcessBlockPrincipalinputProcessBlockPrincipal () const
 
void insert (std::shared_ptr< EventPrincipal > ep)
 
void insert (std::shared_ptr< RunPrincipal > rp)
 
void insert (std::unique_ptr< LuminosityBlockPrincipal > lbp)
 
void insert (std::unique_ptr< ProcessBlockPrincipal >)
 
void insertForInput (std::unique_ptr< ProcessBlockPrincipal >)
 
void merge (std::shared_ptr< RunAuxiliary > aux, std::shared_ptr< ProductRegistry const > reg)
 
void preReadFile ()
 
 PrincipalCache ()
 
 PrincipalCache (PrincipalCache &&)=default
 
ProcessBlockPrincipalprocessBlockPrincipal () const
 
ProcessBlockPrincipalprocessBlockPrincipal (ProcessBlockType processBlockType) const
 
RunPrincipalrunPrincipal () const
 
RunPrincipalrunPrincipal (ProcessHistoryID const &phid, RunNumber_t run) const
 
std::shared_ptr< RunPrincipal > const & runPrincipalPtr () const
 
std::shared_ptr< RunPrincipal > const & runPrincipalPtr (ProcessHistoryID const &phid, RunNumber_t run) const
 
void setNumberOfConcurrentPrincipals (PreallocationConfiguration const &)
 
void setProcessHistoryRegistry (ProcessHistoryRegistry const &phr)
 
 ~PrincipalCache ()
 

Private Member Functions

void throwLumiMissing () const
 
void throwRunMissing () const
 

Private Attributes

std::vector< std::shared_ptr< EventPrincipal > > eventPrincipals_
 
std::unique_ptr< ProcessBlockPrincipalinputProcessBlockPrincipal_
 
ProcessHistoryID inputProcessHistoryID_
 
LuminosityBlockNumber_t lumi_
 
edm::ReusableObjectHolder< LuminosityBlockPrincipallumiHolder_
 
std::unique_ptr< ProcessBlockPrincipalprocessBlockPrincipal_
 
ProcessHistoryRegistry const * processHistoryRegistry_
 
ProcessHistoryID reducedInputProcessHistoryID_
 
RunNumber_t run_
 
std::shared_ptr< RunPrincipalrunPrincipal_
 

Detailed Description

Definition at line 48 of file PrincipalCache.h.

Member Enumeration Documentation

◆ ProcessBlockType

Enumerator
New 
Input 

Definition at line 57 of file PrincipalCache.h.

57 { New, Input };

Constructor & Destructor Documentation

◆ PrincipalCache() [1/2]

edm::PrincipalCache::PrincipalCache ( )

Definition at line 13 of file PrincipalCache.cc.

13 : run_(0U), lumi_(0U) {}

◆ ~PrincipalCache()

edm::PrincipalCache::~PrincipalCache ( )

Definition at line 15 of file PrincipalCache.cc.

15 {}

◆ PrincipalCache() [2/2]

edm::PrincipalCache::PrincipalCache ( PrincipalCache &&  )
default

Member Function Documentation

◆ adjustEventsToNewProductRegistry()

void edm::PrincipalCache::adjustEventsToNewProductRegistry ( std::shared_ptr< ProductRegistry const >  reg)

◆ adjustIndexesAfterProductRegistryAddition()

void edm::PrincipalCache::adjustIndexesAfterProductRegistryAddition ( )

Definition at line 137 of file PrincipalCache.cc.

137  {
138  if (runPrincipal_) {
139  runPrincipal_->adjustIndexesAfterProductRegistryAddition();
140  }
141  //Need to temporarily hold all the lumis to clear out the lumiHolder_
142  std::vector<std::shared_ptr<LuminosityBlockPrincipal>> temp;
143  while (auto p = lumiHolder_.tryToGet()) {
144  p->adjustIndexesAfterProductRegistryAddition();
145  temp.emplace_back(std::move(p));
146  }
147  }

References lumiHolder_, eostools::move(), AlCaHLTBitMon_ParallelJobs::p, runPrincipal_, and groupFilesInBlocks::temp.

Referenced by edm::EventProcessor::readFile().

◆ deleteRun()

void edm::PrincipalCache::deleteRun ( ProcessHistoryID const &  phid,
RunNumber_t  run 
)

Definition at line 110 of file PrincipalCache.cc.

110  {
111  if (runPrincipal_.get() == nullptr) {
112  throw edm::Exception(edm::errors::LogicError) << "PrincipalCache::deleteRun\n"
113  << "Illegal attempt to delete run from cache\n"
114  << "There is no run in cache to delete\n"
115  << "Contact a Framework Developer\n";
116  }
117  if (reducedInputProcessHistoryID_ != phid || run != run_) {
119  << "PrincipalCache::deleteRun\n"
120  << "Illegal attempt to delete run from cache\n"
121  << "Run number or reduced ProcessHistoryID inconsistent with those in cache\n"
122  << "Contact a Framework Developer\n";
123  }
124  runPrincipal_.reset();
125  }

References Exception, edm::errors::LogicError, reducedInputProcessHistoryID_, writedatasetfile::run, run_, and runPrincipal_.

Referenced by edm::SubProcess::deleteRunFromCache(), edm::EventProcessor::deleteRunFromCache(), and edm::test::TestProcessor::endRun().

◆ eventPrincipal()

EventPrincipal& edm::PrincipalCache::eventPrincipal ( unsigned int  iStreamIndex) const
inline

◆ getAvailableLumiPrincipalPtr()

std::shared_ptr< LuminosityBlockPrincipal > edm::PrincipalCache::getAvailableLumiPrincipalPtr ( )

◆ hasRunPrincipal()

bool edm::PrincipalCache::hasRunPrincipal ( ) const
inline

◆ inputProcessBlockPrincipal()

ProcessBlockPrincipal& edm::PrincipalCache::inputProcessBlockPrincipal ( ) const
inline

Definition at line 55 of file PrincipalCache.h.

55 { return *inputProcessBlockPrincipal_; }

References inputProcessBlockPrincipal_.

Referenced by edm::EventProcessor::inputProcessBlocks().

◆ insert() [1/4]

void edm::PrincipalCache::insert ( std::shared_ptr< EventPrincipal ep)

Definition at line 104 of file PrincipalCache.cc.

104  {
105  unsigned int iStreamIndex = ep->streamID().value();
106  assert(iStreamIndex < eventPrincipals_.size());
107  eventPrincipals_[iStreamIndex] = ep;
108  }

References cms::cuda::assert(), SiStripBadComponentsDQMServiceTemplate_cfg::ep, and eventPrincipals_.

◆ insert() [2/4]

void edm::PrincipalCache::insert ( std::shared_ptr< RunPrincipal rp)

Definition at line 82 of file PrincipalCache.cc.

82  {
83  if (runPrincipal_.get() != nullptr) {
84  throw edm::Exception(edm::errors::LogicError) << "PrincipalCache::insert\n"
85  << "Illegal attempt to insert run into cache\n"
86  << "Contact a Framework Developer\n";
87  }
88  if (inputProcessHistoryID_ != rp->aux().processHistoryID()) {
90  inputProcessHistoryID_ = rp->aux().processHistoryID();
91  }
92  run_ = rp->run();
93  runPrincipal_ = rp;
94  }

References Exception, inputProcessHistoryID_, edm::errors::LogicError, processHistoryRegistry_, reducedInputProcessHistoryID_, edm::ProcessHistoryRegistry::reducedProcessHistoryID(), run_, and runPrincipal_.

◆ insert() [3/4]

void edm::PrincipalCache::insert ( std::unique_ptr< LuminosityBlockPrincipal lbp)

Definition at line 102 of file PrincipalCache.cc.

102 { lumiHolder_.add(std::move(lbp)); }

References lumiHolder_, and eostools::move().

◆ insert() [4/4]

void edm::PrincipalCache::insert ( std::unique_ptr< ProcessBlockPrincipal pb)

◆ insertForInput()

void edm::PrincipalCache::insertForInput ( std::unique_ptr< ProcessBlockPrincipal pb)

◆ merge()

void edm::PrincipalCache::merge ( std::shared_ptr< RunAuxiliary aux,
std::shared_ptr< ProductRegistry const >  reg 
)

Definition at line 54 of file PrincipalCache.cc.

54  {
55  if (runPrincipal_.get() == nullptr) {
56  throw edm::Exception(edm::errors::LogicError) << "PrincipalCache::merge\n"
57  << "Illegal attempt to merge run into cache\n"
58  << "There is no run in cache to merge with\n"
59  << "Contact a Framework Developer\n";
60  }
61  if (inputProcessHistoryID_ != aux->processHistoryID()) {
64  << "PrincipalCache::merge\n"
65  << "Illegal attempt to merge run into cache\n"
66  << "Reduced ProcessHistoryID inconsistent with the one already in cache\n"
67  << "Contact a Framework Developer\n";
68  }
69  inputProcessHistoryID_ = aux->processHistoryID();
70  }
71  if (aux->run() != run_) {
72  throw edm::Exception(edm::errors::LogicError) << "PrincipalCache::merge\n"
73  << "Illegal attempt to merge run into cache\n"
74  << "Run number inconsistent with run number already in cache\n"
75  << "Contact a Framework Developer\n";
76  }
77  bool runOK = runPrincipal_->adjustToNewProductRegistry(*reg);
78  assert(runOK);
79  runPrincipal_->mergeAuxiliary(*aux);
80  }

References cms::cuda::assert(), printConversionInfo::aux, Exception, inputProcessHistoryID_, edm::errors::LogicError, processHistoryRegistry_, reducedInputProcessHistoryID_, edm::ProcessHistoryRegistry::reducedProcessHistoryID(), run_, and runPrincipal_.

Referenced by edm::EventProcessor::readAndMergeRun().

◆ preReadFile()

void edm::PrincipalCache::preReadFile ( )

Definition at line 149 of file PrincipalCache.cc.

149  {
150  if (runPrincipal_) {
151  runPrincipal_->preReadFile();
152  }
153  }

References runPrincipal_.

Referenced by edm::EventProcessor::readFile().

◆ processBlockPrincipal() [1/2]

ProcessBlockPrincipal& edm::PrincipalCache::processBlockPrincipal ( ) const
inline

◆ processBlockPrincipal() [2/2]

ProcessBlockPrincipal& edm::PrincipalCache::processBlockPrincipal ( ProcessBlockType  processBlockType) const
inline

Definition at line 58 of file PrincipalCache.h.

58  {
60  }

References Input, inputProcessBlockPrincipal_, and processBlockPrincipal_.

◆ runPrincipal() [1/2]

RunPrincipal & edm::PrincipalCache::runPrincipal ( ) const

Definition at line 36 of file PrincipalCache.cc.

36  {
37  if (runPrincipal_.get() == nullptr) {
39  }
40  return *runPrincipal_.get();
41  }

References runPrincipal_, and throwRunMissing().

◆ runPrincipal() [2/2]

RunPrincipal & edm::PrincipalCache::runPrincipal ( ProcessHistoryID const &  phid,
RunNumber_t  run 
) const

◆ runPrincipalPtr() [1/2]

std::shared_ptr< RunPrincipal > const & edm::PrincipalCache::runPrincipalPtr ( ) const

Definition at line 43 of file PrincipalCache.cc.

43  {
44  if (runPrincipal_.get() == nullptr) {
46  }
47  return runPrincipal_;
48  }

References runPrincipal_, and throwRunMissing().

◆ runPrincipalPtr() [2/2]

std::shared_ptr< RunPrincipal > const & edm::PrincipalCache::runPrincipalPtr ( ProcessHistoryID const &  phid,
RunNumber_t  run 
) const

◆ setNumberOfConcurrentPrincipals()

void edm::PrincipalCache::setNumberOfConcurrentPrincipals ( PreallocationConfiguration const &  iConfig)

◆ setProcessHistoryRegistry()

void edm::PrincipalCache::setProcessHistoryRegistry ( ProcessHistoryRegistry const &  phr)
inline

◆ throwLumiMissing()

void edm::PrincipalCache::throwLumiMissing ( ) const
private

Definition at line 161 of file PrincipalCache.cc.

161  {
163  << "PrincipalCache::lumiPrincipal or PrincipalCache::lumiPrincipalPtr\n"
164  << "Requested a luminosity block that is not in the cache (should never happen)\n"
165  << "Contact a Framework Developer\n";
166  }

References Exception, and edm::errors::LogicError.

◆ throwRunMissing()

void edm::PrincipalCache::throwRunMissing ( ) const
private

Definition at line 155 of file PrincipalCache.cc.

155  {
156  throw edm::Exception(edm::errors::LogicError) << "PrincipalCache::runPrincipal\n"
157  << "Requested a run that is not in the cache (should never happen)\n"
158  << "Contact a Framework Developer\n";
159  }

References Exception, and edm::errors::LogicError.

Referenced by runPrincipal(), and runPrincipalPtr().

Member Data Documentation

◆ eventPrincipals_

std::vector<std::shared_ptr<EventPrincipal> > edm::PrincipalCache::eventPrincipals_
private

◆ inputProcessBlockPrincipal_

std::unique_ptr<ProcessBlockPrincipal> edm::PrincipalCache::inputProcessBlockPrincipal_
private

◆ inputProcessHistoryID_

ProcessHistoryID edm::PrincipalCache::inputProcessHistoryID_
private

Definition at line 113 of file PrincipalCache.h.

Referenced by insert(), and merge().

◆ lumi_

LuminosityBlockNumber_t edm::PrincipalCache::lumi_
private

Definition at line 116 of file PrincipalCache.h.

◆ lumiHolder_

edm::ReusableObjectHolder<LuminosityBlockPrincipal> edm::PrincipalCache::lumiHolder_
private

◆ processBlockPrincipal_

std::unique_ptr<ProcessBlockPrincipal> edm::PrincipalCache::processBlockPrincipal_
private

Definition at line 97 of file PrincipalCache.h.

Referenced by insert(), and processBlockPrincipal().

◆ processHistoryRegistry_

ProcessHistoryRegistry const* edm::PrincipalCache::processHistoryRegistry_
private

Definition at line 104 of file PrincipalCache.h.

Referenced by insert(), merge(), and setProcessHistoryRegistry().

◆ reducedInputProcessHistoryID_

ProcessHistoryID edm::PrincipalCache::reducedInputProcessHistoryID_
private

Definition at line 114 of file PrincipalCache.h.

Referenced by deleteRun(), insert(), merge(), runPrincipal(), and runPrincipalPtr().

◆ run_

RunNumber_t edm::PrincipalCache::run_
private

Definition at line 115 of file PrincipalCache.h.

Referenced by deleteRun(), insert(), merge(), runPrincipal(), and runPrincipalPtr().

◆ runPrincipal_

std::shared_ptr<RunPrincipal> edm::PrincipalCache::runPrincipal_
private
electrons_cff.bool
bool
Definition: electrons_cff.py:393
edm::PrincipalCache::processBlockPrincipal_
std::unique_ptr< ProcessBlockPrincipal > processBlockPrincipal_
Definition: PrincipalCache.h:97
edm::errors::LogicError
Definition: EDMException.h:37
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
edm::Principal::adjustToNewProductRegistry
bool adjustToNewProductRegistry(ProductRegistry const &reg)
Definition: Principal.cc:310
cms::cuda::assert
assert(be >=bs)
groupFilesInBlocks.temp
list temp
Definition: groupFilesInBlocks.py:142
edm::Principal::adjustIndexesAfterProductRegistryAddition
void adjustIndexesAfterProductRegistryAddition()
Definition: Principal.cc:918
edm::PrincipalCache::lumi_
LuminosityBlockNumber_t lumi_
Definition: PrincipalCache.h:116
edm::PrincipalCache::eventPrincipals_
std::vector< std::shared_ptr< EventPrincipal > > eventPrincipals_
Definition: PrincipalCache.h:101
edm::PrincipalCache::runPrincipal_
std::shared_ptr< RunPrincipal > runPrincipal_
Definition: PrincipalCache.h:99
mitigatedMETSequence_cff.U
U
Definition: mitigatedMETSequence_cff.py:36
edm::PrincipalCache::processHistoryRegistry_
ProcessHistoryRegistry const * processHistoryRegistry_
Definition: PrincipalCache.h:104
printConversionInfo.aux
aux
Definition: printConversionInfo.py:19
edm::PrincipalCache::throwRunMissing
void throwRunMissing() const
Definition: PrincipalCache.cc:155
edm::PrincipalCache::reducedInputProcessHistoryID_
ProcessHistoryID reducedInputProcessHistoryID_
Definition: PrincipalCache.h:114
edm::PrincipalCache::inputProcessBlockPrincipal_
std::unique_ptr< ProcessBlockPrincipal > inputProcessBlockPrincipal_
Definition: PrincipalCache.h:98
edm::PrincipalCache::inputProcessHistoryID_
ProcessHistoryID inputProcessHistoryID_
Definition: PrincipalCache.h:113
edm::ProcessHistoryRegistry::reducedProcessHistoryID
ProcessHistoryID const & reducedProcessHistoryID(ProcessHistoryID const &fullID) const
Definition: ProcessHistoryRegistry.cc:23
edm::PrincipalCache::ProcessBlockType::Input
eostools.move
def move(src, dest)
Definition: eostools.py:511
writedatasetfile.run
run
Definition: writedatasetfile.py:27
TrackCandidateTopBottomHitFilter_cfi.Input
Input
Definition: TrackCandidateTopBottomHitFilter_cfi.py:4
Exception
Definition: hltDiff.cc:246
edm::PrincipalCache::eventPrincipal
EventPrincipal & eventPrincipal(unsigned int iStreamIndex) const
Definition: PrincipalCache.h:70
edm::PrincipalCache::lumiHolder_
edm::ReusableObjectHolder< LuminosityBlockPrincipal > lumiHolder_
Definition: PrincipalCache.h:100
edm::PrincipalCache::run_
RunNumber_t run_
Definition: PrincipalCache.h:115
SiStripBadComponentsDQMServiceTemplate_cfg.ep
ep
Definition: SiStripBadComponentsDQMServiceTemplate_cfg.py:86