]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/EveDet/AliEveFMDLoader.h
Coverity
[u/mrichter/AliRoot.git] / EVE / EveDet / AliEveFMDLoader.h
CommitLineData
274799f3 1// -*- mode: C++ -*-
2//
3/* Copyright(c) 2008, Christian Holm Christensen
4 *
5 * Latest changes by Christian Holm Christensen <cholm@nbi.dk>
6 *
7 * See cxx source for full Copyright notice
8 */
9/** @file AliEveFMDLoader.h
10 @author Christian Holm Christensen <cholm@nbi.dk>
11 @date Sun Mar 26 17:59:37 2006
12 @brief Declaration of AliEveFMDLoader singleton class
13*/
14//____________________________________________________________________
15//
16// Forward Multiplicity Detector based on Silicon wafers.
17// .
18// This class is the loader for the event display.
19//
20#ifndef ALIEVEFMDLOADER_H
21#define ALIEVEFMDLOADER_H
22#include <TEveElement.h>
23#include <TEveRGBAPalette.h>
24#include <TClonesArray.h>
25// Forward declarations
26class TEveDigitSet;
27
28/** @class AliEveFMDLoader
29 @brief Loader of FMD data for the EVE event display
30 @ingroup FMD_util
31
32 This class is a singleton, meaning that there's only one instance
33 of this. This is done to speed up the processing by putting all
34 things that are needed every time into the constructor.
35*/
36class AliEveFMDLoader : public TEveElementList
37{
38public:
39 /** @{
40 @name Loading and displaying data */
41 /** Load and display hits */
42 virtual void LoadHits();
43 /** Load and display digits */
44 virtual void LoadDigits();
45 /** Load and display raw data digits */
46 virtual void LoadRaw();
47 /** Load and display ESD */
48 virtual void LoadESD();
49 /** @} */
50
51 /** @{
52 @name Hacks to optimise performance */
53 /** Called when the element should be removed from the list. We
54 overload this to allow clearing of signals.
55 @param el Tree to remove from.
56 */
57 virtual Int_t RemoveFromListTrees(TEveElement* el);
58 /** Called when the element should be removed from the list. We
59 overload this to allow clearing of signals.
60 @param el Parent to remove from.
61 */
62 virtual void RemoveParent(TEveElement* el);
63 /** @} */
64
65 /** @{
66 @name Singleton interface */
67 /** Get the singleton instance. If the instance has not been
68 instantised yet, it will be after this call. */
69 static AliEveFMDLoader* Instance();
70 /** Destructor */
71 virtual ~AliEveFMDLoader();
72 /** @} */
73protected:
6a11b092 74 struct ModuleData
75 {
76 Float_t fScaledSum;
77 };
274799f3 78 /** Constructor
79 @param name Name of the folder.
80 @param useBoxes Whether to use boxes or Quads for the signals
81 @param old Whether to enable reading old RCU data format */
82 AliEveFMDLoader(const char* name="FMD", Bool_t useBoxes=true,
83 Bool_t old=kTRUE);
84
85 /** @{
86 @name Service functions for loading data */
87 /** Do the actual display of digits
88 @param type What to show
89 @param digits The digits */
90 void DoLoadDigits(const char* type, TClonesArray* digits);
91 /** @} */
92
93 /** @{
94 @name Digit set management */
95 /** Find a digit set corresponding to the passed parameters. If it
96 is not found, one is created
97 @param type Type of data
98 @param d Detector
99 @param r Ring
100 @param s Sector
101 @return a digit set */
102 TEveDigitSet* FindDigitSet(const char* type,UShort_t d, Char_t r, UShort_t s);
103 /** Make a digit set. The type of digit set depends on the setting
104 of fUseBoxDigits. If this is true, we return a TEveBoxSet,
105 otherwise a TEveQuadSet
106 @param name Name of set.
107 @param nstr Number of strips to make room for.
108 @return newly allocated digit set */
109 virtual TEveDigitSet* MakeDigitSet(const char* name, UShort_t nstr);
110 /** Clear signals of some type.
111 @param type Type of signals to clear
112 Type can be one of
113 - All All signals
114 - Hits Hits
115 - Digits Digits
116 - Raw Raw
117 - ESD ESD */
118 virtual void ClearDigitSets(const char* type);
119 /** @} */
120
121 /** @{
122 @name Adding signals to digit sets */
123 /** Add a signal to a digit set
124 @param type Type of data
125 @param det Detector
126 @param rng Ring
127 @param sec Sector
128 @param str Strip
129 @param signal Signal value
130 @param min Minimum of this kind of signal
131 @param max Maximum of this kind of signal
132 @param ref Reference object */
133 void AddSignal(const char* type, UShort_t det, Char_t ring,
134 UShort_t sec, UShort_t str,
135 Float_t signal, Float_t min, Float_t max,
136 TObject* ref=0);
137 /** Add a signal to a digit set, with known (x,y,z) coordinates
138 (this is for hits)
139 @param type Type of data
140 @param det Detector
141 @param rng Ring
142 @param sec Sector
143 @param str Strip
144 @param x X coordinate
145 @param y Y coordinate
146 @param z Z coordinate
147 @param signal Signal value
148 @param min Minimum of this kind of signal
149 @param max Maximum of this kind of signal
150 @param ref Reference object */
151 void AddSignal(const char* type, UShort_t det, Char_t ring,
152 UShort_t sec, UShort_t str,
153 Double_t x, Double_t y, Double_t z,
154 Float_t signal, Float_t min, Float_t max,
155 TObject* ref=0);
156 /** Add a digit to a digit set.
157 @param signals Digit set.
158 @param x X coordinate
159 @param y Y coordinate
160 @param z Z coordinate
161 @param w strip pitch
162 @param scaled Scaled value
163 @param value Signal value
164 @param ref Reference object */
165 virtual void AddDigit(TEveDigitSet* signals,
166 Double_t x, Double_t y, Double_t z,
167 Double_t w, Float_t scaled, Int_t value,
168 TObject* ref);
169 /** @} */
170
171 /** @{
172 @name Various service functions */
173 /** check if we shoul re-add ourselves to the current event node */
174 virtual void CheckAdd();
6a11b092 175 void SummarizeModule(TEveElement* module);
176 void SummarizeModules();
274799f3 177 /** @} */
178
6a11b092 179
274799f3 180 /** @{
181 @name Palettes */
182 TEveRGBAPalette fHitPalette; // Palette for hits
183 TEveRGBAPalette fDigitPalette; // Palette for ADC values
184 TEveRGBAPalette fMultPalette; // Palette for multiplicity values
185 /** @} */
186
187 /** @{
188 @name Settings */
189 Bool_t fUseBoxDigits; // Whether to show as boxes or quads
190 /** @} */
191
192 /** @{
193 @name Caches */
194 TClonesArray fHitCache; // Cache of digits
195 TClonesArray fDigitCache; // Cache of digits
196 TClonesArray fRawCache; // Cache of raw
197 /** @} */
198
199 /** @{
200 @name Singleton interface */
201 static AliEveFMDLoader* fgInstance; // Singleton
202 /** @} */
203
204 ClassDef(AliEveFMDLoader,0)
205};
206
207
208
209#endif
210//
211// EOF
212//