11 #include <gtest/gtest.h>
13 #include <tracking/spacePointCreation/SpacePoint.h>
14 #include <tracking/trackFindingVXD/filterMap/threeHitVariables/CircleCenterXY.h>
15 #include <tracking/trackFindingVXD/filterMap/fourHitVariables/DeltaPt.h>
16 #include <tracking/trackFindingVXD/filterMap/fourHitVariables/DeltaCircleRadius.h>
17 #include <tracking/trackFindingVXD/filterMap/fourHitVariables/DeltaDistCircleCenter.h>
18 #include <tracking/trackFindingVXD/filterTools/SelectionVariableHelper.h>
20 #include <tracking/trackFindingVXD/filterMap/filterFramework/Shortcuts.h>
22 #include <framework/geometry/B2Vector3.h>
24 #include <vxd/geometry/SensorInfoBase.h>
32 namespace VXDTFfourHitFilterTest {
45 VXD::SensorInfoBase sensorInfoBase(VXD::SensorInfoBase::PXD, aVxdID, 2.3, 4.2, 0.3, 2, 4, -1);
48 r1.SetAngles(45, 20, 30);
49 TGeoTranslation t1(globalX, globalY, globalZ);
50 TGeoCombiTrans c1(t1, r1);
51 TGeoHMatrix transform = c1;
52 sensorInfoBase.setTransformation(transform);
54 sensorInfoBase.setTransformation(transform,
true);
56 return sensorInfoBase;
62 SpacePoint provideSpacePointDummy(
double X,
double Y,
double Z)
67 PXDCluster aCluster =
PXDCluster(aVxdID, 0., 0., 0.1, 0.1, 0, 0, 1, 1, 1, 1, 1, 1);
75 double lastResult = 0.;
83 template<
class Var,
typename ... otherTypes>
84 static void notify(
const Var& filterType,
85 typename Var::variableType fResult,
88 B2INFO(
"ResultsObserver: Filter " << filterType.name() <<
" got result of " << fResult);
96 TEST_F(FourHitFilterTest, SpacePointCreation)
98 SpacePoint testSP = provideSpacePointDummy(1.2, 2.3, 4.2);
106 TEST_F(FourHitFilterTest, SelectionVariableName)
108 auto dDCircleCenter = DeltaDistCircleCenter<SpacePoint>();
109 EXPECT_EQ(
"DeltaDistCircleCenter" , dDCircleCenter.name());
110 auto dPt = DeltaPt<SpacePoint>();
111 EXPECT_EQ(
"DeltaPt" , dPt.name());
116 TEST_F(FourHitFilterTest, TestDeltaPtAndDeltaDistCircleCenter)
118 SpacePoint outerSP = provideSpacePointDummy(0, 0, 0.);
119 SpacePoint outerCenterSP = provideSpacePointDummy(-2, 0, 0.);
120 SpacePoint innerCenterSP = provideSpacePointDummy(0, 2, 0.);
121 SpacePoint innerSP = provideSpacePointDummy(2, 0, 0.);
123 B2Vector3<double> centerO_OC_IC = CircleCenterXY<SpacePoint>::value(outerSP, outerCenterSP, innerCenterSP);
124 B2Vector3<double> centerOC_IC_I = CircleCenterXY<SpacePoint>::value(outerCenterSP, innerCenterSP, innerSP);
125 EXPECT_FLOAT_EQ(-1., centerO_OC_IC[0]);
126 EXPECT_FLOAT_EQ(1., centerO_OC_IC[1]);
127 EXPECT_FLOAT_EQ(0., centerOC_IC_I[0]);
128 EXPECT_FLOAT_EQ(0., centerOC_IC_I[1]);
132 EXPECT_TRUE(filterDeltaDistCircleCenter.accept(outerSP, outerCenterSP, innerCenterSP, innerSP));
133 EXPECT_FLOAT_EQ(sqrt(2), lastResult);
136 EXPECT_TRUE(filteDeltaPt.accept(outerSP, outerCenterSP, innerCenterSP, innerSP));
137 EXPECT_FLOAT_EQ(0.00263349, lastResult);
141 EXPECT_TRUE(filteDeltaCircleRadius.accept(outerSP, outerCenterSP, innerCenterSP, innerSP));
142 EXPECT_FLOAT_EQ(-0.58578646, lastResult);