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.                  *
 **************************************************************************/

/*
$Log$
Revision 1.2  2005/11/03 13:09:19  hristov
Removing meaningless const declarations (linuxicc)

Revision 1.1  2005/10/11 12:31:50  masera
Preprocessor classes for SPD (Paul Nilsson)

*/

///////////////////////////////////////////////////////////////////////////
// AliITSBadChannelsSPD implementation by P. Nilsson 2005
// AUTHOR/CONTACT: Paul.Nilsson@cern.ch
//
// The class is used by the AliITSPreprocessorSPD class to store the
// final noisy and dead channel objects in the calibration database for
// the SPD.
//
// An instance of this container class contains all the "bad" channels,
// i.e. the noisy or dead channels of the SPD. It contains TObjArrays
// for each module of the SPD (240 in total for ALICE, and 6 for the 2004
// joint ITS beam test. The instance object should, once filled with data,
// be stored in the calibration database. This is done by the SPD
// preprocessor.
///////////////////////////////////////////////////////////////////////////

#include "AliITSBadChannelsSPD.h"

ClassImp(AliITSBadChannelsSPD)

//__________________________________________________________________________
AliITSBadChannelsSPD::AliITSBadChannelsSPD(void) :
  fIndexArraySize(0),
  fBadChannelsArraySize(0),
  fIndexArray(0x0),
  fBadChannelsArray(0x0)
{
  // Default constructor
}

//__________________________________________________________________________
AliITSBadChannelsSPD::AliITSBadChannelsSPD(const AliITSBadChannelsSPD &bc) :
  TObject(bc),
fIndexArraySize(bc.fIndexArraySize),
fBadChannelsArraySize(bc.fBadChannelsArraySize),
fIndexArray(0),
fBadChannelsArray(0){
  // Default copy constructor

  // Create new arrays
  fIndexArray = new Int_t[fIndexArraySize];
  fBadChannelsArray = new Int_t[fBadChannelsArraySize];

  // Copy arrays
  for (Int_t i = 0; i < fIndexArraySize; i++)
    {
      fIndexArray[i] = bc.fIndexArray[i];
    }
  for (Int_t i = 0; i < fBadChannelsArraySize; i++)
    {
      fBadChannelsArray[i] = bc.fBadChannelsArray[i];
    }
}

//__________________________________________________________________________
AliITSBadChannelsSPD::~AliITSBadChannelsSPD(void)
{
  // Default destructor

  delete [] fIndexArray;
  fIndexArray = 0;
  delete [] fBadChannelsArray;
  fBadChannelsArray = 0;
}

//__________________________________________________________________________
AliITSBadChannelsSPD& AliITSBadChannelsSPD::operator=(const AliITSBadChannelsSPD &bc)
{
  // Assignment operator
  
  // Guard against self-assignment
  if (this != &bc)
    {
      // Copy array sizes
      fIndexArraySize = bc.fIndexArraySize;
      fBadChannelsArraySize = bc.fBadChannelsArraySize;

      delete [] fIndexArray;
      fIndexArray = new Int_t[fIndexArraySize];

      delete [] fBadChannelsArray;
      fBadChannelsArray = new Int_t[fBadChannelsArraySize];

      // Copy arrays
      for (Int_t i = 0; i < fIndexArraySize; i++)
	{
	  fIndexArray[i] = bc.fIndexArray[i];
	}
      for (Int_t i = 0; i < fBadChannelsArraySize; i++)
	{
	  fBadChannelsArray[i] = bc.fBadChannelsArray[i];
	}
    }

  return *this;
}


//__________________________________________________________________________
void AliITSBadChannelsSPD::Put(Int_t* &badChannelsArray, const Int_t &badChannelsArraySize,
			       Int_t* &indexArray, const Int_t &indexArraySize)
{
  // Add the bad channels and index arrays

  fIndexArraySize = indexArraySize;
  fBadChannelsArraySize = badChannelsArraySize;

  fIndexArray = new Int_t[fIndexArraySize];
  fBadChannelsArray = new Int_t[fBadChannelsArraySize];

  // Copy the arrays
  for (Int_t i = 0; i < fIndexArraySize; i++)
    {
      fIndexArray[i] = indexArray[i];
    }
  for (Int_t i = 0; i < fBadChannelsArraySize; i++)
    {
      fBadChannelsArray[i] = badChannelsArray[i];
    }

}

//__________________________________________________________________________
Bool_t AliITSBadChannelsSPD::Get(Int_t* &badChannelsArray, Int_t* &indexArray) const
{
  // Get the bad channels and the index arrays

  Bool_t status = kTRUE;

  // Set the array pointers
  if (fIndexArraySize > 0)
    {
      badChannelsArray = fBadChannelsArray;
      indexArray = fIndexArray;
    }
  else
    {
      status = kFALSE;
    }

  return status;
}

//__________________________________________________________________________
Int_t* AliITSBadChannelsSPD::CreateModuleArray(Int_t module) const
{
  // Create an Int_t array for a given module

  Int_t *moduleArray = 0;

  const Int_t kSize = AliITSBadChannelsSPD::GetModuleArraySize(module);
  if (kSize > 0)
    {
      // Create a new array
      moduleArray = new Int_t[kSize];

      // Copy the module data into the module array from the bad channels array
      const Int_t kPosition = fIndexArray[module];
      for (Int_t index = 0; index < kSize; index++)
	{
	  moduleArray[index] = fBadChannelsArray[kPosition + index];
	}
    }

  return moduleArray;
}

//__________________________________________________________________________
TObjArray* AliITSBadChannelsSPD::CreateModuleObjArray(Int_t module) const
{
  // Create a TObjArray for a given module

  TObjArray *moduleArray = 0;

  const Int_t kSize = AliITSBadChannelsSPD::GetModuleObjArraySize(module);
  if (kSize > 0)
    {
      // Create a new array
      moduleArray = new TObjArray(kSize);

      // Copy the module data into the module array from the bad channels array

      // Get the start position of the data (skip the number of bad channels, i.e. the first stored number)
      Int_t position = fIndexArray[module] + 1;

      Int_t i = 0;
      while (i < kSize)
	{
	  // Create and add the current channel
	  Int_t p1 = position++;
	  Int_t p2 = position++;
	  AliITSChannelSPD *channel = new AliITSChannelSPD(fBadChannelsArray[p1], fBadChannelsArray[p2]);
	  moduleArray->Add(channel);

	  // Go to next bad channel
	  i++;
	}
    }

  return moduleArray;
}
 AliITSBadChannelsSPD.cxx:1
 AliITSBadChannelsSPD.cxx:2
 AliITSBadChannelsSPD.cxx:3
 AliITSBadChannelsSPD.cxx:4
 AliITSBadChannelsSPD.cxx:5
 AliITSBadChannelsSPD.cxx:6
 AliITSBadChannelsSPD.cxx:7
 AliITSBadChannelsSPD.cxx:8
 AliITSBadChannelsSPD.cxx:9
 AliITSBadChannelsSPD.cxx:10
 AliITSBadChannelsSPD.cxx:11
 AliITSBadChannelsSPD.cxx:12
 AliITSBadChannelsSPD.cxx:13
 AliITSBadChannelsSPD.cxx:14
 AliITSBadChannelsSPD.cxx:15
 AliITSBadChannelsSPD.cxx:16
 AliITSBadChannelsSPD.cxx:17
 AliITSBadChannelsSPD.cxx:18
 AliITSBadChannelsSPD.cxx:19
 AliITSBadChannelsSPD.cxx:20
 AliITSBadChannelsSPD.cxx:21
 AliITSBadChannelsSPD.cxx:22
 AliITSBadChannelsSPD.cxx:23
 AliITSBadChannelsSPD.cxx:24
 AliITSBadChannelsSPD.cxx:25
 AliITSBadChannelsSPD.cxx:26
 AliITSBadChannelsSPD.cxx:27
 AliITSBadChannelsSPD.cxx:28
 AliITSBadChannelsSPD.cxx:29
 AliITSBadChannelsSPD.cxx:30
 AliITSBadChannelsSPD.cxx:31
 AliITSBadChannelsSPD.cxx:32
 AliITSBadChannelsSPD.cxx:33
 AliITSBadChannelsSPD.cxx:34
 AliITSBadChannelsSPD.cxx:35
 AliITSBadChannelsSPD.cxx:36
 AliITSBadChannelsSPD.cxx:37
 AliITSBadChannelsSPD.cxx:38
 AliITSBadChannelsSPD.cxx:39
 AliITSBadChannelsSPD.cxx:40
 AliITSBadChannelsSPD.cxx:41
 AliITSBadChannelsSPD.cxx:42
 AliITSBadChannelsSPD.cxx:43
 AliITSBadChannelsSPD.cxx:44
 AliITSBadChannelsSPD.cxx:45
 AliITSBadChannelsSPD.cxx:46
 AliITSBadChannelsSPD.cxx:47
 AliITSBadChannelsSPD.cxx:48
 AliITSBadChannelsSPD.cxx:49
 AliITSBadChannelsSPD.cxx:50
 AliITSBadChannelsSPD.cxx:51
 AliITSBadChannelsSPD.cxx:52
 AliITSBadChannelsSPD.cxx:53
 AliITSBadChannelsSPD.cxx:54
 AliITSBadChannelsSPD.cxx:55
 AliITSBadChannelsSPD.cxx:56
 AliITSBadChannelsSPD.cxx:57
 AliITSBadChannelsSPD.cxx:58
 AliITSBadChannelsSPD.cxx:59
 AliITSBadChannelsSPD.cxx:60
 AliITSBadChannelsSPD.cxx:61
 AliITSBadChannelsSPD.cxx:62
 AliITSBadChannelsSPD.cxx:63
 AliITSBadChannelsSPD.cxx:64
 AliITSBadChannelsSPD.cxx:65
 AliITSBadChannelsSPD.cxx:66
 AliITSBadChannelsSPD.cxx:67
 AliITSBadChannelsSPD.cxx:68
 AliITSBadChannelsSPD.cxx:69
 AliITSBadChannelsSPD.cxx:70
 AliITSBadChannelsSPD.cxx:71
 AliITSBadChannelsSPD.cxx:72
 AliITSBadChannelsSPD.cxx:73
 AliITSBadChannelsSPD.cxx:74
 AliITSBadChannelsSPD.cxx:75
 AliITSBadChannelsSPD.cxx:76
 AliITSBadChannelsSPD.cxx:77
 AliITSBadChannelsSPD.cxx:78
 AliITSBadChannelsSPD.cxx:79
 AliITSBadChannelsSPD.cxx:80
 AliITSBadChannelsSPD.cxx:81
 AliITSBadChannelsSPD.cxx:82
 AliITSBadChannelsSPD.cxx:83
 AliITSBadChannelsSPD.cxx:84
 AliITSBadChannelsSPD.cxx:85
 AliITSBadChannelsSPD.cxx:86
 AliITSBadChannelsSPD.cxx:87
 AliITSBadChannelsSPD.cxx:88
 AliITSBadChannelsSPD.cxx:89
 AliITSBadChannelsSPD.cxx:90
 AliITSBadChannelsSPD.cxx:91
 AliITSBadChannelsSPD.cxx:92
 AliITSBadChannelsSPD.cxx:93
 AliITSBadChannelsSPD.cxx:94
 AliITSBadChannelsSPD.cxx:95
 AliITSBadChannelsSPD.cxx:96
 AliITSBadChannelsSPD.cxx:97
 AliITSBadChannelsSPD.cxx:98
 AliITSBadChannelsSPD.cxx:99
 AliITSBadChannelsSPD.cxx:100
 AliITSBadChannelsSPD.cxx:101
 AliITSBadChannelsSPD.cxx:102
 AliITSBadChannelsSPD.cxx:103
 AliITSBadChannelsSPD.cxx:104
 AliITSBadChannelsSPD.cxx:105
 AliITSBadChannelsSPD.cxx:106
 AliITSBadChannelsSPD.cxx:107
 AliITSBadChannelsSPD.cxx:108
 AliITSBadChannelsSPD.cxx:109
 AliITSBadChannelsSPD.cxx:110
 AliITSBadChannelsSPD.cxx:111
 AliITSBadChannelsSPD.cxx:112
 AliITSBadChannelsSPD.cxx:113
 AliITSBadChannelsSPD.cxx:114
 AliITSBadChannelsSPD.cxx:115
 AliITSBadChannelsSPD.cxx:116
 AliITSBadChannelsSPD.cxx:117
 AliITSBadChannelsSPD.cxx:118
 AliITSBadChannelsSPD.cxx:119
 AliITSBadChannelsSPD.cxx:120
 AliITSBadChannelsSPD.cxx:121
 AliITSBadChannelsSPD.cxx:122
 AliITSBadChannelsSPD.cxx:123
 AliITSBadChannelsSPD.cxx:124
 AliITSBadChannelsSPD.cxx:125
 AliITSBadChannelsSPD.cxx:126
 AliITSBadChannelsSPD.cxx:127
 AliITSBadChannelsSPD.cxx:128
 AliITSBadChannelsSPD.cxx:129
 AliITSBadChannelsSPD.cxx:130
 AliITSBadChannelsSPD.cxx:131
 AliITSBadChannelsSPD.cxx:132
 AliITSBadChannelsSPD.cxx:133
 AliITSBadChannelsSPD.cxx:134
 AliITSBadChannelsSPD.cxx:135
 AliITSBadChannelsSPD.cxx:136
 AliITSBadChannelsSPD.cxx:137
 AliITSBadChannelsSPD.cxx:138
 AliITSBadChannelsSPD.cxx:139
 AliITSBadChannelsSPD.cxx:140
 AliITSBadChannelsSPD.cxx:141
 AliITSBadChannelsSPD.cxx:142
 AliITSBadChannelsSPD.cxx:143
 AliITSBadChannelsSPD.cxx:144
 AliITSBadChannelsSPD.cxx:145
 AliITSBadChannelsSPD.cxx:146
 AliITSBadChannelsSPD.cxx:147
 AliITSBadChannelsSPD.cxx:148
 AliITSBadChannelsSPD.cxx:149
 AliITSBadChannelsSPD.cxx:150
 AliITSBadChannelsSPD.cxx:151
 AliITSBadChannelsSPD.cxx:152
 AliITSBadChannelsSPD.cxx:153
 AliITSBadChannelsSPD.cxx:154
 AliITSBadChannelsSPD.cxx:155
 AliITSBadChannelsSPD.cxx:156
 AliITSBadChannelsSPD.cxx:157
 AliITSBadChannelsSPD.cxx:158
 AliITSBadChannelsSPD.cxx:159
 AliITSBadChannelsSPD.cxx:160
 AliITSBadChannelsSPD.cxx:161
 AliITSBadChannelsSPD.cxx:162
 AliITSBadChannelsSPD.cxx:163
 AliITSBadChannelsSPD.cxx:164
 AliITSBadChannelsSPD.cxx:165
 AliITSBadChannelsSPD.cxx:166
 AliITSBadChannelsSPD.cxx:167
 AliITSBadChannelsSPD.cxx:168
 AliITSBadChannelsSPD.cxx:169
 AliITSBadChannelsSPD.cxx:170
 AliITSBadChannelsSPD.cxx:171
 AliITSBadChannelsSPD.cxx:172
 AliITSBadChannelsSPD.cxx:173
 AliITSBadChannelsSPD.cxx:174
 AliITSBadChannelsSPD.cxx:175
 AliITSBadChannelsSPD.cxx:176
 AliITSBadChannelsSPD.cxx:177
 AliITSBadChannelsSPD.cxx:178
 AliITSBadChannelsSPD.cxx:179
 AliITSBadChannelsSPD.cxx:180
 AliITSBadChannelsSPD.cxx:181
 AliITSBadChannelsSPD.cxx:182
 AliITSBadChannelsSPD.cxx:183
 AliITSBadChannelsSPD.cxx:184
 AliITSBadChannelsSPD.cxx:185
 AliITSBadChannelsSPD.cxx:186
 AliITSBadChannelsSPD.cxx:187
 AliITSBadChannelsSPD.cxx:188
 AliITSBadChannelsSPD.cxx:189
 AliITSBadChannelsSPD.cxx:190
 AliITSBadChannelsSPD.cxx:191
 AliITSBadChannelsSPD.cxx:192
 AliITSBadChannelsSPD.cxx:193
 AliITSBadChannelsSPD.cxx:194
 AliITSBadChannelsSPD.cxx:195
 AliITSBadChannelsSPD.cxx:196
 AliITSBadChannelsSPD.cxx:197
 AliITSBadChannelsSPD.cxx:198
 AliITSBadChannelsSPD.cxx:199
 AliITSBadChannelsSPD.cxx:200
 AliITSBadChannelsSPD.cxx:201
 AliITSBadChannelsSPD.cxx:202
 AliITSBadChannelsSPD.cxx:203
 AliITSBadChannelsSPD.cxx:204
 AliITSBadChannelsSPD.cxx:205
 AliITSBadChannelsSPD.cxx:206
 AliITSBadChannelsSPD.cxx:207
 AliITSBadChannelsSPD.cxx:208
 AliITSBadChannelsSPD.cxx:209
 AliITSBadChannelsSPD.cxx:210
 AliITSBadChannelsSPD.cxx:211
 AliITSBadChannelsSPD.cxx:212
 AliITSBadChannelsSPD.cxx:213
 AliITSBadChannelsSPD.cxx:214
 AliITSBadChannelsSPD.cxx:215
 AliITSBadChannelsSPD.cxx:216
 AliITSBadChannelsSPD.cxx:217
 AliITSBadChannelsSPD.cxx:218
 AliITSBadChannelsSPD.cxx:219
 AliITSBadChannelsSPD.cxx:220
 AliITSBadChannelsSPD.cxx:221
 AliITSBadChannelsSPD.cxx:222
 AliITSBadChannelsSPD.cxx:223
 AliITSBadChannelsSPD.cxx:224
 AliITSBadChannelsSPD.cxx:225
 AliITSBadChannelsSPD.cxx:226