10#include <tracking/trackFindingCDC/eventdata/hits/CDCRecoHit3D.h>
12#include <tracking/trackFindingCDC/eventdata/trajectories/CDCTrajectory3D.h>
14#include <tracking/trackFindingCDC/topology/ISuperLayer.h>
16#include <tracking/trackFindingCDC/ca/AutomatonCell.h>
18#include <tracking/trackFindingCDC/ca/Path.h>
20#include <tracking/trackFindingCDC/utilities/MayBePtr.h>
30 namespace TrackFindingCDC {
34 class CDCSegmentTriple;
41 class CDCTrack :
public std::vector<CDCRecoHit3D> {
48 explicit CDCTrack(
const std::vector<CDCRecoHit3D>& recoHits3D);
57 static CDCTrack condense(
const Path<const CDCSegmentTriple>& segmentTriplePath);
75 return front().getISuperLayer();
81 return back().getISuperLayer();
87 return front().getRecoPos3D();
93 return back().getRecoPos3D();
170 MayBePtr<const CDCRecoHit3D>
find(
const CDCWireHit& wireHit)
const;
Cell used by the cellular automata.
A reconstructed sequence of two dimensional hits in one super layer.
Class representing a sequence of three dimensional reconstructed hits.
std::vector< CDCSegment3D > splitIntoSegments() const
Splits the track into segments.
void setStartTrajectory3D(const CDCTrajectory3D &startTrajectory3D)
Setter for the two dimensional trajectory.
const CDCTrajectory3D & getEndTrajectory3D() const
Getter for the three dimensional trajectory.
CDCTrack reversed() const
Return a reversed copy of the track.
const Vector3D & getStartRecoPos3D() const
Getter for the position of the first reconstructed hit.
void reverse()
Reverse the track inplace.
ISuperLayer getStartISuperLayer() const
Getter for the superlayer id the track starts from.
void setHasMatchingSegment(bool hasMatchingSegment=true)
Set the flag which indicates that the track has a matching segment (probably only used in the Segment...
const CDCTrajectory3D & getStartTrajectory3D() const
Getter for the two dimensional trajectory.
AutomatonCell * operator->() const
Indirection to the automaton cell for easier access to the flags.
void forwardTakenFlag(bool takenFlag=true) const
Set the taken flag of all hits belonging to this track to the given value (default true),...
const Vector3D & getEndRecoPos3D() const
Getter for the position of the last reconstructed hit.
AutomatonCell & getAutomatonCell() const
Mutable getter for the automaton cell.
void sortByArcLength2D()
Sort the recoHits according to their perpS information.
void shiftToPositiveArcLengths2D(bool doForAllTracks=false)
Set all arcLengths to have positive values by shifting them by pi*radius if they are negative.
void setAndForwardMaskedFlag() const
Set the masked flag of the automaton cell of this segment and forward the masked flag to all containe...
CDCTrajectory3D m_startTrajectory3D
Memory for the three dimensional trajectory at the start of the track.
bool m_hasMatchingSegment
Flag which indicates that the track had a matching segment (can be used for filter decisions)
void unsetAndForwardMaskedFlag() const
Unset the masked flag of the automaton cell of this segment and of all contained wire hits.
void setEndTrajectory3D(const CDCTrajectory3D &endTrajectory3D)
Setter for the three dimensional trajectory.
MayBePtr< const CDCRecoHit3D > find(const CDCWireHit &wireHit) const
Finds the first CDCRecoHit3D that is based on the given wire hit - nullptr if none.
float getQualityIndicator() const
Get the multivariate quality indicator in [0, 1] attached the CDCTrack.
void setQualityIndicator(const float qualityIndicator)
Set the multivariate quality indicator in [0, 1] attached the CDCTrack.
float m_qualityIndicator
Multivariate classifier output in [0, 1] correlated with probability that track is good match.
ISuperLayer getEndISuperLayer() const
Getter for the superlayer id the track ends in.
static CDCTrack condense(const Path< const CDCTrack > &trackPath)
concatenates several tracks from a path
bool getHasMatchingSegment() const
Get a flag which indicates that the track has a matching segment (probably set in the SegmentTrackCom...
AutomatonCell m_automatonCell
Memory for the automaton cell.
CDCTrajectory3D m_endTrajectory3D
Memory for the three dimensional trajectory at the end of the track.
bool operator<(const CDCTrack &track) const
Comparison of track - no particular order has been defined so far, all tracks are equivalent.
void receiveMaskedFlag() const
Check all contained wire hits if one has the masked flag.
CDCTrack()=default
Default constructor for ROOT compatibility.
Particle full three dimensional trajectory.
Class representing a hit wire in the central drift chamber.
A three dimensional vector.
HepGeom::Vector3D< double > Vector3D
3D Vector
Abstract base class for different kinds of events.