Corrected protection
[u/mrichter/AliRoot.git] / TOF / AliTOFDigitMap.h
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     void   ResetDigitNumber(Int_t *vol, Int_t dig);
52     void   ResetDigit(Int_t *vol, Int_t dig);
53     void   ResetDigit(Int_t *vol);
54     Int_t  GetNumberOfDigits(Int_t *vol);
55
56  private:
57     // Check index
58     Int_t CheckedIndex(Int_t *vol) const;
59  private:
60     enum {
61       kMaxDigitsPerPad = 3
62     };
63
64     Int_t fNSector;                       // Number of sectors
65     Int_t fNplate;                        // Number of plates
66     Int_t fNstrip;                        // Maximum number of strips
67     Int_t fNpx;                           // Number of pads in x
68     Int_t fNpz;                           // Number of pads in z
69
70     Int_t fMaxIndex;                      // maximum index in hit map
71     Int_t **fDigitMap;                    // ! [fMaxIndex][kMaxDigitsPerPad]
72
73     ClassDef(AliTOFDigitMap,2) // Implements DigitMap as a 1-dim array
74 };
75 #endif