#include "AliMUONPad.h"
#include "AliMUONVDigit.h"
#include "AliMUONVDigitStore.h"
+//#include "AliCodeTimer.h"
+//-----------------------------------------------------------------------------
/// \class AliMUONPreClusterFinder
///
/// Implementation of AliMUONVClusterFinder
/// This class simply find adjacent pads to form clusters
///
/// \author Laurent Aphecetche
+//-----------------------------------------------------------------------------
ClassImp(AliMUONPreClusterFinder)
ix,iy,pad.Position().X(),pad.Position().Y(),
pad.Dimensions().X(),pad.Dimensions().Y(),
d->Charge());
- if ( d->IsSaturated() ) mpad.SetSaturated(kTRUE);
+ if ( d->IsSaturated() ) mpad.SetSaturated(kTRUE);
+ mpad.SetUniqueID(d->GetUniqueID());
new (padArray[padArray.GetLast()+1]) AliMUONPad(mpad);
}
if ( fPads[0]->GetLast() < 0 && fPads[1]->GetLast() < 0 )
// no pad at all, nothing to do...
return kFALSE;
}
-
+
return kTRUE;
}
Int_t cathode = pad->Cathode();
TClonesArray& padArray = *fPads[cathode];
+ // WARNING: this Remove method uses the AliMUONPad::IsEqual if that method is
+ // present (otherwise just compares pointers) : so that one must be correct
+ // if implemented !
padArray.Remove(pad);
- //AZ padArray.Compress();
+ // TObject* o = padArray.Remove(pad);
+// if (!o)
+// {
+// AliFatal("Oups. Could not remove pad from pads to consider. Aborting as anyway "
+// " we'll get an infinite loop. Please check the AliMUONPad::IsEqual method"
+// " as the first suspect for failed remove");
+// }
TIter next(&padArray);
AliMUONPad* testPad;
-
+
while ( ( testPad = static_cast<AliMUONPad*>(next())))
{
if ( AliMUONPad::AreNeighbours(*testPad,*pad) )
AliMUONPreClusterFinder::NextCluster()
{
/// Builds the next cluster, and returns it.
+// AliCodeTimerAuto("pre-clustering")
// Start a new cluster
Int_t id = fClusters->GetLast()+1;