10 #include <tracking/ckf/svd/filters/states/SimpleSVDStateFilter.h>
12 #include <tracking/trackFindingCDC/eventdata/trajectories/CDCTrajectory3D.h>
13 #include <tracking/trackFindingCDC/eventdata/trajectories/CDCTrajectory2D.h>
14 #include <tracking/trackFindingCDC/eventdata/trajectories/CDCTrajectorySZ.h>
15 #include <tracking/trackFindingCDC/geometry/Vector3D.h>
17 #include <tracking/trackFindingCDC/eventdata/trajectories/CDCBFieldUtil.h>
18 #include <tracking/spacePointCreation/SpacePoint.h>
19 #include <tracking/dataobjects/RecoTrack.h>
22 using namespace TrackFindingCDC;
28 const double pT = momentum.xy().norm();
31 }
else if (pT > 0.2) {
50 const std::vector<TrackFindingCDC::WithWeight<const CKFToSVDState*>>& previousStates = pair.first;
53 const auto* spacePoint = currentState->
getHit();
59 firstMeasurement = previousStates.back()->getMeasuredStateOnPlane();
65 const Vector3D hitPosition =
static_cast<Vector3D>(spacePoint->getPosition());
67 const bool sameHemisphere = fabs(position.phi() - hitPosition.phi()) < TMath::PiOver2();
68 if (not sameHemisphere) {
78 const RecoTrack* cdcTrack = previousStates.front()->getSeed();
80 B2ASSERT(
"A path without a seed?", cdcTrack);
82 const CDCTrajectory3D trajectory(position, 0, momentum, cdcTrack->
getChargeSeed(), m_cachedBField);
84 const double arcLength = trajectory.calcArcLength2D(hitPosition);
85 const Vector2D& trackPositionAtHit2D = trajectory.getTrajectory2D().getPos2DAtArcLength2D(arcLength);
86 const double trackPositionAtHitZ = trajectory.getTrajectorySZ().mapSToZ(arcLength);
87 const Vector3D trackPositionAtHit(trackPositionAtHit2D, trackPositionAtHitZ);
88 const Vector3D differenceHelix = trackPositionAtHit - hitPosition;
90 valueToCheck = differenceHelix.norm();
91 maximumValues = &m_param_maximumHelixDistance;
94 const double residual = m_kalmanStepper.calculateResidual(firstMeasurement, *currentState);
95 valueToCheck = residual;
97 maximumValues = &m_param_maximumResidual2;
99 maximumValues = &m_param_maximumResidual;
104 if (valueToCheck > (*maximumValues)[layer - 3][getPTRange(momentum)]) {