]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliTrackPointArray.h
removerd double filling of histogram
[u/mrichter/AliRoot.git] / STEER / AliTrackPointArray.h
index b7c6aa48145e98191e0957a65ff0bc9acae17857..551ffba3135034eec0b2e416b78dfaac383af265 100644 (file)
 //////////////////////////////////////////////////////////////////////////////
 
 #include <TObject.h>
+#include <TMatrixDSym.h>
+
+class TGeoRotation;
 
 class AliTrackPoint : public TObject {
 
  public:
   AliTrackPoint();
-  AliTrackPoint(Float_t x, Float_t y, Float_t z, const Float_t *cov, UShort_t volid);
-  AliTrackPoint(const Float_t *xyz, const Float_t *cov, UShort_t volid);
+  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);
+  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);
   AliTrackPoint(const AliTrackPoint &p);
   AliTrackPoint& operator= (const AliTrackPoint& p);
   virtual ~AliTrackPoint() {}
@@ -29,6 +32,11 @@ class AliTrackPoint : public TObject {
   void     SetXYZ(Float_t x, Float_t y, Float_t z, const Float_t *cov = 0);
   void     SetXYZ(const Float_t *xyz, const Float_t *cov = 0);
   void     SetVolumeID(UShort_t volid) { fVolumeID = volid; }
+  void     SetCharge(Float_t charge) { fCharge = charge; }
+  void     SetDriftTime(Float_t time) { fDriftTime = time; }
+  void     SetChargeRatio(Float_t ratio) {  fChargeRatio= ratio; }
+  void     SetClusterType(Int_t clutype) {  fClusterType= clutype; }
+  void     SetExtra(Bool_t flag=kTRUE) { fIsExtra = flag; }
 
   Float_t  GetX() const { return fX; }
   Float_t  GetY() const { return fY; }
@@ -36,10 +44,19 @@ class AliTrackPoint : public TObject {
   void     GetXYZ(Float_t *xyz, Float_t *cov = 0) const;
   const Float_t *GetCov() const { return &fCov[0]; }
   UShort_t GetVolumeID() const { return fVolumeID; }
+  Float_t  GetCharge() const { return fCharge; }
+  Float_t  GetDriftTime() const { return fDriftTime;}
+  Float_t  GetChargeRatio() const { return fChargeRatio;}
+  Int_t    GetClusterType() const { return fClusterType;}
+  Bool_t   IsExtra() const { return fIsExtra;}
 
   Float_t  GetResidual(const AliTrackPoint &p, Bool_t weighted = kFALSE) const;
+  Bool_t   GetPCA(const AliTrackPoint &p, AliTrackPoint &out) const;
 
   Float_t  GetAngle() const;
+  Bool_t   GetRotMatrix(TGeoRotation& rot) const;
+  void SetAlignCovMatrix(const TMatrixDSym alignparmtrx);
+
   AliTrackPoint& Rotate(Float_t alpha) const;
   AliTrackPoint& MasterToLocal() const;
 
@@ -50,10 +67,15 @@ class AliTrackPoint : public TObject {
   Float_t  fX;        // X coordinate
   Float_t  fY;        // Y coordinate
   Float_t  fZ;        // Z coordinate
+  Float_t  fCharge;   // Cluster charge in arbitrary units
+  Float_t  fDriftTime;// Drift time in SDD (in ns)
+  Float_t  fChargeRatio; // Charge ratio in SSD 
+  Int_t    fClusterType; // Cluster Type (encoded info on size and shape)
   Float_t  fCov[6];   // Cov matrix
+  Bool_t   fIsExtra;  // attached by tracker but not used in fit
   UShort_t fVolumeID; // Volume ID
 
-  ClassDef(AliTrackPoint,1)
+  ClassDef(AliTrackPoint,7)
 };
 
 //////////////////////////////////////////////////////////////////////////////
@@ -85,22 +107,36 @@ class AliTrackPointArray : public TObject {
   const Float_t*  GetX() const { return &fX[0]; }
   const Float_t*  GetY() const { return &fY[0]; }
   const Float_t*  GetZ() const { return &fZ[0]; }
+  const Float_t*  GetCharge() const { return &fCharge[0]; }
+  const Float_t*  GetDriftTime() const { return &fDriftTime[0]; }
+  const Float_t*  GetChargeRatio() const { return &fChargeRatio[0]; }
+  const Int_t*    GetClusterType() const { return &fClusterType[0]; }
+  const Bool_t*   GetExtra() const { return &fIsExtra[0]; }
   const Float_t*  GetCov() const { return &fCov[0]; }
   const UShort_t* GetVolumeID() const { return &fVolumeID[0]; }
 
   Bool_t    HasVolumeID(UShort_t volid) const;
 
+  void Sort(Bool_t down=kTRUE);
+
  private:
+  Bool_t fSorted;        // Sorted flag
 
   Int_t     fNPoints;    // Number of space points
   Float_t   *fX;         //[fNPoints] Array with space point X coordinates
   Float_t   *fY;         //[fNPoints] Array with space point Y coordinates
   Float_t   *fZ;         //[fNPoints] Array with space point Z coordinates
+  Float_t   *fCharge;    //[fNPoints] Array with clusters charge
+  Float_t   *fDriftTime; //[fNPoints] Array with drift times
+  Float_t   *fChargeRatio; //[fNPoints] Array with charge ratio
+  Int_t     *fClusterType; //[fNPoints] Array with cluster type
+  Bool_t    *fIsExtra;   //[fNPoints] Array with extra flags
   Int_t     fSize;       // Size of array with cov matrices = 6*N of points
   Float_t   *fCov;       //[fSize] Array with space point coordinates cov matrix
   UShort_t  *fVolumeID;  //[fNPoints] Array of space point volume IDs
 
-  ClassDef(AliTrackPointArray,1)
+  ClassDef(AliTrackPointArray,7)
 };
 
 #endif
+