ROOT logo
/**************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN.          *
 * All rights reserved.                                       *
 *                                                            *
 * Author: The ALICE Off-line Project.                        *
 * Contributors are mentioned in the code where appropriate.  *
 *                                                            *
 * Permission to use, copy, modify and distribute this        *
 * software and its documentation strictly for non-commercial *
 * purposes is hereby granted without fee, provided that the  *
 * above copyright notice appears in all copies and that both *
 * the copyright notice and this permission notice appear in  *
 * the supporting documentation. The authors make no claims   *
 * about the suitability of this software for any purpose. It *
 * is provided "as is" without express or implied warranty.   *
 **************************************************************/
/* $Id$ */
//__________________________________________________________
// 
// Map of per strip Float_t information
// the floats are indexed by the coordinates 
//     DETECTOR # (1-3)
//     RING ID    ('I' or 'O', any case)
//     SECTOR #   (0-39)
//     STRIP #    (0-511)
//
// 
// Created Mon Nov  8 12:51:51 2004 by Christian Holm Christensen
// 
#include "AliFMDFloatMap.h"	//ALIFMDFLOATMAP_H
//__________________________________________________________
ClassImp(AliFMDFloatMap)
#if 0
  ; // This is here to keep Emacs for indenting the next line
#endif

//__________________________________________________________
AliFMDFloatMap::AliFMDFloatMap(const AliFMDMap& other)
  : AliFMDMap(other),
    fTotal(fMaxDetectors * fMaxRings * fMaxSectors * fMaxStrips),
    fData(0)
{
  if (fTotal == 0) fTotal = 51200;
  fData = new Float_t[fTotal];
  // Copy constructor
  if (!other.IsFloat()) return;
  for (Int_t i = 0; i < fTotal; i++) fData[i] = other.AtAsFloat(i);
}

//__________________________________________________________
AliFMDFloatMap::AliFMDFloatMap(const AliFMDFloatMap& other)
  : AliFMDMap(other.fMaxDetectors,
              other.fMaxRings,
              other.fMaxSectors,
              other.fMaxStrips),
    fTotal(fMaxDetectors * fMaxRings * fMaxSectors * fMaxStrips),
    fData(0)
{
  if (fTotal == 0) fTotal = 51200;
  fData = new Float_t[fTotal];
  // Copy constructor
  for (Int_t i = 0; i < fTotal; i++)
    fData[i] = other.fData[i];
}

//__________________________________________________________
AliFMDFloatMap::AliFMDFloatMap()
  : AliFMDMap(),
    fTotal(0),
    fData(0)
{
  // Constructor.
  // Parameters:
  //	None
}

//__________________________________________________________
AliFMDFloatMap::AliFMDFloatMap(Int_t maxDet,
			       Int_t maxRing,
			       Int_t maxSec,
			       Int_t maxStr)
  : AliFMDMap(maxDet, maxRing, maxSec, maxStr),
    fTotal(fMaxDetectors * fMaxRings * fMaxSectors * fMaxStrips),
    fData(0)
{
  // Constructor.
  // Parameters:
  //	maxDet	Maximum number of detectors
  //	maxRing	Maximum number of rings per detector
  //	maxSec	Maximum number of sectors per ring
  //	maxStr	Maximum number of strips per sector
  if (fTotal == 0) fTotal = 51200;
  fData = new Float_t[fTotal];
  Reset(0);
}

//__________________________________________________________
AliFMDFloatMap&
AliFMDFloatMap::operator=(const AliFMDFloatMap& other)
{
  // Assignment operator 
  if(&other != this){
    if(fMaxDetectors!= other.fMaxDetectors||
       fMaxRings    != other.fMaxRings||
       fMaxSectors  != other.fMaxSectors||
       fMaxStrips   != other.fMaxStrips){
      // allocate new memory only if the array size is different....
      fMaxDetectors = other.fMaxDetectors;
      fMaxRings     = other.fMaxRings;
      fMaxSectors   = other.fMaxSectors;
      fMaxStrips    = other.fMaxStrips;
      fTotal        = fMaxDetectors * fMaxRings * fMaxSectors * fMaxStrips;
      if (fTotal == 0) fTotal = 51200;
      if (fData) delete [] fData;
      fData = new Float_t[fTotal];
    }
    for (Int_t i = 0; i < fTotal; i++) fData[i] = other.fData[i];
  }
  return *this;
}


//__________________________________________________________
void
AliFMDFloatMap::Reset(const Float_t& val)
{
  // Reset map to val
  for (Int_t i = 0; i < fTotal; i++) fData[i] = val;
}

//__________________________________________________________
Float_t&
AliFMDFloatMap::operator()(UShort_t det, 
			   Char_t   ring, 
			   UShort_t sec, 
			   UShort_t str)
{
  // Get data
  // Parameters:
  //	det	Detector #
  //	ring	Ring ID
  //	sec	Sector #
  //	str	Strip #
  // Returns appropriate data
  return fData[CalcIndex(det, ring, sec, str)];
}

//__________________________________________________________
const Float_t&
AliFMDFloatMap::operator()(UShort_t det, 
			   Char_t   ring, 
			   UShort_t sec, 
			   UShort_t str) const
{
  // Get data
  // Parameters:
  //	det	Detector #
  //	ring	Ring ID
  //	sec	Sector #
  //	str	Strip #
  // Returns appropriate data
  return fData[CalcIndex(det, ring, sec, str)];
}

//__________________________________________________________
// 
// EOF
// 

 AliFMDFloatMap.cxx:1
 AliFMDFloatMap.cxx:2
 AliFMDFloatMap.cxx:3
 AliFMDFloatMap.cxx:4
 AliFMDFloatMap.cxx:5
 AliFMDFloatMap.cxx:6
 AliFMDFloatMap.cxx:7
 AliFMDFloatMap.cxx:8
 AliFMDFloatMap.cxx:9
 AliFMDFloatMap.cxx:10
 AliFMDFloatMap.cxx:11
 AliFMDFloatMap.cxx:12
 AliFMDFloatMap.cxx:13
 AliFMDFloatMap.cxx:14
 AliFMDFloatMap.cxx:15
 AliFMDFloatMap.cxx:16
 AliFMDFloatMap.cxx:17
 AliFMDFloatMap.cxx:18
 AliFMDFloatMap.cxx:19
 AliFMDFloatMap.cxx:20
 AliFMDFloatMap.cxx:21
 AliFMDFloatMap.cxx:22
 AliFMDFloatMap.cxx:23
 AliFMDFloatMap.cxx:24
 AliFMDFloatMap.cxx:25
 AliFMDFloatMap.cxx:26
 AliFMDFloatMap.cxx:27
 AliFMDFloatMap.cxx:28
 AliFMDFloatMap.cxx:29
 AliFMDFloatMap.cxx:30
 AliFMDFloatMap.cxx:31
 AliFMDFloatMap.cxx:32
 AliFMDFloatMap.cxx:33
 AliFMDFloatMap.cxx:34
 AliFMDFloatMap.cxx:35
 AliFMDFloatMap.cxx:36
 AliFMDFloatMap.cxx:37
 AliFMDFloatMap.cxx:38
 AliFMDFloatMap.cxx:39
 AliFMDFloatMap.cxx:40
 AliFMDFloatMap.cxx:41
 AliFMDFloatMap.cxx:42
 AliFMDFloatMap.cxx:43
 AliFMDFloatMap.cxx:44
 AliFMDFloatMap.cxx:45
 AliFMDFloatMap.cxx:46
 AliFMDFloatMap.cxx:47
 AliFMDFloatMap.cxx:48
 AliFMDFloatMap.cxx:49
 AliFMDFloatMap.cxx:50
 AliFMDFloatMap.cxx:51
 AliFMDFloatMap.cxx:52
 AliFMDFloatMap.cxx:53
 AliFMDFloatMap.cxx:54
 AliFMDFloatMap.cxx:55
 AliFMDFloatMap.cxx:56
 AliFMDFloatMap.cxx:57
 AliFMDFloatMap.cxx:58
 AliFMDFloatMap.cxx:59
 AliFMDFloatMap.cxx:60
 AliFMDFloatMap.cxx:61
 AliFMDFloatMap.cxx:62
 AliFMDFloatMap.cxx:63
 AliFMDFloatMap.cxx:64
 AliFMDFloatMap.cxx:65
 AliFMDFloatMap.cxx:66
 AliFMDFloatMap.cxx:67
 AliFMDFloatMap.cxx:68
 AliFMDFloatMap.cxx:69
 AliFMDFloatMap.cxx:70
 AliFMDFloatMap.cxx:71
 AliFMDFloatMap.cxx:72
 AliFMDFloatMap.cxx:73
 AliFMDFloatMap.cxx:74
 AliFMDFloatMap.cxx:75
 AliFMDFloatMap.cxx:76
 AliFMDFloatMap.cxx:77
 AliFMDFloatMap.cxx:78
 AliFMDFloatMap.cxx:79
 AliFMDFloatMap.cxx:80
 AliFMDFloatMap.cxx:81
 AliFMDFloatMap.cxx:82
 AliFMDFloatMap.cxx:83
 AliFMDFloatMap.cxx:84
 AliFMDFloatMap.cxx:85
 AliFMDFloatMap.cxx:86
 AliFMDFloatMap.cxx:87
 AliFMDFloatMap.cxx:88
 AliFMDFloatMap.cxx:89
 AliFMDFloatMap.cxx:90
 AliFMDFloatMap.cxx:91
 AliFMDFloatMap.cxx:92
 AliFMDFloatMap.cxx:93
 AliFMDFloatMap.cxx:94
 AliFMDFloatMap.cxx:95
 AliFMDFloatMap.cxx:96
 AliFMDFloatMap.cxx:97
 AliFMDFloatMap.cxx:98
 AliFMDFloatMap.cxx:99
 AliFMDFloatMap.cxx:100
 AliFMDFloatMap.cxx:101
 AliFMDFloatMap.cxx:102
 AliFMDFloatMap.cxx:103
 AliFMDFloatMap.cxx:104
 AliFMDFloatMap.cxx:105
 AliFMDFloatMap.cxx:106
 AliFMDFloatMap.cxx:107
 AliFMDFloatMap.cxx:108
 AliFMDFloatMap.cxx:109
 AliFMDFloatMap.cxx:110
 AliFMDFloatMap.cxx:111
 AliFMDFloatMap.cxx:112
 AliFMDFloatMap.cxx:113
 AliFMDFloatMap.cxx:114
 AliFMDFloatMap.cxx:115
 AliFMDFloatMap.cxx:116
 AliFMDFloatMap.cxx:117
 AliFMDFloatMap.cxx:118
 AliFMDFloatMap.cxx:119
 AliFMDFloatMap.cxx:120
 AliFMDFloatMap.cxx:121
 AliFMDFloatMap.cxx:122
 AliFMDFloatMap.cxx:123
 AliFMDFloatMap.cxx:124
 AliFMDFloatMap.cxx:125
 AliFMDFloatMap.cxx:126
 AliFMDFloatMap.cxx:127
 AliFMDFloatMap.cxx:128
 AliFMDFloatMap.cxx:129
 AliFMDFloatMap.cxx:130
 AliFMDFloatMap.cxx:131
 AliFMDFloatMap.cxx:132
 AliFMDFloatMap.cxx:133
 AliFMDFloatMap.cxx:134
 AliFMDFloatMap.cxx:135
 AliFMDFloatMap.cxx:136
 AliFMDFloatMap.cxx:137
 AliFMDFloatMap.cxx:138
 AliFMDFloatMap.cxx:139
 AliFMDFloatMap.cxx:140
 AliFMDFloatMap.cxx:141
 AliFMDFloatMap.cxx:142
 AliFMDFloatMap.cxx:143
 AliFMDFloatMap.cxx:144
 AliFMDFloatMap.cxx:145
 AliFMDFloatMap.cxx:146
 AliFMDFloatMap.cxx:147
 AliFMDFloatMap.cxx:148
 AliFMDFloatMap.cxx:149
 AliFMDFloatMap.cxx:150
 AliFMDFloatMap.cxx:151
 AliFMDFloatMap.cxx:152
 AliFMDFloatMap.cxx:153
 AliFMDFloatMap.cxx:154
 AliFMDFloatMap.cxx:155
 AliFMDFloatMap.cxx:156
 AliFMDFloatMap.cxx:157
 AliFMDFloatMap.cxx:158
 AliFMDFloatMap.cxx:159
 AliFMDFloatMap.cxx:160
 AliFMDFloatMap.cxx:161
 AliFMDFloatMap.cxx:162
 AliFMDFloatMap.cxx:163
 AliFMDFloatMap.cxx:164
 AliFMDFloatMap.cxx:165
 AliFMDFloatMap.cxx:166
 AliFMDFloatMap.cxx:167
 AliFMDFloatMap.cxx:168
 AliFMDFloatMap.cxx:169