PAASS
Software suite to Acquire and Analyze Data from Pixie16
unittest-WalkCorrector.cpp
Go to the documentation of this file.
1 #include <iostream>
6 
7 #include <cmath>
8 
9 #include <UnitTest++.h>
10 
11 #include "Identifier.hpp"
12 #include "WalkCorrector.hpp"
13 
14 using namespace std;
15 
16 TEST_FIXTURE(WalkCorrector, Test_Model_None) {
17  CHECK(Model_None() == 0.0);
18 }
19 
20 TEST_FIXTURE(WalkCorrector, Test_ModelA) {
21  vector<double> par = {0.5,2.1,3.7,0.4,0.1};
22  double raw = 20.3;
23  double expected = par[0] + par[1] / (par[2] + raw) +
24  par[3] * exp(-raw / par[4]);
25  double result = Model_A(par, raw);
26  CHECK(result == expected);
27 }
28 
29 TEST_FIXTURE(WalkCorrector, Test_Model_B1) {
30  vector<double> par = {0.5,2.1,3.7,0.4};
31  double raw = 20.3;
32  double expected = par[0] + (par[1] + par[2] / (raw + 1.0)) *
33  exp(-raw / par[3]);
34  double result = Model_B1(par, raw);
35  CHECK(result == expected);
36 }
37 
38 TEST_FIXTURE(WalkCorrector, Test_Model_B2) {
39  vector<double> par = {0.5,2.1,3.7};
40  double raw = 20.3;
41  double expected = par[0] + par[1] * exp(-raw / par[2]);
42  double result = Model_B2(par, raw);
43  CHECK(result == expected);
44 }
45 
46 TEST_FIXTURE(WalkCorrector, Test_Model_VS_Low) {
47  vector<double> par = {0.5,2.1,3.7};
48  double raw = 20.3;
49  double expected = 1.09099*log(raw)-7.76641;
50  double result = Model_VS(par,raw);
51  CHECK(result == expected);
52 }
53 
54 TEST_FIXTURE(WalkCorrector, Test_Model_VS_High) {
55  vector<double> par = {0.5,2.1,3.7};
56  double raw = 4000;
57  double expected = 0.0;
58  double result = Model_VS(par,raw);
59  CHECK(result == expected);
60 }
61 
62 TEST_FIXTURE(WalkCorrector, Test_Model_VS) {
63  vector<double> par = {0.5,2.1,3.7};
64  double raw = 300.;
65  double expected = -(9.13743e-12)*pow(raw,3.) + (1.9485e-7)*pow(raw,2.)
66  -0.000163286*raw-2.13918;
67  double result = Model_VS(par,raw);
68  CHECK(result == expected);
69 }
70 
71 TEST_FIXTURE(WalkCorrector, Test_Model_VB) {
72  vector<double> par = {0.5,2.1,3.7};
73  double raw = 300.;
74  double expected = -(1.07908*log10(raw)-8.27739);
75  double result = Model_VB(par,raw);
76  CHECK(result == expected);
77 }
78 
79 TEST_FIXTURE(WalkCorrector, Test_Model_VD) {
80  vector<double> par = {0.5,2.1,3.7};
81  double raw = 300.;
82  double expected = 92.7907602830327 * exp(-raw/186091.225414275) +
83  0.59140785215161 * exp(raw/2068.14618331387) -
84  95.5388835298589;
85  double result = Model_VD(par,raw);
86  CHECK(result == expected);
87 }
88 
89 TEST_FIXTURE(WalkCorrector, Test_GetCorrection) {
91  Identifier id("unit", "test", 3);
92  double min = 0.0;
93  double max = 1000.;
94  vector<double> par = {0.5,2.1,3.7,0.4,0.1};
95  double raw = 20.3;
96  string model = "A";
97  double expected = par[0] + par[1] / (par[2] + raw) +
98  par[3] * exp(-raw / par[4]);
99  AddChannel(id, "A", min, max, par);
100  CHECK_EQUAL(expected, GetCorrection(id, raw));
101 }
102 
103 int main(int argv, char* argc[]) {
104  return(UnitTest::RunAllTests());
105 }
Channel identification.
Definition: Identifier.hpp:23
int main(int argv, char *argc[])
STL namespace.
TEST_FIXTURE(WalkCorrector, Test_Model_None)
A Class to handle walk corrections for channels.
Class to correct channels for walk in the onboard filters.
Defines identifying information for channels.