]>
Commit | Line | Data |
---|---|---|
2d9e89d4 | 1 | #ifndef ALITPCClusterHistograms_H |
2 | #define ALITPCClusterHistograms_H | |
3 | ||
4 | /* $Id$ */ | |
5 | ||
95f3e807 | 6 | // |
7 | // This class contains a number of histograms for diagnostics of a TPC | |
8 | // read out chamber from the reconstructed clusters. | |
9 | // | |
2d9e89d4 | 10 | |
1d7991a5 | 11 | #include <TNamed.h> |
2d9e89d4 | 12 | |
13 | class TH3; | |
14 | class TH2F; | |
9ecad4f3 | 15 | class TH1F; |
483b1eb8 | 16 | class TCanvas; |
17 | class TProfile; | |
2d9e89d4 | 18 | class TProfile2D; |
9ecad4f3 | 19 | class TObjArray; |
483b1eb8 | 20 | class TString; |
95f3e807 | 21 | |
2d9e89d4 | 22 | class AliTPCclusterMI; |
9ecad4f3 | 23 | class AliTPCseed; |
2d9e89d4 | 24 | |
25 | class AliTPCClusterHistograms : public TNamed | |
26 | { | |
27 | public: | |
28 | ||
29 | AliTPCClusterHistograms(); | |
1d7991a5 | 30 | AliTPCClusterHistograms(Int_t detector, const Char_t* comment="", Int_t timeStart=-1, Int_t timeStop=-1, Bool_t edgeSuppression = kFALSE); |
483b1eb8 | 31 | |
2d9e89d4 | 32 | AliTPCClusterHistograms(const AliTPCClusterHistograms& c); |
33 | virtual ~AliTPCClusterHistograms(); | |
34 | AliTPCClusterHistograms& operator=(const AliTPCClusterHistograms& corrMatrix); | |
35 | ||
36 | virtual Long64_t Merge(TCollection* list); | |
fe8871b7 | 37 | |
2d9e89d4 | 38 | virtual void SaveHistograms(); |
fe8871b7 | 39 | void SetCommentToHistograms(const Char_t* text) {fCommentToHistograms = TString(text);} |
2d9e89d4 | 40 | |
fe8871b7 | 41 | void FillEvent(Int_t time, Int_t nTracks); |
9ecad4f3 | 42 | void FillTrack(const AliTPCseed* seed); |
483b1eb8 | 43 | void FillCluster(AliTPCclusterMI* clusterMI, Int_t time=-1); |
fe8871b7 | 44 | |
45 | void StartEvent(); | |
46 | void FinishEvent(Int_t timeStamp); | |
47 | ||
48 | Int_t GetNClusters() {return fNClustersInEvent;} | |
49 | Float_t GetQtotInEvent() {return fQtotInEvent;} | |
50 | Float_t GetMaxQtotInEvent() {return fMaxQtotInEvent;} | |
9ecad4f3 | 51 | |
fe8871b7 | 52 | Bool_t KeepThisEvent(TString& why); |
53 | const Char_t* WhyKeepEvent() {return fWhyKeepEvent.Data();} | |
483b1eb8 | 54 | |
fe8871b7 | 55 | Bool_t IsClusterOnEdge(AliTPCclusterMI* clusterMI); |
56 | Float_t DistanceToEdge(AliTPCclusterMI* clusterMI); | |
57 | ||
483b1eb8 | 58 | TCanvas* DrawHistograms(const Char_t* opt=""); |
2d9e89d4 | 59 | |
1d7991a5 | 60 | static const char* FormDetectorName(Int_t detector, Bool_t edgeSuppression = kFALSE, const char* comment = 0); |
61 | ||
2d9e89d4 | 62 | protected: |
63 | ||
95f3e807 | 64 | Int_t fTimeStart; // begin time of run(s) |
65 | Int_t fTimeStop; // end time of runs(s) | |
483b1eb8 | 66 | |
9ecad4f3 | 67 | TH2F* fhQmaxVsRow; // QmaxVsRow |
68 | TH2F* fhQtotVsRow; // QtotVsRow | |
69 | ||
70 | TProfile* fhQtotProfileVsRow; // QtotProfileVsRow | |
71 | TProfile* fhQmaxProfileVsRow; // QmaxProfileVsRow | |
72 | ||
fe8871b7 | 73 | TH2F* fhQtotVsDistanceToEdge; // qtot vs distance to edge |
74 | TProfile* fhQtotProfileVsDistanceToEdge; // qtot vs distance to edge | |
75 | ||
76 | TH2F* fhNClustersYVsRow; // n clusters y vs row | |
77 | TH2F* fhNClustersZVsRow; // n clusters z vs row | |
9ecad4f3 | 78 | |
79 | TH2F* fhSigmaYVsRow; // SigmaYVsRow | |
80 | TH2F* fhSigmaZVsRow; // SigmaZVsRow | |
81 | ||
82 | TProfile2D* fhQmaxProfileYVsRow; // QmaxProfileYVsRow | |
83 | TProfile2D* fhQtotProfileYVsRow; // QtotProfileYVsRow | |
84 | TProfile2D* fhSigmaYProfileYVsRow; // SigmaYProfileYVsRow | |
85 | TProfile2D* fhSigmaZProfileYVsRow; // SigmaZProfileYVsRow | |
86 | ||
87 | TProfile2D* fhQmaxProfileZVsRow; // QmaxProfileZVsRow | |
88 | TProfile2D* fhQtotProfileZVsRow; // QtotProfileZVsRow | |
89 | TProfile2D* fhSigmaYProfileZVsRow; // SigmaYProfileZVsRow | |
90 | TProfile2D* fhSigmaZProfileZVsRow; // SigmaZProfileZVsRow | |
91 | ||
fe8871b7 | 92 | TProfile* fhMeanQtotVsTime; // mean qtot vs time |
93 | TH2F* fhQtotVsTime; // qtot vs time | |
94 | TProfile* fhMeanNClustersVsTime; // mean number of clusters vs time | |
95 | TH2F* fhNClustersVsTime; // number of clusters vs time | |
9ecad4f3 | 96 | |
97 | TH1F* fhTrackQtotPerCluster; // TrackQtotPerCluster | |
98 | ||
fe8871b7 | 99 | TH2F* fhTrackQtotPerClusterVsPhi; // TrackQtotPerClusterVsPhi |
100 | TH2F* fhTrackQtotPerClusterVsTheta; // TrackQtotPerClusterVsTheta | |
9ecad4f3 | 101 | |
fe8871b7 | 102 | TProfile* fhTrackMeanQtotPerClusterVsPhi; // TrackMeanQtotPerClusterVsPhi |
103 | TProfile* fhTrackMeanQtotPerClusterVsTheta; // TrackMeanQtotPerClusterVsTheta | |
104 | ||
105 | TProfile* fhMeanNTracksVsTime; // mean number of tracks vs time | |
106 | TH1F* fhNEventsVsTime; // number of events vs time | |
9ecad4f3 | 107 | |
108 | Int_t fDetector; // number of detector | |
1d7991a5 | 109 | Bool_t fIsIROC; // true = IROC, false = OROC |
110 | Bool_t fEdgeSuppression; // if set edges are not taken into account for histograms | |
2d9e89d4 | 111 | |
fe8871b7 | 112 | Int_t fNClustersInEvent; // number of clusters in event |
113 | Float_t fQtotInEvent; // total qtot in event | |
114 | Float_t fMaxQtotInEvent; // max qtot in event | |
115 | ||
116 | Bool_t fKeepEvent; // keep this event | |
117 | TString fWhyKeepEvent; // why | |
118 | ||
119 | TString fCommentToHistograms; // comments to histograms | |
120 | ||
2d9e89d4 | 121 | ClassDef(AliTPCClusterHistograms,1) |
122 | }; | |
123 | ||
124 | #endif | |
125 |