]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/AliTrackPointArray.h
Updating CMake files
[u/mrichter/AliRoot.git] / STEER / AliTrackPointArray.h
CommitLineData
98937d93 1#ifndef ALITRACKPOINTARRAY_H
2#define ALITRACKPOINTARRAY_H
3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6//////////////////////////////////////////////////////////////////////////////
7// Class AliTrackPoint //
8// This class represent a single track space-point. //
9// It is used to access the points array defined in AliTrackPointArray. //
10// Note that the space point coordinates are given in the global frame. //
11// //
12// cvetan.cheshkov@cern.ch 3/11/2005 //
13//////////////////////////////////////////////////////////////////////////////
14
15#include <TObject.h>
ec9e17f9 16#include <TMatrixDSym.h>
98937d93 17
18class AliTrackPoint : public TObject {
19
20 public:
21 AliTrackPoint();
cb0800cc 22 AliTrackPoint(Float_t x, Float_t y, Float_t z, const Float_t *cov, UShort_t volid, Float_t charge = 0, Float_t drifttime = 0);
23 AliTrackPoint(const Float_t *xyz, const Float_t *cov, UShort_t volid, Float_t charge = 0, Float_t drifttime = 0);
98937d93 24 AliTrackPoint(const AliTrackPoint &p);
25 AliTrackPoint& operator= (const AliTrackPoint& p);
26 virtual ~AliTrackPoint() {}
27
28 // Multiplication with TGeoMatrix and distance between points (chi2) to be implemented
29
30 void SetXYZ(Float_t x, Float_t y, Float_t z, const Float_t *cov = 0);
31 void SetXYZ(const Float_t *xyz, const Float_t *cov = 0);
32 void SetVolumeID(UShort_t volid) { fVolumeID = volid; }
6d016ab4 33 void SetCharge(Float_t charge) { fCharge = charge; }
cb0800cc 34 void SetDriftTime(Float_t time) { fDriftTime = time; }
98937d93 35
36 Float_t GetX() const { return fX; }
37 Float_t GetY() const { return fY; }
38 Float_t GetZ() const { return fZ; }
39 void GetXYZ(Float_t *xyz, Float_t *cov = 0) const;
40 const Float_t *GetCov() const { return &fCov[0]; }
41 UShort_t GetVolumeID() const { return fVolumeID; }
6d016ab4 42 Float_t GetCharge() const { return fCharge; }
cb0800cc 43 Float_t GetDriftTime() const { return fDriftTime;}
98937d93 44
46ae650f 45 Float_t GetResidual(const AliTrackPoint &p, Bool_t weighted = kFALSE) const;
4dcdc747 46 Bool_t GetPCA(const AliTrackPoint &p, AliTrackPoint &out) const;
46ae650f 47
48 Float_t GetAngle() const;
ec9e17f9 49 void SetAlignCovMatrix(const TMatrixDSym alignparmtrx);
50
46ae650f 51 AliTrackPoint& Rotate(Float_t alpha) const;
52 AliTrackPoint& MasterToLocal() const;
53
54 void Print(Option_t *) const;
55
98937d93 56 private:
57
58 Float_t fX; // X coordinate
59 Float_t fY; // Y coordinate
60 Float_t fZ; // Z coordinate
6d016ab4 61 Float_t fCharge; // Cluster charge in arbitrary units
cb0800cc 62 Float_t fDriftTime;// Drift time in SDD (in ns)
98937d93 63 Float_t fCov[6]; // Cov matrix
64 UShort_t fVolumeID; // Volume ID
65
cb0800cc 66 ClassDef(AliTrackPoint,3)
98937d93 67};
68
69//////////////////////////////////////////////////////////////////////////////
70// Class AliTrackPointArray //
71// This class contains the ESD track space-points which are used during //
72// the alignment procedures. Each space-point consist of 3 coordinates //
73// (and their errors) and the index of the sub-detector which contains //
74// the space-point. //
75// cvetan.cheshkov@cern.ch 3/11/2005 //
76//////////////////////////////////////////////////////////////////////////////
77
78class AliTrackPointArray : public TObject {
79
80 public:
81
82 AliTrackPointArray();
83 AliTrackPointArray(Int_t npoints);
84 AliTrackPointArray(const AliTrackPointArray &array);
85 AliTrackPointArray& operator= (const AliTrackPointArray& array);
86 virtual ~AliTrackPointArray();
87
88 // Bool_t AddPoint(Int_t i, AliCluster *cl, UShort_t volid);
89 Bool_t AddPoint(Int_t i, const AliTrackPoint *p);
90
91 Int_t GetNPoints() const { return fNPoints; }
92 Int_t GetCovSize() const { return fSize; }
93 Bool_t GetPoint(AliTrackPoint &p, Int_t i) const;
94 // Getters for fast access to the coordinate arrays
95 const Float_t* GetX() const { return &fX[0]; }
96 const Float_t* GetY() const { return &fY[0]; }
97 const Float_t* GetZ() const { return &fZ[0]; }
6d016ab4 98 const Float_t* GetCharge() const { return &fCharge[0]; }
cb0800cc 99 const Float_t* GetDriftTime() const { return &fDriftTime[0]; }
98937d93 100 const Float_t* GetCov() const { return &fCov[0]; }
101 const UShort_t* GetVolumeID() const { return &fVolumeID[0]; }
102
103 Bool_t HasVolumeID(UShort_t volid) const;
46ae650f 104
bead9796 105 void Sort(Bool_t down=kTRUE);
106
98937d93 107 private:
bead9796 108 Bool_t fSorted; // Sorted flag
98937d93 109
110 Int_t fNPoints; // Number of space points
111 Float_t *fX; //[fNPoints] Array with space point X coordinates
112 Float_t *fY; //[fNPoints] Array with space point Y coordinates
113 Float_t *fZ; //[fNPoints] Array with space point Z coordinates
6d016ab4 114 Float_t *fCharge; //[fNPoints] Array with clusters charge
cb0800cc 115 Float_t *fDriftTime; //[fNPoints] Array with drift times
98937d93 116 Int_t fSize; // Size of array with cov matrices = 6*N of points
117 Float_t *fCov; //[fSize] Array with space point coordinates cov matrix
118 UShort_t *fVolumeID; //[fNPoints] Array of space point volume IDs
119
705e6186 120 ClassDef(AliTrackPointArray,4)
98937d93 121};
122
123#endif