X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=blobdiff_plain;f=EVE%2FEveDet%2FAliEveTPCData.cxx;h=d8aaa766787cd0a480f48d118ef040964cde58ab;hp=4442e48446518691abfb7be8a43f469363f743c4;hb=375fd576e4c636189f7159e9f05576b8b7652c42;hpb=a15e6d7d7c80edcd0858dcdfd1d4bc5a888b9bf4 diff --git a/EVE/EveDet/AliEveTPCData.cxx b/EVE/EveDet/AliEveTPCData.cxx index 4442e484465..d8aaa766787 100644 --- a/EVE/EveDet/AliEveTPCData.cxx +++ b/EVE/EveDet/AliEveTPCData.cxx @@ -13,7 +13,7 @@ #include #include -#include +#include #include //============================================================================== @@ -167,9 +167,9 @@ void AliEveTPCData::LoadDigits(TTree* tree, Bool_t spawnSectors) } } -void AliEveTPCData::LoadRaw(AliTPCRawStream& input, Bool_t spawnSectors, Bool_t warn) +void AliEveTPCData::LoadRaw(AliTPCRawStreamV3& input, Bool_t spawnSectors, Bool_t warn) { - // Load data from AliTPCRawStream. + // Load data from AliTPCRawStreamV3. // If spawnSectors is false only sectors that have been created previously // via CreateSector() are loaded. // If spawnSectors is true sectors are created if data for them is encountered. @@ -178,14 +178,16 @@ void AliEveTPCData::LoadRaw(AliTPCRawStream& input, Bool_t spawnSectors, Bool_t Int_t sector = -1, row = -1, pad = -1, rowOffset = 0; Short_t time, signal; - Bool_t inFill = kFALSE; - Short_t lastTime = 9999; + Bool_t inFill = kFALSE; + Short_t pdrwCnt = 9999; // Count time-bins in padrow; needed to detect more than 1024 time-bins per padrow. + Short_t lastTime = 9999; // Last time-bin stored; needed to check for out-of-order time bins. + Bool_t pdrwCntWarn = kFALSE; Bool_t lastTimeWarn = kFALSE; AliEveTPCSectorData* secData = 0; Short_t threshold = fLoadThreshold; - while (input.Next()) { + while (input.NextDDL()) { if (input.IsNewSector()) { if (inFill) { secData->EndPad(fAutoPedestal, threshold); @@ -203,52 +205,67 @@ void AliEveTPCData::LoadRaw(AliTPCRawStream& input, Bool_t spawnSectors, Bool_t if (secData == 0) continue; - if (input.IsNewPad()) { - if (inFill) { - secData->EndPad(fAutoPedestal, threshold); - inFill = kFALSE; - } - row = input.GetRow() + rowOffset; - pad = input.GetPad(); - - if (pad >= AliEveTPCSectorData::GetNPadsInRow(row)) { - if (warn) { - Warning(kEH.Data(), "pad out of range (row=%d, pad=%d, maxpad=%d).", - row, pad, AliEveTPCSectorData::GetNPadsInRow(row)); + while (input.NextChannel()) { + if (input.IsNewPad()) { + if (inFill) { + secData->EndPad(fAutoPedestal, threshold); + inFill = kFALSE; + } + row = input.GetRow() + rowOffset; + pad = input.GetPad(); + + if (pad >= AliEveTPCSectorData::GetNPadsInRow(row) || pad < 0) { + if (warn) { + Warning(kEH.Data(), "pad out of range (row=%d, pad=%d, maxpad=%d).", + row, pad, AliEveTPCSectorData::GetNPadsInRow(row)); + } + continue; } - continue; - } - AliEveTPCSectorData::PadRowHack* prh = secData->GetPadRowHack(row, pad); - if (prh != 0) { - threshold = prh->fThrExt + Short_t(prh->fThrFac*fLoadThreshold); - } else { threshold = fLoadThreshold; - } - secData->BeginPad(row, pad, kTRUE); - inFill = kTRUE; - lastTime = 1024; lastTimeWarn = kFALSE; - } + secData->BeginPad(row, pad, kTRUE); + inFill = kTRUE; + pdrwCnt = 0; pdrwCntWarn = kFALSE; + lastTime = 1024; lastTimeWarn = kFALSE; + } - time = input.GetTime(); - signal = input.GetSignal(); - if (time >= lastTime) { - if (lastTimeWarn == kFALSE) { - if (warn) - Warning(kEH.Data(), "time out of order (row=%d, pad=%d, time=%d, lastTime=%d).", - row, pad, time, lastTime); - lastTimeWarn = kTRUE; + while (input.NextBunch()) { + const UShort_t *signalarr = input.GetSignals(); + + Int_t starttime = input.GetStartTimeBin(); + for (Int_t i = 0; i < input.GetBunchLength(); i++) { + time = starttime--;; + signal = signalarr[i]; + ++pdrwCnt; + if (pdrwCnt > 1024) { + if (pdrwCntWarn == kFALSE) { + if (warn) + Warning(kEH.Data(), "more than 1024 time-bins (row=%d, pad=%d, time=%d).\nFurther warnings of this type will be suppressed for this padrow.", + row, pad, time); + pdrwCntWarn = kTRUE; + } + continue; + } + if (time >= lastTime) { + if (lastTimeWarn == kFALSE) { + if (warn) + Warning(kEH.Data(), "time out of order (row=%d, pad=%d, time=%d, lastTime=%d).\nFurther warnings of this type will be suppressed for this padrow.", + row, pad, time, lastTime); + lastTimeWarn = kTRUE; + } + continue; + } + lastTime = time; + if (fAutoPedestal) { + secData->RegisterData(time, signal); + } else { + signal -= fLoadPedestal; + if (signal > threshold) + secData->RegisterData(time, signal); + } + } } - continue; - } - lastTime = time; - if (fAutoPedestal) { - secData->RegisterData(time, signal); - } else { - signal -= fLoadPedestal; - if (signal > threshold) - secData->RegisterData(time, signal); } }