fTracklets(0x0),
fTrackletsPostInput(0x0),
fZChannelTracklets(0x0),
+ fTrackArray(new TClonesArray("AliTRDtrackGTU", 50)),
fTracks(0x0),
fGtuParam(0x0),
fStack(-1),
delete [] fTracks[zch];
}
delete [] fTracks;
+ delete fTrackArray;
+
for (Int_t layer = 0; layer < fGtuParam->GetNLayers(); layer++) {
delete [] fZChannelTracklets[layer];
delete fTrackletsPostInput[layer];
}
}
+ fTrackArray->Delete();
+
// delete all added tracklets
for (Int_t iLink = 0; iLink < fGtuParam->GetNLinks(); iLink++) {
fTracklets[iLink]->Clear();
if (nHits >= 4) {
// ----- track registration -----
- AliTRDtrackGTU *track = new AliTRDtrackGTU();
+ AliTRDtrackGTU *track = new ((*fTrackArray)[fTrackArray->GetEntriesFast()]) AliTRDtrackGTU();
track->SetSector(fSector);
track->SetStack(fStack);
for (Int_t layer = 0; layer < fGtuParam->GetNLayers(); layer++ ) {
track->SetRefLayerIdx(refLayerIdx);
fTracks[zch][refLayerIdx].Add(track);
}
- else
- delete track;
}
if ( (nUnc != 0) && (nUnc + nHits >= 4) ) // could this position of the reference layer give some track //??? special check in case of hit?
TIter next(tracksZUniqueStage0);
while (AliTRDtrackGTU *trk = (AliTRDtrackGTU*) next()) {
- tracksZSplitted[(trk->GetZChannel() + 3 * (trk->GetZSubChannel() - 1)) % 2]->Add(trk);
+ if ((trk->GetZChannel() < 0) ||
+ (trk->GetZChannel() > 2) ||
+ (trk->GetZSubChannel() < 0) ||
+ (trk->GetZSubChannel() > 6)) {
+ AliError(Form("track with invalid z-channel information at %p: zch = %i, subchannel = %i",
+ trk, trk->GetZChannel(), trk->GetZSubChannel()));
+ trk->Dump();
+ }
+ Int_t idx = (trk->GetZChannel() + 3 * (trk->GetZSubChannel() - 1)) % 2;
+ if ((idx < 0) || (idx > 1)) {
+ AliError(Form("invalid index %i null", idx));
+ trk->Dump();
+ continue;
+ }
+ if (!tracksZSplitted[idx]) {
+ AliError(Form("array pointer %i null", idx));
+ continue;
+ }
+ tracksZSplitted[idx]->Add(trk);
}
for (Int_t i = 0; i < 2; i++) {
AliTRDtrackGTU *trkStage1 = 0x0;
do {
- if (trkStage0 != trkStage1)
- delete trkStage0;
-
- trkStage0 = (AliTRDtrackGTU*) next();
+ trkStage0 = (AliTRDtrackGTU*) next();
Bool_t tracksEqual = kFALSE;
if (trkStage0 != 0 && trkStage1 != 0) {
}
if (tracksEqual) {
- if (trkStage0->GetNTracklets() >= trkStage1->GetNTracklets()) {
- delete trkStage1;
+ if (trkStage0->GetNTracklets() >= trkStage1->GetNTracklets())
trkStage1 = trkStage0;
- }
}
else {
if (trkStage1 != 0x0)