Belle II Software  release-05-01-25
KLMMuidLikelihoodTest.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2019 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Giacomo De Pietro *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 /* KLM headers. */
12 #include <klm/dataobjects/KLMMuidLikelihood.h>
13 
14 /* Belle2 headers. */
15 #include <framework/datastore/StoreArray.h>
16 
17 /* C++ headers. */
18 #include <bitset>
19 #include <string>
20 
21 /* Google Test headers. */
22 #include <gtest/gtest.h>
23 
24 using namespace std;
25 
26 namespace Belle2 {
33  class KLMMuidLikelihoodTest : public ::testing::Test {
34 
35  protected:
37  void SetUp() override
38  {
39  DataStore::Instance().setInitializeActive(true);
41  muids.registerInDataStore();
42  DataStore::Instance().setInitializeActive(false);
43  }
44 
46  void TearDown() override
47  {
48  DataStore::Instance().reset();
49  }
50 
52  KLMMuidLikelihood* m_muid = nullptr;
53  };
54 
57  {
59 
60  // Test the non-default constructor
61  int pdg = 13;
62  m_muid = muids.appendNew();
63  m_muid->setPDGCode(pdg);
64  EXPECT_EQ(m_muid->getPDGCode(), pdg);
65  EXPECT_EQ(m_muid->getOutcome(), 0);
66  EXPECT_EQ(m_muid->getHitLayer(), -1);
67  EXPECT_FLOAT_EQ(m_muid->getLogL_mu(), -1.0E20);
68 
69  // Test the efficiency methods
70  int layer = 4;
71  float efficiency = 0.2;
72  m_muid->setExtBKLMEfficiencyValue(layer, efficiency);
73  EXPECT_FLOAT_EQ(m_muid->getExtBKLMEfficiencyValue(layer), efficiency);
74  m_muid->setExtEKLMEfficiencyValue(layer, efficiency);
75  EXPECT_FLOAT_EQ(m_muid->getExtEKLMEfficiencyValue(layer), efficiency);
76 
77  // Test the methods to count the hits
78  // 111111
79  // it means 6 hits in BKLM and 0 in EKLM
80  std::bitset<30> bitPattern(std::string("111111"));
81  unsigned int pattern = static_cast<unsigned int>(bitPattern.to_ulong());
82  m_muid->setHitLayerPattern(pattern);
83  EXPECT_EQ(m_muid->getHitLayerPattern(), pattern);
84  EXPECT_EQ(m_muid->getTotalBarrelHits(), 6);
85  EXPECT_EQ(m_muid->getTotalEndcapHits(), 0);
86  // 1000000000000000
87  // it means 0 hits in BKLM and 1 in EKLM
88  bitPattern = std::bitset<30>(std::string("1000000000000000"));
89  pattern = static_cast<unsigned int>(bitPattern.to_ulong());
90  m_muid->setHitLayerPattern(pattern);
91  EXPECT_EQ(m_muid->getHitLayerPattern(), pattern);
92  EXPECT_EQ(m_muid->getTotalBarrelHits(), 0);
93  EXPECT_EQ(m_muid->getTotalEndcapHits(), 1);
94  // 10101000000000111000
95  // it means 3 hits in BKLM and 3 in EKLM
96  bitPattern = std::bitset<30>(std::string("10101000000000111000"));
97  pattern = static_cast<unsigned int>(bitPattern.to_ulong());
98  m_muid->setHitLayerPattern(pattern);
99  EXPECT_EQ(m_muid->getHitLayerPattern(), pattern);
100  EXPECT_EQ(m_muid->getTotalBarrelHits(), 3);
101  EXPECT_EQ(m_muid->getTotalEndcapHits(), 3);
102  // 11111111111111111111111111111
103  // it means 15 hits in BKLM, 14 in EKLM and 1 "fake" hit
104  bitPattern = std::bitset<30>(std::string("11111111111111111111111111111"));
105  pattern = static_cast<unsigned int>(bitPattern.to_ulong());
106  m_muid->setHitLayerPattern(pattern);
107  EXPECT_EQ(m_muid->getHitLayerPattern(), pattern);
108  EXPECT_EQ(m_muid->getTotalBarrelHits(), 15);
109  EXPECT_EQ(m_muid->getTotalEndcapHits(), 14);
110  }
111 
113 }
Belle2::StoreArray::appendNew
T * appendNew()
Construct a new T object at the end of the array.
Definition: StoreArray.h:256
Belle2::KLMMuidLikelihoodTest::TearDown
void TearDown() override
Clear the DataStore.
Definition: KLMMuidLikelihoodTest.cc:46
Belle2::KLMMuidLikelihoodTest::SetUp
void SetUp() override
Register KLMMuidLikelihood in the DataStore.
Definition: KLMMuidLikelihoodTest.cc:37
Belle2::TEST_F
TEST_F(KLMMuidLikelihoodTest, KLMMuidLikelihood)
Test some setters and getters.
Definition: KLMMuidLikelihoodTest.cc:56
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::StoreArray
Accessor to arrays stored in the data store.
Definition: ECLMatchingPerformanceExpertModule.h:33
Belle2::KLMMuidLikelihood
Class to store the likelihoods from KLM with additional informations related to the extrapolation.
Definition: KLMMuidLikelihood.h:38
Belle2::KLMMuidLikelihoodTest
Test class for the KLMMuidLikelihood object.
Definition: KLMMuidLikelihoodTest.cc:33