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