]>
Commit | Line | Data |
---|---|---|
cc80f89e | 1 | #ifndef ALISIMDIGITS_H |
2 | #define ALISIMDIGITS_H | |
3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
6 | /* $Id$ */ | |
7 | ||
8 | //////////////////////////////////////////////// | |
9 | // Manager class generaol Alice segment digits | |
10 | // segment is for example one pad row in TPC // | |
11 | //////////////////////////////////////////////// | |
e756ece8 | 12 | #include <TError.h> |
13 | #include <TArrayI.h> | |
04fa961a | 14 | #include <TClonesArray.h> |
e756ece8 | 15 | #include "AliDigits.h" |
1210abef | 16 | |
cc80f89e | 17 | class AliH2F; |
18 | ||
19 | ||
20 | class AliSimDigits : public AliDigits{ | |
21 | public: | |
22 | AliSimDigits(); | |
179c6296 | 23 | AliSimDigits(const AliSimDigits ¶m); |
24 | AliSimDigits &operator = (const AliSimDigits & digits); | |
73042f01 | 25 | virtual ~AliSimDigits(); |
cc80f89e | 26 | void AllocateTrack(Int_t length); //construct empty buffer fTracks with size rows x column x length (number of tracks for one digit) |
407ff276 | 27 | Int_t *GetTracks(){return fTracks->GetArray();} |
73042f01 | 28 | Int_t GetTrackIDFast(Int_t row, Int_t column,Int_t level); //return track ID at given row and collumn |
29 | void SetTrackIDFast(Int_t value,Int_t row, Int_t column,Int_t level); //set ID track at given row and collumn | |
cc80f89e | 30 | virtual Int_t GetTrackID(Int_t row, Int_t column, Int_t level); |
31 | virtual void ExpandTrackBuffer(); //expand buffer to twodimensional array | |
32 | virtual void CompresTrackBuffer(Int_t bufType); //compres buffer according buffertype algorithm | |
33 | AliH2F * DrawTracks( const char *option=0,Int_t level=0, | |
34 | Float_t x1=-1, Float_t x2=-1, Float_t y1=-1, Float_t y2=-1); //draw tracks | |
35 | TClonesArray * GenerTPCClonesArray(TClonesArray * arr); //generate TClonnesArray of digits | |
36 | //only for demonstration purpose | |
73042f01 | 37 | private: |
cc80f89e | 38 | void InvalidateTrack(); |
39 | ||
40 | Int_t GetTrackID1(Int_t row, Int_t column, Int_t level); //returnb track ID of digits - for buffer compresion 1 | |
41 | void ExpandTrackBuffer1(); //comress track according algorithm 1 (track ID comression independent to the digit compression) | |
42 | void CompresTrackBuffer1(); //comress track according algorithm 1 (track ID comression independent to the digit compression) | |
43 | ||
44 | Int_t GetTrackID2(Int_t row, Int_t column, Int_t level); //returnb track ID of digits - for buffer compresion 2 | |
45 | void ExpandTrackBuffer2(); //comress track according algorithm 2 (track ID comression according digit compression) | |
46 | void CompresTrackBuffer2(); //comress track according algorithm 2 (track ID comression according digit compression) | |
47 | ||
e756ece8 | 48 | TArrayI * fTracks; //buffer of track index |
49 | TArrayI * fTrIndex; //index position of column | |
cc80f89e | 50 | Int_t fNlevel; //number of tracks etries for one digit |
51 | Int_t fTrBufType; //buffer type of the tracks | |
52 | // Bool_t ClassError( ); //signalize class error | |
e756ece8 | 53 | ClassDef(AliSimDigits,2) |
cc80f89e | 54 | }; |
55 | ||
56 | ||
57 | ||
73042f01 | 58 | inline Int_t AliSimDigits::GetTrackIDFast(Int_t row, Int_t column,Int_t level) |
cc80f89e | 59 | { |
60 | // | |
61 | //return track ID at given row and column | |
62 | // return fTracks[level].At(fTrIndex[level][column]+row); | |
63 | return fTracks->At(level*fNrows*fNcols+fNrows*column+row); | |
64 | } | |
65 | ||
73042f01 | 66 | inline void AliSimDigits::SetTrackIDFast(Int_t value,Int_t row, Int_t column,Int_t level) |
cc80f89e | 67 | { |
73042f01 | 68 | // |
69 | value+=2; | |
cc80f89e | 70 | //set ID track at given row and collumn |
71 | // fTracks[level][fTrIndex[level][column]+row]=value; | |
72 | if ( (row<0) || (row>=fNrows) || (column<0) || (column>=fNcols) ) | |
73 | ::Error("AliSimDigits::SetTrackIDFast", "row %d col %d out of bounds (size: %d x %d, this: 0x%08x)", | |
74 | row, column, fNrows, fNcols, this); | |
75 | if ( (level<0) || (level>=fNlevel)) ::Error("AliSimDigits::SetTrackIDFast", "index %d out of bounds", level); | |
76 | (*fTracks)[level*fNrows*fNcols+fNrows*column+row]=value; | |
77 | } | |
78 | ||
79 | ||
80 | ||
81 | #endif | |
73042f01 | 82 | |
83 | ||
84 | ||
85 | ||
86 | ||
87 |