Added documentation of each file.
[u/mrichter/AliRoot.git] / FMD / AliFMDDisplay.h
1 #ifndef AliFMDDISPLAY_H
2 #define AliFMDDISPLAY_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
4  * reserved. 
5  *
6  * See cxx source for full Copyright notice                               
7  */
8 /** @file    AliFMDDisplay.h
9     @author  Christian Holm Christensen <cholm@nbi.dk>
10     @date    Mon Mar 27 12:39:09 2006
11     @brief   FMD Event display 
12 */
13 //___________________________________________________________________
14 //
15 // The classes defined here, are utility classes for reading in data
16 // for the FMD.  They are  put in a seperate library to not polute the
17 // normal libraries.  The classes are intended to be used as base
18 // classes for customized class that do some sort of analysis on the
19 // various types of data produced by the FMD. 
20 //
21 #include "AliFMDInput.h"
22 class TObjArray;
23 class TCanvas;
24 class TPad;
25 class TButton;
26
27 //___________________________________________________________________
28 /** @class AliFMDDisplay 
29     @brief Utility class to visualize FMD data in geometry. 
30     @ingroup FMD_util
31  */
32 class AliFMDDisplay : public AliFMDInput
33 {
34 public:
35   /** Constructor
36       @param gAliceFile galice file*/
37   AliFMDDisplay(const char* gAliceFile="galice.root");
38   /** DTOR */
39   virtual ~AliFMDDisplay() {}
40   /** Singleton access function
41       @return Singleton object. */
42   static AliFMDDisplay* Instance();
43
44   /** Continue to next event */
45   void  Continue() { fWait = kFALSE; }
46   /** Zoom mode */
47   void  Zoom() { fZoomMode = kTRUE; }
48   /** Pick mode */
49   void  Pick() { fZoomMode = kFALSE; }
50   /** Called when a mouse or similar event happens in the display. 
51       @param event Event type
52       @param px    where the event happened in pixels along X
53       @param py    where the event happened in pixels along Y */
54   void  ExecuteEvent(Int_t event, Int_t px, Int_t py);
55   /** Calculate distance from point @f$ (p_x,p_y)@f$ to this object. 
56       @param px Pixel X coordinate 
57       @param py Pixel Y coordinate 
58       @return distance. */
59   Int_t DistancetoPrimitive(Int_t px, Int_t py);
60   /** Paint into canvas 
61       @param option Not used */
62   void  Paint(Option_t* option="") { (void)option; }
63
64   /** Initialize
65       @return  @c false on error */
66   virtual Bool_t Init();
67   /** Called at beginning of an event 
68       @param event Event number
69       @return @c false on error  */
70   virtual Bool_t Begin(Int_t event);
71   /** Called at end of an event 
72       @return @c false on error  */
73   virtual Bool_t End();
74   /** Visualize a hit
75       @param hit Hit
76       @param p   Track
77       @return @c false on error  */
78   virtual Bool_t ProcessHit(AliFMDHit* hit, TParticle* p);
79   /** Visualize a digit
80       @param digit Digit to draw
81       @return @c false on error  */
82   virtual Bool_t ProcessDigit(AliFMDDigit* digit);
83   /** Visualize a raw digit
84       @param digit Raw digit.
85       @return @c false on error  */
86   virtual Bool_t ProcessRaw(AliFMDDigit* digit);
87   /** Visualize a reconstructed point.
88       @param recpoint Reconstructed point
89       @return @c false on error  */
90   virtual Bool_t ProcessRecPoint(AliFMDRecPoint* recpoint);
91   /** Look up a color index, based on the value @a x and the maximum
92       value of @a x
93       @param x   Value 
94       @param max Maximum (for example 1023 for digits)
95       @return @c false on error  */
96   virtual Int_t  LookupColor(Float_t x, Float_t max)  const;
97 protected:
98   static AliFMDDisplay* fgInstance; // Static instance 
99   Bool_t                fWait;      // Wait until user presses `Continue'
100   TObjArray*            fMarkers;   // Cache of markers
101   TObjArray*            fHits;      // Cache of `hits'
102   TCanvas*              fCanvas;    // Canvas to draw in 
103   TPad*                 fPad;       // View pad. 
104   TButton*              fButton;    // Continue button
105   TButton*              fZoom;      // Zoom button
106   TButton*              fPick;      // Pick button
107   Bool_t                fZoomMode;  // Whether we're in Zoom mode
108   Float_t               fX0;        // X at lower left corner or range 
109   Float_t               fY0;        // Y at lower left corner or range 
110   Float_t               fX1;        // X at upper right corner or range 
111   Float_t               fY1;        // Y at upper right corner or range 
112   Int_t                 fXPixel;    // X pixel of mark
113   Int_t                 fYPixel;    // Y pixel of mark
114   Int_t                 fOldXPixel; // Old x pixel of mark
115   Int_t                 fOldYPixel; // Old y pixel of mark
116   Bool_t                fLineDrawn; // Whether we're drawing a box
117   ClassDef(AliFMDDisplay,0)  // FMD specialised event display
118 };
119
120 #endif
121 //____________________________________________________________________
122 //
123 // Local Variables:
124 //   mode: C++
125 // End:
126 //
127 // EOF
128 //