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$ */
/** @file    AliFMDEdepMap.cxx
    @author  Christian Holm Christensen <cholm@nbi.dk>
    @date    Mon Mar 27 12:39:50 2006
    @brief   Per strip map of energy deposited and number of hits 
    @ingroup FMD_sim
*/
//____________________________________________________________________
//                                                                          
// Contains a pair of energy deposited fEdep and number of hits  
// fN, fEdep is the summed energy deposition, and fN is the
// number of hits.  The map contains one such object or each strip.
// It is used to cache the data in the digitization classes
// AliFMDBaseDigitizer and so on. 
//
//
#include "AliFMDEdepMap.h"		// ALIFMDEDEPMAP_H

//____________________________________________________________________
ClassImp(AliFMDEdepMap)
#if 0
  ; // This is here to keep Emacs for indenting the next line
#endif

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

  
//____________________________________________________________________
AliFMDEdepMap::AliFMDEdepMap()
  : AliFMDMap(), 
    fTotal(0),
    fData(0)
{
  // Construct a map
  //
  // Parameters:
  //   None
}

//____________________________________________________________________
AliFMDEdepMap::AliFMDEdepMap(UShort_t maxDet, 
			     UShort_t maxRing, 
			     UShort_t maxSec, 
			     UShort_t maxStr)
  : AliFMDMap(maxDet, maxRing, maxSec, maxStr), 
    fTotal(fMaxDetectors * fMaxRings * fMaxSectors * fMaxStrips),
    fData(0)
{
  // Construct a map
  //
  // Parameters:
  //     maxDet       Maximum # of detectors
  //     maxRinf      Maximum # of rings
  //     maxSec       Maximum # of sectors
  //     maxStr       Maximum # of strips
  if (fTotal == 0) fTotal = 51200;
  fData  = new AliFMDEdepHitPair[fTotal];
}

//____________________________________________________________________
AliFMDEdepMap&
AliFMDEdepMap::operator=(const AliFMDEdepMap& other) 
{
  // Assignment operator
  if (&other == this) return *this; 
  fMaxDetectors = other.fMaxDetectors;
  fMaxRings     = other.fMaxRings;
  fMaxSectors   = other.fMaxSectors;
  fMaxStrips    = other.fMaxStrips;
  if (fData) delete [] fData;
  fTotal = fMaxDetectors * fMaxRings * fMaxSectors * fMaxStrips;
  if (fTotal == 0) fTotal = 51200;
  fData  = new AliFMDEdepHitPair[fTotal];
  for (Int_t i = 0; i < fTotal; i++) fData[i] = other.fData[i];
  return *this;
}

//____________________________________________________________________
void
AliFMDEdepMap::Reset() 
{
  // Reset to zero
  for (Int_t i = 0; i < fTotal; i++) { 
    fData[i].fEdep  = 0; 
    fData[i].fN     = 0; 
    fData[i].fNPrim = 0;
    fData[i].fLabels.Reset();
  };
}

//____________________________________________________________________
void
AliFMDEdepMap::Reset(const AliFMDEdepHitPair& val) 
{
  // Reset to val
  for (Int_t i = 0; i < fTotal; i++) { 
    fData[i].fEdep   = val.fEdep; 
    fData[i].fN      = val.fN; 
    fData[i].fNPrim  = val.fNPrim;
    fData[i].fLabels = val.fLabels;
  };
}

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