//_____________________________________________________________________________
AliMUONPreClusterFinder::AliMUONPreClusterFinder()
: AliMUONVClusterFinder(),
- fClusters(0x0),
+ fClusters("AliMUONCluster"),
fPads(0x0),
fDetElemId(0),
fArea(),
AliMUONPreClusterFinder::~AliMUONPreClusterFinder()
{
/// dtor : note we're owner of the clusters, but not of the pads
- delete fClusters;
}
//_____________________________________________________________________________
const AliMpArea& area)
{
/// Prepare for clustering, by giving access to segmentations and digit lists
-
- delete fClusters;
- fClusters = new TClonesArray("AliMUONCluster");
+ fClusters.Clear("C");
+
fPads = pads;
fDetElemId = detElemId;
fArea = area;
AliMUONPad* pad;
while ( ( pad = static_cast<AliMUONPad*>(next())) )
{
- AliMpArea padArea(pad->Position(),pad->Dimensions());
+ AliMpArea padArea(pad->X(), pad->Y(), pad->DX(), pad->DY());
if (fArea.Overlap(padArea)) return pad;
// AliCodeTimerAuto("pre-clustering")
// Start a new cluster
- Int_t id = fClusters->GetLast()+1;
- AliMUONCluster* cluster = new ((*fClusters)[id]) AliMUONCluster;
+ Int_t id = fClusters.GetLast()+1;
+ AliMUONCluster* cluster = new (fClusters[id]) AliMUONCluster;
cluster->SetUniqueID(id);
AliMUONPad* pad = GetNextPad(0);
if ( ShouldAbort() )
{
- AliError("Aborting clustering of that DE because we've got too many pads");
- fClusters->Remove(cluster);
- fClusters->Compress();
+ AliError(Form("Aborting clustering of DE %d because we've got too many pads",fDetElemId));
+ fClusters.Remove(cluster);
+ fClusters.Compress();
return 0x0;
}
}
// else only 1 pad (not suspicious, but kind of useless, probably noise)
// so we remove it from our list
- fClusters->Remove(cluster);
- fClusters->Compress();
+ fClusters.Remove(cluster);
+ fClusters.Compress();
// then proceed further
return NextCluster();
}