8#include <tracking/trackFindingCDC/filters/segmentTriple/SimpleSegmentTripleFilter.h>
10#include <tracking/trackFindingCDC/eventdata/tracks/CDCSegmentTriple.h>
11#include <tracking/trackFindingCDC/eventdata/segments/CDCSegment3D.h>
12#include <tracking/trackFindingCDC/eventdata/segments/CDCSegment2D.h>
14#include <tracking/trackFindingCDC/eventdata/trajectories/CDCTrajectorySZ.h>
16#include <tracking/trackFindingCDC/topology/CDCWire.h>
18#include <framework/logging/Logger.h>
21using namespace TrackFindingCDC;
29 assert(ptrStartSegment);
30 assert(ptrMiddleSegment);
31 assert(ptrEndSegment);
37 const double toleranceFraction = 0.0;
59 if (not agrees)
return NAN;
70 if (fbInfo != EForwardBackward::c_Forward)
return NAN;
76 if (not reconstructedMiddle.back().isInCellZBounds(toleranceFraction)) {
77 B2DEBUG(25,
" RecoHit out of CDC");
87 Weight result = startSegment.size() + middleSegment.size() + endSegment.size();
CDCTrajectory2D fit(const CDCObservations2D &observations2D) const
Fits a collection of observation drift circles.
Class representing a two dimensional reconstructed hit in the central drift chamber.
Vector3D reconstruct3D(const CDCTrajectory2D &trajectory2D, const double z=0) const
Reconstruct the three dimensional position (especially of stereo hits) by determining the z coordinat...
const CDCWire & getWire() const
Getter for the wire the reconstructed hit associated to.
static CDCRecoHit3D reconstruct(const CDCRecoHit2D &recoHit2D, const CDCTrajectory2D &trajectory2D)
Reconstructs the three dimensional hit from the two dimensional and the two dimensional trajectory.
void update(const CDCSegmentPair &segmentPair) const
Updates the trajectory of the axial stereo segment pair inplace.
A reconstructed sequence of two dimensional hits in one super layer.
A segment consisting of three dimensional reconstructed hits.
Class representing a triple of reconstructed segments in adjacent superlayer.
const CDCStereoSegment2D * getMiddleSegment() const
Getter for the middle stereo segment.
const CDCAxialSegment2D * getEndSegment() const
Getter for the end axial segment.
void setTrajectory3D(const CDCTrajectory3D &trajectory3D) const
Setter for the three dimensional helix trajectory.
const CDCAxialSegment2D * getStartSegment() const
Getter for the start axial segment.
CDCTrajectory2D & getTrajectory2D() const
Getter for the two dimensional trajectory fitted to the segment.
Particle trajectory as it is seen in xy projection represented as a circle.
EForwardBackward isForwardOrBackwardTo(const AHits &hits) const
Calculates if this trajectory and the hits are coaligned Returns:
Particle full three dimensional trajectory.
Linear trajectory in sz space.
Class representing a sense wire in the central drift chamber.
bool isInCellZBounds(const Vector3D &pos3D, const double factor=1) const
Checks whether the position is in the z bounds of the drift cell (scaled by the factor) surrounding t...
const CDCSZFitter & getSZFitter() const
Returns the sz fitter instance that is used by this filter.
Weight operator()(const CDCSegmentTriple &segmentTriple) final
Checks if a triple of axial, stereo and axial segments is a good combination to be stored.
const CDCRiemannFitter & getFitter2D() const
Returns the xy fitter instance that is used by this filter.
A three dimensional vector.
EForwardBackward
Enumeration to represent the distinct possibilities of the right left passage information.
Abstract base class for different kinds of events.