Separating run-dependent mapping data from data, which are not
[u/mrichter/AliRoot.git] / MUON / AliMUONPreClusterFinder.h
index 8daf8b0..06823bc 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,8 +31,11 @@ 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();
 
@@ -40,14 +49,19 @@ private:
 
   void AddPad(AliMUONCluster& cluster, AliMUONPad* pad);
   
+  AliMUONPad* GetNextPad(Int_t cathode) const;
+
+  /// Whether we should stop working...
+  virtual Bool_t ShouldAbort() const { return fShouldAbort; }
+  
 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)
+  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