]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONTrackReconstructor.h
New option to discard mono-cathod clusters (by changing their resolution) and refit...
[u/mrichter/AliRoot.git] / MUON / AliMUONTrackReconstructor.h
index 7f7608cbc0b9570794fe956fcf2a070d165a380e..d3c62150e97563881dd4f38ce64bc5ac6f625945 100644 (file)
@@ -5,36 +5,64 @@
 
 /* $Id$ */
 
-#include <TObject.h>
+/// \ingroup rec
+/// \class AliMUONTrackReconstructor
+/// \brief Standard class for the MUON track reconstruction
 
-class AliMUONTrackReconstructor : public TObject {
+#include "AliMUONVTrackReconstructor.h"
+
+class AliMUONVCluster;
+class AliMUONVClusterStore;
+class AliMUONTrackParam;
+class AliMUONTrack;
+class AliMUONGeometryTransformer;
+
+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(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:
-//  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
-       };
-       
+  
+  /// 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