ROOT logo
#ifndef ALITOFDIGITMAP_H
#define ALITOFDIGITMAP_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */


//////////////////////////////////////////////////////////////
//                                                          //
//   AliTOFDigitMap class                                   //
//                                                          //
//  digitmap enables fast check if the pad was already hit  //
//                                                          //
//   Author: F. Pierella | pierella@bo.infn.it              //
//                                                          //
// Modified by A. De Caro | decaro@sa.infn.it               //
//                                                          //
//////////////////////////////////////////////////////////////

#include "TObject.h"

#include "AliHitMap.h"

class AliTOFDigitMap : public TObject
{
 public:
    AliTOFDigitMap();
    AliTOFDigitMap(const AliTOFDigitMap & digitMap);
    
    virtual ~AliTOFDigitMap();

    // Clear the digit map
    virtual void  Clear(const Option_t* opt = "");
    // Add a single digit
    void  AddDigit(Int_t *vol, Int_t idigit);

    // Get index of digit in the cell labelled by vol
    Int_t  GetDigitIndex(Int_t *vol, Int_t index) const;
    // Get indices of digits in the cell labelled by vol
    void   GetDigitIndex(Int_t *vol, Int_t *index) const;

    // Test digit status
    virtual FlagType TestDigit(Int_t *vol) const;

    // Assignment operator
    AliTOFDigitMap& operator = (const AliTOFDigitMap& rhs);
    
    Int_t  GetFilledCellNumber() const;
    Bool_t StripDigitCheck(Int_t iSector, Int_t iPlate, Int_t iStrip) const;
    Int_t  DigitInStrip(Int_t iSector, Int_t iPlate, Int_t iStrip) const;
    Int_t  FilledCellsInStrip(Int_t iSector, Int_t iPlate, Int_t iStrip) const;
    void   ResetDigitNumber(Int_t *vol, Int_t dig);
    void   ResetDigit(Int_t *vol, Int_t dig);
    void   ResetDigit(Int_t *vol);
    Int_t  GetNumberOfDigits(Int_t *vol);

    enum {
      kMaxDigitsPerPad = 10
    };

 private:
    // Check index
    Int_t CheckedIndex(Int_t * const vol) const;

    Int_t fNSector;                       // Number of sectors
    Int_t fNplate;                        // Number of plates
    Int_t fNstrip;                        // Maximum number of strips
    Int_t fNpx;                           // Number of pads in x
    Int_t fNpz;                           // Number of pads in z

    Int_t fMaxIndex;                      // maximum index in hit map
    Int_t **fDigitMap;                    // ! [fMaxIndex][kMaxDigitsPerPad]

    ClassDef(AliTOFDigitMap,2) // Implements DigitMap as a 1-dim array
};
#endif	
 AliTOFDigitMap.h:1
 AliTOFDigitMap.h:2
 AliTOFDigitMap.h:3
 AliTOFDigitMap.h:4
 AliTOFDigitMap.h:5
 AliTOFDigitMap.h:6
 AliTOFDigitMap.h:7
 AliTOFDigitMap.h:8
 AliTOFDigitMap.h:9
 AliTOFDigitMap.h:10
 AliTOFDigitMap.h:11
 AliTOFDigitMap.h:12
 AliTOFDigitMap.h:13
 AliTOFDigitMap.h:14
 AliTOFDigitMap.h:15
 AliTOFDigitMap.h:16
 AliTOFDigitMap.h:17
 AliTOFDigitMap.h:18
 AliTOFDigitMap.h:19
 AliTOFDigitMap.h:20
 AliTOFDigitMap.h:21
 AliTOFDigitMap.h:22
 AliTOFDigitMap.h:23
 AliTOFDigitMap.h:24
 AliTOFDigitMap.h:25
 AliTOFDigitMap.h:26
 AliTOFDigitMap.h:27
 AliTOFDigitMap.h:28
 AliTOFDigitMap.h:29
 AliTOFDigitMap.h:30
 AliTOFDigitMap.h:31
 AliTOFDigitMap.h:32
 AliTOFDigitMap.h:33
 AliTOFDigitMap.h:34
 AliTOFDigitMap.h:35
 AliTOFDigitMap.h:36
 AliTOFDigitMap.h:37
 AliTOFDigitMap.h:38
 AliTOFDigitMap.h:39
 AliTOFDigitMap.h:40
 AliTOFDigitMap.h:41
 AliTOFDigitMap.h:42
 AliTOFDigitMap.h:43
 AliTOFDigitMap.h:44
 AliTOFDigitMap.h:45
 AliTOFDigitMap.h:46
 AliTOFDigitMap.h:47
 AliTOFDigitMap.h:48
 AliTOFDigitMap.h:49
 AliTOFDigitMap.h:50
 AliTOFDigitMap.h:51
 AliTOFDigitMap.h:52
 AliTOFDigitMap.h:53
 AliTOFDigitMap.h:54
 AliTOFDigitMap.h:55
 AliTOFDigitMap.h:56
 AliTOFDigitMap.h:57
 AliTOFDigitMap.h:58
 AliTOFDigitMap.h:59
 AliTOFDigitMap.h:60
 AliTOFDigitMap.h:61
 AliTOFDigitMap.h:62
 AliTOFDigitMap.h:63
 AliTOFDigitMap.h:64
 AliTOFDigitMap.h:65
 AliTOFDigitMap.h:66
 AliTOFDigitMap.h:67
 AliTOFDigitMap.h:68
 AliTOFDigitMap.h:69
 AliTOFDigitMap.h:70
 AliTOFDigitMap.h:71
 AliTOFDigitMap.h:72
 AliTOFDigitMap.h:73
 AliTOFDigitMap.h:74
 AliTOFDigitMap.h:75
 AliTOFDigitMap.h:76