1 #ifndef ALI_ITS_ONLINECALIBRATIONSPDHANDLER_H
2 #define ALI_ITS_ONLINECALIBRATIONSPDHANDLER_H
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 //////////////////////////////////////////////////////////////////////////////
13 #include "AliITSRawStreamSPD.h"
19 class AliITSCalibrationSPD;
21 class AliITSOnlineCalibrationSPDhandler {
24 AliITSOnlineCalibrationSPDhandler();
25 AliITSOnlineCalibrationSPDhandler(const AliITSOnlineCalibrationSPDhandler& handle);
26 virtual ~AliITSOnlineCalibrationSPDhandler();
27 AliITSOnlineCalibrationSPDhandler& operator=(const AliITSOnlineCalibrationSPDhandler& handle);
29 void SetFileLocation(const Char_t* loc) {fFileLocation = loc;}
30 TString GetFileLocation() const {return fFileLocation;}
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);
40 Bool_t ReadFromFiles();
41 Bool_t ReadSilentFromFiles();
42 Bool_t ReadDeadFromFiles();
43 Bool_t ReadNoisyFromFiles();
44 Bool_t ReadSilentFromFile(UInt_t eq);
45 Bool_t ReadDeadFromFile(UInt_t eq);
46 Bool_t ReadNoisyFromFile(UInt_t eq);
47 Bool_t ReadSilentFromFileName(const char *fileName);
48 Bool_t ReadDeadFromFileName(const char *fileName, Bool_t inactive=kFALSE);
49 Bool_t ReadNoisyFromFileName(const char *fileName);
51 UInt_t ReadDeadFromText(const char *fileName, UInt_t module);
52 UInt_t ReadNoisyFromText(const char *fileName, UInt_t module);
54 void WriteToFilesAlways();
55 UInt_t WriteToFiles();
56 void WriteSilentToFilesAlways();
57 void WriteDeadToFilesAlways();
58 void WriteNoisyToFilesAlways();
59 UInt_t WriteSilentToFiles();
60 UInt_t WriteDeadToFiles();
61 UInt_t WriteNoisyToFiles();
62 void WriteSilentToFile(UInt_t eq);
63 void WriteDeadToFile(UInt_t eq, Bool_t inactive=kFALSE);
64 void WriteNoisyToFile(UInt_t eq);
67 Bool_t ReadDeadModuleFromDB(UInt_t module, Int_t runNr, const Char_t *storage="default", Bool_t treeSerial=kFALSE);
68 Bool_t ReadNoisyModuleFromDB(UInt_t module, Int_t runNr, const Char_t *storage="default", Bool_t treeSerial=kFALSE);
69 Bool_t ReadFromDB(Int_t runNr, const Char_t *storage="default", Bool_t treeSerial=kFALSE);
70 Bool_t ReadDeadFromDB(Int_t runNr, const Char_t *storage="default", Bool_t treeSerial=kFALSE);
71 Bool_t ReadNoisyFromDB(Int_t runNr, const Char_t *storage="default", Bool_t treeSerial=kFALSE);
72 Bool_t ReadDeadFromDBasNoisy(Int_t runNr, const Char_t *storage="default", Bool_t treeSerial=kFALSE);
73 Bool_t ReadDeadFromCalibObj(TObjArray* calObj);
74 Bool_t ReadNoisyFromCalibObj(TObjArray* calObj);
75 Bool_t WriteToDB(Int_t runNrStart, Int_t runNrEnd, const Char_t *storage="default");
76 Bool_t WriteDeadToDB(Int_t runNrStart, Int_t runNrEnd, const Char_t *storage="default");
77 Bool_t WriteDeadToDBasNoisy(Int_t runNrStart, Int_t runNrEnd, const Char_t *storage="default");
78 Bool_t WriteNoisyToDB(Int_t runNrStart, Int_t runNrEnd, const Char_t *storage="default");
81 void GenerateDCSConfigFile(const Char_t* fileName);
83 TArrayS GetSilentArray(UInt_t module, Bool_t treeSerial=kFALSE); // temporarily needed
84 TArrayS GetDeadArray(UInt_t module, Bool_t treeSerial=kFALSE);
85 TArrayS GetNoisyArray(UInt_t module, Bool_t treeSerial=kFALSE);
87 TArrayI GetDeadArrayOnline(UInt_t eq);
88 TArrayI GetNoisyArrayOnline(UInt_t eq);
90 void PrintEqSummary();
91 void PrintSilent() const; // silent = dead or inactive
92 void PrintDead() const;
93 void PrintNoisy() const;
95 Bool_t SetDeadPixel(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t col, UInt_t row);
96 Bool_t SetNoisyPixel(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t col, UInt_t row);
97 Bool_t SetDeadPixelM(UInt_t module, UInt_t colM, UInt_t row);
98 Bool_t SetNoisyPixelM(UInt_t module, UInt_t colM, UInt_t row);
99 Bool_t UnSetDeadPixel(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t col, UInt_t row);
100 Bool_t UnSetNoisyPixel(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t col, UInt_t row);
101 Bool_t UnSetDeadPixelM(UInt_t module, UInt_t colM, UInt_t row);
102 Bool_t UnSetNoisyPixelM(UInt_t module, UInt_t colM, UInt_t row);
104 Bool_t IsPixelBad(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t col, UInt_t row) const;
105 Bool_t IsPixelSilent(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t col, UInt_t row) const; // silent = dead or inactive
106 Bool_t IsPixelDead(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t col, UInt_t row) const;
107 Bool_t IsPixelNoisy(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t col, UInt_t row) const;
108 Bool_t IsPixelBadM(UInt_t module, UInt_t colM, UInt_t row) const;
109 Bool_t IsPixelSilentM(UInt_t module, UInt_t colM, UInt_t row) const;
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;
112 Bool_t IsPixelBadKey(Int_t key) const;
113 Bool_t IsPixelSilentKey(Int_t key) const;
114 Bool_t IsPixelDeadKey(Int_t key) const;
115 Bool_t IsPixelNoisyKey(Int_t key) const;
117 UInt_t GetNrBad() const; // bad = silent or noisy
118 UInt_t GetNrSilent() const; // silent = dead or inactive
119 UInt_t GetNrDead() const;
120 UInt_t GetDeadEqIdAt(UInt_t index) const;
121 UInt_t GetDeadHSAt(UInt_t index) const;
122 UInt_t GetDeadChipAt(UInt_t index) const;
123 UInt_t GetDeadColAt(UInt_t index) const;
124 UInt_t GetDeadRowAt(UInt_t index) const;
125 UInt_t GetNrNoisy() const;
126 UInt_t GetNoisyEqIdAt(UInt_t index) const;
127 UInt_t GetNoisyHSAt(UInt_t index) const;
128 UInt_t GetNoisyChipAt(UInt_t index) const;
129 UInt_t GetNoisyColAt(UInt_t index) const;
130 UInt_t GetNoisyRowAt(UInt_t index) const;
133 UInt_t GetNrBad(UInt_t module) const; // bad = silent or noisy
134 UInt_t GetNrSilent(UInt_t module) const; // silent = dead or inactive
135 UInt_t GetNrDead(UInt_t module) const;
136 UInt_t GetNrDeadSingle(UInt_t module) const;
137 UInt_t GetDeadEqIdAt(UInt_t module,UInt_t index) const;
138 UInt_t GetDeadHSAt(UInt_t module,UInt_t index) const;
139 UInt_t GetDeadChipAt(UInt_t module,UInt_t index) const;
140 UInt_t GetDeadColAt(UInt_t module,UInt_t index) const;
141 UInt_t GetDeadRowAt(UInt_t module,UInt_t index) const;
142 UInt_t GetNrNoisy(UInt_t module) const;
143 UInt_t GetNrNoisySingle(UInt_t module) const;
144 UInt_t GetNoisyEqIdAt(UInt_t module, UInt_t index) const;
145 UInt_t GetNoisyHSAt(UInt_t module, UInt_t index) const;
146 UInt_t GetNoisyChipAt(UInt_t module, UInt_t index) const;
147 UInt_t GetNoisyColAt(UInt_t module, UInt_t index) const;
148 UInt_t GetNoisyRowAt(UInt_t module, UInt_t index) const;
150 UInt_t GetNrBadEq(UInt_t eq) const; // bad = silent or noisy
151 UInt_t GetNrSilentEq(UInt_t eq) const; // silent = dead or inactive
152 UInt_t GetNrDeadEq(UInt_t eq) const;
153 UInt_t GetDeadEqIdAtEq(UInt_t eq, UInt_t index) const;
154 UInt_t GetDeadHSAtEq(UInt_t eq, UInt_t index) const;
155 UInt_t GetDeadChipAtEq(UInt_t eq, UInt_t index) const;
156 UInt_t GetDeadColAtEq(UInt_t eq, UInt_t index) const;
157 UInt_t GetDeadRowAtEq(UInt_t eq, UInt_t index) const;
158 UInt_t GetNrNoisyEq(UInt_t eq) const;
159 UInt_t GetNoisyEqIdAtEq(UInt_t eq, UInt_t index) const;
160 UInt_t GetNoisyHSAtEq(UInt_t eq, UInt_t index) const;
161 UInt_t GetNoisyChipAtEq(UInt_t eq, UInt_t index) const;
162 UInt_t GetNoisyColAtEq(UInt_t eq, UInt_t index) const;
163 UInt_t GetNoisyRowAtEq(UInt_t eq, UInt_t index) const;
165 UInt_t GetNrBadC(UInt_t eq, UInt_t hs, UInt_t chip) const; // bad = silent or noisy
166 UInt_t GetNrSilentC(UInt_t eq, UInt_t hs, UInt_t chip) const; // silent = dead or inactive
167 UInt_t GetNrDeadC(UInt_t eq, UInt_t hs, UInt_t chip) const;
168 UInt_t GetDeadEqIdAtC(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t index) const;
169 UInt_t GetDeadHSAtC(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t index) const;
170 UInt_t GetDeadChipAtC(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t index) const;
171 UInt_t GetDeadColAtC(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t index) const;
172 UInt_t GetDeadRowAtC(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t index) const;
173 UInt_t GetNrNoisyC(UInt_t eq, UInt_t hs, UInt_t chip) const;
174 UInt_t GetNoisyEqIdAtC(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t index) const;
175 UInt_t GetNoisyHSAtC(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t index) const;
176 UInt_t GetNoisyChipAtC(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t index) const;
177 UInt_t GetNoisyColAtC(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t index) const;
178 UInt_t GetNoisyRowAtC(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t index) const;
180 const Char_t* GetDeadPixelAsTextC(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t index) const;
181 const Char_t* GetNoisyPixelAsTextC(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t index) const;
184 void ActivateEq(UInt_t eq, Bool_t setval = kTRUE);
185 void ActivateHS(UInt_t eq, UInt_t hs, Bool_t setval = kTRUE);
186 void ActivateChip(UInt_t eq, UInt_t hs, UInt_t chip, Bool_t setval = kTRUE);
189 void SetDeadEq(UInt_t eq, Bool_t setval = kTRUE);
190 void SetDeadHS(UInt_t eq, UInt_t hs, Bool_t setval = kTRUE);
191 void SetDeadChip(UInt_t eq, UInt_t hs, UInt_t chip, Bool_t setval = kTRUE);
193 Bool_t IsActiveEq(UInt_t eq) const;
194 Bool_t IsActiveHS(UInt_t eq, UInt_t hs) const;
195 Bool_t IsActiveChip(UInt_t eq, UInt_t hs, UInt_t chip) const;
197 Bool_t IsDeadEq(UInt_t eq) const;
198 Bool_t IsDeadHS(UInt_t eq, UInt_t hs) const;
199 Bool_t IsDeadChip(UInt_t eq, UInt_t hs, UInt_t chip) const;
201 Bool_t IsSilentEq(UInt_t eq) const;
202 Bool_t IsSilentHS(UInt_t eq, UInt_t hs) const;
203 Bool_t IsSilentChip(UInt_t eq, UInt_t hs, UInt_t chip) const;
206 UInt_t AddSilentFrom(AliITSOnlineCalibrationSPDhandler* other);
207 UInt_t AddDeadFrom(AliITSOnlineCalibrationSPDhandler* other);
208 UInt_t AddNoisyFrom(AliITSOnlineCalibrationSPDhandler* other);
210 UInt_t GetNrDiff(AliITSOnlineCalibrationSPDhandler* other) const;
211 UInt_t GetNrSilentDiff(AliITSOnlineCalibrationSPDhandler* other) const;
212 UInt_t GetNrDeadDiff(AliITSOnlineCalibrationSPDhandler* other) const;
213 UInt_t GetNrNoisyDiff(AliITSOnlineCalibrationSPDhandler* other) const;
214 AliITSOnlineCalibrationSPDhandler* GetDiff(AliITSOnlineCalibrationSPDhandler* other) const;
215 AliITSOnlineCalibrationSPDhandler* GetSilentDiff(AliITSOnlineCalibrationSPDhandler* other) const;
216 AliITSOnlineCalibrationSPDhandler* GetDeadDiff(AliITSOnlineCalibrationSPDhandler* other) const;
217 AliITSOnlineCalibrationSPDhandler* GetNoisyDiff(AliITSOnlineCalibrationSPDhandler* other) const;
221 TString fFileLocation; // location (dir) of files to read and write from
222 AliITSIntMap* fDeadPixelMap[1200]; // lists of dead pixels for each chip
223 AliITSIntMap* fNoisyPixelMap[1200]; // lists of noisy pixels for each chip
224 UInt_t fNrDead[1200]; // nr of dead pixels for each chip
225 UInt_t fNrNoisy[1200]; // nr of noisy pixels for each chip
226 Bool_t fActiveEq[20]; // active bit for each equipment
227 Bool_t fActiveHS[20][6]; // active bit for each half-stave
228 Bool_t fActiveChip[20][6][10]; // active bit for each chip
229 Bool_t fDeadEq[20]; // dead bit for each equipment
230 Bool_t fDeadHS[20][6]; // dead bit for each half-stave
231 Bool_t fDeadChip[20][6][10]; // dead bit for each chip
233 Int_t GetKey(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t col, UInt_t row) const
234 {return eq*6*10*32*256 + hs*10*32*256 + chip*32*256 + col*256 + row;}
235 UInt_t GetEqIdFromKey(Int_t key) const
236 {return key/(6*10*32*256);}
237 UInt_t GetHSFromKey(Int_t key) const
238 {return (key%(6*10*32*256))/(10*32*256);}
239 UInt_t GetChipFromKey(Int_t key) const
240 {return ((key%(6*10*32*256))%(10*32*256))/(32*256);}
241 UInt_t GetColFromKey(Int_t key) const
242 {return (((key%(6*10*32*256))%(10*32*256))%(32*256))/256;}
243 UInt_t GetRowFromKey(Int_t key) const
244 {return (((key%(6*10*32*256))%(10*32*256))%(32*256))%256;}
245 UInt_t GetModuleFromKey(Int_t key) const
246 {return AliITSRawStreamSPD::GetOfflineModuleFromOnline(GetEqIdFromKey(key),GetHSFromKey(key),GetChipFromKey(key));}
247 UInt_t GetColMFromKey(Int_t key) const
248 {return AliITSRawStreamSPD::GetOfflineColFromOnline(GetEqIdFromKey(key),GetHSFromKey(key),GetChipFromKey(key),GetColFromKey(key));}
249 UInt_t GetRowMFromKey(Int_t key) const
250 {return AliITSRawStreamSPD::GetOfflineRowFromOnline(GetEqIdFromKey(key),GetHSFromKey(key),GetChipFromKey(key),GetRowFromKey(key));}
252 UInt_t GetGloChip(UInt_t eq, UInt_t hs, UInt_t chip) const {return eq*60 + hs*10 + chip;}
253 UInt_t GetEqGlo(UInt_t gloChip) const {return gloChip/60;}
254 UInt_t GetHSGlo(UInt_t gloChip) const {return (gloChip%60)/10;}
255 UInt_t GetChipGlo(UInt_t gloChip) const {return (gloChip%60)%10;}
257 void GetChipAndIndexDead(UInt_t module, UInt_t index, UInt_t& gloChip, UInt_t& chipIndex) const;
258 void GetChipAndIndexNoisy(UInt_t module, UInt_t index, UInt_t& gloChip, UInt_t& chipIndex) const;
259 void GetChipAndIndexEqDead(UInt_t eq, UInt_t index, UInt_t& gloChip, UInt_t& chipIndex) const;
260 void GetChipAndIndexEqNoisy(UInt_t eq, UInt_t index, UInt_t& gloChip, UInt_t& chipIndex) const;
261 void GetChipAndIndexTotDead(UInt_t index, UInt_t& gloChip, UInt_t& chipIndex) const;
262 void GetChipAndIndexTotNoisy(UInt_t index, UInt_t& gloChip, UInt_t& chipIndex) const;
264 UInt_t GetEqIdFromOffline(UInt_t module) const;
265 UInt_t GetHSFromOffline(UInt_t module) const;
266 UInt_t GetChipFromOffline(UInt_t module, UInt_t colM) const;
267 UInt_t GetColFromOffline(UInt_t module, UInt_t colM) const;
268 UInt_t GetRowFromOffline(UInt_t module, UInt_t rowM) const;
270 void RecursiveInsertDead(AliITSCalibrationSPD* calibSPD, UInt_t module, Int_t lowInd, Int_t highInd);
271 void RecursiveInsertNoisy(AliITSCalibrationSPD* calibSPD, UInt_t module, Int_t lowInd, Int_t highInd);
273 UInt_t GetNrDeadC2(UInt_t gloChip) const;
274 UInt_t GetDeadEqIdAtC2(UInt_t gloChip, UInt_t index) const;
275 UInt_t GetDeadHSAtC2(UInt_t gloChip, UInt_t index) const;
276 UInt_t GetDeadChipAtC2(UInt_t gloChip, UInt_t index) const;
277 UInt_t GetDeadColAtC2(UInt_t gloChip, UInt_t index) const;
278 UInt_t GetDeadRowAtC2(UInt_t gloChip, UInt_t index) const;
279 UInt_t GetNrNoisyC2(UInt_t gloChip) const;
280 UInt_t GetNoisyEqIdAtC2(UInt_t gloChip, UInt_t index) const;
281 UInt_t GetNoisyHSAtC2(UInt_t gloChip, UInt_t index) const;
282 UInt_t GetNoisyChipAtC2(UInt_t gloChip, UInt_t index) const;
283 UInt_t GetNoisyColAtC2(UInt_t gloChip, UInt_t index) const;
284 UInt_t GetNoisyRowAtC2(UInt_t gloChip, UInt_t index) const;