]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONTrackReconstructor.h
- Reshape the architecture of the Kalman tracking to make it more modular
[u/mrichter/AliRoot.git] / MUON / AliMUONTrackReconstructor.h
index 1f5f381a3455fc698d9f00233b82585e746a0944..e6331748bc19b41bfa3a4ce3b89cc0ceb1e74245 100644 (file)
 
 #include "AliMUONVTrackReconstructor.h"
 
+class AliMUONHitForRec;
+class AliMUONTrackParam;
 class AliMUONTrack;
 
-class AliMUONTrackReconstructor : public AliMUONVTrackReconstructor {
-
+class AliMUONTrackReconstructor : public AliMUONVTrackReconstructor 
+{
  public:
-  AliMUONTrackReconstructor(AliMUONData* data); // default Constructor
+  
+  AliMUONTrackReconstructor(); // default Constructor
   virtual ~AliMUONTrackReconstructor(); // Destructor
 
-  virtual void EventDump(void);  // dump reconstructed event
-
 
  protected:
 
   // Functions
-  virtual void AddHitsForRecFromRawClusters();
-  virtual void MakeTracks(void);
-  virtual void MakeTrackCandidates(void);
-  virtual void FollowTracks(void);
-  virtual void RemoveDoubleTracks(void);
-  virtual void FillMUONTrack(void);
+  virtual void MakeTrackCandidates();
+  virtual void FollowTracks();
+  virtual void ImproveTracks();
+  virtual void Finalize();
   
 
  private:
   
-  // Parameters for reconstruction
-  static const Double_t fgkMaxNormChi2; ///< maximum Chi2 per degree of freedom for reconstruction
-  static const Bool_t fgkTrackAllTracks; ///< kTRUE to track all the possible candidates; kFALSE to track only the best ones
-
+  // Parameters for track reconstruction
+  static const Double_t fgkBendingVertexDispersion; ///< Vertex dispersion (cm) in bending plane for reconstruction
+  static const Double_t fgkNonBendingVertexDispersion; ///< Vertex dispersion (cm) in non bending plane for reconstruction
+  
+  
   // Functions
   /// Not implemented copy constructor
   AliMUONTrackReconstructor (const AliMUONTrackReconstructor& rhs); 
   /// Not implemented copy assignment operator
   AliMUONTrackReconstructor& operator=(const AliMUONTrackReconstructor& rhs);
   
-  void RemoveIdenticalTracks(void);
-  void FollowTrackInStation(AliMUONTrack* trackCandidate, Int_t nextStation);
-  void SetVertexForFit(AliMUONTrack* trackCandidate);
-  void Fit(AliMUONTrack *track, Bool_t includeMCS, Bool_t calcCov);
+  Bool_t FollowTrackInStation(AliMUONTrack &trackCandidate, Int_t nextStation);
+  
+  Double_t TryTwoHitForRec(const AliMUONTrackParam &trackParamAtHit1, AliMUONHitForRec* hitForRec2, AliMUONTrackParam &trackParamAtHit2);
+
+  void UpdateTrack(AliMUONTrack &track, AliMUONTrackParam &trackParamAtHit);
+  void UpdateTrack(AliMUONTrack &track, AliMUONTrackParam &trackParamAtHit1, AliMUONTrackParam &trackParamAtHit2);
+  
+  Bool_t RecoverTrack(AliMUONTrack &track, Int_t nextStation);
+  
+  void SetVertexForFit(AliMUONTrack &trackCandidate);
+  
+  void Fit(AliMUONTrack &track, Bool_t includeMCS, Bool_t calcCov);
 
 
   ClassDef(AliMUONTrackReconstructor, 0) // MUON track reconstructor in ALICE
-    };
+};
        
 #endif