ROOT logo
#ifndef ALIMUONTRACKRECONSTRUCTOR_H
#define ALIMUONTRACKRECONSTRUCTOR_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */

/// \ingroup rec
/// \class AliMUONTrackReconstructor
/// \brief Standard class for the MUON track reconstruction

#include "AliMUONVTrackReconstructor.h"

class AliMUONVCluster;
class AliMUONVClusterStore;
class AliMUONTrackParam;
class AliMUONTrack;
class AliMUONGeometryTransformer;

class AliMUONTrackReconstructor : public AliMUONVTrackReconstructor 
{
 
 public:
  
  AliMUONTrackReconstructor(const AliMUONRecoParam* recoParam, AliMUONVClusterServer* clusterServer,
			    const AliMUONGeometryTransformer* transformer); // default Constructor
  virtual ~AliMUONTrackReconstructor(); // Destructor

  virtual Bool_t RefitTrack(AliMUONTrack &track, Bool_t enableImprovement = kTRUE);


 protected:

  // Functions
  virtual Bool_t MakeTrackCandidates(AliMUONVClusterStore& clusterStore);
  virtual Bool_t MakeMoreTrackCandidates(AliMUONVClusterStore& clusterStore);
  virtual Bool_t FollowTracks(AliMUONVClusterStore& clusterStore);
  virtual Bool_t ComplementTracks(const AliMUONVClusterStore& clusterStore);
  virtual void   ImproveTrack(AliMUONTrack &track);
  virtual Bool_t FinalizeTrack(AliMUONTrack &track);
  

 private:
  
  /// Not implemented copy constructor
  AliMUONTrackReconstructor (const AliMUONTrackReconstructor& rhs); 
  /// Not implemented copy assignment operator
  AliMUONTrackReconstructor& operator=(const AliMUONTrackReconstructor& rhs);
  
  Bool_t FollowTrackInChamber(AliMUONTrack &trackCandidate, AliMUONVClusterStore& clusterStore, Int_t nextChamber);
  Bool_t FollowTrackInStation(AliMUONTrack &trackCandidate, AliMUONVClusterStore& clusterStore, Int_t nextStation);
  
  Double_t TryTwoClusters(const AliMUONTrackParam &trackParamAtCluster, AliMUONVCluster* cluster2, AliMUONTrackParam &trackParamAtCluster2);

  void UpdateTrack(AliMUONTrack &track, AliMUONTrackParam &trackParamAtCluster);
  void UpdateTrack(AliMUONTrack &track, AliMUONTrackParam &trackParamAtCluster1, AliMUONTrackParam &trackParamAtCluster2);
  
  Bool_t RecoverTrack(AliMUONTrack &track, AliMUONVClusterStore& clusterStore, Int_t nextStation);
  
  void SetVertexErrXY2ForFit(AliMUONTrack &trackCandidate);
  
  void Fit(AliMUONTrack &track, Bool_t includeMCS, Bool_t fitWithVertex, Bool_t calcCov);


  ClassDef(AliMUONTrackReconstructor, 0) // MUON track reconstructor in ALICE
};
	
#endif
 AliMUONTrackReconstructor.h:1
 AliMUONTrackReconstructor.h:2
 AliMUONTrackReconstructor.h:3
 AliMUONTrackReconstructor.h:4
 AliMUONTrackReconstructor.h:5
 AliMUONTrackReconstructor.h:6
 AliMUONTrackReconstructor.h:7
 AliMUONTrackReconstructor.h:8
 AliMUONTrackReconstructor.h:9
 AliMUONTrackReconstructor.h:10
 AliMUONTrackReconstructor.h:11
 AliMUONTrackReconstructor.h:12
 AliMUONTrackReconstructor.h:13
 AliMUONTrackReconstructor.h:14
 AliMUONTrackReconstructor.h:15
 AliMUONTrackReconstructor.h:16
 AliMUONTrackReconstructor.h:17
 AliMUONTrackReconstructor.h:18
 AliMUONTrackReconstructor.h:19
 AliMUONTrackReconstructor.h:20
 AliMUONTrackReconstructor.h:21
 AliMUONTrackReconstructor.h:22
 AliMUONTrackReconstructor.h:23
 AliMUONTrackReconstructor.h:24
 AliMUONTrackReconstructor.h:25
 AliMUONTrackReconstructor.h:26
 AliMUONTrackReconstructor.h:27
 AliMUONTrackReconstructor.h:28
 AliMUONTrackReconstructor.h:29
 AliMUONTrackReconstructor.h:30
 AliMUONTrackReconstructor.h:31
 AliMUONTrackReconstructor.h:32
 AliMUONTrackReconstructor.h:33
 AliMUONTrackReconstructor.h:34
 AliMUONTrackReconstructor.h:35
 AliMUONTrackReconstructor.h:36
 AliMUONTrackReconstructor.h:37
 AliMUONTrackReconstructor.h:38
 AliMUONTrackReconstructor.h:39
 AliMUONTrackReconstructor.h:40
 AliMUONTrackReconstructor.h:41
 AliMUONTrackReconstructor.h:42
 AliMUONTrackReconstructor.h:43
 AliMUONTrackReconstructor.h:44
 AliMUONTrackReconstructor.h:45
 AliMUONTrackReconstructor.h:46
 AliMUONTrackReconstructor.h:47
 AliMUONTrackReconstructor.h:48
 AliMUONTrackReconstructor.h:49
 AliMUONTrackReconstructor.h:50
 AliMUONTrackReconstructor.h:51
 AliMUONTrackReconstructor.h:52
 AliMUONTrackReconstructor.h:53
 AliMUONTrackReconstructor.h:54
 AliMUONTrackReconstructor.h:55
 AliMUONTrackReconstructor.h:56
 AliMUONTrackReconstructor.h:57
 AliMUONTrackReconstructor.h:58
 AliMUONTrackReconstructor.h:59
 AliMUONTrackReconstructor.h:60
 AliMUONTrackReconstructor.h:61
 AliMUONTrackReconstructor.h:62
 AliMUONTrackReconstructor.h:63
 AliMUONTrackReconstructor.h:64
 AliMUONTrackReconstructor.h:65
 AliMUONTrackReconstructor.h:66
 AliMUONTrackReconstructor.h:67
 AliMUONTrackReconstructor.h:68