Belle II Software  release-05-02-19
HitPatternVXD.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2013 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Martin Heck, Markus Prim *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #pragma once
12 
13 #include <bitset>
14 #include <utility>
15 #include <list>
16 
17 namespace Belle2 {
36  class HitPatternVXD {
37  friend class HitPatternVXDTest_General_Test;
38  friend class HitPatternVXDTest_NumberingScheme_Test;
39  friend class HitPatternVXDTest_SVDSetterAndGetter_Test;
40  friend class HitPatternVXDTest_PXDSetterAndGetter_Test;
41 
42  public:
43 
45  enum class PXDMode : unsigned short { normal = static_cast<unsigned short>(0), gated = 1 };
46 
48  HitPatternVXD() : m_pattern(0) {}
49 
51  explicit HitPatternVXD(const unsigned int initValue) : m_pattern(initValue) {}
52 
57  unsigned int getInteger() const { return m_pattern.to_ulong(); }
58 
64  unsigned short getNdf() const;
65 
73  unsigned short getNVXDLayers(const PXDMode& pxdmode = PXDMode::normal) const;
74 
75  // ----------------------------------------------------------------
76  // ---------------- SVD LAYER FUNCTIONS ---------------------------
77  // ----------------------------------------------------------------
78 
85  void setSVDLayer(const unsigned short layerId, unsigned short uHits, unsigned short vHits);
86 
92  std::pair<const unsigned short, const unsigned short> getSVDLayer(const unsigned short layerId) const;
93 
98  void resetSVDLayer(const unsigned short layerId);
99 
104  unsigned short getNSVDHits() const;
105 
110  unsigned short getNSVDLayers() const;
111 
117  short getFirstSVDLayer() const;
118 
124  short getLastSVDLayer() const;
125 
126  // ----------------------------------------------------------------
127  // ---------------- PXD LAYER FUNCTIONS ---------------------------
128  // ----------------------------------------------------------------
129 
137  void setPXDLayer(const unsigned short layerId, unsigned short nHits, const PXDMode& mode = PXDMode::normal);
138 
146  unsigned short getPXDLayer(const unsigned short layerId, const PXDMode& mode = PXDMode::normal) const;
147 
154  void resetPXDLayer(const unsigned short layerId, const PXDMode& mode = PXDMode::normal);
155 
160  unsigned short getNPXDHits() const;
161 
168  unsigned short getNPXDLayers(const PXDMode& mode = PXDMode::normal) const;
169 
177  short getFirstPXDLayer(const PXDMode& mode = PXDMode::normal) const;
178 
185  short getLastPXDLayer(const PXDMode& mode = PXDMode::normal) const;
186 
188  std::string __repr__() const;
189 
190  private:
196  std::bitset<32> m_pattern;
197 
198  static const std::bitset<32> s_LayerMasks[6];
199  static const std::bitset<32> s_PXDModeMasks[2];
200  static const std::bitset<32> s_SVDuvMasks[2];
201  static const std::bitset<32> s_infoLayerMask;
203  static const std::list<unsigned short> s_PXDLayerNumbers;
204  static const std::list<unsigned short> s_SVDLayerNumbers;
206  static const unsigned int s_svdUshift = 8;
207  static const unsigned int s_svdVshift = 10;
210  std::bitset<32> getBitset() const { return m_pattern; }
211 
213  std::bitset<32> getLayerMask(const unsigned short layerId) const { return HitPatternVXD::s_LayerMasks[layerId - 1]; }
214 
215  };
217 }
Belle2::HitPatternVXD::s_SVDLayerNumbers
static const std::list< unsigned short > s_SVDLayerNumbers
For iterating through layers.
Definition: HitPatternVXD.h:212
Belle2::HitPatternVXD::s_SVDuvMasks
static const std::bitset< 32 > s_SVDuvMasks[2]
Mask to zero out all bits from other layers.
Definition: HitPatternVXD.h:208
Belle2::HitPatternVXD::getNdf
unsigned short getNdf() const
Get degrees of freedom in PXD and SVD.
Definition: HitPatternVXD.cc:41
Belle2::HitPatternVXD::getFirstSVDLayer
short getFirstSVDLayer() const
Get the first activated SVD layer index.
Definition: HitPatternVXD.cc:103
Belle2::HitPatternVXD::getNPXDHits
unsigned short getNPXDHits() const
Get total number of hits in the PXD.
Definition: HitPatternVXD.cc:147
Belle2::HitPatternVXD::s_LayerMasks
static const std::bitset< 32 > s_LayerMasks[6]
Masks to zero out all bits from other layers.
Definition: HitPatternVXD.h:206
Belle2::HitPatternVXD::getNVXDLayers
unsigned short getNVXDLayers(const PXDMode &pxdmode=PXDMode::normal) const
Return the total number of activated layers in the VXD depending on the mode of the PXD.
Definition: HitPatternVXD.cc:46
Belle2::HitPatternVXD::HitPatternVXD
HitPatternVXD()
Create empty pattern.
Definition: HitPatternVXD.h:56
Belle2::HitPatternVXD::getFirstPXDLayer
short getFirstPXDLayer(const PXDMode &mode=PXDMode::normal) const
Returns the first activated layer of the PXD depending on the mode.
Definition: HitPatternVXD.cc:166
Belle2::HitPatternVXD::resetPXDLayer
void resetPXDLayer(const unsigned short layerId, const PXDMode &mode=PXDMode::normal)
Reset the number of hits in a specific layer of the PXD.
Definition: HitPatternVXD.cc:141
Belle2::HitPatternVXD::getSVDLayer
std::pair< const unsigned short, const unsigned short > getSVDLayer(const unsigned short layerId) const
Get the number of hits in a specific layer of the SVD.
Definition: HitPatternVXD.cc:65
Belle2::HitPatternVXD::getLastPXDLayer
short getLastPXDLayer(const PXDMode &mode=PXDMode::normal) const
Returns the last activated layer of the PXD depending on the mode.
Definition: HitPatternVXD.cc:174
Belle2::HitPatternVXD::getNPXDLayers
unsigned short getNPXDLayers(const PXDMode &mode=PXDMode::normal) const
Returns the total number of activated layers of the PXD.
Definition: HitPatternVXD.cc:157
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::HitPatternVXD::PXDMode
PXDMode
PXD modes.
Definition: HitPatternVXD.h:53
Belle2::HitPatternVXD::getBitset
std::bitset< 32 > getBitset() const
Getter for underlying bitset.
Definition: HitPatternVXD.h:218
Belle2::HitPatternVXD::s_svdVshift
static const unsigned int s_svdVshift
for internal shifting to the SVD bits.
Definition: HitPatternVXD.h:215
Belle2::HitPatternVXD::setPXDLayer
void setPXDLayer(const unsigned short layerId, unsigned short nHits, const PXDMode &mode=PXDMode::normal)
Set the number of hits in a specific layer of the PXD.
Definition: HitPatternVXD.cc:122
Belle2::HitPatternVXD::resetSVDLayer
void resetSVDLayer(const unsigned short layerId)
Reset the number of hits in a specific layer of the SVD.
Definition: HitPatternVXD.cc:76
Belle2::HitPatternVXD::setSVDLayer
void setSVDLayer(const unsigned short layerId, unsigned short uHits, unsigned short vHits)
Set the number of hits in a specific layer of the SVD.
Definition: HitPatternVXD.cc:51
Belle2::HitPatternVXD::getNSVDLayers
unsigned short getNSVDLayers() const
Returns the total number of activated layers of the SVD.
Definition: HitPatternVXD.cc:93
Belle2::HitPatternVXD::getLayerMask
std::bitset< 32 > getLayerMask(const unsigned short layerId) const
Getter for the proper layer masks.
Definition: HitPatternVXD.h:221
Belle2::HitPatternVXD::s_infoLayerMask
static const std::bitset< 32 > s_infoLayerMask
Mask to zero out all bits from other layers.
Definition: HitPatternVXD.h:209
Belle2::HitPatternVXD::getPXDLayer
unsigned short getPXDLayer(const unsigned short layerId, const PXDMode &mode=PXDMode::normal) const
Get the number of hits in a specific layer of the PXD.
Definition: HitPatternVXD.cc:133
Belle2::HitPatternVXD::m_pattern
std::bitset< 32 > m_pattern
Storing of actual hit pattern.
Definition: HitPatternVXD.h:204
Belle2::HitPatternVXD::s_PXDModeMasks
static const std::bitset< 32 > s_PXDModeMasks[2]
Mask to zero out all bits from other layers.
Definition: HitPatternVXD.h:207
Belle2::HitPatternVXD::__repr__
std::string __repr__() const
String for printing in python.
Definition: HitPatternVXD.cc:183
Belle2::HitPatternVXD::getNSVDHits
unsigned short getNSVDHits() const
Get total number of hits in the SVD.
Definition: HitPatternVXD.cc:83
Belle2::HitPatternVXD::s_svdUshift
static const unsigned int s_svdUshift
for internal shifting to the SVD bits.
Definition: HitPatternVXD.h:214
Belle2::HitPatternVXD::s_PXDLayerNumbers
static const std::list< unsigned short > s_PXDLayerNumbers
For iterating through layers.
Definition: HitPatternVXD.h:211
Belle2::HitPatternVXD::getInteger
unsigned int getInteger() const
Getter for the underlying integer.
Definition: HitPatternVXD.h:65
Belle2::HitPatternVXD::getLastSVDLayer
short getLastSVDLayer() const
Get the last activated SVD layer index.
Definition: HitPatternVXD.cc:112