Belle II Software  release-05-01-25
ROIrawID.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2013 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Giulia Casarosa, Eugenio Paoloni *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #pragma once
12 
13 #include <stdint.h>
14 
15 namespace Belle2 {
26  class ROIrawID {
27 
28  public:
29  // typedef unsigned long baseType;
30  typedef uint64_t baseType;
31  enum {
32  UnusedBits = 21,
33  SystemFlagBits = 1,
34  DHHIDBits = 6,
35  MinVBits = 10,
36  MinUBits = 8,
37  MaxVBits = 10,
38  MaxUBits = 8,
39  Bits = UnusedBits + SystemFlagBits + DHHIDBits + MinVBits + MinUBits + MaxVBits + MaxUBits,
40 
41 // the following are unused atm, might be used for consistency checks
42 // MaxSystemFlag = (1 << SystemFlagBits) - 1,
43 // MaxDHHID = (1 << DHHIDBits) - 1,
44 // MaxMinV = (1 << MinVBits) - 1,
45 // MaxMinU = (1 << MinUBits) - 1,
46 // MaxMaxV = (1 << MaxVBits) - 1,
47 // MaxMaxU = (1 << MaxUBits) - 1,
48  };
49 
50 
51  explicit ROIrawID(baseType id = 0)
52  {
53  m_rawID.id = id;
54  }
56  ROIrawID(baseType SystemFlag, baseType DHHID, baseType MinV, baseType MinU, baseType MaxV, baseType MaxU)
57  {
58 
59  m_rawID.parts.unused = 0;
60  m_rawID.parts.systemFlag = SystemFlag;
61  m_rawID.parts.DHHID = DHHID;
62  m_rawID.parts.minV = MinV;
63  m_rawID.parts.minU = MinU;
64  m_rawID.parts.maxV = MaxV;
65  m_rawID.parts.maxU = MaxU;
66  }
68  baseType getSystemFlag() const {return m_rawID.parts.systemFlag;}
69  baseType getDHHID() const {return m_rawID.parts.DHHID;}
70  baseType getMinVid() const {return m_rawID.parts.minV;}
71  baseType getMinUid() const {return m_rawID.parts.minU;}
72  baseType getMaxVid() const {return m_rawID.parts.maxV;}
73  baseType getMaxUid() const {return m_rawID.parts.maxU;}
74  baseType getID() const {return m_rawID.id;}
76  baseType getBigEndian() const;
79  void setSystemFlag(baseType SystemFlag) {m_rawID.parts.systemFlag = SystemFlag;}
80  void setDHHID(baseType DHHID) {m_rawID.parts.DHHID = DHHID;}
81  void setMinVid(baseType MinV) {m_rawID.parts.minV = MinV;}
82  void setMinUid(baseType MinU) {m_rawID.parts.minU = MinU;}
83  void setMaxVid(baseType MaxV) {m_rawID.parts.maxV = MaxV;}
84  void setMaxUid(baseType MaxU) {m_rawID.parts.maxU = MaxU;}
85  void setID(baseType id) {m_rawID.id = id;}
88  ~ROIrawID() {};
89 
90  inline bool operator()(const ROIrawID& roi1, const ROIrawID& roi2) const
91  {
92  if (roi1.getDHHID() == roi2.getDHHID())
93  return roi1.getID() < roi2.getID();
94  else return roi1.getDHHID() < roi2.getDHHID();
95  }
97  private:
98 
99  union {
100 baseType id: Bits;
101  struct {
102 baseType maxU: MaxUBits;
103 baseType maxV: MaxVBits;
104 baseType minU: MinUBits;
105 baseType minV: MinVBits;
106 baseType DHHID: DHHIDBits;
107 baseType systemFlag: SystemFlagBits;
108 baseType unused: UnusedBits;
109  } parts;
110 
111  } m_rawID;
114  };
116 }
Belle2::ROIrawID::baseType
uint64_t baseType
base type
Definition: ROIrawID.h:38
Belle2::getID
int getID(const std::vector< double > &breaks, double t)
get id of the time point t
Definition: calibTools.h:71
Belle2::ROIrawID::getBigEndian
baseType getBigEndian() const
get bigEndian
Definition: ROIrawID.cc:15
Belle2::ROIrawID::m_rawID
union Belle2::ROIrawID::@271 m_rawID
raw ID
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::ROIrawID
ROIrawID.
Definition: ROIrawID.h:34