ROOT logo
#ifndef ALITRACKERBASE_H
#define ALITRACKERBASE_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id: AliTrackerBase.h 38069 2009-12-24 16:56:18Z belikov $ */

//-------------------------------------------------------------------------
//                          class AliTrackerBase
//        This is the base tracker class, independent on STEER 
//                      Origin: Marian.Ivanov@cern.ch
//-------------------------------------------------------------------------

#include <TObject.h>
#include <TGeoGlobalMagField.h>

#include "AliMagF.h"

class AliExternalTrackParam;
class AliTrackPoint;
class AliTrackPointArray;

class AliTrackerBase : public TObject {
public:
  AliTrackerBase();
  virtual ~AliTrackerBase(){}

  void SetVertex(const Double_t *xyz, const Double_t *ers=0) { 
     fX=xyz[0]; fY=xyz[1]; fZ=xyz[2];
     if (ers) { fSigmaX=ers[0]; fSigmaY=ers[1]; fSigmaZ=ers[2]; } 
  }
  Double_t GetX() const {return fX;}
  Double_t GetY() const {return fY;}
  Double_t GetZ() const {return fZ;}
  Double_t GetSigmaX() const {return fSigmaX;}
  Double_t GetSigmaY() const {return fSigmaY;}
  Double_t GetSigmaZ() const {return fSigmaZ;}

  static Double_t GetTrackPredictedChi2(AliExternalTrackParam *track,
                                        Double_t mass, Double_t step, 
			          const AliExternalTrackParam *backup);
  static void UpdateTrack(AliExternalTrackParam&, 
                          const AliExternalTrackParam&);
  static 
  Double_t MeanMaterialBudget(const Double_t *start, const Double_t *end, 
  Double_t *mparam);
  static
  Bool_t PropagateTrackTo(AliExternalTrackParam *track, Double_t x, Double_t m,
                          Double_t maxStep, Bool_t rotateTo=kTRUE, Double_t maxSnp=0.8, Int_t sign=0, Bool_t addTimeStep=kFALSE, Bool_t correctMaterialBudget=kTRUE);
  static Int_t PropagateTrackTo2(AliExternalTrackParam *track, Double_t x, Double_t m,
                          Double_t maxStep, Bool_t rotateTo=kTRUE, Double_t maxSnp=0.8, Int_t sign=0, Bool_t addTimeStep=kFALSE, Bool_t correctMaterialBudget=kTRUE);
  static Bool_t PropagateTrackToBxByBz(AliExternalTrackParam *track, Double_t x, 
				       Double_t m,Double_t maxStep, Bool_t rotateTo=kTRUE, Double_t maxSnp=0.8,Int_t sign=0, Bool_t addTimeStep=kFALSE);  
  //
  static Double_t GetBz(const Double_t *r);
  static void GetBxByBz(const Double_t r[3], Double_t b[3]);
  static Double_t GetBz();
  static Bool_t UniformField();


  static Double_t MakeC(Double_t x1,Double_t y1,
                        Double_t x2,Double_t y2,
                        Double_t x3,Double_t y3);
  static Double_t MakeSnp(Double_t x1,Double_t y1,
                        Double_t x2,Double_t y2,
                        Double_t x3,Double_t y3);
  static Double_t MakeTgl(Double_t x1,Double_t y1,
                        Double_t x2,Double_t y2,
                        Double_t z1,Double_t z2);
  static Double_t MakeTgl(Double_t x1,Double_t y1,
                        Double_t x2,Double_t y2,
                        Double_t z1,Double_t z2,Double_t c);
  static AliExternalTrackParam *MakeSeed(AliTrackPoint &point0, 
                                         AliTrackPoint &point1, 
                                         AliTrackPoint &point2);
  static Double_t FitTrack(AliExternalTrackParam *trackParam, 
                           AliTrackPointArray *pointArray, 
                           Double_t mass, Double_t maxStep);  
  //

protected:
  AliTrackerBase(const AliTrackerBase &atr);
private:
  AliTrackerBase & operator=(const AliTrackerBase & atr);

  Double_t fX;  //X-coordinate of the primary vertex
  Double_t fY;  //Y-coordinate of the primary vertex
  Double_t fZ;  //Z-coordinate of the primary vertex
 
  Double_t fSigmaX; // error of the primary vertex position in X
  Double_t fSigmaY; // error of the primary vertex position in Y
  Double_t fSigmaZ; // error of the primary vertex position in Z
  
  ClassDef(AliTrackerBase,1) //base tracker
};

//__________________________________________________________________________
inline Bool_t AliTrackerBase::UniformField()
{
  AliMagF* fld = (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
  return fld ? fld->IsUniform():kTRUE;
}

#endif
 AliTrackerBase.h:1
 AliTrackerBase.h:2
 AliTrackerBase.h:3
 AliTrackerBase.h:4
 AliTrackerBase.h:5
 AliTrackerBase.h:6
 AliTrackerBase.h:7
 AliTrackerBase.h:8
 AliTrackerBase.h:9
 AliTrackerBase.h:10
 AliTrackerBase.h:11
 AliTrackerBase.h:12
 AliTrackerBase.h:13
 AliTrackerBase.h:14
 AliTrackerBase.h:15
 AliTrackerBase.h:16
 AliTrackerBase.h:17
 AliTrackerBase.h:18
 AliTrackerBase.h:19
 AliTrackerBase.h:20
 AliTrackerBase.h:21
 AliTrackerBase.h:22
 AliTrackerBase.h:23
 AliTrackerBase.h:24
 AliTrackerBase.h:25
 AliTrackerBase.h:26
 AliTrackerBase.h:27
 AliTrackerBase.h:28
 AliTrackerBase.h:29
 AliTrackerBase.h:30
 AliTrackerBase.h:31
 AliTrackerBase.h:32
 AliTrackerBase.h:33
 AliTrackerBase.h:34
 AliTrackerBase.h:35
 AliTrackerBase.h:36
 AliTrackerBase.h:37
 AliTrackerBase.h:38
 AliTrackerBase.h:39
 AliTrackerBase.h:40
 AliTrackerBase.h:41
 AliTrackerBase.h:42
 AliTrackerBase.h:43
 AliTrackerBase.h:44
 AliTrackerBase.h:45
 AliTrackerBase.h:46
 AliTrackerBase.h:47
 AliTrackerBase.h:48
 AliTrackerBase.h:49
 AliTrackerBase.h:50
 AliTrackerBase.h:51
 AliTrackerBase.h:52
 AliTrackerBase.h:53
 AliTrackerBase.h:54
 AliTrackerBase.h:55
 AliTrackerBase.h:56
 AliTrackerBase.h:57
 AliTrackerBase.h:58
 AliTrackerBase.h:59
 AliTrackerBase.h:60
 AliTrackerBase.h:61
 AliTrackerBase.h:62
 AliTrackerBase.h:63
 AliTrackerBase.h:64
 AliTrackerBase.h:65
 AliTrackerBase.h:66
 AliTrackerBase.h:67
 AliTrackerBase.h:68
 AliTrackerBase.h:69
 AliTrackerBase.h:70
 AliTrackerBase.h:71
 AliTrackerBase.h:72
 AliTrackerBase.h:73
 AliTrackerBase.h:74
 AliTrackerBase.h:75
 AliTrackerBase.h:76
 AliTrackerBase.h:77
 AliTrackerBase.h:78
 AliTrackerBase.h:79
 AliTrackerBase.h:80
 AliTrackerBase.h:81
 AliTrackerBase.h:82
 AliTrackerBase.h:83
 AliTrackerBase.h:84
 AliTrackerBase.h:85
 AliTrackerBase.h:86
 AliTrackerBase.h:87
 AliTrackerBase.h:88
 AliTrackerBase.h:89
 AliTrackerBase.h:90
 AliTrackerBase.h:91
 AliTrackerBase.h:92
 AliTrackerBase.h:93
 AliTrackerBase.h:94
 AliTrackerBase.h:95
 AliTrackerBase.h:96
 AliTrackerBase.h:97
 AliTrackerBase.h:98
 AliTrackerBase.h:99
 AliTrackerBase.h:100
 AliTrackerBase.h:101
 AliTrackerBase.h:102
 AliTrackerBase.h:103
 AliTrackerBase.h:104