]> 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 da692bfce4141b8437b7396132cb0e4e4b6a5d64..e6331748bc19b41bfa3a4ce3b89cc0ceb1e74245 100644 (file)
@@ -5,36 +5,62 @@
 
 /* $Id$ */
 
-#include <TObject.h>
+/// \ingroup rec
+/// \class AliMUONTrackReconstructor
+/// \brief Standard class for the MUON track reconstruction
 
-class AliMUONTrackReconstructor : public TObject {
+#include "AliMUONVTrackReconstructor.h"
+
+class AliMUONHitForRec;
+class AliMUONTrackParam;
+class AliMUONTrack;
+
+class AliMUONTrackReconstructor : public AliMUONVTrackReconstructor 
+{
  public:
-    //
-    // Track Reconstruction
-    AliMUONTrackReconstructor();
-    virtual       ~AliMUONTrackReconstructor(){;}
-    void     Init(Double_t &, Double_t &, Double_t &);
-    void     Reconst(Int_t &,Int_t &,Int_t,Int_t &,Int_t&,Int_t&, Option_t *option,Text_t *filename);
-    void     Reconst2(Int_t &,Int_t &,Int_t &);
-    void     FinishEvent();
-    void     Close();
-    void     SetCutPxz(Double_t p) {fSPxzCut=p;}
-    void     SetSigmaCut(Double_t p) {fSSigmaCut=p;}
-    void     SetXPrec(Double_t p) {fSXPrec=p;}
-    void     SetYPrec(Double_t p) {fSYPrec=p;}
-    Double_t GetCutPxz() {return fSPxzCut;}
-    Double_t GetSigmaCut() {return fSSigmaCut;}
-    Double_t GetXPrec() {return fSXPrec;}
-    Double_t GetYPrec() {return fSYPrec;}
+  
+  AliMUONTrackReconstructor(); // default Constructor
+  virtual ~AliMUONTrackReconstructor(); // Destructor
+
+
+ protected:
+
+  // Functions
+  virtual void MakeTrackCandidates();
+  virtual void FollowTracks();
+  virtual void ImproveTracks();
+  virtual void Finalize();
+  
+
  private:
-//  Parameters for reconstruction program
-    Double_t fSPxzCut;        // Pxz cut  (GeV/c) to begin the track finding
-    Double_t fSSigmaCut;      // Number of sig. delimiting the searching areas
-    Double_t fSXPrec;         // Chamber precision in X (cm) 
-    Double_t fSYPrec;         // Chamber precision in Y (cm)
-    Text_t *fFileName;        //! ?????????
-    ClassDef(AliMUONTrackReconstructor,1)  // Interface to muon tracking code
-       };
-       
+  
+  // 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);
+  
+  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