1 #ifndef AliFMDPATTERN_H
2 #define AliFMDPATTERN_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
6 * See cxx source for full Copyright notice
8 /** @file AliFMDPattern.h
9 @author Christian Holm Christensen <cholm@nbi.dk>
10 @date Mon Mar 27 12:39:09 2006
11 @brief FMD Event display (as patterns)
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 "AliFMDDisplay.h"
23 #include <TObjArray.h>
24 // #include <TGraph.h>
27 // class AliPhysicsSelection;
33 //___________________________________________________________________
34 /** @class AliFMDPattern
35 @brief Utility class to visualize FMD data in 2D.
38 class AliFMDPattern : public AliFMDDisplay
41 /** @class AliFMDPatternDetector
42 @brief Utility for the pattern display.
43 The name is this long, because the code-checker even cares about
44 nested names, even though it seems a bit nit-picking and
45 retareded. It's a class rather than a structure, because the
46 code checker thinks that structs are only for POD - sigh! */
47 class AliFMDPatternDetector
51 AliFMDPatternDetector(UShort_t id);
53 ~AliFMDPatternDetector();
54 /** Clear this detector */
56 /** Get the total number of hits */
57 Int_t Total() const { return Int_t(fCounts.GetSum()); }
58 /** Called at the end of things */
61 @param nlvl Number of levels.
63 @param inners Array of inner shapes
64 @param outers Array of outer shapes */
65 void Begin(Int_t nlvl, Double_t r, TObjArray& inners,
68 @param a Array of shapes to draw */
69 void DrawShape(const TObjArray& a);
70 /** Add a marker at specified coordinates
74 @param max The maximum value to scale to */
75 void AddMarker(Double_t x, Double_t y, Float_t s, Float_t max);
81 Int_t GetId() const { return fId; }
83 * Get the counts array. Number of counts at each level
85 * @return Counts array
87 TArrayI& GetCounts() { return fCounts; }
89 * Get the counts array. Number of counts at each level
91 * @return Counts array
93 const TArrayI& GetCounts() const { return fCounts; }
95 * Get the list of graphs
97 * @return Array of graphs - one for each level
99 TObjArray& GetGraphs() { return fGraphs; }
101 * Get the list of graphs
103 * @return Array of graphs - one for each level
105 const TObjArray& GetGraphs() const { return fGraphs; }
107 * Get the mother frame
109 * @return The mother frame
111 TH2*& GetFrame() { return fFrame; }
113 * Get the mother frame
115 * @return The mother frame
117 const TH2* GetFrame() const { return fFrame; }
123 AliFMDPatternDetector(const AliFMDPatternDetector&);
125 * Assignement operator
128 AliFMDPatternDetector& operator=(const AliFMDPatternDetector&);
132 * @param input Source
138 void CopyShapes(const TObjArray& input, TObjArray& own,
139 Double_t ang=0, Double_t fx=1, Double_t fy=1);
140 Int_t fId; // Identifier #
141 TArrayI fCounts; // Number of counts at each level
142 TObjArray fGraphs; // Array of graphs - one for each level
143 TH2* fFrame; // The mother frame
144 TObjArray fInners; // Our own cache of shapes
145 TObjArray fOuters; // Our own cache of shapes
150 @param gAliceFile galice file*/
151 AliFMDPattern(const char* gAliceFile="galice.root");
153 virtual ~AliFMDPattern();
156 @return @c false on error */
157 virtual Bool_t Init();
158 /** Called at beginning of an event
159 @param event Event number
160 @return @c false on error */
161 virtual Bool_t Begin(Int_t event);
164 - Not implemented. */
165 AliFMDPattern(const AliFMDPattern&);
166 /** Assignement operator
167 -- Not implemented */
168 AliFMDPattern& operator=(const AliFMDPattern&);
169 virtual void AddMarker(Float_t x, Float_t y, Float_t z,
170 TObject* o, Float_t s, Float_t min, Float_t max)
172 AliFMDDisplay::AddMarker(x, y, z, o, s, min, max);
174 /** Add a marker to the display
179 @param o Object to refer to
181 @param max Maximum of signal */
182 virtual void AddMarker(UShort_t det, Char_t rng, UShort_t sec,
183 UShort_t str, TObject* o, Float_t s,
184 Float_t min, Float_t max);
185 /** @param hit Hit to process */
186 virtual Bool_t ProcessHit(AliFMDHit* hit, TParticle*);
187 /** Re-draw the patterns */
188 virtual void Redisplay();
189 /** Called at the end. */
190 virtual void AtEnd();
191 TObjArray fInners; // Graph to show shape of inner sensor
192 TObjArray fOuters; // Graph to show shape of outer sensor
193 Float_t fInnerMax; // Max inner radius
194 Float_t fOuterMax; // Max outer radius
195 TPad* fFMD1Pad; // FMD1 Pad
196 AliFMDPatternDetector fFMD1; // FMD1 Frame
197 TPad* fFMD2Pad; // FMD2 Pad
198 AliFMDPatternDetector fFMD2; // FMD2 Frame
199 TPad* fFMD3Pad; // FMD3 Pad
200 AliFMDPatternDetector fFMD3; // FMD3 Frame
201 TPad* fSummary; // Summary pad
202 TLatex fEvent; // Text fields
203 TLatex fFMD1Sum; // Total in FMD1
204 TLatex fFMD2Sum; // Total in FMD2
205 TLatex fFMD3Sum; // Total in FMD3
206 TLine fLine; // Just a line
207 TLatex fTotal; // Total in FMD
209 Double_t fFMD1Area; // estimated FMD1 area
210 Double_t fFMD2Area; // estimated FMD2 area
211 Double_t fFMD3Area; // estimated FMD3 area
213 // AliPhysicsSelection* fPhysicsSelection;
215 ClassDef(AliFMDPattern,0) // Display FMD data as hit-patterns.
220 //____________________________________________________________________