HLT TRD update and cleanup, changes according to offline TRD (Theodor)
[u/mrichter/AliRoot.git] / HLT / TRD / AliHLTTRDTracklet.h
1 //-*- Mode: C++ -*-
2 // $Id$
3
4 #ifndef ALIHLTTRDTRACKLET_H
5 #define ALIHLTTRDTRACKLET_H
6 //* This file is property of and copyright by the ALICE HLT Project        * 
7 //* ALICE Experiment at CERN, All rights reserved.                         *
8 //* See cxx source for full Copyright notice                               *
9
10 #include "AliTRDseedV1.h"
11 #include "AliHLTDataTypes.h"
12 #include "AliHLTLogging.h"
13 #include "AliHLTTRDCluster.h"
14
15 class AliHLTTRDTracklet
16 {
17  public:
18   AliHLTTRDTracklet();
19   AliHLTTRDTracklet(const AliTRDseedV1* const inTracklet);
20   
21   void CopyDataMembers(const AliTRDseedV1* const inTracklet);
22   void ExportTRDTracklet(AliTRDseedV1* const outTracklet) const;
23   AliHLTUInt8_t *GetEndPointer() const // Returns pointer to the end of the tracklet
24     { return ((AliHLTUInt8_t *)this + fSize); };
25   AliHLTUInt32_t GetSize() const { return fSize; };
26   void Print(Bool_t printClusters = kTRUE) const;
27   // void ReadClustersFromMemory(void *input);
28   
29  private:
30   AliHLTTRDTracklet(const AliHLTTRDTracklet&);
31   AliHLTTRDTracklet& operator=(const AliHLTTRDTracklet&);
32   void InitArrays();
33
34   /* Defenitely need */
35   UShort_t       fN;                     // number of clusters attached/used/shared
36   Short_t        fDet;                   //  TRD detector
37   Float_t        fdX;                    // length of time bin
38   Float_t        fYref[2];               //  Reference y
39   Float_t        fZref[2];               //  Reference z
40   Float_t        fS2Y;                   //  "Robust" sigma in Y - line fit
41   Float_t        fPt;                    //  Momentum estimate for tracklet [GeV/c]
42  
43   /* Probably need */
44   Float_t        fPad3;                  //  Tilting angle
45   Float_t        fPad2;                  //  Pad length
46   Float_t        fX0;                    //  X0 position
47   Float_t        fYfit[2];               //  Y fit position +derivation
48   Float_t        fZfit[2];               //  Z fit position
49   Float_t        fC;                     //  Curvature
50   Float_t        fChi2;                  //  Global chi2
51   Float_t        fProb[AliPID::kSPECIES];// PID probabilities
52
53   /* Not needed */
54   //Int_t          fLabels[3];            //  Labels
55   //Float_t        fX[knTimebins];        //! X position
56   //Float_t        fY[knTimebins];        //! Y position
57   //Float_t        fZ[knTimebins];        //! Z position
58   //Float_t        fYfitR[2];             //  Y fit position +derivation
59   //Float_t        fZfitR[2];             //  Z fit position
60   //Float_t        fMeanz;                //  Mean vaue of z
61   //Float_t        fZProb;                //  Max probbable z
62   //Int_t          fFreq;                 //  Frequency
63   //Int_t          fNChange;              //  Change z counter
64   //Float_t        fMPads;                //  Mean number of pads per cluster
65
66   //Float_t        fCC;                   //  Curvature with constrain
67   //Float_t        fChi2Z;                //  Global chi2
68
69   AliHLTUInt32_t fSize;                   // Size of the tracklet with clusters in the memory
70   AliHLTUInt32_t fCount;                  // Number of clusters saved in the open array
71
72   struct IndexAndCluster{
73     Int_t            Index;
74     AliHLTTRDCluster Cluster;
75     IndexAndCluster():Index(-1),Cluster() {}
76   }
77 #if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
78     fClusters[1];                         // Open array of clusters and their index
79 #else
80     fClusters[0];                         // Open array of clusters and their index
81 #endif
82
83 };
84
85 #endif