Important changes to the reconstructor classes. Complete elimination of the run-loade...
[u/mrichter/AliRoot.git] / FMD / AliFMDFancy.h
1 #ifndef AliFMDFANCY_H
2 #define AliFMDFANCY_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    AliFMDFancy.h
9     @author  Christian Holm Christensen <cholm@nbi.dk>
10     @date    Mon Mar 27 12:39:09 2006
11     @brief   FMD Event display (as fancys)
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 <TObjArray.h>
23 #include <TGraph2D.h>
24 #include <TLatex.h>
25 #include <TLine.h>
26 class TCanvas;
27 class TPad;
28 class TH1;
29 class TH2;
30 // class TH3;
31
32
33 //___________________________________________________________________
34 /** @class AliFMDFancy 
35     @brief Utility class to visualize FMD data in 2D. 
36     @ingroup FMD_util
37  */
38 class AliFMDFancy : public AliFMDDisplay
39 {
40 public:
41   /** Sigh! the code checker thinks that all structs are POD - morron
42       */ 
43   class AliFancyDetector 
44   {
45   public:
46     /** CTOR */
47     AliFancyDetector(UShort_t id);
48     /** DTOR */
49     ~AliFancyDetector();
50     /** Initialise */
51     void Init();
52     /** Called at the beginning of an event */
53     void Begin(Int_t event=0);
54     /** Clear display */
55     void Clear(Int_t event=0);
56     /** Called that the end of an event */
57     void End();
58     /** Add a marker */
59     void AddMarker(Char_t rng, UShort_t sec, UShort_t str, 
60                    Float_t v, Float_t max);
61     /** Mother frame */
62     TH1*      fFrame;   // Mother frame
63     /** Identifier */
64     Int_t     fId;      // Identifier
65     /** Array of shapes */
66     TObjArray fShapes;  // Array of shapes
67     /** Number of inner hits */
68     Int_t     fNInnerHits;      // Number of inner hits
69     /** Graph of inner hits */
70     TGraph2D  fInnerHits;       // Graph of inner hits
71     /** Number of outer hits */
72     Int_t     fNOuterHits;      // Number of outer hits
73     /** Graph  of outer hits */
74     TGraph2D  fOuterHits;       // Graph  of outer hits
75     /** Maximum radius */
76     Double_t  fMaxR;    // Maximum radius
77     /** Minimum Z */
78     Double_t  fMinZ;    // Minimum Z
79     /** Maximum Z */
80     Double_t  fMaxZ;    // Maximum Z
81   private:
82     /** Add a histogram to a 2D graph.  For some reason the code
83         checker thinks that this function can be made const - well, it
84         cannot, since the graph passed down is a member of this
85         object, and would be const in the this context if the member
86         function is const.   Since we modify the graph, we cannot make
87         it a const reference, no matter how much we'd like to. */
88     void AddHistogram(TGraph2D& g, const char* toopt="");
89     /** Copy ctor */
90     AliFancyDetector(const AliFancyDetector& );
91     /** Assignement operator */
92     AliFancyDetector& operator=(const AliFancyDetector& ) { return *this; }
93   };
94     
95   /** Constructor
96       @param gAliceFile galice file*/
97   AliFMDFancy(const char* gAliceFile="galice.root");
98   /** DTOR */
99   virtual ~AliFMDFancy();
100
101   /** Initialize
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);
108   /** Called at end of an event 
109       @return @c false on error  */
110   virtual Bool_t End();
111 protected:
112   /** Copy ctor */
113   AliFMDFancy(const AliFMDFancy& );
114   /** Assignement operator */
115   AliFMDFancy& operator=(const AliFMDFancy& ) { return *this; }
116   /** Add a marker to the display
117       @param det Detector
118       @param rng Ring
119       @param sec Sector 
120       @param str Strip
121       @param o   Object to refer to
122       @param s   Signal 
123       @param max Maximum of signal */
124   virtual void AddMarker(UShort_t det, Char_t rng, UShort_t sec,
125                          UShort_t str, TObject* o, Float_t s, Float_t max);
126   /** Process a hit 
127       @param hit hit to process */
128   virtual Bool_t ProcessHit(AliFMDHit* hit, TParticle*);
129
130   /** FMD1 Pad */
131   TPad*  fFMD1Pad;              // FMD1 Pad
132   /** FMD1 Frame */
133   AliFancyDetector fFMD1;       // FMD1 Frame
134   /** FMD2 Pad  */
135   TPad*  fFMD2Pad;              // FMD2 Pad 
136   /** FMD2 Frame */
137   AliFancyDetector fFMD2;       // FMD2 Frame
138   /** FMD3 Pad */
139   TPad*  fFMD3Pad;              // FMD3 Pad
140   /** FMD3 Frame */
141   AliFancyDetector fFMD3;       // FMD3 Frame
142   /** Summary pad */
143   TPad*    fSummary;            // Summary pad
144   /** Text fields */
145   TLatex fEvent;                // Text fields
146   /** Number of hits in FMD1i */
147   TLatex fFMD1IHits;            // Number of hits in FMD1i
148   /** Number of hits in FMD2i */
149   TLatex fFMD2IHits;            // Number of hits in FMD2i
150   /** Number of hits in FMD2o */
151   TLatex fFMD2OHits;            // Number of hits in FMD2o
152   /** Number of hits in FMD3i */
153   TLatex fFMD3IHits;            // Number of hits in FMD3i
154   /** Number of hits in FMD3o */
155   TLatex fFMD3OHits;            // Number of hits in FMD3o
156   /** Just a line */
157   TLine  fLine;                 // Just a line
158   /** Number of hits in FMD */
159   TLatex fTotal;                // Number of hits in FMD
160   
161   ClassDef(AliFMDFancy,0)
162 };
163
164
165 #endif
166 //____________________________________________________________________
167 //
168 // Local Variables:
169 //   mode: C++
170 // End:
171 //
172 // EOF
173 //