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 AliMUONGeometryTransformer;
19 class AliMUONRecoParam;
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;
30 class AliMUONTracker : public AliTracker
34 AliMUONTracker(const AliMUONRecoParam* recoParam,
35 AliMUONVClusterServer* clusterServer,
36 AliMUONVDigitStore& digitStore,
37 const AliMUONGeometryTransformer* transformer=0,
38 const AliMUONTriggerCircuit* triggerCircuit=0);
39 virtual ~AliMUONTracker();
41 virtual Int_t Clusters2Tracks(AliESDEvent* esd);
43 virtual Int_t LoadClusters(TTree* clustersTree);
45 virtual void UnloadClusters();
47 /// Return reco parameters
48 const AliMUONRecoParam* GetRecoParam() const { return fkRecoParam; }
50 /// Dummy implementation
51 virtual Int_t PropagateBack(AliESDEvent* /*event*/) {return 0;}
52 /// Dummy implementation
53 virtual Int_t RefitInward(AliESDEvent* /*event*/) {return 0;}
54 /// Dummy implementation
55 virtual AliCluster *GetCluster(Int_t /*index*/) const {return 0;}
57 static AliMUONVTrackReconstructor* CreateTrackReconstructor(const AliMUONRecoParam* recoParam, AliMUONVClusterServer* clusterServer);
61 AliMUONTracker(const AliMUONTracker& rhs);
63 AliMUONTracker& operator=(const AliMUONTracker& rhs);
65 AliMUONVClusterStore* ClusterStore() const;
67 AliMUONVTriggerTrackStore* TriggerTrackStore() const;
69 void FillESD(const AliMUONVTrackStore& trackStore, AliESDEvent* esd) const;
71 void SetupClusterServer(AliMUONVClusterServer& clusterServer);
74 const AliMUONGeometryTransformer* fkTransformer; //!< geometry transformer (not owner)
75 const AliMUONTriggerCircuit* fkTriggerCircuit; //!< trigger circuit (not owner)
76 AliMUONTrackHitPattern* fTrackHitPatternMaker; //!< trigger hit pattern maker
77 AliMUONVTrackReconstructor* fTrackReco; //!< track reconstructor
78 mutable AliMUONVClusterStore* fClusterStore; //!< cluster container
79 AliMUONVTriggerStore* fTriggerStore; //!< trigger information
80 AliMUONVClusterServer* fClusterServer; //!< to get clusters
81 Bool_t fIsOwnerOfClusterServer; //!< whether we are owner of the cluster server
82 const AliMUONVDigitStore& fkDigitStore; //!< digit info to fill in ESD
83 mutable AliMUONVClusterStore* fInputClusterStore; //!< cluster container
84 mutable AliMUONVTriggerTrackStore* fTriggerTrackStore; //!< trigger track store
85 const AliMUONRecoParam* fkRecoParam; //!< pointer to reco param
87 ClassDef(AliMUONTracker,0) //tracker base class for MUON