]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - FMD/AliFMDDisplay.h
Compilation of AliAnalysisGoodies.cxx only if Root was compiled with XML support
[u/mrichter/AliRoot.git] / FMD / AliFMDDisplay.h
... / ...
CommitLineData
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#include <TObjArray.h>
23class TCanvas;
24class TPad;
25class TButton;
26class TSlider;
27class TH1;
28
29//___________________________________________________________________
30/** @class AliFMDDisplay
31 @brief Utility class to visualize FMD data in geometry.
32 @ingroup FMD_util
33 */
34class AliFMDDisplay : public AliFMDInput
35{
36public:
37 /** Constructor
38 @param onlyFMD Only show the FMD
39 @param gAliceFile galice file*/
40 AliFMDDisplay(Bool_t onlyFMD=kTRUE, const char* gAliceFile="galice.root");
41 /** DTOR */
42 virtual ~AliFMDDisplay();
43 /** Singleton access function
44 @return Singleton object. */
45 static AliFMDDisplay* Instance();
46
47 /** Continue to next event */
48 void Continue() { fWait = kFALSE; }
49 /** Zoom mode */
50 void Zoom() { fZoomMode = kTRUE; }
51 /** Pick mode */
52 void Pick() { fZoomMode = kFALSE; }
53 /** Redisplay the event */
54 virtual void Redisplay(); // *MENU*
55 /** Change cut */
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
65 @return distance. */
66 virtual Int_t DistancetoPrimitive(Int_t px, Int_t py);
67 /** Paint into canvas
68 @param option Not used */
69 virtual void Paint(Option_t* option="") { (void)option; }
70
71 /** Initialize
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 */
80 virtual Bool_t End();
81 /** Visualize a hit
82 @param hit Hit
83 @param p Track
84 @return @c false on error */
85 virtual Bool_t ProcessHit(AliFMDHit* hit, TParticle* p);
86 /** Visualize a digit
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
99 deal with ESD data.
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
110 value of @a x
111 @param x Value
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
119 @param fac Factor */
120 virtual void SetPedestalFactor(Float_t f=3) { fPedestalFactor = f; }//*MENU*
121protected:
122 /** Copy constructor
123 @param o Object to copy from */
124 AliFMDDisplay(const AliFMDDisplay& o)
125 : AliFMDInput(o),
126 fWait(kFALSE),
127 fMarkers(0),
128 fHits(0),
129 fCanvas(0),
130 fPad(0),
131 fSlider(0),
132 fZoomMode(0),
133 fX0(0),
134 fY0(0),
135 fX1(0),
136 fY1(0),
137 fMultCut(0),
138 fPedestalFactor(0),
139 fXPixel(0),
140 fYPixel(0),
141 fOldXPixel(0),
142 fOldYPixel(0),
143 fLineDrawn(0)
144 { }
145 /** Assignment operator
146 @return Reference to this object */
147 AliFMDDisplay& operator=(const AliFMDDisplay&) { return *this; }
148 /** Add a marker to the display
149 @param det Detector
150 @param rng Ring
151 @param sec Sector
152 @param str Strip
153 @param o Object to refer to
154 @param s Signal
155 @param max Maximum of signal */
156 virtual void AddMarker(UShort_t det, Char_t rng, UShort_t sec, UShort_t str,
157 TObject* o, Float_t s, Float_t max);
158
159 /** Show only the FMD detectors. */
160 void ShowOnlyFMD();
161 /** Make base canvas */
162 virtual void MakeCanvas(const char** which);
163 virtual void MakeAux();
164 virtual void DrawAux();
165 virtual void Idle();
166 virtual void AtEnd();
167
168 static AliFMDDisplay* fgInstance; // Static instance
169 Bool_t fWait; // Wait until user presses `Continue'
170 TObjArray* fMarkers; // Cache of markers
171 TObjArray* fHits; // Cache of `hits'
172 TCanvas* fCanvas; // Canvas to draw in
173 TPad* fPad; // View pad.
174 TObjArray fButtons; // Continue button
175 TSlider* fSlider; // Cut slider
176 Bool_t fZoomMode; // Whether we're in Zoom mode
177 Float_t fX0; // X at lower left corner or range
178 Float_t fY0; // Y at lower left corner or range
179 Float_t fX1; // X at upper right corner or range
180 Float_t fY1; // Y at upper right corner or range
181 Float_t fMultCut; // Multiplicity cut
182 Float_t fPedestalFactor; // ADC acceptance factor
183 Int_t fXPixel; // X pixel of mark
184 Int_t fYPixel; // Y pixel of mark
185 Int_t fOldXPixel; // Old x pixel of mark
186 Int_t fOldYPixel; // Old y pixel of mark
187 Bool_t fLineDrawn; // Whether we're drawing a box
188 Bool_t fOnlyFMD;
189 TH1* fSpec;
190 TH1* fSpecCut;
191 TCanvas* fAux;
192 ClassDef(AliFMDDisplay,0) // FMD specialised event display
193};
194
195#endif
196//____________________________________________________________________
197//
198// Local Variables:
199// mode: C++
200// End:
201//
202// EOF
203//