2 // ************************************************************************
3 // This file is property of and copyright by the ALICE HLT Project *
4 // ALICE Experiment at CERN, All rights reserved. *
5 // See cxx source for full Copyright notice *
7 //*************************************************************************
10 #ifndef ALIHLTTPCCASLICEOUTPUT_H
11 #define ALIHLTTPCCASLICEOUTPUT_H
13 #include "AliHLTTPCCADef.h"
15 #include "AliHLTTPCCASliceTrack.h"
18 * @class AliHLTTPCCASliceOutput
20 * AliHLTTPCCASliceOutput class is used to store the output of AliHLTTPCCATracker{Component}
21 * and transport the output to AliHLTTPCCAGBMerger{Component}
23 * The class contains all the necessary information about TPC tracks, reconstructed in one slice.
24 * This includes the reconstructed track parameters and some compressed information
25 * about the assigned clusters: clusterId, position and amplitude.
28 class AliHLTTPCCASliceOutput
32 GPUhd() int NTracks() const { return fNTracks; }
33 GPUhd() int NTrackClusters() const { return fNTrackClusters; }
35 GPUhd() const AliHLTTPCCASliceTrack &Track( int i ) const { return fTracks[i]; }
36 GPUhd() unsigned int ClusterIDrc ( int i ) const { return fClusterIDrc[i]; }
37 GPUhd() int ClusterHltID ( int i ) const { return fClusterHltID[i]; }
38 GPUhd() unsigned short ClusterPackedYZ ( int i ) const { return fClusterPackedYZ[i]; }
39 GPUhd() UChar_t ClusterPackedAmp( int i ) const { return fClusterPackedAmp[i]; }
40 GPUhd() float2 ClusterUnpackedYZ ( int i ) const { return fClusterUnpackedYZ[i]; }
41 GPUhd() float ClusterUnpackedX ( int i ) const { return fClusterUnpackedX[i]; }
43 GPUhd() static int EstimateSize( int nOfTracks, int nOfTrackClusters );
44 GPUhd() void SetPointers();
46 GPUhd() void SetNTracks ( int v ) { fNTracks = v; }
47 GPUhd() void SetNTrackClusters( int v ) { fNTrackClusters = v; }
49 GPUhd() void SetTrack( int i, const AliHLTTPCCASliceTrack &v ) { fTracks[i] = v; }
50 GPUhd() void SetClusterIDrc( int i, unsigned int v ) { fClusterIDrc[i] = v; }
51 GPUhd() void SetClusterHltID( int i, int v ) { fClusterHltID[i] = v; }
52 GPUhd() void SetClusterPackedYZ( int i, unsigned short v ) { fClusterPackedYZ[i] = v; }
53 GPUhd() void SetClusterPackedAmp( int i, UChar_t v ) { fClusterPackedAmp[i] = v; }
54 GPUhd() void SetClusterUnpackedYZ( int i, float2 v ) { fClusterUnpackedYZ[i] = v; }
55 GPUhd() void SetClusterUnpackedX( int i, float v ) { fClusterUnpackedX[i] = v; }
59 AliHLTTPCCASliceOutput( const AliHLTTPCCASliceOutput& )
60 : fNTracks( 0 ), fNTrackClusters( 0 ), fTracks( 0 ), fClusterIDrc( 0 ), fClusterHltID( 0 ), fClusterPackedYZ( 0 ), fClusterUnpackedYZ( 0 ), fClusterUnpackedX( 0 ), fClusterPackedAmp( 0 ) {}
62 const AliHLTTPCCASliceOutput& operator=( const AliHLTTPCCASliceOutput& ) const { return *this; }
64 int fNTracks; // number of reconstructed tracks
65 int fNTrackClusters; // total number of track clusters
66 AliHLTTPCCASliceTrack *fTracks; // pointer to reconstructed tracks
67 unsigned int *fClusterIDrc; // pointer to cluster IDs ( packed IRow and ICluster)
68 int *fClusterHltID; // pointer to cluster IDs ( packed slice, patch, cluster )
69 unsigned short *fClusterPackedYZ; // pointer to packed cluster YZ coordinates
70 float2 *fClusterUnpackedYZ; // pointer to cluster coordinates (temporary data, for debug proposes)
71 float *fClusterUnpackedX; // pointer to cluster coordinates (temporary data, for debug proposes)
72 UChar_t *fClusterPackedAmp; // pointer to packed cluster amplitudes
73 char fMemory[1]; // the memory where the pointers above point into