Separating run-dependent mapping data from data, which are not
[u/mrichter/AliRoot.git] / MUON / AliMUONTracker.h
1 #ifndef ALIMUONTRACKER_H
2 #define ALIMUONTRACKER_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 // $Id$
7
8 /// \ingroup rec
9 /// \class AliMUONTracker
10 /// \brief MUON base Tracker
11 ///
12 //  Authors: Christian Finck, Laurent Aphecetche, SUBATECH Nantes
13
14 #include "AliTracker.h"
15
16 class AliCluster;
17 class AliESDEvent;
18 class AliMUONDigitMaker;
19 class AliMUONGeometryTransformer;
20 class AliMUONTrackHitPattern;
21 class AliMUONTriggerCircuit;
22 class AliMUONVClusterServer;
23 class AliMUONVClusterStore;
24 class AliMUONVDigitStore;
25 class AliMUONVTrackReconstructor;
26 class AliMUONVTrackStore;
27 class AliMUONVTriggerStore;
28 class AliMUONVTriggerTrackStore;
29
30 class AliMUONTracker : public AliTracker
31 {
32  public:
33
34   AliMUONTracker(AliMUONVClusterServer* clusterServer,
35                  const AliMUONVDigitStore& digitStore,
36                  const AliMUONDigitMaker* digitMaker=0,
37                  const AliMUONGeometryTransformer* transformer=0,
38                  const AliMUONTriggerCircuit* triggerCircuit=0);
39   virtual ~AliMUONTracker();
40   
41   virtual Int_t Clusters2Tracks(AliESDEvent* esd);
42
43   virtual Int_t LoadClusters(TTree* clustersTree);
44
45   virtual void  UnloadClusters();
46
47   /// Dummy implementation
48   virtual Int_t PropagateBack(AliESDEvent* /*event*/) {return 0;}
49   /// Dummy implementation
50   virtual Int_t RefitInward(AliESDEvent* /*event*/) {return 0;}
51   /// Dummy implementation
52   virtual AliCluster *GetCluster(Int_t /*index*/) const {return 0;}
53
54   static AliMUONVTrackReconstructor* CreateTrackReconstructor(const char* trackingMode, AliMUONVClusterServer* clusterServer);
55   
56 private:
57   /// Not implemented
58   AliMUONTracker(const AliMUONTracker& rhs);
59   /// Not implemented
60   AliMUONTracker& operator=(const AliMUONTracker& rhs);
61     
62   AliMUONVClusterStore* ClusterStore() const;
63
64   AliMUONVTriggerTrackStore* TriggerTrackStore() const;
65   
66   void FillESD(AliMUONVTrackStore& trackStore, AliESDEvent* esd) const;
67
68   void SetupClusterServer(AliMUONVClusterServer& clusterServer);
69   
70 private:
71   const AliMUONDigitMaker* fDigitMaker; //!< digit maker (not owner)
72   const AliMUONGeometryTransformer* fTransformer; //!< geometry transformer (not owner)
73   const AliMUONTriggerCircuit* fTriggerCircuit; //!< trigger circuit (not owner)
74   AliMUONTrackHitPattern* fTrackHitPatternMaker; //!< trigger hit pattern maker
75   AliMUONVTrackReconstructor* fTrackReco; //!< track reconstructor
76   mutable AliMUONVClusterStore* fClusterStore; //!< cluster container
77   AliMUONVTriggerStore* fTriggerStore; //!< trigger information
78   AliMUONVClusterServer* fClusterServer; //!< to get clusters
79   Bool_t fIsOwnerOfClusterServer; //!< whether we are owner of the cluster server
80   const AliMUONVDigitStore& fDigitStore; //!< digit info to fill in ESD
81   mutable AliMUONVClusterStore* fInputClusterStore; //!< cluster container
82   mutable AliMUONVTriggerTrackStore* fTriggerTrackStore; //!< trigger track store
83   
84   ClassDef(AliMUONTracker,0)  //tracker base class for MUON
85 };
86 #endif