]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - MUON/AliMUONPadStatusMaker.h
Introducing new DP CavernAtmosPressure2.
[u/mrichter/AliRoot.git] / MUON / AliMUONPadStatusMaker.h
... / ...
CommitLineData
1#ifndef ALIMUONPADSTATUSMAKER_H
2#define ALIMUONPADSTATUSMAKER_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 rec
10/// \class AliMUONPadStatusMaker
11/// \brief Make a 2DStore of pad statuses, using different sources of information
12///
13// Author Laurent Aphecetche
14
15#ifndef ROOT_TObject
16# include "TObject.h"
17#endif
18#ifndef ROOT_TVector2
19# include "TVector2.h"
20#endif
21
22class TExMap;
23class AliMUONCalibrationData;
24class AliMUONRecoParam;
25class AliMUONVCalibParam;
26class AliMUONVTrackerData;
27class AliMUONVStore;
28
29class AliMUONPadStatusMaker : public TObject
30{
31public:
32 AliMUONPadStatusMaker(const AliMUONCalibrationData& calibData);
33 virtual ~AliMUONPadStatusMaker();
34
35 /// Get the reference to the calibrationdata object we use.
36 const AliMUONCalibrationData& CalibrationData() const { return fkCalibrationData; }
37
38 /** Get access to internal status store (for debug only, as it may not be complete,
39 depending on whether you've already called PadStatus for all possible de,manu
40 combinations or not...
41 */
42 AliMUONVStore* StatusStore() const { return fStatus; }
43
44 AliMUONVCalibParam* PadStatus(Int_t detElemId, Int_t manuId) const;
45
46 Int_t PadStatus(Int_t detElemId, Int_t manuId, Int_t manuChannel) const;
47
48 AliMUONVStore* NeighboursStore() const;
49
50 AliMUONVCalibParam* Neighbours(Int_t detElemId, Int_t manuId) const;
51
52 static TString AsString(Int_t status);
53
54 static TString AsCondition(Int_t status);
55
56 /// Return Low and High limits for a0 parameter of gain (linear slope)
57 TVector2 GainA1Limits() const { return fGainA1Limits; }
58 /// Return Low and High limits for a1 parameter of gain (parabolic term)
59 TVector2 GainA2Limits() const { return fGainA2Limits; }
60 /// Return Low and High limits for thres parameter of gain
61 TVector2 GainThresLimits() const { return fGainThresLimits; }
62
63 /// Return Low and High threshold for St12 HV
64 TVector2 HVSt12Limits() const { return fHVSt12Limits; }
65 /// Return Low and High threshold for St345 HV
66 TVector2 HVSt345Limits() const { return fHVSt345Limits; }
67
68 /// Return Low and High threshold for pedestal mean
69 TVector2 PedMeanLimits() const { return fPedMeanLimits; }
70 /// Return Low and High threshold for pedestal sigma
71 TVector2 PedSigmaLimits() const { return fPedSigmaLimits; }
72
73 /// Set Low and High limits for a0 parameter of gain (linear slope)
74 void GainA1Limits(float low, float high) { fGainA1Limits.Set(low,high); }
75 /// Set Low and High limits for a1 parameter of gain (parabolic term)
76 void GainA2Limits(float low, float high) { fGainA2Limits.Set(low,high); }
77 /// Set Low and High limits for thres parameter of gain
78 void GainThresLimits(float low, float high) { fGainThresLimits.Set(low,high); }
79
80 /// Set Low and High threshold for St12 HV
81 void SetHVSt12Limits(float low, float high) { fHVSt12Limits.Set(low,high); }
82 /// Set Low and High threshold for St345 HV
83 void SetHVSt345Limits(float low, float high) { fHVSt345Limits.Set(low,high); }
84
85 /// Set Low and High threshold for pedestal mean
86 void SetPedMeanLimits(float low, float high) { fPedMeanLimits.Set(low,high); }
87 /// Set Low and High threshold for pedestal sigma
88 void SetPedSigmaLimits(float low, float high) { fPedSigmaLimits.Set(low,high); }
89
90 /// Set Low and High threshold for gain a0 term
91 void SetGainA1Limits(float low, float high) { fGainA1Limits.Set(low,high); }
92 /// Set Low and High threshold for gain a1 term
93 void SetGainA2Limits(float low, float high) { fGainA2Limits.Set(low,high); }
94 /// Set Low and High threshold for gain threshold term
95 void SetGainThresLimits(float low, float high) { fGainThresLimits.Set(low,high); }
96
97 /// Set Low and High manu occupancy limits
98 void SetManuOccupancyLimits(float low, float high) { fManuOccupancyLimits.Set(low,high); }
99 /// Get manu occupancy limits
100 TVector2 ManuOccupancyLimits() const { return fManuOccupancyLimits; }
101
102 /// Set Low and High bus patch occupancy limits
103 void SetBuspatchOccupancyLimits(float low, float high) { fBuspatchOccupancyLimits.Set(low,high); }
104 /// Get bus patch occupancy limits
105 TVector2 BuspatchOccupancyLimits() const { return fBuspatchOccupancyLimits; }
106
107 /// Set Low and High DE occupancy limits
108 void SetDEOccupancyLimits(float low, float high) { fDEOccupancyLimits.Set(low,high); }
109 /// Get DE occupancy limits
110 TVector2 DEOccupancyLimits() const { return fDEOccupancyLimits; }
111
112 void SetLimits(const AliMUONRecoParam& recoParams);
113
114 void Report(UInt_t mask);
115
116private:
117 /// Not implemented
118 AliMUONPadStatusMaker(const AliMUONPadStatusMaker&);
119 /// Not implemented
120 AliMUONPadStatusMaker& operator=(const AliMUONPadStatusMaker&);
121
122 static void DecodeStatus(Int_t status, Int_t& pedStatus, Int_t& hvStatus,
123 Int_t& gainStatus, Int_t& otherStatus);
124 static Int_t BuildStatus(Int_t pedStatus, Int_t hvStatus,
125 Int_t gainStatus, Int_t otherStatus);
126
127 AliMUONVCalibParam* ComputeStatus(Int_t detElemId, Int_t manuId) const;
128
129 Bool_t HVSt12Status(Int_t detElemId, Int_t sector,
130 Bool_t& hvChannelTooLow,
131 Bool_t& hvChannelTooHigh,
132 Bool_t& hvChannelON) const;
133
134
135 Bool_t HVSt345Status(Int_t detElemId, Int_t pcbIndex,
136 Bool_t& hvChannelTooLow,
137 Bool_t& hvChannelTooHigh,
138 Bool_t& hvChannelON,
139 Bool_t& hvSwitchON) const;
140
141 Int_t HVStatus(Int_t detElemId, Int_t manuId) const;
142
143 Int_t OccupancyStatus(Int_t detElemId, Int_t manuId) const;
144
145 void SetHVStatus(Int_t detElemId, Int_t index, Int_t status) const;
146
147private:
148 /// General status
149 enum EGeneralStatus
150 {
151 kMissing = (1<<7)
152 };
153
154 /// Gain status
155 enum EGainStatus
156 {
157 kGainOK = 0,
158 kGainA1TooLow = (1<<1),
159 kGainA1TooHigh = (1<<2),
160 kGainA2TooLow = (1<<3),
161 kGainA2TooHigh = (1<<4),
162 kGainThresTooLow = (1<<5),
163 kGainThresTooHigh = (1<<6),
164
165 kGainMissing = kMissing // please always use last bit for meaning "missing"
166 };
167
168 /// Pedestal status
169 enum EPedestalStatus
170 {
171 kPedOK = 0,
172 kPedMeanZero = (1<<1),
173 kPedMeanTooLow = (1<<2),
174 kPedMeanTooHigh = (1<<3),
175 kPedSigmaTooLow = (1<<4),
176 kPedSigmaTooHigh = (1<<5),
177
178 kPedMissing = kMissing // please always use last bit for meaning "missing"
179 };
180
181 /// HV Error
182 enum EHVError
183 {
184 kHVOK = 0,
185 kHVError = (1<<0),
186 kHVTooLow = (1<<1),
187 kHVTooHigh = (1<<2),
188 kHVChannelOFF = (1<<3),
189 kHVSwitchOFF = (1<<4),
190
191 kHVMissing = kMissing // please always use last bit for meaning "missing"
192 };
193
194 /// Other
195 enum EOccupancyStatus
196 {
197 kManuOccupancyTooLow = (1<<1),
198 kManuOccupancyTooHigh = (1<<2),
199 kBusPatchOccupancyTooLow = (1<<3),
200 kBusPatchOccupancyTooHigh = (1<<4),
201 kDEOccupancyTooLow = (1<<5),
202 kDEOccupancyTooHigh = (1<<6)
203 };
204
205 const AliMUONCalibrationData& fkCalibrationData; //!< helper class to get data access (not owner)
206
207 TVector2 fGainA1Limits; //!< Low and High threshold for gain a0 parameter
208 TVector2 fGainA2Limits; //!< Low and High threshold for gain a1 parameter
209 TVector2 fGainThresLimits; //!< Low and High threshold for gain threshold parameter
210
211 TVector2 fHVSt12Limits; //!< Low and High threshold for St12 HV
212 TVector2 fHVSt345Limits; //!< Low and High threshold for St345 HV
213
214 TVector2 fPedMeanLimits; //!< Low and High threshold for pedestal mean
215 TVector2 fPedSigmaLimits; //!< Low and High threshold for pedestal sigma
216
217 TVector2 fManuOccupancyLimits; //!< Low and High manu occupancy limits
218 TVector2 fBuspatchOccupancyLimits; //!< Low and High buspatch occupancy limits
219 TVector2 fDEOccupancyLimits; //!< Low and High DE occupancy limits
220
221 AliMUONVStore* fStatus; //!< statuses of the pads
222
223 mutable TExMap* fHV; //!< cache of hv statuses
224
225 AliMUONVStore* fPedestals; //!< pedestal values
226 AliMUONVStore* fGains; //!< gain values
227
228 AliMUONVTrackerData* fTrackerData; //!< to get occupancies...
229
230 ClassDef(AliMUONPadStatusMaker,0) // Creates pad statuses from ped,gain,hv
231};
232
233#endif