a94261eb2ae308a9894a66911d0ebb1cdebb4b73
[u/mrichter/AliRoot.git] / MUON / AliMUONSimpleClusterServer.h
1 #ifndef ALIMUONSIMPLECLUSTERSERVER_H
2 #define ALIMUONSIMPLECLUSTERSERVER_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 AliMUONSimpleClusterServer
11 /// \brief Implementation of AliMUONVClusterServer interface
12 /// 
13 // Author Laurent Aphecetche, Subatech
14
15 #ifndef ALIMUONVCLUSTERSERVER_H
16 #  include "AliMUONVClusterServer.h"
17 #endif
18
19 class AliMUONGeometryTransformer;
20 class AliMUONTriggerTrackToTrackerClusters;
21 class AliMUONVClusterFinder;
22 class AliMUONCluster;
23 class AliMpVSegmentation;
24 class AliMpExMap;
25 class AliMpExMapIterator;
26 class TClonesArray;
27
28 class AliMUONSimpleClusterServer : public AliMUONVClusterServer
29 {
30 public:
31   AliMUONSimpleClusterServer(AliMUONVClusterFinder* clusterFinder,
32                              const AliMUONGeometryTransformer& transformer);
33   
34   virtual ~AliMUONSimpleClusterServer();
35   
36   Int_t Clusterize(Int_t chamberId,
37                    AliMUONVClusterStore& clusterStore,
38                    const AliMpArea& area,
39                    const AliMUONRecoParam* recoParam = 0x0);
40   
41   void UseDigits(TIter& next, AliMUONVDigitStore* digitStore = 0x0);
42   
43   void Print(Option_t* opt="") const;
44
45   /// Use trigger tracks. Return kFALSE if not used.
46   virtual Bool_t UseTriggerTrackStore(AliMUONVTriggerTrackStore* trackStore);
47
48 private:
49   /// Not implemented
50   AliMUONSimpleClusterServer(const AliMUONSimpleClusterServer& rhs);
51   /// Not implemented
52   AliMUONSimpleClusterServer& operator=(const AliMUONSimpleClusterServer& rhs);
53   
54   Bool_t Overlap(Int_t detElemId, const AliMpArea& area, AliMpArea& deArea) const;
55     
56   void Global2Local(Int_t detElemId, const AliMpArea& globalArea, AliMpArea& localArea) const;
57
58   TObjArray* PadArray(Int_t detElemId, Int_t cathode) const;
59   
60   Int_t FindMCLabel(const AliMUONCluster& cluster, Int_t detElemId, const AliMpVSegmentation* seg[2]) const;
61   
62 private:
63   AliMUONVDigitStore* fDigitStore; //!< the digit store (not owner)
64   AliMUONVClusterFinder* fClusterFinder; //!< the cluster finder (owner)
65   const AliMUONGeometryTransformer& fkTransformer; //!< the geometry transformer (not owner)
66   AliMpExMap* fPads[2]; ///< map of TClonesArray of AliMUONPads
67   AliMpExMapIterator* fPadsIterator[2]; ///< iterator for the map of TClonesArray of AliMUONPads
68   AliMUONVTriggerTrackStore* fTriggerTrackStore; ///< trigger track store (if bypassing of St45 was requested) (not owner)
69   AliMUONTriggerTrackToTrackerClusters* fBypass; ///< to convert trigger track into tracker clusters (owner)
70   
71   ClassDef(AliMUONSimpleClusterServer,0) // Cluster server
72 };
73
74 #endif