22 boost::shared_ptr<ProductRegistry const> reg,
27 luminosityBlockPrincipal_(),
29 unscheduledHandler_(),
30 moduleLabelsRunning_(),
33 branchListIndexToProcessIndex_() {}
50 boost::shared_ptr<LuminosityBlockPrincipal> lbp,
51 boost::shared_ptr<EventSelectionIDVector> eventSelectionIDs,
52 boost::shared_ptr<BranchListIndexes> branchListIndexes,
53 boost::shared_ptr<BranchMapper> mapper,
58 if(eventSelectionIDs) {
65 if(branchListIndexes) {
75 for(BranchListIndexes::const_iterator
114 <<
"put: Cannot put because ptr to product is null."
169 <<
"get by product ID: invalid ProductID supplied\n";
178 <<
"branchIDToProductID: invalid BranchID supplied\n";
181 typedef BIDToIndexMap::const_iterator Iter;
182 typedef std::pair<Iter, Iter> IndexRange;
185 IndexRange range = branchIDToIndexMap.equal_range(bid);
186 for(Iter it = range.first; it != range.second; ++it) {
192 return ProductID(processIndex+1, productIndex+1);
201 exception<<
"get by product ID: The product with given id: "<<pid
202 <<
"\ntype: "<<g->productType()
203 <<
"\nproduct instance name: "<<g->productInstanceName()
204 <<
"\nprocess name: "<<g->processName()
205 <<
"\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.";
216 <<
"get by product ID: no product with given id: " << pid <<
"\n";
221 if(g->productWasDeleted()) {
229 <<
"get by product ID: no product with given id: " << pid <<
"\n"
230 <<
"onDemand production failed to produce it.\n";
252 boost::shared_ptr<UnscheduledHandler>
275 std::vector<std::string>::const_iterator
i =
280 <<
"Hit circular dependency while trying to run an unscheduled module.\n"
281 <<
"Current implementation of unscheduled execution cannot always determine\n"
282 <<
"the proper order for module execution. It is also possible the modules\n"
283 <<
"have a built in circular dependence that will not work with any order.\n"
284 <<
"In the first case, scheduling some or all required modules in paths will help.\n"
285 <<
"In the second case, the modules themselves will have to be fixed.\n";
RunPrincipal const & runPrincipal() const
Base::ConstGroupPtr ConstGroupPtr
void setLuminosityBlockPrincipal(boost::shared_ptr< LuminosityBlockPrincipal > const &lbp)
ProductRegistry const & productRegistry() const
unsigned short BranchListIndex
WrapperInterfaceBase const * getInterface() const
EventSelectionIDVector const & eventSelectionIDs() const
boost::shared_ptr< LuminosityBlockPrincipal > luminosityBlockPrincipal_
virtual ProductData const & productData() const =0
const_iterator end() const
Group * getExistingGroup(BranchID const &branchID)
BasicHandle getByProductID(ProductID const &oid) const
BranchID pidToBid(ProductID const &pid) const
ConstGroupPtr getGroup(BranchID const &oid, bool resolveProd, bool fillOnDemand) const
static void throwProductDeletedException(ProductID const &pid, edm::EventPrincipal::ConstGroupPtr const g)
bool const & produced() const
std::map< BranchListIndex, ProcessIndex > branchListIndexToProcessIndex_
void put(ConstBranchDescription const &bd, WrapperOwningHolder const &edp, ProductProvenance const &productProvenance)
BranchListIndexes const & branchListIndexes() const
WrapperHolder getIt(ProductID const &pid) const
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
ProductID branchIDToProductID(BranchID const &bid) const
RunPrincipal const & runPrincipal() const
std::vector< EventSelectionID > EventSelectionIDVector
boost::shared_ptr< BranchMapper > branchMapperPtr_
std::vector< BranchListIndex > BranchListIndexes
virtual void resolveProduct_(Group const &g, bool fillOnDemand) const
BranchID productIDToBranchID(ProductID const &pid, BranchIDLists const &lists, BranchListIndexes const &indexes)
boost::shared_ptr< UnscheduledHandler > unscheduledHandler() const
boost::shared_ptr< BranchMapper > branchMapperPtr() const
ProcessHistoryID const & processHistoryID() const
LuminosityBlockPrincipal const & luminosityBlockPrincipal() const
static ThreadSafeIndexedRegistry * instance()
BranchID const & branchID() const
T const * getProduct(RefCore const &ref)
boost::shared_ptr< UnscheduledHandler > unscheduledHandler_
std::multimap< BranchID, IndexPair > BranchIDToIndexMap
boost::shared_ptr< EventSelectionIDVector > eventSelectionIDs_
EventPrincipal(boost::shared_ptr< ProductRegistry const > reg, ProcessConfiguration const &pc, HistoryAppender *historyAppender=0)
void fillEventPrincipal(EventAuxiliary const &aux, boost::shared_ptr< LuminosityBlockPrincipal > lbp, 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)
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
boost::shared_ptr< void const > product() const
void clearEventPrincipal()
boost::shared_ptr< BranchListIndexes > branchListIndexes_
void putOnRead(ConstBranchDescription const &bd, void const *product, ProductProvenance const &productProvenance)
const_iterator begin() const
virtual bool unscheduledFill(std::string const &moduleLabel) const
ProcessHistoryID const & processHistoryID() const
boost::filter_iterator< FilledGroupPtr, GroupCollection::const_iterator > const_iterator
char data[epos_bytes_allocation]
void fillPrincipal(ProcessHistoryID const &hist, DelayedReader *reader)
unsigned short ProductIndex
void setUnscheduledHandler(boost::shared_ptr< UnscheduledHandler > iHandler)
bool productUnavailable() const
WrapperHolder wrapperHolder() const
void putProduct(WrapperOwningHolder const &edp, ProductProvenance const &productProvenance)
EventAuxiliary const & aux() const
void checkUniquenessAndType(WrapperOwningHolder const &prod, Group const *group) const
ConstBranchDescription const & branchDescription() const
std::vector< std::string > moduleLabelsRunning_
std::string const & moduleLabel() const