]>
Commit | Line | Data |
---|---|---|
1 | #ifndef ALIMUONVTRACKERDATA_H | |
2 | #define ALIMUONVTRACKERDATA_H | |
3 | ||
4 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
5 | * See cxx source for full Copyright notice */ | |
6 | ||
7 | // $Id$ | |
8 | ||
9 | /// \ingroup calib | |
10 | /// \class AliMUONVTrackerData | |
11 | /// \brief Base class for MUON data that can be presented at different levels | |
12 | /// in the hierarchy of the MUON system. | |
13 | /// | |
14 | // Author Laurent Aphecetche, Subatech | |
15 | ||
16 | #ifndef ROOT_TNamed | |
17 | # include "TNamed.h" | |
18 | #endif | |
19 | #ifndef ROOT_TString | |
20 | # include "TString.h" | |
21 | #endif | |
22 | #ifndef ROOT_TQObject | |
23 | # include <TQObject.h> | |
24 | #endif | |
25 | ||
26 | class AliMUONSparseHisto; | |
27 | class AliMUONVStore; | |
28 | class TCollection; | |
29 | class TArrayI; | |
30 | ||
31 | class AliMUONVTrackerData : public TNamed, public TQObject | |
32 | { | |
33 | public: | |
34 | ||
35 | AliMUONVTrackerData(const char* name="",const char* title="", | |
36 | Bool_t issingleevent=kFALSE); | |
37 | virtual ~AliMUONVTrackerData(); | |
38 | ||
39 | /// Add values for one event from one full store | |
40 | virtual Bool_t Add(const AliMUONVStore& store, TArrayI* arrayOfNofEventsPerDDL=0x0) = 0; | |
41 | ||
42 | /// Replace values | |
43 | virtual Bool_t Replace(const AliMUONVStore& store) = 0; | |
44 | ||
45 | /// Get the value for a given buspatch and given dimension | |
46 | virtual Double_t BusPatch(Int_t busPatchId, Int_t dim=0) const = 0; | |
47 | ||
48 | /// Get the value for a given chamber and given dimension | |
49 | virtual Double_t Chamber(Int_t chamberId, Int_t dim=0) const = 0; | |
50 | ||
51 | /// Get the value for a given channel and given dimension | |
52 | virtual Double_t Channel(Int_t detElemId, Int_t manuId, Int_t manuChannel, | |
53 | Int_t dim=0) const = 0; | |
54 | ||
55 | /// Reset the data | |
56 | virtual void Clear(Option_t* opt="") = 0; | |
57 | ||
58 | /// Get the number of times a given channel was hit | |
59 | virtual Double_t Count(Int_t detElemId, Int_t manuId, Int_t manuChannel) const = 0; | |
60 | ||
61 | /// Get the value for a given DE and given dimension | |
62 | virtual Double_t DetectionElement(Int_t detElemId, Int_t dim=0) const = 0; | |
63 | ||
64 | /// Get the name of a given (internal) dimension | |
65 | virtual TString DimensionName(Int_t dim) const = 0; | |
66 | ||
67 | /// Get the name of a given (external) dimension | |
68 | virtual TString ExternalDimensionName(Int_t dim) const = 0; | |
69 | ||
70 | /// Whether we have data for a given buspath | |
71 | virtual Bool_t HasBusPatch(Int_t busPatchId) const = 0; | |
72 | ||
73 | /// Whether we have a given channel or not | |
74 | virtual Bool_t HasChannel(Int_t detElemId, Int_t manuId, Int_t manuChannel) const; | |
75 | ||
76 | /// Whether we have data for a given chamber | |
77 | virtual Bool_t HasChamber(Int_t chamberId) const = 0; | |
78 | ||
79 | /// Whether we have data for a given detection element | |
80 | virtual Bool_t HasDetectionElement(Int_t detElemId) const = 0; | |
81 | ||
82 | /// Whether we have data for a given manu | |
83 | virtual Bool_t HasManu(Int_t detElemId, Int_t manuId) const = 0; | |
84 | ||
85 | /// Whether we have data for a given PCB | |
86 | virtual Bool_t HasPCB(Int_t detElemId, Int_t pcbIndex) const = 0; | |
87 | ||
88 | /// Whether we deal with only one event at a time | |
89 | virtual Bool_t IsSingleEvent() const = 0; | |
90 | ||
91 | /// Get the value for a given manu and given dimension | |
92 | virtual Double_t Manu(Int_t detElemId, Int_t manuId, Int_t dim=0) const = 0; | |
93 | ||
94 | /// The number of dimensions we are handling | |
95 | virtual Int_t NumberOfDimensions() const = 0; | |
96 | ||
97 | /// Convert from internal to external dimension | |
98 | virtual Int_t InternalToExternal(Int_t dim) const = 0; | |
99 | ||
100 | /// The number of dimensions we are inputting | |
101 | virtual Int_t ExternalDimension() const = 0; | |
102 | ||
103 | /** The number of events we've seen so far in a given DDL (or any DDL if param<0) | |
104 | ddlNumber is 0..19 | |
105 | */ | |
106 | virtual Int_t NumberOfEvents(Int_t ddlNumber) const = 0; | |
107 | ||
108 | /// Signal to indicate that the number of events changed | |
109 | virtual void NumberOfEventsChanged(); // *SIGNAL* | |
110 | ||
111 | /// Get our name | |
112 | const char* Name() const { return GetName(); } | |
113 | ||
114 | /// Get the value for a given PCDB and given dimension | |
115 | virtual Double_t PCB(Int_t detElemId, Int_t pcbIndex, Int_t dim=0) const = 0; | |
116 | ||
117 | /// Print all objects whose name matches wildcard | |
118 | virtual void Print(Option_t* wildcard="") const; | |
119 | ||
120 | /// Print, with option, all objects whose name matches wildcard | |
121 | virtual void Print(Option_t* wildcard, Option_t* opt) const = 0; | |
122 | ||
123 | /// Set the name of a given dimension | |
124 | virtual void SetDimensionName(Int_t index, const char* value) = 0; | |
125 | ||
126 | /// Whether or not we can make histograms. | |
127 | virtual Bool_t CanHistogram() const { return kFALSE; } | |
128 | ||
129 | /// Select a dimension to be histogrammed (if CanHistogram==kTRUE) only | |
130 | virtual void MakeHistogramForDimension(Int_t /* index */, Bool_t /* value */, | |
131 | Double_t /*xmin*/=0.0, Double_t /*xmax*/=4096.0) { } | |
132 | ||
133 | /// Get histogram range | |
134 | virtual void HistogramRange(Double_t& xmin, Double_t& xmax) const { xmin=xmax=0.0; } | |
135 | ||
136 | /// Whether we have histograms for a given dimension, or not | |
137 | virtual Bool_t IsHistogrammed(Int_t /*dim*/) const { return kFALSE; } | |
138 | ||
139 | /// Get sparse histogram for a given channel | |
140 | virtual AliMUONSparseHisto* GetChannelSparseHisto(Int_t detElemId, Int_t manuId, | |
141 | Int_t manuChannel, Int_t dim=0) const = 0; | |
142 | ||
143 | /// Get sparse histogram for a given manu (valid only if IsChannelLevelEnabled()==kFALSE and IsManuLevelEnabled()==kTRUE) | |
144 | virtual AliMUONSparseHisto* GetManuSparseHisto(Int_t detElemId, Int_t manuId, | |
145 | Int_t dim=0) const = 0; | |
146 | ||
147 | /// To allow merging of different objects | |
148 | virtual Long64_t Merge(TCollection* list) = 0; | |
149 | ||
150 | /// Disable recording of information at the channel level | |
151 | virtual void DisableChannelLevel() = 0; | |
152 | ||
153 | /// Whether we store values at the channel level | |
154 | virtual Bool_t IsChannelLevelEnabled() const = 0; | |
155 | ||
156 | /// Disable recording of information at the manu level (and below) | |
157 | virtual void DisableManuLevel() = 0; | |
158 | ||
159 | /// Whether we store values at the channel level | |
160 | virtual Bool_t IsManuLevelEnabled() const = 0; | |
161 | ||
162 | /// Whether we store values at the bus patch level or not | |
163 | virtual Bool_t IsBusPatchLevelEnabled() const = 0; | |
164 | ||
165 | /// Whether we store values at the PCB level or not | |
166 | virtual Bool_t IsPCBLevelEnabled() const = 0; | |
167 | ||
168 | private: | |
169 | /// not implemented | |
170 | AliMUONVTrackerData(const AliMUONVTrackerData& rhs); | |
171 | /// not implemented | |
172 | AliMUONVTrackerData& operator=(const AliMUONVTrackerData& rhs); | |
173 | ||
174 | ClassDef(AliMUONVTrackerData,2) // Base class of MUON data that can be represented graphically | |
175 | }; | |
176 | ||
177 | #endif |