1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
#include <cppunit/extensions/HelperMacros.h>
#include "DataFormats/TrackReco/interface/Track.h"
class testTrack : public CppUnit::TestFixture {
CPPUNIT_TEST_SUITE(testTrack);
CPPUNIT_TEST(checkAll);
CPPUNIT_TEST_SUITE_END();
public:
void setUp() {}
void tearDown() {}
void checkAll();
};
CPPUNIT_TEST_SUITE_REGISTRATION(testTrack);
void testTrack::checkAll() {
const double chi2 = 20.0;
const int ndof = 10;
reco::Track::Point v(1, 2, 3);
reco::Track::Vector p(10.1, 20.2, 30.3);
double e[] = {1.1, 1.2, 2.2, 1.3, 2.3, 3.3, 1.4, 2.4, 3.4, 4.4, 1.5, 2.5, 3.5, 4.5, 5.5};
reco::TrackBase::CovarianceMatrix cov(e, e + 15);
reco::Track t(chi2, ndof, v, p, +1, cov);
CPPUNIT_ASSERT(t.chi2() == chi2);
CPPUNIT_ASSERT(t.ndof() == ndof);
CPPUNIT_ASSERT(t.normalizedChi2() == chi2 / ndof);
CPPUNIT_ASSERT(t.vertex() == v);
CPPUNIT_ASSERT(t.momentum() == p);
//CPPUNIT_ASSERT( t.covariance() == cov );
int k = 0;
CPPUNIT_ASSERT_DOUBLES_EQUAL(cov(0, 0), e[k++], 1e-6);
CPPUNIT_ASSERT_DOUBLES_EQUAL(cov(1, 0), e[k++], 1e-6);
CPPUNIT_ASSERT_DOUBLES_EQUAL(cov(1, 1), e[k++], 1e-6);
CPPUNIT_ASSERT_DOUBLES_EQUAL(cov(2, 0), e[k++], 1e-6);
CPPUNIT_ASSERT_DOUBLES_EQUAL(cov(2, 1), e[k++], 1e-6);
CPPUNIT_ASSERT_DOUBLES_EQUAL(cov(2, 2), e[k++], 1e-6);
CPPUNIT_ASSERT_DOUBLES_EQUAL(cov(3, 0), e[k++], 1e-6);
CPPUNIT_ASSERT_DOUBLES_EQUAL(cov(3, 1), e[k++], 1e-6);
CPPUNIT_ASSERT_DOUBLES_EQUAL(cov(3, 2), e[k++], 1e-6);
CPPUNIT_ASSERT_DOUBLES_EQUAL(cov(3, 3), e[k++], 1e-6);
CPPUNIT_ASSERT_DOUBLES_EQUAL(cov(4, 0), e[k++], 1e-6);
CPPUNIT_ASSERT_DOUBLES_EQUAL(cov(4, 1), e[k++], 1e-6);
CPPUNIT_ASSERT_DOUBLES_EQUAL(cov(4, 2), e[k++], 1e-6);
CPPUNIT_ASSERT_DOUBLES_EQUAL(cov(4, 3), e[k++], 1e-6);
CPPUNIT_ASSERT_DOUBLES_EQUAL(cov(4, 4), e[k++], 1e-6);
CPPUNIT_ASSERT_DOUBLES_EQUAL(t.covariance(0, 0), cov(0, 0), 1e-6);
CPPUNIT_ASSERT_DOUBLES_EQUAL(t.covariance(0, 1), cov(0, 1), 1e-6);
CPPUNIT_ASSERT_DOUBLES_EQUAL(t.covariance(0, 2), cov(0, 2), 1e-6);
CPPUNIT_ASSERT_DOUBLES_EQUAL(t.covariance(0, 3), cov(0, 3), 1e-6);
CPPUNIT_ASSERT_DOUBLES_EQUAL(t.covariance(0, 4), cov(0, 4), 1e-6);
CPPUNIT_ASSERT_DOUBLES_EQUAL(t.covariance(1, 1), cov(1, 1), 1e-6);
CPPUNIT_ASSERT_DOUBLES_EQUAL(t.covariance(1, 2), cov(1, 2), 1e-6);
CPPUNIT_ASSERT_DOUBLES_EQUAL(t.covariance(1, 3), cov(1, 3), 1e-6);
CPPUNIT_ASSERT_DOUBLES_EQUAL(t.covariance(1, 4), cov(1, 4), 1e-6);
CPPUNIT_ASSERT_DOUBLES_EQUAL(t.covariance(2, 2), cov(2, 2), 1e-6);
CPPUNIT_ASSERT_DOUBLES_EQUAL(t.covariance(2, 3), cov(2, 3), 1e-6);
CPPUNIT_ASSERT_DOUBLES_EQUAL(t.covariance(2, 4), cov(2, 4), 1e-6);
CPPUNIT_ASSERT_DOUBLES_EQUAL(t.covariance(3, 3), cov(3, 3), 1e-6);
CPPUNIT_ASSERT_DOUBLES_EQUAL(t.covariance(3, 4), cov(3, 4), 1e-6);
CPPUNIT_ASSERT_DOUBLES_EQUAL(t.covariance(4, 4), cov(4, 4), 1e-6);
auto qual = reco::TrackBase::qualityByName("highPurity");
CPPUNIT_ASSERT(qual == reco::TrackBase::highPurity);
t.setQuality(reco::TrackBase::loose);
CPPUNIT_ASSERT(t.quality(reco::TrackBase::loose) == true);
CPPUNIT_ASSERT(t.quality(reco::TrackBase::highPurity) == false);
CPPUNIT_ASSERT(t.quality(reco::TrackBase::confirmed) == false);
CPPUNIT_ASSERT(t.quality(reco::TrackBase::goodIterative) == false);
t.setQuality(reco::TrackBase::highPurity);
CPPUNIT_ASSERT(t.quality(reco::TrackBase::loose) == true);
CPPUNIT_ASSERT(t.quality(reco::TrackBase::highPurity) == true);
CPPUNIT_ASSERT(t.quality(reco::TrackBase::confirmed) == false);
CPPUNIT_ASSERT(t.quality(reco::TrackBase::goodIterative) == true);
t.setQuality(reco::TrackBase::confirmed);
CPPUNIT_ASSERT(t.quality(reco::TrackBase::loose) == true);
CPPUNIT_ASSERT(t.quality(reco::TrackBase::highPurity) == true);
CPPUNIT_ASSERT(t.quality(reco::TrackBase::confirmed) == true);
CPPUNIT_ASSERT(t.quality(reco::TrackBase::goodIterative) == true);
t.setQuality(reco::TrackBase::undefQuality);
CPPUNIT_ASSERT(t.quality(reco::TrackBase::loose) == false);
CPPUNIT_ASSERT(t.quality(reco::TrackBase::highPurity) == false);
CPPUNIT_ASSERT(t.quality(reco::TrackBase::confirmed) == false);
CPPUNIT_ASSERT(t.quality(reco::TrackBase::goodIterative) == false);
t.setQuality(reco::TrackBase::loose);
t.setQuality(reco::TrackBase::confirmed);
CPPUNIT_ASSERT(t.quality(reco::TrackBase::loose) == true);
CPPUNIT_ASSERT(t.quality(reco::TrackBase::highPurity) == false);
CPPUNIT_ASSERT(t.quality(reco::TrackBase::confirmed) == true);
CPPUNIT_ASSERT(t.quality(reco::TrackBase::goodIterative) == false);
reco::TrackBase::AlgoMask am;
t.setAlgorithm(reco::TrackBase::ctf);
am.set(reco::TrackBase::ctf);
CPPUNIT_ASSERT(t.algo() == reco::TrackBase::ctf);
CPPUNIT_ASSERT(t.algoMask() == am);
am.set(reco::TrackBase::cosmics);
t.setOriginalAlgorithm(reco::TrackBase::cosmics);
CPPUNIT_ASSERT(t.algo() == reco::TrackBase::ctf);
CPPUNIT_ASSERT(t.originalAlgo() == reco::TrackBase::cosmics);
CPPUNIT_ASSERT(t.algoMask() == am);
}
|