209679291ed94583e2bad7b6deec9cd4f3ebd951
[u/mrichter/AliRoot.git] / MUON / AliMUONPadStatusMapMaker.h
1 #ifndef ALIMUONPADSTATUSMAPMAKER_H
2 #define ALIMUONPADSTATUSMAPMAKER_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice                               */
6
7 // $Id$
8
9 /// \ingroup rec
10 /// \class AliMUONPadStatusMapMaker
11 /// \brief Convert a pad status container into a pad status *map* container
12 /// 
13 //  Author Laurent Aphecetche
14
15 #ifndef ROOT_TObject
16 #  include "TObject.h"
17 #endif
18
19 class AliMUONCalibrationData;
20 class AliMUONVStore;
21 class AliMUONVCalibParam;
22 class AliMpPad;
23 class AliMpVSegmentation;
24 class TObjArray;
25 class TVector2;
26
27 class AliMUONPadStatusMapMaker : public TObject
28 {
29 public:
30   AliMUONPadStatusMapMaker(const AliMUONCalibrationData& calibData);
31   virtual ~AliMUONPadStatusMapMaker();
32   
33   /// Return status bit map to tell a pad is bad
34   static Int_t SelfDeadMask() { return fgkSelfDead; }
35   
36   AliMUONVStore* MakePadStatusMap(const AliMUONVStore& status,
37                                     Int_t mask);
38   
39   static AliMUONVStore* MakeEmptyPadStatusMap();
40
41
42 private:
43   /// Not implemented
44   AliMUONPadStatusMapMaker(const AliMUONPadStatusMapMaker&);
45   /// Not implemented
46   AliMUONPadStatusMapMaker& operator=(const AliMUONPadStatusMapMaker&);
47
48 private:
49   Int_t ComputeStatusMap(const AliMUONVCalibParam& neighbours, 
50                         Int_t manuChannel, Int_t detElemId) const;
51   
52   Int_t GetPadStatus(Int_t detElemId, Int_t manuId, Int_t manuChannel) const;
53   
54 private:
55     static Int_t fgkSelfDead; //!< status bit map to tell a pad is bad
56   const AliMUONVStore* fStatus; //!< status store
57   Int_t fMask; //!< mask to be tested
58
59   /// Bit numbers
60   enum EBitNumbers
61   {
62     kLeftBottomBit = 6,
63     kLeftBit = 7,
64     kLeftTopBit = 8,
65     kBottomBit = 11,
66     kCenterBit = 12,
67     kTopBit = 13,
68     kRightBottomBit = 16,
69     kRightBit = 17,
70     kRightTopBit = 18
71   };
72   const AliMUONCalibrationData& fCalibrationData; //!< to access neighbourStore
73   
74   ClassDef(AliMUONPadStatusMapMaker,0) // Pad status map maker
75 };
76
77 #endif