#include <algorithm>
#include "TObject.h"
#include "AliLog.h"
#include "AliTRDSignalIndex.h"
ClassImp(AliTRDSignalIndex)
AliTRDSignalIndex::AliTRDSignalIndex()
:TObject()
,fDet(-1)
,fLayer(-1)
,fStack(-1)
,fSM(-1)
,fBoolIndex(NULL)
,fSortedIndex(NULL)
,fMaxLimit(0)
,fPositionRC(0)
,fCountRC(1)
,fSortedWasInit(kFALSE)
,fCurrRow(0)
,fCurrCol(0)
,fCurrTbin(0)
,fNrows(0)
,fNcols(0)
,fNtbins(0)
{
ResetCounters();
}
AliTRDSignalIndex::AliTRDSignalIndex(Int_t nrow, Int_t ncol,Int_t ntime)
:TObject()
,fDet(-1)
,fLayer(-1)
,fStack(-1)
,fSM(-1)
,fBoolIndex(NULL)
,fSortedIndex(NULL)
,fMaxLimit(0)
,fPositionRC(0)
,fCountRC(1)
,fSortedWasInit(kFALSE)
,fCurrRow(0)
,fCurrCol(0)
,fCurrTbin(0)
,fNrows(0)
,fNcols(0)
,fNtbins(0)
{
Allocate(nrow, ncol, ntime);
}
AliTRDSignalIndex::AliTRDSignalIndex(const AliTRDSignalIndex &a)
:TObject(a)
,fDet(a.fDet)
,fLayer(a.fLayer)
,fStack(a.fStack)
,fSM(a.fSM)
,fBoolIndex(NULL)
,fSortedIndex(NULL)
,fMaxLimit(a.fMaxLimit)
,fPositionRC(a.fPositionRC)
,fCountRC(a.fCountRC)
,fSortedWasInit(a.fSortedWasInit)
,fCurrRow(a.fCurrRow)
,fCurrCol(a.fCurrCol)
,fCurrTbin(a.fCurrTbin)
,fNrows(a.fNrows)
,fNcols(a.fNcols)
,fNtbins(a.fNtbins)
{
fBoolIndex = new Bool_t[fMaxLimit];
memcpy(fBoolIndex, a.fBoolIndex, fMaxLimit*sizeof(Bool_t));
fSortedIndex = new RowCol[fMaxLimit+1];
memcpy(fSortedIndex, a.fSortedIndex, (fMaxLimit+1)*sizeof(RowCol));
}
AliTRDSignalIndex::~AliTRDSignalIndex()
{
if (fBoolIndex) {
delete [] fBoolIndex;
fBoolIndex = NULL;
}
if (fSortedIndex) {
delete [] fSortedIndex;
fSortedIndex = NULL;
}
}
void AliTRDSignalIndex::Copy(TObject &a) const
{
((AliTRDSignalIndex &)a).fDet = fDet;
((AliTRDSignalIndex &)a).fLayer = fLayer;
((AliTRDSignalIndex &)a).fStack = fStack;
((AliTRDSignalIndex &)a).fSM = fSM;
((AliTRDSignalIndex &)a).fMaxLimit = fMaxLimit;
((AliTRDSignalIndex &)a).fPositionRC = fPositionRC;
((AliTRDSignalIndex &)a).fCountRC = fCountRC;
((AliTRDSignalIndex &)a).fSortedWasInit = fSortedWasInit;
((AliTRDSignalIndex &)a).fCurrRow = fCurrRow;
((AliTRDSignalIndex &)a).fCurrCol = fCurrCol;
((AliTRDSignalIndex &)a).fCurrTbin = fCurrTbin;
((AliTRDSignalIndex &)a).fNrows = fNrows;
((AliTRDSignalIndex &)a).fNcols = fNcols;
((AliTRDSignalIndex &)a).fNtbins = fNtbins;
if(((AliTRDSignalIndex &)a).fBoolIndex)
{
delete [] ((AliTRDSignalIndex &)a).fBoolIndex;
}
((AliTRDSignalIndex &)a).fBoolIndex = new Bool_t[fMaxLimit];
memcpy(((AliTRDSignalIndex &)a).fBoolIndex, fBoolIndex, fMaxLimit*sizeof(Bool_t));
if(((AliTRDSignalIndex &)a).fSortedIndex)
{
delete [] ((AliTRDSignalIndex &)a).fSortedIndex;
}
((AliTRDSignalIndex &)a).fSortedIndex = new RowCol[fMaxLimit+1];
memcpy(((AliTRDSignalIndex &)a).fSortedIndex, fSortedIndex, (fMaxLimit+1)*sizeof(RowCol));
}
AliTRDSignalIndex& AliTRDSignalIndex::operator = (const AliTRDSignalIndex& a)
{
if (this == &a) {
return *this;
}
fDet = a.fDet;
fLayer = a.fLayer;
fStack = a.fStack;
fSM = a.fSM;
fMaxLimit = a.fMaxLimit;
fPositionRC = a.fPositionRC;
fCountRC = a.fCountRC;
fSortedWasInit = a.fSortedWasInit;
fCurrRow = a.fCurrRow;
fCurrCol = a.fCurrCol;
fCurrTbin = a.fCurrTbin;
fNrows = a.fNrows;
fNcols = a.fNcols;
fNtbins = a.fNtbins;
if (fBoolIndex) {
delete [] fBoolIndex;
}
fBoolIndex = new Bool_t[fMaxLimit];
memcpy(fBoolIndex, fBoolIndex, fMaxLimit*sizeof(Bool_t));
if (fSortedIndex) {
delete [] fSortedIndex;
}
fSortedIndex = new RowCol[fMaxLimit+1];
memcpy(fSortedIndex, fSortedIndex, (fMaxLimit+1)*sizeof(RowCol));
ResetCounters();
return *this;
}
void AliTRDSignalIndex::Allocate(const Int_t nrow, const Int_t ncol, const Int_t ntime)
{
fNrows = nrow;
fNcols = ncol;
fNtbins = ntime;
fMaxLimit = nrow * ncol + 1;
if (fBoolIndex) {
delete [] fBoolIndex;
fBoolIndex = NULL;
}
if (fSortedIndex) {
delete [] fSortedIndex;
fSortedIndex = NULL;
}
fBoolIndex = new Bool_t[fMaxLimit];
fSortedIndex = new RowCol[fMaxLimit+1];
fCountRC = fMaxLimit+1;
ResetArrays();
ResetCounters();
fCountRC = 1;
}
void AliTRDSignalIndex::ResetArrays()
{
if (!IsAllocated())
return;
memset(fBoolIndex,0x00,sizeof(Bool_t)*fMaxLimit);
memset(fSortedIndex,0xFF,sizeof(RowCol)*fCountRC);
fSortedWasInit = kFALSE;
}
void AliTRDSignalIndex::Reset()
{
fDet = -1;
fLayer = -1;
fStack = -1;
fSM = -1;
Allocate(fNrows, fNcols, fNtbins);
}
void AliTRDSignalIndex::ResetContent()
{
fDet = -1;
fLayer = -1;
fStack = -1;
fSM = -1;
ResetArrays();
ResetCounters();
fCountRC = 1;
}
void AliTRDSignalIndex::ResetContentConditional(const Int_t nrow, const Int_t ncol, const Int_t ntime)
{
fDet = -1;
fLayer = -1;
fStack = -1;
fSM = -1;
if ((nrow > fNrows) ||
(ncol > fNcols) ||
(ntime > fNtbins)) {
Allocate(nrow, ncol, ntime);
}
else {
ResetArrays();
ResetCounters();
fCountRC = 1;
}
}
void AliTRDSignalIndex::ClearAll()
{
fDet = -1;
fLayer = -1;
fStack = -1;
fSM = -1;
fNrows = -1;
fNcols = -1;
fNtbins = -1;
if (fBoolIndex) {
delete [] fBoolIndex;
fBoolIndex = NULL;
}
if (fSortedIndex) {
delete [] fSortedIndex;
fSortedIndex = NULL;
}
ResetCounters();
fCountRC = 1;
fSortedWasInit = kFALSE;
fMaxLimit = 0;
}
Bool_t AliTRDSignalIndex::CheckSorting(Int_t &row, Int_t &col)
{
if(fSortedWasInit || fCountRC==1)
{
ResetCounters();
row = fCurrRow;
col = fCurrCol;
return kFALSE;
}
else
{
InitSortedIndex();
return NextRCIndex(row, col);
}
}
Bool_t AliTRDSignalIndex::NextRCTbinIndex(Int_t &row, Int_t &col, Int_t &tbin)
{
if (NextTbinIndex(tbin)) {
row = fCurrRow;
col = fCurrCol;
return kTRUE;
}
else {
if (NextRCIndex(row, col)) {
return NextRCTbinIndex(row, col, tbin);
}
}
return kFALSE;
}
Bool_t AliTRDSignalIndex::NextTbinIndex(Int_t &tbin)
{
if(fCurrTbin<fNtbins)
{
tbin = fCurrTbin++;
return kTRUE;
}
return kFALSE;
}
void AliTRDSignalIndex::InitSortedIndex()
{
fSortedWasInit = kTRUE;
std::sort((UShort_t*)fSortedIndex, ((UShort_t*)fSortedIndex) + fCountRC);
}
void AliTRDSignalIndex::ResetCounters()
{
fCurrRow = -1;
fCurrCol = -1;
fCurrTbin = -1;
fPositionRC = 0;
}
AliTRDSignalIndex.cxx:100 AliTRDSignalIndex.cxx:101 AliTRDSignalIndex.cxx:102 AliTRDSignalIndex.cxx:103 AliTRDSignalIndex.cxx:104 AliTRDSignalIndex.cxx:105 AliTRDSignalIndex.cxx:106 AliTRDSignalIndex.cxx:107 AliTRDSignalIndex.cxx:108 AliTRDSignalIndex.cxx:109 AliTRDSignalIndex.cxx:110 AliTRDSignalIndex.cxx:111 AliTRDSignalIndex.cxx:112 AliTRDSignalIndex.cxx:113 AliTRDSignalIndex.cxx:114 AliTRDSignalIndex.cxx:115 AliTRDSignalIndex.cxx:116 AliTRDSignalIndex.cxx:117 AliTRDSignalIndex.cxx:118 AliTRDSignalIndex.cxx:119 AliTRDSignalIndex.cxx:120 AliTRDSignalIndex.cxx:121 AliTRDSignalIndex.cxx:122 AliTRDSignalIndex.cxx:123 AliTRDSignalIndex.cxx:124 AliTRDSignalIndex.cxx:125 AliTRDSignalIndex.cxx:126 AliTRDSignalIndex.cxx:127 AliTRDSignalIndex.cxx:128 AliTRDSignalIndex.cxx:129 AliTRDSignalIndex.cxx:130 AliTRDSignalIndex.cxx:131 AliTRDSignalIndex.cxx:132 AliTRDSignalIndex.cxx:133 AliTRDSignalIndex.cxx:134 AliTRDSignalIndex.cxx:135 AliTRDSignalIndex.cxx:136 AliTRDSignalIndex.cxx:137 AliTRDSignalIndex.cxx:138 AliTRDSignalIndex.cxx:139 AliTRDSignalIndex.cxx:140 AliTRDSignalIndex.cxx:141 AliTRDSignalIndex.cxx:142 AliTRDSignalIndex.cxx:143 AliTRDSignalIndex.cxx:144 AliTRDSignalIndex.cxx:145 AliTRDSignalIndex.cxx:146 AliTRDSignalIndex.cxx:147 AliTRDSignalIndex.cxx:148 AliTRDSignalIndex.cxx:149 AliTRDSignalIndex.cxx:150 AliTRDSignalIndex.cxx:151 AliTRDSignalIndex.cxx:152 AliTRDSignalIndex.cxx:153 AliTRDSignalIndex.cxx:154 AliTRDSignalIndex.cxx:155 AliTRDSignalIndex.cxx:156 AliTRDSignalIndex.cxx:157 AliTRDSignalIndex.cxx:158 AliTRDSignalIndex.cxx:159 AliTRDSignalIndex.cxx:160 AliTRDSignalIndex.cxx:161 AliTRDSignalIndex.cxx:162 AliTRDSignalIndex.cxx:163 AliTRDSignalIndex.cxx:164 AliTRDSignalIndex.cxx:165 AliTRDSignalIndex.cxx:166 AliTRDSignalIndex.cxx:167 AliTRDSignalIndex.cxx:168 AliTRDSignalIndex.cxx:169 AliTRDSignalIndex.cxx:170 AliTRDSignalIndex.cxx:171 AliTRDSignalIndex.cxx:172 AliTRDSignalIndex.cxx:173 AliTRDSignalIndex.cxx:174 AliTRDSignalIndex.cxx:175 AliTRDSignalIndex.cxx:176 AliTRDSignalIndex.cxx:177 AliTRDSignalIndex.cxx:178 AliTRDSignalIndex.cxx:179 AliTRDSignalIndex.cxx:180 AliTRDSignalIndex.cxx:181 AliTRDSignalIndex.cxx:182 AliTRDSignalIndex.cxx:183 AliTRDSignalIndex.cxx:184 AliTRDSignalIndex.cxx:185 AliTRDSignalIndex.cxx:186 AliTRDSignalIndex.cxx:187 AliTRDSignalIndex.cxx:188 AliTRDSignalIndex.cxx:189 AliTRDSignalIndex.cxx:190 AliTRDSignalIndex.cxx:191 AliTRDSignalIndex.cxx:192 AliTRDSignalIndex.cxx:193 AliTRDSignalIndex.cxx:194 AliTRDSignalIndex.cxx:195 AliTRDSignalIndex.cxx:196 AliTRDSignalIndex.cxx:197 AliTRDSignalIndex.cxx:198 AliTRDSignalIndex.cxx:199 AliTRDSignalIndex.cxx:200 AliTRDSignalIndex.cxx:201 AliTRDSignalIndex.cxx:202 AliTRDSignalIndex.cxx:203 AliTRDSignalIndex.cxx:204 AliTRDSignalIndex.cxx:205 AliTRDSignalIndex.cxx:206 AliTRDSignalIndex.cxx:207 AliTRDSignalIndex.cxx:208 AliTRDSignalIndex.cxx:209 AliTRDSignalIndex.cxx:210 AliTRDSignalIndex.cxx:211 AliTRDSignalIndex.cxx:212 AliTRDSignalIndex.cxx:213 AliTRDSignalIndex.cxx:214 AliTRDSignalIndex.cxx:215 AliTRDSignalIndex.cxx:216 AliTRDSignalIndex.cxx:217 AliTRDSignalIndex.cxx:218 AliTRDSignalIndex.cxx:219 AliTRDSignalIndex.cxx:220 AliTRDSignalIndex.cxx:221 AliTRDSignalIndex.cxx:222 AliTRDSignalIndex.cxx:223 AliTRDSignalIndex.cxx:224 AliTRDSignalIndex.cxx:225 AliTRDSignalIndex.cxx:226 AliTRDSignalIndex.cxx:227 AliTRDSignalIndex.cxx:228 AliTRDSignalIndex.cxx:229 AliTRDSignalIndex.cxx:230 AliTRDSignalIndex.cxx:231 AliTRDSignalIndex.cxx:232 AliTRDSignalIndex.cxx:233 AliTRDSignalIndex.cxx:234 AliTRDSignalIndex.cxx:235 AliTRDSignalIndex.cxx:236 AliTRDSignalIndex.cxx:237 AliTRDSignalIndex.cxx:238 AliTRDSignalIndex.cxx:239 AliTRDSignalIndex.cxx:240 AliTRDSignalIndex.cxx:241 AliTRDSignalIndex.cxx:242 AliTRDSignalIndex.cxx:243 AliTRDSignalIndex.cxx:244 AliTRDSignalIndex.cxx:245 AliTRDSignalIndex.cxx:246 AliTRDSignalIndex.cxx:247 AliTRDSignalIndex.cxx:248 AliTRDSignalIndex.cxx:249 AliTRDSignalIndex.cxx:250 AliTRDSignalIndex.cxx:251 AliTRDSignalIndex.cxx:252 AliTRDSignalIndex.cxx:253 AliTRDSignalIndex.cxx:254 AliTRDSignalIndex.cxx:255 AliTRDSignalIndex.cxx:256 AliTRDSignalIndex.cxx:257 AliTRDSignalIndex.cxx:258 AliTRDSignalIndex.cxx:259 AliTRDSignalIndex.cxx:260 AliTRDSignalIndex.cxx:261 AliTRDSignalIndex.cxx:262 AliTRDSignalIndex.cxx:263 AliTRDSignalIndex.cxx:264 AliTRDSignalIndex.cxx:265 AliTRDSignalIndex.cxx:266 AliTRDSignalIndex.cxx:267 AliTRDSignalIndex.cxx:268 AliTRDSignalIndex.cxx:269 AliTRDSignalIndex.cxx:270 AliTRDSignalIndex.cxx:271 AliTRDSignalIndex.cxx:272 AliTRDSignalIndex.cxx:273 AliTRDSignalIndex.cxx:274 AliTRDSignalIndex.cxx:275 AliTRDSignalIndex.cxx:276 AliTRDSignalIndex.cxx:277 AliTRDSignalIndex.cxx:278 AliTRDSignalIndex.cxx:279 AliTRDSignalIndex.cxx:280 AliTRDSignalIndex.cxx:281 AliTRDSignalIndex.cxx:282 AliTRDSignalIndex.cxx:283 AliTRDSignalIndex.cxx:284 AliTRDSignalIndex.cxx:285 AliTRDSignalIndex.cxx:286 AliTRDSignalIndex.cxx:287 AliTRDSignalIndex.cxx:288 AliTRDSignalIndex.cxx:289 AliTRDSignalIndex.cxx:290 AliTRDSignalIndex.cxx:291 AliTRDSignalIndex.cxx:292 AliTRDSignalIndex.cxx:293 AliTRDSignalIndex.cxx:294 AliTRDSignalIndex.cxx:295 AliTRDSignalIndex.cxx:296 AliTRDSignalIndex.cxx:297 AliTRDSignalIndex.cxx:298 AliTRDSignalIndex.cxx:299 AliTRDSignalIndex.cxx:300 AliTRDSignalIndex.cxx:301 AliTRDSignalIndex.cxx:302 AliTRDSignalIndex.cxx:303 AliTRDSignalIndex.cxx:304 AliTRDSignalIndex.cxx:305 AliTRDSignalIndex.cxx:306 AliTRDSignalIndex.cxx:307 AliTRDSignalIndex.cxx:308 AliTRDSignalIndex.cxx:309 AliTRDSignalIndex.cxx:310 AliTRDSignalIndex.cxx:311 AliTRDSignalIndex.cxx:312 AliTRDSignalIndex.cxx:313 AliTRDSignalIndex.cxx:314 AliTRDSignalIndex.cxx:315 AliTRDSignalIndex.cxx:316 AliTRDSignalIndex.cxx:317 AliTRDSignalIndex.cxx:318 AliTRDSignalIndex.cxx:319 AliTRDSignalIndex.cxx:320 AliTRDSignalIndex.cxx:321 AliTRDSignalIndex.cxx:322 AliTRDSignalIndex.cxx:323 AliTRDSignalIndex.cxx:324 AliTRDSignalIndex.cxx:325 AliTRDSignalIndex.cxx:326 AliTRDSignalIndex.cxx:327 AliTRDSignalIndex.cxx:328 AliTRDSignalIndex.cxx:329 AliTRDSignalIndex.cxx:330 AliTRDSignalIndex.cxx:331 AliTRDSignalIndex.cxx:332 AliTRDSignalIndex.cxx:333 AliTRDSignalIndex.cxx:334 AliTRDSignalIndex.cxx:335 AliTRDSignalIndex.cxx:336 AliTRDSignalIndex.cxx:337 AliTRDSignalIndex.cxx:338 AliTRDSignalIndex.cxx:339 AliTRDSignalIndex.cxx:340 AliTRDSignalIndex.cxx:341 AliTRDSignalIndex.cxx:342 AliTRDSignalIndex.cxx:343 AliTRDSignalIndex.cxx:344 AliTRDSignalIndex.cxx:345 AliTRDSignalIndex.cxx:346 AliTRDSignalIndex.cxx:347 AliTRDSignalIndex.cxx:348 AliTRDSignalIndex.cxx:349 AliTRDSignalIndex.cxx:350 AliTRDSignalIndex.cxx:351 AliTRDSignalIndex.cxx:352 AliTRDSignalIndex.cxx:353 AliTRDSignalIndex.cxx:354 AliTRDSignalIndex.cxx:355 AliTRDSignalIndex.cxx:356 AliTRDSignalIndex.cxx:357 AliTRDSignalIndex.cxx:358 AliTRDSignalIndex.cxx:359 AliTRDSignalIndex.cxx:360 AliTRDSignalIndex.cxx:361 AliTRDSignalIndex.cxx:362 AliTRDSignalIndex.cxx:363 AliTRDSignalIndex.cxx:364 AliTRDSignalIndex.cxx:365 AliTRDSignalIndex.cxx:366 AliTRDSignalIndex.cxx:367 AliTRDSignalIndex.cxx:368 AliTRDSignalIndex.cxx:369 AliTRDSignalIndex.cxx:370 AliTRDSignalIndex.cxx:371 AliTRDSignalIndex.cxx:372 AliTRDSignalIndex.cxx:373 AliTRDSignalIndex.cxx:374 AliTRDSignalIndex.cxx:375 AliTRDSignalIndex.cxx:376 AliTRDSignalIndex.cxx:377 AliTRDSignalIndex.cxx:378 AliTRDSignalIndex.cxx:379 AliTRDSignalIndex.cxx:380 AliTRDSignalIndex.cxx:381 AliTRDSignalIndex.cxx:382 AliTRDSignalIndex.cxx:383 AliTRDSignalIndex.cxx:384 AliTRDSignalIndex.cxx:385 AliTRDSignalIndex.cxx:386 AliTRDSignalIndex.cxx:387 AliTRDSignalIndex.cxx:388 AliTRDSignalIndex.cxx:389 AliTRDSignalIndex.cxx:390 AliTRDSignalIndex.cxx:391 AliTRDSignalIndex.cxx:392 AliTRDSignalIndex.cxx:393 AliTRDSignalIndex.cxx:394 AliTRDSignalIndex.cxx:395 AliTRDSignalIndex.cxx:396 AliTRDSignalIndex.cxx:397 AliTRDSignalIndex.cxx:398 AliTRDSignalIndex.cxx:399 AliTRDSignalIndex.cxx:400 AliTRDSignalIndex.cxx:401 AliTRDSignalIndex.cxx:402 AliTRDSignalIndex.cxx:403 AliTRDSignalIndex.cxx:404 AliTRDSignalIndex.cxx:405 AliTRDSignalIndex.cxx:406 AliTRDSignalIndex.cxx:407 AliTRDSignalIndex.cxx:408 AliTRDSignalIndex.cxx:409 AliTRDSignalIndex.cxx:410 AliTRDSignalIndex.cxx:411 AliTRDSignalIndex.cxx:412 AliTRDSignalIndex.cxx:413 AliTRDSignalIndex.cxx:414 AliTRDSignalIndex.cxx:415 AliTRDSignalIndex.cxx:416 AliTRDSignalIndex.cxx:417 AliTRDSignalIndex.cxx:418 AliTRDSignalIndex.cxx:419 AliTRDSignalIndex.cxx:420 AliTRDSignalIndex.cxx:421 AliTRDSignalIndex.cxx:422 AliTRDSignalIndex.cxx:423 AliTRDSignalIndex.cxx:424 AliTRDSignalIndex.cxx:425 AliTRDSignalIndex.cxx:426 AliTRDSignalIndex.cxx:427 AliTRDSignalIndex.cxx:428 AliTRDSignalIndex.cxx:429 AliTRDSignalIndex.cxx:430 AliTRDSignalIndex.cxx:431 AliTRDSignalIndex.cxx:432 AliTRDSignalIndex.cxx:433 AliTRDSignalIndex.cxx:434 AliTRDSignalIndex.cxx:435 AliTRDSignalIndex.cxx:436 AliTRDSignalIndex.cxx:437 AliTRDSignalIndex.cxx:438 AliTRDSignalIndex.cxx:439 AliTRDSignalIndex.cxx:440 AliTRDSignalIndex.cxx:441 AliTRDSignalIndex.cxx:442 AliTRDSignalIndex.cxx:443 AliTRDSignalIndex.cxx:444 AliTRDSignalIndex.cxx:445 AliTRDSignalIndex.cxx:446