PandaRoot
PndMvdSttGemRiemannTrackFinder.h
Go to the documentation of this file.
1 #ifndef PndMvdSttGemRiemannTrackFinder_H_
2 #define PndMvdSttGemRiemannTrackFinder_H_
3 
4 #include "TClonesArray.h"
6 #include "PndGeoHandling.h"
7 #include "PndSttStrawMap.h"
8 
9 #include "TH2F.h"
10 #include <vector>
11 
12 class PndSttHit;
13 
15  public:
20 
21  void FindTracks();
22  void AddHits(TClonesArray *hits, Int_t branchId);
23 
24  // void SetGeoH(PndGeoHandling geoH){fGeoH=geoH;};
25  void SetCutDistH(TH2F *hist) { fCutDistH = hist; }
26  void SetCutChi2H(TH2F *hist) { fCutChi2H = hist; }
27 
28  void SetSttTubeArray(TClonesArray *SttTubeArray) { fStrawMap.GenerateStrawMap(SttTubeArray); }
29 
30  private:
31  PndGeoHandling *fGeoH;
32 
33  std::vector<std::set<Int_t>> GetStartTracks();
34  bool CheckSZ(PndRiemannTrack aTrack);
35  bool CheckRiemannHit(PndRiemannTrack *track, PndRiemannHit *hit, FairHit *fairHit);
36  bool CheckRiemannHitMvd(PndRiemannTrack *track, PndRiemannHit *hit, FairHit *fairHit);
37  bool CheckRiemannHitGem(PndRiemannTrack *track, PndRiemannHit *hit, FairHit *fairHit);
38  bool CheckRiemannHitStt(PndRiemannTrack *track, PndRiemannHit *hit, FairHit *fairHit);
39  bool CheckRiemannHitSkewedStt(PndRiemannTrack *track, PndRiemannHit *hit, FairHit *fairHit);
40 
41  // bool CheckTrackStt(PndRiemannTrack* track);
42 
43  void AssignSttHits(PndRiemannTrack &actTrack, std::set<Int_t> &startTrack);
44  void AssignSkewedSttHits(PndRiemannTrack &actTrack, std::set<Int_t> &startTrack);
45  void AssignGemHits(PndRiemannTrack &actTrack, std::set<Int_t> &startTrack);
46 
47  bool CheckBoarderHitsStt(PndTrackCand *track);
48  int GetStrawSector(PndRiemannTrack &track);
49 
50  int GetLayerGem(FairHit *hit);
51  int GetLayerMvd(FairHit *hit);
52  int GetLayer(TString identifier);
53  void InitLayerMap();
54  void InitLayerMapMvd();
55  void InitLayerMapGem();
56 
57  TH2F *fCutDistH;
58  TH2F *fCutChi2H;
59 
60  TClonesArray *fSttHits;
61  TClonesArray *fSkewedSttHits;
62  TClonesArray *fGemHits;
63  PndSttStrawMap fStrawMap;
64  std::vector<std::vector<PndSttHit *>> fSttHitsInSectors;
65  std::vector<std::vector<FairHit *>> fSttSkewedHitsInSectors;
66 
67  double fZClosePar;
68 
69  std::vector<std::vector<int>> fLayers;
70  std::map<TString, int> fLayerMap;
71  int fLastLayerId;
72  /* b - barrel layer; d - disk layer
73  0 - zero position
74  1 - 1b
75  2 - 1d
76  3 - 2d
77  4 - 2b
78  5 - 3d
79  6 - 4d
80  7 - 3b
81  8 - 5d
82  9 - 4b
83  10 - 6d
84 */
85  int fNLayers;
86  double GetMaxPlaneDist(double radius, double dip, bool sign); // getting cut distance
87  double GetMaxSZChi2(double radius, double dip, bool sign); // getting cut Chi2
88  std::set<int> GetTooCloseHitsInLayer(int LayerNumber, int HitNumber); // searching for too close hits to HitNumber-Hit in layer LayerNumber
89 
90  public:
92 };
93 
94 #endif /*PndMvdSttGemRiemannTrackFinder_H_*/
void AddHits(TClonesArray *hits, Int_t branchId)
Class to access the naming information of the MVD.
void GenerateStrawMap(TClonesArray *const stt_tube_array)
PndMvdSttGemRiemannTrackFinder & operator=(const PndMvdSttGemRiemannTrackFinder &)=delete
void SetSttTubeArray(TClonesArray *SttTubeArray)
int sign(T val)
Definition: PndCADef.h:49
void FindTracks()
Main function to start the riemann track finding.