remoe duplicate QA initialisation and do ESD QA for same detectors as RecPoint QA
[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
7 /// \ingroup rec
8 /// \class AliMUONTracker
9 /// \brief MUON base Tracker
10 ///
11 //  Authors: Christian Finck, Laurent Aphecetche, SUBATECH Nantes
12
13 #include "AliTracker.h"
14
15 class AliCluster;
16 class AliESDEvent;
17 class AliMUONDigitMaker;
18 class AliMUONGeometryTransformer;
19 class AliMUONTrackHitPattern;
20 class AliMUONTriggerCircuit;
21 class AliMUONVClusterServer;
22 class AliMUONVClusterStore;
23 class AliMUONVDigitStore;
24 class AliMUONVTrackReconstructor;
25 class AliMUONVTrackStore;
26 class AliMUONVTriggerStore;
27 class AliMUONVTriggerTrackStore;
28
29 class AliMUONTracker : public AliTracker
30 {
31  public:
32
33   AliMUONTracker(AliMUONVClusterServer* clusterServer,
34                  const AliMUONVDigitStore& digitStore,
35                  const AliMUONDigitMaker* digitMaker=0,
36                  const AliMUONGeometryTransformer* transformer=0,
37                  const AliMUONTriggerCircuit* triggerCircuit=0);
38   virtual ~AliMUONTracker();
39   
40   virtual Int_t Clusters2Tracks(AliESDEvent* esd);
41
42   virtual Int_t LoadClusters(TTree* clustersTree);
43
44   virtual void  UnloadClusters();
45
46   /// Dummy implementation
47   virtual Int_t PropagateBack(AliESDEvent* /*event*/) {return 0;}
48   /// Dummy implementation
49   virtual Int_t RefitInward(AliESDEvent* /*event*/) {return 0;}
50   /// Dummy implementation
51   virtual AliCluster *GetCluster(Int_t /*index*/) const {return 0;}
52
53   static AliMUONVTrackReconstructor* CreateTrackReconstructor(const char* trackingMode, AliMUONVClusterServer* clusterServer);
54   
55 private:
56   /// Not implemented
57   AliMUONTracker(const AliMUONTracker& rhs);
58   /// Not implemented
59   AliMUONTracker& operator=(const AliMUONTracker& rhs);
60     
61   AliMUONVClusterStore* ClusterStore() const;
62
63   AliMUONVTriggerTrackStore* TriggerTrackStore() const;
64   
65   void FillESD(AliMUONVTrackStore& trackStore, AliESDEvent* esd) const;
66
67   void SetupClusterServer(AliMUONVClusterServer& clusterServer);
68   
69 private:
70   const AliMUONDigitMaker* fDigitMaker; //!< digit maker (not owner)
71   const AliMUONGeometryTransformer* fTransformer; //!< geometry transformer (not owner)
72   const AliMUONTriggerCircuit* fTriggerCircuit; //!< trigger circuit (not owner)
73   AliMUONTrackHitPattern* fTrackHitPatternMaker; //!< trigger hit pattern maker
74   AliMUONVTrackReconstructor* fTrackReco; //!< track reconstructor
75   mutable AliMUONVClusterStore* fClusterStore; //!< cluster container
76   AliMUONVTriggerStore* fTriggerStore; //!< trigger information
77   AliMUONVClusterServer* fClusterServer; //!< to get clusters
78   Bool_t fIsOwnerOfClusterServer; //!< whether we are owner of the cluster server
79   const AliMUONVDigitStore& fDigitStore; //!< digit info to fill in ESD
80   mutable AliMUONVClusterStore* fInputClusterStore; //!< cluster container
81   mutable AliMUONVTriggerTrackStore* fTriggerTrackStore; //!< trigger track store
82   
83   ClassDef(AliMUONTracker,0)  //tracker base class for MUON
84 };
85 #endif