11 #include <gtest/gtest.h>
15 #include <framework/geometry/B2Vector3.h>
17 #include "tracking/trackFindingVXD/trackQualityEstimators/QualityEstimatorTripletFit.h"
21 const static double allowed_chi2_deviation = 1
e-20;
24 namespace QualityEstimatorTests {
26 TEST(TripletFitTests, CircleChi2)
30 qualityEstimator.setMagneticFieldStrength(1.5);
42 std::vector<SpacePoint const*> hitlist;
44 hitlist.push_back(&spacePoint1);
45 hitlist.push_back(&spacePoint2);
46 hitlist.push_back(&spacePoint3);
49 auto result = qualityEstimator.estimateQualityAndProperties(hitlist);
51 ASSERT_TRUE(result.chiSquared);
52 ASSERT_NEAR(*(result.chiSquared), 0., allowed_chi2_deviation) <<
"1st perfect circle";
64 hitlist.push_back(&spacePoint1);
65 hitlist.push_back(&spacePoint2);
66 hitlist.push_back(&spacePoint3);
69 result = qualityEstimator.estimateQualityAndProperties(hitlist);
71 ASSERT_TRUE(result.chiSquared);
72 ASSERT_NEAR(*(result.chiSquared), 0., allowed_chi2_deviation) <<
"2nd perfect circle";
79 hitlist.push_back(&spacePoint1);
80 hitlist.push_back(&spacePoint2);
81 hitlist.push_back(&spacePoint3);
83 result = qualityEstimator.estimateQualityAndProperties(hitlist);
85 ASSERT_TRUE(*(result.chiSquared) > allowed_chi2_deviation) <<
"1st imperfect circle";
92 hitlist.push_back(&spacePoint1);
93 hitlist.push_back(&spacePoint2);
94 hitlist.push_back(&spacePoint3);
96 result = qualityEstimator.estimateQualityAndProperties(hitlist);
98 ASSERT_TRUE(result.chiSquared);
99 ASSERT_TRUE(*(result.chiSquared) > allowed_chi2_deviation) <<
"2nd imperfect circle";
102 TEST(TripletFitTests, CombinedCircleChi2)
106 qualityEstimator.setMagneticFieldStrength(1.5);
120 std::vector<SpacePoint const*> hitlist;
122 hitlist.push_back(&spacePoint1);
123 hitlist.push_back(&spacePoint2);
124 hitlist.push_back(&spacePoint3);
125 hitlist.push_back(&spacePoint4);
127 auto result = qualityEstimator.estimateQualityAndProperties(hitlist);
129 ASSERT_TRUE(result.chiSquared);
130 ASSERT_NEAR(*(result.chiSquared), 0., allowed_chi2_deviation) <<
"1st perfect combined circle";
138 hitlist.push_back(&spacePoint1);
139 hitlist.push_back(&spacePoint2);
140 hitlist.push_back(&spacePoint3);
141 hitlist.push_back(&spacePoint4);
143 result = qualityEstimator.estimateQualityAndProperties(hitlist);
145 ASSERT_TRUE(result.chiSquared);
146 ASSERT_TRUE(*(result.chiSquared) > allowed_chi2_deviation) <<
"Incompatible circle triplets";
153 qualityEstimator.setMagneticFieldStrength(1.5);
164 std::vector<SpacePoint const*> hitlist;
166 hitlist.push_back(&spacePoint1);
167 hitlist.push_back(&spacePoint2);
168 hitlist.push_back(&spacePoint3);
171 auto result = qualityEstimator.estimateQuality(hitlist);
172 auto resultObject = qualityEstimator.estimateQualityAndProperties(hitlist);
173 ASSERT_EQ(resultObject.qualityIndicator, result);
176 ASSERT_FALSE(resultObject.p);
178 ASSERT_TRUE(resultObject.chiSquared);
179 ASSERT_TRUE(resultObject.pt);
180 ASSERT_TRUE(resultObject.pmag);
181 ASSERT_TRUE(resultObject.curvatureSign);
186 result = qualityEstimator.estimateQuality(hitlist);
187 resultObject = qualityEstimator.estimateQualityAndProperties(hitlist);
188 ASSERT_EQ(result, resultObject.qualityIndicator);
191 ASSERT_FALSE(resultObject.chiSquared);
192 ASSERT_FALSE(resultObject.p);
193 ASSERT_FALSE(resultObject.pt);
194 ASSERT_FALSE(resultObject.pmag);
195 ASSERT_FALSE(resultObject.curvatureSign);