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.
22 class AliTPCclusterMI;
25 class AliTPCClusterHistograms : public TNamed
29 AliTPCClusterHistograms();
30 AliTPCClusterHistograms(Int_t detector, const Char_t* comment="", Int_t timeStart=-1, Int_t timeStop=-1, Bool_t edgeSuppression = kFALSE);
32 AliTPCClusterHistograms(const AliTPCClusterHistograms& c);
33 virtual ~AliTPCClusterHistograms();
34 AliTPCClusterHistograms& operator=(const AliTPCClusterHistograms& corrMatrix);
36 virtual Long64_t Merge(TCollection* list);
38 virtual void SaveHistograms();
39 void SetCommentToHistograms(const Char_t* text) {fCommentToHistograms = TString(text);}
41 void FillEvent(Int_t time, Int_t nTracks);
42 void FillTrack(const AliTPCseed* seed);
43 void FillCluster(AliTPCclusterMI* clusterMI, Int_t time=-1);
46 void FinishEvent(Int_t timeStamp);
48 Int_t GetNClusters() {return fNClustersInEvent;}
49 Float_t GetQtotInEvent() {return fQtotInEvent;}
50 Float_t GetMaxQtotInEvent() {return fMaxQtotInEvent;}
52 Bool_t KeepThisEvent(TString& why);
53 const Char_t* WhyKeepEvent() {return fWhyKeepEvent.Data();}
55 Bool_t IsClusterOnEdge(AliTPCclusterMI* clusterMI);
56 Float_t DistanceToEdge(AliTPCclusterMI* clusterMI);
58 TCanvas* DrawHistograms(const Char_t* opt="");
60 static TString FormDetectorName(Int_t detector, Bool_t edgeSuppression = kFALSE, const char* comment = 0);
64 Int_t fTimeStart; // begin time of run(s)
65 Int_t fTimeStop; // end time of runs(s)
67 TH2F* fhQmaxVsRow; // QmaxVsRow
68 TH2F* fhQtotVsRow; // QtotVsRow
70 TProfile* fhQtotProfileVsRow; // QtotProfileVsRow
71 TProfile* fhQmaxProfileVsRow; // QmaxProfileVsRow
73 TH2F* fhQtotVsDistanceToEdge; // qtot vs distance to edge
74 TProfile* fhQtotProfileVsDistanceToEdge; // qtot vs distance to edge
76 TH2F* fhNClustersYVsRow; // n clusters y vs row
77 TH2F* fhNClustersZVsRow; // n clusters z vs row
79 TH2F* fhSigmaYVsRow; // SigmaYVsRow
80 TH2F* fhSigmaZVsRow; // SigmaZVsRow
82 TProfile2D* fhQmaxProfileYVsRow; // QmaxProfileYVsRow
83 TProfile2D* fhQtotProfileYVsRow; // QtotProfileYVsRow
84 TProfile2D* fhSigmaYProfileYVsRow; // SigmaYProfileYVsRow
85 TProfile2D* fhSigmaZProfileYVsRow; // SigmaZProfileYVsRow
87 TProfile2D* fhQmaxProfileZVsRow; // QmaxProfileZVsRow
88 TProfile2D* fhQtotProfileZVsRow; // QtotProfileZVsRow
89 TProfile2D* fhSigmaYProfileZVsRow; // SigmaYProfileZVsRow
90 TProfile2D* fhSigmaZProfileZVsRow; // SigmaZProfileZVsRow
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
97 TH1F* fhTrackQtotPerCluster; // TrackQtotPerCluster
99 TH2F* fhTrackQtotPerClusterVsPhi; // TrackQtotPerClusterVsPhi
100 TH2F* fhTrackQtotPerClusterVsTheta; // TrackQtotPerClusterVsTheta
102 TProfile* fhTrackMeanQtotPerClusterVsPhi; // TrackMeanQtotPerClusterVsPhi
103 TProfile* fhTrackMeanQtotPerClusterVsTheta; // TrackMeanQtotPerClusterVsTheta
105 TProfile* fhMeanNTracksVsTime; // mean number of tracks vs time
106 TH1F* fhNEventsVsTime; // number of events vs time
108 Int_t fDetector; // number of detector
109 Bool_t fIsIROC; // true = IROC, false = OROC
110 Bool_t fEdgeSuppression; // if set edges are not taken into account for histograms
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
116 Bool_t fKeepEvent; // keep this event
117 TString fWhyKeepEvent; // why
119 TString fCommentToHistograms; // comments to histograms
121 ClassDef(AliTPCClusterHistograms,1)