added check for AliMUONDigitMaker::GetRawStreamTracker method to allow conditional...
[u/mrichter/AliRoot.git] / ITS / AliITSOnlineCalibrationSPDhandler.h
CommitLineData
b15de2d2 1#ifndef ALI_ITS_ONLINECALIBRATIONSPDHANDLER_H
2#define ALI_ITS_ONLINECALIBRATIONSPDHANDLER_H
3
b696414b 4//////////////////////////////////////////////////////////////////////////////
5// Author: Henrik Tydesjo //
6// Class that simplifies the managing of dead, noisy, and inactive pixels. //
7// Has interface to the AliITSOnlineCalibrationSPD container objects //
8// through reading and writing to TFile. //
9//////////////////////////////////////////////////////////////////////////////
b15de2d2 10
60d9faf6 11/* $Id$ */
e03405c9 12
53ae21ce 13#include "AliITSRawStreamSPD.h"
14#include <TString.h>
b15de2d2 15
60d9faf6 16class TArrayI;
e03405c9 17class TArrayS;
53ae21ce 18class AliITSIntMap;
6727e2db 19class AliITSCalibrationSPD;
b15de2d2 20
21class AliITSOnlineCalibrationSPDhandler {
22
23 public:
24 AliITSOnlineCalibrationSPDhandler();
b15de2d2 25 AliITSOnlineCalibrationSPDhandler(const AliITSOnlineCalibrationSPDhandler& handle);
26 virtual ~AliITSOnlineCalibrationSPDhandler();
27 AliITSOnlineCalibrationSPDhandler& operator=(const AliITSOnlineCalibrationSPDhandler& handle);
53ae21ce 28
29 void SetFileLocation(const Char_t* loc) {fFileLocation = loc;}
30 TString GetFileLocation() const {return fFileLocation;}
31
b15de2d2 32 void ClearMaps();
6727e2db 33 void ResetDead();
34 void ResetNoisy();
35 void ResetDeadForChip(UInt_t eq, UInt_t hs, UInt_t chip);
36 void ResetNoisyForChip(UInt_t eq, UInt_t hs, UInt_t chip);
37 void ResetDeadForEq(UInt_t eq);
38 void ResetNoisyForEq(UInt_t eq);
b15de2d2 39
53ae21ce 40 Bool_t ReadFromFiles();
b696414b 41 Bool_t ReadSilentFromFiles();
53ae21ce 42 Bool_t ReadDeadFromFiles();
43 Bool_t ReadNoisyFromFiles();
b696414b 44 Bool_t ReadSilentFromFile(UInt_t eq);
6727e2db 45 Bool_t ReadDeadFromFile(UInt_t eq);
46 Bool_t ReadNoisyFromFile(UInt_t eq);
b696414b 47 Bool_t ReadSilentFromFileName(const char *fileName);
48 Bool_t ReadDeadFromFileName(const char *fileName, Bool_t inactive=kFALSE);
53ae21ce 49 Bool_t ReadNoisyFromFileName(const char *fileName);
b696414b 50
6727e2db 51 UInt_t ReadDeadFromText(const char *fileName, UInt_t module);
52 UInt_t ReadNoisyFromText(const char *fileName, UInt_t module);
53ae21ce 53
3479cee3 54 void WriteToFilesAlways();
6727e2db 55 UInt_t WriteToFiles();
b696414b 56 void WriteSilentToFilesAlways();
6727e2db 57 void WriteDeadToFilesAlways();
58 void WriteNoisyToFilesAlways();
b696414b 59 UInt_t WriteSilentToFiles();
6727e2db 60 UInt_t WriteDeadToFiles();
61 UInt_t WriteNoisyToFiles();
b696414b 62 void WriteSilentToFile(UInt_t eq);
63 void WriteDeadToFile(UInt_t eq, Bool_t inactive=kFALSE);
6727e2db 64 void WriteNoisyToFile(UInt_t eq);
53ae21ce 65
66#ifndef SPD_DA_OFF
6727e2db 67 Bool_t ReadDeadModuleFromDB(UInt_t module, Int_t runNr, Bool_t treeSerial=kFALSE);
68 Bool_t ReadNoisyModuleFromDB(UInt_t module, Int_t runNr, Bool_t treeSerial=kFALSE);
69 Bool_t ReadFromDB(Int_t runNr, Bool_t treeSerial=kFALSE);
70 Bool_t ReadDeadFromDB(Int_t runNr, Bool_t treeSerial=kFALSE);
71 Bool_t ReadNoisyFromDB(Int_t runNr, Bool_t treeSerial=kFALSE);
72 Bool_t ReadDeadFromCalibObj(TObjArray* calObj);
73 Bool_t ReadNoisyFromCalibObj(TObjArray* calObj);
53ae21ce 74 Bool_t WriteToDB(Int_t runNrStart, Int_t runNrEnd);
6727e2db 75 Bool_t WriteDeadToDB(Int_t runNrStart, Int_t runNrEnd);
76 Bool_t WriteNoisyToDB(Int_t runNrStart, Int_t runNrEnd);
53ae21ce 77#endif
53ae21ce 78
6727e2db 79 void GenerateDCSConfigFile(const Char_t* fileName);
b15de2d2 80
b696414b 81 TArrayS GetSilentArray(UInt_t module, Bool_t treeSerial=kFALSE); // temporarily needed
e03405c9 82 TArrayS GetDeadArray(UInt_t module, Bool_t treeSerial=kFALSE);
83 TArrayS GetNoisyArray(UInt_t module, Bool_t treeSerial=kFALSE);
b696414b 84
60d9faf6 85 TArrayI GetDeadArrayOnline(UInt_t eq);
86 TArrayI GetNoisyArrayOnline(UInt_t eq);
53ae21ce 87
6727e2db 88 void PrintEqSummary();
b696414b 89 void PrintSilent() const; // silent = dead or inactive
6727e2db 90 void PrintDead() const;
91 void PrintNoisy() const;
53ae21ce 92
6727e2db 93 Bool_t SetDeadPixel(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t col, UInt_t row);
94 Bool_t SetNoisyPixel(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t col, UInt_t row);
95 Bool_t SetDeadPixelM(UInt_t module, UInt_t colM, UInt_t row);
53ae21ce 96 Bool_t SetNoisyPixelM(UInt_t module, UInt_t colM, UInt_t row);
6727e2db 97 Bool_t UnSetDeadPixel(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t col, UInt_t row);
98 Bool_t UnSetNoisyPixel(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t col, UInt_t row);
99 Bool_t UnSetDeadPixelM(UInt_t module, UInt_t colM, UInt_t row);
3479cee3 100 Bool_t UnSetNoisyPixelM(UInt_t module, UInt_t colM, UInt_t row);
6727e2db 101 UInt_t SetDeadChip(UInt_t eq, UInt_t hs, UInt_t chip);
102 UInt_t SetNoisyChip(UInt_t eq, UInt_t hs, UInt_t chip);
103 Bool_t UnSetDeadChip(UInt_t eq, UInt_t hs, UInt_t chip);
104 Bool_t UnSetNoisyChip(UInt_t eq, UInt_t hs, UInt_t chip);
105
b696414b 106 Bool_t IsPixelSilent(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t col, UInt_t row) const; // silent = dead or inactive
6727e2db 107 Bool_t IsPixelDead(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t col, UInt_t row) const;
108 Bool_t IsPixelNoisy(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t col, UInt_t row) const;
b696414b 109 Bool_t IsPixelSilentM(UInt_t module, UInt_t colM, UInt_t row) const;
6727e2db 110 Bool_t IsPixelDeadM(UInt_t module, UInt_t colM, UInt_t row) const;
111 Bool_t IsPixelNoisyM(UInt_t module, UInt_t colM, UInt_t row) const;
b696414b 112 Bool_t IsPixelSilentKey(Int_t key) const;
6727e2db 113 Bool_t IsPixelDeadKey(Int_t key) const;
114 Bool_t IsPixelNoisyKey(Int_t key) const;
b15de2d2 115
b696414b 116 UInt_t GetNrSilent() const; // silent = dead or inactive
6727e2db 117 UInt_t GetNrDead() const;
6727e2db 118 UInt_t GetDeadEqIdAt(UInt_t index);
6727e2db 119 UInt_t GetDeadHSAt(UInt_t index);
6727e2db 120 UInt_t GetDeadChipAt(UInt_t index);
6727e2db 121 UInt_t GetDeadColAt(UInt_t index);
6727e2db 122 UInt_t GetDeadRowAt(UInt_t index);
b696414b 123 UInt_t GetNrNoisy() const;
124 UInt_t GetNoisyEqIdAt(UInt_t index);
125 UInt_t GetNoisyHSAt(UInt_t index);
126 UInt_t GetNoisyChipAt(UInt_t index);
127 UInt_t GetNoisyColAt(UInt_t index);
6727e2db 128 UInt_t GetNoisyRowAt(UInt_t index);
129
b696414b 130 UInt_t GetNrSilent(UInt_t module) const; // silent = dead or inactive
6727e2db 131 UInt_t GetNrDead(UInt_t module) const;
6727e2db 132 UInt_t GetDeadEqIdAt(UInt_t module,UInt_t index);
6727e2db 133 UInt_t GetDeadHSAt(UInt_t module,UInt_t index);
6727e2db 134 UInt_t GetDeadChipAt(UInt_t module,UInt_t index);
6727e2db 135 UInt_t GetDeadColAt(UInt_t module,UInt_t index);
6727e2db 136 UInt_t GetDeadRowAt(UInt_t module,UInt_t index);
b696414b 137 UInt_t GetNrNoisy(UInt_t module) const;
138 UInt_t GetNoisyEqIdAt(UInt_t module, UInt_t index);
139 UInt_t GetNoisyHSAt(UInt_t module, UInt_t index);
140 UInt_t GetNoisyChipAt(UInt_t module, UInt_t index);
141 UInt_t GetNoisyColAt(UInt_t module, UInt_t index);
53ae21ce 142 UInt_t GetNoisyRowAt(UInt_t module, UInt_t index);
143
b696414b 144 UInt_t GetNrSilentEq(UInt_t eq) const; // silent = dead or inactive
6727e2db 145 UInt_t GetNrDeadEq(UInt_t eq) const;
6727e2db 146 UInt_t GetDeadEqIdAtEq(UInt_t eq, UInt_t index) const;
6727e2db 147 UInt_t GetDeadHSAtEq(UInt_t eq, UInt_t index);
6727e2db 148 UInt_t GetDeadChipAtEq(UInt_t eq, UInt_t index);
6727e2db 149 UInt_t GetDeadColAtEq(UInt_t eq, UInt_t index);
6727e2db 150 UInt_t GetDeadRowAtEq(UInt_t eq, UInt_t index);
b696414b 151 UInt_t GetNrNoisyEq(UInt_t eq) const;
152 UInt_t GetNoisyEqIdAtEq(UInt_t eq, UInt_t index) const;
153 UInt_t GetNoisyHSAtEq(UInt_t eq, UInt_t index);
154 UInt_t GetNoisyChipAtEq(UInt_t eq, UInt_t index);
155 UInt_t GetNoisyColAtEq(UInt_t eq, UInt_t index);
6727e2db 156 UInt_t GetNoisyRowAtEq(UInt_t eq, UInt_t index);
157
b696414b 158 UInt_t GetNrSilentC(UInt_t eq, UInt_t hs, UInt_t chip) const; // silent = dead or inactive
6727e2db 159 UInt_t GetNrDeadC(UInt_t eq, UInt_t hs, UInt_t chip) const;
6727e2db 160 UInt_t GetDeadEqIdAtC(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t index) const;
6727e2db 161 UInt_t GetDeadHSAtC(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t index) const;
6727e2db 162 UInt_t GetDeadChipAtC(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t index) const;
6727e2db 163 UInt_t GetDeadColAtC(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t index) const;
6727e2db 164 UInt_t GetDeadRowAtC(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t index) const;
b696414b 165 UInt_t GetNrNoisyC(UInt_t eq, UInt_t hs, UInt_t chip) const;
166 UInt_t GetNoisyEqIdAtC(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t index) const;
167 UInt_t GetNoisyHSAtC(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t index) const;
168 UInt_t GetNoisyChipAtC(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t index) const;
169 UInt_t GetNoisyColAtC(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t index) const;
6727e2db 170 UInt_t GetNoisyRowAtC(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t index) const;
171
172 const Char_t* GetDeadPixelAsTextC(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t index) const;
173 const Char_t* GetNoisyPixelAsTextC(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t index) const;
174
b696414b 175 void ActivateALL();
176 void ActivateEq(UInt_t eq, Bool_t setval = kTRUE);
177 void ActivateHS(UInt_t eq, UInt_t hs, Bool_t setval = kTRUE);
178 void ActivateChip(UInt_t eq, UInt_t hs, UInt_t chip, Bool_t setval = kTRUE);
179
180 Bool_t IsActiveEq(UInt_t eq) const;
181 Bool_t IsActiveHS(UInt_t eq, UInt_t hs) const;
182 Bool_t IsActiveChip(UInt_t eq, UInt_t hs, UInt_t chip) const;
183
184
185 UInt_t AddSilentFrom(AliITSOnlineCalibrationSPDhandler* other);
6727e2db 186 UInt_t AddDeadFrom(AliITSOnlineCalibrationSPDhandler* other);
187 UInt_t AddNoisyFrom(AliITSOnlineCalibrationSPDhandler* other);
b15de2d2 188
53ae21ce 189 UInt_t GetNrDiff(AliITSOnlineCalibrationSPDhandler* other) const;
b696414b 190 UInt_t GetNrSilentDiff(AliITSOnlineCalibrationSPDhandler* other) const;
53ae21ce 191 UInt_t GetNrDeadDiff(AliITSOnlineCalibrationSPDhandler* other) const;
192 UInt_t GetNrNoisyDiff(AliITSOnlineCalibrationSPDhandler* other) const;
193 AliITSOnlineCalibrationSPDhandler* GetDiff(AliITSOnlineCalibrationSPDhandler* other) const;
b696414b 194 AliITSOnlineCalibrationSPDhandler* GetSilentDiff(AliITSOnlineCalibrationSPDhandler* other) const;
53ae21ce 195 AliITSOnlineCalibrationSPDhandler* GetDeadDiff(AliITSOnlineCalibrationSPDhandler* other) const;
196 AliITSOnlineCalibrationSPDhandler* GetNoisyDiff(AliITSOnlineCalibrationSPDhandler* other) const;
197
198
b15de2d2 199 private:
6727e2db 200 TString fFileLocation; // location (dir) of files to read and write from
201 AliITSIntMap* fDeadPixelMap[1200]; // lists of dead pixels for each chip
202 AliITSIntMap* fNoisyPixelMap[1200]; // lists of noisy pixels for each chip
203 UInt_t fNrDead[1200]; // nr of dead pixels for each chip
204 UInt_t fNrNoisy[1200]; // nr of noisy pixels for each chip
b696414b 205 Bool_t fActiveEq[20]; // active bit for each equipment
206 Bool_t fActiveHS[20][6]; // active bit for each half-stave
207 Bool_t fActiveChip[20][6][10]; // active bit for each chip
208
6727e2db 209 Int_t GetKey(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t col, UInt_t row) const
210 {return eq*6*10*32*256 + hs*10*32*256 + chip*32*256 + col*256 + row;}
53ae21ce 211 UInt_t GetEqIdFromKey(Int_t key) const
212 {return key/(6*10*32*256);}
213 UInt_t GetHSFromKey(Int_t key) const
214 {return (key%(6*10*32*256))/(10*32*256);}
215 UInt_t GetChipFromKey(Int_t key) const
216 {return ((key%(6*10*32*256))%(10*32*256))/(32*256);}
217 UInt_t GetColFromKey(Int_t key) const
218 {return (((key%(6*10*32*256))%(10*32*256))%(32*256))/256;}
219 UInt_t GetRowFromKey(Int_t key) const
220 {return (((key%(6*10*32*256))%(10*32*256))%(32*256))%256;}
221 UInt_t GetModuleFromKey(Int_t key) const
6727e2db 222 {return AliITSRawStreamSPD::GetOfflineModuleFromOnline(GetEqIdFromKey(key),GetHSFromKey(key),GetChipFromKey(key));}
53ae21ce 223 UInt_t GetColMFromKey(Int_t key) const
6727e2db 224 {return AliITSRawStreamSPD::GetOfflineColFromOnline(GetEqIdFromKey(key),GetHSFromKey(key),GetChipFromKey(key),GetColFromKey(key));}
225 UInt_t GetRowMFromKey(Int_t key) const
226 {return AliITSRawStreamSPD::GetOfflineRowFromOnline(GetEqIdFromKey(key),GetHSFromKey(key),GetChipFromKey(key),GetRowFromKey(key));}
227
b696414b 228 UInt_t GetGloChip(UInt_t eq, UInt_t hs, UInt_t chip) const {return eq*60 + hs*10 + chip;}
229 UInt_t GetEqGlo(UInt_t gloChip) const {return gloChip/60;}
230 UInt_t GetHSGlo(UInt_t gloChip) const {return (gloChip%60)/10;}
231 UInt_t GetChipGlo(UInt_t gloChip) const {return (gloChip%60)%10;}
6727e2db 232
233 void GetChipAndIndexDead(UInt_t module, UInt_t index, UInt_t& gloChip, UInt_t& chipIndex);
234 void GetChipAndIndexNoisy(UInt_t module, UInt_t index, UInt_t& gloChip, UInt_t& chipIndex);
235 void GetChipAndIndexEqDead(UInt_t eq, UInt_t index, UInt_t& gloChip, UInt_t& chipIndex);
236 void GetChipAndIndexEqNoisy(UInt_t eq, UInt_t index, UInt_t& gloChip, UInt_t& chipIndex);
237 void GetChipAndIndexTotDead(UInt_t index, UInt_t& gloChip, UInt_t& chipIndex);
238 void GetChipAndIndexTotNoisy(UInt_t index, UInt_t& gloChip, UInt_t& chipIndex);
239
240 UInt_t GetEqIdFromOffline(UInt_t module) const;
241 UInt_t GetHSFromOffline(UInt_t module) const;
242 UInt_t GetChipFromOffline(UInt_t module, UInt_t colM) const;
243 UInt_t GetColFromOffline(UInt_t module, UInt_t colM) const;
244 UInt_t GetRowFromOffline(UInt_t module, UInt_t rowM) const;
245
246 void RecursiveInsertDead(AliITSCalibrationSPD* calibSPD, UInt_t module, Int_t lowInd, Int_t highInd);
247 void RecursiveInsertNoisy(AliITSCalibrationSPD* calibSPD, UInt_t module, Int_t lowInd, Int_t highInd);
248
249 UInt_t GetNrDeadC2(UInt_t gloChip) const;
6727e2db 250 UInt_t GetDeadEqIdAtC2(UInt_t gloChip, UInt_t index) const;
6727e2db 251 UInt_t GetDeadHSAtC2(UInt_t gloChip, UInt_t index) const;
6727e2db 252 UInt_t GetDeadChipAtC2(UInt_t gloChip, UInt_t index) const;
6727e2db 253 UInt_t GetDeadColAtC2(UInt_t gloChip, UInt_t index) const;
6727e2db 254 UInt_t GetDeadRowAtC2(UInt_t gloChip, UInt_t index) const;
b696414b 255 UInt_t GetNrNoisyC2(UInt_t gloChip) const;
256 UInt_t GetNoisyEqIdAtC2(UInt_t gloChip, UInt_t index) const;
257 UInt_t GetNoisyHSAtC2(UInt_t gloChip, UInt_t index) const;
258 UInt_t GetNoisyChipAtC2(UInt_t gloChip, UInt_t index) const;
259 UInt_t GetNoisyColAtC2(UInt_t gloChip, UInt_t index) const;
6727e2db 260 UInt_t GetNoisyRowAtC2(UInt_t gloChip, UInt_t index) const;
b15de2d2 261
262};
263
264#endif