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 */
9 /// \class AliMUONTracker
10 /// \brief MUON base Tracker
12 // Authors: Christian Finck, Laurent Aphecetche, SUBATECH Nantes
14 #include "AliTracker.h"
18 class AliMUONDigitMaker;
19 class AliMUONGeometryTransformer;
20 class AliMUONRecoParam;
21 class AliMUONTrackHitPattern;
22 class AliMUONTriggerCircuit;
23 class AliMUONVClusterServer;
24 class AliMUONVClusterStore;
25 class AliMUONVDigitStore;
26 class AliMUONVTrackReconstructor;
27 class AliMUONVTrackStore;
28 class AliMUONVTriggerStore;
29 class AliMUONVTriggerTrackStore;
31 class AliMUONTracker : public AliTracker
35 AliMUONTracker(const AliMUONRecoParam* recoParam,
36 AliMUONVClusterServer* clusterServer,
37 const AliMUONVDigitStore& digitStore,
38 const AliMUONDigitMaker* digitMaker=0,
39 const AliMUONGeometryTransformer* transformer=0,
40 const AliMUONTriggerCircuit* triggerCircuit=0);
41 virtual ~AliMUONTracker();
43 virtual Int_t Clusters2Tracks(AliESDEvent* esd);
45 virtual Int_t LoadClusters(TTree* clustersTree);
47 virtual void UnloadClusters();
49 const AliMUONRecoParam* GetRecoParam() const { return fRecoParam; }
51 /// Dummy implementation
52 virtual Int_t PropagateBack(AliESDEvent* /*event*/) {return 0;}
53 /// Dummy implementation
54 virtual Int_t RefitInward(AliESDEvent* /*event*/) {return 0;}
55 /// Dummy implementation
56 virtual AliCluster *GetCluster(Int_t /*index*/) const {return 0;}
58 static AliMUONVTrackReconstructor* CreateTrackReconstructor(const AliMUONRecoParam* recoParam, AliMUONVClusterServer* clusterServer);
62 AliMUONTracker(const AliMUONTracker& rhs);
64 AliMUONTracker& operator=(const AliMUONTracker& rhs);
66 AliMUONVClusterStore* ClusterStore() const;
68 AliMUONVTriggerTrackStore* TriggerTrackStore() const;
70 void FillESD(AliMUONVTrackStore& trackStore, AliESDEvent* esd) const;
72 void SetupClusterServer(AliMUONVClusterServer& clusterServer);
75 const AliMUONDigitMaker* fDigitMaker; //!< digit maker (not owner)
76 const AliMUONGeometryTransformer* fTransformer; //!< geometry transformer (not owner)
77 const AliMUONTriggerCircuit* fTriggerCircuit; //!< trigger circuit (not owner)
78 AliMUONTrackHitPattern* fTrackHitPatternMaker; //!< trigger hit pattern maker
79 AliMUONVTrackReconstructor* fTrackReco; //!< track reconstructor
80 mutable AliMUONVClusterStore* fClusterStore; //!< cluster container
81 AliMUONVTriggerStore* fTriggerStore; //!< trigger information
82 AliMUONVClusterServer* fClusterServer; //!< to get clusters
83 Bool_t fIsOwnerOfClusterServer; //!< whether we are owner of the cluster server
84 const AliMUONVDigitStore& fDigitStore; //!< digit info to fill in ESD
85 mutable AliMUONVClusterStore* fInputClusterStore; //!< cluster container
86 mutable AliMUONVTriggerTrackStore* fTriggerTrackStore; //!< trigger track store
87 const AliMUONRecoParam* fRecoParam; //!< pointer to reco param
89 ClassDef(AliMUONTracker,0) //tracker base class for MUON