X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONPreClusterFinderV3.cxx;h=ccd65a3a86013618c159efad1099799c076429b7;hb=a806b72c052b13e160bdd9aff38c893ea5971032;hp=036ef66de63878aaa83114036f2a51007a9bd913;hpb=24935e587c408e8043134e2d0924632e8660c433;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONPreClusterFinderV3.cxx b/MUON/AliMUONPreClusterFinderV3.cxx index 036ef66de63..ccd65a3a860 100644 --- a/MUON/AliMUONPreClusterFinderV3.cxx +++ b/MUON/AliMUONPreClusterFinderV3.cxx @@ -20,7 +20,7 @@ #include "AliLog.h" #include "AliMUONCluster.h" #include "AliMpVSegmentation.h" -#include "TClonesArray.h" +#include "TObjArray.h" #include "AliMpArea.h" #include "TVector2.h" #include "AliMUONPad.h" @@ -80,13 +80,13 @@ namespace AliMUONPreClusterFinderV3::AliMUONPreClusterFinderV3() : AliMUONVClusterFinder(), fClusters(new TClonesArray("AliMUONCluster",10)), - fSegmentations(0x0), + fkSegmentations(0x0), fPads(0x0), fDetElemId(0), fIterator(0x0) { /// ctor - AliInfo("") + AliInfo(""); for ( Int_t i = 0; i < 2; ++i ) { fPreClusters[i] = new TClonesArray("AliMUONCluster",10); @@ -116,15 +116,16 @@ AliMUONPreClusterFinderV3::UsePad(const AliMUONPad& pad) return kFALSE; } - AliMUONPad* p = new ((*fPads[pad.Cathode()])[fPads[pad.Cathode()]->GetLast()+1]) AliMUONPad(pad); + AliMUONPad* p = new AliMUONPad(pad); p->SetClusterId(-1); + fPads[pad.Cathode()]->Add(p); return kTRUE; } //_____________________________________________________________________________ Bool_t AliMUONPreClusterFinderV3::Prepare(Int_t detElemId, - TClonesArray* pads[2], + TObjArray* pads[2], const AliMpArea& area, const AliMpVSegmentation* seg[2]) { @@ -135,7 +136,7 @@ AliMUONPreClusterFinderV3::Prepare(Int_t detElemId, AliError("Handling of area not yet implemented for this class. Please check."); } - fSegmentations = seg; + fkSegmentations = seg; fPads = pads; fClusters->Clear("C"); @@ -191,12 +192,19 @@ AliMUONPreClusterFinderV3::AddPreCluster(AliMUONCluster& cluster, AliMUONCluster AliMUONCluster a(*preCluster); Int_t cathode = preCluster->Cathode(); + if ( cathode < 0 ) { + AliError(Form("Cathod undefined: %d",cathode)); + AliFatal(""); + return; + } + if ( cathode <=1 && !fPreClusters[cathode]->Remove(preCluster) ) { AliError(Form("Could not remove %s from preclusters[%d]", preCluster->AsString().Data(),cathode)); StdoutToAliDebug(1,DumpPreClusters()); AliFatal(""); + return; } cluster.AddCluster(a); @@ -223,8 +231,9 @@ AliMUONPreClusterFinderV3::AddPad(AliMUONCluster& cluster, AliMUONPad* pad) AliMUONPad* addedPad = cluster.AddPad(*pad); Int_t cathode = pad->Cathode(); - TClonesArray& padArray = *fPads[cathode]; - padArray.Remove(pad); + TObjArray& padArray = *fPads[cathode]; + delete padArray.Remove(pad); + TIter next(&padArray); AliMUONPad* testPad; @@ -252,7 +261,7 @@ AliMUONPreClusterFinderV3::MakeClusters() { /// Associate (proto)preclusters to form (pre)clusters -// AliCodeTimerAuto("") +// AliCodeTimerAuto("",0) for ( Int_t cathode = 0; cathode < 2; ++cathode ) { @@ -277,7 +286,7 @@ AliMUONPreClusterFinderV3::MakeCathodePreClusters(Int_t cathode) { /// Build (proto)preclusters from digits on a given cathode -// AliCodeTimerAuto(Form("Cathode %d",cathode)) +// AliCodeTimerAuto(Form("Cathode %d",cathode),0) while ( fPads[cathode]->GetLast() > 0 ) {