- Int_t iRow = input.GetRow();
- if (iRow < 0 || iRow >= nRows)
- AliFatal(Form("Pad-row index (%d) outside the range (%d -> %d) !",
- iRow, 0, nRows -1));
- Int_t iPad = input.GetPad();
-
- Int_t maxPad = fTPCParam->GetNPads(iSector,iRow);
-
- if (iPad < 0 || iPad >= maxPad)
- AliFatal(Form("Pad index (%d) outside the range (%d -> %d) !",
- iPad, 0, maxPad -1));
-
- Int_t iTimeBin = input.GetTime();
- if ( iTimeBin < 0 || iTimeBin >= kmaxTime)
- AliFatal(Form("Timebin index (%d) outside the range (%d -> %d) !",
- iTimeBin, 0, kmaxTime -1));
-
- Int_t maxBin = kmaxTime*maxPad;
-
- if (((iPad*kmaxTime+iTimeBin) >= maxBin) ||
- ((iPad*kmaxTime+iTimeBin) < 0))
- AliFatal(Form("Index outside the allowed range"
- " Sector=%d Row=%d Pad=%d Timebin=%d"
- " (Max.index=%d)",iSector,iRow,iPad,iTimeBin,maxBin));
-
- allBins[iRow][iPad*kmaxTime+iTimeBin] = input.GetSignal();
+ //loop over pads
+ while ( input.NextChannel() ) {
+
+ Int_t iRow = input.GetRow();
+ if (iRow < 0 || iRow >= nRows)
+ AliFatal(Form("Pad-row index (%d) outside the range (%d -> %d) !",
+ iRow, 0, nRows -1));
+ Int_t iPad = input.GetPad();
+
+ Int_t maxPad = fTPCParam->GetNPads(iSector,iRow);
+
+ if (iPad < 0 || iPad >= maxPad)
+ AliFatal(Form("Pad index (%d) outside the range (%d -> %d) !",
+ iPad, 0, maxPad -1));
+
+ //loop over bunches
+ while ( input.NextBunch() ){
+ Int_t startTbin = (Int_t)input.GetStartTimeBin();
+ Int_t bunchlength = (Int_t)input.GetBunchLength();
+ const UShort_t *sig = input.GetSignals();
+ for (Int_t iTime = 0; iTime<bunchlength; iTime++){
+ Int_t iTimeBin=startTbin-iTime;
+ if ( iTimeBin < 0 || iTimeBin >= kmaxTime) {
+ continue;
+ //AliFatal(Form("Timebin index (%d) outside the range (%d -> %d) !",
+ // iTimeBin, 0, kmaxTime -1));
+ }
+
+ Int_t maxBin = kmaxTime*maxPad;
+ if (((iPad*kmaxTime+iTimeBin) >= maxBin) ||
+ ((iPad*kmaxTime+iTimeBin) < 0))
+ AliFatal(Form("Index outside the allowed range"
+ " Sector=%d Row=%d Pad=%d Timebin=%d"
+ " (Max.index=%d)",iSector,iRow,iPad,iTimeBin,maxBin));
+ allBins[iRow][iPad*kmaxTime+iTimeBin] = sig[iTime];
+ }
+ }
+ } // End loop over altro data
+ }