FairRoot/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 {
16 public:
21 
22  void FindTracks();
23  void AddHits(TClonesArray* hits, Int_t branchId);
24 
25  //void SetGeoH(PndGeoHandling geoH){fGeoH=geoH;};
26  void SetCutDistH(TH2F* hist) {fCutDistH=hist;}
27  void SetCutChi2H(TH2F* hist) {fCutChi2H=hist;}
28 
29  void SetSttTubeArray(TClonesArray* SttTubeArray){fStrawMap.GenerateStrawMap(SttTubeArray);}
30 
31 private:
33 
34  std::vector<std::set<Int_t> > GetStartTracks();
35  bool CheckSZ(PndRiemannTrack aTrack);
36  bool CheckRiemannHit(PndRiemannTrack* track, PndRiemannHit* hit, FairHit* fairHit);
37  bool CheckRiemannHitMvd(PndRiemannTrack* track, PndRiemannHit* hit, FairHit* fairHit);
38  bool CheckRiemannHitGem(PndRiemannTrack* track, PndRiemannHit* hit, FairHit* fairHit);
39  bool CheckRiemannHitStt(PndRiemannTrack* track, PndRiemannHit* hit, FairHit* fairHit);
41 
42 // bool CheckTrackStt(PndRiemannTrack* track);
43 
44  void AssignSttHits(PndRiemannTrack& actTrack, std::set<Int_t>& startTrack);
45  void AssignSkewedSttHits(PndRiemannTrack& actTrack, std::set<Int_t>& startTrack);
46  void AssignGemHits(PndRiemannTrack& actTrack, std::set<Int_t>& startTrack);
47 
50 
51  int GetLayerGem(FairHit* hit);
52  int GetLayerMvd(FairHit* hit);
53  int GetLayer(TString identifier);
54  void InitLayerMap();
55  void InitLayerMapMvd();
56  void InitLayerMapGem();
57 
58  TH2F* fCutDistH;
59  TH2F* fCutChi2H;
60 
61  TClonesArray* fSttHits;
62  TClonesArray* fSkewedSttHits;
63  TClonesArray* fGemHits;
65  std::vector<std::vector<PndSttHit*> > fSttHitsInSectors;
66  std::vector<std::vector<FairHit*> > fSttSkewedHitsInSectors;
67 
68  double fZClosePar;
69 
70  std::vector< std::vector<int> >fLayers;
71  std::map<TString, int> fLayerMap;
73  /* b - barrel layer; d - disk layer
74  0 - zero position
75  1 - 1b
76  2 - 1d
77  3 - 2d
78  4 - 2b
79  5 - 3d
80  6 - 4d
81  7 - 3b
82  8 - 5d
83  9 - 4b
84  10 - 6d
85 */
86  int fNLayers;
87  double GetMaxPlaneDist(double radius, double dip, bool sign); //getting cut distance
88  double GetMaxSZChi2(double radius, double dip, bool sign); //getting cut Chi2
89  std::set<int> GetTooCloseHitsInLayer(int LayerNumber , int HitNumber ); // searching for too close hits to HitNumber-Hit in layer LayerNumber
90 
91 public:
93 };
94 
95 #endif /*PndMvdSttGemRiemannTrackFinder_H_*/
std::set< int > GetTooCloseHitsInLayer(int LayerNumber, int HitNumber)
bool CheckRiemannHitMvd(PndRiemannTrack *track, PndRiemannHit *hit, FairHit *fairHit)
double GetMaxPlaneDist(double radius, double dip, bool sign)
bool CheckRiemannHit(PndRiemannTrack *track, PndRiemannHit *hit, FairHit *fairHit)
bool CheckRiemannHitStt(PndRiemannTrack *track, PndRiemannHit *hit, FairHit *fairHit)
std::vector< std::vector< PndSttHit * > > fSttHitsInSectors
std::map< TString, int > fLayerMap
identifier string, assigned layer id
PndRiemannTrack track
Definition: RiemannTest.C:33
bool CheckRiemannHitSkewedStt(PndRiemannTrack *track, PndRiemannHit *hit, FairHit *fairHit)
void AddHits(TClonesArray *hits, Int_t branchId)
Class to access the naming information of the MVD.
double fZClosePar
parameter to separate forward and backward tracks
void AssignSttHits(PndRiemannTrack &actTrack, std::set< Int_t > &startTrack)
void GenerateStrawMap(TClonesArray *const stt_tube_array)
std::vector< std::vector< FairHit * > > fSttSkewedHitsInSectors
void AssignSkewedSttHits(PndRiemannTrack &actTrack, std::set< Int_t > &startTrack)
PndMvdSttGemRiemannTrackFinder & operator=(const PndMvdSttGemRiemannTrackFinder &)=delete
bool CheckSZ(PndRiemannTrack aTrack)
Tests the results of the sz fit.
int hit(Int_t nEvents=0, TString inFile="sim.root", TString parFile="par.root", TString inDigi="digi.root", TString outFile="hit.root", Int_t timeBased=0)
Definition: hit.C:1
void SetSttTubeArray(TClonesArray *SttTubeArray)
double GetMaxSZChi2(double radius, double dip, bool sign)
bool CheckRiemannHitGem(PndRiemannTrack *track, PndRiemannHit *hit, FairHit *fairHit)
int sign(T val)
Definition: PndCADef.h:48
CbmHit * hits[nHits]
Definition: RiemannTest.C:19
void AssignGemHits(PndRiemannTrack &actTrack, std::set< Int_t > &startTrack)
void FindTracks()
Main function to start the riemann track finding.
TH1F * hist
std::vector< std::vector< int > > fLayers
contains layer information of hits
std::vector< std::set< Int_t > > GetStartTracks()