28 #ifndef PndHoughTrackFinder_H_ 29 #define PndHoughTrackFinder_H_ 48 PndHoughTrackFinder(TClonesArray *tubeArray) : fNbins1(450), fNbins2(450), fNBinsSeg(90.), fBz(2.), fCutMergeByHoughSpace(5.), fWithGPU(kFALSE), fWithGhostReduction(kTRUE)
52 fCATrackFinder =
new PndSttCA(tubeArray);
53 ioman = FairRootManager::Instance();
60 delete fCATrackFinder;
62 delete fPndHoughTransformation;
63 delete fPndHoughPreprocessing;
64 delete fPndHoughMerge;
65 delete fPndHoughSegment;
66 delete fPndHoughUtilities;
67 delete fPndHoughTrackCorrection;
77 virtual void SetBz(
double B) { fBz = B; };
90 fData->
Init(fNbins1, fNbins2);
100 fCATrackFinder->
Reset();
102 fPreselectedTrackCands.clear();
103 fPreselectedTrackCircles.clear();
107 void AddHits(TClonesArray *hits, TString branchName);
124 bool IsInPhiRange(FairHit *hit,
double phiLow,
double phiHigh);
128 std::vector<PndApollonius::TripletSolution>
CombineIdenticalSolutionsFinal(std::vector<PndApollonius::TripletSolution> &solutions, Double_t ratioOfSameHits);
170 FairRootManager *ioman =
nullptr;
181 TClonesArray *fCombinedSkewed =
nullptr;
182 std::vector<std::vector<TVector3>> fHoughSpacesToTracks;
183 std::vector<PndTrackCand> fHoughSpacesToTrackCands;
184 std::vector<PndTrackCand> fHoughSpacesToTrackCandTots;
186 std::vector<FairLink> fFoundHits;
188 std::vector<PndTrackCand> fPreselectedTrackCands;
189 std::vector<TVector3> fPreselectedTrackCircles;
190 std::vector<PndTrack> fApolloniusMergedTracks;
191 std::vector<PndTrackCand> fApolloniusMergedTrackCands;
194 float fCutMergeByHoughSpace;
199 bool fWithGhostReduction;
200 bool fUseDefaultPreselection = kTRUE;
201 double fDistanceThresholdSTTCombinedSkewed = 1.;
202 double fDistanceThresholdSTT = 0.3;
203 double fDistanceThresholdMVD = 0.5;
204 double fDistanceThresholdGEM = 1.;
205 std::map<FairLink, FairHit *> fMapFairLinktoFairHit;
206 std::map<FairLink, double> fMapFairLinktoIsochrone;
double CalcRatioSameHits(PndApollonius::TripletSolution &sol, std::vector< PndApollonius::TripletSolution > &AlreadyFoundSolutions)
virtual void SetWithGhostReduction(bool ghostred)
Sets a bool for deciding to use a ghost reduction.
PndTrack GetMergedTrack(int i)
Returns a specific found track.
int GetNumMergedTracks()
Returns the number of found tracks.
TVector2 calcPhiRange(PndTrackCand &trackCand)
void CreateSTTNeighborhoodData()
For all STT hits all other STT neighbors are counted and stored in a map.
int GetNumPreselectedTrackCircles()
Returns the number of preselected circles for track candidates.
int GetNumMergedTracks()
Returns a specific merged track candidate.
void Reset()
Resets the data for a new event.
std::map< FairLink, FairHit * > GetMapFairLinktoFairHit() const
Returns the map linking FairLinks to FairHits.
void Preselection()
Here all data are preselected in smaller tracklets.
void Init()
Initializes the data structure and the Hough space of the HoughtrackFinder.
virtual void SetCutMergeByHoughSpace(float cut)
Sets the cut value for the distance of two maxima in the Hough space which have to be merged...
virtual void SetPreselectedTrackCands(std::vector< PndTrackCand > cands)
void AddOtherDetectorHits(int i, TString type)
virtual void SetNBinsSeg(Int_t n)
Sets the number of bins used for the segmentation preselection algorithm.
bool IsInPhiRange(FairHit *hit, double phiLow, double phiHigh)
TVector3 GetPreselectedTrackCircles(int i)
Returns a the corresponding circle for a specific preselected track candidate.
virtual void SetWithGPU(bool cuda)
Sets a bool for deciding to use cuda.
virtual void SetBinningY(double bin)
Sets the number of bins in y direction for the Hough space.
void CreateNeighborhood()
Creates the neighborhood parameters for all investigated hits.
virtual ~PndHoughTrackFinder()
void Init(int NBins1=450, int NBins2=450)
Initializes the Hough space.
int GetNumPreselectedTrackCands()
Returns the number of preselected track candidates.
virtual void SetCombinedSkewed(TClonesArray *skewed)
void clear()
Clears all data maps.
std::vector< PndApollonius::TripletSolution > CombineIdenticalSolutionsFinal(std::vector< PndApollonius::TripletSolution > &solutions, Double_t ratioOfSameHits)
PndTrack FromTripletSolutionToPndTrack(PndApollonius::TripletSolution &sol, Double_t B)
Converts a TripletSolution to a PndTrack.
void AddSkewedHits(int i)
PndApollonius::TripletSolution FromPndTrackToTripletSolution(PndTrack &track, PndHoughData *fData)
std::map< FairLink, FairHit * > GetMapFairLinktoFairHit()
Returns a specific found track candidate.
void FindHoughMaxima()
Performs a Hough transformation for all preselected tracklets. The found track parameters are stored ...
A structure that defines a solution of a triplet (an Apollonius Circle and all hits close to the circ...
PndTrack GetMergedTrack(int i)
Returns a specific merged track.
PndHoughData * GetData()
Returns the data class of the HoughTrackFinder.
PndTrackCand GetPreselectedTrackCand(int i)
Returns a specific preselected track candidate.
PndHoughTrackFinder(TClonesArray *tubeArray)
virtual void SetBz(double B)
Sets the z component of the magnetic field.
void AddHits(TClonesArray *hits, TString branchName)
Adds hits to the data structure of the HoughTrackFinder.
void FindTracks()
Main function of the HoughTrackFinder, which finds the tracks.
virtual void SetBinningX(double bin)
Sets the number of bins in x direction for the Hough space.
void CreateGEMNeighborhoodData()
For all GEM hits all other GEM hits in a certain distance (hier 1.5 cm) are counted and stored as nei...
void SetUseGPU(Bool_t val)
virtual void UseDefaultPreselection(bool pres)