Belle II Software  release-05-01-25
hitPatternCDC.cc
1 #include <gtest/gtest.h>
2 #include <mdst/dataobjects/HitPatternCDC.h>
3 
4 namespace Belle2 {
10  class HitPatternCDCTest : public ::testing::Test {
11  protected:
12  };
13 
15  TEST_F(HitPatternCDCTest, settersNGetters)
16  {
17  // Test proper initialization.
18  unsigned long initValue = 66560; // python >>> 2 ** 16 + 2 ** 10
19  HitPatternCDC hitPatternCDC(initValue);
20  EXPECT_EQ(initValue, hitPatternCDC.getInteger());
21 
22  HitPatternCDC hitPatternCDC2;
23  EXPECT_EQ(0, hitPatternCDC2.getNHits());
24 
25  // Test setting and getting individual bits
26  short layer = 5;
27  hitPatternCDC2.setLayer(layer);
28  EXPECT_EQ(true, hitPatternCDC2.hasLayer(5));
29 
30  // Test of SuperLayer getters; setters don't make sense.
31  // Reminder: Start counting from 0 here.
32  // Even -> Axial Layer; Odd -> Stereo Layer
33  HitPatternCDC hitPatternCDC3;
34  hitPatternCDC3.setLayer(9); // SL 1
35  hitPatternCDC3.setLayer(15); // SL 2
36  hitPatternCDC3.setLayer(21); // SL 3
37 
38  EXPECT_FALSE(hitPatternCDC3.hasSLayer(0));
39  EXPECT_TRUE(hitPatternCDC3.hasSLayer(1));
40 
41  // Test Axial and Stereo requests.
42  EXPECT_TRUE(hitPatternCDC3.hasAxialLayer());
43  EXPECT_TRUE(hitPatternCDC3.hasStereoLayer());
44  EXPECT_FALSE(hitPatternCDC2.hasStereoLayer());
45 
46  hitPatternCDC3.resetLayer(15);
47  EXPECT_FALSE(hitPatternCDC3.hasAxialLayer());
48 
49  // Test resetting of super layers.
50  hitPatternCDC3.resetSLayer(1);
51  hitPatternCDC3.resetSLayer(3);
52  EXPECT_EQ(0, hitPatternCDC3.getNHits());
53  } // settersNGetters
54 
56  TEST_F(HitPatternCDCTest, SetNGetTotalNumberOfHits)
57  {
58  unsigned long long int initValue = static_cast<unsigned long long int>(0xAAAAAAAAAAAAAAAAL); //101010...101010
59  HitPatternCDC myHitPatternCDC(initValue);
60  EXPECT_EQ(170, myHitPatternCDC.getNHits());
61  unsigned short int nHits1 = 255;
62  myHitPatternCDC.setNHits(nHits1);
63  EXPECT_EQ(nHits1, myHitPatternCDC.getNHits());
64  unsigned short int nHits2 = 0;
65  myHitPatternCDC.setNHits(nHits2);
66  EXPECT_EQ(nHits2, myHitPatternCDC.getNHits());
67  unsigned short int nHits3 = 93;
68  myHitPatternCDC.setNHits(nHits3);
69  EXPECT_EQ(nHits3, myHitPatternCDC.getNHits());
70  }
71 
73  TEST_F(HitPatternCDCTest, getLongestContRunInSL)
74  {
75  unsigned long long int initValue = static_cast<unsigned long long int>(0xEEEEEEEEEEEEEEL); // 11101110...11101110
76  HitPatternCDC myHitPatternCDC(initValue);
77  EXPECT_EQ(3, myHitPatternCDC.getLongestContRunInSL(0));
78  EXPECT_EQ(3, myHitPatternCDC.getLongestContRunInSL(1));
79  EXPECT_EQ(3, myHitPatternCDC.getLongestContRunInSL(2));
80  EXPECT_EQ(3, myHitPatternCDC.getLongestContRunInSL(3));
81  EXPECT_EQ(3, myHitPatternCDC.getLongestContRunInSL(4));
82  EXPECT_EQ(3, myHitPatternCDC.getLongestContRunInSL(5));
83  EXPECT_EQ(3, myHitPatternCDC.getLongestContRunInSL(6));
84  EXPECT_EQ(3, myHitPatternCDC.getLongestContRunInSL(7));
85  EXPECT_EQ(3, myHitPatternCDC.getLongestContRunInSL(8));
86 
87  }
88 
90  TEST_F(HitPatternCDCTest, getFirstLastLayer)
91  {
92  HitPatternCDC myHitPatternCDC(0);
93  myHitPatternCDC.setNHits(123); //arbitrary number to check if this layer is masked out correctly
94 
95  unsigned short firstLayer = 5;
96  unsigned short lastLayer = 46;
97  myHitPatternCDC.setLayer(firstLayer);
98  myHitPatternCDC.setLayer(lastLayer);
99  EXPECT_EQ(firstLayer, myHitPatternCDC.getFirstLayer());
100  EXPECT_EQ(lastLayer, myHitPatternCDC.getLastLayer());
101 
102  myHitPatternCDC.resetPattern();
103  EXPECT_EQ(-1, myHitPatternCDC.getFirstLayer());
104  EXPECT_EQ(-1, myHitPatternCDC.getLastLayer());
105  }
106 
108 } // namespace Belle2
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::hasStereoLayer
bool hasStereoLayer() const
True, if at least one axial layer is true.
Definition: HitPatternCDC.cc:165
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::setNHits
void setNHits(unsigned short nHits)
Sets the 8 MSBs to the total number of hits in the CDC.
Definition: HitPatternCDC.cc:55
Belle2::TEST_F
TEST_F(GlobalLabelTest, LargeNumberOfTimeDependentParameters)
Test large number of time-dep params for registration and retrieval.
Definition: globalLabel.cc:65
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::hasAxialLayer
bool hasAxialLayer() const
True, if at least one axial layer is true.
Definition: HitPatternCDC.cc:159
Belle2::HitPatternCDC::resetPattern
void resetPattern()
Reset the complete hit pattern.
Definition: HitPatternCDC.h:179
Belle2::HitPatternCDC
Hit pattern of CDC hits within a track.
Definition: HitPatternCDC.h:45
Belle2::HitPatternCDCTest
Unit tests for the CDC hit Patterns.
Definition: hitPatternCDC.cc:10