ROOT logo
/**************************************************************************
 * Copyright(c) 2007, 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$ */
 
///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// PHOS EmCal bad channels map.                                              //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////
 
#include "AliPHOSEmcBadChannelsMap.h"
#include "AliPHOSGeometry.h"
 
ClassImp(AliPHOSEmcBadChannelsMap)
 
//________________________________________________________________

  AliPHOSEmcBadChannelsMap::AliPHOSEmcBadChannelsMap() : fBads(-1)
{
  Reset();
}

//________________________________________________________________

void AliPHOSEmcBadChannelsMap::Reset()
{
  //Set all channels as good.
  
  for(Int_t module=0; module<5; module++) 
    for(Int_t column=0; column<56; column++) 
      for(Int_t row=0; row<64; row++) 
	fBadChannelEmc[module][column][row] = kFALSE;
 
  fBads=0;

}

//________________________________________________________________

AliPHOSEmcBadChannelsMap::AliPHOSEmcBadChannelsMap(const AliPHOSEmcBadChannelsMap &map):
  TObject(map),fBads(map.fBads)
{
  //Copy constructor.

  for(Int_t module=0; module<5; module++) 
    for(Int_t column=0; column<56; column++) 
      for(Int_t row=0; row<64; row++) 
	fBadChannelEmc[module][column][row] = map.fBadChannelEmc[module][column][row];
 
}

//________________________________________________________________

AliPHOSEmcBadChannelsMap& AliPHOSEmcBadChannelsMap::operator= (const AliPHOSEmcBadChannelsMap &map) 
{
  //Assignment operator.

  if(this != &map) {
    fBads = map.fBads;
    for(Int_t module=0; module<5; module++) 
      for(Int_t column=0; column<56; column++) 
	for(Int_t row=0; row<64; row++) 
	  fBadChannelEmc[module][column][row] = map.fBadChannelEmc[module][column][row]; 
  }

  return *this;
}

//_________________________________________________________________

void AliPHOSEmcBadChannelsMap::SetBadChannel(Int_t module, Int_t col, Int_t row)
{
  // Declare a channel (module,col,row) as a bad, if it was not set before

  if (!fBadChannelEmc[module-1][col-1][row-1]) {
    fBadChannelEmc[module-1][col-1][row-1] = kTRUE;
    ++fBads; 
  }
}
//_________________________________________________________________

void AliPHOSEmcBadChannelsMap::BadChannelIds(Int_t *badIds)
{
  //Fill array badIds by the Ids of bad channels.
  //Array badIds of length GetNumOfBadChannels() should be prepared in advance. 

  if(!badIds) return;
  if(!fBads>0) return;

  AliPHOSGeometry* geom = AliPHOSGeometry::GetInstance();

  if(!geom)
    geom = AliPHOSGeometry::GetInstance("IHEP");

  Int_t absId;
  Int_t relId[4];

  Int_t iBad = 0;
  relId[1] =  0; // EMC crystal

  for(Int_t mod=1; mod<6; mod++) { 
    for(Int_t col=1; col<57; col++) { 
      for(Int_t row=1; row<65; row++) {
	if(IsBadChannel(mod,col,row)) {
	  relId[0] = mod;
	  relId[3] = col;
	  relId[2] = row;
	  geom->RelToAbsNumbering(relId,absId);
	  badIds[iBad]=absId;
	  iBad++;
	}
      }
    }
  }

}
 AliPHOSEmcBadChannelsMap.cxx:1
 AliPHOSEmcBadChannelsMap.cxx:2
 AliPHOSEmcBadChannelsMap.cxx:3
 AliPHOSEmcBadChannelsMap.cxx:4
 AliPHOSEmcBadChannelsMap.cxx:5
 AliPHOSEmcBadChannelsMap.cxx:6
 AliPHOSEmcBadChannelsMap.cxx:7
 AliPHOSEmcBadChannelsMap.cxx:8
 AliPHOSEmcBadChannelsMap.cxx:9
 AliPHOSEmcBadChannelsMap.cxx:10
 AliPHOSEmcBadChannelsMap.cxx:11
 AliPHOSEmcBadChannelsMap.cxx:12
 AliPHOSEmcBadChannelsMap.cxx:13
 AliPHOSEmcBadChannelsMap.cxx:14
 AliPHOSEmcBadChannelsMap.cxx:15
 AliPHOSEmcBadChannelsMap.cxx:16
 AliPHOSEmcBadChannelsMap.cxx:17
 AliPHOSEmcBadChannelsMap.cxx:18
 AliPHOSEmcBadChannelsMap.cxx:19
 AliPHOSEmcBadChannelsMap.cxx:20
 AliPHOSEmcBadChannelsMap.cxx:21
 AliPHOSEmcBadChannelsMap.cxx:22
 AliPHOSEmcBadChannelsMap.cxx:23
 AliPHOSEmcBadChannelsMap.cxx:24
 AliPHOSEmcBadChannelsMap.cxx:25
 AliPHOSEmcBadChannelsMap.cxx:26
 AliPHOSEmcBadChannelsMap.cxx:27
 AliPHOSEmcBadChannelsMap.cxx:28
 AliPHOSEmcBadChannelsMap.cxx:29
 AliPHOSEmcBadChannelsMap.cxx:30
 AliPHOSEmcBadChannelsMap.cxx:31
 AliPHOSEmcBadChannelsMap.cxx:32
 AliPHOSEmcBadChannelsMap.cxx:33
 AliPHOSEmcBadChannelsMap.cxx:34
 AliPHOSEmcBadChannelsMap.cxx:35
 AliPHOSEmcBadChannelsMap.cxx:36
 AliPHOSEmcBadChannelsMap.cxx:37
 AliPHOSEmcBadChannelsMap.cxx:38
 AliPHOSEmcBadChannelsMap.cxx:39
 AliPHOSEmcBadChannelsMap.cxx:40
 AliPHOSEmcBadChannelsMap.cxx:41
 AliPHOSEmcBadChannelsMap.cxx:42
 AliPHOSEmcBadChannelsMap.cxx:43
 AliPHOSEmcBadChannelsMap.cxx:44
 AliPHOSEmcBadChannelsMap.cxx:45
 AliPHOSEmcBadChannelsMap.cxx:46
 AliPHOSEmcBadChannelsMap.cxx:47
 AliPHOSEmcBadChannelsMap.cxx:48
 AliPHOSEmcBadChannelsMap.cxx:49
 AliPHOSEmcBadChannelsMap.cxx:50
 AliPHOSEmcBadChannelsMap.cxx:51
 AliPHOSEmcBadChannelsMap.cxx:52
 AliPHOSEmcBadChannelsMap.cxx:53
 AliPHOSEmcBadChannelsMap.cxx:54
 AliPHOSEmcBadChannelsMap.cxx:55
 AliPHOSEmcBadChannelsMap.cxx:56
 AliPHOSEmcBadChannelsMap.cxx:57
 AliPHOSEmcBadChannelsMap.cxx:58
 AliPHOSEmcBadChannelsMap.cxx:59
 AliPHOSEmcBadChannelsMap.cxx:60
 AliPHOSEmcBadChannelsMap.cxx:61
 AliPHOSEmcBadChannelsMap.cxx:62
 AliPHOSEmcBadChannelsMap.cxx:63
 AliPHOSEmcBadChannelsMap.cxx:64
 AliPHOSEmcBadChannelsMap.cxx:65
 AliPHOSEmcBadChannelsMap.cxx:66
 AliPHOSEmcBadChannelsMap.cxx:67
 AliPHOSEmcBadChannelsMap.cxx:68
 AliPHOSEmcBadChannelsMap.cxx:69
 AliPHOSEmcBadChannelsMap.cxx:70
 AliPHOSEmcBadChannelsMap.cxx:71
 AliPHOSEmcBadChannelsMap.cxx:72
 AliPHOSEmcBadChannelsMap.cxx:73
 AliPHOSEmcBadChannelsMap.cxx:74
 AliPHOSEmcBadChannelsMap.cxx:75
 AliPHOSEmcBadChannelsMap.cxx:76
 AliPHOSEmcBadChannelsMap.cxx:77
 AliPHOSEmcBadChannelsMap.cxx:78
 AliPHOSEmcBadChannelsMap.cxx:79
 AliPHOSEmcBadChannelsMap.cxx:80
 AliPHOSEmcBadChannelsMap.cxx:81
 AliPHOSEmcBadChannelsMap.cxx:82
 AliPHOSEmcBadChannelsMap.cxx:83
 AliPHOSEmcBadChannelsMap.cxx:84
 AliPHOSEmcBadChannelsMap.cxx:85
 AliPHOSEmcBadChannelsMap.cxx:86
 AliPHOSEmcBadChannelsMap.cxx:87
 AliPHOSEmcBadChannelsMap.cxx:88
 AliPHOSEmcBadChannelsMap.cxx:89
 AliPHOSEmcBadChannelsMap.cxx:90
 AliPHOSEmcBadChannelsMap.cxx:91
 AliPHOSEmcBadChannelsMap.cxx:92
 AliPHOSEmcBadChannelsMap.cxx:93
 AliPHOSEmcBadChannelsMap.cxx:94
 AliPHOSEmcBadChannelsMap.cxx:95
 AliPHOSEmcBadChannelsMap.cxx:96
 AliPHOSEmcBadChannelsMap.cxx:97
 AliPHOSEmcBadChannelsMap.cxx:98
 AliPHOSEmcBadChannelsMap.cxx:99
 AliPHOSEmcBadChannelsMap.cxx:100
 AliPHOSEmcBadChannelsMap.cxx:101
 AliPHOSEmcBadChannelsMap.cxx:102
 AliPHOSEmcBadChannelsMap.cxx:103
 AliPHOSEmcBadChannelsMap.cxx:104
 AliPHOSEmcBadChannelsMap.cxx:105
 AliPHOSEmcBadChannelsMap.cxx:106
 AliPHOSEmcBadChannelsMap.cxx:107
 AliPHOSEmcBadChannelsMap.cxx:108
 AliPHOSEmcBadChannelsMap.cxx:109
 AliPHOSEmcBadChannelsMap.cxx:110
 AliPHOSEmcBadChannelsMap.cxx:111
 AliPHOSEmcBadChannelsMap.cxx:112
 AliPHOSEmcBadChannelsMap.cxx:113
 AliPHOSEmcBadChannelsMap.cxx:114
 AliPHOSEmcBadChannelsMap.cxx:115
 AliPHOSEmcBadChannelsMap.cxx:116
 AliPHOSEmcBadChannelsMap.cxx:117
 AliPHOSEmcBadChannelsMap.cxx:118
 AliPHOSEmcBadChannelsMap.cxx:119
 AliPHOSEmcBadChannelsMap.cxx:120
 AliPHOSEmcBadChannelsMap.cxx:121
 AliPHOSEmcBadChannelsMap.cxx:122
 AliPHOSEmcBadChannelsMap.cxx:123
 AliPHOSEmcBadChannelsMap.cxx:124
 AliPHOSEmcBadChannelsMap.cxx:125
 AliPHOSEmcBadChannelsMap.cxx:126
 AliPHOSEmcBadChannelsMap.cxx:127
 AliPHOSEmcBadChannelsMap.cxx:128
 AliPHOSEmcBadChannelsMap.cxx:129