ROOT logo
#ifndef ALIFMDBOOLMAP_H
#define ALIFMDBOOLMAP_H
/* Copyright (c) 2004, ALICE Experiment @ CERN.
 * All rights reserved
 * See AliFMDBoolMap.cxx for full copyright notice
 * 
 * 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);
  /** 
   * 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);
  /** 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);
  /** 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;
  Bool_t* Data() const { return fData; }
  Int_t   Total() const { return fTotal; }
  void*   Ptr() const { return reinterpret_cast<void*>(fData); }
protected:
  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
//__________________________________________________________
// 
// Local Variables:
//   mode: C++
// End:
//
 AliFMDBoolMap.h:1
 AliFMDBoolMap.h:2
 AliFMDBoolMap.h:3
 AliFMDBoolMap.h:4
 AliFMDBoolMap.h:5
 AliFMDBoolMap.h:6
 AliFMDBoolMap.h:7
 AliFMDBoolMap.h:8
 AliFMDBoolMap.h:9
 AliFMDBoolMap.h:10
 AliFMDBoolMap.h:11
 AliFMDBoolMap.h:12
 AliFMDBoolMap.h:13
 AliFMDBoolMap.h:14
 AliFMDBoolMap.h:15
 AliFMDBoolMap.h:16
 AliFMDBoolMap.h:17
 AliFMDBoolMap.h:18
 AliFMDBoolMap.h:19
 AliFMDBoolMap.h:20
 AliFMDBoolMap.h:21
 AliFMDBoolMap.h:22
 AliFMDBoolMap.h:23
 AliFMDBoolMap.h:24
 AliFMDBoolMap.h:25
 AliFMDBoolMap.h:26
 AliFMDBoolMap.h:27
 AliFMDBoolMap.h:28
 AliFMDBoolMap.h:29
 AliFMDBoolMap.h:30
 AliFMDBoolMap.h:31
 AliFMDBoolMap.h:32
 AliFMDBoolMap.h:33
 AliFMDBoolMap.h:34
 AliFMDBoolMap.h:35
 AliFMDBoolMap.h:36
 AliFMDBoolMap.h:37
 AliFMDBoolMap.h:38
 AliFMDBoolMap.h:39
 AliFMDBoolMap.h:40
 AliFMDBoolMap.h:41
 AliFMDBoolMap.h:42
 AliFMDBoolMap.h:43
 AliFMDBoolMap.h:44
 AliFMDBoolMap.h:45
 AliFMDBoolMap.h:46
 AliFMDBoolMap.h:47
 AliFMDBoolMap.h:48
 AliFMDBoolMap.h:49
 AliFMDBoolMap.h:50
 AliFMDBoolMap.h:51
 AliFMDBoolMap.h:52
 AliFMDBoolMap.h:53
 AliFMDBoolMap.h:54
 AliFMDBoolMap.h:55
 AliFMDBoolMap.h:56
 AliFMDBoolMap.h:57
 AliFMDBoolMap.h:58
 AliFMDBoolMap.h:59
 AliFMDBoolMap.h:60
 AliFMDBoolMap.h:61
 AliFMDBoolMap.h:62
 AliFMDBoolMap.h:63
 AliFMDBoolMap.h:64
 AliFMDBoolMap.h:65
 AliFMDBoolMap.h:66
 AliFMDBoolMap.h:67
 AliFMDBoolMap.h:68
 AliFMDBoolMap.h:69
 AliFMDBoolMap.h:70
 AliFMDBoolMap.h:71
 AliFMDBoolMap.h:72
 AliFMDBoolMap.h:73
 AliFMDBoolMap.h:74
 AliFMDBoolMap.h:75
 AliFMDBoolMap.h:76
 AliFMDBoolMap.h:77
 AliFMDBoolMap.h:78
 AliFMDBoolMap.h:79
 AliFMDBoolMap.h:80
 AliFMDBoolMap.h:81
 AliFMDBoolMap.h:82
 AliFMDBoolMap.h:83
 AliFMDBoolMap.h:84
 AliFMDBoolMap.h:85
 AliFMDBoolMap.h:86
 AliFMDBoolMap.h:87
 AliFMDBoolMap.h:88
 AliFMDBoolMap.h:89
 AliFMDBoolMap.h:90
 AliFMDBoolMap.h:91
 AliFMDBoolMap.h:92
 AliFMDBoolMap.h:93
 AliFMDBoolMap.h:94
 AliFMDBoolMap.h:95
 AliFMDBoolMap.h:96
 AliFMDBoolMap.h:97
 AliFMDBoolMap.h:98
 AliFMDBoolMap.h:99
 AliFMDBoolMap.h:100
 AliFMDBoolMap.h:101
 AliFMDBoolMap.h:102