10 using Reflex::TypeTemplate;
25 std::auto_ptr<EDProduct> edp,
26 boost::shared_ptr<ProductProvenance> productProvenance) {
32 assert(edp.get() != 0);
33 assert(!
provenance()->productProvenanceResolved());
37 assert(
provenance()->productProvenanceResolved());
44 std::auto_ptr<EDProduct> edp,
45 boost::shared_ptr<ProductProvenance> productProvenance) {
46 assert(
provenance()->productProvenanceResolved());
70 std::auto_ptr<EDProduct> edp,
71 boost::shared_ptr<ProductProvenance> productProvenance) {
73 assert(!
provenance()->productProvenanceResolved());
75 assert(
provenance()->productProvenanceResolved());
81 std::auto_ptr<EDProduct> edp,
82 boost::shared_ptr<ProductProvenance> productProvenance) {
104 if (
product()->isMergeable()) {
105 product()->mergeProduct(edp.get());
106 }
else if (
product()->hasIsProductEqual()) {
107 if (!
product()->isProductEqual(edp.get())) {
109 <<
"Group::mergeGroup\n"
110 <<
"Two run/lumi products for the same run/lumi which should be equal are not\n"
111 <<
"Using the first, ignoring the second\n"
119 <<
"Group::mergeGroup\n"
120 <<
"Run/lumi product has neither a mergeProduct nor isProductEqual function\n"
121 <<
"Using the first, ignoring the second in merge\n"
136 <<
"Product on branch " <<
branchDescription()->branchName() <<
" is of wrong type.\n"
138 <<
"It is actually of type " << typeID.className() <<
".\n";
145 if (prod.get() == 0 || !prod->isPresent()) {
166 bool unavailable = !(
product()->isPresent());
203 return Type::ByTypeInfo(
typeid(*
product()));
212 if (!is_sequence)
return false;
216 TypeTemplate valueTypeTemplate = value_type.TemplateFamily();
218 return (elementType==wantedElementType ||
219 elementType.HasBase(wantedElementType));
243 os << std::string(
"Group for product with ID: ")
std::string const & processName() const
virtual bool putOrMergeProduct_() const
void setProvenance(boost::shared_ptr< BranchMapper > mapper, ProductID const &pid)
GroupStatus const & status() const
Reflex::Type productType() const
bool is_sequence_wrapper(Reflex::Type const &possible_sequence_wrapper, Reflex::Type &found_sequence_value_type)
bool notPresent(ProductStatus status)
std::type_info const & dynamicTypeInfo() const
void checkType(EDProduct const &prod) const
Container::value_type value_type
ProductID const & productID() const
bool isMatchingSequence(Reflex::Type const &wanted) const
virtual ~UnscheduledGroup()
virtual bool productUnavailable_() const
boost::shared_ptr< ConstBranchDescription > const & branchDescription() const
void setStore(boost::shared_ptr< BranchMapper > store) const
virtual void putProduct_(std::auto_ptr< EDProduct > edp, boost::shared_ptr< ProductProvenance > productProvenance)
std::string const & moduleLabel() const
void mergeTheProduct(std::auto_ptr< EDProduct > edp) const
boost::shared_ptr< EDProduct > product_
eventsetup::produce::Produce produced
virtual GroupData const & groupData() const =0
void setProductProvenance(boost::shared_ptr< ProductProvenance > prov) const
std::string const & className() const
boost::shared_ptr< ProductProvenance > productProvenancePtr() const
boost::shared_ptr< EDProduct > product() const
void setProductID(ProductID const &pid)
virtual GroupStatus const & status_() const =0
Provenance * provenance() const
std::string const & productInstanceName() const
bool provenanceAvailable() const
virtual ~ScheduledGroup()
bool productUnavailable() const
void setProductProvenance(boost::shared_ptr< ProductProvenance > prov) const
bool presenceUnknown(ProductStatus status)
ConstBranchDescription const & branchDescription() const
virtual void mergeProduct_(std::auto_ptr< EDProduct > edp, boost::shared_ptr< ProductProvenance > productProvenance)
void write(std::ostream &os) const