Fixing clustering(s) memory leaks
[u/mrichter/AliRoot.git] / MUON / AliMUONPreClusterFinder.h
index 0f15795..3d5254e 100644 (file)
 #ifndef AliMUONVCLUSTERFINDER_H
 #  include "AliMUONVClusterFinder.h"
 #endif
+#ifndef ALI_MP_AREA_H
+#  include "AliMpArea.h"
+#endif
+#ifndef ROOT_TClonesArray
+#  include <TClonesArray.h>
+#endif
 
 class TStopwatch;
 class AliMUONPad;
@@ -25,28 +31,40 @@ public:
   AliMUONPreClusterFinder();
   virtual ~AliMUONPreClusterFinder();
   
-  virtual Bool_t Prepare(const AliMpVSegmentation* segmentations[2],
-                         TClonesArray* digits[2]);
+  using AliMUONVClusterFinder::Prepare;
+
+  virtual Bool_t Prepare(Int_t detElemId,
+                         TClonesArray* pads[2],
+                         const AliMpArea& area);
   
   virtual AliMUONCluster* NextCluster();
 
   virtual Bool_t UsePad(const AliMUONPad& pad);
   
 private:
+  /// Not implemented
   AliMUONPreClusterFinder(const AliMUONPreClusterFinder& rhs);
+  /// Not implemented
   AliMUONPreClusterFinder& operator=(const AliMUONPreClusterFinder& rhs);
 
-  Bool_t AreNeighbours(const AliMUONPad&, const AliMUONPad&);
   void AddPad(AliMUONCluster& cluster, AliMUONPad* pad);
   
+  AliMUONPad* GetNextPad(Int_t cathode) const;
+
+  /// Whether we should stop working...
+  virtual Bool_t ShouldAbort() const { return fShouldAbort; }
+  
+  AliMUONCluster* NewCluster();
+  void RemoveCluster(AliMUONCluster* cluster);
+  
 private:
-  TClonesArray* fClusters; ///<! the clusters we've found (owner)
-  const AliMpVSegmentation** fSegmentations; ///<! segmentations (not owner)
-  TClonesArray** fDigits; ///<! where to find the digits (not owner)
-  TClonesArray* fPads[2]; ///!< the pads corresponding to the digits (owner)
-  Int_t fDetElemId; ///!< which DE we're considering
+  TClonesArray fClusters; //!< the clusters we've found (owner)
+  TClonesArray** fPads; //!< the pads corresponding to the digits (not owner)
+  Int_t fDetElemId; //!< which DE we're considering
+  AliMpArea fArea; //!< area into which to consider pads to *start* a cluster
+  Bool_t fShouldAbort; //!< to indicate clustering should stop right now
   
-  ClassDef(AliMUONPreClusterFinder,1) // A basic pre-cluster finder
+  ClassDef(AliMUONPreClusterFinder,4) // A basic pre-cluster finder
 };
 
 #endif