ROOT logo
#ifndef ALIMUONPRECLUSTERFINDER_H
#define ALIMUONPRECLUSTERFINDER_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice                               */

// $Id$

/// \ingroup rec
/// \class AliMUONPreClusterFinder
/// \brief A basic pre-cluster finder
/// 
// Author Laurent Aphecetche, Subatech

#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;
class TObjArray;

class AliMUONPreClusterFinder : public AliMUONVClusterFinder
{
public:
  AliMUONPreClusterFinder();
  virtual ~AliMUONPreClusterFinder();
  
  using AliMUONVClusterFinder::Prepare;

  virtual Bool_t Prepare(Int_t detElemId,
                         TObjArray* 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);

  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)
  TObjArray** 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,4) // A basic pre-cluster finder
};

#endif
 AliMUONPreClusterFinder.h:1
 AliMUONPreClusterFinder.h:2
 AliMUONPreClusterFinder.h:3
 AliMUONPreClusterFinder.h:4
 AliMUONPreClusterFinder.h:5
 AliMUONPreClusterFinder.h:6
 AliMUONPreClusterFinder.h:7
 AliMUONPreClusterFinder.h:8
 AliMUONPreClusterFinder.h:9
 AliMUONPreClusterFinder.h:10
 AliMUONPreClusterFinder.h:11
 AliMUONPreClusterFinder.h:12
 AliMUONPreClusterFinder.h:13
 AliMUONPreClusterFinder.h:14
 AliMUONPreClusterFinder.h:15
 AliMUONPreClusterFinder.h:16
 AliMUONPreClusterFinder.h:17
 AliMUONPreClusterFinder.h:18
 AliMUONPreClusterFinder.h:19
 AliMUONPreClusterFinder.h:20
 AliMUONPreClusterFinder.h:21
 AliMUONPreClusterFinder.h:22
 AliMUONPreClusterFinder.h:23
 AliMUONPreClusterFinder.h:24
 AliMUONPreClusterFinder.h:25
 AliMUONPreClusterFinder.h:26
 AliMUONPreClusterFinder.h:27
 AliMUONPreClusterFinder.h:28
 AliMUONPreClusterFinder.h:29
 AliMUONPreClusterFinder.h:30
 AliMUONPreClusterFinder.h:31
 AliMUONPreClusterFinder.h:32
 AliMUONPreClusterFinder.h:33
 AliMUONPreClusterFinder.h:34
 AliMUONPreClusterFinder.h:35
 AliMUONPreClusterFinder.h:36
 AliMUONPreClusterFinder.h:37
 AliMUONPreClusterFinder.h:38
 AliMUONPreClusterFinder.h:39
 AliMUONPreClusterFinder.h:40
 AliMUONPreClusterFinder.h:41
 AliMUONPreClusterFinder.h:42
 AliMUONPreClusterFinder.h:43
 AliMUONPreClusterFinder.h:44
 AliMUONPreClusterFinder.h:45
 AliMUONPreClusterFinder.h:46
 AliMUONPreClusterFinder.h:47
 AliMUONPreClusterFinder.h:48
 AliMUONPreClusterFinder.h:49
 AliMUONPreClusterFinder.h:50
 AliMUONPreClusterFinder.h:51
 AliMUONPreClusterFinder.h:52
 AliMUONPreClusterFinder.h:53
 AliMUONPreClusterFinder.h:54
 AliMUONPreClusterFinder.h:55
 AliMUONPreClusterFinder.h:56
 AliMUONPreClusterFinder.h:57
 AliMUONPreClusterFinder.h:58
 AliMUONPreClusterFinder.h:59
 AliMUONPreClusterFinder.h:60
 AliMUONPreClusterFinder.h:61
 AliMUONPreClusterFinder.h:62
 AliMUONPreClusterFinder.h:63
 AliMUONPreClusterFinder.h:64
 AliMUONPreClusterFinder.h:65
 AliMUONPreClusterFinder.h:66
 AliMUONPreClusterFinder.h:67
 AliMUONPreClusterFinder.h:68
 AliMUONPreClusterFinder.h:69
 AliMUONPreClusterFinder.h:70
 AliMUONPreClusterFinder.h:71