CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
ProductID.h
Go to the documentation of this file.
1 #ifndef DataFormats_Provenance_ProductID_h
2 #define DataFormats_Provenance_ProductID_h
3 
4 /*----------------------------------------------------------------------
5 
6 ProductID: A unique identifier for each WrapperBase within a process.
7 Used only in Ref, Ptr, and similar classes.
8 
9 The high order 16 bits is the process index, identifying the process
10 in which the product was created. Exception: An index of 0 means that
11 the product was created prior to the new format (i.e. prior to CMSSW_3_0_0.
12 
13 The low order 16 bits is the product index, identifying the product that
14 in which the product was created. An index of zero means no product.
15 
16 
17 The
18 
19 ----------------------------------------------------------------------*/
20 
21 #include <iosfwd>
22 
23 namespace edm {
24 
25  typedef unsigned short ProcessIndex;
26  typedef unsigned short ProductIndex;
27  class ProductID {
28  public:
30  productIndex_(0) {}
31  explicit
32  ProductID(ProductIndex prodIndex) : processIndex_(0), productIndex_(prodIndex) {}
33  ProductID(ProcessIndex procIndex, ProductIndex prodIndex) :
34  processIndex_(procIndex), productIndex_(prodIndex) {}
35  bool isValid() const {return productIndex_ != 0;}
38  ProductIndex id() const {return productIndex_;} // backward compatibility
40 
41  void swap(ProductID& other);
42 
43  private:
46  };
47 
48  inline
49  void swap(ProductID& a, ProductID& b) {
50  a.swap(b);
51  }
52 
53  inline
54  bool operator==(ProductID const& lh, ProductID const& rh) {
55  return lh.processIndex() == rh.processIndex() && lh.productIndex() == rh.productIndex();
56  }
57  inline
58  bool operator!=(ProductID const& lh, ProductID const& rh) {
59  return !(lh == rh);
60  }
61 
62  bool operator<(ProductID const& lh, ProductID const& rh);
63 
64  std::ostream&
65  operator<<(std::ostream& os, ProductID const& id);
66 }
67 #endif
bool operator<(DetSet< T > const &x, DetSet< T > const &y)
Definition: DetSet.h:90
bool operator!=(debugging_allocator< X > const &, debugging_allocator< Y > const &)
ProcessIndex productIndex() const
Definition: ProductID.h:37
bool int lh
Definition: SIMDVec.h:19
void swap(ProductID &other)
Definition: ProductID.cc:17
void swap(Association< C > &lhs, Association< C > &rhs)
Definition: Association.h:116
ProductID(ProductIndex prodIndex)
Definition: ProductID.h:32
bool operator==(debugging_allocator< X > const &, debugging_allocator< Y > const &)
ProductIndex productIndex_
Definition: ProductID.h:45
ProcessIndex processIndex_
Definition: ProductID.h:44
unsigned short ProcessIndex
Definition: ProductID.h:25
void reset()
Definition: ProductID.h:39
ProductID(ProcessIndex procIndex, ProductIndex prodIndex)
Definition: ProductID.h:33
double b
Definition: hdecay.h:120
double a
Definition: hdecay.h:121
unsigned short ProductIndex
Definition: ProductID.h:26
ProductIndex id() const
Definition: ProductID.h:38
bool isValid() const
Definition: ProductID.h:35
ProcessIndex processIndex() const
Definition: ProductID.h:36
std::ostream & operator<<(std::ostream &ost, const HLTGlobalStatus &hlt)
Formatted printout of trigger tbale.