Line data Source code
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 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;
29 : class AliMUONTriggerUtilities;
30 :
31 : class AliMUONTracker : public AliTracker
32 : {
33 : public:
34 :
35 : AliMUONTracker(const AliMUONRecoParam* recoParam,
36 : AliMUONVClusterServer* clusterServer,
37 : AliMUONVDigitStore& digitStore,
38 : const AliMUONGeometryTransformer* transformer=0,
39 : const AliMUONTriggerCircuit* triggerCircuit=0,
40 : const AliMUONTriggerUtilities* triggerUtilities=0);
41 : virtual ~AliMUONTracker();
42 :
43 : virtual Int_t Clusters2Tracks(AliESDEvent* esd);
44 :
45 : virtual Int_t LoadClusters(TTree* clustersTree);
46 :
47 : virtual void UnloadClusters();
48 :
49 : /// Return reco parameters
50 68 : const AliMUONRecoParam* GetRecoParam() const { return fkRecoParam; }
51 :
52 : /// Dummy implementation
53 0 : virtual Int_t PropagateBack(AliESDEvent* /*event*/) {return 0;}
54 : /// Dummy implementation
55 0 : virtual Int_t RefitInward(AliESDEvent* /*event*/) {return 0;}
56 : /// Dummy implementation
57 0 : virtual AliCluster *GetCluster(Int_t /*index*/) const {return 0;}
58 :
59 : static AliMUONVTrackReconstructor* CreateTrackReconstructor(const AliMUONRecoParam* recoParam,
60 : AliMUONVClusterServer* clusterServer,
61 : const AliMUONGeometryTransformer* transformer);
62 :
63 : private:
64 : /// Not implemented
65 : AliMUONTracker(const AliMUONTracker& rhs);
66 : /// Not implemented
67 : AliMUONTracker& operator=(const AliMUONTracker& rhs);
68 :
69 : AliMUONVClusterStore* ClusterStore() const;
70 :
71 : AliMUONVTriggerTrackStore* TriggerTrackStore() const;
72 :
73 : void FillESD(const AliMUONVTrackStore& trackStore, AliESDEvent* esd) const;
74 :
75 : void SetupClusterServer(AliMUONVClusterServer& clusterServer);
76 :
77 : private:
78 : const AliMUONGeometryTransformer* fkTransformer; //!<! geometry transformer (not owner)
79 : const AliMUONTriggerCircuit* fkTriggerCircuit; //!<! trigger circuit (not owner)
80 : AliMUONTrackHitPattern* fTrackHitPatternMaker; //!<! trigger hit pattern maker
81 : AliMUONVTrackReconstructor* fTrackReco; //!<! track reconstructor
82 : mutable AliMUONVClusterStore* fClusterStore; //!<! cluster container
83 : AliMUONVTriggerStore* fTriggerStore; //!<! trigger information
84 : AliMUONVClusterServer* fClusterServer; //!<! to get clusters
85 : Bool_t fIsOwnerOfClusterServer; //!<! whether we are owner of the cluster server
86 : const AliMUONVDigitStore& fkDigitStore; //!<! digit info to fill in ESD
87 : mutable AliMUONVClusterStore* fInputClusterStore; //!<! cluster container
88 : mutable AliMUONVTriggerTrackStore* fTriggerTrackStore; //!<! trigger track store
89 : const AliMUONRecoParam* fkRecoParam; //!<! pointer to reco param
90 : AliMUONVTrackStore* fInternalTrackStore; //!<! internal track store
91 :
92 90 : ClassDef(AliMUONTracker,0) //tracker base class for MUON
93 : };
94 : #endif
|