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