+ Modifications of the standard tracking algorithm:
[u/mrichter/AliRoot.git] / MUON / AliMUONVTrackReconstructor.h
index 2fd0f78..58ed418 100644 (file)
@@ -33,8 +33,6 @@ class AliMUONVTrackReconstructor : public TObject {
   Double_t GetBendingResolution(void) const {return fBendingResolution;}
            /// Return chamber resolution (cm) in non-bending plane
   Double_t GetNonBendingResolution(void) const {return fNonBendingResolution;}
-           /// Return chamber thickness in number of radiation lengths
-  Double_t GetChamberThicknessInX0(void) const {return fChamberThicknessInX0;}
 
   // Reconstructed tracks
            /// Return number of reconstructed tracks
@@ -50,10 +48,6 @@ class AliMUONVTrackReconstructor : public TObject {
   virtual void EventDump(void) = 0;  // dump reconstructed event
   void EventDumpTrigger(void);  // dump reconstructed trigger event
   
-  // needed in MakeSegmentsPerStation !!!
-  Double_t GetImpactParamFromBendingMomentum(Double_t BendingMomentum) const;
-  Double_t GetBendingMomentumFromImpactParam(Double_t ImpactParam) const;
-  
           /// Return MUON data
   AliMUONData*  GetMUONData() {return fMUONData;}
 
@@ -68,42 +62,27 @@ class AliMUONVTrackReconstructor : public TObject {
   static const Double_t fgkDefaultMaxBendingMomentum; ///< default max. bending momentum for reconstruction
   static const Double_t fgkDefaultBendingResolution; ///< default bending coordinate resolution for reconstruction 
   static const Double_t fgkDefaultNonBendingResolution; ///< default non bending coordinate resolution for reconstruction
-  static const Double_t fgkDefaultMaxSigma2Distance; ///< default square of max. distance for window size 
-  // Simple magnetic field:
-  // Value taken from macro MUONtracking.C: 0.7 T, hence 7 kG
-  // Length and Position from reco_muon.F, with opposite sign:
-  // Length = ZMAGEND-ZCOIL
-  // Position = (ZMAGEND+ZCOIL)/2
-  // to be ajusted differently from real magnetic field ????
-  static const Double_t fgkDefaultSimpleBValue; ///< default value of magnetic field (dipole)
-  static const Double_t fgkDefaultSimpleBLength; ///< default length of magnetic field (dipole)
-  static const Double_t fgkDefaultSimpleBPosition; ///< default position of magnetic field (dipole)
+  static const Double_t fgkDefaultBendingVertexDispersion; ///< default vertex dispersion in bending plane for reconstruction
+  static const Double_t fgkDefaultNonBendingVertexDispersion; ///< default vertex dispersion in non bending plane for reconstruction
+  static const Double_t fgkDefaultMaxNormChi2MatchTrigger; ///< default maximum normalized chi2 of tracking/trigger track matching
   
   // Parameters for track reconstruction
   Double_t fMinBendingMomentum; ///< minimum value (GeV/c) of momentum in bending plane
   Double_t fMaxBendingMomentum; ///< maximum value (GeV/c) of momentum in bending plane
   Double_t fBendingResolution; ///< chamber resolution (cm) in bending plane
   Double_t fNonBendingResolution; ///< chamber resolution (cm) in non bending plane
-  Double_t fMaxSigma2Distance; ///< maximum square distance in units of the variance (maximum chi2)
-  Double_t fChamberThicknessInX0; ///< chamber thickness in number of radiation lengths
-  Double_t fSimpleBValue; ///< simple magnetic field: value (kG)
-  Double_t fSimpleBLength; ///< simple magnetic field: length (cm)
-  Double_t fSimpleBPosition; ///< simple magnetic field: Z central position (cm)
+  Double_t fBendingVertexDispersion; ///< vextex dispersion (cm) in bending plane
+  Double_t fNonBendingVertexDispersion; ///< vextex dispersion (cm) in non bending plane
+  Double_t fMaxNormChi2MatchTrigger; ///< maximum normalized chi2 of tracking/trigger track matching
   
   Double_t* fSegmentMaxDistBending; ///< maximum distance (cm) for segments in bending plane
   Double_t* fSegmentMaxDistNonBending; ///< maximum distance (cm) for segments in non bending plane
   
-  // Hits for reconstruction (should be in AliMUON ????)
   TClonesArray* fHitsForRecPtr; ///< pointer to the array of hits for reconstruction
   Int_t fNHitsForRec; ///< number of hits for reconstruction
-  // Information per chamber (should be in AliMUONChamber ????)
   Int_t* fNHitsForRecPerChamber; ///< number of HitsForRec
   Int_t* fIndexOfFirstHitForRecPerChamber; ///< index (0...) of first HitForRec
 
-  // Segments inside a station
-  TClonesArray** fSegmentsPtr; ///< array of pointers to the segments for each station
-  Int_t* fNSegments; ///< number of segments for each station
-
   // Reconstructed tracks
   TClonesArray *fRecTracksPtr; ///< pointer to array of reconstructed tracks
   Int_t fNRecTracks; ///< number of reconstructed tracks
@@ -116,14 +95,15 @@ class AliMUONVTrackReconstructor : public TObject {
   AliMUONVTrackReconstructor& operator=(const AliMUONVTrackReconstructor& rhs); ///< assignment operator
   
   void SortHitsForRecWithIncreasingChamber();
-  void MakeSegmentsPerStation(Int_t Station);
+  TClonesArray *MakeSegmentsInStation(Int_t station);
 
   virtual void AddHitsForRecFromRawClusters() = 0;
-  virtual void MakeSegments(void) = 0;
   virtual void MakeTracks(void) = 0;
   virtual void MakeTrackCandidates(void) = 0;
   virtual void FollowTracks(void) = 0;
   virtual void RemoveDoubleTracks(void) = 0;
+  virtual void ExtrapTracksToVertex(void) = 0;
+  virtual void FillMUONTrack(void) = 0;
 
  private:
   
@@ -135,7 +115,6 @@ class AliMUONVTrackReconstructor : public TObject {
   void SetReconstructionParametersToDefaults(void);
   
   void ResetTracks(void);
-  void ResetSegments(void);
   void ResetHitsForRec(void);
   
   void ValidateTracksWithTrigger(void);
@@ -144,6 +123,6 @@ class AliMUONVTrackReconstructor : public TObject {
 
 
   ClassDef(AliMUONVTrackReconstructor, 0) // MUON track reconstructor in ALICE
-    };
+};
        
 #endif