Belle II Software development
SVDClusterVariablesTests.cc
1/**************************************************************************
2 * basf2 (Belle II Analysis Software Framework) *
3 * Author: The Belle II Collaboration *
4 * *
5 * See git log for contributors and copyright holders. *
6 * This file is licensed under LGPL-3.0, see LICENSE.md. *
7 **************************************************************************/
8
9#include <variant>
10
11#include <gtest/gtest.h>
12
13#include <analysis/dataobjects/Particle.h>
14#include <mdst/dataobjects/Track.h>
15#include <tracking/dataobjects/RecoTrack.h>
16#include <svd/dataobjects/SVDCluster.h>
17#include <svd/dataobjects/SVDTrueHit.h>
18#include <vxd/dataobjects/VxdID.h>
19#include <genfit/TrackPoint.h>
20#include <genfit/AbsFitterInfo.h>
21
22#include <svd/variables/SVDClusterVariables.h>
23
24using namespace Belle2;
25
26namespace {
27
28 const Belle2::VxdID defaultVxdID = Belle2::VxdID("3.2.1");
29 const bool defaultIsU = true;
30 const double defaultPosition = 1.0;
31 const double defaultPositionErr = 0.01;
32 const double defaultClsTime = 20.0;
33 const double defaultClsTimeErr = 5.0;
34 const double defaultClsCharge = 23e3;
35 const double defaultSeedCharge = 5e3;
36 const int defaultClsSize = 2;
37 const double defaultClsSNR = 25.0;
38 const double defaultClsChi2 = 1.0;
39 const int defaultFirstFrame = 0;
40
41 auto dummySVDCluster = []() -> Belle2::SVDCluster
42 {
43 return Belle2::SVDCluster(
44 defaultVxdID, defaultIsU, defaultPosition, defaultPositionErr,
45 defaultClsTime, defaultClsTimeErr, defaultClsCharge, defaultSeedCharge,
46 defaultClsSize, defaultClsSNR, defaultClsChi2, defaultFirstFrame
47 );
48 }();
49}
50
51namespace Belle2::SVD {
52
54 class SVDVariableTest : public ::testing::Test {
55 public:
57 void SetUp() override
58 {
59 std::string storeArrayNameOfParticles = "Particles";
60 std::string storeArrayNameOfTracks = "Tracks";
61 std::string storeArrayNameOfRecoTracks = "RecoTracks";
62 std::string storeArrayNameOfPXDHits = "PXDClusters";
63 std::string storeArrayNameOfSVDHits = "SVDClusters";
64 std::string storeArrayNameOfCDCHits = "CDCClusters";
65 std::string storeArrayNameOfBKLMHits = "BKLMClusters";
66 std::string storeArrayNameOfEKLMHits = "EKLMClusters";
67 std::string storeArrayNameOfRecoHitInformations = "RecoHitInformations";
68 std::string storeArrayNameOfTrackFitResults = "TrackFitResults";
69
71 m_particles = StoreArray<Particle>(storeArrayNameOfParticles);
72 m_tracks = StoreArray<Track>(storeArrayNameOfTracks);
73 m_recoTracks = StoreArray<RecoTrack>(storeArrayNameOfRecoTracks);
74 m_svdClusters = StoreArray<SVDCluster>(storeArrayNameOfSVDHits);
75 m_recoHitInformations = StoreArray<RecoHitInformation>(storeArrayNameOfRecoHitInformations);
76 m_trackFitResults = StoreArray<TrackFitResult>(storeArrayNameOfTrackFitResults);
77
78 m_particles.registerInDataStore();
79 m_tracks.registerInDataStore();
80 m_recoTracks.registerInDataStore();
81 m_svdClusters.registerInDataStore();
82 m_recoHitInformations.registerInDataStore();
83 m_trackFitResults.registerInDataStore();
84
85 m_tracks.registerRelationTo(m_recoTracks);
86 m_recoTracks.registerRelationTo(m_recoHitInformations);
87 m_recoHitInformations.registerRelationTo(m_svdClusters);
88 m_svdClusters.registerRelationTo(m_recoTracks);
89
90 m_trackFitResults.appendNew(ROOT::Math::XYZVector(0.1, 0.1, 0.1), ROOT::Math::XYZVector(0.1, 0.0, 0.0),
91 TMatrixDSym(6), 1, Const::pion, 0.01, 1.5, 0, 0, 0);
92
93 m_tracks.appendNew(Track());
94 m_tracks[0]->setTrackFitResultIndex(Const::pion, 0);
95
97
98 m_recoTracks.appendNew(ROOT::Math::XYZVector(0.1, 0.1, 0.1), ROOT::Math::XYZVector(0.1, 0.0, 0.0), 1,
99 storeArrayNameOfPXDHits, storeArrayNameOfSVDHits, storeArrayNameOfCDCHits,
100 storeArrayNameOfBKLMHits, storeArrayNameOfEKLMHits, storeArrayNameOfRecoHitInformations);
101
102 m_tracks[0]->addRelationTo(m_recoTracks[0]);
103 m_svdClusters.appendNew(dummySVDCluster);
104 m_recoTracks[0]->addSVDHit(m_svdClusters[0], 0);
105 }
106
113 };
114
117 {
118 EXPECT_DOUBLE_EQ(Variable::SVDClusterCharge(m_particles[0], {0}), defaultClsCharge);
119 EXPECT_TRUE(std::isnan(Variable::SVDClusterCharge(nullptr, {0})));
120 EXPECT_TRUE(std::isnan(Variable::SVDClusterCharge(m_particles[0], {1})));
121 }
122
124 TEST_F(SVDVariableTest, SVDClusterSNR)
125 {
126 EXPECT_DOUBLE_EQ(Variable::SVDClusterSNR(m_particles[0], {0}), defaultClsSNR);
127 EXPECT_TRUE(std::isnan(Variable::SVDClusterSNR(nullptr, {0})));
128 EXPECT_TRUE(std::isnan(Variable::SVDClusterSNR(m_particles[0], {1})));
129 }
130
133 {
134 EXPECT_DOUBLE_EQ(Variable::SVDClusterTime(m_particles[0], {0}), defaultClsTime);
135 EXPECT_TRUE(std::isnan(Variable::SVDClusterTime(nullptr, {0})));
136 EXPECT_TRUE(std::isnan(Variable::SVDClusterTime(m_particles[0], {1})));
137 }
138
140 TEST_F(SVDVariableTest, SVDClusterSize)
141 {
142 EXPECT_EQ(Variable::SVDClusterSize(m_particles[0], {0}), defaultClsSize);
143 EXPECT_EQ(Variable::SVDClusterSize(nullptr, {0}), -1);
144 EXPECT_EQ(Variable::SVDClusterSize(m_particles[0], {1}), -1);
145 }
146
149 {
150 EXPECT_EQ(Variable::SVDLayer(m_particles[0], {0}), defaultVxdID.getLayerNumber());
151 EXPECT_EQ(Variable::SVDLayer(nullptr, {0}), -1);
152 EXPECT_EQ(Variable::SVDLayer(m_particles[0], {1}), -1);
153 }
154
157 {
158 EXPECT_EQ(Variable::SVDLadder(m_particles[0], {0}), defaultVxdID.getLadderNumber());
159 EXPECT_EQ(Variable::SVDLadder(nullptr, {0}), -1);
160 EXPECT_EQ(Variable::SVDLadder(m_particles[0], {1}), -1);
161 }
162
165 {
166 EXPECT_EQ(Variable::SVDSensor(m_particles[0], {0}), defaultVxdID.getSensorNumber());
167 EXPECT_EQ(Variable::SVDSensor(nullptr, {0}), -1);
168 EXPECT_EQ(Variable::SVDSensor(m_particles[0], {1}), -1);
169 }
170} // namespace Belle2::SVD
static const ChargedStable pion
charged pion particle
Definition Const.h:661
static DataStore & Instance()
Instance of singleton Store.
Definition DataStore.cc:53
void setInitializeActive(bool active)
Setter for m_initializeActive.
Definition DataStore.cc:93
Class to store reconstructed particles.
Definition Particle.h:76
The SVD Cluster class This class stores all information about reconstructed SVD clusters.
Definition SVDCluster.h:29
Abstract Class representing the SVD cluster charge.
Abstract Class representing the SVD cluster time.
Text fixture for SVD variables.
void SetUp() override
Set up test environment.
StoreArray< SVDCluster > m_svdClusters
StoreArray for SVDCluster objects.
StoreArray< TrackFitResult > m_trackFitResults
StoreArray for TrackFitResult objects.
StoreArray< Particle > m_particles
StoreArray for Particle objects.
StoreArray< Track > m_tracks
StoreArray for Track objects.
StoreArray< RecoTrack > m_recoTracks
StoreArray for RecoTrack objects.
StoreArray< RecoHitInformation > m_recoHitInformations
StoreArray for RecoHitInformation objects.
Accessor to arrays stored in the data store.
Definition StoreArray.h:113
Class that bundles various TrackFitResults.
Definition Track.h:25
Class to uniquely identify a any structure of the PXD and SVD.
Definition VxdID.h:33
Namespace to encapsulate code needed for simulation and reconstrucion of the SVD.
TEST_F(SVDVariableTest, SVDClusterCharge)
Test SVDClusterCharge.
Abstract base class for different kinds of events.