AliHLTTPCSpacePointData:
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCDisplay.h
1 // @(#) $Id$
2
3 #ifndef ALIHLTTPCDISPLAY_H
4 #define ALIHLTTPCDISPLAY_H
5
6 /** \class AliHLTTPCDisplay
7 <pre>
8 //_____________________________________________________________
9 // AliHLTTPCDisplay
10 //
11 // Display class for the HLT TPC events.
12 </pre>
13 */
14 // Author: Jochen Thaeder <mailto:thaeder@kip.uni-heidelberg.de>
15 //         Anders Vestbo <mailto:vestbo@fi.uib.no>
16 //*-- Copyright &copy ALICE HLT Group 
17
18 #include <TGeometry.h>
19 #include <TObject.h>
20 #include <TCanvas.h>
21 #include <TH2.h>
22
23 class AliHLTTPCSpacePointData;
24 class AliHLTTPCTrackArray;
25
26 class AliHLTTPCDisplay : public TObject {
27
28  public:
29   AliHLTTPCDisplay(Char_t *gfile="$(ALIHLT_BASEDIR)/geo/alice.geom");
30   virtual ~AliHLTTPCDisplay();
31
32   // SETUP
33   void SetupHistPadRow();
34   void SetupCluster(Int_t slice, Int_t patch, UInt_t nofClusters, AliHLTTPCSpacePointData* data);
35   void SetupTracks(AliHLTTPCTrackArray *tracks);
36
37   
38   void FillPadRow(Int_t patch, ULong_t dataBlock, ULong_t dataLen);
39   void ResetHistPadRow();
40
41   // DRAWER
42   void Draw3D();
43   void DrawHistPadRow(); 
44   void DrawGeomSector(Int_t sector);
45   void DrawHistPad1();
46   void DrawHistPad2();
47   void DrawHistPad3();
48  
49   // SETTER  
50   void SetSliceArray();
51   void SetSlices(){fMinSlice = 0; fMaxSlice = 35; fSlicePair = kFALSE; SetSliceArray();}
52   void SetSlices(Int_t s){fMinSlice = s; fMaxSlice = s; fSlicePair = kFALSE; SetSliceArray();}
53   void SetSlices(Int_t mins, Int_t maxs){fMinSlice = mins; fMaxSlice = maxs; fSlicePair = kFALSE; SetSliceArray();}
54   void SetSlicesPair(Int_t s){fMinSlice = s; fMaxSlice = s; fSlicePair = kTRUE; SetSliceArray();}
55   void SetSlicesPair(Int_t mins, Int_t maxs){fMinSlice = mins; fMaxSlice = maxs; fSlicePair = kTRUE; SetSliceArray();}
56   void SetPad(Int_t f){fPad = f;}
57   void SetPadRow(Int_t f){fPadRow = f;}
58   void SetSlicePadRow(Int_t f){fSlicePadRow = f;}
59   void SetMinHits(Int_t f){fMinHits = f;}
60   void SetPtThreshold(Float_t f){fPtThreshold = f;}
61   void SetSwitches(Bool_t f1, Bool_t f2, Bool_t f3, Bool_t f4) {fSwitch3DTracks = f1; fSwitch3DCluster = f2; fSwitch3DPadRow = f3; fSwitch3DGeometry = f4;} 
62   void SetHistPadRowAxis();
63   void SetSelectTrack(Int_t f) {fSelectTrack = f;}
64   void SetSelectTrackSlice(Int_t f) {fSelectTrackSlice = f;}
65   void SetSelectTrackSwitch(Bool_t f) {fSelectTrackSwitch = f;}
66   void SetSelectCluster(Int_t f) {fSelectCluster = f;}
67   void SetInvert() {Int_t tmp = fBackColor; fBackColor = fLineColor; fLineColor = tmp; }
68   void SetKeepView(Bool_t f){fKeepView = f;} 
69
70   // GETTER
71   Int_t GetPadRow(){return fPadRow;}
72   Int_t GetSlicePadRow(){return fSlicePadRow;}
73   Int_t GetNPads(){return fNPads;}
74   Int_t GetBackColor() {return fBackColor;}
75
76   private:
77   Bool_t LoadGeometrie(Char_t *gfile);
78
79   AliHLTTPCDisplay(const AliHLTTPCDisplay &/*d*/):TObject(){;}
80   AliHLTTPCDisplay& operator=(const AliHLTTPCDisplay &/*d*/){return *this;}
81
82   AliHLTTPCSpacePointData *fClusters[36][6]; 
83   AliHLTTPCTrackArray *fTracks; 
84
85   UInt_t fNcl[36][6];//number of cluster
86
87   TH1F *fHistrawcl;  // histogram for cluster in padrow
88   TH2F *fHistraw;    // histogram for signals in padrow
89   TH1F *fHistpad1;   // histogram for pad in padrow
90   TH1F *fHistpad2;   // histogram for pad in padrow
91   TH1F *fHistpad3;   // histogram for pad in padrow
92
93   TGeometry *fGeom;  // geometry
94   Int_t fBackColor;  // Background color
95   Int_t fLineColor;  // Line color
96   Bool_t fKeepView;  // Keep View when redisplaying
97
98   Int_t fPad;        // pad
99   Int_t fPadRow;     // padrow
100   Int_t fSlicePadRow;// slice where padrow is in
101   Int_t fNPads;      // number of pads in padrow
102   Int_t fNTimes;     // number of timebins
103   Int_t fMinHits;    // minimum cluster per track
104   Float_t fPtThreshold;// pt threshold for tracks
105
106   Bool_t fSelectTrackSwitch;// switch ti single track mode
107   Int_t fSelectTrack;// select single track
108   Int_t fSelectTrackSlice; // select slice for single track
109
110   Int_t fSelectCluster; // select all=0, used=1, unused=2 cluster
111
112   Int_t fMinSlice;   //min slice
113   Int_t fMaxSlice;   //max slice
114   Bool_t fSlicePair; //draw pair of slices;
115   Bool_t fSliceArray[36];//Array if slice should be drawn or not
116
117   Bool_t fDrawGeo;
118   Int_t fcolorbin[20]; // number of entries per colorbin
119   Int_t fbinct[20];    // index of colorbin
120   Float_t *fpmarr[20]; // contains point data
121
122   Bool_t fSwitch3DCluster;
123   Bool_t fSwitch3DTracks;
124   Bool_t fSwitch3DPadRow;
125   Bool_t fSwitch3DGeometry;
126
127   ClassDef(AliHLTTPCDisplay,1) //Display class
128 };
129
130 #endif