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>
26 #include "AliPhysicsSelection.h"
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(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);
76 Int_t fId; // Identifier #
77 TArrayI fCounts; // Number of counts at each level
78 TObjArray fGraphs; // Array of graphs - one for each level
79 TH2* fFrame; // The mother frame
83 AliFMDPatternDetector(const AliFMDPatternDetector&);
84 /** Assignement operator
86 AliFMDPatternDetector& operator=(const AliFMDPatternDetector&);
87 void CopyShapes(TObjArray& input, TObjArray& own,
88 Double_t ang=0, Double_t fx=1, Double_t fy=1);
89 /** Our own cache of shapes */
91 /** Our own cache of shapes */
97 @param gAliceFile galice file*/
98 AliFMDPattern(const char* gAliceFile="galice.root");
100 virtual ~AliFMDPattern();
103 @return @c false on error */
104 virtual Bool_t Init();
105 /** Called at beginning of an event
106 @param event Event number
107 @return @c false on error */
108 virtual Bool_t Begin(Int_t event);
111 - Not implemented. */
112 AliFMDPattern(const AliFMDPattern&);
113 /** Assignement operator
114 -- Not implemented */
115 AliFMDPattern& operator=(const AliFMDPattern&);
116 virtual void AddMarker(Float_t x, Float_t y, Float_t z,
117 TObject* o, Float_t s, Float_t min, Float_t max)
119 AliFMDDisplay::AddMarker(x, y, z, o, s, min, max);
121 /** Add a marker to the display
126 @param o Object to refer to
128 @param max Maximum of signal */
129 virtual void AddMarker(UShort_t det, Char_t rng, UShort_t sec,
130 UShort_t str, TObject* o, Float_t s,
131 Float_t min, Float_t max);
132 /** @param hit Hit to process */
133 virtual Bool_t ProcessHit(AliFMDHit* hit, TParticle*);
134 /** Re-draw the patterns */
135 virtual void Redisplay();
136 /** Called at the end. */
137 virtual void AtEnd();
138 /** Graph to show shape of inner sensor */
139 TObjArray fInners; // Graph to show shape of inner sensor
140 /** Graph to show shape of outer sensor */
141 TObjArray fOuters; // Graph to show shape of outer sensor
142 /** Max inner radius */
143 Float_t fInnerMax; // Max inner radius
144 /** Max outer radius */
145 Float_t fOuterMax; // Max outer radius
147 TPad* fFMD1Pad; // FMD1 Pad
149 AliFMDPatternDetector fFMD1; // FMD1 Frame
151 TPad* fFMD2Pad; // FMD2 Pad
153 AliFMDPatternDetector fFMD2; // FMD2 Frame
155 TPad* fFMD3Pad; // FMD3 Pad
157 AliFMDPatternDetector fFMD3; // FMD3 Frame
159 TPad* fSummary; // Summary pad
161 TLatex fEvent; // Text fields
162 TLatex fFMD1Sum; // Total in FMD1
163 TLatex fFMD2Sum; // Total in FMD1
164 TLatex fFMD3Sum; // Total in FMD1
165 TLine fLine; // Just a line
166 TLatex fTotal; // Total in FMD
168 Double_t fFMD1Area; //
169 Double_t fFMD2Area; //
170 Double_t fFMD3Area; //
172 AliPhysicsSelection* fPhysicsSelection;
174 ClassDef(AliFMDPattern,0) // Display FMD data as hit-patterns.
179 //____________________________________________________________________