CMS 3D CMS Logo

Public Member Functions | Private Member Functions

edm::Group Class Reference

#include <Group.h>

Inheritance diagram for edm::Group:
edm::AliasGroup 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
void deleteProduct ()
 Group ()
void mergeProduct (WrapperOwningHolder const &edp, ProductProvenance &productProvenance)
void mergeProduct (WrapperOwningHolder const &edp) const
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
ProductDataproductData ()
ProductData const & productData () const
ProductID const & productID () const
std::string const & productInstanceName () const
ProductProvenanceproductProvenancePtr () const
TypeID productType () const
bool productUnavailable () const
bool productWasDeleted () const
Provenanceprovenance () const
bool provenanceAvailable () const
bool putOrMergeProduct () const
void putProduct (WrapperOwningHolder const &edp, ProductProvenance const &productProvenance)
void putProduct (WrapperOwningHolder const &edp) const
void reallyCheckType (WrapperOwningHolder const &prod) const
void resetBranchDescription (boost::shared_ptr< ConstBranchDescription > bd)
void resetProductData ()
void resetStatus ()
void setProcessHistoryID (ProcessHistoryID const &phid)
void setProductDeleted ()
void setProductProvenance (ProductProvenance const &prov) const
void setProvenance (boost::shared_ptr< BranchMapper > mapper, ProcessHistoryID const &phid, ProductID const &pid)
void setProvenance (boost::shared_ptr< BranchMapper > mapper, ProcessHistoryID const &phid)
void swap (Group &rhs)
WrapperHolder wrapper () const
void write (std::ostream &os) const
virtual ~Group ()

Private Member Functions

virtual ConstBranchDescription
const & 
branchDescription_ () const =0
virtual void checkType_ (WrapperOwningHolder const &prod) const =0
virtual ProductDatagetProductData ()=0
virtual ProductData const & getProductData () 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 productWasDeleted_ () 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 resetBranchDescription_ (boost::shared_ptr< ConstBranchDescription > bd)=0
virtual void resetStatus_ ()=0
virtual void setProductDeleted_ ()=0
virtual void swap_ (Group &rhs)=0

Detailed Description

Definition at line 28 of file Group.h.


Constructor & Destructor Documentation

Group< TOutput >::Group ( )

Definition at line 11 of file Group.cc.

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

Definition at line 13 of file Group.cc.

{}

Member Function Documentation

ConstBranchDescription const& edm::Group::branchDescription ( ) const [inline]
virtual ConstBranchDescription const& edm::Group::branchDescription_ ( ) const [private, pure virtual]
void edm::Group::checkType ( WrapperOwningHolder const &  prod) const [inline]
virtual void edm::Group::checkType_ ( WrapperOwningHolder const &  prod) const [private, pure virtual]

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

Referenced by checkType().

void edm::Group::deleteProduct ( ) [inline]

Definition at line 54 of file Group.h.

References getProductData(), edm::ProductData::resetProductData(), and setProductDeleted_().

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

                         {
      getProductData().resetProductData();
      setProductDeleted_();
    }
virtual ProductData const& edm::Group::getProductData ( ) const [private, pure virtual]
virtual ProductData& edm::Group::getProductData ( ) [private, pure virtual]
void edm::Group::mergeProduct ( WrapperOwningHolder const &  edp,
ProductProvenance productProvenance 
) [inline]

Definition at line 139 of file Group.h.

References mergeProduct_().

Referenced by edm::AliasGroup::mergeProduct_(), and edm::Principal::putOrMerge().

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

Definition at line 143 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, edm::ProducedGroup, and edm::AliasGroup.

Referenced by mergeProduct().

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

Definition at line 116 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 92 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 98 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]
ProductData& edm::Group::productData ( ) [inline]

Definition at line 37 of file Group.h.

References getProductData().

                               {
      return getProductData();
    }
ProductData const& edm::Group::productData ( ) const [inline]
ProductID const& edm::Group::productID ( ) const [inline]

Definition at line 121 of file Group.h.

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

Referenced by write().

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

Definition at line 95 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 78 of file Group.h.

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

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

Definition at line 213 of file Group.cc.

References wrapper().

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

Definition at line 69 of file Group.h.

References productWasDeleted_().

Referenced by edm::AliasGroup::productWasDeleted_().

{return productWasDeleted_();}
virtual bool edm::Group::productWasDeleted_ ( ) const [private, pure virtual]
Provenance * Group< TOutput >::provenance ( ) const
bool Group< TOutput >::provenanceAvailable ( ) const

Definition at line 201 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 134 of file Group.h.

References putOrMergeProduct_().

Referenced by edm::Principal::putOrMerge(), and edm::AliasGroup::putOrMergeProduct_().

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

Definition at line 129 of file Group.h.

References putProduct_().

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

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

Referenced by putProduct().

virtual void edm::Group::putProduct_ ( WrapperOwningHolder const &  edp) const [private, pure virtual]
void Group< TOutput >::reallyCheckType ( WrapperOwningHolder const &  prod) const

Definition at line 218 of file Group.cc.

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

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

                                                              {
    // Check if the types match.
    TypeID typeID(prod.dynamicTypeInfo());
    if(typeID != branchDescription().unwrappedTypeID()) {
      // 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 89 of file Group.h.

References resetBranchDescription_().

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

virtual void edm::Group::resetBranchDescription_ ( boost::shared_ptr< ConstBranchDescription bd) [private, pure virtual]
void edm::Group::resetProductData ( ) [inline]

Definition at line 49 of file Group.h.

References getProductData(), edm::ProductData::resetProductData(), and resetStatus_().

                            {
      getProductData().resetProductData();
      resetStatus_();
    }
void edm::Group::resetStatus ( ) [inline]

Definition at line 41 of file Group.h.

References resetStatus_().

Referenced by edm::AliasGroup::resetStatus_().

                        {
      resetStatus_();
    }
virtual void edm::Group::resetStatus_ ( ) [private, pure virtual]
void Group< TOutput >::setProcessHistoryID ( ProcessHistoryID const &  phid)

Definition at line 245 of file Group.cc.

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

                                                         {
    productData().prov_.setProcessHistoryID(phid);
  }
void edm::Group::setProductDeleted ( ) [inline]

Definition at line 45 of file Group.h.

References setProductDeleted_().

Referenced by edm::AliasGroup::setProductDeleted_().

virtual void edm::Group::setProductDeleted_ ( ) [private, pure virtual]
void Group< TOutput >::setProductProvenance ( ProductProvenance const &  prov) const
void Group< TOutput >::setProvenance ( boost::shared_ptr< BranchMapper mapper,
ProcessHistoryID const &  phid 
)

Definition at line 239 of file Group.cc.

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

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

Definition at line 231 of file Group.cc.

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

                                                                                                               {
    //assert(!productData().prov_);
    productData().prov_.setProductID(pid);
    productData().prov_.setStore(mapper);
    productData().prov_.setProcessHistoryID(phid);
  }
void edm::Group::swap ( Group rhs) [inline]
virtual void edm::Group::swap_ ( Group rhs) [private, pure virtual]
WrapperHolder edm::Group::wrapper ( ) const [inline]
void Group< TOutput >::write ( std::ostream &  os) const

Definition at line 255 of file Group.cc.

References productID(), and AlCaHLTBitMon_QueryRunRegistry::string.

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();
  }