Belle II Software  release-05-01-25
hitPatternVXD.cc
1 #include <mdst/dataobjects/HitPatternVXD.h>
2 #include <gtest/gtest.h>
3 
4 #include <bitset>
5 #include <string>
6 
7 namespace Belle2 {
13  class HitPatternVXDTest : public ::testing::Test {
14  protected:
15  };
16 
18  TEST_F(HitPatternVXDTest, NumberingScheme)
19  {
20  const std::list<unsigned short> pxdNumbering = {1, 2};
21  const std::list<unsigned short> svdNumbering = {3, 4, 5, 6};
22  EXPECT_EQ(pxdNumbering, HitPatternVXD::s_PXDLayerNumbers);
23  EXPECT_EQ(svdNumbering, HitPatternVXD::s_SVDLayerNumbers);
24  }
25 
28  {
29  unsigned int initValue = 16776960;
30  std::bitset<32> initValueAsBitset(static_cast<std::string>("00000000111111111111111100000000"));
31 
32  HitPatternVXD myHitPattern(initValue);
33  EXPECT_EQ(initValueAsBitset, myHitPattern.getBitset());
34  EXPECT_EQ(initValue, myHitPattern.getInteger());
35 
36  }
37 
39  TEST_F(HitPatternVXDTest, SVDSetterAndGetter)
40  {
41  HitPatternVXD myHitPattern(0);
42 
43  for (const auto layerId : HitPatternVXD::s_SVDLayerNumbers) {
44  unsigned short uHits = 2;
45  unsigned short vHits = 1;
46  myHitPattern.setSVDLayer(layerId, uHits, vHits);
47  EXPECT_EQ(uHits, myHitPattern.getSVDLayer(layerId).first);
48  EXPECT_EQ(vHits, myHitPattern.getSVDLayer(layerId).second);
49  myHitPattern.resetSVDLayer(layerId);
50  EXPECT_EQ(0, myHitPattern.getSVDLayer(layerId).first);
51  EXPECT_EQ(0, myHitPattern.getSVDLayer(layerId).second);
52  uHits = 4;
53  vHits = 4;
54  myHitPattern.setSVDLayer(layerId, uHits, vHits);
55  EXPECT_EQ(3, myHitPattern.getSVDLayer(layerId).first);
56  EXPECT_EQ(3, myHitPattern.getSVDLayer(layerId).second);
57  }
58  }
59 
61  TEST_F(HitPatternVXDTest, PXDSetterAndGetter)
62  {
63  HitPatternVXD myHitPattern(0);
64 
65  for (const auto layerId : HitPatternVXD::s_PXDLayerNumbers) {
66  for (unsigned int nHits = 0; nHits <= 3; ++nHits) {
67  myHitPattern.setPXDLayer(layerId, nHits, HitPatternVXD::PXDMode::normal);
68  EXPECT_EQ(nHits, myHitPattern.getPXDLayer(layerId, HitPatternVXD::PXDMode::normal));
69  myHitPattern.resetPXDLayer(layerId, HitPatternVXD::PXDMode::normal);
70  EXPECT_EQ(0, myHitPattern.getPXDLayer(layerId, HitPatternVXD::PXDMode::normal));
71 
72  myHitPattern.setPXDLayer(layerId, nHits, HitPatternVXD::PXDMode::gated);
73  EXPECT_EQ(nHits, myHitPattern.getPXDLayer(layerId, HitPatternVXD::PXDMode::gated));
74  myHitPattern.resetPXDLayer(layerId, HitPatternVXD::PXDMode::gated);
75  EXPECT_EQ(0, myHitPattern.getPXDLayer(layerId, HitPatternVXD::PXDMode::gated));
76  }
77  }
78 
79  for (const auto layerId : HitPatternVXD::s_PXDLayerNumbers) {
80  unsigned int nHits = 4;
81  myHitPattern.setPXDLayer(layerId, nHits, HitPatternVXD::PXDMode::normal);
82  EXPECT_EQ(3, myHitPattern.getPXDLayer(layerId, HitPatternVXD::PXDMode::normal));
83  myHitPattern.resetPXDLayer(layerId, HitPatternVXD::PXDMode::normal);
84  EXPECT_EQ(0, myHitPattern.getPXDLayer(layerId, HitPatternVXD::PXDMode::normal));
85 
86  myHitPattern.setPXDLayer(layerId, nHits, HitPatternVXD::PXDMode::gated);
87  EXPECT_EQ(3, myHitPattern.getPXDLayer(layerId, HitPatternVXD::PXDMode::gated));
88  myHitPattern.resetPXDLayer(layerId, HitPatternVXD::PXDMode::gated);
89  EXPECT_EQ(0, myHitPattern.getPXDLayer(layerId, HitPatternVXD::PXDMode::gated));
90  }
91  }
92 
95  {
96  HitPatternVXD myHitPattern(16777215);
97  const unsigned short svdHits = 24;
98  const unsigned short pxdHits = 12;
99  const unsigned short ndf = 2 * pxdHits + svdHits;
100  EXPECT_EQ(svdHits, myHitPattern.getNSVDHits());
101  EXPECT_EQ(pxdHits, myHitPattern.getNPXDHits());
102  EXPECT_EQ(ndf, myHitPattern.getNdf());
103 
104  }
105 
108  {
109  HitPatternVXD myHitPattern(0);
110  const unsigned short nSVD = 3;
111  const unsigned short nPXDnormal = 2;
112  const unsigned short nPXDgated = 1;
113 
114  // set SVD
115  myHitPattern.setSVDLayer(3, 1, 3);
116  myHitPattern.setSVDLayer(4, 0, 0);
117  myHitPattern.setSVDLayer(5, 1, 1);
118  myHitPattern.setSVDLayer(6, 0, 1);
119  // set PXD normal
120  myHitPattern.setPXDLayer(1, 1, HitPatternVXD::PXDMode::normal);
121  myHitPattern.setPXDLayer(2, 2, HitPatternVXD::PXDMode::normal);
122  // set PXD gated
123  myHitPattern.setPXDLayer(1, 0, HitPatternVXD::PXDMode::gated);
124  myHitPattern.setPXDLayer(2, 2, HitPatternVXD::PXDMode::gated);
125 
126  EXPECT_EQ(nSVD, myHitPattern.getNSVDLayers());
127  EXPECT_EQ(nPXDnormal, myHitPattern.getNPXDLayers(HitPatternVXD::PXDMode::normal));
128  EXPECT_EQ(nPXDgated, myHitPattern.getNPXDLayers(HitPatternVXD::PXDMode::gated));
129  EXPECT_EQ(nSVD + nPXDnormal, myHitPattern.getNVXDLayers(HitPatternVXD::PXDMode::normal));
130  EXPECT_EQ(nSVD + nPXDgated, myHitPattern.getNVXDLayers(HitPatternVXD::PXDMode::gated));
131 
132  }
133 
135  TEST_F(HitPatternVXDTest, getFirstLastLayer)
136  {
137  HitPatternVXD myHitPattern(0);
138  // random choices
139  const unsigned short firstLayerPXD = 1;
140  const unsigned short lastLayerPXD = 2;
141  const unsigned short firstLayerSVD = 4;
142  const unsigned short lastLayerSVD = 6;
143 
144  // set SVD
145  myHitPattern.setSVDLayer(3, 0, 0);
146  myHitPattern.setSVDLayer(4, 3, 0);
147  myHitPattern.setSVDLayer(5, 0, 1);
148  myHitPattern.setSVDLayer(6, 1, 1);
149  // set PXD normal
150  myHitPattern.setPXDLayer(1, 1, HitPatternVXD::PXDMode::normal);
151  myHitPattern.setPXDLayer(2, 2, HitPatternVXD::PXDMode::normal);
152  // set PXD gated
153  myHitPattern.setPXDLayer(1, 1, HitPatternVXD::PXDMode::gated);
154  myHitPattern.setPXDLayer(2, 2, HitPatternVXD::PXDMode::gated);
155 
156  EXPECT_EQ(firstLayerSVD, myHitPattern.getFirstSVDLayer());
157  EXPECT_EQ(lastLayerSVD, myHitPattern.getLastSVDLayer());
158  EXPECT_EQ(firstLayerPXD, myHitPattern.getFirstPXDLayer(HitPatternVXD::PXDMode::normal));
159  EXPECT_EQ(lastLayerPXD, myHitPattern.getLastPXDLayer(HitPatternVXD::PXDMode::normal));
160  EXPECT_EQ(firstLayerPXD, myHitPattern.getFirstPXDLayer(HitPatternVXD::PXDMode::gated));
161  EXPECT_EQ(lastLayerPXD, myHitPattern.getLastPXDLayer(HitPatternVXD::PXDMode::gated));
162  }
164 }
Belle2::HitPatternVXD::s_SVDLayerNumbers
static const std::list< unsigned short > s_SVDLayerNumbers
For iterating through layers.
Definition: HitPatternVXD.h:212
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::HitPatternVXDTest
Definition: hitPatternVXD.cc:13
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::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::getBitset
std::bitset< 32 > getBitset() const
Getter for underlying bitset.
Definition: HitPatternVXD.h:218
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::TEST_F
TEST_F(GlobalLabelTest, LargeNumberOfTimeDependentParameters)
Test large number of time-dep params for registration and retrieval.
Definition: globalLabel.cc:65
Belle2::HitPatternVXD::getNSVDLayers
unsigned short getNSVDLayers() const
Returns the total number of activated layers of the SVD.
Definition: HitPatternVXD.cc:93
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::getNSVDHits
unsigned short getNSVDHits() const
Get total number of hits in the SVD.
Definition: HitPatternVXD.cc:83
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
Belle2::HitPatternVXD
Hit pattern of the VXD within a track.
Definition: HitPatternVXD.h:44