ROOT logo
#ifndef ALIMUONTRACKER_H
#define ALIMUONTRACKER_H
/* 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 AliCluster;
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(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(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(AliESDEvent* /*event*/) {return 0;}
  /// Dummy implementation
  virtual Int_t RefitInward(AliESDEvent* /*event*/) {return 0;}
  /// Dummy implementation
  virtual AliCluster *GetCluster(Int_t /*index*/) const {return 0;}

  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);
    
  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
 AliMUONTracker.h:1
 AliMUONTracker.h:2
 AliMUONTracker.h:3
 AliMUONTracker.h:4
 AliMUONTracker.h:5
 AliMUONTracker.h:6
 AliMUONTracker.h:7
 AliMUONTracker.h:8
 AliMUONTracker.h:9
 AliMUONTracker.h:10
 AliMUONTracker.h:11
 AliMUONTracker.h:12
 AliMUONTracker.h:13
 AliMUONTracker.h:14
 AliMUONTracker.h:15
 AliMUONTracker.h:16
 AliMUONTracker.h:17
 AliMUONTracker.h:18
 AliMUONTracker.h:19
 AliMUONTracker.h:20
 AliMUONTracker.h:21
 AliMUONTracker.h:22
 AliMUONTracker.h:23
 AliMUONTracker.h:24
 AliMUONTracker.h:25
 AliMUONTracker.h:26
 AliMUONTracker.h:27
 AliMUONTracker.h:28
 AliMUONTracker.h:29
 AliMUONTracker.h:30
 AliMUONTracker.h:31
 AliMUONTracker.h:32
 AliMUONTracker.h:33
 AliMUONTracker.h:34
 AliMUONTracker.h:35
 AliMUONTracker.h:36
 AliMUONTracker.h:37
 AliMUONTracker.h:38
 AliMUONTracker.h:39
 AliMUONTracker.h:40
 AliMUONTracker.h:41
 AliMUONTracker.h:42
 AliMUONTracker.h:43
 AliMUONTracker.h:44
 AliMUONTracker.h:45
 AliMUONTracker.h:46
 AliMUONTracker.h:47
 AliMUONTracker.h:48
 AliMUONTracker.h:49
 AliMUONTracker.h:50
 AliMUONTracker.h:51
 AliMUONTracker.h:52
 AliMUONTracker.h:53
 AliMUONTracker.h:54
 AliMUONTracker.h:55
 AliMUONTracker.h:56
 AliMUONTracker.h:57
 AliMUONTracker.h:58
 AliMUONTracker.h:59
 AliMUONTracker.h:60
 AliMUONTracker.h:61
 AliMUONTracker.h:62
 AliMUONTracker.h:63
 AliMUONTracker.h:64
 AliMUONTracker.h:65
 AliMUONTracker.h:66
 AliMUONTracker.h:67
 AliMUONTracker.h:68
 AliMUONTracker.h:69
 AliMUONTracker.h:70
 AliMUONTracker.h:71
 AliMUONTracker.h:72
 AliMUONTracker.h:73
 AliMUONTracker.h:74
 AliMUONTracker.h:75
 AliMUONTracker.h:76
 AliMUONTracker.h:77
 AliMUONTracker.h:78
 AliMUONTracker.h:79
 AliMUONTracker.h:80
 AliMUONTracker.h:81
 AliMUONTracker.h:82
 AliMUONTracker.h:83
 AliMUONTracker.h:84
 AliMUONTracker.h:85
 AliMUONTracker.h:86
 AliMUONTracker.h:87
 AliMUONTracker.h:88
 AliMUONTracker.h:89
 AliMUONTracker.h:90
 AliMUONTracker.h:91
 AliMUONTracker.h:92
 AliMUONTracker.h:93
 AliMUONTracker.h:94