CMS 3D CMS Logo

Public Member Functions | Private Member Functions

edm::Group Class Reference

#include <Group.h>

Inheritance diagram for edm::Group:
edm::InputGroup edm::ProducedGroup edm::ScheduledGroup edm::SourceGroup edm::UnscheduledGroup

List of all members.

Public Member Functions

ConstBranchDescription const & branchDescription () const
void checkType (WrapperOwningHolder const &prod) const
 Group ()
void mergeProduct (WrapperOwningHolder const &edp) const
void mergeProduct (WrapperOwningHolder const &edp, ProductProvenance &productProvenance)
void mergeTheProduct (WrapperOwningHolder const &edp) const
std::string const & moduleLabel () const
bool onDemand () const
std::string const & processName () const
boost::shared_ptr< void const > product () const
virtual ProductData const & productData () const =0
virtual ProductDataproductData ()=0
ProductID const & productID () const
std::string const & productInstanceName () const
ProductProvenanceproductProvenancePtr () const
Reflex::Type productType () const
bool productUnavailable () const
Provenanceprovenance () const
bool provenanceAvailable () const
bool putOrMergeProduct () const
void putProduct (WrapperOwningHolder const &edp) const
void putProduct (WrapperOwningHolder const &edp, ProductProvenance const &productProvenance)
void reallyCheckType (WrapperOwningHolder const &prod) const
void resetBranchDescription (boost::shared_ptr< ConstBranchDescription > bd)
void resetProductData ()
void setProductProvenance (ProductProvenance const &prov) const
void setProvenance (boost::shared_ptr< BranchMapper > mapper, ProductID const &pid)
void setProvenance (boost::shared_ptr< BranchMapper > mapper)
void swap (Group &rhs)
WrapperHolder wrapper () const
void write (std::ostream &os) const
virtual ~Group ()

Private Member Functions

virtual void checkType_ (WrapperOwningHolder const &prod) const =0
virtual void mergeProduct_ (WrapperOwningHolder const &edp, ProductProvenance &productProvenance)=0
virtual void mergeProduct_ (WrapperOwningHolder const &edp) const =0
virtual bool onDemand_ () const =0
virtual bool productUnavailable_ () const =0
virtual bool putOrMergeProduct_ () const =0
virtual void putProduct_ (WrapperOwningHolder const &edp) const =0
virtual void putProduct_ (WrapperOwningHolder const &edp, ProductProvenance const &productProvenance)=0
virtual void resetStatus ()=0
virtual void swap_ (Group &rhs)=0

Detailed Description

Definition at line 29 of file Group.h.


Constructor & Destructor Documentation

Group< TOutput >::Group ( )

Definition at line 14 of file Group.cc.

{}
Group< TOutput >::~Group ( ) [virtual]

Definition at line 16 of file Group.cc.

{}

Member Function Documentation

ConstBranchDescription const& edm::Group::branchDescription ( ) const [inline]
void edm::Group::checkType ( WrapperOwningHolder const &  prod) const [inline]

Definition at line 125 of file Group.h.

References checkType_().

Referenced by edm::Principal::checkUniquenessAndType(), and edm::Principal::putOrMerge().

virtual void edm::Group::checkType_ ( WrapperOwningHolder const &  prod) const [private, pure virtual]

Implemented in edm::InputGroup, and edm::ProducedGroup.

Referenced by checkType().

void edm::Group::mergeProduct ( WrapperOwningHolder const &  edp,
ProductProvenance productProvenance 
) [inline]

Definition at line 112 of file Group.h.

References mergeProduct_().

Referenced by edm::Principal::putOrMerge().

                                                                                            {
      mergeProduct_(edp, productProvenance);
    }
void edm::Group::mergeProduct ( WrapperOwningHolder const &  edp) const [inline]

Definition at line 116 of file Group.h.

References mergeProduct_().

                                                            {
      mergeProduct_(edp);
    }
virtual void edm::Group::mergeProduct_ ( WrapperOwningHolder const &  edp,
ProductProvenance productProvenance 
) [private, pure virtual]

Implemented in edm::InputGroup, and edm::ProducedGroup.

Referenced by mergeProduct().

virtual void edm::Group::mergeProduct_ ( WrapperOwningHolder const &  edp) const [private, pure virtual]

Implemented in edm::InputGroup, and edm::ProducedGroup.

void Group< TOutput >::mergeTheProduct ( WrapperOwningHolder const &  edp) const

Definition at line 105 of file Group.cc.

References branchDescription(), edm::ConstBranchDescription::className(), edm::WrapperHolder::hasIsProductEqual(), edm::WrapperHolder::isProductEqual(), edm::WrapperHolder::mergeProduct(), moduleLabel(), processName(), productInstanceName(), wrapper(), and edm::WrapperHolder::wrapper().

Referenced by edm::InputGroup::mergeProduct_(), and edm::ProducedGroup::mergeProduct_().

                                                             {
    if(wrapper().isMergeable()) {
      wrapper().mergeProduct(edp.wrapper());
    } else if(wrapper().hasIsProductEqual()) {
      if(!wrapper().isProductEqual(edp.wrapper())) {
        LogError("RunLumiMerging")
              << "Group::mergeGroup\n"
              << "Two run/lumi products for the same run/lumi which should be equal are not\n"
              << "Using the first, ignoring the second\n"
              << "className = " << branchDescription().className() << "\n"
              << "moduleLabel = " << moduleLabel() << "\n"
              << "instance = " << productInstanceName() << "\n"
              << "process = " << processName() << "\n";
      }
    } else {
      LogWarning("RunLumiMerging")
          << "Group::mergeGroup\n"
          << "Run/lumi product has neither a mergeProduct nor isProductEqual function\n"
          << "Using the first, ignoring the second in merge\n"
          << "className = " << branchDescription().className() << "\n"
          << "moduleLabel = " << moduleLabel() << "\n"
          << "instance = " << productInstanceName() << "\n"
          << "process = " << processName() << "\n";
    }
  }
std::string const& edm::Group::moduleLabel ( ) const [inline]

Definition at line 68 of file Group.h.

References branchDescription(), and edm::ConstBranchDescription::moduleLabel().

Referenced by mergeTheProduct().

{return branchDescription().moduleLabel();}
bool edm::Group::onDemand ( ) const [inline]
virtual bool edm::Group::onDemand_ ( ) const [private, pure virtual]
std::string const& edm::Group::processName ( ) const [inline]

Definition at line 74 of file Group.h.

References branchDescription(), and edm::ConstBranchDescription::processName().

Referenced by mergeTheProduct().

{return branchDescription().processName();}
boost::shared_ptr<void const> edm::Group::product ( ) const [inline]
virtual ProductData const& edm::Group::productData ( ) const [pure virtual]
virtual ProductData& edm::Group::productData ( ) [pure virtual]
ProductID const& edm::Group::productID ( ) const [inline]

Definition at line 94 of file Group.h.

References productData(), edm::Provenance::productID(), and edm::ProductData::prov_.

Referenced by write().

{return productData().prov_.productID();}
std::string const& edm::Group::productInstanceName ( ) const [inline]

Definition at line 71 of file Group.h.

References branchDescription(), and edm::ConstBranchDescription::productInstanceName().

Referenced by mergeTheProduct().

{return branchDescription().productInstanceName();}
ProductProvenance* edm::Group::productProvenancePtr ( ) const [inline]

Definition at line 54 of file Group.h.

References edm::Provenance::productProvenance(), and provenance().

                                                    {
      return provenance()->productProvenance();
    }
Type Group< TOutput >::productType ( ) const

Definition at line 190 of file Group.cc.

References wrapper().

                           {
    return Type::ByTypeInfo(wrapper().interface()->wrappedTypeInfo());
  }
bool edm::Group::productUnavailable ( ) const [inline]
virtual bool edm::Group::productUnavailable_ ( ) const [private, pure virtual]

Implemented in edm::InputGroup, and edm::ProducedGroup.

Referenced by productUnavailable().

Provenance * Group< TOutput >::provenance ( ) const
bool Group< TOutput >::provenanceAvailable ( ) const

Definition at line 178 of file Group.cc.

References branchDescription(), edm::WrapperHolder::isPresent(), edm::es::produced, product(), and wrapper().

                                   {
    // If this product is from a the current process,
    // the provenance is available if and only if a product has been put.
    if(branchDescription().produced()) {
      return product() && wrapper().isPresent();
    }
    // If this product is from a prior process, the provenance is available,
    // although the per event part may have been dropped.
    return true;
  }
bool edm::Group::putOrMergeProduct ( ) const [inline]

Definition at line 107 of file Group.h.

References putOrMergeProduct_().

Referenced by edm::Principal::putOrMerge().

                                   {
      return putOrMergeProduct_();
    }
virtual bool edm::Group::putOrMergeProduct_ ( ) const [private, pure virtual]

Implemented in edm::InputGroup, and edm::ProducedGroup.

Referenced by putOrMergeProduct().

void edm::Group::putProduct ( WrapperOwningHolder const &  edp) const [inline]

Definition at line 102 of file Group.h.

References putProduct_().

                                                          {
      putProduct_(edp);
    }
void edm::Group::putProduct ( WrapperOwningHolder const &  edp,
ProductProvenance const &  productProvenance 
) [inline]
virtual void edm::Group::putProduct_ ( WrapperOwningHolder const &  edp,
ProductProvenance const &  productProvenance 
) [private, pure virtual]

Implemented in edm::InputGroup, and edm::ProducedGroup.

Referenced by putProduct().

virtual void edm::Group::putProduct_ ( WrapperOwningHolder const &  edp) const [private, pure virtual]

Implemented in edm::InputGroup, and edm::ProducedGroup.

void Group< TOutput >::reallyCheckType ( WrapperOwningHolder const &  prod) const

Definition at line 195 of file Group.cc.

References branchDescription(), edm::ConstBranchDescription::branchName(), edm::ConstBranchDescription::className(), edm::WrapperHolder::dynamicTypeInfo(), edm::errors::EventCorruption, Exception, and edm::ConstBranchDescription::typeID().

Referenced by edm::ProducedGroup::checkType_().

                                                              {
    // Check if the types match.
    TypeID typeID(prod.dynamicTypeInfo());
    if(typeID != branchDescription().typeID()) {
      // Types do not match.
      throw Exception(errors::EventCorruption)
          << "Product on branch " << branchDescription().branchName() << " is of wrong type.\n"
          << "It is supposed to be of type " << branchDescription().className() << ".\n"
          << "It is actually of type " << typeID.className() << ".\n";
    }
  }
void edm::Group::resetBranchDescription ( boost::shared_ptr< ConstBranchDescription bd) [inline]

Definition at line 65 of file Group.h.

References productData(), and edm::ProductData::resetBranchDescription().

Referenced by edm::Principal::adjustToNewProductRegistry().

{productData().resetBranchDescription(bd);}
void edm::Group::resetProductData ( ) [inline]

Definition at line 33 of file Group.h.

References productData(), edm::ProductData::resetProductData(), and resetStatus().

                            {
      productData().resetProductData();
      resetStatus();
    }
virtual void edm::Group::resetStatus ( ) [private, pure virtual]
void Group< TOutput >::setProductProvenance ( ProductProvenance const &  prov) const
void Group< TOutput >::setProvenance ( boost::shared_ptr< BranchMapper mapper)

Definition at line 215 of file Group.cc.

References productData(), edm::ProductData::prov_, and edm::Provenance::setStore().

                                                           {
    productData().prov_.setStore(mapper);
  }
void Group< TOutput >::setProvenance ( boost::shared_ptr< BranchMapper mapper,
ProductID const &  pid 
)

Definition at line 208 of file Group.cc.

References productData(), edm::ProductData::prov_, edm::Provenance::setProductID(), and edm::Provenance::setStore().

                                                                                 {
    //assert(!productData().prov_);
    productData().prov_.setProductID(pid);
    productData().prov_.setStore(mapper);
  }
void edm::Group::swap ( Group rhs) [inline]
virtual void edm::Group::swap_ ( Group rhs) [private, pure virtual]
WrapperHolder edm::Group::wrapper ( ) const [inline]

Definition at line 51 of file Group.h.

References edm::ProductData::getInterface(), and productData().

Referenced by mergeTheProduct(), productType(), edm::InputGroup::productUnavailable_(), edm::ProducedGroup::productUnavailable_(), and provenanceAvailable().

{ return WrapperHolder(productData().wrapper_.get(), productData().getInterface()); }
void Group< TOutput >::write ( std::ostream &  os) const

Definition at line 225 of file Group.cc.

References productID().

Referenced by edm::operator<<().

                                   {
    // This is grossly inadequate. It is also not critical for the
    // first pass.
    os << std::string("Group for product with ID: ")
       << productID();
  }