1 #ifndef ALITPCClusterHistograms_H
2 #define ALITPCClusterHistograms_H
7 // This class contains a number of histograms for diagnostics of a TPC
8 // read out chamber from the reconstructed clusters.
11 #include <TCollection.h>
23 class AliTPCclusterMI;
26 class AliTPCClusterHistograms : public TNamed
30 AliTPCClusterHistograms();
31 AliTPCClusterHistograms(Int_t detector, const Char_t* comment="", Int_t timeStart=-1, Int_t timeStop=-1, Bool_t edgeSuppression = kFALSE);
33 AliTPCClusterHistograms(const AliTPCClusterHistograms& c);
34 virtual ~AliTPCClusterHistograms();
35 AliTPCClusterHistograms& operator=(const AliTPCClusterHistograms& corrMatrix);
37 virtual Long64_t Merge(TCollection* list);
39 virtual void SaveHistograms();
40 void SetCommentToHistograms(const Char_t* text) {fCommentToHistograms = TString(text);}
42 void FillEvent(Int_t time, Int_t nTracks);
43 void FillTrack(const AliTPCseed* seed);
44 void FillCluster(AliTPCclusterMI* clusterMI, Int_t time=-1);
47 void FinishEvent(Int_t timeStamp);
49 Int_t GetNClusters() {return fNClustersInEvent;}
50 Float_t GetQtotInEvent() {return fQtotInEvent;}
51 Float_t GetMaxQtotInEvent() {return fMaxQtotInEvent;}
53 Bool_t KeepThisEvent(TString& why);
54 const Char_t* WhyKeepEvent() {return fWhyKeepEvent.Data();}
56 Bool_t IsClusterOnEdge(AliTPCclusterMI* clusterMI);
57 Float_t DistanceToEdge(AliTPCclusterMI* clusterMI);
59 TCanvas* DrawHistograms(const Char_t* opt="");
61 static TString FormDetectorName(Int_t detector, Bool_t edgeSuppression = kFALSE, const char* comment = 0);
65 Int_t fTimeStart; // begin time of run(s)
66 Int_t fTimeStop; // end time of runs(s)
68 TH2F* fhQmaxVsRow; // QmaxVsRow
69 TH2F* fhQtotVsRow; // QtotVsRow
71 TProfile* fhQtotProfileVsRow; // QtotProfileVsRow
72 TProfile* fhQmaxProfileVsRow; // QmaxProfileVsRow
74 TH2F* fhQtotVsDistanceToEdge; // qtot vs distance to edge
75 TProfile* fhQtotProfileVsDistanceToEdge; // qtot vs distance to edge
77 TH2F* fhNClustersYVsRow; // n clusters y vs row
78 TH2F* fhNClustersZVsRow; // n clusters z vs row
80 TH2F* fhSigmaYVsRow; // SigmaYVsRow
81 TH2F* fhSigmaZVsRow; // SigmaZVsRow
83 TProfile2D* fhQmaxProfileYVsRow; // QmaxProfileYVsRow
84 TProfile2D* fhQtotProfileYVsRow; // QtotProfileYVsRow
85 TProfile2D* fhSigmaYProfileYVsRow; // SigmaYProfileYVsRow
86 TProfile2D* fhSigmaZProfileYVsRow; // SigmaZProfileYVsRow
88 TProfile2D* fhQmaxProfileZVsRow; // QmaxProfileZVsRow
89 TProfile2D* fhQtotProfileZVsRow; // QtotProfileZVsRow
90 TProfile2D* fhSigmaYProfileZVsRow; // SigmaYProfileZVsRow
91 TProfile2D* fhSigmaZProfileZVsRow; // SigmaZProfileZVsRow
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
98 TH1F* fhTrackQtotPerCluster; // TrackQtotPerCluster
100 TH2F* fhTrackQtotPerClusterVsPhi; // TrackQtotPerClusterVsPhi
101 TH2F* fhTrackQtotPerClusterVsTheta; // TrackQtotPerClusterVsTheta
103 TProfile* fhTrackMeanQtotPerClusterVsPhi; // TrackMeanQtotPerClusterVsPhi
104 TProfile* fhTrackMeanQtotPerClusterVsTheta; // TrackMeanQtotPerClusterVsTheta
106 TProfile* fhMeanNTracksVsTime; // mean number of tracks vs time
107 TH1F* fhNEventsVsTime; // number of events vs time
109 Int_t fDetector; // number of detector
110 Bool_t fIsIROC; // true = IROC, false = OROC
111 Bool_t fEdgeSuppression; // if set edges are not taken into account for histograms
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
117 Bool_t fKeepEvent; // keep this event
118 TString fWhyKeepEvent; // why
120 TString fCommentToHistograms; // comments to histograms
122 ClassDef(AliTPCClusterHistograms,1)