Belle II Software  release-05-02-19
HitPatternCDC.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 #pragma once
11 
12 #include <RtypesCore.h>
13 
14 #include <bitset>
15 #include <map>
16 #include <utility>
17 #include <string>
18 
19 namespace Belle2 {
37  class HitPatternCDC {
38  friend class HitPatternCDCTest_settersNGetters_Test;
39  friend class HitPatternCDCTest_getFirstLastLayer_Test;
40 
41  public:
43  HitPatternCDC() : m_pattern(0) {}
44 
46  explicit HitPatternCDC(ULong64_t initValue) : m_pattern(initValue) {}
47 
49  ULong64_t getInteger() const;
50 
58  unsigned short getNHits() const;
59 
66  void setNHits(unsigned short nHits);
67 
68  // ----------------------------------------------------------------
69  // ---------------- LAYER FUNCTIONS -------------------------------
70  // ----------------------------------------------------------------
71 
77  void setLayer(const unsigned short layer);
78 
84  void resetLayer(const unsigned short layer);
85 
91  bool hasLayer(const unsigned short layer) const;
92 
98  short getFirstLayer() const;
99 
105  short getLastLayer() const;
106 
107  // ----------------------------------------------------------------
108  // ---------------- SUPER LAYER FUNCTIONS -------------------------
109  // ----------------------------------------------------------------
110 
115  bool hasSLayer(const unsigned short sLayer) const;
116 
121  void resetSLayer(const unsigned short sLayer);
122 
128  std::bitset<64> getSLayerPattern(const unsigned short sLayer);
129 
137  unsigned short getSLayerNHits(const unsigned short sLayer) const;
138 
144  unsigned short getLongestContRunInSL(const unsigned short sLayer) const;
145 
146  // ----------------------------------------------------------------
147  // ---------------- Others ----------------------------------------
148  // ----------------------------------------------------------------
149 
151  bool hasAxialLayer() const;
152 
154  bool hasStereoLayer() const;
155 
157  std::string __repr__() const;
158 
159  private:
160  std::bitset<64> m_pattern;
161  static const std::bitset<64> s_sLayerMasks[9];
162  static const std::bitset<64> s_infoLayerMask;
165  static const std::map<unsigned short, std::pair<unsigned short, unsigned short>> s_superLayerIndices;
166 
168  std::bitset<64> getBitSet() const { return m_pattern; }
169 
171  void resetPattern() { m_pattern.reset(); }
172 
173  };
175 }
Belle2::HitPatternCDC::HitPatternCDC
HitPatternCDC()
Create empty pattern.
Definition: HitPatternCDC.h:51
Belle2::HitPatternCDC::m_pattern
std::bitset< 64 > m_pattern
Saves the actual pattern.
Definition: HitPatternCDC.h:168
Belle2::HitPatternCDC::getLongestContRunInSL
unsigned short getLongestContRunInSL(const unsigned short sLayer) const
Getter for longest run of consecutive layers with hits within the given Super-layer.
Definition: HitPatternCDC.cc:141
Belle2::HitPatternCDC::getFirstLayer
short getFirstLayer() const
Returns the index of the first layer with a hit.
Definition: HitPatternCDC.cc:98
Belle2::HitPatternCDC::hasSLayer
bool hasSLayer(const unsigned short sLayer) const
Getter for super-layer match.
Definition: HitPatternCDC.cc:116
Belle2::HitPatternCDC::resetSLayer
void resetSLayer(const unsigned short sLayer)
Reset complete superLayer, e.g.
Definition: HitPatternCDC.cc:122
Belle2::HitPatternCDC::s_superLayerIndices
static const std::map< unsigned short, std::pair< unsigned short, unsigned short > > s_superLayerIndices
Holds the indices for super layer access.
Definition: HitPatternCDC.h:173
Belle2::HitPatternCDC::getSLayerNHits
unsigned short getSLayerNHits(const unsigned short sLayer) const
Getter for the number of hits in one super-layer.
Definition: HitPatternCDC.cc:135
Belle2::HitPatternCDC::hasStereoLayer
bool hasStereoLayer() const
True, if at least one axial layer is true.
Definition: HitPatternCDC.cc:165
Belle2::HitPatternCDC::__repr__
std::string __repr__() const
String for printing in python.
Definition: HitPatternCDC.cc:171
Belle2::HitPatternCDC::resetLayer
void resetLayer(const unsigned short layer)
Set bit corresponding to layer to false.
Definition: HitPatternCDC.cc:86
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::HitPatternCDC::getSLayerPattern
std::bitset< 64 > getSLayerPattern(const unsigned short sLayer)
Get the bit pattern in a specific super layer.
Definition: HitPatternCDC.cc:130
Belle2::HitPatternCDC::setNHits
void setNHits(unsigned short nHits)
Sets the 8 MSBs to the total number of hits in the CDC.
Definition: HitPatternCDC.cc:55
Belle2::HitPatternCDC::setLayer
void setLayer(const unsigned short layer)
Set bit corresponding to layer to true.
Definition: HitPatternCDC.cc:80
Belle2::HitPatternCDC::getInteger
ULong64_t getInteger() const
Getter for underlying integer type.
Definition: HitPatternCDC.cc:71
Belle2::HitPatternCDC::getLastLayer
short getLastLayer() const
Returns the index of the last layer with a hit.
Definition: HitPatternCDC.cc:106
Belle2::HitPatternCDC::hasLayer
bool hasLayer(const unsigned short layer) const
Getter for single layer.
Definition: HitPatternCDC.cc:92
Belle2::HitPatternCDC::getNHits
unsigned short getNHits() const
Get the total Number of CDC hits in the fit.
Definition: HitPatternCDC.cc:49
Belle2::HitPatternCDC::s_sLayerMasks
static const std::bitset< 64 > s_sLayerMasks[9]
Masks to zero out all bits from other layers.
Definition: HitPatternCDC.h:169
Belle2::HitPatternCDC::hasAxialLayer
bool hasAxialLayer() const
True, if at least one axial layer is true.
Definition: HitPatternCDC.cc:159
Belle2::HitPatternCDC::s_infoLayerMask
static const std::bitset< 64 > s_infoLayerMask
Mask to zero out all bits from other layers.
Definition: HitPatternCDC.h:170
Belle2::HitPatternCDC::getBitSet
std::bitset< 64 > getBitSet() const
Getter for underlying bit set.
Definition: HitPatternCDC.h:176
Belle2::HitPatternCDC::resetPattern
void resetPattern()
Reset the complete hit pattern.
Definition: HitPatternCDC.h:179