8#include <tracking/trackFindingCDC/findlets/minimal/TrackSZFitter.h>
10#include <tracking/trackingUtilities/eventdata/tracks/CDCTrack.h>
11#include <tracking/trackFindingCDC/fitting/CDCSZFitter.h>
12#include <tracking/trackFindingCDC/fitting/CDCAxialStereoFusion.h>
14#include <tracking/trackingUtilities/eventdata/segments/CDCSegment2D.h>
16#include <tracking/trackingUtilities/eventdata/hits/CDCRecoHit3D.h>
17#include <tracking/trackingUtilities/eventdata/hits/CDCRecoHit2D.h>
19#include <tracking/trackingUtilities/eventdata/trajectories/CDCTrajectory3D.h>
20#include <tracking/trackingUtilities/eventdata/trajectories/CDCTrajectory2D.h>
21#include <tracking/trackingUtilities/eventdata/trajectories/CDCTrajectorySZ.h>
23#include <tracking/trackingUtilities/geometry/UncertainHelix.h>
24#include <tracking/trackingUtilities/geometry/Vector2D.h>
29using namespace TrackFindingCDC;
30using namespace TrackingUtilities;
34 return "Use an SZFitter to create the 3D trajectory out of the 2D one.";
43 track.shiftToPositiveArcLengths2D();
44 track.sortByArcLength2D();
46 CDCTrajectory2D originalTrajectory2D = track.getStartTrajectory3D().getTrajectory2D();
50 CDCTrajectory3D preliminaryTrajectory3D{originalTrajectory2D, szTrajectory};
51 track.setStartTrajectory3D(preliminaryTrajectory3D);
58 if (recoHit3D.isAxial()) {
59 axialSegment2D.push_back(recoHit3D.getRecoHit2D());
61 stereoSegment2D.push_back(recoHit3D.getRecoHit2D());
63 if ((axialSegment2D.size() > 6) and (stereoSegment2D.size() > 6))
break;
66 if (not((axialSegment2D.size() > 6) and (stereoSegment2D.size() > 6)))
continue;
73 UncertainHelix preliminaryUncertainHelix = preliminaryTrajectory3D.getLocalHelix();
76 preliminaryUncertainHelix.setHelixCovariance(uncertainHelix.helixCovariance());
77 preliminaryUncertainHelix.setChi2(uncertainHelix.chi2());
78 preliminaryUncertainHelix.setNDF(uncertainHelix.ndf());
79 preliminaryTrajectory3D.setLocalHelix(preliminaryUncertainHelix);
81 track.setStartTrajectory3D(preliminaryTrajectory3D);
Utility class implementing the Kalmanesk combination of to two dimensional trajectories to one three ...
void reconstructFuseTrajectories(const TrackingUtilities::CDCSegmentPair &segmentPair)
Combine the two trajectories of the segments in the pair and assign the resulting three dimensional t...
Class implementing the z coordinate over travel distance line fit.
TrackingUtilities::CDCTrajectorySZ fitWithStereoHits(const TrackingUtilities::CDCTrack &track) const
Returns the fitted sz trajectory of the track with the z-information of all stereo hits of the number...
static const CDCSZFitter & getFitter()
Getter for a standard sz line fitter instance.
void apply(std::vector< TrackingUtilities::CDCTrack > &tracks) final
Fit the tracks.
std::string getDescription() final
Short description of the findlet.
Class representing a three dimensional reconstructed hit.
A reconstructed sequence of two dimensional hits in one super layer.
Class representing a sequence of three dimensional reconstructed hits.
Particle trajectory as it is seen in xy projection represented as a circle.
const Vector2D & getLocalOrigin() const
Getter for the origin of the local coordinate system.
Particle full three dimensional trajectory.
const UncertainHelix & getLocalHelix() const
Getter for the helix in local coordinates.
double setLocalOrigin(const Vector3D &localOrigin)
Setter for the origin of the local coordinate system.
Linear trajectory in sz space.
A two dimensional vector which is equipped with functions for correct handling of orientation relate...
This class represents an ideal helix in perigee parameterization including the covariance matrix of t...
Abstract base class for different kinds of events.