LCOV - code coverage report
Current view: top level - STEER/ESD - AliTrackPointArray.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 19 31 61.3 %
Date: 2016-06-14 17:26:59 Functions: 22 41 53.7 %

          Line data    Source code
       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>
      16             : #include <TMatrixDSym.h>
      17             : #include "Rtypes.h"
      18             : 
      19             : class TGeoRotation;
      20             : 
      21             : class AliTrackPoint : public TObject {
      22             : 
      23             :  public:
      24             : 
      25             :   AliTrackPoint();
      26             :   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,Float_t chargeratio = 0, Int_t clutype = 0);
      27             :   AliTrackPoint(const Float_t *xyz, const Float_t *cov, UShort_t volid, Float_t charge = 0, Float_t drifttime = 0,Float_t chargeratio = 0, Int_t clutype=0);
      28             :   AliTrackPoint(const AliTrackPoint &p);
      29             :   AliTrackPoint& operator= (const AliTrackPoint& p);
      30         880 :   virtual ~AliTrackPoint() {}
      31             : 
      32             :   // Multiplication with TGeoMatrix and distance between points (chi2) to be implemented
      33             : 
      34             :   void     SetXYZ(Float_t x, Float_t y, Float_t z, const Float_t *cov = 0);
      35             :   void     SetXYZ(const Float_t *xyz, const Float_t *cov = 0);
      36             :   void     SetCov(const Float_t *cov);
      37       17760 :   void     SetVolumeID(UShort_t volid) { fVolumeID = volid; }
      38         606 :   void     SetCharge(Float_t charge) { fCharge = charge; }
      39         606 :   void     SetDriftTime(Float_t time) { fDriftTime = time; }
      40         606 :   void     SetChargeRatio(Float_t ratio) {  fChargeRatio= ratio; }
      41         606 :   void     SetClusterType(Int_t clutype) {  fClusterType= clutype; }
      42          34 :   void     SetExtra(Bool_t flag=kTRUE) { fIsExtra = flag; }
      43             : 
      44       17696 :   Float_t  GetX() const { return fX; }
      45       17696 :   Float_t  GetY() const { return fY; }
      46       17696 :   Float_t  GetZ() const { return fZ; }
      47             :   void     GetXYZ(Float_t *xyz, Float_t *cov = 0) const;
      48       17744 :   const Float_t *GetCov() const { return &fCov[0]; }
      49       17688 :   UShort_t GetVolumeID() const { return fVolumeID; }
      50       17664 :   Float_t  GetCharge() const { return fCharge; }
      51       17664 :   Float_t  GetDriftTime() const { return fDriftTime;}
      52       17664 :   Float_t  GetChargeRatio() const { return fChargeRatio;}
      53       17664 :   Int_t    GetClusterType() const { return fClusterType;}
      54       17664 :   Bool_t   IsExtra() const { return fIsExtra;}
      55             : 
      56             :   Float_t  GetResidual(const AliTrackPoint &p, Bool_t weighted = kFALSE) const;
      57             :   Bool_t   GetPCA(const AliTrackPoint &p, AliTrackPoint &out) const;
      58             : 
      59             :   Float_t  GetAngle() const;
      60             :   Bool_t   GetRotMatrix(TGeoRotation& rot) const;
      61             :   void SetAlignCovMatrix(const TMatrixDSym& alignparmtrx);
      62             : 
      63             :   AliTrackPoint& Rotate(Float_t alpha) const;
      64             :   AliTrackPoint& MasterToLocal() const;
      65             : 
      66             :   void     Print(Option_t *) const;
      67             : 
      68             :  private:
      69             : 
      70             :   Float_t  fX;        // X coordinate
      71             :   Float_t  fY;        // Y coordinate
      72             :   Float_t  fZ;        // Z coordinate
      73             :   Float_t  fCharge;   // Cluster charge in arbitrary units
      74             :   Float_t  fDriftTime;// Drift time in SDD (in ns)
      75             :   Float_t  fChargeRatio; // Charge ratio in SSD 
      76             :   Int_t    fClusterType; // Cluster Type (encoded info on size and shape)
      77             :   Float_t  fCov[6];   // Cov matrix
      78             :   Bool_t   fIsExtra;  // attached by tracker but not used in fit
      79             :   UShort_t fVolumeID; // Volume ID
      80             : 
      81         172 :   ClassDef(AliTrackPoint,7)
      82             : };
      83             : 
      84             : //////////////////////////////////////////////////////////////////////////////
      85             : //                          Class AliTrackPointArray                        //
      86             : //   This class contains the ESD track space-points which are used during   //
      87             : //   the alignment procedures. Each space-point consist of 3 coordinates    //
      88             : //   (and their errors) and the index of the sub-detector which contains    //
      89             : //   the space-point.                                                       //
      90             : //   cvetan.cheshkov@cern.ch 3/11/2005                                      //
      91             : //////////////////////////////////////////////////////////////////////////////
      92             : 
      93             : class AliTrackPointArray : public TObject {
      94             : 
      95             :  public:
      96             : 
      97             :   enum {kTOFBugFixed=BIT(14)};
      98             : 
      99             :   AliTrackPointArray();
     100             :   AliTrackPointArray(Int_t npoints);
     101             :   AliTrackPointArray(const AliTrackPointArray &array);
     102             :   AliTrackPointArray& operator= (const AliTrackPointArray& array);
     103             :   virtual ~AliTrackPointArray();
     104             : 
     105             :   //  Bool_t    AddPoint(Int_t i, AliCluster *cl, UShort_t volid);
     106             :   Bool_t    AddPoint(Int_t i, const AliTrackPoint *p);
     107             : 
     108           0 :   Int_t     GetNPoints() const { return fNPoints; }
     109           0 :   Int_t     GetCovSize() const { return fSize; }
     110             :   Bool_t    GetPoint(AliTrackPoint &p, Int_t i) const;
     111             :   // Getters for fast access to the coordinate arrays
     112           0 :   const Float_t*  GetX() const { return &fX[0]; }
     113           0 :   const Float_t*  GetY() const { return &fY[0]; }
     114           0 :   const Float_t*  GetZ() const { return &fZ[0]; }
     115           0 :   const Float_t*  GetCharge() const { return &fCharge[0]; }
     116           0 :   const Float_t*  GetDriftTime() const { return &fDriftTime[0]; }
     117           0 :   const Float_t*  GetChargeRatio() const { return &fChargeRatio[0]; }
     118           0 :   const Int_t*    GetClusterType() const { return &fClusterType[0]; }
     119           0 :   const Bool_t*   GetExtra() const { return &fIsExtra[0]; }
     120           0 :   const Float_t*  GetCov() const { return &fCov[0]; }
     121           0 :   const UShort_t* GetVolumeID() const { return &fVolumeID[0]; }
     122             : 
     123             :   Bool_t    HasVolumeID(UShort_t volid) const;
     124             :   void      Print(Option_t *) const;
     125             : 
     126             :   void Sort(Bool_t down=kTRUE);
     127             : 
     128             :  private:
     129             :   Bool_t fSorted;        // Sorted flag
     130             : 
     131             :   Int_t     fNPoints;    // Number of space points
     132             :   Float_t   *fX;         //[fNPoints] Array with space point X coordinates
     133             :   Float_t   *fY;         //[fNPoints] Array with space point Y coordinates
     134             :   Float_t   *fZ;         //[fNPoints] Array with space point Z coordinates
     135             :   Float_t   *fCharge;    //[fNPoints] Array with clusters charge
     136             :   Float_t   *fDriftTime; //[fNPoints] Array with drift times
     137             :   Float_t   *fChargeRatio; //[fNPoints] Array with charge ratio
     138             :   Int_t     *fClusterType; //[fNPoints] Array with cluster type
     139             :   Bool_t    *fIsExtra;   //[fNPoints] Array with extra flags
     140             :   Int_t     fSize;       // Size of array with cov matrices = 6*N of points
     141             :   Float_t   *fCov;       //[fSize] Array with space point coordinates cov matrix
     142             :   UShort_t  *fVolumeID;  //[fNPoints] Array of space point volume IDs
     143             : 
     144         460 :   ClassDef(AliTrackPointArray,7)
     145             : };
     146             : 
     147             : #endif
     148             : 

Generated by: LCOV version 1.11