/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice */
+// $Id$
/// \ingroup rec
/// \class AliMUONTracker
/// \brief MUON base Tracker
///
-// Author: Christian Finck, SUBATECH Nantes
+// Authors: Christian Finck, Laurent Aphecetche, SUBATECH Nantes
#include "AliTracker.h"
-class AliESD;
+
class AliCluster;
-class AliMUONRecData;
-class TClonesArray;
+class AliESDEvent;
+class AliMUONGeometryTransformer;
+class AliMUONRecoParam;
+class AliMUONTrackHitPattern;
+class AliMUONTriggerCircuit;
+class AliMUONVClusterServer;
+class AliMUONVClusterStore;
+class AliMUONVDigitStore;
class AliMUONVTrackReconstructor;
+class AliMUONVTrackStore;
+class AliMUONVTriggerStore;
+class AliMUONVTriggerTrackStore;
+class AliMUONTriggerUtilities;
class AliMUONTracker : public AliTracker
{
public:
- AliMUONTracker();
+ AliMUONTracker(const AliMUONRecoParam* recoParam,
+ AliMUONVClusterServer* clusterServer,
+ AliMUONVDigitStore& digitStore,
+ const AliMUONGeometryTransformer* transformer=0,
+ const AliMUONTriggerCircuit* triggerCircuit=0,
+ const AliMUONTriggerUtilities* triggerUtilities=0);
virtual ~AliMUONTracker();
-
- virtual Int_t Clusters2Tracks(AliESD* /*esd*/);
+
+ virtual Int_t Clusters2Tracks(AliESDEvent* esd);
+
+ virtual Int_t LoadClusters(TTree* clustersTree);
+
+ virtual void UnloadClusters();
+
+ /// Return reco parameters
+ const AliMUONRecoParam* GetRecoParam() const { return fkRecoParam; }
/// Dummy implementation
- virtual Int_t PropagateBack(AliESD* /*event*/) {return 0;}
- /// Dummy implementation
- virtual Int_t RefitInward(AliESD* /*event*/) {return 0;}
- /// Dummy implementation
- virtual Int_t LoadClusters(TTree* /*tree*/) {return 0;}
+ virtual Int_t PropagateBack(AliESDEvent* /*event*/) {return 0;}
/// Dummy implementation
- virtual void UnloadClusters() {return;}
+ virtual Int_t RefitInward(AliESDEvent* /*event*/) {return 0;}
/// Dummy implementation
virtual AliCluster *GetCluster(Int_t /*index*/) const {return 0;}
- /// Set trigger circuit
- void SetTriggerCircuit(TClonesArray* circuit) {fTriggerCircuit = circuit;}
- /// Set pointer to data container
- void SetMUONData(AliMUONRecData* data) {fMUONData = data;}
- /// Set option
- void SetOption(Option_t* opt);
-
+ static AliMUONVTrackReconstructor* CreateTrackReconstructor(const AliMUONRecoParam* recoParam,
+ AliMUONVClusterServer* clusterServer,
+ const AliMUONGeometryTransformer* transformer);
+
private:
/// Not implemented
AliMUONTracker(const AliMUONTracker& rhs);
/// Not implemented
AliMUONTracker& operator=(const AliMUONTracker& rhs);
- TClonesArray* fTriggerCircuit; //!< trigger circuit
- AliMUONRecData* fMUONData; //!< pointer to container
- AliMUONVTrackReconstructor* fTrackReco; //!< track reconstructor
+ AliMUONVClusterStore* ClusterStore() const;
+
+ AliMUONVTriggerTrackStore* TriggerTrackStore() const;
+
+ void FillESD(const AliMUONVTrackStore& trackStore, AliESDEvent* esd) const;
+ void SetupClusterServer(AliMUONVClusterServer& clusterServer);
+
+private:
+ const AliMUONGeometryTransformer* fkTransformer; //!< geometry transformer (not owner)
+ const AliMUONTriggerCircuit* fkTriggerCircuit; //!< trigger circuit (not owner)
+ AliMUONTrackHitPattern* fTrackHitPatternMaker; //!< trigger hit pattern maker
+ AliMUONVTrackReconstructor* fTrackReco; //!< track reconstructor
+ mutable AliMUONVClusterStore* fClusterStore; //!< cluster container
+ AliMUONVTriggerStore* fTriggerStore; //!< trigger information
+ AliMUONVClusterServer* fClusterServer; //!< to get clusters
+ Bool_t fIsOwnerOfClusterServer; //!< whether we are owner of the cluster server
+ const AliMUONVDigitStore& fkDigitStore; //!< digit info to fill in ESD
+ mutable AliMUONVClusterStore* fInputClusterStore; //!< cluster container
+ mutable AliMUONVTriggerTrackStore* fTriggerTrackStore; //!< trigger track store
+ const AliMUONRecoParam* fkRecoParam; //!< pointer to reco param
+ AliMUONVTrackStore* fInternalTrackStore; //!< internal track store
+
ClassDef(AliMUONTracker,0) //tracker base class for MUON
};
#endif