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 */
8 /// \class AliMUONTracker
9 /// \brief MUON base Tracker
11 // Authors: Christian Finck, Laurent Aphecetche, SUBATECH Nantes
13 #include "AliTracker.h"
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;
29 class AliMUONTracker : public AliTracker
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();
40 virtual Int_t Clusters2Tracks(AliESDEvent* esd);
42 virtual Int_t LoadClusters(TTree* clustersTree);
44 virtual void UnloadClusters();
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;}
53 static AliMUONVTrackReconstructor* CreateTrackReconstructor(const char* trackingMode, AliMUONVClusterServer* clusterServer);
57 AliMUONTracker(const AliMUONTracker& rhs);
59 AliMUONTracker& operator=(const AliMUONTracker& rhs);
61 AliMUONVClusterStore* ClusterStore() const;
63 AliMUONVTriggerTrackStore* TriggerTrackStore() const;
65 void FillESD(AliMUONVTrackStore& trackStore, AliESDEvent* esd) const;
67 void SetupClusterServer(AliMUONVClusterServer& clusterServer);
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
83 ClassDef(AliMUONTracker,0) //tracker base class for MUON