Belle II Software  release-05-01-25
CDCTrajectory2D.test.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2014 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Oliver Frost <oliver.frost@desy.de> *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 #include <tracking/trackFindingCDC/eventdata/trajectories/CDCTrajectory2D.h>
11 
12 #include <tracking/trackFindingCDC/topology/WireLine.h>
13 
14 #include <framework/logging/Logger.h>
15 
16 #include <gtest/gtest.h>
17 
18 using namespace Belle2;
19 using namespace TrackFindingCDC;
20 
21 
22 TEST(TrackFindingCDCTest, eventdata_trajectories_CDCTrajectory2D_constructorPosMomCharge)
23 {
24  Vector2D newMom2D(1.0, 2.0);
25  Vector2D newPos2D(1.0, 2.0);
26  double newTime = 0.0;
27  ESign newChargeSign = ESign::c_Plus;
28  double bZ = 2.0;
29 
30  CDCTrajectory2D trajectory(newPos2D, newTime, newMom2D, newChargeSign, bZ);
31 
32  Vector2D mom2D = trajectory.getMom2DAtSupport(bZ);
33  Vector2D pos2D = trajectory.getSupport();
34  ESign chargeSign = trajectory.getChargeSign();
35 
36  EXPECT_NEAR(newMom2D.x(), mom2D.x(), 10e-7);
37  EXPECT_NEAR(newMom2D.y(), mom2D.y(), 10e-7);
38 
39  EXPECT_NEAR(newPos2D.x(), pos2D.x(), 10e-7);
40  EXPECT_NEAR(newPos2D.y(), pos2D.y(), 10e-7);
41 
42  EXPECT_NEAR(newChargeSign, chargeSign, 10e-7);
43 }
44 
45 
46 TEST(TrackFindingCDCTest, eventdata_trajectories_CDCTrajectory2D_reconstruct)
47 {
48  Vector3D forward(-1.0, 1.0, 10.0);
49  Vector3D backward(1.0, 1.0, -10.0);
50  WireLine wireLine(forward, backward, 0);
51 
52  double localPhi0 = M_PI / 3;
53  double localCurv = -2.0;
54  double localImpact = 0.0;
55  UncertainPerigeeCircle localPerigeeCircle(localCurv, localPhi0, localImpact);
56  Vector3D localOrigin(0.5, 1, -5);
57 
58  Vector3D positionOnWire = wireLine.nominalPos3DAtZ(localOrigin.z());
59  EXPECT_NEAR(localOrigin.x(), positionOnWire.x(), 10e-7);
60  EXPECT_NEAR(localOrigin.y(), positionOnWire.y(), 10e-7);
61  EXPECT_NEAR(localOrigin.z(), positionOnWire.z(), 10e-7);
62 
63  CDCTrajectory2D trajectory2D(localOrigin.xy(), localPerigeeCircle);
64  double arcLength2D = trajectory2D.setLocalOrigin(Vector2D(0.0, 0.0));
65 
66  // Check that the old origin is still on the line
67  double distance = trajectory2D.getDist2D(localOrigin.xy());
68  EXPECT_NEAR(0, distance, 10e-7);
69 
70  // Extrapolate back to the local origin
71  Vector2D extrapolation2D = trajectory2D.getPos2DAtArcLength2D(-arcLength2D);
72  EXPECT_NEAR(localOrigin.x(), extrapolation2D.x(), 10e-7);
73  EXPECT_NEAR(localOrigin.y(), extrapolation2D.y(), 10e-7);
74 
75  Vector3D recoPos3D = trajectory2D.reconstruct3D(wireLine);
76  B2INFO(trajectory2D);
77  B2INFO(recoPos3D);
78 
79  EXPECT_NEAR(localOrigin.x(), recoPos3D.x(), 10e-7);
80  EXPECT_NEAR(localOrigin.y(), recoPos3D.y(), 10e-7);
81  EXPECT_NEAR(localOrigin.z(), recoPos3D.z(), 10e-7);
82 }
Belle2::Vector3D
HepGeom::Vector3D< double > Vector3D
3D Vector
Definition: Cell.h:35
Belle2::TrackFindingCDC::ESignUtil::ESign
ESign
Enumeration for the distinct sign values of floating point variables.
Definition: ESign.h:37
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TEST
TEST(TestgetDetectorRegion, TestgetDetectorRegion)
Test Constructors.
Definition: utilityFunctions.cc:18