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>
32 //___________________________________________________________________
33 /** @class AliFMDPattern
34 @brief Utility class to visualize FMD data in 2D.
37 class AliFMDPattern : public AliFMDDisplay
40 /** @class AliFMDPatternDetector
41 @brief Utility for the pattern display.
42 The name is this long, because the code-checker even cares about
43 nested names, even though it seems a bit nit-picking and
44 retareded. It's a class rather than a structure, because the
45 code checker thinks that structs are only for POD - sigh! */
46 class AliFMDPatternDetector
50 AliFMDPatternDetector(UShort_t id);
52 ~AliFMDPatternDetector();
53 /** Clear this detector */
55 /** Get the total number of hits */
56 Int_t Total() const { return Int_t(fCounts.GetSum()); }
57 /** Called at the end of things */
60 @param nlvl Number of levels.
62 @param inners Array of inner shapes
63 @param outers Array of outer shapes */
64 void Begin(Int_t nlvl, Double_t r, TObjArray& inners,
67 @param a Array of shapes to draw */
68 void DrawShape(TObjArray& a);
69 /** Add a marker at specified coordinates
73 @param max The maximum value to scale to */
74 void AddMarker(Double_t x, Double_t y, Float_t s, Float_t max);
75 Int_t fId; // Identifier #
76 TArrayI fCounts; // Number of counts at each level
77 TObjArray fGraphs; // Array of graphs - one for each level
78 TH2* fFrame; // The mother frame
82 AliFMDPatternDetector(const AliFMDPatternDetector&);
83 /** Assignement operator
85 AliFMDPatternDetector& operator=(const AliFMDPatternDetector&);
86 void CopyShapes(TObjArray& input, TObjArray& own,
87 Double_t ang=0, Double_t fx=1, Double_t fy=1);
88 /** Our own cache of shapes */
90 /** Our own cache of shapes */
96 @param gAliceFile galice file*/
97 AliFMDPattern(const char* gAliceFile="galice.root");
99 virtual ~AliFMDPattern();
102 @return @c false on error */
103 virtual Bool_t Init();
104 /** Called at beginning of an event
105 @param event Event number
106 @return @c false on error */
107 virtual Bool_t Begin(Int_t event);
110 - Not implemented. */
111 AliFMDPattern(const AliFMDPattern&);
112 /** Assignement operator
113 -- Not implemented */
114 AliFMDPattern& operator=(const AliFMDPattern&);
115 virtual void AddMarker(Float_t x, Float_t y, Float_t z,
116 TObject* o, Float_t s, Float_t min, Float_t max)
118 AliFMDDisplay::AddMarker(x, y, z, o, s, min, max);
120 /** Add a marker to the display
125 @param o Object to refer to
127 @param max Maximum of signal */
128 virtual void AddMarker(UShort_t det, Char_t rng, UShort_t sec,
129 UShort_t str, TObject* o, Float_t s,
130 Float_t min, Float_t max);
131 /** @param hit Hit to process */
132 virtual Bool_t ProcessHit(AliFMDHit* hit, TParticle*);
133 /** Re-draw the patterns */
134 virtual void Redisplay();
135 /** Called at the end. */
136 virtual void AtEnd();
137 /** Graph to show shape of inner sensor */
138 TObjArray fInners; // Graph to show shape of inner sensor
139 /** Graph to show shape of outer sensor */
140 TObjArray fOuters; // Graph to show shape of outer sensor
141 /** Max inner radius */
142 Float_t fInnerMax; // Max inner radius
143 /** Max outer radius */
144 Float_t fOuterMax; // Max outer radius
146 TPad* fFMD1Pad; // FMD1 Pad
148 AliFMDPatternDetector fFMD1; // FMD1 Frame
150 TPad* fFMD2Pad; // FMD2 Pad
152 AliFMDPatternDetector fFMD2; // FMD2 Frame
154 TPad* fFMD3Pad; // FMD3 Pad
156 AliFMDPatternDetector fFMD3; // FMD3 Frame
158 TPad* fSummary; // Summary pad
160 TLatex fEvent; // Text fields
161 TLatex fFMD1Sum; // Total in FMD1
162 TLatex fFMD2Sum; // Total in FMD1
163 TLatex fFMD3Sum; // Total in FMD1
164 TLine fLine; // Just a line
165 TLatex fTotal; // Total in FMD
167 Double_t fFMD1Area; //
168 Double_t fFMD2Area; //
169 Double_t fFMD3Area; //
171 ClassDef(AliFMDPattern,0) // Display FMD data as hit-patterns.
176 //____________________________________________________________________