Update from Alberica. Addition of VZERO equalized signals and ZNC.
[u/mrichter/AliRoot.git] / MUON / AliMUONTrackReconstructorK.h
1 #ifndef ALIMUONTRACKRECONSTRUCTORK_H
2 #define ALIMUONTRACKRECONSTRUCTORK_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 AliMUONTrackReconstructorK
10 /// \brief Class for the MUON track reconstruction using kalman filter
11
12 #include "AliMUONVTrackReconstructor.h"
13
14 class AliMUONVClusterStore;
15 class AliMUONTrack;
16 class AliMUONTrackParam;
17 class AliMUONGeometryTransformer;
18
19 class AliMUONTrackReconstructorK : public AliMUONVTrackReconstructor 
20 {
21
22  public:
23   
24   AliMUONTrackReconstructorK(const AliMUONRecoParam* recoParam, AliMUONVClusterServer* clusterServer,
25                              const AliMUONGeometryTransformer* transformer); // default Constructor
26   virtual ~AliMUONTrackReconstructorK(); // Destructor
27   
28   virtual Bool_t RefitTrack(AliMUONTrack &track, Bool_t enableImprovement = kTRUE);
29
30
31  protected:
32
33   // Functions
34   virtual Bool_t MakeTrackCandidates(AliMUONVClusterStore& clusterStore);
35   virtual Bool_t MakeMoreTrackCandidates(AliMUONVClusterStore& clusterStore);
36   virtual Bool_t FollowTracks(AliMUONVClusterStore& clusterStore);
37   virtual Bool_t ComplementTracks(const AliMUONVClusterStore& clusterStore);
38   virtual void   ImproveTrack(AliMUONTrack &track);
39   virtual Bool_t FinalizeTrack(AliMUONTrack &track);
40   
41
42  private:
43   
44   /// Not implemented copy constructor
45   AliMUONTrackReconstructorK (const AliMUONTrackReconstructorK& rhs); 
46   /// Not implemented copy assignment operator
47   AliMUONTrackReconstructorK& operator=(const AliMUONTrackReconstructorK& rhs);
48   
49   Bool_t RetraceTrack(AliMUONTrack &trackCandidate, Bool_t resetSeed);
50   Bool_t RetracePartialTrack(AliMUONTrack &trackCandidate, const AliMUONTrackParam* startingTrackParam);
51   
52   Bool_t FollowTrackInChamber(AliMUONTrack &trackCandidate, AliMUONVClusterStore& clusterStore, Int_t nextChamber);
53   Bool_t FollowTrackInStation(AliMUONTrack &trackCandidate, AliMUONVClusterStore& clusterStore, Int_t nextStation);
54   
55   Double_t RunKalmanFilter(AliMUONTrackParam &trackParamAtCluster);
56
57   void UpdateTrack(AliMUONTrack &track, AliMUONTrackParam &trackParamAtCluster, Double_t addChi2);
58   void UpdateTrack(AliMUONTrack &track, AliMUONTrackParam &trackParamAtCluster1, AliMUONTrackParam &trackParamAtCluster2,
59                    Double_t addChi2AtCluster1, Double_t addChi2AtCluster2);
60   
61   Bool_t RecoverTrack(AliMUONTrack &track, AliMUONVClusterStore& clusterStore, Int_t nextStation);
62   
63   Bool_t RunSmoother(AliMUONTrack &track);
64
65
66   ClassDef(AliMUONTrackReconstructorK, 0) // MUON track reconstructor in ALICE
67 };
68         
69 #endif