class AliHLTTPCCASliceOutput
{
public:
+
+ struct outputControlStruct
+ {
+ outputControlStruct() : fObsoleteOutput( 1 ), fDefaultOutput( 1 ), fOutputPtr( NULL ), fOutputMaxSize ( 0 ), fEndOfSpace(0) {}
+ int fObsoleteOutput; //Enable Obsolete Output
+ int fDefaultOutput; //Enable Default Output
+ char* fOutputPtr; //Pointer to Output Space, NULL to allocate output space
+ int fOutputMaxSize; //Max Size of Output Data if Pointer to output space is given
+ bool fEndOfSpace; // end of space flag
+ };
+
GPUhd() int NTracks() const { return fNTracks; }
GPUhd() int NTrackClusters() const { return fNTrackClusters; }
GPUhd() const AliHLTTPCCASliceTrack &Track( int i ) const { return fTracks[i]; }
GPUhd() unsigned char ClusterRow ( int i ) const { return fClusterRow[i]; }
GPUhd() int ClusterId ( int i ) const { return fClusterId[i]; }
- GPUhd() unsigned short ClusterPackedYZ ( int i ) const { return fClusterPackedYZ[i]; }
- GPUhd() UChar_t ClusterPackedAmp( int i ) const { return fClusterPackedAmp[i]; }
GPUhd() float2 ClusterUnpackedYZ ( int i ) const { return fClusterUnpackedYZ[i]; }
GPUhd() float ClusterUnpackedX ( int i ) const { return fClusterUnpackedX[i]; }
GPUhd() static int EstimateSize( int nOfTracks, int nOfTrackClusters );
- void SetPointers(int nTracks = -1, int nTrackClusters = -1);
- static void Allocate(AliHLTTPCCASliceOutput* &ptrOutput, int nTracks, int nTrackHits);
+ void SetPointers(int nTracks = -1, int nTrackClusters = -1, const outputControlStruct* outputControl = NULL);
+ static void Allocate(AliHLTTPCCASliceOutput* &ptrOutput, int nTracks, int nTrackHits, outputControlStruct* outputControl);
GPUhd() void SetNTracks ( int v ) { fNTracks = v; }
GPUhd() void SetNTrackClusters( int v ) { fNTrackClusters = v; }
GPUhd() void SetTrack( int i, const AliHLTTPCCASliceTrack &v ) { fTracks[i] = v; }
GPUhd() void SetClusterRow( int i, unsigned char v ) { fClusterRow[i] = v; }
GPUhd() void SetClusterId( int i, int v ) { fClusterId[i] = v; }
- GPUhd() void SetClusterPackedYZ( int i, unsigned short v ) { fClusterPackedYZ[i] = v; }
- GPUhd() void SetClusterPackedAmp( int i, UChar_t v ) { fClusterPackedAmp[i] = v; }
GPUhd() void SetClusterUnpackedYZ( int i, float2 v ) { fClusterUnpackedYZ[i] = v; }
GPUhd() void SetClusterUnpackedX( int i, float v ) { fClusterUnpackedX[i] = v; }
+ GPUhd() size_t OutputMemorySize() const { return(fMemorySize); }
+
//Obsolete Output
GPUhd() int NOutTracks() const { return(fNOutTracks); }
private:
AliHLTTPCCASliceOutput()
- : fNTracks( 0 ), fNTrackClusters( 0 ), fTracks( 0 ), fClusterId( 0 ), fClusterRow( 0 ), fClusterPackedYZ( 0 ), fClusterUnpackedYZ( 0 ), fClusterUnpackedX( 0 ), fClusterPackedAmp( 0 ),
+ : fNTracks( 0 ), fNTrackClusters( 0 ), fTracks( 0 ), fClusterId( 0 ), fClusterRow( 0 ), fClusterUnpackedYZ( 0 ), fClusterUnpackedX( 0 ),
fMemorySize( 0 ), fNOutTracks(0), fNOutTrackHits(0), fOutTracks(0), fOutTrackHits(0) {}
~AliHLTTPCCASliceOutput() {}
const AliHLTTPCCASliceOutput& operator=( const AliHLTTPCCASliceOutput& ) const { return *this; }
AliHLTTPCCASliceOutput( const AliHLTTPCCASliceOutput& );
+ GPUh() void SetMemorySize(size_t val) { fMemorySize = val; }
+
int fNTracks; // number of reconstructed tracks
int fNTrackClusters; // total number of track clusters
AliHLTTPCCASliceTrack *fTracks; // pointer to reconstructed tracks
int *fClusterId; // pointer to cluster Id's ( packed slice, patch, cluster )
UChar_t *fClusterRow; // pointer to cluster row numbers
- unsigned short *fClusterPackedYZ; // pointer to packed cluster YZ coordinates
float2 *fClusterUnpackedYZ; // pointer to cluster coordinates (temporary data, for debug proposes)
float *fClusterUnpackedX; // pointer to cluster coordinates (temporary data, for debug proposes)
- UChar_t *fClusterPackedAmp; // pointer to packed cluster amplitudes
size_t fMemorySize; // Amount of memory really used
// obsolete output
};
-#endif
+#endif //ALIHLTTPCCASLICEOUTPUT_H