]>
Commit | Line | Data |
---|---|---|
0145e89a | 1 | #ifndef ALIMUONTRACKERDATA_H |
2 | #define ALIMUONTRACKERDATA_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 | ||
2f2b84d5 | 9 | /// \ingroup graphics |
0145e89a | 10 | /// \class AliMUONTrackerData |
11 | /// \brief Implementation of AliMUONVTrackerData | |
12 | /// | |
13 | // Author Laurent Aphecetche, Subatech | |
14 | ||
15 | #ifndef ALIMUONVTRACKERDATA_H | |
16 | # include "AliMUONVTrackerData.h" | |
17 | #endif | |
18 | ||
19 | class AliMUONVCalibParam; | |
20 | class AliMUONVStore; | |
21 | ||
22 | class AliMUONTrackerData : public AliMUONVTrackerData | |
23 | { | |
24 | public: | |
25 | AliMUONTrackerData(const char* name="", const char* title="", | |
26 | Int_t dimension=0, | |
27 | Bool_t runnable=kTRUE); | |
28 | virtual ~AliMUONTrackerData(); | |
29 | ||
30 | virtual Bool_t Add(const AliMUONVStore& channelValues); | |
31 | ||
32 | virtual Double_t BusPatch(Int_t busPatchId, Int_t dim=0) const; | |
33 | ||
34 | virtual Double_t Chamber(Int_t chamberId, Int_t dim=0) const; | |
35 | ||
36 | virtual Double_t Channel(Int_t detElemId, Int_t manuId, Int_t manuChannel, | |
37 | Int_t dim=0) const; | |
38 | ||
39 | virtual void Clear(Option_t* opt=""); | |
40 | ||
41 | virtual Double_t Count(Int_t detElemId, Int_t manuId, Int_t manuChannel) const; | |
42 | ||
43 | virtual Double_t DetectionElement(Int_t detElemId, Int_t dim=0) const; | |
44 | ||
45 | virtual TString DimensionName(Int_t dim) const; | |
46 | ||
47 | virtual Bool_t HasChamber(Int_t chamberId) const; | |
48 | ||
49 | virtual Bool_t HasBusPatch(Int_t busPatchId) const; | |
50 | ||
51 | virtual Bool_t HasDetectionElement(Int_t detElemId) const; | |
52 | ||
53 | virtual Bool_t HasManu(Int_t detElemId, Int_t manuId) const; | |
54 | ||
55 | virtual Bool_t HasPCB(Int_t detElemId, Int_t pcbIndex) const; | |
56 | ||
9016a84e | 57 | /// Whether we can be run |
0145e89a | 58 | virtual Bool_t IsRunnable() const { return fIsRunnable; } |
59 | ||
60 | virtual Double_t Manu(Int_t detElemId, Int_t manuId, Int_t dim=0) const; | |
61 | ||
62 | /// Returns the number of dimensions (i.e. the number of values) each element has | |
63 | virtual Int_t NumberOfDimensions() const; | |
64 | ||
65 | /// Returns the number of events we have seen so far | |
66 | virtual Int_t NumberOfEvents() const { return fNevents; } | |
67 | ||
68 | virtual Double_t PCB(Int_t detElemId, Int_t pcbIndex, Int_t dim=0) const; | |
69 | ||
70 | using TObject::Print; | |
71 | ||
72 | /// Print, with option, all objects whose name matches wildcard | |
73 | virtual void Print(Option_t* wildcard, Option_t* opt) const; | |
74 | ||
75 | virtual void SetDimensionName(Int_t index, const char* value); | |
76 | ||
77 | //protected: FIXME: uncomment when debug done | |
78 | ||
79 | virtual AliMUONVCalibParam* BusPatchParam(Int_t busPatch) const; | |
80 | ||
81 | virtual AliMUONVCalibParam* ChamberParam(Int_t chamberId) const; | |
82 | ||
83 | virtual AliMUONVCalibParam* ChannelParam(Int_t detElemId, Int_t manuId) const; | |
84 | ||
85 | virtual AliMUONVCalibParam* DetectionElementParam(Int_t detElemId) const; | |
86 | ||
87 | virtual AliMUONVCalibParam* ManuParam(Int_t detElemId, Int_t manuId) const; | |
88 | ||
89 | virtual AliMUONVCalibParam* PCBParam(Int_t detElemId, Int_t pcbIndex) const; | |
90 | ||
9016a84e | 91 | /// Index of the dimension containing the number of time an item was hit |
0145e89a | 92 | virtual Int_t IndexOfNumberDimension() const { return fDimension - 1; } |
93 | ||
9016a84e | 94 | /// Index of the dimension containing the occupancy number |
0145e89a | 95 | virtual Int_t IndexOfOccupancyDimension() const { return fDimension - 2; } |
96 | ||
97 | private: | |
98 | /// Not implemented | |
99 | AliMUONTrackerData(const AliMUONTrackerData& rhs); | |
100 | /// Not implemented | |
101 | AliMUONTrackerData& operator=(const AliMUONTrackerData& rhs); | |
102 | ||
103 | AliMUONVCalibParam* CreateDouble(const AliMUONVCalibParam& param) const; | |
104 | ||
105 | /// Convert from external to internal index | |
106 | Int_t External2Internal(Int_t index) const { return index*2; } | |
107 | ||
108 | Bool_t InternalAdd(const AliMUONVStore& channelValues); | |
109 | ||
110 | void SetInternalDimensionName(Int_t index, const char* value); | |
111 | ||
112 | Double_t Value(const AliMUONVCalibParam& param, Int_t i, Int_t dim) const; | |
113 | ||
114 | private: | |
115 | ||
116 | AliMUONVStore* fChannelValues; ///< the channel store | |
117 | AliMUONVStore* fManuValues; ///< the manu store | |
118 | AliMUONVStore* fBusPatchValues; ///< the bus patch store | |
119 | AliMUONVStore* fDEValues; ///< the detection element store | |
120 | AliMUONVStore* fChamberValues; ///< the chamber store | |
121 | AliMUONVStore* fPCBValues; ///< the pcb store | |
122 | Int_t fDimension; ///< the dimension of the data | |
123 | Int_t fNevents; ///< the number of events treated | |
124 | TObjArray* fDimensionNames; ///< the names of the dimensions | |
125 | Int_t fExternalDimension; ///< number of interface values per item | |
126 | Bool_t fIsRunnable; ///< whether we can deal with more than one event | |
127 | ||
128 | static const Int_t fgkExtraDimension; ///< to hold extra information | |
129 | static const Int_t fgkVirtualExtraDimension; ///< to give access to information not stored, but computed on the fly | |
130 | ||
131 | ClassDef(AliMUONTrackerData,1) // Implementation of AliMUONVTrackerData | |
132 | }; | |
133 | ||
134 | #endif |