]> git.uio.no Git - u/mrichter/AliRoot.git/blob - RICH/AliRICHDisplay.h
New drawing routine from Nico and Daniela
[u/mrichter/AliRoot.git] / RICH / AliRICHDisplay.h
1 #ifndef ALIRICHDISPLAY_H
2 #define ALIRICHDISPLAY_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 /* $Id$ */
8
9 //////////////////////////////////////////////////////////////////////////
10 //                                                                      //
11 // AliDisplay                                                           //
12 //                                                                      //
13 // Utility class to display ALice outline, tracks, hits,..              //
14 //                                                                      //
15 //////////////////////////////////////////////////////////////////////////
16
17 //#ifndef ROOT_TObject
18 #include <TObject.h>
19 #include <TPolyMarker3D.h>
20 #include <TAttLine.h>
21 #include <TAtt3D.h>
22
23 //#endif
24 #include "AliDisplay.h"
25
26
27 class TCanvas;
28 class TPad;
29 class TList;
30 class TSlider;
31 class TButton;
32 class TArc;
33
34 class AliRICHEllipse;
35
36 const Int_t kMAXZOOM = 20;
37
38 class AliRICHDisplay : public AliDisplay {
39  public:
40     AliRICHDisplay();
41     AliRICHDisplay(Int_t size);
42     virtual          ~AliRICHDisplay();
43     virtual void      Clear(Option_t *option="");
44     virtual void      DisplayButtons();
45     virtual void      CreateColors();
46     virtual void      DisplayColorScale();
47     virtual Int_t     DistancetoPrimitive(Int_t px, Int_t py);
48     virtual void      Draw(Option_t *option="");
49     virtual void      DrawCoG();
50     virtual void      DrawRecHits();
51     virtual void      DrawCerenkovs();
52     virtual void      DrawClusters();
53     virtual void      DrawHits();
54     virtual void      DrawTitle(Option_t *option="");
55     virtual void      DrawView(Float_t theta, Float_t phi, Float_t psi=0);
56     virtual void      DrawViewGL();
57     virtual void      DrawViewX3D();
58     virtual void      ExecuteEvent(Int_t event, Int_t px, Int_t py);
59     Int_t             GetZoomMode() {return fZoomMode;}
60     Int_t             GetChamber() {return fChamber;}
61     Int_t             GetCathode() {return fCathode;}
62     virtual void      LoadDigits();
63     virtual void      LoadRecHits(Int_t chamber, Int_t cathode);
64     virtual void      LoadCoG(Int_t chamber, Int_t cathode);
65     virtual void      LoadCerenkovs(Int_t chamber);
66     virtual void      LoadHits(Int_t chamber);
67     TPad             *Pad() {return fPad;}
68     TObjArray        *Points() {return fPoints;}
69     TObjArray        *Phits() {return fPhits;}
70     TObjArray        *Rpoints() {return fRpoints;}
71     TObjArray        *PCerenkovs() {return fPCerenkovs;}
72     virtual void      Paint(Option_t *option="");
73     virtual void      SetDrawClusters(Bool_t draw=kTRUE) {fDrawClusters=draw;}   // *MENU*
74     virtual void      SetDrawCoG(Bool_t draw=kTRUE) {fDrawCoG=draw;}   // *MENU*
75     virtual void      SetChamberAndCathode(Int_t chamber=1, Int_t cathode=1); // *MENU*
76     virtual void      SetRange(Float_t rrange=250, Float_t zrange=1050); // *MENU*
77     virtual void      SetView(Float_t theta, Float_t phi, Float_t psi=0);
78     virtual void      SetPickMode();
79     virtual void      SetZoomMode();
80     virtual void      ShowNextEvent(Int_t delta=1);
81     virtual void      UnZoom(); // *MENU*
82     virtual void      ResetPoints();
83     virtual void      ResetRpoints();
84     virtual void      ResetRecpoints();
85     virtual void      ResetPhits();
86     virtual void      ResetPCerenkovs();
87  private:
88     Int_t             fChamber;              //Chamber number
89     Int_t             fCathode;              //Cathode number
90     Int_t             fZoomMode;             //=1 if in zoom mode
91     
92     Bool_t            fDrawClusters;         //Flag True if Clusters to be drawn
93     Bool_t            fDrawCoG;              //Flag True if CoG to be drawn
94     Bool_t            fDrawRecHits;          //Flag True if rec hits to be drawn
95     Float_t           fTheta;                //Viewing angle theta
96     Float_t           fPhi;                  //Viewing angle phi
97     Float_t           fPsi;                  //Viewving angle psi (rotation on display)
98     Float_t           fRrange;               //Size of view in R
99     Float_t           fZrange;               //Size of view along Z
100     Float_t           fZoomX0[20];           //Low x range of zoom number i
101     Float_t           fZoomY0[20];           //Low y range of zoom number i
102     Float_t           fZoomX1[20];           //High x range of zoom number i
103     Float_t           fZoomY1[20];           //High y range of zoom number i
104     Int_t             fZooms;                //Number of zooms
105     Int_t             fHitsCuts;             //Number of hits surviving cuts
106     Int_t             fClustersCuts;         //Number of clusters surviving cuts
107     TCanvas          *fCanvas;               //Pointer to the display canvas
108     TPad             *fTrigPad;              //Pointer to the trigger pad 
109     TPad             *fColPad;               //Pointer to the colors pad 
110     TPad             *fButtons;              //Pointer to the buttons pad
111     TPad             *fPad;                  //Pointer to the event display main pad
112     TSlider          *fRangeSlider;          //Range slider
113     TButton          *fPickButton;           //Button to activate Pick mode
114     TButton          *fZoomButton;           //Button to activate Zoom mode
115     TArc             *fArcButton;            //Gren/Red button to show Pick/Zoom mode
116     TObjArray        *fPoints;               //Array of points for each cathode
117     TObjArray        *fPhits;                //Array of hit points for each chamber
118     TObjArray        *fPCerenkovs;           //Array of cerenkov hits for each chamber
119     TObjArray        *fRpoints;              //Array of cog points for each cathode 
120     TObjArray        *fRecpoints;            //Array of rec points for each cathode 
121     ClassDef(AliRICHDisplay, 0)   //Utility class to display RICH clusters...
122         
123 };
124 #endif
125