New option to discard mono-cathod clusters (by changing their resolution) and refit...
[u/mrichter/AliRoot.git] / MUON / AliMUONTrackReconstructor.h
1 #ifndef ALIMUONTRACKRECONSTRUCTOR_H
2 #define ALIMUONTRACKRECONSTRUCTOR_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 AliMUONTrackReconstructor
10 /// \brief Standard class for the MUON track reconstruction
11
12 #include "AliMUONVTrackReconstructor.h"
13
14 class AliMUONVCluster;
15 class AliMUONVClusterStore;
16 class AliMUONTrackParam;
17 class AliMUONTrack;
18 class AliMUONGeometryTransformer;
19
20 class AliMUONTrackReconstructor : public AliMUONVTrackReconstructor 
21 {
22  
23  public:
24   
25   AliMUONTrackReconstructor(const AliMUONRecoParam* recoParam, AliMUONVClusterServer* clusterServer,
26                             const AliMUONGeometryTransformer* transformer); // default Constructor
27   virtual ~AliMUONTrackReconstructor(); // Destructor
28
29   virtual Bool_t RefitTrack(AliMUONTrack &track, Bool_t enableImprovement = kTRUE);
30
31
32  protected:
33
34   // Functions
35   virtual Bool_t MakeTrackCandidates(AliMUONVClusterStore& clusterStore);
36   virtual Bool_t MakeMoreTrackCandidates(AliMUONVClusterStore& clusterStore);
37   virtual Bool_t FollowTracks(AliMUONVClusterStore& clusterStore);
38   virtual Bool_t ComplementTracks(const AliMUONVClusterStore& clusterStore);
39   virtual void   ImproveTrack(AliMUONTrack &track);
40   virtual Bool_t FinalizeTrack(AliMUONTrack &track);
41   
42
43  private:
44   
45   /// Not implemented copy constructor
46   AliMUONTrackReconstructor (const AliMUONTrackReconstructor& rhs); 
47   /// Not implemented copy assignment operator
48   AliMUONTrackReconstructor& operator=(const AliMUONTrackReconstructor& rhs);
49   
50   Bool_t FollowTrackInChamber(AliMUONTrack &trackCandidate, AliMUONVClusterStore& clusterStore, Int_t nextChamber);
51   Bool_t FollowTrackInStation(AliMUONTrack &trackCandidate, AliMUONVClusterStore& clusterStore, Int_t nextStation);
52   
53   Double_t TryTwoClusters(const AliMUONTrackParam &trackParamAtCluster, AliMUONVCluster* cluster2, AliMUONTrackParam &trackParamAtCluster2);
54
55   void UpdateTrack(AliMUONTrack &track, AliMUONTrackParam &trackParamAtCluster);
56   void UpdateTrack(AliMUONTrack &track, AliMUONTrackParam &trackParamAtCluster1, AliMUONTrackParam &trackParamAtCluster2);
57   
58   Bool_t RecoverTrack(AliMUONTrack &track, AliMUONVClusterStore& clusterStore, Int_t nextStation);
59   
60   void SetVertexErrXY2ForFit(AliMUONTrack &trackCandidate);
61   
62   void Fit(AliMUONTrack &track, Bool_t includeMCS, Bool_t fitWithVertex, Bool_t calcCov);
63
64
65   ClassDef(AliMUONTrackReconstructor, 0) // MUON track reconstructor in ALICE
66 };
67         
68 #endif