Processing SPD Mean Vertex only in PHYSICS runs.
[u/mrichter/AliRoot.git] / STEER / AliTrackResiduals.h
1 #ifndef ALITRACKRESIDUALS_H
2 #define ALITRACKRESIDUALS_H
3
4 //************************************************************************
5 // AliTrackResiduals: base class for collecting the track space point    *
6 // residuals produced by the fast track fitters (AliTrackFitter class).  *
7 // It provides an interface to the arrays which contain the space points *
8 // and track extrapolation points within the detector volume to be       *
9 // aligned. The derived classes should implement method to analyze the   *
10 // track residuals and minimize their sum in order to get the            *
11 // AliAlignObj for the given detector volume.                            *
12 //************************************************************************
13
14 #include "TObject.h"
15
16 #include "AliAlignObjParams.h"
17
18 class AliTrackPointArray;
19
20 class AliTrackResiduals : public TObject {
21
22  public:
23
24   AliTrackResiduals();
25   AliTrackResiduals(Int_t ntracks);
26   AliTrackResiduals(const AliTrackResiduals &res);
27   AliTrackResiduals& operator= (const AliTrackResiduals& res);
28   virtual ~AliTrackResiduals();
29
30   void   SetNTracks(Int_t ntracks);
31   Bool_t AddTrackPointArrays(AliTrackPointArray *volarray, AliTrackPointArray *trackarray);
32   void   InitAlignObj();
33   void   SetMinNPoints(Int_t n) { fMinNPoints = n; }
34
35   virtual Bool_t Minimize() = 0;
36
37   Int_t  GetNTracks() const { return fN; }
38   Int_t  GetNFilledTracks() const { return fLast; }
39   Bool_t GetTrackPointArrays(Int_t i, AliTrackPointArray* &volarray, AliTrackPointArray* &trackarray) const;
40   AliAlignObj *GetAlignObj() const { return fAlignObj; }
41   Float_t GetChi2() const { return fChi2; }
42   Int_t   GetNdf() const  { return fNdf; }
43   Int_t   GetMinNPoints() const  { return fMinNPoints; }
44   void    FixParameter(Int_t par,Float_t value=0.) {fBFixed[par]=kTRUE; fFixed[par]= value;}
45   Int_t GetNFreeParam();
46   void   ReleaseParameter(Int_t par) {fBFixed[par]=kFALSE;}
47
48  protected:
49
50   void DeleteTrackPointArrays();
51
52   Int_t              fN;            // Number of tracks
53   Int_t              fLast;         // Index of the last filled track arrays
54   AliAlignObj        *fAlignObj;    // Pointer to the volume alignment object to be fitted
55   AliTrackPointArray **fVolArray;   //! Pointers to the arrays containing space points
56   AliTrackPointArray **fTrackArray; //! Pointers to the arrays containing track extrapolation points
57   Float_t            fChi2;         // Chi2 (or distance) of residuals minimization
58   Int_t              fNdf;          // Number of degrees of freedom
59   Int_t              fMinNPoints;   // Minimum allowed Number of points in the volume which is to be aligned
60   Bool_t             fIsOwner;      // Track point arrays owned by the object
61   Float_t            fFixed[6];     // The fixed values of parameters 
62   Bool_t            fBFixed[6];    // The flag for fixing parameter
63
64   ClassDef(AliTrackResiduals,2)
65
66 };
67
68 #endif