]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/AliSimDigits.h
Further fixes to the par file generation
[u/mrichter/AliRoot.git] / TPC / AliSimDigits.h
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 ////////////////////////////////////////////////
12 #include <TError.h>
13 #include <TArrayI.h>
14 #include <TClonesArray.h>
15 #include   "AliDigits.h"
16
17 class AliH2F;
18
19
20 class AliSimDigits : public AliDigits{
21 public: 
22   AliSimDigits();
23   AliSimDigits(const AliSimDigits &param);
24   AliSimDigits &operator = (const AliSimDigits & digits); 
25   virtual ~AliSimDigits();
26   void AllocateTrack(Int_t length);  //construct empty buffer fTracks with size rows x column x length (number of tracks for one digit)
27   Int_t *GetTracks(){return fTracks->GetArray();}
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
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
37 private:
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
48   TArrayI * fTracks;     //buffer of track index 
49   TArrayI * fTrIndex;    //index position of column
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 
53   ClassDef(AliSimDigits,2) 
54 };
55
56
57
58 inline Int_t AliSimDigits::GetTrackIDFast(Int_t row, Int_t column,Int_t level)
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  
66 inline void AliSimDigits::SetTrackIDFast(Int_t value,Int_t row, Int_t column,Int_t level)
67 {
68   //
69   value+=2;
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
82
83
84
85
86
87