22 boost::shared_ptr<ProductRegistry const> reg,
23 boost::shared_ptr<BranchIDListHelper const> branchIDListHelper,
28 luminosityBlockPrincipal_(),
30 unscheduledHandler_(),
31 moduleLabelsRunning_(),
33 branchIDListHelper_(branchIDListHelper),
35 branchListIndexToProcessIndex_() {}
52 boost::shared_ptr<EventSelectionIDVector> eventSelectionIDs,
53 boost::shared_ptr<BranchListIndexes> branchListIndexes,
54 boost::shared_ptr<BranchMapper> mapper,
58 if(eventSelectionIDs) {
65 if(branchListIndexes) {
82 for(
auto const&
prod : *
this) {
83 if (
prod->singleProduct()) {
109 <<
"put: Cannot put because ptr to product is null."
164 <<
"get by product ID: invalid ProductID supplied\n";
173 <<
"branchIDToProductID: invalid BranchID supplied\n";
176 typedef BIDToIndexMap::const_iterator Iter;
177 typedef std::pair<Iter, Iter> IndexRange;
180 for(Iter it = range.first; it != range.second; ++it) {
186 return ProductID(processIndex+1, productIndex+1);
195 exception<<
"get by product ID: The product with given id: "<<pid
196 <<
"\ntype: "<<phb->productType()
197 <<
"\nproduct instance name: "<<phb->productInstanceName()
198 <<
"\nprocess name: "<<phb->processName()
199 <<
"\nwas already deleted. This is a configuration error. Please change the configuration of the module which caused this exception to state it reads this data.";
210 <<
"get by product ID: no product with given id: " << pid <<
"\n";
215 if(phb->productWasDeleted()) {
220 if(phb->onDemand()) {
223 <<
"get by product ID: no product with given id: " << pid <<
"\n"
224 <<
"onDemand production failed to produce it.\n";
246 boost::shared_ptr<UnscheduledHandler>
269 std::vector<std::string>::const_iterator
i =
274 <<
"Hit circular dependency while trying to run an unscheduled module.\n"
275 <<
"Current implementation of unscheduled execution cannot always determine\n"
276 <<
"the proper order for module execution. It is also possible the modules\n"
277 <<
"have a built in circular dependence that will not work with any order.\n"
278 <<
"In the first case, scheduling some or all required modules in paths will help.\n"
279 <<
"In the second case, the modules themselves will have to be fixed.\n";
RunPrincipal const & runPrincipal() const
void setLuminosityBlockPrincipal(boost::shared_ptr< LuminosityBlockPrincipal > const &lbp)
ProductRegistry const & productRegistry() const
unsigned short BranchListIndex
void fillEventPrincipal(EventAuxiliary const &aux, boost::shared_ptr< EventSelectionIDVector > eventSelectionIDs=boost::shared_ptr< EventSelectionIDVector >(), boost::shared_ptr< BranchListIndexes > branchListIndexes=boost::shared_ptr< BranchListIndexes >(), boost::shared_ptr< BranchMapper > mapper=boost::shared_ptr< BranchMapper >(new BranchMapper), DelayedReader *reader=0)
WrapperInterfaceBase const * getInterface() const
EventSelectionIDVector const & eventSelectionIDs() const
boost::shared_ptr< LuminosityBlockPrincipal > luminosityBlockPrincipal_
ConstBranchDescription const & branchDescription() const
BasicHandle getByProductID(ProductID const &oid) const
static void throwProductDeletedException(ProductID const &pid, edm::EventPrincipal::ConstProductPtr const phb)
BranchID pidToBid(ProductID const &pid) const
ConstProductPtr getProductHolder(BranchID const &oid, bool resolveProd, bool fillOnDemand) const
bool const & produced() const
std::map< BranchListIndex, ProcessIndex > branchListIndexToProcessIndex_
void checkUniquenessAndType(WrapperOwningHolder const &prod, ProductHolderBase const *productHolder) const
void put(ConstBranchDescription const &bd, WrapperOwningHolder const &edp, ProductProvenance const &productProvenance)
BranchListIndexes const & branchListIndexes() const
WrapperHolder getIt(ProductID const &pid) const
ProductID branchIDToProductID(BranchID const &bid) const
RunPrincipal const & runPrincipal() const
virtual bool unscheduledFill(std::string const &moduleLabel) const override
boost::shared_ptr< void const > product() const
std::vector< EventSelectionID > EventSelectionIDVector
boost::shared_ptr< BranchMapper > branchMapperPtr_
std::vector< BranchListIndex > BranchListIndexes
BranchID productIDToBranchID(ProductID const &pid, BranchIDLists const &lists, BranchListIndexes const &indexes)
EventPrincipal(boost::shared_ptr< ProductRegistry const > reg, boost::shared_ptr< BranchIDListHelper const > branchIDListHelper, ProcessConfiguration const &pc, HistoryAppender *historyAppender)
boost::shared_ptr< UnscheduledHandler > unscheduledHandler() const
boost::shared_ptr< BranchMapper > branchMapperPtr() const
ProcessHistoryID const & processHistoryID() const
LuminosityBlockPrincipal const & luminosityBlockPrincipal() const
Base::ConstProductPtr ConstProductPtr
BranchID const & branchID() const
T const * getProduct(RefCore const &ref)
ProductData const & productData() const
boost::shared_ptr< UnscheduledHandler > unscheduledHandler_
std::multimap< BranchID, IndexPair > BranchIDToIndexMap
boost::shared_ptr< EventSelectionIDVector > eventSelectionIDs_
std::string const & resolvedModuleLabel() const
unsigned short ProcessIndex
DelayedReader * reader() const
Provenance getProvenance(ProductID const &pid) const
ForwardSequence::const_iterator find_in_all(ForwardSequence const &s, Datum const &d)
wrappers for std::find
void clearEventPrincipal()
boost::shared_ptr< BranchListIndexes > branchListIndexes_
void putOnRead(ConstBranchDescription const &bd, void const *product, ProductProvenance const &productProvenance)
virtual void resolveProduct_(ProductHolderBase const &phb, bool fillOnDemand) const override
boost::shared_ptr< BranchIDListHelper const > branchIDListHelper_
ProcessHistoryID const & processHistoryID() const
void putProduct(WrapperOwningHolder const &edp, ProductProvenance const &productProvenance)
void fillPrincipal(ProcessHistoryID const &hist, DelayedReader *reader)
unsigned short ProductIndex
void setUnscheduledHandler(boost::shared_ptr< UnscheduledHandler > iHandler)
WrapperHolder wrapperHolder() const
EventAuxiliary const & aux() const
ProductHolderBase * getExistingProduct(BranchID const &branchID)
std::vector< std::string > moduleLabelsRunning_
bool productUnavailable() const