#include <TArray.h>
#include "AliTRDarraySignal.h"
#include "AliTRDfeeParam.h"
ClassImp(AliTRDarraySignal)
Short_t *AliTRDarraySignal::fgLutPadNumbering = 0x0;
AliTRDarraySignal::AliTRDarraySignal()
:TObject()
,fNdet(0)
,fNrow(0)
,fNcol(0)
,fNumberOfChannels(0)
,fNtime(0)
,fNdim(0)
,fSignal(0)
{
CreateLut();
}
AliTRDarraySignal::AliTRDarraySignal(Int_t nrow, Int_t ncol,Int_t ntime)
:TObject()
,fNdet(0)
,fNrow(0)
,fNcol(0)
,fNumberOfChannels(0)
,fNtime(0)
,fNdim(0)
,fSignal(0)
{
CreateLut();
Allocate(nrow,ncol,ntime);
}
AliTRDarraySignal::AliTRDarraySignal(const AliTRDarraySignal &d)
:TObject()
,fNdet(d.fNdet)
,fNrow(d.fNrow)
,fNcol(d.fNcol)
,fNumberOfChannels(d.fNumberOfChannels)
,fNtime(d.fNtime)
,fNdim(d.fNdim)
,fSignal(0)
{
fSignal = new Float_t[fNdim];
memcpy(fSignal, d.fSignal, fNdim*sizeof(Float_t));
}
AliTRDarraySignal::~AliTRDarraySignal()
{
delete [] fSignal;
fSignal=0;
}
AliTRDarraySignal &AliTRDarraySignal::operator=(const AliTRDarraySignal &d)
{
if (this==&d)
{
return *this;
}
if (fSignal)
{
delete [] fSignal;
}
fNdet=d.fNdet;
fNrow=d.fNrow;
fNcol=d.fNcol;
fNumberOfChannels = d.fNumberOfChannels;
fNtime=d.fNtime;
fNdim=d.fNdim;
fSignal = new Float_t[fNdim];
memcpy(fSignal,d.fSignal, fNdim*sizeof(Float_t));
return *this;
}
void AliTRDarraySignal::Allocate(Int_t nrow, Int_t ncol, Int_t ntime)
{
fNrow=nrow;
fNcol=ncol;
fNtime=ntime;
Int_t adcchannelspermcm = AliTRDfeeParam::GetNadcMcm();
Int_t padspermcm = AliTRDfeeParam::GetNcolMcm();
Int_t numberofmcms = fNcol/padspermcm;
fNumberOfChannels = numberofmcms*adcchannelspermcm;
fNdim = nrow*fNumberOfChannels*ntime;
if (fSignal)
{
delete [] fSignal;
}
fSignal = new Float_t[fNdim];
memset(fSignal,0,sizeof(Float_t)*fNdim);
}
Int_t AliTRDarraySignal::GetOverThreshold(Float_t threshold) const
{
Int_t counter=0;
for(Int_t i=0; i<fNdim; i++)
{
if(fSignal[i]>threshold)
{
counter++;
}
}
return counter;
}
void AliTRDarraySignal::Compress(Float_t minval)
{
Int_t counter=0;
Int_t newDim=0;
Int_t j;
Int_t r=0;
Int_t k=0;
Int_t *longArr = new Int_t[fNdim];
if(longArr)
{
memset(longArr,0,sizeof(Int_t)*fNdim);
for(Int_t i=0;i<fNdim; i++)
{
j=0;
if(fSignal[i]<=minval)
{
for(k=i;k<fNdim;k++)
{
if(fSignal[k]<=minval)
{
j=j+1;
longArr[r]=j;
}
else
{
break;
}
}
r=r+1;
}
i=i+j;
}
for(Int_t i=0; i<fNdim;i++)
{
if(longArr[i]!=0)
{
counter=counter+longArr[i]-1;
}
}
newDim=fNdim-counter;
Float_t* buffer = new Float_t[newDim];
Int_t counterTwo=0;
if(buffer)
{
Int_t g=0;
for(Int_t i=0; i<newDim; i++)
{
if(counterTwo<fNdim)
{
if(fSignal[counterTwo]>minval)
{
buffer[i]=fSignal[counterTwo];
}
if(fSignal[counterTwo]<=minval)
{
buffer[i]=-(longArr[g]);
counterTwo=counterTwo+longArr[g]-1;
g++;
}
counterTwo++;
}
}
if(fSignal)
{
delete [] fSignal;
fSignal=0;
}
fSignal = new Float_t[newDim];
fNdim = newDim;
for(Int_t i=0; i<newDim; i++)
{
fSignal[i] = buffer[i];
}
delete [] buffer;
buffer=0;
}
delete [] longArr;
longArr=0;
}
}
void AliTRDarraySignal::Expand()
{
if(fSignal)
{
Int_t verif=0;
for(Int_t i=0; i<fNdim; i++)
{
if(fSignal[i]<0)
{
verif++;
}
}
if(verif==0)
{
return;
}
Int_t dimexp=0;
Int_t *longArr = new Int_t[fNdim];
if(longArr)
{
memset(longArr,0,sizeof(Int_t)*fNdim);
Int_t r2=0;
for(Int_t i=0; i<fNdim;i++)
{
if(fSignal[i]<0)
{
longArr[r2]=(Int_t)(-fSignal[i]);
r2++;
}
}
for(Int_t i=0; i<fNdim;i++)
{
if(longArr[i]!=0)
{
dimexp=dimexp+longArr[i]-1;
}
}
dimexp=dimexp+fNdim;
Int_t contaexp =0;
Int_t h=0;
Float_t* bufferE = new Float_t[dimexp];
if(bufferE)
{
for(Int_t i=0; i<dimexp; i++)
{
if(fSignal[contaexp]>0)
{
bufferE[i]=fSignal[contaexp];
}
if(fSignal[contaexp]<0)
{
for(Int_t j=0; j<longArr[h];j++)
{
bufferE[i+j]=0;
}
i=i+longArr[h]-1;
h++;
}
contaexp++;
}
delete [] fSignal;
fSignal=0;
fSignal = new Float_t[dimexp];
fNdim = dimexp;
for(Int_t i=0; i<dimexp; i++)
{
fSignal[i] = bufferE[i];
}
delete [] bufferE;
}
delete [] longArr;
}
}
}
void AliTRDarraySignal::Reset()
{
memset(fSignal,0,sizeof(Float_t)*fNdim);
}
Float_t AliTRDarraySignal::GetData(Int_t nrow, Int_t ncol, Int_t ntime) const
{
Int_t corrcolumn = fgLutPadNumbering[ncol];
return fSignal[(nrow*fNumberOfChannels+corrcolumn)*fNtime+ntime];
}
void AliTRDarraySignal::SetData(Int_t nrow, Int_t ncol, Int_t ntime, Float_t value)
{
Int_t colnumb = fgLutPadNumbering[ncol];
fSignal[(nrow*fNumberOfChannels+colnumb)*fNtime+ntime]=value;
}
void AliTRDarraySignal::CreateLut()
{
if(fgLutPadNumbering) return;
fgLutPadNumbering = new Short_t[AliTRDfeeParam::GetNcol()];
memset(fgLutPadNumbering,0,sizeof(Short_t)*AliTRDfeeParam::GetNcol());
for(Int_t mcm=0; mcm<8; mcm++)
{
Int_t lowerlimit=0+mcm*18;
Int_t upperlimit=18+mcm*18;
Int_t shiftposition = 1+3*mcm;
for(Int_t index=lowerlimit;index<upperlimit;index++)
{
fgLutPadNumbering[index]=index+shiftposition;
}
}
}
AliTRDarraySignal.cxx:100 AliTRDarraySignal.cxx:101 AliTRDarraySignal.cxx:102 AliTRDarraySignal.cxx:103 AliTRDarraySignal.cxx:104 AliTRDarraySignal.cxx:105 AliTRDarraySignal.cxx:106 AliTRDarraySignal.cxx:107 AliTRDarraySignal.cxx:108 AliTRDarraySignal.cxx:109 AliTRDarraySignal.cxx:110 AliTRDarraySignal.cxx:111 AliTRDarraySignal.cxx:112 AliTRDarraySignal.cxx:113 AliTRDarraySignal.cxx:114 AliTRDarraySignal.cxx:115 AliTRDarraySignal.cxx:116 AliTRDarraySignal.cxx:117 AliTRDarraySignal.cxx:118 AliTRDarraySignal.cxx:119 AliTRDarraySignal.cxx:120 AliTRDarraySignal.cxx:121 AliTRDarraySignal.cxx:122 AliTRDarraySignal.cxx:123 AliTRDarraySignal.cxx:124 AliTRDarraySignal.cxx:125 AliTRDarraySignal.cxx:126 AliTRDarraySignal.cxx:127 AliTRDarraySignal.cxx:128 AliTRDarraySignal.cxx:129 AliTRDarraySignal.cxx:130 AliTRDarraySignal.cxx:131 AliTRDarraySignal.cxx:132 AliTRDarraySignal.cxx:133 AliTRDarraySignal.cxx:134 AliTRDarraySignal.cxx:135 AliTRDarraySignal.cxx:136 AliTRDarraySignal.cxx:137 AliTRDarraySignal.cxx:138 AliTRDarraySignal.cxx:139 AliTRDarraySignal.cxx:140 AliTRDarraySignal.cxx:141 AliTRDarraySignal.cxx:142 AliTRDarraySignal.cxx:143 AliTRDarraySignal.cxx:144 AliTRDarraySignal.cxx:145 AliTRDarraySignal.cxx:146 AliTRDarraySignal.cxx:147 AliTRDarraySignal.cxx:148 AliTRDarraySignal.cxx:149 AliTRDarraySignal.cxx:150 AliTRDarraySignal.cxx:151 AliTRDarraySignal.cxx:152 AliTRDarraySignal.cxx:153 AliTRDarraySignal.cxx:154 AliTRDarraySignal.cxx:155 AliTRDarraySignal.cxx:156 AliTRDarraySignal.cxx:157 AliTRDarraySignal.cxx:158 AliTRDarraySignal.cxx:159 AliTRDarraySignal.cxx:160 AliTRDarraySignal.cxx:161 AliTRDarraySignal.cxx:162 AliTRDarraySignal.cxx:163 AliTRDarraySignal.cxx:164 AliTRDarraySignal.cxx:165 AliTRDarraySignal.cxx:166 AliTRDarraySignal.cxx:167 AliTRDarraySignal.cxx:168 AliTRDarraySignal.cxx:169 AliTRDarraySignal.cxx:170 AliTRDarraySignal.cxx:171 AliTRDarraySignal.cxx:172 AliTRDarraySignal.cxx:173 AliTRDarraySignal.cxx:174 AliTRDarraySignal.cxx:175 AliTRDarraySignal.cxx:176 AliTRDarraySignal.cxx:177 AliTRDarraySignal.cxx:178 AliTRDarraySignal.cxx:179 AliTRDarraySignal.cxx:180 AliTRDarraySignal.cxx:181 AliTRDarraySignal.cxx:182 AliTRDarraySignal.cxx:183 AliTRDarraySignal.cxx:184 AliTRDarraySignal.cxx:185 AliTRDarraySignal.cxx:186 AliTRDarraySignal.cxx:187 AliTRDarraySignal.cxx:188 AliTRDarraySignal.cxx:189 AliTRDarraySignal.cxx:190 AliTRDarraySignal.cxx:191 AliTRDarraySignal.cxx:192 AliTRDarraySignal.cxx:193 AliTRDarraySignal.cxx:194 AliTRDarraySignal.cxx:195 AliTRDarraySignal.cxx:196 AliTRDarraySignal.cxx:197 AliTRDarraySignal.cxx:198 AliTRDarraySignal.cxx:199 AliTRDarraySignal.cxx:200 AliTRDarraySignal.cxx:201 AliTRDarraySignal.cxx:202 AliTRDarraySignal.cxx:203 AliTRDarraySignal.cxx:204 AliTRDarraySignal.cxx:205 AliTRDarraySignal.cxx:206 AliTRDarraySignal.cxx:207 AliTRDarraySignal.cxx:208 AliTRDarraySignal.cxx:209 AliTRDarraySignal.cxx:210 AliTRDarraySignal.cxx:211 AliTRDarraySignal.cxx:212 AliTRDarraySignal.cxx:213 AliTRDarraySignal.cxx:214 AliTRDarraySignal.cxx:215 AliTRDarraySignal.cxx:216 AliTRDarraySignal.cxx:217 AliTRDarraySignal.cxx:218 AliTRDarraySignal.cxx:219 AliTRDarraySignal.cxx:220 AliTRDarraySignal.cxx:221 AliTRDarraySignal.cxx:222 AliTRDarraySignal.cxx:223 AliTRDarraySignal.cxx:224 AliTRDarraySignal.cxx:225 AliTRDarraySignal.cxx:226 AliTRDarraySignal.cxx:227 AliTRDarraySignal.cxx:228 AliTRDarraySignal.cxx:229 AliTRDarraySignal.cxx:230 AliTRDarraySignal.cxx:231 AliTRDarraySignal.cxx:232 AliTRDarraySignal.cxx:233 AliTRDarraySignal.cxx:234 AliTRDarraySignal.cxx:235 AliTRDarraySignal.cxx:236 AliTRDarraySignal.cxx:237 AliTRDarraySignal.cxx:238 AliTRDarraySignal.cxx:239 AliTRDarraySignal.cxx:240 AliTRDarraySignal.cxx:241 AliTRDarraySignal.cxx:242 AliTRDarraySignal.cxx:243 AliTRDarraySignal.cxx:244 AliTRDarraySignal.cxx:245 AliTRDarraySignal.cxx:246 AliTRDarraySignal.cxx:247 AliTRDarraySignal.cxx:248 AliTRDarraySignal.cxx:249 AliTRDarraySignal.cxx:250 AliTRDarraySignal.cxx:251 AliTRDarraySignal.cxx:252 AliTRDarraySignal.cxx:253 AliTRDarraySignal.cxx:254 AliTRDarraySignal.cxx:255 AliTRDarraySignal.cxx:256 AliTRDarraySignal.cxx:257 AliTRDarraySignal.cxx:258 AliTRDarraySignal.cxx:259 AliTRDarraySignal.cxx:260 AliTRDarraySignal.cxx:261 AliTRDarraySignal.cxx:262 AliTRDarraySignal.cxx:263 AliTRDarraySignal.cxx:264 AliTRDarraySignal.cxx:265 AliTRDarraySignal.cxx:266 AliTRDarraySignal.cxx:267 AliTRDarraySignal.cxx:268 AliTRDarraySignal.cxx:269 AliTRDarraySignal.cxx:270 AliTRDarraySignal.cxx:271 AliTRDarraySignal.cxx:272 AliTRDarraySignal.cxx:273 AliTRDarraySignal.cxx:274 AliTRDarraySignal.cxx:275 AliTRDarraySignal.cxx:276 AliTRDarraySignal.cxx:277 AliTRDarraySignal.cxx:278 AliTRDarraySignal.cxx:279 AliTRDarraySignal.cxx:280 AliTRDarraySignal.cxx:281 AliTRDarraySignal.cxx:282 AliTRDarraySignal.cxx:283 AliTRDarraySignal.cxx:284 AliTRDarraySignal.cxx:285 AliTRDarraySignal.cxx:286 AliTRDarraySignal.cxx:287 AliTRDarraySignal.cxx:288 AliTRDarraySignal.cxx:289 AliTRDarraySignal.cxx:290 AliTRDarraySignal.cxx:291 AliTRDarraySignal.cxx:292 AliTRDarraySignal.cxx:293 AliTRDarraySignal.cxx:294 AliTRDarraySignal.cxx:295 AliTRDarraySignal.cxx:296 AliTRDarraySignal.cxx:297 AliTRDarraySignal.cxx:298 AliTRDarraySignal.cxx:299 AliTRDarraySignal.cxx:300 AliTRDarraySignal.cxx:301 AliTRDarraySignal.cxx:302 AliTRDarraySignal.cxx:303 AliTRDarraySignal.cxx:304 AliTRDarraySignal.cxx:305 AliTRDarraySignal.cxx:306 AliTRDarraySignal.cxx:307 AliTRDarraySignal.cxx:308 AliTRDarraySignal.cxx:309 AliTRDarraySignal.cxx:310 AliTRDarraySignal.cxx:311 AliTRDarraySignal.cxx:312 AliTRDarraySignal.cxx:313 AliTRDarraySignal.cxx:314 AliTRDarraySignal.cxx:315 AliTRDarraySignal.cxx:316 AliTRDarraySignal.cxx:317 AliTRDarraySignal.cxx:318 AliTRDarraySignal.cxx:319 AliTRDarraySignal.cxx:320 AliTRDarraySignal.cxx:321 AliTRDarraySignal.cxx:322 AliTRDarraySignal.cxx:323 AliTRDarraySignal.cxx:324 AliTRDarraySignal.cxx:325 AliTRDarraySignal.cxx:326 AliTRDarraySignal.cxx:327 AliTRDarraySignal.cxx:328 AliTRDarraySignal.cxx:329 AliTRDarraySignal.cxx:330 AliTRDarraySignal.cxx:331 AliTRDarraySignal.cxx:332 AliTRDarraySignal.cxx:333 AliTRDarraySignal.cxx:334 AliTRDarraySignal.cxx:335 AliTRDarraySignal.cxx:336 AliTRDarraySignal.cxx:337 AliTRDarraySignal.cxx:338 AliTRDarraySignal.cxx:339 AliTRDarraySignal.cxx:340 AliTRDarraySignal.cxx:341 AliTRDarraySignal.cxx:342 AliTRDarraySignal.cxx:343 AliTRDarraySignal.cxx:344 AliTRDarraySignal.cxx:345 AliTRDarraySignal.cxx:346 AliTRDarraySignal.cxx:347 AliTRDarraySignal.cxx:348 AliTRDarraySignal.cxx:349 AliTRDarraySignal.cxx:350 AliTRDarraySignal.cxx:351 AliTRDarraySignal.cxx:352 AliTRDarraySignal.cxx:353 AliTRDarraySignal.cxx:354 AliTRDarraySignal.cxx:355 AliTRDarraySignal.cxx:356 AliTRDarraySignal.cxx:357 AliTRDarraySignal.cxx:358 AliTRDarraySignal.cxx:359 AliTRDarraySignal.cxx:360 AliTRDarraySignal.cxx:361 AliTRDarraySignal.cxx:362 AliTRDarraySignal.cxx:363 AliTRDarraySignal.cxx:364 AliTRDarraySignal.cxx:365 AliTRDarraySignal.cxx:366 AliTRDarraySignal.cxx:367 AliTRDarraySignal.cxx:368 AliTRDarraySignal.cxx:369 AliTRDarraySignal.cxx:370 AliTRDarraySignal.cxx:371 AliTRDarraySignal.cxx:372 AliTRDarraySignal.cxx:373 AliTRDarraySignal.cxx:374 AliTRDarraySignal.cxx:375 AliTRDarraySignal.cxx:376 AliTRDarraySignal.cxx:377 AliTRDarraySignal.cxx:378 AliTRDarraySignal.cxx:379 AliTRDarraySignal.cxx:380 AliTRDarraySignal.cxx:381 AliTRDarraySignal.cxx:382 AliTRDarraySignal.cxx:383 AliTRDarraySignal.cxx:384 AliTRDarraySignal.cxx:385 AliTRDarraySignal.cxx:386 AliTRDarraySignal.cxx:387 AliTRDarraySignal.cxx:388 AliTRDarraySignal.cxx:389 AliTRDarraySignal.cxx:390 AliTRDarraySignal.cxx:391 AliTRDarraySignal.cxx:392 AliTRDarraySignal.cxx:393 AliTRDarraySignal.cxx:394 AliTRDarraySignal.cxx:395 AliTRDarraySignal.cxx:396 AliTRDarraySignal.cxx:397 AliTRDarraySignal.cxx:398 AliTRDarraySignal.cxx:399 AliTRDarraySignal.cxx:400 AliTRDarraySignal.cxx:401 AliTRDarraySignal.cxx:402 AliTRDarraySignal.cxx:403 AliTRDarraySignal.cxx:404 AliTRDarraySignal.cxx:405 AliTRDarraySignal.cxx:406 AliTRDarraySignal.cxx:407 AliTRDarraySignal.cxx:408 AliTRDarraySignal.cxx:409 AliTRDarraySignal.cxx:410 AliTRDarraySignal.cxx:411 AliTRDarraySignal.cxx:412 AliTRDarraySignal.cxx:413 AliTRDarraySignal.cxx:414 AliTRDarraySignal.cxx:415 AliTRDarraySignal.cxx:416 AliTRDarraySignal.cxx:417 AliTRDarraySignal.cxx:418 AliTRDarraySignal.cxx:419 AliTRDarraySignal.cxx:420 AliTRDarraySignal.cxx:421 AliTRDarraySignal.cxx:422 AliTRDarraySignal.cxx:423 AliTRDarraySignal.cxx:424 AliTRDarraySignal.cxx:425 AliTRDarraySignal.cxx:426 AliTRDarraySignal.cxx:427 AliTRDarraySignal.cxx:428 AliTRDarraySignal.cxx:429 AliTRDarraySignal.cxx:430 AliTRDarraySignal.cxx:431 AliTRDarraySignal.cxx:432 AliTRDarraySignal.cxx:433 AliTRDarraySignal.cxx:434 AliTRDarraySignal.cxx:435 AliTRDarraySignal.cxx:436 AliTRDarraySignal.cxx:437 AliTRDarraySignal.cxx:438 AliTRDarraySignal.cxx:439 AliTRDarraySignal.cxx:440 AliTRDarraySignal.cxx:441 AliTRDarraySignal.cxx:442 AliTRDarraySignal.cxx:443 AliTRDarraySignal.cxx:444 AliTRDarraySignal.cxx:445 AliTRDarraySignal.cxx:446 AliTRDarraySignal.cxx:447 AliTRDarraySignal.cxx:448 AliTRDarraySignal.cxx:449 AliTRDarraySignal.cxx:450 AliTRDarraySignal.cxx:451