Separating run-dependent mapping data from data, which are not
[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 AliMUONPadStatusMaker;
20 class AliMUONVCalibParam;
21 class AliMUONVStore;
22
23 class AliMUONPadStatusMapMaker : public TObject
24 {
25 public:
26   AliMUONPadStatusMapMaker(const AliMUONPadStatusMaker& padStatusMaker,
27                            Int_t mask,
28                            Bool_t deferredInitialization=kTRUE);
29   virtual ~AliMUONPadStatusMapMaker();
30   
31   /** Get access to internal status map store (for debug only, as it may not be complete,
32     depending on whether you've already called StatusMap() for all possible de,manu,channel
33     combinations or not...
34     */
35   AliMUONVStore* StatusMap() const { return fStatusMap; }
36   
37   Int_t StatusMap(Int_t detElemId, Int_t manuId, Int_t manuChannel) const;
38   
39   /// Return status bit map to tell a pad is bad
40   static Int_t SelfDeadMask() { return fgkSelfDead; }
41   
42 private:
43   /// Not implemented
44   AliMUONPadStatusMapMaker(const AliMUONPadStatusMapMaker&);
45   /// Not implemented
46   AliMUONPadStatusMapMaker& operator=(const AliMUONPadStatusMapMaker&);
47
48 private:
49     
50   AliMUONVCalibParam* ComputeStatusMap(Int_t detElemId, Int_t manuId) const;
51   
52 private:
53   
54   static Int_t fgkSelfDead; //!< status bit map to tell a pad is bad
55
56   /// Bit numbers
57   enum EBitNumbers
58   {
59     kLeftBottomBit = 6,
60     kLeftBit = 7,
61     kLeftTopBit = 8,
62     kBottomBit = 11,
63     kCenterBit = 12,
64     kTopBit = 13,
65     kRightBottomBit = 16,
66     kRightBit = 17,
67     kRightTopBit = 18
68   };
69   
70   const AliMUONPadStatusMaker& fStatusMaker; //!< to access pad statuses
71   Int_t fMask; //!< mask to be tested
72   mutable AliMUONVStore* fStatusMap; //!< status map
73   
74   ClassDef(AliMUONPadStatusMapMaker,0) // Pad status map maker
75 };
76
77 #endif