]>
Commit | Line | Data |
---|---|---|
1 | #ifndef ALITRDDATAARRAY_H | |
2 | #define ALITRDDATAARRAY_H | |
3 | ||
4 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
5 | * See cxx source for full Copyright notice */ | |
6 | ||
7 | /* $Id$ */ | |
8 | ||
9 | #include "AliTRDsegmentID.h" | |
10 | ||
11 | ///////////////////////////////////////////////////////////// | |
12 | // General container for data from TRD detector segments // | |
13 | // Adapted from AliDigits, origin M.Ivanov // | |
14 | ///////////////////////////////////////////////////////////// | |
15 | ||
16 | class AliTRDarrayI; | |
17 | ||
18 | class AliTRDdataArray : public AliTRDsegmentID { | |
19 | ||
20 | public: | |
21 | ||
22 | AliTRDdataArray(); | |
23 | AliTRDdataArray(Int_t nrow, Int_t ncol,Int_t ntime); | |
24 | AliTRDdataArray(const AliTRDdataArray &d); | |
25 | virtual ~AliTRDdataArray(); | |
26 | AliTRDdataArray &operator=(const AliTRDdataArray &d); | |
27 | ||
28 | virtual void Copy(TObject &d) const; | |
29 | virtual void Allocate(Int_t nrow, Int_t ncol,Int_t ntime); | |
30 | virtual void Reset(); | |
31 | ||
32 | virtual Int_t GetNrow() const { return fNrow; }; | |
33 | virtual Int_t GetNcol() const { return fNcol; }; | |
34 | virtual Int_t GetNtime() const { return fNtime; }; | |
35 | Int_t GetIndex(Int_t row, Int_t col, Int_t time) const; | |
36 | Int_t GetIndexUnchecked(Int_t row, Int_t col, Int_t time) const | |
37 | { return time * fNrow*fNcol | |
38 | + GetIdx1Unchecked(row,col); }; | |
39 | Int_t GetBufType() const { return fBufType; }; | |
40 | virtual Int_t GetNelems() const { return fNelems; }; | |
41 | ||
42 | virtual Bool_t HasData() const { return fNtime ? 1 : 0; }; | |
43 | ||
44 | protected: | |
45 | ||
46 | Int_t GetIdx1(Int_t row, Int_t col) const; | |
47 | Int_t GetIdx1Unchecked(Int_t row, Int_t col) const | |
48 | { return row + col * fNrow; }; | |
49 | inline Bool_t CheckBounds(Int_t idx1, Int_t idx2); | |
50 | inline Bool_t OutOfBoundsError(Int_t idx1, Int_t idx2); | |
51 | ||
52 | Int_t fNrow; // Number of rows of the detector segement | |
53 | Int_t fNcol; // Number of columns of the detector segment | |
54 | Int_t fNtime; // Number of timebins of the detector segment | |
55 | ||
56 | Int_t fNdim1; // First dimension of the array (row * column) | |
57 | Int_t fNdim2; // Second dimension of the array (time, not compressed) | |
58 | ||
59 | AliTRDarrayI *fIndex; // Index position of column | |
60 | Int_t fBufType; // Type of the buffer - defines the compression algorithm | |
61 | Int_t fNelems; // Total number of elements | |
62 | Int_t fCurrentIdx1; // !Current index 1 | |
63 | Int_t fCurrentIdx2; // !Current index 2 | |
64 | Int_t fCurrentIndex; // !Current index in field | |
65 | ||
66 | ClassDef(AliTRDdataArray,1) // Data container for one TRD detector segment | |
67 | ||
68 | }; | |
69 | ||
70 | #endif | |
71 |