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"
22 #include <TObjArray.h>
29 //___________________________________________________________________
30 /** @class AliFMDDisplay
31 @brief Utility class to visualize FMD data in geometry.
34 class AliFMDDisplay : public AliFMDInput
38 @param onlyFMD Only show the FMD
39 @param gAliceFile galice file*/
40 AliFMDDisplay(Bool_t onlyFMD=kTRUE, const char* gAliceFile="galice.root");
42 virtual ~AliFMDDisplay();
43 /** Singleton access function
44 @return Singleton object. */
45 static AliFMDDisplay* Instance();
47 /** Continue to next event */
48 void Continue() { fWait = kFALSE; }
50 void Zoom() { fZoomMode = kTRUE; }
52 void Pick() { fZoomMode = kFALSE; }
53 /** Redisplay the event */
54 virtual void Redisplay(); // *MENU*
56 virtual void ChangeCut();
57 /** Called when a mouse or similar event happens in the display.
58 @param event Event type
59 @param px where the event happened in pixels along X
60 @param py where the event happened in pixels along Y */
61 virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py);
62 /** Calculate distance from point @f$ (p_x,p_y)@f$ to this object.
63 @param px Pixel X coordinate
64 @param py Pixel Y coordinate
66 virtual Int_t DistancetoPrimitive(Int_t px, Int_t py);
68 @param option Not used */
69 virtual void Paint(Option_t* option="") { (void)option; }
72 @return @c false on error */
73 virtual Bool_t Init();
74 /** Called at beginning of an event
75 @param event Event number
76 @return @c false on error */
77 virtual Bool_t Begin(Int_t event);
78 /** Called at end of an event
79 @return @c false on error */
84 @return @c false on error */
85 virtual Bool_t ProcessHit(AliFMDHit* hit, TParticle* p);
87 @param digit Digit to draw
88 @return @c false on error */
89 virtual Bool_t ProcessDigit(AliFMDDigit* digit);
90 /** Visualize a raw digit
91 @param digit Raw digit.
92 @return @c false on error */
93 virtual Bool_t ProcessRaw(AliFMDDigit* digit);
94 /** Visualize a reconstructed point.
95 @param recpoint Reconstructed point
96 @return @c false on error */
97 virtual Bool_t ProcessRecPoint(AliFMDRecPoint* recpoint);
98 /** Process ESD data for the FMD. Users should overload this to
100 @param d Detector number (1-3)
101 @param r Ring identifier ('I' or 'O')
102 @param s Sector number (0-19, or 0-39)
103 @param t Strip number (0-511, or 0-255)
104 @param eta Psuedo-rapidity
105 @param mult Psuedo-multiplicity
106 @return @c false on error */
107 virtual Bool_t ProcessESD(UShort_t d, Char_t r, UShort_t s, UShort_t t,
108 Float_t eta, Float_t mult);
109 /** Look up a color index, based on the value @a x and the maximum
112 @param max Maximum (for example 1023 for digits)
113 @return @c false on error */
114 virtual Int_t LookupColor(Float_t x, Float_t max) const;
115 /** Set multiplicity cut
116 @param cut Cut-off in multiplicity */
117 virtual void SetMultiplicityCut(Float_t c=.01) { fMultCut = c; }//*MENU*
118 /** Set pedestal width factor
120 virtual void SetPedestalFactor(Float_t f=3) { fPedestalFactor = f; }//*MENU*
123 @param o Object to copy from */
124 AliFMDDisplay(const AliFMDDisplay& o)
150 /** Assignment operator
151 @return Reference to this object */
152 AliFMDDisplay& operator=(const AliFMDDisplay&) { return *this; }
153 /** Add a marker to the display
158 @param o Object to refer to
160 @param max Maximum of signal */
161 virtual void AddMarker(UShort_t det, Char_t rng, UShort_t sec, UShort_t str,
162 TObject* o, Float_t s, Float_t max);
164 /** Show only the FMD detectors. */
166 /** Make base canvas */
167 virtual void MakeCanvas(const char** which);
168 virtual void MakeAux();
169 virtual void DrawAux();
171 virtual void AtEnd();
173 static AliFMDDisplay* fgInstance; // Static instance
174 Bool_t fWait; // Wait until user presses `Continue'
175 TObjArray* fMarkers; // Cache of markers
176 TObjArray* fHits; // Cache of `hits'
177 TCanvas* fCanvas; // Canvas to draw in
178 TPad* fPad; // View pad.
179 TObjArray fButtons; // Continue button
180 TSlider* fSlider; // Cut slider
181 Bool_t fZoomMode; // Whether we're in Zoom mode
182 Float_t fX0; // X at lower left corner or range
183 Float_t fY0; // Y at lower left corner or range
184 Float_t fX1; // X at upper right corner or range
185 Float_t fY1; // Y at upper right corner or range
186 Float_t fMultCut; // Multiplicity cut
187 Float_t fPedestalFactor; // ADC acceptance factor
188 Int_t fXPixel; // X pixel of mark
189 Int_t fYPixel; // Y pixel of mark
190 Int_t fOldXPixel; // Old x pixel of mark
191 Int_t fOldYPixel; // Old y pixel of mark
192 Bool_t fLineDrawn; // Whether we're drawing a box
193 Bool_t fOnlyFMD; // Whether to only do FMD
194 TH1* fSpec; // Spectra
195 TH1* fSpecCut; // Cut spectra
196 TCanvas* fAux; // Aux canvas.
197 ClassDef(AliFMDDisplay,0) // FMD specialised event display
201 //____________________________________________________________________