Line data Source code
1 : #ifndef ALITOFDIGITMAP_H
2 : #define ALITOFDIGITMAP_H
3 :
4 : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 : * See cxx source for full Copyright notice */
6 :
7 :
8 : //////////////////////////////////////////////////////////////
9 : // //
10 : // AliTOFDigitMap class //
11 : // //
12 : // digitmap enables fast check if the pad was already hit //
13 : // //
14 : // Author: F. Pierella | pierella@bo.infn.it //
15 : // //
16 : // Modified by A. De Caro | decaro@sa.infn.it //
17 : // //
18 : //////////////////////////////////////////////////////////////
19 :
20 : #include "TObject.h"
21 :
22 : #include "AliHitMap.h"
23 :
24 : class AliTOFDigitMap : public TObject
25 : {
26 : public:
27 : AliTOFDigitMap();
28 : AliTOFDigitMap(const AliTOFDigitMap & digitMap);
29 :
30 : virtual ~AliTOFDigitMap();
31 :
32 : // Clear the digit map
33 : virtual void Clear(const Option_t* opt = "");
34 : // Add a single digit
35 : void AddDigit(Int_t *vol, Int_t idigit);
36 :
37 : // Get index of digit in the cell labelled by vol
38 : Int_t GetDigitIndex(Int_t *vol, Int_t index) const;
39 : // Get indices of digits in the cell labelled by vol
40 : void GetDigitIndex(Int_t *vol, Int_t *index) const;
41 :
42 : // Test digit status
43 : virtual FlagType TestDigit(Int_t *vol) const;
44 :
45 : // Assignment operator
46 : AliTOFDigitMap& operator = (const AliTOFDigitMap& rhs);
47 :
48 : Int_t GetFilledCellNumber() const;
49 : Bool_t StripDigitCheck(Int_t iSector, Int_t iPlate, Int_t iStrip) const;
50 : Int_t DigitInStrip(Int_t iSector, Int_t iPlate, Int_t iStrip) const;
51 : Int_t FilledCellsInStrip(Int_t iSector, Int_t iPlate, Int_t iStrip) const;
52 : void ResetDigitNumber(Int_t *vol, Int_t dig);
53 : void ResetDigit(Int_t *vol, Int_t dig);
54 : void ResetDigit(Int_t *vol);
55 : Int_t GetNumberOfDigits(Int_t *vol);
56 :
57 : enum {
58 : kMaxDigitsPerPad = 10
59 : };
60 :
61 : private:
62 : // Check index
63 : Int_t CheckedIndex(Int_t * const vol) const;
64 :
65 : Int_t fNSector; // Number of sectors
66 : Int_t fNplate; // Number of plates
67 : Int_t fNstrip; // Maximum number of strips
68 : Int_t fNpx; // Number of pads in x
69 : Int_t fNpz; // Number of pads in z
70 :
71 : Int_t fMaxIndex; // maximum index in hit map
72 : Int_t **fDigitMap; // ! [fMaxIndex][kMaxDigitsPerPad]
73 :
74 62 : ClassDef(AliTOFDigitMap,2) // Implements DigitMap as a 1-dim array
75 : };
76 : #endif
|