]> git.uio.no Git - u/mrichter/AliRoot.git/blob - FMD/AliFMDPattern.h
Compilation warnings
[u/mrichter/AliRoot.git] / FMD / AliFMDPattern.h
1 #ifndef AliFMDPATTERN_H
2 #define AliFMDPATTERN_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    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)
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 "AliFMDDisplay.h"
22 #include <TArrayI.h>
23 #include <TObjArray.h>
24 // #include <TGraph.h>
25 #include <TLatex.h>
26 #include <TLine.h>
27 class TCanvas;
28 class TPad;
29 class TH2;
30
31
32 //___________________________________________________________________
33 /** @class AliFMDPattern 
34     @brief Utility class to visualize FMD data in 2D. 
35     @ingroup FMD_util
36  */
37 class AliFMDPattern : public AliFMDDisplay
38 {
39 public:
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 
47   {
48   public:
49     /** Constructor */
50     AliFMDPatternDetector(UShort_t id);
51     /** Destructor */
52     ~AliFMDPatternDetector();
53     /** Clear this detector */
54     void  Clear();
55     /** Get the total number of hits */
56     Int_t Total() const { return Int_t(fCounts.GetSum()); }
57     /** Called at the  end of things */ 
58     void  End();
59     /** Initiate. 
60         @param nlvl Number of levels. 
61         @param r    Radius 
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, 
65                 TObjArray&  outers);
66     /** Draw everything 
67         @param a Array of shapes to draw */
68     void  DrawShape(TObjArray& a);
69     /** Add a marker at specified coordinates 
70         @param X X coordinate 
71         @param Y Y coordinate 
72         @param Z Z coordinate 
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 
79   private:
80     /** Copy constructor 
81         - Not implemented. */ 
82     AliFMDPatternDetector(const AliFMDPatternDetector&);
83     /** Assignement operator 
84         -- Not implemented */
85     AliFMDPatternDetector& operator=(const AliFMDPatternDetector&);
86
87   };
88   
89   
90   /** Constructor
91       @param gAliceFile galice file*/
92   AliFMDPattern(const char* gAliceFile="galice.root");
93   /** DTOR */
94   virtual ~AliFMDPattern();
95
96   /** Initialize
97       @return  @c false on error */
98   virtual Bool_t Init();
99   /** Called at beginning of an event 
100       @param event Event number
101       @return @c false on error  */
102   virtual Bool_t Begin(Int_t event);
103  protected:
104   /** Copy constructor 
105       - Not implemented. */ 
106   AliFMDPattern(const AliFMDPattern&);
107   /** Assignement operator 
108       -- Not implemented */
109   AliFMDPattern& operator=(const AliFMDPattern&);
110   virtual void AddMarker(Float_t x, Float_t y, Float_t z, 
111                          TObject* o, Float_t s, Float_t min, Float_t max)
112   {
113     AliFMDDisplay::AddMarker(x, y, z, o, s, min, max);
114   }
115   /** Add a marker to the display
116       @param det Detector
117       @param rng Ring
118       @param sec Sector 
119       @param str Strip
120       @param o   Object to refer to
121       @param s   Signal 
122       @param max Maximum of signal */
123   virtual void AddMarker(UShort_t det, Char_t rng, UShort_t sec,
124                          UShort_t str, TObject* o, Float_t s, 
125                          Float_t min, Float_t max);
126   /** @param hit Hit to process */
127   virtual Bool_t ProcessHit(AliFMDHit* hit, TParticle*);
128   /** Re-draw the patterns */
129   virtual void Redisplay();
130   /** Called at the end. */
131   virtual void AtEnd();
132   /** Graph to show shape of inner sensor */
133   TObjArray fInners;    // Graph to show shape of inner sensor
134   /** Graph to show shape of outer sensor */
135   TObjArray fOuters;    // Graph to show shape of outer sensor
136   /** Max inner radius */
137   Float_t fInnerMax;    // Max inner radius
138   /** Max outer radius */
139   Float_t fOuterMax;    // Max outer radius
140   /** FMD1 Pad */
141   TPad*  fFMD1Pad;      // FMD1 Pad
142   /** FMD1 Frame */
143   AliFMDPatternDetector fFMD1;  // FMD1 Frame
144   /** FMD2 Pad  */
145   TPad*  fFMD2Pad;      // FMD2 Pad 
146   /** FMD2 Frame */
147   AliFMDPatternDetector fFMD2;  // FMD2 Frame
148   /** FMD3 Pad */
149   TPad*  fFMD3Pad;      // FMD3 Pad
150   /** FMD3 Frame */
151   AliFMDPatternDetector fFMD3;  // FMD3 Frame
152   /** Summary pad */
153   TPad* fSummary;       // Summary pad
154   /** Text fields */
155   TLatex fEvent;        // Text fields
156   TLatex fFMD1Sum;      // Total in FMD1
157   TLatex fFMD2Sum;      // Total in FMD1
158   TLatex fFMD3Sum;      // Total in FMD1
159   TLine  fLine;         // Just a line 
160   TLatex fTotal;        // Total in FMD
161
162   ClassDef(AliFMDPattern,0) // Display FMD data as hit-patterns. 
163 };
164
165
166 #endif
167 //____________________________________________________________________
168 //
169 // Local Variables:
170 //   mode: C++
171 // End:
172 //
173 // EOF
174 //