]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONTracker.h
removed obsolete AliMUONAlignmentRecord classes (AliMillePedeRecord is now used,...
[u/mrichter/AliRoot.git] / MUON / AliMUONTracker.h
index 39dd1ba24c1f84d3f7224a7665a953da6f9ec8da..855e7d7ea8da46932dbfc112b49164814faa1561 100644 (file)
@@ -3,55 +3,92 @@
 /* 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
+///
+//  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