+
+ if (fSignalIndexes)
+ {
+ fSignalIndexes->Delete();
+ delete fSignalIndexes;
+ }
+ fSignalIndexes = new TObjArray(fDets);
+ for (Int_t i = 0; i < fDets; i++)
+ {
+ fSignalIndexes->AddLast(new AliTRDSignalIndex());
+ }
+
+}
+
+//_____________________________________________________________________________
+void AliTRDdigitsManager::ResetArrays(Int_t det)
+{
+ //
+ // Reset the data arrays
+ //
+
+ Int_t recoDet = fRawRec ? 0 : det;
+
+ RemoveDigits(recoDet);
+ RemoveDictionaries(recoDet);
+ RemoveIndexes(recoDet);
+
+ if (fHasSDigits)
+ {
+ fDigits->AddAt(new AliTRDarraySignal(),recoDet);
+ }
+ else
+ {
+ fDigits->AddAt(new AliTRDarrayADC(),recoDet);
+ }
+
+ if (fUseDictionaries)
+ {
+ for (Int_t iDict = 0; iDict < kNDict; iDict++)
+ {
+ fDict[iDict]->AddAt(new AliTRDarrayDictionary(),recoDet);
+ }
+ }
+
+ fSignalIndexes->AddAt(new AliTRDSignalIndex(),recoDet);
+
+}
+
+//_____________________________________________________________________________
+void AliTRDdigitsManager::ClearArrays(Int_t det)
+{
+ //
+ // Reset the data arrays
+ //
+
+ Int_t recoDet = fRawRec ? 0 : det;
+
+ if (fHasSDigits)
+ {
+ ((AliTRDarraySignal*)fDigits->At(recoDet))->Reset();
+ }
+ else
+ {
+ ((AliTRDarrayADC*)fDigits->At(recoDet))->ConditionalReset((AliTRDSignalIndex*)fSignalIndexes->At(recoDet));
+ }