Compatibility with the trunk of ROOT
[u/mrichter/AliRoot.git] / FMD / AliFMDBoolMap.cxx
1 /**************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN.          *
3  * All rights reserved.                                       *
4  *                                                            *
5  * Author: The ALICE Off-line Project.                        *
6  * Contributors are mentioned in the code where appropriate.  *
7  *                                                            *
8  * Permission to use, copy, modify and distribute this        *
9  * software and its documentation strictly for non-commercial *
10  * purposes is hereby granted without fee, provided that the  *
11  * above copyright notice appears in all copies and that both *
12  * the copyright notice and this permission notice appear in  *
13  * the supporting documentation. The authors make no claims   *
14  * about the suitability of this software for any purpose. It *
15  * is provided "as is" without express or implied warranty.   *
16  **************************************************************/
17 /* $Id$ */
18 /** @file    AliFMDBoolMap.cxx
19     @author  Christian Holm Christensen <cholm@nbi.dk>
20     @date    Sun Mar 26 18:28:42 2006
21     @brief   Per strip Boolean map
22 */
23 //__________________________________________________________
24 // 
25 // Map of Bool_t for each FMD strip
26 // Used in calibration and the like classes.
27 // Used amoung other things for dead-channel map
28 // Can also be used for other stuff too
29 // Created Mon Nov  8 12:51:51 2004 by Christian Holm Christensen
30 // 
31 #include "AliFMDBoolMap.h"      //ALIFMDBOOLMAP_H
32 //__________________________________________________________
33 ClassImp(AliFMDBoolMap)
34 #if 0
35   ; // This is here to keep Emacs for indenting the next line
36 #endif
37 //__________________________________________________________
38 AliFMDBoolMap::AliFMDBoolMap(const AliFMDBoolMap& other)
39   : AliFMDMap(other.fMaxDetectors,
40               other.fMaxRings,
41               other.fMaxSectors,
42               other.fMaxStrips),
43     fTotal(fMaxDetectors * fMaxRings * fMaxSectors * fMaxStrips),
44     fData(0)
45 {
46   // Copy constructor
47   if (fTotal == 0) fTotal = 51200;
48   fData  = new Bool_t[fTotal];
49   for (Int_t i = 0; i < fTotal; i++) fData[i] = other.fData[i];
50 }
51
52 //__________________________________________________________
53 AliFMDBoolMap::AliFMDBoolMap()
54   : AliFMDMap(),
55     fTotal(0),
56     fData(0)
57 {
58   // Constructor.
59   // Parameters:
60   //   None
61 }
62
63 //__________________________________________________________
64 AliFMDBoolMap::AliFMDBoolMap(UShort_t maxDet,
65                              UShort_t maxRing,
66                              UShort_t maxSec,
67                              UShort_t maxStr)
68   : AliFMDMap(maxDet, maxRing, maxSec, maxStr),
69     fTotal(fMaxDetectors * fMaxRings * fMaxSectors * fMaxStrips),
70     fData(0)
71 {
72   // Constructor.
73   // Parameters:
74   //    maxDet  Maximum number of detectors
75   //    maxRing Maximum number of rings per detector
76   //    maxSec  Maximum number of sectors per ring
77   //    maxStr  Maximum number of strips per sector
78   if (fTotal == 0) fTotal = 51200;
79   fData  = new Bool_t[fTotal];
80   Reset();
81 }
82
83 //__________________________________________________________
84 AliFMDBoolMap&
85 AliFMDBoolMap::operator=(const AliFMDBoolMap& other)
86 {
87   // Assignment operator 
88   if (&other == this) return *this; 
89   fMaxDetectors = other.fMaxDetectors;
90   fMaxRings     = other.fMaxRings;
91   fMaxSectors   = other.fMaxSectors;
92   fMaxStrips    = other.fMaxStrips;
93   if (fData) delete [] fData;
94   fTotal = fMaxDetectors * fMaxRings * fMaxSectors * fMaxStrips;
95   if (fTotal == 0) fTotal = 51200;
96   fData  = new Bool_t[fTotal];
97   for (Int_t i = 0; i < fTotal; i++) fData[i] = other.fData[i];
98   return *this;
99 }
100
101 //__________________________________________________________
102 void
103 AliFMDBoolMap::Reset(const Bool_t& val)
104 {
105   // Reset map to val
106   for (Int_t i = 0; i < fTotal; i++) fData[i] = val;
107 }
108
109 //__________________________________________________________
110 Bool_t&
111 AliFMDBoolMap::operator()(UShort_t det, 
112                           Char_t   ring, 
113                           UShort_t sec, 
114                           UShort_t str)
115 {
116   // Get data
117   // Parameters:
118   //    det     Detector #
119   //    ring    Ring ID
120   //    sec     Sector #
121   //    str     Strip #
122   // Returns appropriate data
123   return fData[CalcIndex(det, ring, sec, str)];
124 }
125
126 //__________________________________________________________
127 const Bool_t&
128 AliFMDBoolMap::operator()(UShort_t det, 
129                           Char_t   ring, 
130                           UShort_t sec, 
131                           UShort_t str) const
132 {
133   // Get data
134   // Parameters:
135   //    det     Detector #
136   //    ring    Ring ID
137   //    sec     Sector #
138   //    str     Strip #
139   // Returns appropriate data
140   return fData[CalcIndex(det, ring, sec, str)];
141 }
142
143 //__________________________________________________________
144 // 
145 // EOF
146 // 
147