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