Update from Alberica. Addition of VZERO equalized signals and ZNC.
[u/mrichter/AliRoot.git] / MUON / AliMUONPreClusterFinder.h
1 #ifndef ALIMUONPRECLUSTERFINDER_H
2 #define ALIMUONPRECLUSTERFINDER_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice                               */
6
7 // $Id$
8
9 /// \ingroup rec
10 /// \class AliMUONPreClusterFinder
11 /// \brief A basic pre-cluster finder
12 /// 
13 // Author Laurent Aphecetche, Subatech
14
15 #ifndef AliMUONVCLUSTERFINDER_H
16 #  include "AliMUONVClusterFinder.h"
17 #endif
18 #ifndef ALI_MP_AREA_H
19 #  include "AliMpArea.h"
20 #endif
21 #ifndef ROOT_TClonesArray
22 #  include <TClonesArray.h>
23 #endif
24
25 class TStopwatch;
26 class AliMUONPad;
27 class TObjArray;
28
29 class AliMUONPreClusterFinder : public AliMUONVClusterFinder
30 {
31 public:
32   AliMUONPreClusterFinder();
33   virtual ~AliMUONPreClusterFinder();
34   
35   using AliMUONVClusterFinder::Prepare;
36
37   virtual Bool_t Prepare(Int_t detElemId,
38                          TObjArray* pads[2],
39                          const AliMpArea& area);
40   
41   virtual AliMUONCluster* NextCluster();
42
43   virtual Bool_t UsePad(const AliMUONPad& pad);
44   
45 private:
46   /// Not implemented
47   AliMUONPreClusterFinder(const AliMUONPreClusterFinder& rhs);
48   /// Not implemented
49   AliMUONPreClusterFinder& operator=(const AliMUONPreClusterFinder& rhs);
50
51   void AddPad(AliMUONCluster& cluster, AliMUONPad* pad);
52   
53   AliMUONPad* GetNextPad(Int_t cathode) const;
54
55   /// Whether we should stop working...
56   virtual Bool_t ShouldAbort() const { return fShouldAbort; }
57   
58   AliMUONCluster* NewCluster();
59   void RemoveCluster(AliMUONCluster* cluster);
60   
61 private:
62   TClonesArray fClusters; //!< the clusters we've found (owner)
63   TObjArray** fPads; //!< the pads corresponding to the digits (not owner)
64   Int_t fDetElemId; //!< which DE we're considering
65   AliMpArea fArea; //!< area into which to consider pads to *start* a cluster
66   Bool_t fShouldAbort; //!< to indicate clustering should stop right now
67   
68   ClassDef(AliMUONPreClusterFinder,4) // A basic pre-cluster finder
69 };
70
71 #endif