]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONPadStatusMapMaker.h
AliTPCRecoParam.h AliTPCRecoParam.cxx AliTPCtrack.cxx
[u/mrichter/AliRoot.git] / MUON / AliMUONPadStatusMapMaker.h
index d1654705bcdb55d921e5fb9c9f46ec796b00b2f9..3a516425baecb0ec81923d37af5ecec9257f06d1 100644 (file)
@@ -6,57 +6,56 @@
 
 // $Id$
 
-/// \ingroup
+/// \ingroup rec
 /// \class AliMUONPadStatusMapMaker
 /// \brief Convert a pad status container into a pad status *map* container
 /// 
-/// \author Laurent Aphecetche
+//  Author Laurent Aphecetche
 
 #ifndef ROOT_TObject
 #  include "TObject.h"
 #endif
 
-class AliMUONV2DStore;
-class AliMpPad;
-class TObjArray;
-class AliMpVSegmentation;
-class TVector2;
-class TStopwatch;
+class AliMUONPadStatusMaker;
+class AliMUONVCalibParam;
+class AliMUONVStore;
 
 class AliMUONPadStatusMapMaker : public TObject
 {
 public:
-  AliMUONPadStatusMapMaker();
+  AliMUONPadStatusMapMaker(const AliMUONPadStatusMaker& padStatusMaker,
+                           Int_t mask,
+                           Bool_t deferredInitialization=kTRUE);
   virtual ~AliMUONPadStatusMapMaker();
   
+  /** Get access to internal status map store (for debug only, as it may not be complete,
+    depending on whether you've already called StatusMap() for all possible de,manu,channel
+    combinations or not...
+    */
+  AliMUONVStore* StatusMap() const { return fStatusMap; }
+  
+  Int_t StatusMap(Int_t detElemId, Int_t manuId, Int_t manuChannel) const;
+  
+  /// Return status bit map to tell a pad is bad
   static Int_t SelfDeadMask() { return fgkSelfDead; }
   
-  AliMUONV2DStore* MakePadStatusMap(const AliMUONV2DStore& status,
-                                    Int_t mask);
+  void RefreshRejectProbabilities(); 
   
-  static AliMUONV2DStore* MakeEmptyPadStatusMap();
-
-
 private:
+  /// Not implemented
   AliMUONPadStatusMapMaker(const AliMUONPadStatusMapMaker&);
+  /// Not implemented
   AliMUONPadStatusMapMaker& operator=(const AliMUONPadStatusMapMaker&);
 
 private:
     
-  Int_t BitNumber(const AliMpPad& centerPad, const AliMpPad& testPad) const;
-
-  Int_t ComputeStatusMap(const TObjArray& neighbours, Int_t detElemId) const;
-  
-  Int_t GetPadStatus(Int_t detElemId, const AliMpPad& pad) const;
-  
-  Bool_t IsValid(const AliMpPad& pad, const TVector2& shift) const;
+  AliMUONVCalibParam* ComputeStatusMap(Int_t detElemId, Int_t manuId) const;
   
 private:
-    static Int_t fgkSelfDead; //!< status bit map to tell a pad is bad
-  const AliMUONV2DStore* fStatus; //!< status store
-  Int_t fMask; //!< mask to be tested
-  const AliMpVSegmentation* fSegmentation; //!< segmentation of current de
   
+  static Int_t fgkSelfDead; //!< status bit map to tell a pad is bad
+
+  /// Bit numbers
   enum EBitNumbers
   {
     kLeftBottomBit = 6,
@@ -70,7 +69,12 @@ private:
     kRightTopBit = 18
   };
   
-  TStopwatch* fTimerComputeStatusMap; //!< to time the ComputeStatusMap() method
+  const AliMUONPadStatusMaker& fkStatusMaker; //!< to access pad statuses
+  Int_t fMask; //!< mask to be tested
+  mutable AliMUONVStore* fStatusMap; //!< status map
+  AliMUONVStore* fRejectProbabilities; //!< reject probabilities (channel based, computed once per run)
+  AliMUONVStore* fRejectList; //!< reject list (which channels should be rejected, might change event-by-event for simulations)
+  Bool_t fComputeOnDemand; //!< whether we authorize to compute things on demand or not
   
   ClassDef(AliMUONPadStatusMapMaker,0) // Pad status map maker
 };