1 #ifndef AliFMDDISPLAY_H
2 #define AliFMDDISPLAY_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
6 * See cxx source for full Copyright notice
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
13 //___________________________________________________________________
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.
21 #include "AliFMDInput.h"
27 //___________________________________________________________________
28 /** @class AliFMDDisplay
29 @brief Utility class to visualize FMD data in geometry.
32 class AliFMDDisplay : public AliFMDInput
36 @param gAliceFile galice file*/
37 AliFMDDisplay(const char* gAliceFile="galice.root");
39 virtual ~AliFMDDisplay() {}
40 /** Singleton access function
41 @return Singleton object. */
42 static AliFMDDisplay* Instance();
44 /** Continue to next event */
45 void Continue() { fWait = kFALSE; }
47 void Zoom() { fZoomMode = kTRUE; }
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
59 Int_t DistancetoPrimitive(Int_t px, Int_t py);
61 @param option Not used */
62 void Paint(Option_t* option="") { (void)option; }
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 */
77 @return @c false on error */
78 virtual Bool_t ProcessHit(AliFMDHit* hit, TParticle* p);
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
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;
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
121 //____________________________________________________________________