CMS 3D CMS Logo

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

#include <SubProcess.h>

Public Member Functions

void clearCounters ()
 Clear all the counters in the trigger report. More...
 
void closeOutputFiles ()
 
void deleteLumiFromCache (ProcessHistoryID const &parentPhID, int runNumber, int lumiNumber)
 
void deleteRunFromCache (ProcessHistoryID const &parentPhID, int runNumber)
 
void doBeginJob ()
 
void doBeginLuminosityBlock (LuminosityBlockPrincipal const &principal, IOVSyncValue const &ts)
 
void doBeginRun (RunPrincipal const &principal, IOVSyncValue const &ts)
 
void doBeginStream (unsigned int)
 
void doEndJob ()
 
void doEndLuminosityBlock (LuminosityBlockPrincipal const &principal, IOVSyncValue const &ts, bool cleaningUpAfterException)
 
void doEndRun (RunPrincipal const &principal, IOVSyncValue const &ts, bool cleaningUpAfterException)
 
void doEndStream (unsigned int)
 
void doEvent (EventPrincipal const &principal)
 
void doStreamBeginLuminosityBlock (unsigned int iID, LuminosityBlockPrincipal const &principal, IOVSyncValue const &ts)
 
void doStreamBeginRun (unsigned int iID, RunPrincipal const &principal, IOVSyncValue const &ts)
 
void doStreamEndLuminosityBlock (unsigned int iID, LuminosityBlockPrincipal const &principal, IOVSyncValue const &ts, bool cleaningUpAfterException)
 
void doStreamEndRun (unsigned int iID, RunPrincipal const &principal, IOVSyncValue const &ts, bool cleaningUpAfterException)
 
void enableEndPaths (bool active)
 
bool endPathsEnabled () const
 Return true if end_paths are active, and false if they are inactive. More...
 
std::vector< ModuleDescription
const * > 
getAllModuleDescriptions () const
 Return a vector allowing const access to all the ModuleDescriptions for this SubProcess. More...
 
void getTriggerReport (TriggerReport &rep) const
 
SelectedProductsForBranchType
const & 
keptProducts () const
 
void openNewOutputFilesIfNeeded ()
 
void openOutputFiles (FileBlock &fb)
 
SubProcessoperator= (SubProcess const &)=delete
 
void postForkReacquireResources (unsigned int iChildIndex, unsigned int iNumberOfChildren)
 
void preForkReleaseResources ()
 
void respondToCloseInputFile (FileBlock const &fb)
 
void respondToOpenInputFile (FileBlock const &fb)
 
void selectProducts (ProductRegistry const &preg)
 
bool shouldWeCloseOutput () const
 
 SubProcess (ParameterSet &parameterSet, ParameterSet const &topLevelParameterSet, std::shared_ptr< ProductRegistry const > parentProductRegistry, std::shared_ptr< BranchIDListHelper const > parentBranchIDListHelper, eventsetup::EventSetupsController &esController, ActivityRegistry &parentActReg, ServiceToken const &token, serviceregistry::ServiceLegacy iLegacy, PreallocationConfiguration const &preallocConfig, ProcessContext const *parentProcessContext)
 
 SubProcess (SubProcess const &)=delete
 
bool terminate () const
 
int totalEvents () const
 
int totalEventsFailed () const
 
int totalEventsPassed () const
 Return the number of events which have been passed by one or more trigger paths. More...
 
void updateBranchIDListHelper (BranchIDLists const &)
 
void writeLumi (ProcessHistoryID const &parentPhID, int runNumber, int lumiNumber)
 
void writeRun (ProcessHistoryID const &parentPhID, int runNumber)
 
virtual ~SubProcess ()
 

Private Member Functions

void beginJob ()
 
void beginLuminosityBlock (LuminosityBlockPrincipal const &lb, IOVSyncValue const &ts)
 
void beginRun (RunPrincipal const &r, IOVSyncValue const &ts)
 
std::map< BranchID::value_type,
BranchID::value_type > const & 
droppedBranchIDToKeptBranchID ()
 
void endJob ()
 
void endLuminosityBlock (LuminosityBlockPrincipal const &lb, IOVSyncValue const &ts, bool cleaningUpAfterException)
 
void endRun (RunPrincipal const &r, IOVSyncValue const &ts, bool cleaningUpAfterException)
 
void fixBranchIDListsForEDAliases (std::map< BranchID::value_type, BranchID::value_type > const &droppedBranchIDToKeptBranchID)
 
void process (EventPrincipal const &e)
 
void propagateProducts (BranchType type, Principal const &parentPrincipal, Principal &principal) const
 

Private Attributes

std::unique_ptr
< ExceptionToActionTable const > 
act_table_
 
std::shared_ptr
< BranchIDListHelper
branchIDListHelper_
 
std::map< BranchID::value_type,
BranchID::value_type
droppedBranchIDToKeptBranchID_
 
boost::shared_ptr
< eventsetup::EventSetupProvider
esp_
 
std::vector< HistoryAppenderhistoryAppenders_
 
unsigned int historyLumiOffset_
 
unsigned int historyRunOffset_
 
SelectedProductsForBranchType keptProducts_
 
std::shared_ptr
< ProductRegistry const > 
parentPreg_
 
std::map< ProcessHistoryID,
ProcessHistoryID
parentToChildPhID_
 
std::shared_ptr
< ProductRegistry const > 
preg_
 
PrincipalCache principalCache_
 
std::shared_ptr
< ProcessConfiguration const > 
processConfiguration_
 
ProcessContext processContext_
 
std::vector
< ProcessHistoryRegistry
processHistoryRegistries_
 
std::unique_ptr< ParameterSetprocessParameterSet_
 
ProductSelector productSelector_
 
ProductSelectorRules productSelectorRules_
 
std::auto_ptr< Scheduleschedule_
 
ParameterSetID selector_config_id_
 
detail::TriggerResultsBasedEventSelector selectors_
 
ServiceToken serviceToken_
 
std::auto_ptr< SubProcesssubProcess_
 
bool wantAllEvents_
 

Detailed Description

Definition at line 34 of file SubProcess.h.

Constructor & Destructor Documentation

edm::SubProcess::SubProcess ( ParameterSet parameterSet,
ParameterSet const &  topLevelParameterSet,
std::shared_ptr< ProductRegistry const >  parentProductRegistry,
std::shared_ptr< BranchIDListHelper const >  parentBranchIDListHelper,
eventsetup::EventSetupsController esController,
ActivityRegistry parentActReg,
ServiceToken const &  token,
serviceregistry::ServiceLegacy  iLegacy,
PreallocationConfiguration const &  preallocConfig,
ProcessContext const *  parentProcessContext 
)

Definition at line 35 of file SubProcess.cc.

References act_table_, branchIDListHelper_, edm::detail::configureEventSelector(), edm::ActivityRegistry::connectToSubProcess(), esp_, edm::ParameterSet::exists(), edm::getAllTriggerNames(), edm::ParameterSet::getUntrackedParameterSet(), historyAppenders_, historyRunOffset_, cmsHarvester::index, edm::PrincipalCache::insert(), edm::eventsetup::EventSetupsController::makeProvider(), LaserTracksInput_cfi::maxEvents, edm::PreallocationConfiguration::numberOfStreams(), cmsPerfStripChart::operate(), edm::ParameterSet::popParameterSet(), edm::popSubProcessParameterSet(), preg_, principalCache_, processConfiguration_, processContext_, processHistoryRegistries_, processParameterSet_, edm::ParameterSet::registerIt(), edm::detail::registerProperSelectionInfo(), schedule_, selector_config_id_, selectors_, selectProducts(), serviceToken_, edm::PrincipalCache::setNumberOfConcurrentPrincipals(), edm::ProcessContext::setParentProcessContext(), edm::ProcessContext::setProcessConfiguration(), edm::PrincipalCache::setProcessHistoryRegistry(), edm::IllegalParameters::setThrowAnException(), AlCaHLTBitMon_QueryRunRegistry::string, subProcess_, updateBranchIDListHelper(), and wantAllEvents_.

44  :
45  serviceToken_(),
46  parentPreg_(parentProductRegistry),
47  preg_(),
49  act_table_(),
51  historyLumiOffset_(preallocConfig.numberOfStreams()),
52  historyRunOffset_(historyLumiOffset_+preallocConfig.numberOfLuminosityBlocks()),
53  processHistoryRegistries_(historyRunOffset_+ preallocConfig.numberOfRuns()),
54  historyAppenders_(historyRunOffset_+preallocConfig.numberOfRuns()),
56  esp_(),
57  schedule_(),
59  subProcess_(),
61  productSelectorRules_(parameterSet, "outputCommands", "OutputModule"),
63  wantAllEvents_(true) {
64 
65  //Setup the event selection
67 
68  ParameterSet selectevents =
69  parameterSet.getUntrackedParameterSet("SelectEvents", ParameterSet());
70 
71  selectevents.registerIt(); // Just in case this PSet is not registered
73  tns->getProcessName(),
75  selectors_);
76  std::map<std::string, std::vector<std::pair<std::string, int> > > outputModulePathPositions;
78  "",
79  outputModulePathPositions,
80  parentProductRegistry->anyProductProduced());
81  selectProducts(*parentProductRegistry);
82 
83  std::string const maxEvents("maxEvents");
84  std::string const maxLumis("maxLuminosityBlocks");
85 
86  processParameterSet_.reset(parameterSet.popParameterSet(std::string("process")).release());
87 
88  // if this process has a maxEvents or maxLuminosityBlocks parameter set, remove them.
89  if(processParameterSet_->exists(maxEvents)) {
90  processParameterSet_->popParameterSet(maxEvents);
91  }
92  if(processParameterSet_->exists(maxLumis)) {
93  processParameterSet_->popParameterSet(maxLumis);
94  }
95 
96  // if the top level process has a maxEvents or maxLuminosityBlocks parameter set, add them to this process.
97  if(topLevelParameterSet.exists(maxEvents)) {
98  processParameterSet_->addUntrackedParameter<ParameterSet>(maxEvents, topLevelParameterSet.getUntrackedParameterSet(maxEvents));
99  }
100  if(topLevelParameterSet.exists(maxLumis)) {
101  processParameterSet_->addUntrackedParameter<ParameterSet>(maxLumis, topLevelParameterSet.getUntrackedParameterSet(maxLumis));
102  }
103 
104  // If this process has a subprocess, pop the subprocess parameter set out of the process parameter set
105 
106  std::shared_ptr<ParameterSet> subProcessParameterSet(popSubProcessParameterSet(*processParameterSet_).release());
107 
108  ScheduleItems items(*parentProductRegistry, *this);
109 
110  ParameterSet const& optionsPset(processParameterSet_->getUntrackedParameterSet("options", ParameterSet()));
111  IllegalParameters::setThrowAnException(optionsPset.getUntrackedParameter<bool>("throwIfIllegalParameter", true));
112 
113  //initialize the services
114  ServiceToken iToken;
115 
116  // get any configured services.
117  std::auto_ptr<std::vector<ParameterSet> > serviceSets = processParameterSet_->popVParameterSet(std::string("services"));
118 
119  ServiceToken newToken = items.initServices(*serviceSets, *processParameterSet_, token, iLegacy, false);
120  parentActReg.connectToSubProcess(*items.actReg_);
121  serviceToken_ = items.addCPRandTNS(*processParameterSet_, newToken);
122 
123 
124  //make the services available
126 
127  // intialize miscellaneous items
128  items.initMisc(*processParameterSet_);
129 
130  // intialize the event setup provider
131  esp_ = esController.makeProvider(*processParameterSet_);
132 
133  branchIDListHelper_ = items.branchIDListHelper_;
134  updateBranchIDListHelper(parentBranchIDListHelper->branchIDLists());
135 
136  // intialize the Schedule
137  schedule_ = items.initSchedule(*processParameterSet_,subProcessParameterSet.get(),preallocConfig,&processContext_);
138 
139  // set the items
140  act_table_ = std::move(items.act_table_);
141  preg_.reset(items.preg_.release());
142  //CMS-THREADING this only works since Run/Lumis are synchronous so when principalCache asks for
143  // the reducedProcessHistoryID from a full ProcessHistoryID that registry will not be in use by
144  // another thread. We really need to change how this is done in the PrincipalCache.
146 
147 
148  processConfiguration_ = items.processConfiguration_;
150  processContext_.setParentProcessContext(parentProcessContext);
151 
153  for(unsigned int index = 0; index < preallocConfig.numberOfStreams(); ++index) {
154  auto ep = std::make_shared<EventPrincipal>(preg_, branchIDListHelper_, *processConfiguration_, &(historyAppenders_[index]), index);
155  ep->preModuleDelayedGetSignal_.connect(std::cref(items.actReg_->preModuleEventDelayedGetSignal_));
156  ep->postModuleDelayedGetSignal_.connect(std::cref(items.actReg_->postModuleEventDelayedGetSignal_));
158  }
159  if(subProcessParameterSet) {
160  subProcess_.reset(new SubProcess(*subProcessParameterSet,
161  topLevelParameterSet,
162  preg_,
164  esController,
165  *items.actReg_,
166  newToken,
167  iLegacy,
168  preallocConfig,
169  &processContext_));
170  }
171  }
unsigned int historyRunOffset_
Definition: SubProcess.h:231
unsigned int historyLumiOffset_
Definition: SubProcess.h:230
ParameterSetID selector_config_id_
Definition: SubProcess.h:252
void insert(std::shared_ptr< RunPrincipal > rp)
void setNumberOfConcurrentPrincipals(PreallocationConfiguration const &)
std::vector< ProcessHistoryRegistry > processHistoryRegistries_
Definition: SubProcess.h:232
std::auto_ptr< ParameterSet > popSubProcessParameterSet(ParameterSet &parameterSet)
Definition: SubProcess.cc:546
boost::shared_ptr< eventsetup::EventSetupProvider > esp_
Definition: SubProcess.h:235
void updateBranchIDListHelper(BranchIDLists const &)
Definition: SubProcess.cc:529
void setParentProcessContext(ProcessContext const *parentProcessContext)
void selectProducts(ProductRegistry const &preg)
Definition: SubProcess.cc:208
ServiceToken serviceToken_
Definition: SubProcess.h:221
static void setThrowAnException(bool v)
ProductSelectorRules productSelectorRules_
Definition: SubProcess.h:246
SubProcess(ParameterSet &parameterSet, ParameterSet const &topLevelParameterSet, std::shared_ptr< ProductRegistry const > parentProductRegistry, std::shared_ptr< BranchIDListHelper const > parentBranchIDListHelper, eventsetup::EventSetupsController &esController, ActivityRegistry &parentActReg, ServiceToken const &token, serviceregistry::ServiceLegacy iLegacy, PreallocationConfiguration const &preallocConfig, ProcessContext const *parentProcessContext)
Definition: SubProcess.cc:35
std::shared_ptr< BranchIDListHelper > branchIDListHelper_
Definition: SubProcess.h:224
void setProcessConfiguration(ProcessConfiguration const *processConfiguration)
std::unique_ptr< ExceptionToActionTable const > act_table_
Definition: SubProcess.h:225
void setProcessHistoryRegistry(ProcessHistoryRegistry const &phr)
ProductSelector productSelector_
Definition: SubProcess.h:247
detail::TriggerResultsBasedEventSelector selectors_
Definition: SubProcess.h:253
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:236
std::map< ProcessHistoryID, ProcessHistoryID > parentToChildPhID_
Definition: SubProcess.h:237
std::vector< HistoryAppender > historyAppenders_
Definition: SubProcess.h:233
std::unique_ptr< ParameterSet > processParameterSet_
Definition: SubProcess.h:239
std::vector< std::string > const & getAllTriggerNames()
std::shared_ptr< ProductRegistry const > parentPreg_
Definition: SubProcess.h:222
ProcessContext processContext_
Definition: SubProcess.h:227
ParameterSetID registerProperSelectionInfo(edm::ParameterSet const &iInitial, std::string const &iLabel, std::map< std::string, std::vector< std::pair< std::string, int > > > const &outputModulePathPositions, bool anyProductProduced)
std::auto_ptr< SubProcess > subProcess_
Definition: SubProcess.h:238
bool configureEventSelector(edm::ParameterSet const &iPSet, std::string const &iProcessName, std::vector< std::string > const &iAllTriggerNames, edm::detail::TriggerResultsBasedEventSelector &oSelector)
std::shared_ptr< ProductRegistry const > preg_
Definition: SubProcess.h:223
PrincipalCache principalCache_
Definition: SubProcess.h:234
std::shared_ptr< ProcessConfiguration const > processConfiguration_
Definition: SubProcess.h:226
edm::SubProcess::~SubProcess ( )
virtual

Definition at line 173 of file SubProcess.cc.

173 {}
edm::SubProcess::SubProcess ( SubProcess const &  )
delete

Member Function Documentation

void edm::SubProcess::beginJob ( void  )
private

Definition at line 187 of file SubProcess.cc.

References droppedBranchIDToKeptBranchID(), relativeConstraints::empty, fixBranchIDListsForEDAliases(), cmsPerfStripChart::operate(), preg_, schedule_, serviceToken_, and subProcess_.

Referenced by doBeginJob().

187  {
190  }
192  schedule_->beginJob(*preg_);
193  if(subProcess_.get()) subProcess_->doBeginJob();
194  }
std::map< BranchID::value_type, BranchID::value_type > const & droppedBranchIDToKeptBranchID()
Definition: SubProcess.h:216
ServiceToken serviceToken_
Definition: SubProcess.h:221
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:236
void fixBranchIDListsForEDAliases(std::map< BranchID::value_type, BranchID::value_type > const &droppedBranchIDToKeptBranchID)
Definition: SubProcess.cc:263
std::auto_ptr< SubProcess > subProcess_
Definition: SubProcess.h:238
std::shared_ptr< ProductRegistry const > preg_
Definition: SubProcess.h:223
void edm::SubProcess::beginLuminosityBlock ( LuminosityBlockPrincipal const &  lb,
IOVSyncValue const &  ts 
)
private

Definition at line 391 of file SubProcess.cc.

References printConversionInfo::aux, edm::LuminosityBlockPrincipal::aux(), edm::LuminosityBlockPrincipal::index(), edm::InLumi, edm::Principal::processHistory(), edm::Principal::processHistoryID(), and edm::Principal::reader().

391  {
392  auto aux = std::make_shared<LuminosityBlockAuxiliary>(principal.aux());
393  aux->setProcessHistoryID(principal.processHistoryID());
394  auto lbpp = std::make_shared<LuminosityBlockPrincipal>(aux, preg_, *processConfiguration_, &(historyAppenders_[historyLumiOffset_+principal.index()]),principal.index());
395  auto & processHistoryRegistry = processHistoryRegistries_[historyLumiOffset_+principal.index()];
396  processHistoryRegistry.registerProcessHistory(principal.processHistory());
397  lbpp->fillLuminosityBlockPrincipal(processHistoryRegistry, principal.reader());
398  lbpp->setRunPrincipal(principalCache_.runPrincipalPtr());
399  principalCache_.insert(lbpp);
400  LuminosityBlockPrincipal& lbp = *principalCache_.lumiPrincipalPtr();
402  typedef OccurrenceTraits<LuminosityBlockPrincipal, BranchActionGlobalBegin> Traits;
403  schedule_->processOneGlobal<Traits>(lbp, esp_->eventSetupForInstance(ts));
404  if(subProcess_.get()) subProcess_->doBeginLuminosityBlock(lbp, ts);
405  }
unsigned int historyLumiOffset_
Definition: SubProcess.h:230
void insert(std::shared_ptr< RunPrincipal > rp)
std::vector< ProcessHistoryRegistry > processHistoryRegistries_
Definition: SubProcess.h:232
boost::shared_ptr< eventsetup::EventSetupProvider > esp_
Definition: SubProcess.h:235
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:236
std::shared_ptr< RunPrincipal > const & runPrincipalPtr(ProcessHistoryID const &phid, RunNumber_t run) const
std::vector< HistoryAppender > historyAppenders_
Definition: SubProcess.h:233
void propagateProducts(BranchType type, Principal const &parentPrincipal, Principal &principal) const
Definition: SubProcess.cc:499
std::shared_ptr< LuminosityBlockPrincipal > const & lumiPrincipalPtr(ProcessHistoryID const &phid, RunNumber_t run, LuminosityBlockNumber_t lumi) const
std::auto_ptr< SubProcess > subProcess_
Definition: SubProcess.h:238
std::shared_ptr< ProductRegistry const > preg_
Definition: SubProcess.h:223
PrincipalCache principalCache_
Definition: SubProcess.h:234
std::shared_ptr< ProcessConfiguration const > processConfiguration_
Definition: SubProcess.h:226
void edm::SubProcess::beginRun ( RunPrincipal const &  r,
IOVSyncValue const &  ts 
)
private

Definition at line 331 of file SubProcess.cc.

References printConversionInfo::aux, edm::RunPrincipal::aux(), edm::RunPrincipal::index(), edm::InRun, edm::Principal::processHistory(), edm::Principal::processHistoryID(), edm::Principal::reader(), and edm::RunPrincipal::reducedProcessHistoryID().

331  {
332  auto aux = std::make_shared<RunAuxiliary>(principal.aux());
333  aux->setProcessHistoryID(principal.processHistoryID());
334  auto rpp = std::make_shared<RunPrincipal>(aux, preg_, *processConfiguration_, &(historyAppenders_[historyRunOffset_+principal.index()]),principal.index());
335  auto & processHistoryRegistry = processHistoryRegistries_[historyRunOffset_+principal.index()];
336  processHistoryRegistry.registerProcessHistory(principal.processHistory());
337  rpp->fillRunPrincipal(processHistoryRegistry, principal.reader());
338  principalCache_.insert(rpp);
339 
340  ProcessHistoryID const& parentInputReducedPHID = principal.reducedProcessHistoryID();
341  ProcessHistoryID const& inputReducedPHID = rpp->reducedProcessHistoryID();
342 
343  parentToChildPhID_.insert(std::make_pair(parentInputReducedPHID,inputReducedPHID));
344 
345  RunPrincipal& rp = *principalCache_.runPrincipalPtr();
347  typedef OccurrenceTraits<RunPrincipal, BranchActionGlobalBegin> Traits;
348  schedule_->processOneGlobal<Traits>(rp, esp_->eventSetupForInstance(ts));
349  if(subProcess_.get()) subProcess_->doBeginRun(rp, ts);
350  }
unsigned int historyRunOffset_
Definition: SubProcess.h:231
void insert(std::shared_ptr< RunPrincipal > rp)
std::vector< ProcessHistoryRegistry > processHistoryRegistries_
Definition: SubProcess.h:232
boost::shared_ptr< eventsetup::EventSetupProvider > esp_
Definition: SubProcess.h:235
Hash< ProcessHistoryType > ProcessHistoryID
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:236
std::map< ProcessHistoryID, ProcessHistoryID > parentToChildPhID_
Definition: SubProcess.h:237
std::shared_ptr< RunPrincipal > const & runPrincipalPtr(ProcessHistoryID const &phid, RunNumber_t run) const
std::vector< HistoryAppender > historyAppenders_
Definition: SubProcess.h:233
void propagateProducts(BranchType type, Principal const &parentPrincipal, Principal &principal) const
Definition: SubProcess.cc:499
std::auto_ptr< SubProcess > subProcess_
Definition: SubProcess.h:238
std::shared_ptr< ProductRegistry const > preg_
Definition: SubProcess.h:223
PrincipalCache principalCache_
Definition: SubProcess.h:234
std::shared_ptr< ProcessConfiguration const > processConfiguration_
Definition: SubProcess.h:226
void edm::SubProcess::clearCounters ( )
inline

Clear all the counters in the trigger report.

Definition at line 198 of file SubProcess.h.

References cmsPerfStripChart::operate(), schedule_, serviceToken_, and subProcess_.

198  {
200  schedule_->clearCounters();
201  if(subProcess_.get()) subProcess_->clearCounters();
202  }
ServiceToken serviceToken_
Definition: SubProcess.h:221
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:236
std::auto_ptr< SubProcess > subProcess_
Definition: SubProcess.h:238
void edm::SubProcess::closeOutputFiles ( )
inline

Definition at line 92 of file SubProcess.h.

References cmsPerfStripChart::operate(), schedule_, serviceToken_, and subProcess_.

92  {
94  schedule_->closeOutputFiles();
95  if(subProcess_.get()) subProcess_->closeOutputFiles();
96  }
ServiceToken serviceToken_
Definition: SubProcess.h:221
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:236
std::auto_ptr< SubProcess > subProcess_
Definition: SubProcess.h:238
void edm::SubProcess::deleteLumiFromCache ( ProcessHistoryID const &  parentPhID,
int  runNumber,
int  lumiNumber 
)

Definition at line 432 of file SubProcess.cc.

432  {
433  std::map<ProcessHistoryID, ProcessHistoryID>::const_iterator it = parentToChildPhID_.find(parentPhID);
434  assert(it != parentToChildPhID_.end());
435  principalCache_.deleteLumi(it->second, runNumber, lumiNumber);
436  if(subProcess_.get()) subProcess_->deleteLumiFromCache(it->second, runNumber, lumiNumber);
437  }
void deleteLumi(ProcessHistoryID const &phid, RunNumber_t run, LuminosityBlockNumber_t lumi)
std::map< ProcessHistoryID, ProcessHistoryID > parentToChildPhID_
Definition: SubProcess.h:237
std::auto_ptr< SubProcess > subProcess_
Definition: SubProcess.h:238
PrincipalCache principalCache_
Definition: SubProcess.h:234
void edm::SubProcess::deleteRunFromCache ( ProcessHistoryID const &  parentPhID,
int  runNumber 
)

Definition at line 377 of file SubProcess.cc.

377  {
378  std::map<ProcessHistoryID, ProcessHistoryID>::const_iterator it = parentToChildPhID_.find(parentPhID);
379  assert(it != parentToChildPhID_.end());
380  principalCache_.deleteRun(it->second, runNumber);
381  if(subProcess_.get()) subProcess_->deleteRunFromCache(it->second, runNumber);
382  }
std::map< ProcessHistoryID, ProcessHistoryID > parentToChildPhID_
Definition: SubProcess.h:237
void deleteRun(ProcessHistoryID const &phid, RunNumber_t run)
std::auto_ptr< SubProcess > subProcess_
Definition: SubProcess.h:238
PrincipalCache principalCache_
Definition: SubProcess.h:234
void edm::SubProcess::doBeginJob ( )

Definition at line 176 of file SubProcess.cc.

References beginJob().

176  {
177  this->beginJob();
178  }
void edm::SubProcess::doBeginLuminosityBlock ( LuminosityBlockPrincipal const &  principal,
IOVSyncValue const &  ts 
)

Definition at line 385 of file SubProcess.cc.

References cmsPerfStripChart::operate().

385  {
388  }
ServiceToken serviceToken_
Definition: SubProcess.h:221
void beginLuminosityBlock(LuminosityBlockPrincipal const &lb, IOVSyncValue const &ts)
Definition: SubProcess.cc:391
void edm::SubProcess::doBeginRun ( RunPrincipal const &  principal,
IOVSyncValue const &  ts 
)

Definition at line 325 of file SubProcess.cc.

References cmsPerfStripChart::operate().

325  {
327  beginRun(principal,ts);
328  }
void beginRun(RunPrincipal const &r, IOVSyncValue const &ts)
Definition: SubProcess.cc:331
ServiceToken serviceToken_
Definition: SubProcess.h:221
void edm::SubProcess::doBeginStream ( unsigned int  iID)

Definition at line 440 of file SubProcess.cc.

References cmsPerfStripChart::operate().

440  {
442  schedule_->beginStream(iID);
443  if(subProcess_.get()) subProcess_->doBeginStream(iID);
444  }
ServiceToken serviceToken_
Definition: SubProcess.h:221
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:236
std::auto_ptr< SubProcess > subProcess_
Definition: SubProcess.h:238
void edm::SubProcess::doEndJob ( )

Definition at line 181 of file SubProcess.cc.

References endJob().

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

181  {
182  endJob();
183  }
void edm::SubProcess::doEndLuminosityBlock ( LuminosityBlockPrincipal const &  principal,
IOVSyncValue const &  ts,
bool  cleaningUpAfterException 
)

Definition at line 408 of file SubProcess.cc.

References cmsPerfStripChart::operate().

408  {
410  endLuminosityBlock(principal,ts,cleaningUpAfterException);
411  }
ServiceToken serviceToken_
Definition: SubProcess.h:221
void endLuminosityBlock(LuminosityBlockPrincipal const &lb, IOVSyncValue const &ts, bool cleaningUpAfterException)
Definition: SubProcess.cc:414
void edm::SubProcess::doEndRun ( RunPrincipal const &  principal,
IOVSyncValue const &  ts,
bool  cleaningUpAfterException 
)

Definition at line 353 of file SubProcess.cc.

References cmsPerfStripChart::operate().

353  {
355  endRun(principal,ts,cleaningUpAfterException);
356  }
ServiceToken serviceToken_
Definition: SubProcess.h:221
void endRun(RunPrincipal const &r, IOVSyncValue const &ts, bool cleaningUpAfterException)
Definition: SubProcess.cc:359
void edm::SubProcess::doEndStream ( unsigned int  iID)

Definition at line 447 of file SubProcess.cc.

References cmsPerfStripChart::operate().

447  {
449  schedule_->endStream(iID);
450  if(subProcess_.get()) subProcess_->doEndStream(iID);
451  }
ServiceToken serviceToken_
Definition: SubProcess.h:221
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:236
std::auto_ptr< SubProcess > subProcess_
Definition: SubProcess.h:238
void edm::SubProcess::doEvent ( EventPrincipal const &  principal)

Definition at line 278 of file SubProcess.cc.

References cmsPerfStripChart::operate(), and LaserDQM_cfg::process.

278  {
280  /* BEGIN relevant bits from OutputModule::doEvent */
281  detail::TRBESSentry products_sentry(selectors_);
282 
283 
284  if(!wantAllEvents_) {
285  // use module description and const_cast unless interface to
286  // event is changed to just take a const EventPrincipal
287  if(!selectors_.wantEvent(ep, nullptr)) {
288  return;
289  }
290  }
291  process(ep);
292  /* END relevant bits from OutputModule::doEvent */
293  }
ServiceToken serviceToken_
Definition: SubProcess.h:221
void process(EventPrincipal const &e)
Definition: SubProcess.cc:296
detail::TriggerResultsBasedEventSelector selectors_
Definition: SubProcess.h:253
bool wantEvent(EventPrincipal const &e, ModuleCallingContext const *)
void edm::SubProcess::doStreamBeginLuminosityBlock ( unsigned int  iID,
LuminosityBlockPrincipal const &  principal,
IOVSyncValue const &  ts 
)

Definition at line 476 of file SubProcess.cc.

References cmsPerfStripChart::operate().

476  {
478  {
479  LuminosityBlockPrincipal& lbp = *principalCache_.lumiPrincipalPtr();
480  typedef OccurrenceTraits<LuminosityBlockPrincipal, BranchActionStreamBegin> Traits;
481  schedule_->processOneStream<Traits>(id,lbp, esp_->eventSetupForInstance(ts));
482  if(subProcess_.get()) subProcess_->doStreamBeginLuminosityBlock(id,lbp, ts);
483  }
484  }
boost::shared_ptr< eventsetup::EventSetupProvider > esp_
Definition: SubProcess.h:235
ServiceToken serviceToken_
Definition: SubProcess.h:221
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:236
std::shared_ptr< LuminosityBlockPrincipal > const & lumiPrincipalPtr(ProcessHistoryID const &phid, RunNumber_t run, LuminosityBlockNumber_t lumi) const
std::auto_ptr< SubProcess > subProcess_
Definition: SubProcess.h:238
PrincipalCache principalCache_
Definition: SubProcess.h:234
void edm::SubProcess::doStreamBeginRun ( unsigned int  iID,
RunPrincipal const &  principal,
IOVSyncValue const &  ts 
)

Definition at line 454 of file SubProcess.cc.

References cmsPerfStripChart::operate().

454  {
456  {
457  RunPrincipal& rp = *principalCache_.runPrincipalPtr();
458  typedef OccurrenceTraits<RunPrincipal, BranchActionStreamBegin> Traits;
459  schedule_->processOneStream<Traits>(id,rp, esp_->eventSetupForInstance(ts));
460  if(subProcess_.get()) subProcess_->doStreamBeginRun(id,rp, ts);
461  }
462  }
boost::shared_ptr< eventsetup::EventSetupProvider > esp_
Definition: SubProcess.h:235
ServiceToken serviceToken_
Definition: SubProcess.h:221
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:236
std::shared_ptr< RunPrincipal > const & runPrincipalPtr(ProcessHistoryID const &phid, RunNumber_t run) const
std::auto_ptr< SubProcess > subProcess_
Definition: SubProcess.h:238
PrincipalCache principalCache_
Definition: SubProcess.h:234
void edm::SubProcess::doStreamEndLuminosityBlock ( unsigned int  iID,
LuminosityBlockPrincipal const &  principal,
IOVSyncValue const &  ts,
bool  cleaningUpAfterException 
)

Definition at line 487 of file SubProcess.cc.

References cmsPerfStripChart::operate().

487  {
489  {
490  LuminosityBlockPrincipal& lbp = *principalCache_.lumiPrincipalPtr();
491  typedef OccurrenceTraits<LuminosityBlockPrincipal, BranchActionStreamEnd> Traits;
492  schedule_->processOneStream<Traits>(id,lbp, esp_->eventSetupForInstance(ts),cleaningUpAfterException);
493  if(subProcess_.get()) subProcess_->doStreamEndLuminosityBlock(id,lbp, ts,cleaningUpAfterException);
494  }
495  }
boost::shared_ptr< eventsetup::EventSetupProvider > esp_
Definition: SubProcess.h:235
ServiceToken serviceToken_
Definition: SubProcess.h:221
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:236
std::shared_ptr< LuminosityBlockPrincipal > const & lumiPrincipalPtr(ProcessHistoryID const &phid, RunNumber_t run, LuminosityBlockNumber_t lumi) const
std::auto_ptr< SubProcess > subProcess_
Definition: SubProcess.h:238
PrincipalCache principalCache_
Definition: SubProcess.h:234
void edm::SubProcess::doStreamEndRun ( unsigned int  iID,
RunPrincipal const &  principal,
IOVSyncValue const &  ts,
bool  cleaningUpAfterException 
)

Definition at line 465 of file SubProcess.cc.

References cmsPerfStripChart::operate().

465  {
467  {
468  RunPrincipal& rp = *principalCache_.runPrincipalPtr();
469  typedef OccurrenceTraits<RunPrincipal, BranchActionStreamEnd> Traits;
470  schedule_->processOneStream<Traits>(id,rp, esp_->eventSetupForInstance(ts),cleaningUpAfterException);
471  if(subProcess_.get()) subProcess_->doStreamEndRun(id,rp, ts,cleaningUpAfterException);
472  }
473  }
boost::shared_ptr< eventsetup::EventSetupProvider > esp_
Definition: SubProcess.h:235
ServiceToken serviceToken_
Definition: SubProcess.h:221
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:236
std::shared_ptr< RunPrincipal > const & runPrincipalPtr(ProcessHistoryID const &phid, RunNumber_t run) const
std::auto_ptr< SubProcess > subProcess_
Definition: SubProcess.h:238
PrincipalCache principalCache_
Definition: SubProcess.h:234
std::map<BranchID::value_type, BranchID::value_type> const& edm::SubProcess::droppedBranchIDToKeptBranchID ( )
inlineprivate

Definition at line 216 of file SubProcess.h.

References droppedBranchIDToKeptBranchID_.

Referenced by beginJob().

216  {
218  }
std::map< BranchID::value_type, BranchID::value_type > droppedBranchIDToKeptBranchID_
Definition: SubProcess.h:257
void edm::SubProcess::enableEndPaths ( bool  active)
inline

Turn end_paths "off" if "active" is false; Turn end_paths "on" if "active" is true.

Definition at line 171 of file SubProcess.h.

References cmsPerfStripChart::operate(), schedule_, serviceToken_, and subProcess_.

171  {
173  schedule_->enableEndPaths(active);
174  if(subProcess_.get()) subProcess_->enableEndPaths(active);
175  }
ServiceToken serviceToken_
Definition: SubProcess.h:221
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:236
std::auto_ptr< SubProcess > subProcess_
Definition: SubProcess.h:238
void edm::SubProcess::endJob ( void  )
private

Definition at line 197 of file SubProcess.cc.

References trackerHits::c, edm::ExceptionCollector::call(), cmsPerfStripChart::operate(), schedule_, serviceToken_, and subProcess_.

Referenced by doEndJob().

197  {
199  ExceptionCollector c("Multiple exceptions were thrown while executing endJob. An exception message follows for each.");
200  schedule_->endJob(c);
201  if(subProcess_.get()) c.call([this](){ this->subProcess_->doEndJob();});
202  if(c.hasThrown()) {
203  c.rethrow();
204  }
205  }
ServiceToken serviceToken_
Definition: SubProcess.h:221
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:236
std::auto_ptr< SubProcess > subProcess_
Definition: SubProcess.h:238
void edm::SubProcess::endLuminosityBlock ( LuminosityBlockPrincipal const &  lb,
IOVSyncValue const &  ts,
bool  cleaningUpAfterException 
)
private

Definition at line 414 of file SubProcess.cc.

References edm::InLumi.

414  {
415  LuminosityBlockPrincipal& lbp = *principalCache_.lumiPrincipalPtr();
417  typedef OccurrenceTraits<LuminosityBlockPrincipal, BranchActionGlobalEnd> Traits;
418  schedule_->processOneGlobal<Traits>(lbp, esp_->eventSetupForInstance(ts), cleaningUpAfterException);
419  if(subProcess_.get()) subProcess_->doEndLuminosityBlock(lbp, ts, cleaningUpAfterException);
420  }
boost::shared_ptr< eventsetup::EventSetupProvider > esp_
Definition: SubProcess.h:235
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:236
void propagateProducts(BranchType type, Principal const &parentPrincipal, Principal &principal) const
Definition: SubProcess.cc:499
std::shared_ptr< LuminosityBlockPrincipal > const & lumiPrincipalPtr(ProcessHistoryID const &phid, RunNumber_t run, LuminosityBlockNumber_t lumi) const
std::auto_ptr< SubProcess > subProcess_
Definition: SubProcess.h:238
PrincipalCache principalCache_
Definition: SubProcess.h:234
bool edm::SubProcess::endPathsEnabled ( ) const
inline

Return true if end_paths are active, and false if they are inactive.

Definition at line 178 of file SubProcess.h.

References cmsPerfStripChart::operate(), schedule_, and serviceToken_.

178  {
180  return schedule_->endPathsEnabled();
181  }
ServiceToken serviceToken_
Definition: SubProcess.h:221
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:236
void edm::SubProcess::endRun ( RunPrincipal const &  r,
IOVSyncValue const &  ts,
bool  cleaningUpAfterException 
)
private

Definition at line 359 of file SubProcess.cc.

References edm::InRun.

359  {
360  RunPrincipal& rp = *principalCache_.runPrincipalPtr();
362  typedef OccurrenceTraits<RunPrincipal, BranchActionGlobalEnd> Traits;
363  schedule_->processOneGlobal<Traits>(rp, esp_->eventSetupForInstance(ts), cleaningUpAfterException);
364  if(subProcess_.get()) subProcess_->doEndRun(rp, ts, cleaningUpAfterException);
365  }
boost::shared_ptr< eventsetup::EventSetupProvider > esp_
Definition: SubProcess.h:235
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:236
std::shared_ptr< RunPrincipal > const & runPrincipalPtr(ProcessHistoryID const &phid, RunNumber_t run) const
void propagateProducts(BranchType type, Principal const &parentPrincipal, Principal &principal) const
Definition: SubProcess.cc:499
std::auto_ptr< SubProcess > subProcess_
Definition: SubProcess.h:238
PrincipalCache principalCache_
Definition: SubProcess.h:234
void edm::SubProcess::fixBranchIDListsForEDAliases ( std::map< BranchID::value_type, BranchID::value_type > const &  droppedBranchIDToKeptBranchID)
private

Definition at line 263 of file SubProcess.cc.

References getDQMSummary::iter.

Referenced by beginJob().

263  {
264  // Check for branches dropped while an EDAlias was kept.
265  // Replace BranchID of each dropped branch with that of the kept alias.
266  for(BranchIDList& branchIDList : branchIDListHelper_->mutableBranchIDLists()) {
267  for(BranchID::value_type& branchID : branchIDList) {
268  std::map<BranchID::value_type, BranchID::value_type>::const_iterator iter = droppedBranchIDToKeptBranchID.find(branchID);
269  if(iter != droppedBranchIDToKeptBranchID.end()) {
270  branchID = iter->second;
271  }
272  }
273  }
274  if(subProcess_.get()) subProcess_->fixBranchIDListsForEDAliases(droppedBranchIDToKeptBranchID);
275  }
std::map< BranchID::value_type, BranchID::value_type > const & droppedBranchIDToKeptBranchID()
Definition: SubProcess.h:216
unsigned int value_type
Definition: BranchID.h:16
std::shared_ptr< BranchIDListHelper > branchIDListHelper_
Definition: SubProcess.h:224
std::vector< BranchID::value_type > BranchIDList
Definition: BranchIDList.h:18
std::auto_ptr< SubProcess > subProcess_
Definition: SubProcess.h:238
std::vector<ModuleDescription const*> edm::SubProcess::getAllModuleDescriptions ( ) const

Return a vector allowing const access to all the ModuleDescriptions for this SubProcess.

*** N.B. *** Ownership of the ModuleDescriptions is not *** passed to the caller. Do not call delete on these *** pointers!

void edm::SubProcess::getTriggerReport ( TriggerReport rep) const
inline

Return the trigger report information on paths, modules-in-path, modules-in-endpath, and modules.

Definition at line 185 of file SubProcess.h.

References cmsPerfStripChart::operate(), schedule_, and serviceToken_.

185  {
187  schedule_->getTriggerReport(rep);
188  }
string rep
Definition: cuy.py:1188
ServiceToken serviceToken_
Definition: SubProcess.h:221
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:236
SelectedProductsForBranchType const& edm::SubProcess::keptProducts ( ) const
inline

Definition at line 54 of file SubProcess.h.

References keptProducts_.

Referenced by edm::ScheduleItems::ScheduleItems().

54 {return keptProducts_;}
SelectedProductsForBranchType keptProducts_
Definition: SubProcess.h:245
void edm::SubProcess::openNewOutputFilesIfNeeded ( )
inline

Definition at line 99 of file SubProcess.h.

References cmsPerfStripChart::operate(), schedule_, serviceToken_, and subProcess_.

99  {
101  schedule_->openNewOutputFilesIfNeeded();
102  if(subProcess_.get()) subProcess_->openNewOutputFilesIfNeeded();
103  }
ServiceToken serviceToken_
Definition: SubProcess.h:221
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:236
std::auto_ptr< SubProcess > subProcess_
Definition: SubProcess.h:238
void edm::SubProcess::openOutputFiles ( FileBlock fb)
inline

Definition at line 106 of file SubProcess.h.

References cmsPerfStripChart::operate(), schedule_, serviceToken_, and subProcess_.

106  {
108  schedule_->openOutputFiles(fb);
109  if(subProcess_.get()) subProcess_->openOutputFiles(fb);
110  }
ServiceToken serviceToken_
Definition: SubProcess.h:221
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:236
std::auto_ptr< SubProcess > subProcess_
Definition: SubProcess.h:238
SubProcess& edm::SubProcess::operator= ( SubProcess const &  )
delete
void edm::SubProcess::postForkReacquireResources ( unsigned int  iChildIndex,
unsigned int  iNumberOfChildren 
)
inline

Definition at line 136 of file SubProcess.h.

References cmsPerfStripChart::operate(), schedule_, serviceToken_, and subProcess_.

136  {
138  schedule_->postForkReacquireResources(iChildIndex, iNumberOfChildren);
139  if(subProcess_.get()) subProcess_->postForkReacquireResources(iChildIndex, iNumberOfChildren);
140  }
ServiceToken serviceToken_
Definition: SubProcess.h:221
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:236
std::auto_ptr< SubProcess > subProcess_
Definition: SubProcess.h:238
void edm::SubProcess::preForkReleaseResources ( )
inline

Definition at line 130 of file SubProcess.h.

References cmsPerfStripChart::operate(), schedule_, serviceToken_, and subProcess_.

130  {
132  schedule_->preForkReleaseResources();
133  if(subProcess_.get()) subProcess_->preForkReleaseResources();
134  }
ServiceToken serviceToken_
Definition: SubProcess.h:221
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:236
std::auto_ptr< SubProcess > subProcess_
Definition: SubProcess.h:238
void edm::SubProcess::process ( EventPrincipal const &  e)
private

Definition at line 296 of file SubProcess.cc.

References edm::ProductRegistry::anyProductProduced(), printConversionInfo::aux, edm::EventPrincipal::aux(), edm::EventPrincipal::branchListIndexes(), edm::EventPrincipal::clearEventPrincipal(), edm::EventPrincipal::eventSelectionIDs(), edm::EventPrincipal::fillEventPrincipal(), edm::InEvent, edm::Principal::processHistory(), edm::Principal::processHistoryID(), edm::EventPrincipal::productProvenanceRetrieverPtr(), edm::Principal::productRegistry(), edm::Principal::reader(), edm::EventPrincipal::setLuminosityBlockPrincipal(), edm::EventPrincipal::streamID(), and edm::StreamID::value().

Referenced by ConfigBuilder.ConfigBuilder::addExtraStream(), ConfigBuilder.ConfigBuilder::completeInputCommand(), ConfigBuilder.ConfigBuilder::doNotInlineEventContent(), Vispa.Plugins.ConfigEditor.ConfigDataAccessor.ConfigDataAccessor::dumpPython(), ConfigBuilder.ConfigBuilder.PrintAllModules::leave(), Vispa.Plugins.ConfigEditor.ConfigDataAccessor.ConfigDataAccessor::open(), Vispa.Plugins.ConfigEditor.ConfigDataAccessor.ConfigDataAccessor::outputEventContent(), ConfigBuilder.ConfigBuilder::prepare_FASTSIM(), ConfigBuilder.ConfigBuilder::prepare_HLT(), ConfigBuilder.ConfigBuilder::prepare_LHE(), ConfigBuilder.ConfigBuilder::prepare_VALIDATION(), ConfigBuilder.ConfigBuilder::renameHLTprocessInSequence(), ConfigBuilder.ConfigBuilder::renameInputTagsInSequence(), ConfigBuilder.ConfigBuilder::scheduleSequence(), Vispa.Plugins.ConfigEditor.ConfigDataAccessor.ConfigDataAccessor::setProcess(), and Vispa.Plugins.ConfigEditor.ConfigDataAccessor.ConfigDataAccessor::setProperty().

296  {
297  EventAuxiliary aux(principal.aux());
298  aux.setProcessHistoryID(principal.processHistoryID());
299 
300  EventSelectionIDVector esids{principal.eventSelectionIDs()};
301  if (principal.productRegistry().anyProductProduced() || !wantAllEvents_) {
302  esids.push_back(selector_config_id_);
303  }
304 
305  EventPrincipal& ep = principalCache_.eventPrincipal(principal.streamID().value());
306  auto & processHistoryRegistry = processHistoryRegistries_[principal.streamID().value()];
307  processHistoryRegistry.registerProcessHistory(principal.processHistory());
308  BranchListIndexes bli(principal.branchListIndexes());
309  branchIDListHelper_->fixBranchListIndexes(bli);
310  ep.fillEventPrincipal(aux,
311  processHistoryRegistry,
312  std::move(esids),
313  std::move(bli),
314  *(principal.productProvenanceRetrieverPtr()),//NOTE: this transfers the per product provenance
315  principal.reader());
316  ep.setLuminosityBlockPrincipal(principalCache_.lumiPrincipalPtr());
318  typedef OccurrenceTraits<EventPrincipal, BranchActionStreamBegin> Traits;
319  schedule_->processOneEvent<Traits>(ep.streamID().value(),ep, esp_->eventSetup());
320  if(subProcess_.get()) subProcess_->doEvent(ep);
321  ep.clearEventPrincipal();
322  }
ParameterSetID selector_config_id_
Definition: SubProcess.h:252
std::vector< ProcessHistoryRegistry > processHistoryRegistries_
Definition: SubProcess.h:232
boost::shared_ptr< eventsetup::EventSetupProvider > esp_
Definition: SubProcess.h:235
std::vector< EventSelectionID > EventSelectionIDVector
std::vector< BranchListIndex > BranchListIndexes
std::shared_ptr< BranchIDListHelper > branchIDListHelper_
Definition: SubProcess.h:224
EventPrincipal & eventPrincipal(unsigned int iStreamIndex) const
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:236
void propagateProducts(BranchType type, Principal const &parentPrincipal, Principal &principal) const
Definition: SubProcess.cc:499
std::shared_ptr< LuminosityBlockPrincipal > const & lumiPrincipalPtr(ProcessHistoryID const &phid, RunNumber_t run, LuminosityBlockNumber_t lumi) const
std::auto_ptr< SubProcess > subProcess_
Definition: SubProcess.h:238
PrincipalCache principalCache_
Definition: SubProcess.h:234
void edm::SubProcess::propagateProducts ( BranchType  type,
Principal const &  parentPrincipal,
Principal principal 
) const
private

Definition at line 499 of file SubProcess.cc.

References edm::Principal::getProductHolder(), edm::Provenance::processHistory(), edm::ProductHolderBase::productData(), edm::Provenance::productID(), edm::Provenance::productProvenance(), edm::Provenance::productProvenanceValid(), edm::ProductHolderBase::productUnavailable(), edm::ProductData::prov_, edm::Provenance::resetProductProvenance(), edm::Provenance::setProcessHistory(), edm::Provenance::setProductID(), edm::Provenance::setProductProvenance(), edm::Provenance::setStore(), edm::Provenance::store(), and edm::ProductData::wrapper_.

499  {
500  SelectedProducts const& keptVector = keptProducts()[type];
501  for(auto const& item : keptVector) {
502  ProductHolderBase const* parentProductHolder = parentPrincipal.getProductHolder(item->branchID());
503  if(parentProductHolder != nullptr) {
504  ProductData const& parentData = parentProductHolder->productData();
505  ProductHolderBase const* productHolder = principal.getProductHolder(item->branchID());
506  if(productHolder != nullptr) {
507  ProductData& thisData = const_cast<ProductData&>(productHolder->productData());
508  //Propagate the per event(run)(lumi) data for this product to the subprocess.
509  //First, the product itself.
510  thisData.wrapper_ = parentData.wrapper_;
511  // Then the product ID and the ProcessHistory
512  thisData.prov_.setProductID(parentData.prov_.productID());
513  thisData.prov_.setProcessHistory(parentData.prov_.processHistory());
514  // Then the store, in case the product needs reading in a subprocess.
515  thisData.prov_.setStore(parentData.prov_.store());
516  // And last, the other per event provenance.
517  if(parentData.prov_.productProvenanceValid()) {
518  thisData.prov_.setProductProvenance(*parentData.prov_.productProvenance());
519  } else {
520  thisData.prov_.resetProductProvenance();
521  }
522  // Sets unavailable flag, if known that product is not available
523  (void)productHolder->productUnavailable();
524  }
525  }
526  }
527  }
type
Definition: HCALResponse.h:21
SelectedProductsForBranchType const & keptProducts() const
Definition: SubProcess.h:54
std::vector< BranchDescription const * > SelectedProducts
void edm::SubProcess::respondToCloseInputFile ( FileBlock const &  fb)
inline

Definition at line 118 of file SubProcess.h.

References cmsPerfStripChart::operate(), schedule_, serviceToken_, and subProcess_.

118  {
120  schedule_->respondToCloseInputFile(fb);
121  if(subProcess_.get()) subProcess_->respondToCloseInputFile(fb);
122  }
ServiceToken serviceToken_
Definition: SubProcess.h:221
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:236
std::auto_ptr< SubProcess > subProcess_
Definition: SubProcess.h:238
void edm::SubProcess::respondToOpenInputFile ( FileBlock const &  fb)

Definition at line 538 of file SubProcess.cc.

References cmsPerfStripChart::operate().

538  {
540  schedule_->respondToOpenInputFile(fb);
541  if(subProcess_.get()) subProcess_->respondToOpenInputFile(fb);
542  }
ServiceToken serviceToken_
Definition: SubProcess.h:221
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:236
std::auto_ptr< SubProcess > subProcess_
Definition: SubProcess.h:238
void edm::SubProcess::selectProducts ( ProductRegistry const &  preg)

Definition at line 208 of file SubProcess.cc.

References edm::ProductRegistry::allBranchDescriptions(), edm::BranchDescription::branchID(), edm::BranchDescription::branchType(), edm::errors::Configuration, edm::hlt::Exception, edm::BranchID::id(), edm::BranchDescription::isAlias(), getDQMSummary::iter, edm::BranchDescription::originalBranchID(), edm::BranchDescription::present(), edm::BranchDescription::produced(), edm::ProductRegistry::productList(), and edm::BranchDescription::transient().

Referenced by SubProcess().

208  {
209  if(productSelector_.initialized()) return;
210  productSelector_.initialize(productSelectorRules_, preg.allBranchDescriptions());
211 
212  // TODO: See if we can collapse keptProducts_ and productSelector_ into a
213  // single object. See the notes in the header for ProductSelector
214  // for more information.
215 
216  std::map<BranchID, BranchDescription const*> trueBranchIDToKeptBranchDesc;
217 
218  for(auto const& it : preg.productList()) {
219  BranchDescription const& desc = it.second;
220  if(desc.transient()) {
221  // if the class of the branch is marked transient, output nothing
222  } else if(!desc.present() && !desc.produced()) {
223  // else if the branch containing the product has been previously dropped,
224  // output nothing
225  } else if(productSelector_.selected(desc)) {
226  // else if the branch has been selected, put it in the list of selected branches.
227  if(desc.produced()) {
228  // First we check if an equivalent branch has already been selected due to an EDAlias.
229  // We only need the check for products produced in this process.
230  BranchID const& trueBranchID = desc.originalBranchID();
231  std::map<BranchID, BranchDescription const*>::const_iterator iter = trueBranchIDToKeptBranchDesc.find(trueBranchID);
232  if(iter != trueBranchIDToKeptBranchDesc.end()) {
233  throw edm::Exception(errors::Configuration, "Duplicate Output Selection")
234  << "Two (or more) equivalent branches have been selected for output.\n"
235  << "#1: " << BranchKey(desc) << "\n"
236  << "#2: " << BranchKey(*iter->second) << "\n"
237  << "Please drop at least one of them.\n";
238  }
239  trueBranchIDToKeptBranchDesc.insert(std::make_pair(trueBranchID, &desc));
240  }
241  // Now put it in the list of selected branches.
242  keptProducts_[desc.branchType()].push_back(&desc);
243  }
244  }
245  // Now fill in a mapping needed in the case that a branch was dropped while its EDAlias was kept.
246  for(auto const& it : preg.productList()) {
247  BranchDescription const& desc = it.second;
248  if(!desc.produced() || desc.isAlias()) continue;
249  BranchID const& branchID = desc.branchID();
250  std::map<BranchID, BranchDescription const*>::const_iterator iter = trueBranchIDToKeptBranchDesc.find(branchID);
251  if(iter != trueBranchIDToKeptBranchDesc.end()) {
252  // This branch, produced in this process, or an alias of it, was persisted.
253  BranchID const& keptBranchID = iter->second->branchID();
254  if(keptBranchID != branchID) {
255  // An EDAlias branch was persisted.
256  droppedBranchIDToKeptBranchID_.insert(std::make_pair(branchID.id(), keptBranchID.id()));
257  }
258  }
259  }
260  }
bool selected(BranchDescription const &desc) const
SelectedProductsForBranchType keptProducts_
Definition: SubProcess.h:245
ProductSelectorRules productSelectorRules_
Definition: SubProcess.h:246
std::map< BranchID::value_type, BranchID::value_type > droppedBranchIDToKeptBranchID_
Definition: SubProcess.h:257
ProductSelector productSelector_
Definition: SubProcess.h:247
bool initialized() const
void initialize(ProductSelectorRules const &rules, std::vector< BranchDescription const * > const &branchDescriptions)
preg
Definition: Schedule.cc:368
bool edm::SubProcess::shouldWeCloseOutput ( ) const
inline

Definition at line 125 of file SubProcess.h.

References cmsPerfStripChart::operate(), schedule_, serviceToken_, and subProcess_.

125  {
127  return schedule_->shouldWeCloseOutput() || (subProcess_.get() ? subProcess_->shouldWeCloseOutput() : false);
128  }
ServiceToken serviceToken_
Definition: SubProcess.h:221
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:236
std::auto_ptr< SubProcess > subProcess_
Definition: SubProcess.h:238
bool edm::SubProcess::terminate ( void  ) const
inline

Return whether each output module has reached its maximum count. If there is a subprocess, get this information from the subprocess.

Definition at line 192 of file SubProcess.h.

References cmsPerfStripChart::operate(), schedule_, serviceToken_, and subProcess_.

192  {
194  return subProcess_.get() ? subProcess_->terminate() : schedule_->terminate();
195  }
ServiceToken serviceToken_
Definition: SubProcess.h:221
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:236
std::auto_ptr< SubProcess > subProcess_
Definition: SubProcess.h:238
int edm::SubProcess::totalEvents ( ) const
inline

Return the number of events this SubProcess has tried to process (inclues both successes and failures, including failures due to exceptions during processing).

Definition at line 152 of file SubProcess.h.

References schedule_.

152  {
153  return schedule_->totalEvents();
154  }
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:236
int edm::SubProcess::totalEventsFailed ( ) const
inline

Return the number of events that have not passed any trigger. (N.B. totalEventsFailed() + totalEventsPassed() == totalEvents()

Definition at line 164 of file SubProcess.h.

References cmsPerfStripChart::operate(), schedule_, and serviceToken_.

164  {
166  return schedule_->totalEventsFailed();
167  }
ServiceToken serviceToken_
Definition: SubProcess.h:221
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:236
int edm::SubProcess::totalEventsPassed ( ) const
inline

Return the number of events which have been passed by one or more trigger paths.

Definition at line 157 of file SubProcess.h.

References cmsPerfStripChart::operate(), schedule_, and serviceToken_.

157  {
159  return schedule_->totalEventsPassed();
160  }
ServiceToken serviceToken_
Definition: SubProcess.h:221
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:236
void edm::SubProcess::updateBranchIDListHelper ( BranchIDLists const &  branchIDLists)

Definition at line 529 of file SubProcess.cc.

Referenced by SubProcess().

529  {
530  branchIDListHelper_->updateFromParent(branchIDLists);
531  if(subProcess_.get()) {
532  subProcess_->updateBranchIDListHelper(branchIDListHelper_->branchIDLists());
533  }
534  }
std::shared_ptr< BranchIDListHelper > branchIDListHelper_
Definition: SubProcess.h:224
std::auto_ptr< SubProcess > subProcess_
Definition: SubProcess.h:238
void edm::SubProcess::writeLumi ( ProcessHistoryID const &  parentPhID,
int  runNumber,
int  lumiNumber 
)

Definition at line 423 of file SubProcess.cc.

References cmsPerfStripChart::operate().

423  {
425  std::map<ProcessHistoryID, ProcessHistoryID>::const_iterator it = parentToChildPhID_.find(parentPhID);
426  assert(it != parentToChildPhID_.end());
427  schedule_->writeLumi(principalCache_.lumiPrincipal(it->second, runNumber, lumiNumber), &processContext_);
428  if(subProcess_.get()) subProcess_->writeLumi(it->second, runNumber, lumiNumber);
429  }
LuminosityBlockPrincipal & lumiPrincipal(ProcessHistoryID const &phid, RunNumber_t run, LuminosityBlockNumber_t lumi) const
ServiceToken serviceToken_
Definition: SubProcess.h:221
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:236
std::map< ProcessHistoryID, ProcessHistoryID > parentToChildPhID_
Definition: SubProcess.h:237
ProcessContext processContext_
Definition: SubProcess.h:227
std::auto_ptr< SubProcess > subProcess_
Definition: SubProcess.h:238
PrincipalCache principalCache_
Definition: SubProcess.h:234
void edm::SubProcess::writeRun ( ProcessHistoryID const &  parentPhID,
int  runNumber 
)

Definition at line 368 of file SubProcess.cc.

References cmsPerfStripChart::operate().

368  {
370  std::map<ProcessHistoryID, ProcessHistoryID>::const_iterator it = parentToChildPhID_.find(parentPhID);
371  assert(it != parentToChildPhID_.end());
373  if(subProcess_.get()) subProcess_->writeRun(it->second, runNumber);
374  }
ServiceToken serviceToken_
Definition: SubProcess.h:221
std::auto_ptr< Schedule > schedule_
Definition: SubProcess.h:236
std::map< ProcessHistoryID, ProcessHistoryID > parentToChildPhID_
Definition: SubProcess.h:237
ProcessContext processContext_
Definition: SubProcess.h:227
std::auto_ptr< SubProcess > subProcess_
Definition: SubProcess.h:238
PrincipalCache principalCache_
Definition: SubProcess.h:234
RunPrincipal & runPrincipal(ProcessHistoryID const &phid, RunNumber_t run) const

Member Data Documentation

std::unique_ptr<ExceptionToActionTable const> edm::SubProcess::act_table_
private

Definition at line 225 of file SubProcess.h.

Referenced by SubProcess().

std::shared_ptr<BranchIDListHelper> edm::SubProcess::branchIDListHelper_
private

Definition at line 224 of file SubProcess.h.

Referenced by SubProcess().

std::map<BranchID::value_type, BranchID::value_type> edm::SubProcess::droppedBranchIDToKeptBranchID_
private

Definition at line 257 of file SubProcess.h.

Referenced by droppedBranchIDToKeptBranchID().

boost::shared_ptr<eventsetup::EventSetupProvider> edm::SubProcess::esp_
private

Definition at line 235 of file SubProcess.h.

Referenced by SubProcess().

std::vector<HistoryAppender> edm::SubProcess::historyAppenders_
private

Definition at line 233 of file SubProcess.h.

Referenced by SubProcess().

unsigned int edm::SubProcess::historyLumiOffset_
private

Definition at line 230 of file SubProcess.h.

unsigned int edm::SubProcess::historyRunOffset_
private

Definition at line 231 of file SubProcess.h.

Referenced by SubProcess().

SelectedProductsForBranchType edm::SubProcess::keptProducts_
private

Definition at line 245 of file SubProcess.h.

Referenced by keptProducts().

std::shared_ptr<ProductRegistry const> edm::SubProcess::parentPreg_
private

Definition at line 222 of file SubProcess.h.

std::map<ProcessHistoryID, ProcessHistoryID> edm::SubProcess::parentToChildPhID_
private

Definition at line 237 of file SubProcess.h.

std::shared_ptr<ProductRegistry const> edm::SubProcess::preg_
private

Definition at line 223 of file SubProcess.h.

Referenced by beginJob(), and SubProcess().

PrincipalCache edm::SubProcess::principalCache_
private

Definition at line 234 of file SubProcess.h.

Referenced by SubProcess().

std::shared_ptr<ProcessConfiguration const> edm::SubProcess::processConfiguration_
private

Definition at line 226 of file SubProcess.h.

Referenced by SubProcess().

ProcessContext edm::SubProcess::processContext_
private

Definition at line 227 of file SubProcess.h.

Referenced by SubProcess().

std::vector<ProcessHistoryRegistry> edm::SubProcess::processHistoryRegistries_
private

Definition at line 232 of file SubProcess.h.

Referenced by SubProcess().

std::unique_ptr<ParameterSet> edm::SubProcess::processParameterSet_
private

Definition at line 239 of file SubProcess.h.

Referenced by SubProcess().

ProductSelector edm::SubProcess::productSelector_
private

Definition at line 247 of file SubProcess.h.

ProductSelectorRules edm::SubProcess::productSelectorRules_
private

Definition at line 246 of file SubProcess.h.

std::auto_ptr<Schedule> edm::SubProcess::schedule_
private
ParameterSetID edm::SubProcess::selector_config_id_
private

Definition at line 252 of file SubProcess.h.

Referenced by SubProcess().

detail::TriggerResultsBasedEventSelector edm::SubProcess::selectors_
mutableprivate

Definition at line 253 of file SubProcess.h.

Referenced by SubProcess().

ServiceToken edm::SubProcess::serviceToken_
private
std::auto_ptr<SubProcess> edm::SubProcess::subProcess_
private
bool edm::SubProcess::wantAllEvents_
private

Definition at line 251 of file SubProcess.h.

Referenced by SubProcess().