]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG0/TPC/AliTPCClusterHistograms.h
Added classes to analyse TPC data from reconstructed clusters (not on tracks) and...
[u/mrichter/AliRoot.git] / PWG0 / TPC / AliTPCClusterHistograms.h
CommitLineData
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
13class TH3;
14class TH2F;
9ecad4f3 15class TH1F;
483b1eb8 16class TCanvas;
17class TProfile;
2d9e89d4 18class TProfile2D;
9ecad4f3 19class TObjArray;
483b1eb8 20class TString;
95f3e807 21
2d9e89d4 22class AliTPCclusterMI;
9ecad4f3 23class AliTPCseed;
2d9e89d4 24
25class AliTPCClusterHistograms : public TNamed
26{
27public:
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 62protected:
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