16 #ifndef PndHoughTrackFinder_H_ 17 #define PndHoughTrackFinder_H_ 36 PndHoughTrackFinder(TClonesArray *tubeArray) : fNbins1(450), fNbins2(450), fNBinsSeg(90.), fBz(2.), fCutMergeByHoughSpace(5.), fWithGPU(kFALSE), fWithGhostReduction(kTRUE)
40 fCATrackFinder =
new PndSttCA(tubeArray);
41 ioman = FairRootManager::Instance();
48 delete fCATrackFinder;
50 delete fPndHoughTransformation;
51 delete fPndHoughPreprocessing;
52 delete fPndHoughMerge;
53 delete fPndHoughSegment;
54 delete fPndHoughUtilities;
55 delete fPndHoughTrackCorrection;
65 virtual void SetBz(
double B) { fBz = B; };
78 fData->
Init(fNbins1, fNbins2);
88 fCATrackFinder->
Reset();
90 fPreselectedTrackCands.clear();
91 fPreselectedTrackCircles.clear();
95 void AddHits(TClonesArray *hits, TString branchName);
112 bool IsInPhiRange(FairHit *hit,
double phiLow,
double phiHigh);
116 std::vector<PndApollonius::TripletSolution>
CombineIdenticalSolutionsFinal(std::vector<PndApollonius::TripletSolution> &solutions, Double_t ratioOfSameHits);
158 FairRootManager *ioman =
nullptr;
169 TClonesArray *fCombinedSkewed =
nullptr;
170 std::vector<std::vector<TVector3>> fHoughSpacesToTracks;
171 std::vector<PndTrackCand> fHoughSpacesToTrackCands;
172 std::vector<PndTrackCand> fHoughSpacesToTrackCandTots;
174 std::vector<FairLink> fFoundHits;
176 std::vector<PndTrackCand> fPreselectedTrackCands;
177 std::vector<TVector3> fPreselectedTrackCircles;
178 std::vector<PndTrack> fApolloniusMergedTracks;
179 std::vector<PndTrackCand> fApolloniusMergedTrackCands;
182 float fCutMergeByHoughSpace;
187 bool fWithGhostReduction;
188 bool fUseDefaultPreselection = kTRUE;
189 double fDistanceThresholdSTTCombinedSkewed = 1.;
190 double fDistanceThresholdSTT = 0.3;
191 double fDistanceThresholdMVD = 0.5;
192 double fDistanceThresholdGEM = 1.;
193 std::map<FairLink, FairHit *> fMapFairLinktoFairHit;
194 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)