- fixes for bug 63765 - see for details the post
[u/mrichter/AliRoot.git] / HLT / TRD / AliHLTTRDTracklet.h
index b19bdc8..67436bd 100644 (file)
@@ -1,76 +1,80 @@
+//-*- Mode: C++ -*-
+// $Id$
+
 #ifndef ALIHLTTRDTRACKLET_H
 #define ALIHLTTRDTRACKLET_H
+//* This file is property of and copyright by the ALICE HLT Project        * 
+//* ALICE Experiment at CERN, All rights reserved.                         *
+//* See cxx source for full Copyright notice                               *
 
 #include "AliTRDseedV1.h"
 #include "AliHLTDataTypes.h"
 #include "AliHLTLogging.h"
-class AliHLTTRDCluster;
+#include "AliHLTTRDCluster.h"
 
 class AliHLTTRDTracklet
 {
  public:
   AliHLTTRDTracklet();
-  AliHLTTRDTracklet(AliTRDseedV1* inTracklet);
+  AliHLTTRDTracklet(const AliTRDseedV1* const inTracklet);
   
-  void ExportTRDTracklet(AliTRDseedV1* outTracklet);
-  void AddClusters();
-  void CopyDataMembers();
-  AliHLTUInt8_t *GetEndPointer() // Returns pointer to the end of the tracklet
-    { return ((AliHLTUInt8_t *) this + fSize); };
-  AliHLTUInt32_t GetSize(){ return fSize; };
-  void Print(Bool_t printClusters = kTRUE);
-  void ReadClustersFromMemory(void *input);
+  void CopyDataMembers(const AliTRDseedV1* const inTracklet);
+  void ExportTRDTracklet(AliTRDseedV1* const outTracklet) const;
+  AliHLTUInt8_t *GetEndPointer() const // Returns pointer to the end of the tracklet
+    { return ((AliHLTUInt8_t *)this + fSize); };
+  AliHLTUInt32_t GetSize() const { return fSize; };
+  void Print(Bool_t printClusters = kTRUE) const;
+  // void ReadClustersFromMemory(void *input);
   
  private:
   AliHLTTRDTracklet(const AliHLTTRDTracklet&);
   AliHLTTRDTracklet& operator=(const AliHLTTRDTracklet&);
   void InitArrays();
-  
-  AliTRDseedV1* fTRDtracklet;
-  AliHLTUInt32_t fSize; // Size of the tracklet with clusters in the memory
-  
-  /* Defenitely need */
-  AliHLTTRDCluster *fClusters[AliTRDseedV1::kNclusters]; // Clusters
-  Float_t        fYref[2];              //  Reference y
-  Float_t        fZref[2];              //  Reference z
-  //Float_t        fSigmaY;               //  "Robust" sigma in Y - constant fit
-  Float_t        fSigmaY2;              //  "Robust" sigma in Y - line fit
 
+  /* Defenitely need */
+  UInt_t         fN;                     // number of clusters attached/used/shared
+  Float_t        fdX;                    // length of time bin
+  Float_t        fYref[2];               // Reference y
+  Float_t        fZref[2];               // Reference z
+  Float_t        fS2Y;                   // estimated resolution in the r-phi direction
+  Float_t        fPt;                    // Momentum estimate for tracklet [GeV/c]
   /* Probably need */
-  Float_t        fTilt;                 //  Tilting angle
-  Float_t        fPadLength;            //  Pad length
-  Float_t        fX0;                   //  X0 position
-//  Float_t        fX[knTimebins];        //! X position
-//  Float_t        fY[knTimebins];        //! Y position
-//  Float_t        fZ[knTimebins];        //! Z position
-  Int_t          fIndexes[AliTRDseedV1::kNclusters];  //! Indexes
-  Float_t        fYfit[2];              //  Y fit position +derivation
-  //Float_t        fYfitR[2];             //  Y fit position +derivation
-  Float_t        fZfit[2];              //  Z fit position
-  //Float_t        fZfitR[2];             //  Z fit position
-  //Float_t        fMeanz;                //  Mean vaue of z
-  //Float_t        fZProb;                //  Max probbable z
-  Int_t          fLabels[3];            //  Labels
-  //Int_t          fN;                    //  Number of associated clusters
-  Int_t          fN2;                   //  Number of not crossed
-  Int_t          fNUsed;                //  Number of used clusters
-  //Int_t          fFreq;                 //  Frequency
-  //Int_t          fNChange;              //  Change z counter
-  //Float_t        fMPads;                //  Mean number of pads per cluster
+  Float_t        fPad[3];                //  local pad definition : length/width/tilt 
+  Float_t        fX0;                    //  X0 position
+  Float_t        fYfit[2];               //  Y fit position +derivation
+  Float_t        fZfit[2];               //  Z fit position
+  Float_t        fC[2];                  //  Curvature Rieman[0] Vertex[1]
+  Float_t        fChi2;                  //  Global chi2
+  Float_t        fProb[AliPID::kSPECIES];// PID probabilities
 
-  Float_t        fC;                    //  Curvature
-  //Float_t        fCC;                   //  Curvature with constrain
-  Float_t        fChi2;                 //  Global chi2
-  //Float_t        fChi2Z;                //  Global chi2
+  /* Not needed */
+  // Float_t        fExB;                    // tg(a_L) @ tracklet location
+  // Float_t        fVD;                     // drift velocity @ tracklet location
+  // Float_t        fT0;                     // time 0 @ tracklet location
+  // Float_t        fS2PRF;                  // sigma^2 PRF for xd->0 and phi=a_L 
+  // Float_t        fDiffL;                  // longitudinal diffusion coefficient
+  // Float_t        fDiffT;                  // transversal diffusion coefficient
+  // Float_t        fX;                      // radial position of the tracklet
+  // Float_t        fY;                      // r-phi position of the tracklet
+  // Float_t        fZ;                      // z position of the tracklet
+  // Float_t        fS2Z;                    // estimated resolution in the z direction 
+  // Float_t        fdEdx[AliTRDseedV1::kNslices];         // dE/dx measurements for tracklet
+  // Float_t        fRefCov[7];              // covariance matrix of the track in the yz plane + the rest of the diagonal elements
+  // Float_t        fCov[3];                 // covariance matrix of the tracklet in the xy plane
 
-  /* ======= From AliTRDseedV1 ======== */
+  UChar_t        fPos[AliTRDseedV1::kNclusters]; // position of the cluster in the original array
 
-  /* Defenitely need */
-  Int_t            fDet;                    //  TRD detector
-  Float_t          fPt;                     //  Momentum estimate for  tracklet [GeV/c]
-  Float_t          fdX;                     // length of time bin
+  Short_t        fDet;                   // TRD detector
+  UChar_t        fBits;                  // Bits of the tracklet
+  AliHLTUInt8_t  fCount;                 // Number of clusters saved in the open array
+  AliHLTUInt32_t fSize;                  // Size of the tracklet with clusters in the memory
 
-  /* Probably need */
+#if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
+  AliHLTTRDCluster fClusters[1];                         // Open array of clusters
+#else
+  AliHLTTRDCluster fClusters[0];                         // Open array of clusters
+#endif
 
 };