1 #ifndef art_Framework_Principal_Group_h 2 #define art_Framework_Principal_Group_h 20 #include "cetlib/container_algorithms.h" 21 #include "cetlib/exempt_ptr.h" 26 #include <type_traits> 37 template <
typename... ARGS>
53 std::unique_ptr<EDProduct>&& edp =
nullptr,
54 cet::exempt_ptr<Worker> productProducer = cet::exempt_ptr<Worker>{})
66 cet::exempt_ptr<Worker> productProducer,
68 :
Group{pd, pid, std::move(rs), wrapper_type,
nullptr, productProducer}
74 std::unique_ptr<EDProduct>&& edp,
76 :
Group{pd, pid, std::move(rs), wrapper_type, std::move(edp)}
153 void write(std::ostream& os)
const;
178 void setProduct(std::unique_ptr<EDProduct>&& prod)
const;
181 TypeID const& wanted_wrapper_type)
const;
190 mutable std::unique_ptr<EDProduct>
product_{
nullptr};
std::ostream & operator<<(std::ostream &os, EDAnalyzer::Table< T > const &t)
RangeSet const & rangeOfValidity() const
cet::exempt_ptr< BranchDescription const > branchDescription_
Group(BranchDescription const &pd, ProductID const &pid, RangeSet &&rs, art::TypeID const &wrapper_type, std::unique_ptr< EDProduct > &&edp=nullptr, cet::exempt_ptr< Worker > productProducer=cet::exempt_ptr< Worker >{})
bool productUnavailable() const
std::unique_ptr< Group > make_group(BranchDescription const &pd, ARGS &&...args)
Group(BranchDescription const &pd, ProductID const &pid, RangeSet &&rs, std::unique_ptr< EDProduct > &&edp, art::TypeID const &wrapper_type)
EDProduct const * uniqueProduct(TypeID const &) const override
unsigned char ProductStatus
EDProduct const * getIt() const override
TypeID const & producedWrapperType() const
cet::exempt_ptr< ProductProvenance const > productProvenancePtr() const
ProductID const & productID() const
bool resolveProductIfAvailable(TypeID const &) const override
RangeSet rangeOfValidity_
Group(BranchDescription const &pd, ProductID const &pid, RangeSet &&rs, cet::exempt_ptr< Worker > productProducer, art::TypeID const &wrapper_type)
std::unique_ptr< EDProduct > product_
virtual void removeCachedProduct() const
void write(std::ostream &os) const
cet::exempt_ptr< BranchMapper const > ppResolver_
cet::exempt_ptr< Worker > productProducer_
std::unique_ptr< EDProduct > obtainDesiredProduct(TypeID const &) const
bool isReady() const override
std::string const & productInstanceName() const
EDProduct const * uniqueProduct() const override
static RangeSet invalid()
std::string const & processName() const
ProductStatus status() const
void setProduct(std::unique_ptr< EDProduct > &&prod) const
void throwResolveLogicError(TypeID const &wanted_wrapper_type) const
std::string const & moduleLabel() const
bool resolveProduct(TypeID const &) const override
cet::exempt_ptr< DelayedReader const > productResolver_
EDProduct const * anyProduct() const override
BranchDescription const & productDescription() const
void setResolvers(BranchMapper const &bm, DelayedReader const &dr)