]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG0/TPC/AliTPCClusterHistograms.h
reduced to 6 standard plots
[u/mrichter/AliRoot.git] / PWG0 / TPC / AliTPCClusterHistograms.h
1 #ifndef ALITPCClusterHistograms_H
2 #define ALITPCClusterHistograms_H
3
4 /* $Id$ */
5
6 //
7 // This class contains a number of histograms for diagnostics of a TPC
8 // read out chamber from the reconstructed clusters.
9 //
10
11 #include <TNamed.h>
12 #include <TString.h>
13
14 class TH3;
15 class TH2F;
16 class TH1F;
17 class TCanvas;
18 class TProfile;
19 class TProfile2D;
20 class TObjArray;
21
22 class AliTPCclusterMI;
23 class AliTPCseed;
24
25 class AliTPCClusterHistograms : public TNamed
26 {
27 public:
28
29   AliTPCClusterHistograms();
30   AliTPCClusterHistograms(Int_t detector, const Char_t* comment="", Int_t timeStart=-1, Int_t timeStop=-1, Bool_t edgeSuppression = kFALSE);
31   
32   AliTPCClusterHistograms(const AliTPCClusterHistograms& c);
33   virtual ~AliTPCClusterHistograms();
34   AliTPCClusterHistograms& operator=(const AliTPCClusterHistograms& corrMatrix);
35
36   virtual Long64_t Merge(TCollection* list);
37   
38   virtual void SaveHistograms();
39   void         SetCommentToHistograms(const Char_t* text) {fCommentToHistograms = TString(text);}
40
41   void FillEvent(Int_t time, Int_t nTracks);
42   void FillTrack(const AliTPCseed* seed);
43   void FillCluster(AliTPCclusterMI* clusterMI, Int_t time=-1);
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;}
51
52   Bool_t  KeepThisEvent(TString& why);
53   const Char_t* WhyKeepEvent() {return fWhyKeepEvent.Data();}
54
55   Bool_t  IsClusterOnEdge(AliTPCclusterMI* clusterMI);
56   Float_t DistanceToEdge(AliTPCclusterMI* clusterMI);
57  
58   TCanvas* DrawHistograms(const Char_t* opt="");
59
60   static TString FormDetectorName(Int_t detector, Bool_t edgeSuppression = kFALSE, const char* comment = 0);
61
62 protected:
63
64   Int_t       fTimeStart;               // begin time of run(s)
65   Int_t       fTimeStop;                // end time of runs(s)
66
67   TH2F*       fhQmaxVsRow;              //        QmaxVsRow
68   TH2F*       fhQtotVsRow;              //        QtotVsRow
69                                                                                             
70   TProfile*   fhQtotProfileVsRow;       //        QtotProfileVsRow
71   TProfile*   fhQmaxProfileVsRow;       //        QmaxProfileVsRow
72
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
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                                                                                             
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
96                                                                                             
97   TH1F*       fhTrackQtotPerCluster;    //        TrackQtotPerCluster
98                                                                                             
99   TH2F*       fhTrackQtotPerClusterVsPhi; //      TrackQtotPerClusterVsPhi
100   TH2F*       fhTrackQtotPerClusterVsTheta; //    TrackQtotPerClusterVsTheta
101                                                                                             
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
107
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
111
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
121   ClassDef(AliTPCClusterHistograms,1)
122 };
123
124 #endif
125