// ------------------------------------------------------------------------- // ----- PndMQStraightLineTrackFinder ----- // ----- Created 22/10/09 by M. Michel ----- // ------------------------------------------------------------------------- #ifndef PndMQStraightLineTrackFinder_H #define PndMQStraightLineTrackFinder_H #include "FairTask.h" #include "PndMCTrack.h" #include "PndSdsGeoPar.h" #include "PndSdsHit.h" #include "PndSdsMCPoint.h" #include "PndSdsClusterStrip.h" #include "TrackData/PndTrackCand.h" #include "TrackData/PndTrack.h" #include #include #include struct StraightLineParams{ TVector3 origin; TVector3 direction; }; class PndMQStraightLineTrackFinder { public: /** Default constructor **/ PndMQStraightLineTrackFinder(); /** Destructor **/ virtual ~PndMQStraightLineTrackFinder(); void SetVerbose(Int_t verbose){ fVerbose = verbose; }; void SetSearchRadius(Double_t accu) { dXY = accu; }; std::vector FindTracks(std::vector hits); protected: Double_t GetTrackDip(PndMCTrack* myTrack); Double_t GetTrackCurvature(PndMCTrack* myTrack); void SortHitsToLayers(std::vector hits); std::vector< std::vector > GetStartCombination(int firstLayer, int secondLayer); PndTrackCand FindTrack(std::vector startCombi) StraightLineParams GetLineParameters(std::vector startCombi); TVector3 PropagateToXYPlane(StraightLineParams line, Double z); double DistanceOfPoints(TVector3 first, TVector3 second); private: Double_t fdXY; Int_t fNLayers; std::vector > > fHitsPerLayer; }; #endif /* PndMQStraightLineTrackFinder_H */