PandaRoot
PndCurlingTrackFinder.h
Go to the documentation of this file.
1 /*
2  * PndCurlingTrackFinder.h
3  *
4  * Created on: 06.07.2021
5  * Author: tstockmanns
6  */
7 
8 #pragma once
9 
10 #include "TClonesArray.h"
11 #include "TVector3.h"
12 #include <vector>
13 #include <iostream>
14 
15 #include "PndSttStrawMap.h"
16 #include "PndSttGeometryMap.h"
17 #include "PndSttHit.h"
18 
19 #include "PndPreselectSttHits.h"
20 #include "PndSttCA.h"
21 #include "PndApolloniusTriplet.h"
22 using namespace PndApollonius;
23 
25  public:
26  PndCurlingTrackFinder(TClonesArray *tubeArray);
27  // PndCurlingTrackFinder(){ }
28  virtual ~PndCurlingTrackFinder();
29 
30  void Reset();
31  void FindTracks();
32  std::vector<TripletSolution> GetSolutions() const { return fSolutions; }
33 
34  virtual void SetWithTubeReduction(bool reduction) { fWithTubeReduction = reduction; };
35  virtual void SetCATrackFinder(PndSttCA *CAFinder) { fCATrackFinder = CAFinder; };
36  virtual void SetUnassignedSttHits(std::vector<PndSttHit *> &hits) { fUnassignedSttHits = hits; };
37  virtual void SetSttHits(std::vector<PndSttHit *> &hits) { fSttHits = hits; };
38  virtual void SetBranchMap(std::map<TString, TClonesArray *> &map) { fBranchMap = map; };
39 
40  std::vector<TripletSolution> GetTripletTracks() const { return fTripletTracks; }
41  std::vector<TripletSolution> GetContinuousTripletTracks() const { return fContinuousTripletTracks; }
42  std::vector<TripletSolution> GetTripletTracksAfterAdding() const { return fTripletTracksAfterAdding; }
43 
44  protected:
45  TripletValues GetTripletsCurledTracks(std::map<int, std::vector<std::vector<PndSttHit *>>> &tubeStructure);
46  TripletValues GetTripletsCurledTracks2();
47 
48  // std::map<int, std::vector<std::vector<PndSttHit *>>> DeleteFromCurlingPool(std::vector<TripletSolution> &combinedSolutions, std::map<int, std::vector<std::vector<PndSttHit
49  // *>>> &CombinedTubeStructure);
50  int GetMidIndex(int firstIndex, int lastIndex);
51 
52  private:
54  std::vector<TripletSolution> fSolutions;
55  std::vector<TripletSolution> fTripletTracks;
56  std::vector<TripletSolution> fContinuousTripletTracks;
57  std::vector<TripletSolution> fTripletTracksAfterAdding;
58 
59  std::vector<PndSttHit *> fUnassignedSttHits;
60  std::vector<PndSttHit *> fSttHits;
61  int fAllHitsCounter;
62  bool fIsStrongCurling;
63  bool fWithTubeReduction;
64  bool fWithCombiReduction = false;
65  PndSttCA *fCATrackFinder = nullptr;
66  PndSttGeometryMap *fGeometryMap = nullptr;
67  PndSttStrawMap *fStrawMap = nullptr;
68  std::map<TString, TClonesArray *> fBranchMap;
69  std::map<FairLink, int> fMapHitstoCATracklet;
70  int fBeforeSkewedRowNumber = 7;
71  int fAfterSkewedRowNumber = 16;
72 };
std::vector< TripletSolution > GetSolutions() const
A structure that defines all functions used for the Apollonius Triplet track finder.
virtual void SetCATrackFinder(PndSttCA *CAFinder)
std::vector< TripletSolution > GetContinuousTripletTracks() const
virtual void SetWithTubeReduction(bool reduction)
std::vector< TripletSolution > GetTripletTracksAfterAdding() const
virtual void SetSttHits(std::vector< PndSttHit *> &hits)
virtual void SetBranchMap(std::map< TString, TClonesArray *> &map)
virtual void SetUnassignedSttHits(std::vector< PndSttHit *> &hits)
std::vector< TripletSolution > GetTripletTracks() const
A structure that defines the three sets of STT hits (inner, mid, outer STT set), that are used to com...