CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions
edm::Group Class Referenceabstract

#include <Group.h>

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

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
 
virtual ProductData const & productData () const =0
 
virtual ProductDataproductData ()=0
 
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 setProcessHistoryID (ProcessHistoryID const &phid)
 
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 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 productWasDeleted_ () const =0
 
virtual bool putOrMergeProduct_ () const =0
 
virtual void putProduct_ (WrapperOwningHolder const &edp, ProductProvenance const &productProvenance)=0
 
virtual void putProduct_ (WrapperOwningHolder const &edp) const =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.

Referenced by ProducePlots.ProducePlots::makePlots().

11 {}
Group< TOutput >::~Group ( )
virtual

Definition at line 13 of file Group.cc.

13 {}

Member Function Documentation

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

Definition at line 135 of file Group.h.

References checkType_().

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

135  {
136  checkType_(prod);
137  }
virtual void checkType_(WrapperOwningHolder const &prod) const =0
virtual void edm::Group::checkType_ ( WrapperOwningHolder const &  prod) const
privatepure virtual

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

Referenced by checkType().

void edm::Group::deleteProduct ( )
inline

Definition at line 37 of file Group.h.

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

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

37  {
40  }
virtual ProductData const & productData() const =0
void resetProductData()
Definition: ProductData.h:40
virtual void setProductDeleted()=0
void edm::Group::mergeProduct ( WrapperOwningHolder const &  edp,
ProductProvenance productProvenance 
)
inline

Definition at line 122 of file Group.h.

References mergeProduct_().

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

122  {
123  mergeProduct_(edp, productProvenance);
124  }
virtual void mergeProduct_(WrapperOwningHolder const &edp, ProductProvenance &productProvenance)=0
void edm::Group::mergeProduct ( WrapperOwningHolder const &  edp) const
inline

Definition at line 126 of file Group.h.

References mergeProduct_().

126  {
127  mergeProduct_(edp);
128  }
virtual void mergeProduct_(WrapperOwningHolder const &edp, ProductProvenance &productProvenance)=0
virtual void edm::Group::mergeProduct_ ( WrapperOwningHolder const &  edp,
ProductProvenance productProvenance 
)
privatepure virtual

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

Referenced by mergeProduct().

virtual void edm::Group::mergeProduct_ ( WrapperOwningHolder const &  edp) const
privatepure virtual

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

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

Definition at line 115 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_().

115  {
116  if(wrapper().isMergeable()) {
117  wrapper().mergeProduct(edp.wrapper());
118  } else if(wrapper().hasIsProductEqual()) {
119  if(!wrapper().isProductEqual(edp.wrapper())) {
120  LogError("RunLumiMerging")
121  << "Group::mergeGroup\n"
122  << "Two run/lumi products for the same run/lumi which should be equal are not\n"
123  << "Using the first, ignoring the second\n"
124  << "className = " << branchDescription().className() << "\n"
125  << "moduleLabel = " << moduleLabel() << "\n"
126  << "instance = " << productInstanceName() << "\n"
127  << "process = " << processName() << "\n";
128  }
129  } else {
130  LogWarning("RunLumiMerging")
131  << "Group::mergeGroup\n"
132  << "Run/lumi product has neither a mergeProduct nor isProductEqual function\n"
133  << "Using the first, ignoring the second in merge\n"
134  << "className = " << branchDescription().className() << "\n"
135  << "moduleLabel = " << moduleLabel() << "\n"
136  << "instance = " << productInstanceName() << "\n"
137  << "process = " << processName() << "\n";
138  }
139  }
std::string const & processName() const
Definition: Group.h:81
WrapperHolder wrapper() const
Definition: Group.h:58
bool mergeProduct(void const *newProduct)
Definition: WrapperHolder.h:57
bool isProductEqual(void const *newProduct) const
Definition: WrapperHolder.h:60
bool hasIsProductEqual() const
Definition: WrapperHolder.h:53
std::string const & moduleLabel() const
Definition: Group.h:75
std::string const & className() const
std::string const & productInstanceName() const
Definition: Group.h:78
ConstBranchDescription const & branchDescription() const
Definition: Group.h:69
std::string const& edm::Group::moduleLabel ( ) const
inline

Definition at line 75 of file Group.h.

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

Referenced by mergeTheProduct().

75 {return branchDescription().moduleLabel();}
ConstBranchDescription const & branchDescription() const
Definition: Group.h:69
std::string const & moduleLabel() const
bool edm::Group::onDemand ( ) const
inline

Definition at line 49 of file Group.h.

References onDemand_().

Referenced by edm::ProducedGroup::productUnavailable_(), edm::EventPrincipal::resolveProduct_(), and edm::Principal::size().

49 {return onDemand_();}
virtual bool onDemand_() const =0
virtual bool edm::Group::onDemand_ ( ) const
privatepure virtual
std::string const& edm::Group::processName ( ) const
inline

Definition at line 81 of file Group.h.

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

Referenced by mergeTheProduct().

81 {return branchDescription().processName();}
std::string const & processName() const
ConstBranchDescription const & branchDescription() const
Definition: Group.h:69
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 104 of file Group.h.

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

Referenced by write().

104 {return productData().prov_.productID();}
virtual ProductData const & productData() const =0
Provenance prov_
Definition: ProductData.h:47
ProductID const & productID() const
Definition: Provenance.h:88
std::string const& edm::Group::productInstanceName ( ) const
inline

Definition at line 78 of file Group.h.

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

Referenced by mergeTheProduct().

std::string const & productInstanceName() const
ConstBranchDescription const & branchDescription() const
Definition: Group.h:69
ProductProvenance* edm::Group::productProvenancePtr ( ) const
inline

Definition at line 61 of file Group.h.

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

61  {
62  return provenance()->productProvenance();
63  }
ProductProvenance * productProvenance() const
Definition: Provenance.h:51
Provenance * provenance() const
Definition: Group.cc:249
TypeID Group< TOutput >::productType ( ) const

Definition at line 212 of file Group.cc.

References wrapper().

212  {
213  return TypeID(wrapper().interface()->wrappedTypeInfo());
214  }
WrapperHolder wrapper() const
Definition: Group.h:58
bool edm::Group::productUnavailable ( ) const
inline
virtual bool edm::Group::productUnavailable_ ( ) const
privatepure virtual

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

Referenced by productUnavailable().

bool edm::Group::productWasDeleted ( ) const
inline

Definition at line 52 of file Group.h.

References productWasDeleted_().

52 {return productWasDeleted_();}
virtual bool productWasDeleted_() const =0
virtual bool edm::Group::productWasDeleted_ ( ) const
privatepure virtual

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

Referenced by productWasDeleted().

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

Definition at line 249 of file Group.cc.

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

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

249  {
250  return &(productData().prov_);
251  }
virtual ProductData const & productData() const =0
Provenance prov_
Definition: ProductData.h:47
bool Group< TOutput >::provenanceAvailable ( ) const

Definition at line 200 of file Group.cc.

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

200  {
201  // If this product is from a the current process,
202  // the provenance is available if and only if a product has been put.
203  if(branchDescription().produced()) {
204  return product() && wrapper().isPresent();
205  }
206  // If this product is from a prior process, the provenance is available,
207  // although the per event part may have been dropped.
208  return true;
209  }
WrapperHolder wrapper() const
Definition: Group.h:58
eventsetup::produce::Produce produced
Definition: ESProducts.cc:21
boost::shared_ptr< void const > product() const
Definition: Group.h:55
bool isPresent() const
Definition: WrapperHolder.h:64
ConstBranchDescription const & branchDescription() const
Definition: Group.h:69
bool edm::Group::putOrMergeProduct ( ) const
inline

Definition at line 117 of file Group.h.

References putOrMergeProduct_().

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

117  {
118  return putOrMergeProduct_();
119  }
virtual bool putOrMergeProduct_() const =0
virtual bool edm::Group::putOrMergeProduct_ ( ) const
privatepure virtual

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

Referenced by putOrMergeProduct().

void edm::Group::putProduct ( WrapperOwningHolder const &  edp,
ProductProvenance const &  productProvenance 
)
inline

Definition at line 107 of file Group.h.

References putProduct_().

Referenced by edm::EventPrincipal::put(), edm::EventPrincipal::putOnRead(), edm::Principal::putOrMerge(), and edm::EventPrincipal::resolveProduct_().

107  {
108  putProduct_(edp, productProvenance);
109  }
virtual void putProduct_(WrapperOwningHolder const &edp, ProductProvenance const &productProvenance)=0
void edm::Group::putProduct ( WrapperOwningHolder const &  edp) const
inline

Definition at line 112 of file Group.h.

References putProduct_().

112  {
113  putProduct_(edp);
114  }
virtual void putProduct_(WrapperOwningHolder const &edp, ProductProvenance const &productProvenance)=0
virtual void edm::Group::putProduct_ ( WrapperOwningHolder const &  edp,
ProductProvenance const &  productProvenance 
)
privatepure virtual

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

Referenced by putProduct().

virtual void edm::Group::putProduct_ ( WrapperOwningHolder const &  edp) const
privatepure virtual

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

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

Definition at line 217 of file Group.cc.

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

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

217  {
218  // Check if the types match.
219  TypeID typeID(prod.dynamicTypeInfo());
220  if(typeID != branchDescription().typeID()) {
221  // Types do not match.
223  << "Product on branch " << branchDescription().branchName() << " is of wrong type.\n"
224  << "It is supposed to be of type " << branchDescription().className() << ".\n"
225  << "It is actually of type " << typeID.className() << ".\n";
226  }
227  }
std::string const & className() const
TypeID const & typeID() const
std::string const & branchName() const
ConstBranchDescription const & branchDescription() const
Definition: Group.h:69
void edm::Group::resetBranchDescription ( boost::shared_ptr< ConstBranchDescription bd)
inline

Definition at line 72 of file Group.h.

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

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

virtual ProductData const & productData() const =0
void resetBranchDescription(boost::shared_ptr< ConstBranchDescription > bd)
Definition: ProductData.cc:26
void edm::Group::resetProductData ( )
inline

Definition at line 32 of file Group.h.

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

32  {
34  resetStatus();
35  }
virtual ProductData const & productData() const =0
virtual void resetStatus()=0
void resetProductData()
Definition: ProductData.h:40
virtual void edm::Group::resetStatus ( )
privatepure virtual
void Group< TOutput >::setProcessHistoryID ( ProcessHistoryID const &  phid)

Definition at line 244 of file Group.cc.

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

244  {
246  }
void setProcessHistoryID(ProcessHistoryID const &phid)
Definition: Provenance.h:86
virtual ProductData const & productData() const =0
Provenance prov_
Definition: ProductData.h:47
virtual void edm::Group::setProductDeleted ( )
privatepure virtual

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

Referenced by deleteProduct().

void Group< TOutput >::setProductProvenance ( ProductProvenance const &  prov) const

Definition at line 152 of file Group.cc.

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

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

152  {
154  }
virtual ProductData const & productData() const =0
Provenance prov_
Definition: ProductData.h:47
void setProductProvenance(ProductProvenance const &prov) const
Definition: Provenance.cc:126
void Group< TOutput >::setProvenance ( boost::shared_ptr< BranchMapper mapper,
ProcessHistoryID const &  phid,
ProductID const &  pid 
)

Definition at line 230 of file Group.cc.

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

230  {
231  //assert(!productData().prov_);
233  productData().prov_.setStore(mapper);
235  }
void setProcessHistoryID(ProcessHistoryID const &phid)
Definition: Provenance.h:86
virtual ProductData const & productData() const =0
Provenance prov_
Definition: ProductData.h:47
void setStore(boost::shared_ptr< BranchMapper > store) const
Definition: Provenance.h:84
void setProductID(ProductID const &pid)
Definition: Provenance.h:92
void Group< TOutput >::setProvenance ( boost::shared_ptr< BranchMapper mapper,
ProcessHistoryID const &  phid 
)

Definition at line 238 of file Group.cc.

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

238  {
239  productData().prov_.setStore(mapper);
241  }
void setProcessHistoryID(ProcessHistoryID const &phid)
Definition: Provenance.h:86
virtual ProductData const & productData() const =0
Provenance prov_
Definition: ProductData.h:47
void setStore(boost::shared_ptr< BranchMapper > store) const
Definition: Provenance.h:84
void edm::Group::swap ( Group rhs)
inline

Definition at line 139 of file Group.h.

References swap_().

Referenced by edm::swap().

139 {swap_(rhs);}
virtual void swap_(Group &rhs)=0
virtual void edm::Group::swap_ ( Group rhs)
privatepure virtual
WrapperHolder edm::Group::wrapper ( ) const
inline

Definition at line 58 of file Group.h.

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

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

58 { return WrapperHolder(productData().wrapper_.get(), productData().getInterface()); }
WrapperInterfaceBase const * getInterface() const
Definition: ProductData.h:25
virtual ProductData const & productData() const =0
void Group< TOutput >::write ( std::ostream &  os) const

Definition at line 254 of file Group.cc.

References productID().

Referenced by edm::operator<<().

254  {
255  // This is grossly inadequate. It is also not critical for the
256  // first pass.
257  os << std::string("Group for product with ID: ")
258  << productID();
259  }
ProductID const & productID() const
Definition: Group.h:104