PandaRoot
PndSttCellTrackFinderAnalysisTask.h
Go to the documentation of this file.
1 /*
2  * PndSttCellTrackFinderAnalysisTask.h
3  *
4  * Created on: Jun 26, 2013
5  * Author: schumann
6  */
7 
8 #ifndef PndSttCellTrackFinderAnalysisTask_H_
9 #define PndSttCellTrackFinderAnalysisTask_H_
10 
11 #include "FairTask.h"
12 #include "TH1I.h"
13 #include "TCanvas.h"
14 #include "FairMultiLinkedData.h"
15 
16 #include <map>
17 #include <vector>
18 #include <fstream>
19 
20 class TClonesArray;
21 class PndMCMatch;
22 class PndGeoSttPar;
23 class PndMCResult;
24 
25 class PndSttCellTrackFinderAnalysisTask : public FairTask {
26  public:
27  PndSttCellTrackFinderAnalysisTask() : FairTask("Stt Cell TrackFinder Analysis Task"){};
29 
31  virtual void SetParContainers();
32  virtual InitStatus Init();
33 
35  virtual void Exec(Option_t *opt);
36  virtual void FinishEvent();
37  virtual void Finish();
38 
39  void SetVerbose(Int_t verbose) { fVerbose = verbose; };
40 
41  private:
42  /*Method for testing functionality of Conformal Mapping (Circle Fit)*/
43  void CheckConformalMap();
44 
45  /*Method verifies the result of the first step of the trackfinding-algorithm*/
46  void CheckFirstTracklets();
47 
48  /*Method verifies the result of the second step of the trackfinding-algorithm*/
49  void CheckTrackletCombinations();
50 
51  /*Method for drawing STTHits + Circles of Riemann Fit for the first step of trackfinding*/
52  void DrawFirstRiemannPlots(int eventNumber);
53 
54  /*Method for drawing STTHits + Circles of Riemann Fit for the second step of trackfinding*/
55  void DrawCombiRiemannPlots(int eventNumber);
56 
57  int GetNumLinksOfHits(FairMultiLinkedData &hitLinks, PndMCResult &sttHitsToMCTrack, PndMCResult &sttHitToPoint);
58 
59  void TestRecoQualityFirstStep();
60 
61  void TestRecoQualityCombi();
62 
63  void CountMaxHitsFirstStep();
64 
65  void CountMaxHitsCombi();
66 
67  std::map<int, bool> fFoundMC;
68 
69  PndMCMatch *fMCMatch;
70 
71  TClonesArray *fMCTrack;
72 
73  TClonesArray *fFirstTrackCand;
74  TClonesArray *fFirstRiemannTrack;
75  TClonesArray *fCombiTrackCand;
76  TClonesArray *fCombiRiemannTrack;
77 
78  TClonesArray *fEventHeader;
79  TClonesArray *fSTTHits;
80 
81  std::map<int, std::vector<int>> fMapTubeIDToHits; // map<tube-id, vector<indices of SttHits in fSTTHits>>
82  std::map<int, int> fMapHitIndexToTubeID; // map<index of SttHit in fSTTHits, tube-id>
83 
84  PndGeoSttPar *fSttParameters; // for filling fTubeArray
85  TClonesArray *fTubeArray; // contains at index tube-id corresponding PndSttTube
86 
87  // histograms for first step of trackfinding
88  TH1I *fHistoNumberOfLinks1;
89  TH1I *fHistoNumberOfTracklets1;
90  TH1I *fHistoNumberOfAssignedHits1;
91  TH1I *fHistoNumberOfHits1;
92  TH1I *fHistoNumberOfErrors1;
93  TH1I *fHistoMaxHitsOfMCTrack1;
94  TH1I *fHistoNumberOfMissingHits1;
95 
96  TH1I *fHistoQualityFirstStep;
97 
98  // histograms for second step of trackfinding
99  TH1I *fHistoNumberOfLinks2;
100  TH1I *fHistoNumberOfTracklets2;
101  TH1I *fHistoNumberOfHits2;
102  TH1I *fHistoNumberOfErrors2;
103  TH1I *fHistoMaxHitsOfMCTrack2;
104  TH1I *fHistoNumberOfMissingHits2;
105 
106  TH1I *fHistoQualityCombi;
107  TH1I *fHistoNumberOfHitsMCTrack;
108 
109  TCanvas *fCanvas;
110 
112 };
113 
114 #endif /* PndSttCellTrackFinderAnalysisTask_H_ */
virtual void Exec(Option_t *opt)