4 #ifndef ALIHLTTPCDIGITREADERUNPACKED_H
5 #define ALIHLTTPCDIGITREADERUNPACKED_H
7 //* This file is property of and copyright by the ALICE HLT Project *
8 //* ALICE Experiment at CERN, All rights reserved. *
9 //* See cxx source for full Copyright notice *
11 /** @file AliHLTTPCDigitReaderUnpacked.h
12 @author Timm Steinbeck, Jochen Thaeder, Matthias Richter
14 @brief A digit reader implementation for unpacked TPC data.
17 #include "AliHLTTPCDigitReader.h"
18 #include "AliHLTTPCDigitData.h"
19 class AliHLTTPCMapping;
20 class AliHLTTPCDigitRowData;
23 * @class AliHLTTPCDigitReaderUnpacked
24 * A digit reader implementation for unpacked TPC data.
27 class AliHLTTPCDigitReaderUnpacked : public AliHLTTPCDigitReader{
29 /** standard constructor */
30 AliHLTTPCDigitReaderUnpacked();
32 virtual ~AliHLTTPCDigitReaderUnpacked();
36 * @param ptr pointer to input buffer
37 * @param size size of the input buffer
38 * @param patch readout partition
39 * @param slice sector no
41 int InitBlock(void* ptr,unsigned long size, Int_t patch, Int_t slice);
42 using AliHLTTPCDigitReader::InitBlock;
45 * place the reader at the next signal
46 * @return 1 if there was a nest signal, 0 if not
51 * Get row number of the current signal
52 * @return row number of the current signal
57 * Get pad number of the current signal
58 * @return pad number of the current signal
69 * Get time of the current signal
70 * @return time of the current signal
76 AliHLTUInt32_t GetAltroBlockHWaddr() const;
78 const UInt_t* GetSignals();
79 Int_t GetSortedTime();
80 Int_t GetSortedSignal();
81 Int_t GetSortedPad() const;
82 Int_t GetSortedRow() const;
83 int GetRowOffset() const;
85 void SetUnsorted(bool unsorted){fUnsorted=unsorted;}
87 const AliHLTTPCDigitData* GetBunchDigits();
93 /** copy constructor prohibited */
94 AliHLTTPCDigitReaderUnpacked(const AliHLTTPCDigitReaderUnpacked&);
95 /** assignment operator prohibited */
96 AliHLTTPCDigitReaderUnpacked& operator=(const AliHLTTPCDigitReaderUnpacked&);
99 * Increment to the next raw data pointer.
100 * @param pRow [IN] the current row data pointer
101 * [OUT] the new pointer
102 * @return -EBADF in case of format error
104 int GetNextRowData(AliHLTTPCDigitRowData*& pRow) const;
106 /** intermediate row data structure (pointer in fPtr buffer) */
107 AliHLTTPCDigitRowData *fDigitRowData; //!
108 /** current row data structure (pointer in fPtr buffer) */
109 AliHLTTPCDigitRowData *fActRowData; //!
110 /** the current digit data */
111 AliHLTTPCDigitData *fData; //!
115 /** size of the input buffer */
116 unsigned long fSize; // see above
119 Int_t fBin; // see above
121 Int_t fRow; // see above
123 Int_t fFirstRow; // see above
125 Int_t fLastRow; // see above
127 Bool_t fUnsorted; //!transient
129 /** array to hold bunch data */
130 vector<UInt_t> fDataBunch; //! transient
132 vector<Int_t> fTrackIDs; //! transient
133 vector<UInt_t> fTrackIDCounts; //! transient
135 Bool_t fEndOfDataReached; //! transient
137 Bool_t fEndOfChannelReached; //! transient
139 Int_t fPrevTime; //! transient
141 Int_t fEndTimeBinOfBunch; //! transient
143 Int_t fPrevSignal; //! transient
145 Int_t fPrevPad; //! transient
147 Int_t fPrevRow; //! transient
149 Bool_t fNextChannelIsAlreadyConfirmed; //! transient
151 AliHLTTPCMapping *fMapping; //! transient
153 vector<AliHLTTPCDigitData> fDigitsVector; //! transient
157 ClassDef(AliHLTTPCDigitReaderUnpacked, 1)