#include "TArrayI.h"
#include "AliITSCalibrationSPD.h"
ClassImp(AliITSCalibrationSPD)
AliITSCalibrationSPD::AliITSCalibrationSPD():
AliITSCalibration(),
fNrBad(0),
fBadChannels(0){
SetDataType("simulated");
ClearBad();
}
void AliITSCalibrationSPD::ClearBad() {
fBadChannels.Reset();
fNrBad=0;
for (UInt_t chip=0; chip<5; chip++) {
fBadChip[chip]=kFALSE;
}
}
void AliITSCalibrationSPD::AddBad(UInt_t col, UInt_t row) {
fBadChannels.Set(fNrBad*2+2);
fBadChannels.AddAt(col,fNrBad*2);
fBadChannels.AddAt(row,fNrBad*2+1);
fNrBad++;
}
void AliITSCalibrationSPD::SetChipBad(UInt_t chip) {
if (chip>=5) {AliError("Wrong chip number");
}
else {
fBadChip[chip]=kTRUE;
}
}
void AliITSCalibrationSPD::UnSetChipBad(UInt_t chip) {
if (chip>=5 ) {AliError("Wrong chip number");
}
else {
fBadChip[chip]=kFALSE;
}
}
Int_t AliITSCalibrationSPD::GetBadColAt(UInt_t index) const {
if ((Int_t)index<GetNrBadSingle()) {
return fBadChannels.At(index*2);
}
else {
Int_t badChipIndex=(index-GetNrBadSingle())/(32*256);
Int_t badChipsFound =0;
for (UInt_t chip=0; chip<5; chip++) {
if (fBadChip[chip]) badChipsFound++;
if (badChipIndex==badChipsFound-1) {
Int_t badPixelIndex=(index-GetNrBadSingle())%(32*256);
return chip*32 + badPixelIndex/256;
}
}
}
AliError(Form("Index %d is out of bounds - returning -1",index));
return -1;
}
Int_t AliITSCalibrationSPD::GetBadRowAt(UInt_t index) const {
if ((Int_t)index<GetNrBadSingle()) {
return fBadChannels.At(index*2+1);
}
else {
Int_t badChipIndex=(index-GetNrBadSingle())/(32*256);
Int_t badChipsFound =0;
for (UInt_t chip=0; chip<5; chip++) {
if (fBadChip[chip]) badChipsFound++;
if (badChipIndex==badChipsFound-1) {
Int_t badPixelIndex=(index-GetNrBadSingle())%(32*256);
return badPixelIndex%256;
}
}
}
AliError(Form("Index %d is out of bounds - returning -1",index));
return -1;
}
void AliITSCalibrationSPD::GetBadPixel(Int_t index, Int_t &row, Int_t &col) const {
row = -1;
col = -1;
if(index>=0 && index<GetNrBadSingle()){
col = GetBadColAt(index);
row = GetBadRowAt(index);
return;
}
else {
if (index>=0) {
Int_t badChipIndex=(index-GetNrBadSingle())/(32*256);
Int_t badChipsFound =0;
for (UInt_t chip=0; chip<5; chip++) {
if (fBadChip[chip]) badChipsFound++;
if (badChipIndex==badChipsFound-1) {
Int_t badPixelIndex=(index-GetNrBadSingle())%(32*256);
col = chip*32 + badPixelIndex/256;
row = badPixelIndex%256;
return;
}
}
}
}
AliError(Form("Index %d is out of bounds - nothing done",index));
}
Int_t AliITSCalibrationSPD::GetNrBad() const {
Int_t bad=0;
bad+=fNrBad;
for (UInt_t chip=0; chip<5; chip++) {
bad+=fBadChip[chip]*32*256;
}
return bad;
}
Int_t AliITSCalibrationSPD::GetNrBadInChip(Int_t chip) const {
if(chip<0 || chip>4) {AliError("Wrong chip number"); return -1;}
if (fBadChip[chip]) return 32*256;
else {
Int_t bad=0;
for (UInt_t i=0; i<fNrBad; i++) {
Int_t col = GetBadColAt(i);
if (col!=-1) {
if (GetChipIndexFromCol(col)==chip) bad++;
}
}
return bad;
}
}
Int_t AliITSCalibrationSPD::GetNrBadInColumn(Int_t col) const {
if(col<0 || col>159) {AliError("Wrong column number"); return -1;}
if (fBadChip[GetChipIndexFromCol(col)]) return 256;
else {
Int_t bad=0;
for (UInt_t i=0; i<fNrBad; i++) {
if (GetBadColAt(i)==col) bad++;
}
return bad;
}
}
Bool_t AliITSCalibrationSPD::IsBad() const {
for (UInt_t chip=0; chip<5; chip++) {
if (!fBadChip[chip]) return kFALSE;
}
return kTRUE;
}
Bool_t AliITSCalibrationSPD::IsChipBad(Int_t chip) const {
return (GetNrBadInChip(chip)==32*256);
}
Bool_t AliITSCalibrationSPD::IsColumnBad(Int_t col) const {
return (GetNrBadInColumn(col)==256);
}
Bool_t AliITSCalibrationSPD::IsPixelBad(Int_t col, Int_t row) const {
if(col<0 || col>159) {AliError("Wrong column number"); return kFALSE;}
Int_t chip = GetChipIndexFromCol(col);
if (fBadChip[chip]) return kTRUE;
for (UInt_t i=0; i<fNrBad; i++) {
if (GetBadColAt(i)==col && GetBadRowAt(i)==row) {
return kTRUE;
}
}
return kFALSE;
}
Int_t AliITSCalibrationSPD::GetChipIndexFromCol(UInt_t col) const {
if(col>=160) {AliWarning("Wrong column number"); return -1;}
return col/32;
}
void AliITSCalibrationSPD::SetNrBad(UInt_t ) {
AliError("This method should not be used anymore. Use SetNrBadSingle instead!!!");
}
void AliITSCalibrationSPD::Streamer(TBuffer &ruub) {
UInt_t ruus, ruuc;
if (ruub.IsReading()) {
Version_t ruuv = ruub.ReadVersion(&ruus, &ruuc); if (ruuv) { }
AliITSCalibration::Streamer(ruub);
if (ruuv >= 8) {
ruub >> fNrBad;
fBadChannels.Streamer(ruub);
ruub.ReadStaticArray((bool*)fBadChip);
}
else {
Double_t dummy;
ruub >> dummy;
ruub >> dummy;
ruub >> dummy;
ruub >> dummy;
ruub >> dummy;
ruub >> dummy;
ruub >> dummy;
ruub >> fNrBad;
if (ruuv == 7) {
fBadChannels.Streamer(ruub);
ruub.ReadStaticArray((bool*)fBadChip);
}
else {
if (ruuv == 6) {
fBadChannels.Streamer(ruub);
}
else {
TArrayI fBadChannelsV1;
fBadChannelsV1.Streamer(ruub);
fBadChannels.Set(fNrBad*2);
for (UInt_t i=0; i<fNrBad*2; i++) {
fBadChannels[i] = fBadChannelsV1[i];
}
}
for (UInt_t i=0; i<5; i++) {
fBadChip[i]=kFALSE;
}
}
}
ruub.CheckByteCount(ruus, ruuc, AliITSCalibrationSPD::IsA());
}
else {
ruuc = ruub.WriteVersion(AliITSCalibrationSPD::IsA(), kTRUE);
AliITSCalibration::Streamer(ruub);
ruub << fNrBad;
fBadChannels.Streamer(ruub);
ruub.WriteArray(fBadChip, 5);
ruub.SetByteCount(ruuc, kTRUE);
}
}
AliITSCalibrationSPD.cxx:1 AliITSCalibrationSPD.cxx:2 AliITSCalibrationSPD.cxx:3 AliITSCalibrationSPD.cxx:4 AliITSCalibrationSPD.cxx:5 AliITSCalibrationSPD.cxx:6 AliITSCalibrationSPD.cxx:7 AliITSCalibrationSPD.cxx:8 AliITSCalibrationSPD.cxx:9 AliITSCalibrationSPD.cxx:10 AliITSCalibrationSPD.cxx:11 AliITSCalibrationSPD.cxx:12 AliITSCalibrationSPD.cxx:13 AliITSCalibrationSPD.cxx:14 AliITSCalibrationSPD.cxx:15 AliITSCalibrationSPD.cxx:16 AliITSCalibrationSPD.cxx:17 AliITSCalibrationSPD.cxx:18 AliITSCalibrationSPD.cxx:19 AliITSCalibrationSPD.cxx:20 AliITSCalibrationSPD.cxx:21 AliITSCalibrationSPD.cxx:22 AliITSCalibrationSPD.cxx:23 AliITSCalibrationSPD.cxx:24 AliITSCalibrationSPD.cxx:25 AliITSCalibrationSPD.cxx:26 AliITSCalibrationSPD.cxx:27 AliITSCalibrationSPD.cxx:28 AliITSCalibrationSPD.cxx:29 AliITSCalibrationSPD.cxx:30 AliITSCalibrationSPD.cxx:31 AliITSCalibrationSPD.cxx:32 AliITSCalibrationSPD.cxx:33 AliITSCalibrationSPD.cxx:34 AliITSCalibrationSPD.cxx:35 AliITSCalibrationSPD.cxx:36 AliITSCalibrationSPD.cxx:37 AliITSCalibrationSPD.cxx:38 AliITSCalibrationSPD.cxx:39 AliITSCalibrationSPD.cxx:40 AliITSCalibrationSPD.cxx:41 AliITSCalibrationSPD.cxx:42 AliITSCalibrationSPD.cxx:43 AliITSCalibrationSPD.cxx:44 AliITSCalibrationSPD.cxx:45 AliITSCalibrationSPD.cxx:46 AliITSCalibrationSPD.cxx:47 AliITSCalibrationSPD.cxx:48 AliITSCalibrationSPD.cxx:49 AliITSCalibrationSPD.cxx:50 AliITSCalibrationSPD.cxx:51 AliITSCalibrationSPD.cxx:52 AliITSCalibrationSPD.cxx:53 AliITSCalibrationSPD.cxx:54 AliITSCalibrationSPD.cxx:55 AliITSCalibrationSPD.cxx:56 AliITSCalibrationSPD.cxx:57 AliITSCalibrationSPD.cxx:58 AliITSCalibrationSPD.cxx:59 AliITSCalibrationSPD.cxx:60 AliITSCalibrationSPD.cxx:61 AliITSCalibrationSPD.cxx:62 AliITSCalibrationSPD.cxx:63 AliITSCalibrationSPD.cxx:64 AliITSCalibrationSPD.cxx:65 AliITSCalibrationSPD.cxx:66 AliITSCalibrationSPD.cxx:67 AliITSCalibrationSPD.cxx:68 AliITSCalibrationSPD.cxx:69 AliITSCalibrationSPD.cxx:70 AliITSCalibrationSPD.cxx:71 AliITSCalibrationSPD.cxx:72 AliITSCalibrationSPD.cxx:73 AliITSCalibrationSPD.cxx:74 AliITSCalibrationSPD.cxx:75 AliITSCalibrationSPD.cxx:76 AliITSCalibrationSPD.cxx:77 AliITSCalibrationSPD.cxx:78 AliITSCalibrationSPD.cxx:79 AliITSCalibrationSPD.cxx:80 AliITSCalibrationSPD.cxx:81 AliITSCalibrationSPD.cxx:82 AliITSCalibrationSPD.cxx:83 AliITSCalibrationSPD.cxx:84 AliITSCalibrationSPD.cxx:85 AliITSCalibrationSPD.cxx:86 AliITSCalibrationSPD.cxx:87 AliITSCalibrationSPD.cxx:88 AliITSCalibrationSPD.cxx:89 AliITSCalibrationSPD.cxx:90 AliITSCalibrationSPD.cxx:91 AliITSCalibrationSPD.cxx:92 AliITSCalibrationSPD.cxx:93 AliITSCalibrationSPD.cxx:94 AliITSCalibrationSPD.cxx:95 AliITSCalibrationSPD.cxx:96 AliITSCalibrationSPD.cxx:97 AliITSCalibrationSPD.cxx:98 AliITSCalibrationSPD.cxx:99 AliITSCalibrationSPD.cxx:100 AliITSCalibrationSPD.cxx:101 AliITSCalibrationSPD.cxx:102 AliITSCalibrationSPD.cxx:103 AliITSCalibrationSPD.cxx:104 AliITSCalibrationSPD.cxx:105 AliITSCalibrationSPD.cxx:106 AliITSCalibrationSPD.cxx:107 AliITSCalibrationSPD.cxx:108 AliITSCalibrationSPD.cxx:109 AliITSCalibrationSPD.cxx:110 AliITSCalibrationSPD.cxx:111 AliITSCalibrationSPD.cxx:112 AliITSCalibrationSPD.cxx:113 AliITSCalibrationSPD.cxx:114 AliITSCalibrationSPD.cxx:115 AliITSCalibrationSPD.cxx:116 AliITSCalibrationSPD.cxx:117 AliITSCalibrationSPD.cxx:118 AliITSCalibrationSPD.cxx:119 AliITSCalibrationSPD.cxx:120 AliITSCalibrationSPD.cxx:121 AliITSCalibrationSPD.cxx:122 AliITSCalibrationSPD.cxx:123 AliITSCalibrationSPD.cxx:124 AliITSCalibrationSPD.cxx:125 AliITSCalibrationSPD.cxx:126 AliITSCalibrationSPD.cxx:127 AliITSCalibrationSPD.cxx:128 AliITSCalibrationSPD.cxx:129 AliITSCalibrationSPD.cxx:130 AliITSCalibrationSPD.cxx:131 AliITSCalibrationSPD.cxx:132 AliITSCalibrationSPD.cxx:133 AliITSCalibrationSPD.cxx:134 AliITSCalibrationSPD.cxx:135 AliITSCalibrationSPD.cxx:136 AliITSCalibrationSPD.cxx:137 AliITSCalibrationSPD.cxx:138 AliITSCalibrationSPD.cxx:139 AliITSCalibrationSPD.cxx:140 AliITSCalibrationSPD.cxx:141 AliITSCalibrationSPD.cxx:142 AliITSCalibrationSPD.cxx:143 AliITSCalibrationSPD.cxx:144 AliITSCalibrationSPD.cxx:145 AliITSCalibrationSPD.cxx:146 AliITSCalibrationSPD.cxx:147 AliITSCalibrationSPD.cxx:148 AliITSCalibrationSPD.cxx:149 AliITSCalibrationSPD.cxx:150 AliITSCalibrationSPD.cxx:151 AliITSCalibrationSPD.cxx:152 AliITSCalibrationSPD.cxx:153 AliITSCalibrationSPD.cxx:154 AliITSCalibrationSPD.cxx:155 AliITSCalibrationSPD.cxx:156 AliITSCalibrationSPD.cxx:157 AliITSCalibrationSPD.cxx:158 AliITSCalibrationSPD.cxx:159 AliITSCalibrationSPD.cxx:160 AliITSCalibrationSPD.cxx:161 AliITSCalibrationSPD.cxx:162 AliITSCalibrationSPD.cxx:163 AliITSCalibrationSPD.cxx:164 AliITSCalibrationSPD.cxx:165 AliITSCalibrationSPD.cxx:166 AliITSCalibrationSPD.cxx:167 AliITSCalibrationSPD.cxx:168 AliITSCalibrationSPD.cxx:169 AliITSCalibrationSPD.cxx:170 AliITSCalibrationSPD.cxx:171 AliITSCalibrationSPD.cxx:172 AliITSCalibrationSPD.cxx:173 AliITSCalibrationSPD.cxx:174 AliITSCalibrationSPD.cxx:175 AliITSCalibrationSPD.cxx:176 AliITSCalibrationSPD.cxx:177 AliITSCalibrationSPD.cxx:178 AliITSCalibrationSPD.cxx:179 AliITSCalibrationSPD.cxx:180 AliITSCalibrationSPD.cxx:181 AliITSCalibrationSPD.cxx:182 AliITSCalibrationSPD.cxx:183 AliITSCalibrationSPD.cxx:184 AliITSCalibrationSPD.cxx:185 AliITSCalibrationSPD.cxx:186 AliITSCalibrationSPD.cxx:187 AliITSCalibrationSPD.cxx:188 AliITSCalibrationSPD.cxx:189 AliITSCalibrationSPD.cxx:190 AliITSCalibrationSPD.cxx:191 AliITSCalibrationSPD.cxx:192 AliITSCalibrationSPD.cxx:193 AliITSCalibrationSPD.cxx:194 AliITSCalibrationSPD.cxx:195 AliITSCalibrationSPD.cxx:196 AliITSCalibrationSPD.cxx:197 AliITSCalibrationSPD.cxx:198 AliITSCalibrationSPD.cxx:199 AliITSCalibrationSPD.cxx:200 AliITSCalibrationSPD.cxx:201 AliITSCalibrationSPD.cxx:202 AliITSCalibrationSPD.cxx:203 AliITSCalibrationSPD.cxx:204 AliITSCalibrationSPD.cxx:205 AliITSCalibrationSPD.cxx:206 AliITSCalibrationSPD.cxx:207 AliITSCalibrationSPD.cxx:208 AliITSCalibrationSPD.cxx:209 AliITSCalibrationSPD.cxx:210 AliITSCalibrationSPD.cxx:211 AliITSCalibrationSPD.cxx:212 AliITSCalibrationSPD.cxx:213 AliITSCalibrationSPD.cxx:214 AliITSCalibrationSPD.cxx:215 AliITSCalibrationSPD.cxx:216 AliITSCalibrationSPD.cxx:217 AliITSCalibrationSPD.cxx:218 AliITSCalibrationSPD.cxx:219 AliITSCalibrationSPD.cxx:220 AliITSCalibrationSPD.cxx:221 AliITSCalibrationSPD.cxx:222 AliITSCalibrationSPD.cxx:223 AliITSCalibrationSPD.cxx:224 AliITSCalibrationSPD.cxx:225 AliITSCalibrationSPD.cxx:226 AliITSCalibrationSPD.cxx:227 AliITSCalibrationSPD.cxx:228 AliITSCalibrationSPD.cxx:229 AliITSCalibrationSPD.cxx:230 AliITSCalibrationSPD.cxx:231 AliITSCalibrationSPD.cxx:232 AliITSCalibrationSPD.cxx:233 AliITSCalibrationSPD.cxx:234 AliITSCalibrationSPD.cxx:235 AliITSCalibrationSPD.cxx:236 AliITSCalibrationSPD.cxx:237 AliITSCalibrationSPD.cxx:238 AliITSCalibrationSPD.cxx:239 AliITSCalibrationSPD.cxx:240 AliITSCalibrationSPD.cxx:241 AliITSCalibrationSPD.cxx:242 AliITSCalibrationSPD.cxx:243 AliITSCalibrationSPD.cxx:244 AliITSCalibrationSPD.cxx:245 AliITSCalibrationSPD.cxx:246 AliITSCalibrationSPD.cxx:247 AliITSCalibrationSPD.cxx:248 AliITSCalibrationSPD.cxx:249 AliITSCalibrationSPD.cxx:250 AliITSCalibrationSPD.cxx:251 AliITSCalibrationSPD.cxx:252 AliITSCalibrationSPD.cxx:253 AliITSCalibrationSPD.cxx:254 AliITSCalibrationSPD.cxx:255 AliITSCalibrationSPD.cxx:256 AliITSCalibrationSPD.cxx:257 AliITSCalibrationSPD.cxx:258 AliITSCalibrationSPD.cxx:259 AliITSCalibrationSPD.cxx:260 AliITSCalibrationSPD.cxx:261 AliITSCalibrationSPD.cxx:262 AliITSCalibrationSPD.cxx:263 AliITSCalibrationSPD.cxx:264 AliITSCalibrationSPD.cxx:265 AliITSCalibrationSPD.cxx:266 AliITSCalibrationSPD.cxx:267 AliITSCalibrationSPD.cxx:268 AliITSCalibrationSPD.cxx:269 AliITSCalibrationSPD.cxx:270 AliITSCalibrationSPD.cxx:271 AliITSCalibrationSPD.cxx:272 AliITSCalibrationSPD.cxx:273 AliITSCalibrationSPD.cxx:274 AliITSCalibrationSPD.cxx:275 AliITSCalibrationSPD.cxx:276 AliITSCalibrationSPD.cxx:277 AliITSCalibrationSPD.cxx:278