Connection to tree in Notify() seems to be safer.
[u/mrichter/AliRoot.git] / FMD / AliFMDBoolMap.h
index f97fa64..abb9858 100644 (file)
@@ -7,36 +7,87 @@
  * Created Mon Nov  8 12:51:51 2004 by Christian Holm Christensen
  */
 /* $Id$ */
+/** @file    AliFMDBoolMap.h
+    @author  Christian Holm Christensen <cholm@nbi.dk>
+    @date    Sun Mar 26 18:28:59 2006
+    @brief   Per strip boolean map
+*/
 //__________________________________________________________
 // 
 // Map of Bool_t for each FMD strip
+// Used in calibration and the like classes.
+// Used amoung other things for dead-channel map
 // 
 #ifndef ALIFMDMAP_H
 # include <AliFMDMap.h>
 #endif
 
+/** @class AliFMDBoolMap 
+    @brief MAp of per strip boolean values. 
+    @ingroup FMD_base
+ */
 class AliFMDBoolMap : public AliFMDMap
 {
 public:
+  /** Copy constructor 
+      @param other Object to copy from. */
   AliFMDBoolMap(const AliFMDBoolMap& other);
-  AliFMDBoolMap(size_t maxDet  = kMaxDetectors,
-                 size_t maxRing = kMaxRings,
-                 size_t maxSec  = kMaxSectors,
-                 size_t maxStr  = kMaxStrips);
-  virtual ~AliFMDBoolMap() { delete [] fData; }
+  /** 
+   * Constructor 
+   */
+  AliFMDBoolMap();
+  /** Constructor 
+      @param maxDet  Number of detectors (3)
+      @param maxRing Number of rings (2)
+      @param maxSec  Number of sectors (40)
+      @param maxStr  Number of strips (20) */
+  AliFMDBoolMap(UShort_t maxDet,
+               UShort_t maxRing = 0,
+               UShort_t maxSec  = 0,
+               UShort_t maxStr  = 0);
+  /** Destructor */
+  virtual ~AliFMDBoolMap() { if (fData) delete [] fData; }
+  /** Assignment operator 
+      @param other Object to assign from 
+      @return reference to this object.  */
   AliFMDBoolMap& operator=(const AliFMDBoolMap& other);
-  virtual void Clear(const Bool_t& v=Bool_t());
+  /** Reset to value 
+      @param v Value to reset from */
+  virtual void Reset(const Bool_t& v=Bool_t());
+  /** Access operator 
+      @param det   Detector 
+      @param ring  Ring 
+      @param sec   Sector  
+      @param str   Strip
+      @return  reference value stored for the strip */
   virtual Bool_t& operator()(UShort_t det,
-                                     Char_t   ring,
-                                     UShort_t sec,
-                                     UShort_t str);
+                            Char_t   ring,
+                            UShort_t sec,
+                            UShort_t str);
+  /** Access operator 
+      @param det   Detector 
+      @param ring  Ring 
+      @param sec   Sector  
+      @param str   Strip
+      @return  value stored for the strip */
   virtual const Bool_t& operator()(UShort_t det,
-                                           Char_t   ring,
-                                           UShort_t sec,
-                                           UShort_t str) const;
+                                  Char_t   ring,
+                                  UShort_t sec,
+                                  UShort_t str) const;
 protected:
-  Bool_t* fData; // The Data
-  ClassDef(AliFMDBoolMap,1) // Map of Bool_t data per strip
+  Int_t     MaxIndex()            const { return fTotal; }
+  Bool_t    AtAsBool(Int_t idx)   const { return fData[idx]; }
+  Bool_t&   AtAsBool(Int_t idx)         { return fData[idx]; }
+  Bool_t    IsBool()              const { return kTRUE; }  
+  Int_t     AtAsInt(Int_t idx)    const { return fData[idx] ? 1   : 0;   }
+  Float_t   AtAsFloat(Int_t idx)  const { return fData[idx] ? 1.F : 0.F; }
+  UShort_t  AtAsUShort(Int_t idx) const { return fData[idx] ? 1   : 0;   }
+  Int_t&    AtAsInt(Int_t idx)          { return AliFMDMap::AtAsInt(idx);    }
+  Float_t&  AtAsFloat(Int_t idx)        { return AliFMDMap::AtAsFloat(idx);  }
+  UShort_t& AtAsUShort(Int_t idx)       { return AliFMDMap::AtAsUShort(idx); }
+  Int_t  fTotal; // Total number of entries 
+  Bool_t* fData;  // [fTotal] The Data
+  ClassDef(AliFMDBoolMap,3) // Map of Bool_t data per strip
 };
 
 #endif