+//-*- 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;
+ static AliHLTUInt32_t SaveAt(AliHLTUInt8_t *const block, const AliTRDseedV1* const inTracklet);
+ static AliHLTUInt32_t LoadFrom(AliTRDseedV1 *const outTracklet, const AliHLTUInt8_t *const block);
private:
AliHLTTRDTracklet(const AliHLTTRDTracklet&);
AliHLTTRDTracklet& operator=(const AliHLTTRDTracklet&);
void InitArrays();
-
- AliTRDseedV1* fTRDtracklet;
- AliHLTUInt32_t fSize; // Size of the tracklet with clusters in the memory
-
-
- /* ======= From AliTRDseed ======== */
- enum { knTimebins = 35 };
/* Defenitely need */
- AliHLTTRDCluster *fClusters[knTimebins]; // 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
-
+ 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[knTimebins]; //! Indexes
- Bool_t fUsable[knTimebins]; // Indication - usable cluster
- 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[2]; // 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 fMom; // 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)
+ AliHLTTRDExtCluster fClusters[1]; // Open array of clusters
+#else
+ AliHLTTRDExtCluster fClusters[0]; // Open array of clusters
+#endif
};