CbmRoot
Loading...
Searching...
No Matches
_GTestCbmMvdDigi.cxx
Go to the documentation of this file.
1/* Copyright (C) 2025 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Pierre-Alain Loizeau [committer] */
4
5#include "CbmMvdDigi.h"
6#include "CbmMvdRawDigi.h"
8#include "gtest/gtest-spi.h"
9#include "gtest/gtest.h"
10
11TEST(_GTestCbmMvdDigi, CheckDefaultConstructor)
12{
13 // Create object
14 CbmMvdDigi test;
15
16 compareMvdDigiDataMembers(test, 0, 0, 0, 0., 0., 0., 0., 0, -1, -1);
17
18 CbmMvdDigi* test1 = new CbmMvdDigi();
19
20 compareMvdDigiDataMembers(*test1, 0, 0, 0, 0., 0., 0., 0., 0, -1, -1);
21}
22
23TEST(_GTestCbmMvdDigi, CheckStandardConstructor)
24{
25 // Create object
26 CbmMvdDigi test(1, 2, 3, -1., 1.5, 1.6, 987654321., 111);
27
28 compareMvdDigiDataMembers(test, 1, 2, 3, -1., 1.5, 1.6, 987654321., 111, -1, -1);
29
30 CbmMvdDigi* test1 = new CbmMvdDigi(1, 2, 3, -1., 1.5, 1.6, 987654321., 111);
31
32 compareMvdDigiDataMembers(*test1, 1, 2, 3, -1., 1.5, 1.6, 987654321., 111, -1, -1);
33
34 // Test default values
35 CbmMvdDigi test2(1, 2, 3, -1., 1.5, 1.6);
36
37 compareMvdDigiDataMembers(test2, 1, 2, 3, -1., 1.5, 1.6, 0., 0, -1, -1);
38}
39
40TEST(_GTestCbmMvdDigi, CheckCopyConstructor)
41{
42 // Create object
43 CbmMvdDigi test(1, 2, 3, -1., 1.5, 1.6, 987654321., 111);
44
45 compareMvdDigiDataMembers(test, 1, 2, 3, -1., 1.5, 1.6, 987654321., 111, -1, -1);
46
47 // Create object by copy constructing
48 // test should be equal to test2 and
49 // test should not be changed
50 CbmMvdDigi test2{test};
51
52 compareMvdDigiDataMembers(test2, 1, 2, 3, -1., 1.5, 1.6, 987654321., 111, -1, -1);
53
54 // Test if the original object wasn't changed
55 compareMvdDigiDataMembers(test, 1, 2, 3, -1., 1.5, 1.6, 987654321., 111, -1, -1);
56}
57
58TEST(_GTestCbmMvdDigi, CheckAssignmentOperator)
59{
60
61 // Create object
62 CbmMvdDigi test(1, 2, 3, -1., 1.5, 1.6, 987654321., 111);
63
64 compareMvdDigiDataMembers(test, 1, 2, 3, -1., 1.5, 1.6, 987654321., 111, -1, -1);
65
66 // Create object by copy assignment
67 // test should be equal to test2 and
68 // test should not be changed
69 CbmMvdDigi test2;
70 test2 = test;
71
72 compareMvdDigiDataMembers(test2, 1, 2, 3, -1., 1.5, 1.6, 987654321., 111, -1, -1);
73
74 // Test if the original object wasn't changed
75 compareMvdDigiDataMembers(test, 1, 2, 3, -1., 1.5, 1.6, 987654321., 111, -1, -1);
76}
77
78TEST(_GTestCbmMvdDigi, CheckMoveConstructor)
79{
80 // Create object
81 CbmMvdDigi test(1, 2, 3, -1., 1.5, 1.6, 987654321., 111);
82
83 compareMvdDigiDataMembers(test, 1, 2, 3, -1., 1.5, 1.6, 987654321., 111, -1, -1);
84
85 // Create object by move constructing
86 CbmMvdDigi test2{std::move(test)};
87
88 compareMvdDigiDataMembers(test2, 1, 2, 3, -1., 1.5, 1.6, 987654321., 111, -1, -1);
89
90 // For objects with simple types move fall back to copy so
91 // the original object is kept unchanged
92 compareMvdDigiDataMembers(test, 1, 2, 3, -1., 1.5, 1.6, 987654321., 111, -1, -1);
93}
94
95TEST(_GTestCbmMvdDigi, CheckAssignmentMoveConstructor)
96{
97 // Create object
98 CbmMvdDigi test(1, 2, 3, -1., 1.5, 1.6, 987654321., 111);
99
100 compareMvdDigiDataMembers(test, 1, 2, 3, -1., 1.5, 1.6, 987654321., 111, -1, -1);
101
102 // Create object by move constructing
103 CbmMvdDigi test2{};
104 test2 = std::move(test);
105
106 compareMvdDigiDataMembers(test2, 1, 2, 3, -1., 1.5, 1.6, 987654321., 111, -1, -1);
107
108 // For objects with simple types move fall back to copy so
109 // the original object is kept unchanged
110 compareMvdDigiDataMembers(test, 1, 2, 3, -1., 1.5, 1.6, 987654321., 111, -1, -1);
111}
112
113
114TEST(_GTestCbmMvdDigi, CheckToString)
115{
116 // Create object
117 CbmMvdDigi test(1, 2, 3, -1., 1.5, 1.6, 987654321., 111);
118
119 compareMvdDigiDataMembers(test, 1, 2, 3, -1., 1.5, 1.6, 987654321., 111, -1, -1);
120
121 EXPECT_STREQ("", test.ToString().c_str());
122}
123
124TEST(_GTestCbmMvdDigi, CheckGetClassName)
125{
126 // Create object
127 CbmMvdDigi test(1, 2, 3, -1., 1.5, 1.6, 987654321., 111);
128
129 compareMvdDigiDataMembers(test, 1, 2, 3, -1., 1.5, 1.6, 987654321., 111, -1, -1);
130
131 EXPECT_STREQ("CbmMvdDigi", test.GetClassName());
132}
133
134TEST(_GTestCbmMvdDigi, CheckSetCharge)
135{
136 // Create object
137 CbmMvdDigi test(1, 2, 3, -1., 1.5, 1.6, 987654321., 111);
138
139 compareMvdDigiDataMembers(test, 1, 2, 3, -1., 1.5, 1.6, 987654321., 111, -1, -1);
140
141 test.SetCharge(45.);
142
143 compareMvdDigiDataMembers(test, 1, 2, 3, 45., 1.5, 1.6, 987654321., 111, -1, -1);
144}
145
146TEST(_GTestCbmMvdDigi, CheckSetAddress)
147{
148 // Create object
149 CbmMvdDigi test(1, 2, 3, -1., 1.5, 1.6, 987654321., 111);
150
151 // Initial address is CbmMvdAddress::GetAddressFromSensorNrAndPixelXY(1, 3, 2) = 0x00806011
152 compareMvdDigiDataMembers(test, 1, 2, 3, -1., 1.5, 1.6, 987654321., 111, -1, -1);
153
154 // Setting a new address with sensorNr = 10, pixelX = 20, pixelY = 30:
155 // CbmMvdAddress::GetAddressFromSensorNrAndPixelXY(10, 30, 20) = 0x0503c0a1
156 test.SetAddress(0x0503c0a1);
157
158 compareMvdDigiDataMembers(test, 10, 20, 30, -1., 1.5, 1.6, 987654321., 111, -1, -1);
159}
160
161TEST(_GTestCbmMvdDigi, CheckSetFlag)
162{
163 // Create object
164 CbmMvdDigi test(1, 2, 3, -1., 1.5, 1.6, 987654321., 111);
165
166 compareMvdDigiDataMembers(test, 1, 2, 3, -1., 1.5, 1.6, 987654321., 111, -1, -1);
167
168 test.SetFlag(45);
169
170 compareMvdDigiDataMembers(test, 1, 2, 3, -1., 1.5, 1.6, 987654321., 111, 45, -1);
171}
172
173TEST(_GTestCbmMvdDigi, CheckSetFrameNr)
174{
175 // Create object
176 CbmMvdDigi test(1, 2, 3, -1., 1.5, 1.6, 987654321., 111);
177
178 compareMvdDigiDataMembers(test, 1, 2, 3, -1., 1.5, 1.6, 987654321., 111, -1, -1);
179
180 test.SetFrameNr(45);
181
182 compareMvdDigiDataMembers(test, 1, 2, 3, -1., 1.5, 1.6, 987654321., 45, -1, -1);
183}
184
185TEST(_GTestCbmMvdDigi, CheckSetRefId)
186{
187 // Create object
188 CbmMvdDigi test(1, 2, 3, -1., 1.5, 1.6, 987654321., 111);
189
190 compareMvdDigiDataMembers(test, 1, 2, 3, -1., 1.5, 1.6, 987654321., 111, -1, -1);
191
192 test.SetRefId(45);
193
194 compareMvdDigiDataMembers(test, 1, 2, 3, -1., 1.5, 1.6, 987654321., 111, -1, 45);
195}
196
197TEST(_GTestCbmMvdDigi, CheckSetTime)
198{
199 // Create object
200 CbmMvdDigi test(1, 2, 3, -1., 1.5, 1.6, 987654321., 111);
201
202 compareMvdDigiDataMembers(test, 1, 2, 3, -1., 1.5, 1.6, 987654321., 111, -1, -1);
203
204 test.SetTime(12345678.);
205
206 compareMvdDigiDataMembers(test, 1, 2, 3, -1., 1.5, 1.6, 12345678., 111, -1, -1);
207}
208
209TEST(_GTestCbmMvdDigi, CheckDigiToRawDigiConversion)
210{
211 // Create object
212 float fPixelSizeX = 1.5;
213 float fPixelSizeY = 1.6;
214 CbmMvdDigi test(1, 2, 3, -1., fPixelSizeX, fPixelSizeY, 2412345678., 111);
215
216 compareMvdDigiDataMembers(test, 1, 2, 3, -1., fPixelSizeX, fPixelSizeY, 2412345678., 111, -1, -1);
217
218 // Conversion to MvdRawDigi
220
221 compareMvdRawDigiDataMembers(convRaw, ECbmModuleId::kMvd, 8413201, 2412345678, 111, 0); // ! FrameTime not assigned !
222
223 // Conversion back to MvdDigi using conversion constructor
224 CbmMvdDigi convBackDefault(convRaw);
225
226 compareMvdDigiDataMembers(convBackDefault, 1, 2, 3, 10000., 0.003024, 0.002688, 2412345678., 111, -1, -1);
227
228 CbmMvdDigi convBackPixelSz(convRaw, fPixelSizeX, fPixelSizeY);
229
230 compareMvdDigiDataMembers(convBackPixelSz, 1, 2, 3, 10000., fPixelSizeX, fPixelSizeY, 2412345678., 111, -1, -1);
231 convBackPixelSz.SetCharge(-1); // !!! Charge field if not conserved and hard-set to 10000 in the first conversion !!!
232 compareMvdDigis(test, convBackPixelSz);
233}
234
235TEST(_GTestCbmMvdDigi, CheckRawDigiToDigiConversion)
236{
237 // Create object
238 float fPixelSizeX = 1.5;
239 float fPixelSizeY = 1.6;
240
241 CbmMvdRawDigi test(0x6F1, 2412345678, 482469, 98765432142);
242
243 compareMvdRawDigiDataMembers(test, ECbmModuleId::kMvd, 0x6F1, 2412345678, 482469, 98765432142);
244
245 // Conversion to MvdDigi using conversion constructor
246 CbmMvdDigi convDefault(test);
247
248 compareMvdDigiDataMembers(convDefault, 111, 0, 0, 10000., 0.003024, 0.002688, 2412345678., 482469, -1, -1);
249
250 CbmMvdDigi convPixelSz(test, fPixelSizeX, fPixelSizeY);
251
252 compareMvdDigiDataMembers(convPixelSz, 111, 0, 0, 10000., fPixelSizeX, fPixelSizeY, 2412345678., 482469, -1, -1);
253
254 // Conversion back to MvdRawDigi => FrameTime not assigned as not present in CbmMvdDigi
255 CbmMvdRawDigi convBackDefault = CbmMvdDigi::ConvertToRawDigi(convDefault);
256
257 compareMvdRawDigiDataMembers(convBackDefault, ECbmModuleId::kMvd, 0x6F1, 2412345678, 482469, 0);
258 compareMvdRawDigisConvBack(test, convBackDefault);
259
260 CbmMvdRawDigi convBackPixelSz = CbmMvdDigi::ConvertToRawDigi(convPixelSz);
261
262 compareMvdRawDigiDataMembers(convBackPixelSz, ECbmModuleId::kMvd, 0x6F1, 2412345678, 482469, 0);
263 compareMvdRawDigisConvBack(test, convBackPixelSz);
264}
@ kMvd
Micro-Vertex Detector.
Definition CbmDefs.h:47
TEST(_GTestCbmMvdDigi, CheckDefaultConstructor)
void SetTime(double time)
Definition CbmMvdDigi.h:113
void SetCharge(float charge)
Definition CbmMvdDigi.h:107
void SetFlag(int32_t flag)
Definition CbmMvdDigi.h:110
void SetFrameNr(int32_t frame)
Definition CbmMvdDigi.h:111
static const char * GetClassName()
Definition CbmMvdDigi.h:68
static CbmMvdRawDigi ConvertToRawDigi(const CbmMvdDigi &rhs)
void SetAddress(uint32_t address)
Definition CbmMvdDigi.h:108
std::string ToString() const
Definition CbmMvdDigi.h:95
void SetRefId(int32_t refId)
Definition CbmMvdDigi.h:112
void compareMvdDigiDataMembers(CbmMvdDigi &test, int32_t iStation, int32_t iChannelNrX, int32_t iChannelNrY, float charge, float pixelSizeX, float pixelSizeY, double time, int32_t frame, int32_t flag, int32_t refId)
void compareMvdDigis(CbmMvdDigi &testA, CbmMvdDigi &testB)
void compareMvdRawDigiDataMembers(CbmMvdRawDigi &test, ECbmModuleId systemid, uint32_t address, uint32_t time, uint32_t frame, uint64_t frameTime, bool compFrameTime=true)
void compareMvdRawDigisConvBack(CbmMvdRawDigi &testA, CbmMvdRawDigi &testB)