Load pythia libraries.
[u/mrichter/AliRoot.git] / FMD / AliFMDPattern.h
CommitLineData
a9579262 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"
a1e17193 22#include <TArrayI.h>
a9579262 23#include <TObjArray.h>
f95a63c4 24// #include <TGraph.h>
a9579262 25#include <TLatex.h>
26#include <TLine.h>
27class TCanvas;
28class TPad;
29class TH2;
30
31
32//___________________________________________________________________
33/** @class AliFMDPattern
34 @brief Utility class to visualize FMD data in 2D.
35 @ingroup FMD_util
36 */
37class AliFMDPattern : public AliFMDDisplay
38{
39public:
f95a63c4 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
a9579262 47 {
f95a63c4 48 public:
49 /** Constructor */
50 AliFMDPatternDetector(UShort_t id);
51 /** Destructor */
52 ~AliFMDPatternDetector();
53 /** Clear this detector */
a9579262 54 void Clear();
f95a63c4 55 /** Get the total number of hits */
a9579262 56 Int_t Total() const { return Int_t(fCounts.GetSum()); }
f95a63c4 57 /** Called at the end of things */
a9579262 58 void End();
f95a63c4 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 */
a9579262 68 void DrawShape(TObjArray& a);
f95a63c4 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 */
a9579262 74 void AddMarker(Double_t x, Double_t y, Float_t s, Float_t max);
f95a63c4 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. */
2b893216 82 AliFMDPatternDetector(const AliFMDPatternDetector&);
f95a63c4 83 /** Assignement operator
84 -- Not implemented */
85 AliFMDPatternDetector& operator=(const AliFMDPatternDetector&);
86
a9579262 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:
f95a63c4 104 /** Copy constructor
105 - Not implemented. */
106 AliFMDPattern(const AliFMDPattern&);
107 /** Assignement operator
108 -- Not implemented */
109 AliFMDPattern& operator=(const AliFMDPattern&);
a9579262 110 /** Add a marker to the display
111 @param det Detector
112 @param rng Ring
113 @param sec Sector
114 @param str Strip
115 @param o Object to refer to
116 @param s Signal
117 @param max Maximum of signal */
f95a63c4 118 virtual void AddMarker(UShort_t det, Char_t rng, UShort_t sec,
119 UShort_t str, TObject* o, Float_t s, Float_t max);
120 /** @param hit Hit to process */
a9579262 121 virtual Bool_t ProcessHit(AliFMDHit* hit, TParticle*);
f95a63c4 122 /** Re-draw the patterns */
a9579262 123 virtual void Redisplay();
f95a63c4 124 /** Called at the end. */
a9579262 125 virtual void AtEnd();
126 /** Graph to show shape of inner sensor */
f95a63c4 127 TObjArray fInners; // Graph to show shape of inner sensor
a9579262 128 /** Graph to show shape of outer sensor */
f95a63c4 129 TObjArray fOuters; // Graph to show shape of outer sensor
a9579262 130 /** Max inner radius */
f95a63c4 131 Float_t fInnerMax; // Max inner radius
a9579262 132 /** Max outer radius */
f95a63c4 133 Float_t fOuterMax; // Max outer radius
a9579262 134 /** FMD1 Pad */
f95a63c4 135 TPad* fFMD1Pad; // FMD1 Pad
136 /** FMD1 Frame */
137 AliFMDPatternDetector fFMD1; // FMD1 Frame
a9579262 138 /** FMD2 Pad */
f95a63c4 139 TPad* fFMD2Pad; // FMD2 Pad
140 /** FMD2 Frame */
141 AliFMDPatternDetector fFMD2; // FMD2 Frame
a9579262 142 /** FMD3 Pad */
f95a63c4 143 TPad* fFMD3Pad; // FMD3 Pad
144 /** FMD3 Frame */
145 AliFMDPatternDetector fFMD3; // FMD3 Frame
a9579262 146 /** Summary pad */
f95a63c4 147 TPad* fSummary; // Summary pad
a9579262 148 /** Text fields */
f95a63c4 149 TLatex fEvent; // Text fields
150 TLatex fFMD1Sum; // Total in FMD1
151 TLatex fFMD2Sum; // Total in FMD1
152 TLatex fFMD3Sum; // Total in FMD1
153 TLine fLine; // Just a line
154 TLatex fTotal; // Total in FMD
a9579262 155
f95a63c4 156 ClassDef(AliFMDPattern,0) // Display FMD data as hit-patterns.
a9579262 157};
158
159
160#endif
161//____________________________________________________________________
162//
163// Local Variables:
164// mode: C++
165// End:
166//
167// EOF
168//