11 #include <tracking/trackFindingCDC/eventdata/trajectories/CDCTrajectory3D.h>
13 #include <genfit/TrackCand.h>
15 #include <TMatrixDSym.h>
17 #include <gtest/gtest.h>
21 using namespace TrackFindingCDC;
23 TEST(TrackFindingCDCTest, eventdata_trajectories_CDCTrajectory3D_constructorPosMomCharge)
28 ESign newChargeSign = ESign::c_Plus;
31 CDCTrajectory3D trajectory(newPos3D, newTime, newMom3D, newChargeSign, bZ);;
33 Vector3D mom3D = trajectory.getMom3DAtSupport(bZ);
34 Vector3D pos3D = trajectory.getSupport();
35 ESign chargeSign = trajectory.getChargeSign();
38 EXPECT_NEAR(newMom3D.x(), mom3D.x(), 10e-7);
39 EXPECT_NEAR(newMom3D.y(), mom3D.y(), 10e-7);
40 EXPECT_NEAR(newMom3D.z(), mom3D.z(), 10e-7);
42 EXPECT_NEAR(newPos3D.x(), pos3D.x(), 10e-7);
43 EXPECT_NEAR(newPos3D.y(), pos3D.y(), 10e-7);
44 EXPECT_NEAR(newPos3D.z(), pos3D.z(), 10e-7);
46 EXPECT_NEAR(newChargeSign, chargeSign, 10e-7);
51 TEST(TrackFindingCDCTest, CDCTrajectory3D_clear)
56 ESign newChargeSign = ESign::c_Plus;
58 CDCTrajectory3D trajectory3D(newPos3D, newTime, newMom3D, newChargeSign);
60 Helix helix = uncertainHelix;
62 PerigeeCircle perigeeCircle = helix.circleXY();
63 SZLine szLine = helix.szLine();
66 EXPECT_TRUE(trajectory3D.isInvalid());
67 EXPECT_FALSE(trajectory3D.isFitted());
69 uncertainHelix.invalidate();
70 EXPECT_TRUE(uncertainHelix->isInvalid());
73 EXPECT_TRUE(helix.isInvalid());
75 perigeeCircle.invalidate();
76 EXPECT_TRUE(perigeeCircle.isInvalid());
79 EXPECT_TRUE(szLine.isInvalid());
83 TEST(TrackFindingCDCTest, CDCTrajectory3D_GFTrackRoundTrip)
85 Vector3D expectedMomentum(1.0, 0.0, 0.0);
86 Vector3D expectedPosition(0.0, 1.0, 0.0);
87 ESign expectedCharge = ESign::c_Plus;
95 TMatrixDSym expectedCov6(6);
97 expectedCov6(0, 0) = 0;
98 expectedCov6(1, 1) = 2;
99 expectedCov6(2, 2) = 3;
100 expectedCov6(3, 3) = 4;
101 expectedCov6(4, 4) = 5;
102 expectedCov6(5, 5) = 6;
106 CDCTrajectory3D trajectory3D(expectedGFTrackCand, bZ);
109 trajectory3D.fillInto(gfTrackCand, bZ);
117 EXPECT_NEAR(expectedPosition.x(), position.x(), 10e-7);
118 EXPECT_NEAR(expectedPosition.y(), position.y(), 10e-7);
119 EXPECT_NEAR(expectedPosition.z(), position.z(), 10e-7);
121 EXPECT_NEAR(expectedMomentum.x(), momentum.x(), 10e-7);
122 EXPECT_NEAR(expectedMomentum.y(), momentum.y(), 10e-7);
123 EXPECT_NEAR(expectedMomentum.z(), momentum.z(), 10e-7);
125 EXPECT_EQ(expectedCharge, charge);
126 for (
int i = 0; i < 6; ++i) {
127 for (
int j = 0; j < 6; ++j) {
128 EXPECT_NEAR(expectedCov6(i, j), cov6(i, j), 10e-7);