ROOT logo
/**************************************************************************
 * Copyright(c) 2007-2009, 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$ */

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// Implementation of the class for bad channel treatment in the tracker //
// Stores 1 status bit for each SPD pixel and SDD anode:                //
//  0 = bad channel                                                     //
//  1 = good channel                                                    //
// Dead and noisy channels are read from AliITSCalibration objects      //
// Origin: F.Prino, Torino, prino@to.infn.it                            //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#include <TString.h>
#include "AliITSChannelStatus.h"
#include "AliITSCalibrationSPD.h"
#include "AliITSCalibrationSDD.h"
#include "AliITSCalibrationSSD.h"
#include "AliITSsegmentationSPD.h"
#include "AliITSsegmentationSDD.h"
#include "AliITSsegmentationSSD.h"
#include "AliITSDetTypeRec.h"
#include "AliCDBManager.h"
#include "AliCDBEntry.h"
#include "TMath.h"
#include "AliLog.h"

ClassImp(AliITSChannelStatus)


//______________________________________________________________________
AliITSChannelStatus::AliITSChannelStatus():
TObject(),
fSPDChannelStatus(0),
fSDDChannelStatus(0),
fSSDChannelStatus(0)
{
  // default constructor 
}
//______________________________________________________________________
AliITSChannelStatus::AliITSChannelStatus(TString config):
TObject(),
fSPDChannelStatus(0),
fSDDChannelStatus(0),
fSSDChannelStatus(0)
{
  // construt starting from an option passed via a TString
  CreateArrays();
  if(config.Contains("Ideal") || config.Contains("Default")){
    InitDefaults();
  }
}
//______________________________________________________________________
AliITSChannelStatus::AliITSChannelStatus(AliCDBManager *cdb):
TObject(),
fSPDChannelStatus(0),
fSDDChannelStatus(0),
fSSDChannelStatus(0)
{
  // contruct starting from CDB
  AliCDBEntry* spdEntryD = cdb->Get("ITS/Calib/SPDDead");
  if (!spdEntryD) AliFatal("Cannot get CDB entry for SPDDead");
  TObjArray* deadArrSPD = (TObjArray*)spdEntryD->GetObject();
  if (!deadArrSPD) AliFatal("No object found in SPDDead file");

  AliCDBEntry* spdEntrySparseD = cdb->Get("ITS/Calib/SPDSparseDead");
  if (!spdEntrySparseD) AliFatal("Cannot get CDB entry for SPDSparseDead");
  TObjArray* deadSparseArrSPD = (TObjArray*)spdEntrySparseD->GetObject();
  if (!deadSparseArrSPD) AliFatal("No object found in SPDSparseDead file");
  
  AliCDBEntry* spdEntryN = cdb->Get("ITS/Calib/SPDNoisy");
  if (!spdEntryN) AliFatal("Cannot get CDB entry for SPDNoisy");
  TObjArray* noisArrSPD = (TObjArray*)spdEntryN->GetObject();
  if (!noisArrSPD) AliFatal("No object found in SPDNoisy file");

  AliCDBEntry* sddEntry = cdb->Get("ITS/Calib/CalibSDD");
  if (!sddEntry) AliFatal("Cannot get CDB entry for CalibSDD");
  TObjArray* calArrSDD = (TObjArray*)sddEntry->GetObject();
  if (!calArrSDD) AliFatal("No object found in CalibSDD file");

  AliCDBEntry* ssdEntry = cdb->Get("ITS/Calib/CalibSSD");
  if (!ssdEntry) AliFatal("Cannot get CDB entry for CalibSSD");
  TObjArray* calArrSSD = (TObjArray*)ssdEntry->GetObject();
  if (!calArrSSD) AliFatal("No object found in CalibSSD file");

  CreateArrays();
  InitFromOCDB(deadArrSPD,deadSparseArrSPD,noisArrSPD,calArrSDD,calArrSSD);
}
//______________________________________________________________________
AliITSChannelStatus::AliITSChannelStatus(const AliITSDetTypeRec *dtrec):
TObject(),
fSPDChannelStatus(0),
fSDDChannelStatus(0),
fSSDChannelStatus(0)
{
  // contruct starting from det type rec
  CreateArrays();
  
  // SPD modules
  for(Int_t imod=0; imod<kSPDModules; imod++){
    for(Int_t ix=0; ix<kSPDNpxPerModule; ix++){
      for(Int_t iz=0; iz<kSPDNpzPerModule; iz++){
	Int_t index=imod*kSPDNpxPerModule*kSPDNpzPerModule+ix*kSPDNpzPerModule+iz;
	fSPDChannelStatus->SetBitNumber(index,kTRUE);
      }
    }
    Int_t ix,iz;

    // Mask SPD dead pixels
    AliITSCalibrationSPD* deadspd=(AliITSCalibrationSPD*)dtrec->GetSPDDeadModel(imod);
    for(Int_t ipix=0; ipix<deadspd->GetNrBad();ipix++){
      deadspd->GetBadPixel(ipix,ix,iz);
      Int_t index=imod*kSPDNpxPerModule*kSPDNpzPerModule+ix*kSPDNpzPerModule+iz;
      fSPDChannelStatus->SetBitNumber(index,kFALSE);      
    }
    
       // Mask SPD sparse dead pixels
    AliITSCalibrationSPD* deadSparseSpd=(AliITSCalibrationSPD*)dtrec->GetSPDSparseDeadModel(imod);
    for(Int_t ipix=0; ipix<deadSparseSpd->GetNrBad();ipix++){
      deadSparseSpd->GetBadPixel(ipix,ix,iz);
      Int_t index=imod*kSPDNpxPerModule*kSPDNpzPerModule+ix*kSPDNpzPerModule+iz;
      fSPDChannelStatus->SetBitNumber(index,kFALSE);      
    }
    
    // Mask SPD noisy pixels
    AliITSCalibrationSPD* noisspd=(AliITSCalibrationSPD*)dtrec->GetCalibrationModel(imod);
    for(Int_t ipix=0; ipix<noisspd->GetNrBad();ipix++){
      noisspd->GetBadPixel(ipix,ix,iz);
      Int_t index=imod*kSPDNpxPerModule*kSPDNpzPerModule+ix*kSPDNpzPerModule+iz;
      fSPDChannelStatus->SetBitNumber(index,kFALSE);
    }
  }

  // SDD modules
  for(Int_t imod=0; imod<kSDDModules; imod++){
    AliITSCalibrationSDD* calsdd=(AliITSCalibrationSDD*)dtrec->GetCalibrationModel(imod+kSPDModules);
    for(Int_t ian=0; ian<kSDDAnodesPerModule; ian++){
      Bool_t cstatus=kTRUE;
      if(calsdd->IsBadChannel(ian)) cstatus=kFALSE;
      Int_t index=imod*kSDDAnodesPerModule+ian;
      fSDDChannelStatus->SetBitNumber(index,cstatus);
    }
  }

  // SSD modules
  for (Int_t imod = 0; imod < kSSDModules; imod++) {
    AliITSCalibrationSSD* calssd=(AliITSCalibrationSSD*)dtrec->GetCalibrationModel(kSSDFirstModule+imod);
    for(Int_t ip=0; ip<kSSDStripsPerModule; ip++) {
      Int_t index=imod*kSSDStripsPerModule+ip;
      Bool_t cstatus = kTRUE;
      if (ip < 768 && calssd->IsPChannelBad(ip))
	cstatus = kFALSE;
      if (ip >= 768 && calssd->IsNChannelBad(ip-768))
	cstatus = kFALSE;

      fSSDChannelStatus->SetBitNumber(index,cstatus);
    }
  }
}
//______________________________________________________________________
void  AliITSChannelStatus::CreateArrays(){
  // creates the TBit arrays

  UInt_t nSPDchan=kSPDModules*kSPDNpxPerModule*kSPDNpzPerModule;
  fSPDChannelStatus=new TBits(nSPDchan);

  UInt_t nSDDchan=kSDDModules*kSDDAnodesPerModule;
  fSDDChannelStatus=new TBits(nSDDchan);

  UInt_t nSSDchan=kSSDModules*kSSDStripsPerModule;
  fSSDChannelStatus=new TBits(nSSDchan);

}
//______________________________________________________________________
void  AliITSChannelStatus::InitDefaults(){
  // fill bitmaps setting all channels as good
  for(Int_t imod=0; imod<kSPDModules; imod++){
    for(Int_t ix=0; ix<kSPDNpxPerModule; ix++){
      for(Int_t iz=0; iz<kSPDNpzPerModule; iz++){
	Int_t index=imod*kSPDNpxPerModule*kSPDNpzPerModule+ix*kSPDNpzPerModule+iz;
	fSPDChannelStatus->SetBitNumber(index,kTRUE);
      }
    }
  }
  for(Int_t imod=0; imod<kSDDModules; imod++){
    for(Int_t ian=0; ian<kSDDAnodesPerModule; ian++){
      Int_t index=imod*kSDDAnodesPerModule+ian;
      fSDDChannelStatus->SetBitNumber(index,kTRUE);
    }
  }
  for(Int_t imod=0; imod<kSSDModules; imod++){
    for(Int_t is=0; is<kSSDStripsPerModule; is++){
      Int_t index=imod*kSSDStripsPerModule+is;
      fSSDChannelStatus->SetBitNumber(index,kTRUE);
    }
  }
}
//______________________________________________________________________
void AliITSChannelStatus::InitFromOCDB(const TObjArray* deadArrSPD, const TObjArray* /* deadSparseArrSPD */, const TObjArray* noisArrSPD, const TObjArray* calArrSDD, const TObjArray *calArrSSD){
// fills bitmaps from arrays of AliITSCalibrationSXD objects

  // SPD modules
  for(Int_t imod=0; imod<kSPDModules; imod++){
    for(Int_t ix=0; ix<kSPDNpxPerModule; ix++){
      for(Int_t iz=0; iz<kSPDNpzPerModule; iz++){
	Int_t index=imod*kSPDNpxPerModule*kSPDNpzPerModule+ix*kSPDNpzPerModule+iz;
	fSPDChannelStatus->SetBitNumber(index,kTRUE);
      }
    }
    Int_t ix,iz;

    // Mask SPD dead pixels
    AliITSCalibrationSPD* deadspd=(AliITSCalibrationSPD*)deadArrSPD->At(imod);
    for(Int_t ipix=0; ipix<deadspd->GetNrBad();ipix++){
      deadspd->GetBadPixel(ipix,ix,iz);
      Int_t index=imod*kSPDNpxPerModule*kSPDNpzPerModule+ix*kSPDNpzPerModule+iz;
      fSPDChannelStatus->SetBitNumber(index,kFALSE);      
    }
    
    // Mask SPD sparse dead pixels
    AliITSCalibrationSPD* deadSparseSpd=(AliITSCalibrationSPD*)deadArrSPD->At(imod);
    for(Int_t ipix=0; ipix<deadSparseSpd->GetNrBad();ipix++){
      deadSparseSpd->GetBadPixel(ipix,ix,iz);
      Int_t index=imod*kSPDNpxPerModule*kSPDNpzPerModule+ix*kSPDNpzPerModule+iz;
      fSPDChannelStatus->SetBitNumber(index,kFALSE);      
    }

    // Mask SPD noisy pixels
    AliITSCalibrationSPD* noisspd=(AliITSCalibrationSPD*)noisArrSPD->At(imod);
    for(Int_t ipix=0; ipix<noisspd->GetNrBad();ipix++){
      noisspd->GetBadPixel(ipix,ix,iz);
      Int_t index=imod*kSPDNpxPerModule*kSPDNpzPerModule+ix*kSPDNpzPerModule+iz;
      fSPDChannelStatus->SetBitNumber(index,kFALSE);
    }
  }

  // SDD modules
  for(Int_t imod=0; imod<kSDDModules; imod++){
    AliITSCalibrationSDD* calsdd=(AliITSCalibrationSDD*)calArrSDD->At(imod);
    for(Int_t ian=0; ian<kSDDAnodesPerModule; ian++){
      Bool_t cstatus=kTRUE;
      if(calsdd->IsBadChannel(ian)) cstatus=kFALSE;
      Int_t index=imod*kSDDAnodesPerModule+ian;
      fSDDChannelStatus->SetBitNumber(index,cstatus);
    }
  }

  // SSD modules
  for (Int_t imod = 0; imod < kSSDModules; imod++) {
    AliITSCalibrationSSD* calssd=(AliITSCalibrationSSD*)calArrSSD->At(imod);
    for(Int_t ip=0; ip<kSSDStripsPerModule; ip++) {
      Int_t index=imod*kSSDStripsPerModule+ip;
      Bool_t cstatus = kTRUE;
      if (ip < 768 && calssd->IsPChannelBad(ip))
	cstatus = kFALSE;
      if (ip >= 768 && calssd->IsNChannelBad(ip-768))
	cstatus = kFALSE;

      fSSDChannelStatus->SetBitNumber(index,cstatus);
    }
  }
}
//______________________________________________________________________
AliITSChannelStatus::AliITSChannelStatus(const AliITSChannelStatus& cstatus):
TObject(),
fSPDChannelStatus(cstatus.fSPDChannelStatus),
fSDDChannelStatus(cstatus.fSDDChannelStatus),
fSSDChannelStatus(cstatus.fSSDChannelStatus)
{
  // copy constructor 
}
//______________________________________________________________________
AliITSChannelStatus& AliITSChannelStatus::operator=(const AliITSChannelStatus& cstatus)
{
  // assignment operator
  this->~AliITSChannelStatus();
  new(this) AliITSChannelStatus(cstatus);
  return *this;
}

//______________________________________________________________________
AliITSChannelStatus::~AliITSChannelStatus(){
  // destructor
  if(fSPDChannelStatus) delete fSPDChannelStatus;
  if(fSDDChannelStatus) delete fSDDChannelStatus;
  if(fSSDChannelStatus) delete fSSDChannelStatus;
}

//______________________________________________________________________
Bool_t AliITSChannelStatus::CheckBounds(Int_t imod, Int_t iz, Int_t ix) const {
  // check for out of bounds
  if(imod<0 || imod>=kSPDModules+kSDDModules+kSSDModules){
    AliError(Form("Module number out of range 0-%d",kSPDModules+kSDDModules));
    return kFALSE;
  }
  if(imod<kSPDModules){
    if(ix<0 || ix>=kSPDNpxPerModule || iz<0 || iz>=kSPDNpzPerModule){
      AliError("SPD: Pixel number out of range");
      return kFALSE;
    }
  }else if (imod<kSSDFirstModule){
    if(iz<0 || iz>=kSDDAnodesPerModule){
      AliError("SDD: anode number out of range");
      return kFALSE;
    }
  }
  else {
    if(iz<0 || iz>=kSSDStripsPerModule){
      AliError("SSD: strip number out of range");
      return kFALSE;
    }
  }
  return kTRUE;
}
//______________________________________________________________________
Bool_t AliITSChannelStatus::GetChannelStatus(Int_t imod, Int_t iz, Int_t ix) const {
  // return status of inquired channel
  if(CheckBounds(imod,iz,ix)==kFALSE) return kFALSE;
  if(imod<kSPDModules){
    Int_t index=imod*kSPDNpxPerModule*kSPDNpzPerModule+ix*kSPDNpzPerModule+iz;
    return fSPDChannelStatus->TestBitNumber(index);
  } else if (imod < kSSDFirstModule) {
    imod-=kSPDModules;
    Int_t index=imod*kSDDAnodesPerModule+iz;
    return fSDDChannelStatus->TestBitNumber(index);    
  }
  else { // SSD: iz is strip number 0-767 P-side, 768 - 1535 N-side
    imod-=kSSDFirstModule;
    Int_t index=imod*kSSDStripsPerModule+iz;
    return fSSDChannelStatus->TestBitNumber(index);    
  }
}
//______________________________________________________________________
void AliITSChannelStatus::SetChannelStatus(Bool_t cstatus, Int_t imod, Int_t iz, Int_t ix){
  // set status for given channel
  if(CheckBounds(imod,iz,ix)==kFALSE) return;
  if(imod<kSPDModules){
    Int_t index=imod*kSPDNpxPerModule*kSPDNpzPerModule+ix*kSPDNpzPerModule+iz;
    fSPDChannelStatus->SetBitNumber(index,cstatus);
  }else if (imod < kSSDFirstModule) {
    imod-=kSPDModules;
    Int_t index=imod*kSDDAnodesPerModule+iz;
    fSDDChannelStatus->SetBitNumber(index,cstatus);
  }
  else { // SSD: iz is strip number 0-767 P-side, 768 - 1535 N-side
    imod-=kSSDFirstModule;
    Int_t index=imod*kSSDStripsPerModule+iz;
    return fSSDChannelStatus->SetBitNumber(index,cstatus);    
  }
}
//______________________________________________________________________
Bool_t AliITSChannelStatus::GetSDDLimits(Float_t zlocmin, Float_t zlocmax, Float_t xlocmin, Float_t xlocmax, Int_t& izmin, Int_t& izmax, Int_t& izmin2, Int_t& izmax2) const {
  // Returns min. and max. anode numbers from local coordindate
  AliITSsegmentationSDD *seg=new AliITSsegmentationSDD();
  Float_t dummySpeed=6.5; // to avoid warnings in SDD segmentation
  Float_t tolerance=0.9999;
  seg->SetDriftSpeed(dummySpeed);
  Float_t zHalfSize=0.5*seg->Dz()/10000.;
  zHalfSize*=tolerance;
  if(zlocmin<-zHalfSize) zlocmin=-zHalfSize;
  if(zlocmax>zHalfSize) zlocmax=zHalfSize;
  if(zlocmax<-zHalfSize || zlocmin>zHalfSize){
    AliWarning("Search region completely outside module");
    return kFALSE;
  }
  Float_t xHalfSize=seg->Dx()/10000.;
  xHalfSize*=tolerance;
  if(xlocmin<-xHalfSize) xlocmin=-xHalfSize;
  if(xlocmax>xHalfSize) xlocmax=xHalfSize;
  if(xlocmax<-xHalfSize || xlocmin>xHalfSize){
    AliWarning("Search region completely outside module");
    return kFALSE;
  }
  
  Int_t iSid1=seg->GetSideFromLocalX(xlocmin);
  Int_t iSid2=seg->GetSideFromLocalX(xlocmax);
  Int_t iz1,iz2,ixdummy;
  seg->LocalToDet(xlocmin,zlocmin,ixdummy,iz1);
  seg->LocalToDet(xlocmin,zlocmax,ixdummy,iz2);
  izmin=TMath::Min(iz1,iz2);
  izmax=TMath::Max(iz1,iz2);    
  if(iSid1==iSid2){
    izmax2=izmin2=-1;
  }else{
    seg->LocalToDet(xlocmax,zlocmin,ixdummy,iz1);
    seg->LocalToDet(xlocmax,zlocmax,ixdummy,iz2);
    izmin2=TMath::Min(iz1,iz2);
    izmax2=TMath::Max(iz1,iz2);    
  }
  delete seg;
  return kTRUE;
}
//______________________________________________________________________
Bool_t AliITSChannelStatus::GetSPDLimits(Float_t zlocmin, Float_t zlocmax, Float_t xlocmin, Float_t xlocmax, Int_t& izmin, Int_t& izmax, Int_t& ixmin, Int_t& ixmax) const {
  // Returns min. and max. pixel numbers from local coordindate
  Float_t tolerance=0.9999;
  AliITSsegmentationSPD *seg=new AliITSsegmentationSPD();
  Float_t zHalfSize=0.5*seg->Dz()/10000.;
  zHalfSize*=tolerance;
  if(zlocmin<-zHalfSize) zlocmin=-zHalfSize;
  if(zlocmax>zHalfSize) zlocmax=zHalfSize;
  if(zlocmax<-zHalfSize || zlocmin>zHalfSize){
    AliWarning("Search region completely outside module");
    return kFALSE;
  }
  Float_t xHalfSize=0.5*seg->Dx()/10000.;
  xHalfSize*=tolerance;
  if(xlocmin<-xHalfSize) xlocmin=-xHalfSize;
  if(xlocmax>xHalfSize) xlocmax=xHalfSize;
  if(xlocmax<-xHalfSize || xlocmin>xHalfSize){
    AliWarning("Search region completely outside module");
    return kFALSE;
  }

  Int_t iz1,ix1,iz2,ix2;
  seg->LocalToDet(xlocmin,zlocmin,ix1,iz1);
  seg->LocalToDet(xlocmax,zlocmax,ix2,iz2);
  izmin=TMath::Min(iz1,iz2);
  izmax=TMath::Max(iz1,iz2);
  ixmin=TMath::Min(ix1,ix2);
  ixmax=TMath::Max(ix1,ix2);
  delete seg;
  return kTRUE;
}
//______________________________________________________________________
Bool_t AliITSChannelStatus::GetSSDLimits(Int_t layer, Float_t zlocmin, Float_t zlocmax, Float_t xlocmin, Float_t xlocmax, Int_t& iPmin, Int_t& iPmax, Int_t& iNmin, Int_t& iNmax) const {
  // Returns min, max strip for SSD, given a search window
  static AliITSsegmentationSSD seg;

  AliDebug(2,Form("xmin %f zmin %f xmax %f zmax %f\n",xlocmin,zlocmin,xlocmax,zlocmax));

  Int_t p,n;
  seg.SetLayer(layer);
  seg.GetPadIxz(xlocmin,zlocmin,p,n);
  iPmin = iPmax = p;
  iNmin = iNmax = n;
  AliDebug(5,Form("lay %d xmin, zmin p %d n %d\n",layer,p,n));
  seg.GetPadIxz(xlocmax,zlocmin,p,n);
  iPmin = TMath::Min(iPmin,p);
  iPmax = TMath::Max(iPmax,p);
  iNmin = TMath::Min(iNmin,n);
  iNmax = TMath::Max(iNmax,n);
  AliDebug(5,Form("lay %d xmax, zmin p %d n %d\n",layer,p,n));
  seg.GetPadIxz(xlocmax,zlocmax,p,n);
  iPmin = TMath::Min(iPmin,p);
  iPmax = TMath::Max(iPmax,p);
  iNmin = TMath::Min(iNmin,n);
  iNmax = TMath::Max(iNmax,n);
  AliDebug(5,Form("lay %d xmax, zmax p %d n %d\n",layer,p,n));
  seg.GetPadIxz(xlocmin,zlocmax,p,n);
  iPmin = TMath::Min(iPmin,p);
  iPmax = TMath::Max(iPmax,p);
  iNmin = TMath::Min(iNmin,n);
  iNmax = TMath::Max(iNmax,n);
  AliDebug(5,Form("lay %d xmin, zmax p %d n %d\n",layer,p,n));

  if (iPmin < 0)
    iPmin = 0;
  if (iNmin < 0)
    iNmin = 0;
  if (iPmax >= kSSDStripsPerSide)
    iPmax = kSSDStripsPerSide-1;
  if (iNmax >= kSSDStripsPerSide)
    iNmax = kSSDStripsPerSide-1;
  AliDebug(2,Form("lay %d p %d %d n %d %d\n",layer,iPmin,iPmax,iNmin,iNmax));
  return kTRUE;
}
//______________________________________________________________________
Bool_t AliITSChannelStatus::AnyBadInRoad(Int_t imod, Float_t zlocmin, Float_t zlocmax, Float_t xlocmin, Float_t xlocmax) const{
  // Checks if there is at least one bad channel in the search road
  // For SSD: return kTRUE if there is at least one bad strip on both sides
  //          if only bad strips on one side 1D clusters can be used
  AliDebug(2,Form("checking for module %d",imod));
  if(imod<kSPDModules){
    Int_t izmin,izmax,ixmin,ixmax;
    Bool_t retcode=GetSPDLimits(zlocmin,zlocmax,xlocmin,xlocmax,izmin,izmax,ixmin,ixmax);
    if(!retcode) return kFALSE;
    for(Int_t iz=izmin; iz<=izmax;iz++){
      for(Int_t ix=ixmin; ix<=ixmax;ix++){
	if(GetChannelStatus(imod,iz,ix)==kFALSE) return kTRUE;
      }
    }
  }else if (imod < kSSDFirstModule) {
    Int_t izmin,izmax,izmin2,izmax2;
    Bool_t retcode=GetSDDLimits(zlocmin,zlocmax,xlocmin,xlocmax,izmin,izmax,izmin2,izmax2);
    if(!retcode) return kFALSE;
    for(Int_t iz=izmin; iz<=izmax;iz++){
      if(GetChannelStatus(imod,iz,0)==kFALSE) { return kTRUE;}
    }
    if(izmin2!=-1 && izmax2!=-1){
      for(Int_t iz=izmin2; iz<=izmax2;iz++){
	if(GetChannelStatus(imod,iz,0)==kFALSE) { return kTRUE;}
      }
    }
  }
  else {
    Int_t layer = 5;
    if (imod > kSSDMaxModLay5) 
      layer = 6;
    Int_t iPmin,iPmax,iNmin,iNmax;
    Bool_t retcode=GetSSDLimits(layer,zlocmin,zlocmax,xlocmin,xlocmax,iPmin,iPmax,iNmin,iNmax);
    if(!retcode) return kFALSE;
    Int_t nPbad = 0;
    for(Int_t iP=iPmin; iP<=iPmax;iP++){
      if(GetChannelStatus(imod,iP,0)==kFALSE) nPbad++;
    }
    if (nPbad == 0)
      return kFALSE;
    for(Int_t iN=iNmin; iN<=iNmax;iN++){
      if(GetChannelStatus(imod,iN+768,0)==kFALSE) { return kTRUE; }
    }
  }
  return kFALSE;
}
//______________________________________________________________________
Float_t AliITSChannelStatus::FractionOfBadInRoad(Int_t imod, Float_t zlocmin, Float_t zlocmax, Float_t xlocmin, Float_t xlocmax) const{
  // Calculate the fraction of bad channels in the road  
  // Note: SSD returns fraction of dead strips on 'best' side. This 
  //       is not proportional to dead surface area. 
  Float_t totChan=0.;
  Float_t badChan=0.;
  if(imod<kSPDModules){
    Int_t izmin,izmax,ixmin,ixmax;
    Bool_t retcode=GetSPDLimits(zlocmin,zlocmax,xlocmin,xlocmax,izmin,izmax,ixmin,ixmax);
    if(!retcode) return 0.;
    for(Int_t iz=izmin; iz<=izmax;iz++){
      for(Int_t ix=ixmin; ix<=ixmax;ix++){
	totChan+=1;
	if(GetChannelStatus(imod,iz,ix)==kFALSE) badChan+=1.;
      }
    }
  }else if (imod < kSSDFirstModule) {
    Int_t izmin,izmax,izmin2,izmax2;
    Bool_t retcode=GetSDDLimits(zlocmin,zlocmax,xlocmin,xlocmax,izmin,izmax,izmin2,izmax2);
    if(!retcode) return 0.;
    for(Int_t iz=izmin; iz<=izmax;iz++){
      totChan+=1;
      if(GetChannelStatus(imod,iz,0)==kFALSE) badChan+=1.;
    }
    if(izmin2!=-1 && izmax2!=-1){
      for(Int_t iz=izmin2; iz<=izmax2;iz++){
	totChan+=1;
	if(GetChannelStatus(imod,iz,0)==kFALSE) badChan+=1.;
      }
    }
  }
  else {
    Int_t layer = 5;
    if (imod > kSSDMaxModLay5) 
      layer = 6;
    Int_t iPmin,iPmax,iNmin,iNmax;
    Bool_t retcode=GetSSDLimits(layer,zlocmin,zlocmax,xlocmin,xlocmax,iPmin,iPmax,iNmin,iNmax);
    if(!retcode) return kFALSE;
    Int_t nPbad = 0;
    for(Int_t iP=iPmin; iP<=iPmax;iP++){
      if(GetChannelStatus(imod,iP,0)==kFALSE) nPbad++;
    }
    Float_t fracP = (Float_t) nPbad / (iPmax-iPmin+1);
    if (nPbad == 0)
      return 0;
    Int_t nNbad = 0;
    for(Int_t iN=iNmin; iN<=iNmax;iN++){
      if(GetChannelStatus(imod,iN+768,0)==kFALSE) nNbad++;
    }
    Float_t fracN = (Float_t) nNbad / (iPmax-iPmin+1);
    return TMath::Min(fracP,fracN);
  }
  if(totChan==0.) return 0.;
  else return badChan/totChan;
}

 AliITSChannelStatus.cxx:1
 AliITSChannelStatus.cxx:2
 AliITSChannelStatus.cxx:3
 AliITSChannelStatus.cxx:4
 AliITSChannelStatus.cxx:5
 AliITSChannelStatus.cxx:6
 AliITSChannelStatus.cxx:7
 AliITSChannelStatus.cxx:8
 AliITSChannelStatus.cxx:9
 AliITSChannelStatus.cxx:10
 AliITSChannelStatus.cxx:11
 AliITSChannelStatus.cxx:12
 AliITSChannelStatus.cxx:13
 AliITSChannelStatus.cxx:14
 AliITSChannelStatus.cxx:15
 AliITSChannelStatus.cxx:16
 AliITSChannelStatus.cxx:17
 AliITSChannelStatus.cxx:18
 AliITSChannelStatus.cxx:19
 AliITSChannelStatus.cxx:20
 AliITSChannelStatus.cxx:21
 AliITSChannelStatus.cxx:22
 AliITSChannelStatus.cxx:23
 AliITSChannelStatus.cxx:24
 AliITSChannelStatus.cxx:25
 AliITSChannelStatus.cxx:26
 AliITSChannelStatus.cxx:27
 AliITSChannelStatus.cxx:28
 AliITSChannelStatus.cxx:29
 AliITSChannelStatus.cxx:30
 AliITSChannelStatus.cxx:31
 AliITSChannelStatus.cxx:32
 AliITSChannelStatus.cxx:33
 AliITSChannelStatus.cxx:34
 AliITSChannelStatus.cxx:35
 AliITSChannelStatus.cxx:36
 AliITSChannelStatus.cxx:37
 AliITSChannelStatus.cxx:38
 AliITSChannelStatus.cxx:39
 AliITSChannelStatus.cxx:40
 AliITSChannelStatus.cxx:41
 AliITSChannelStatus.cxx:42
 AliITSChannelStatus.cxx:43
 AliITSChannelStatus.cxx:44
 AliITSChannelStatus.cxx:45
 AliITSChannelStatus.cxx:46
 AliITSChannelStatus.cxx:47
 AliITSChannelStatus.cxx:48
 AliITSChannelStatus.cxx:49
 AliITSChannelStatus.cxx:50
 AliITSChannelStatus.cxx:51
 AliITSChannelStatus.cxx:52
 AliITSChannelStatus.cxx:53
 AliITSChannelStatus.cxx:54
 AliITSChannelStatus.cxx:55
 AliITSChannelStatus.cxx:56
 AliITSChannelStatus.cxx:57
 AliITSChannelStatus.cxx:58
 AliITSChannelStatus.cxx:59
 AliITSChannelStatus.cxx:60
 AliITSChannelStatus.cxx:61
 AliITSChannelStatus.cxx:62
 AliITSChannelStatus.cxx:63
 AliITSChannelStatus.cxx:64
 AliITSChannelStatus.cxx:65
 AliITSChannelStatus.cxx:66
 AliITSChannelStatus.cxx:67
 AliITSChannelStatus.cxx:68
 AliITSChannelStatus.cxx:69
 AliITSChannelStatus.cxx:70
 AliITSChannelStatus.cxx:71
 AliITSChannelStatus.cxx:72
 AliITSChannelStatus.cxx:73
 AliITSChannelStatus.cxx:74
 AliITSChannelStatus.cxx:75
 AliITSChannelStatus.cxx:76
 AliITSChannelStatus.cxx:77
 AliITSChannelStatus.cxx:78
 AliITSChannelStatus.cxx:79
 AliITSChannelStatus.cxx:80
 AliITSChannelStatus.cxx:81
 AliITSChannelStatus.cxx:82
 AliITSChannelStatus.cxx:83
 AliITSChannelStatus.cxx:84
 AliITSChannelStatus.cxx:85
 AliITSChannelStatus.cxx:86
 AliITSChannelStatus.cxx:87
 AliITSChannelStatus.cxx:88
 AliITSChannelStatus.cxx:89
 AliITSChannelStatus.cxx:90
 AliITSChannelStatus.cxx:91
 AliITSChannelStatus.cxx:92
 AliITSChannelStatus.cxx:93
 AliITSChannelStatus.cxx:94
 AliITSChannelStatus.cxx:95
 AliITSChannelStatus.cxx:96
 AliITSChannelStatus.cxx:97
 AliITSChannelStatus.cxx:98
 AliITSChannelStatus.cxx:99
 AliITSChannelStatus.cxx:100
 AliITSChannelStatus.cxx:101
 AliITSChannelStatus.cxx:102
 AliITSChannelStatus.cxx:103
 AliITSChannelStatus.cxx:104
 AliITSChannelStatus.cxx:105
 AliITSChannelStatus.cxx:106
 AliITSChannelStatus.cxx:107
 AliITSChannelStatus.cxx:108
 AliITSChannelStatus.cxx:109
 AliITSChannelStatus.cxx:110
 AliITSChannelStatus.cxx:111
 AliITSChannelStatus.cxx:112
 AliITSChannelStatus.cxx:113
 AliITSChannelStatus.cxx:114
 AliITSChannelStatus.cxx:115
 AliITSChannelStatus.cxx:116
 AliITSChannelStatus.cxx:117
 AliITSChannelStatus.cxx:118
 AliITSChannelStatus.cxx:119
 AliITSChannelStatus.cxx:120
 AliITSChannelStatus.cxx:121
 AliITSChannelStatus.cxx:122
 AliITSChannelStatus.cxx:123
 AliITSChannelStatus.cxx:124
 AliITSChannelStatus.cxx:125
 AliITSChannelStatus.cxx:126
 AliITSChannelStatus.cxx:127
 AliITSChannelStatus.cxx:128
 AliITSChannelStatus.cxx:129
 AliITSChannelStatus.cxx:130
 AliITSChannelStatus.cxx:131
 AliITSChannelStatus.cxx:132
 AliITSChannelStatus.cxx:133
 AliITSChannelStatus.cxx:134
 AliITSChannelStatus.cxx:135
 AliITSChannelStatus.cxx:136
 AliITSChannelStatus.cxx:137
 AliITSChannelStatus.cxx:138
 AliITSChannelStatus.cxx:139
 AliITSChannelStatus.cxx:140
 AliITSChannelStatus.cxx:141
 AliITSChannelStatus.cxx:142
 AliITSChannelStatus.cxx:143
 AliITSChannelStatus.cxx:144
 AliITSChannelStatus.cxx:145
 AliITSChannelStatus.cxx:146
 AliITSChannelStatus.cxx:147
 AliITSChannelStatus.cxx:148
 AliITSChannelStatus.cxx:149
 AliITSChannelStatus.cxx:150
 AliITSChannelStatus.cxx:151
 AliITSChannelStatus.cxx:152
 AliITSChannelStatus.cxx:153
 AliITSChannelStatus.cxx:154
 AliITSChannelStatus.cxx:155
 AliITSChannelStatus.cxx:156
 AliITSChannelStatus.cxx:157
 AliITSChannelStatus.cxx:158
 AliITSChannelStatus.cxx:159
 AliITSChannelStatus.cxx:160
 AliITSChannelStatus.cxx:161
 AliITSChannelStatus.cxx:162
 AliITSChannelStatus.cxx:163
 AliITSChannelStatus.cxx:164
 AliITSChannelStatus.cxx:165
 AliITSChannelStatus.cxx:166
 AliITSChannelStatus.cxx:167
 AliITSChannelStatus.cxx:168
 AliITSChannelStatus.cxx:169
 AliITSChannelStatus.cxx:170
 AliITSChannelStatus.cxx:171
 AliITSChannelStatus.cxx:172
 AliITSChannelStatus.cxx:173
 AliITSChannelStatus.cxx:174
 AliITSChannelStatus.cxx:175
 AliITSChannelStatus.cxx:176
 AliITSChannelStatus.cxx:177
 AliITSChannelStatus.cxx:178
 AliITSChannelStatus.cxx:179
 AliITSChannelStatus.cxx:180
 AliITSChannelStatus.cxx:181
 AliITSChannelStatus.cxx:182
 AliITSChannelStatus.cxx:183
 AliITSChannelStatus.cxx:184
 AliITSChannelStatus.cxx:185
 AliITSChannelStatus.cxx:186
 AliITSChannelStatus.cxx:187
 AliITSChannelStatus.cxx:188
 AliITSChannelStatus.cxx:189
 AliITSChannelStatus.cxx:190
 AliITSChannelStatus.cxx:191
 AliITSChannelStatus.cxx:192
 AliITSChannelStatus.cxx:193
 AliITSChannelStatus.cxx:194
 AliITSChannelStatus.cxx:195
 AliITSChannelStatus.cxx:196
 AliITSChannelStatus.cxx:197
 AliITSChannelStatus.cxx:198
 AliITSChannelStatus.cxx:199
 AliITSChannelStatus.cxx:200
 AliITSChannelStatus.cxx:201
 AliITSChannelStatus.cxx:202
 AliITSChannelStatus.cxx:203
 AliITSChannelStatus.cxx:204
 AliITSChannelStatus.cxx:205
 AliITSChannelStatus.cxx:206
 AliITSChannelStatus.cxx:207
 AliITSChannelStatus.cxx:208
 AliITSChannelStatus.cxx:209
 AliITSChannelStatus.cxx:210
 AliITSChannelStatus.cxx:211
 AliITSChannelStatus.cxx:212
 AliITSChannelStatus.cxx:213
 AliITSChannelStatus.cxx:214
 AliITSChannelStatus.cxx:215
 AliITSChannelStatus.cxx:216
 AliITSChannelStatus.cxx:217
 AliITSChannelStatus.cxx:218
 AliITSChannelStatus.cxx:219
 AliITSChannelStatus.cxx:220
 AliITSChannelStatus.cxx:221
 AliITSChannelStatus.cxx:222
 AliITSChannelStatus.cxx:223
 AliITSChannelStatus.cxx:224
 AliITSChannelStatus.cxx:225
 AliITSChannelStatus.cxx:226
 AliITSChannelStatus.cxx:227
 AliITSChannelStatus.cxx:228
 AliITSChannelStatus.cxx:229
 AliITSChannelStatus.cxx:230
 AliITSChannelStatus.cxx:231
 AliITSChannelStatus.cxx:232
 AliITSChannelStatus.cxx:233
 AliITSChannelStatus.cxx:234
 AliITSChannelStatus.cxx:235
 AliITSChannelStatus.cxx:236
 AliITSChannelStatus.cxx:237
 AliITSChannelStatus.cxx:238
 AliITSChannelStatus.cxx:239
 AliITSChannelStatus.cxx:240
 AliITSChannelStatus.cxx:241
 AliITSChannelStatus.cxx:242
 AliITSChannelStatus.cxx:243
 AliITSChannelStatus.cxx:244
 AliITSChannelStatus.cxx:245
 AliITSChannelStatus.cxx:246
 AliITSChannelStatus.cxx:247
 AliITSChannelStatus.cxx:248
 AliITSChannelStatus.cxx:249
 AliITSChannelStatus.cxx:250
 AliITSChannelStatus.cxx:251
 AliITSChannelStatus.cxx:252
 AliITSChannelStatus.cxx:253
 AliITSChannelStatus.cxx:254
 AliITSChannelStatus.cxx:255
 AliITSChannelStatus.cxx:256
 AliITSChannelStatus.cxx:257
 AliITSChannelStatus.cxx:258
 AliITSChannelStatus.cxx:259
 AliITSChannelStatus.cxx:260
 AliITSChannelStatus.cxx:261
 AliITSChannelStatus.cxx:262
 AliITSChannelStatus.cxx:263
 AliITSChannelStatus.cxx:264
 AliITSChannelStatus.cxx:265
 AliITSChannelStatus.cxx:266
 AliITSChannelStatus.cxx:267
 AliITSChannelStatus.cxx:268
 AliITSChannelStatus.cxx:269
 AliITSChannelStatus.cxx:270
 AliITSChannelStatus.cxx:271
 AliITSChannelStatus.cxx:272
 AliITSChannelStatus.cxx:273
 AliITSChannelStatus.cxx:274
 AliITSChannelStatus.cxx:275
 AliITSChannelStatus.cxx:276
 AliITSChannelStatus.cxx:277
 AliITSChannelStatus.cxx:278
 AliITSChannelStatus.cxx:279
 AliITSChannelStatus.cxx:280
 AliITSChannelStatus.cxx:281
 AliITSChannelStatus.cxx:282
 AliITSChannelStatus.cxx:283
 AliITSChannelStatus.cxx:284
 AliITSChannelStatus.cxx:285
 AliITSChannelStatus.cxx:286
 AliITSChannelStatus.cxx:287
 AliITSChannelStatus.cxx:288
 AliITSChannelStatus.cxx:289
 AliITSChannelStatus.cxx:290
 AliITSChannelStatus.cxx:291
 AliITSChannelStatus.cxx:292
 AliITSChannelStatus.cxx:293
 AliITSChannelStatus.cxx:294
 AliITSChannelStatus.cxx:295
 AliITSChannelStatus.cxx:296
 AliITSChannelStatus.cxx:297
 AliITSChannelStatus.cxx:298
 AliITSChannelStatus.cxx:299
 AliITSChannelStatus.cxx:300
 AliITSChannelStatus.cxx:301
 AliITSChannelStatus.cxx:302
 AliITSChannelStatus.cxx:303
 AliITSChannelStatus.cxx:304
 AliITSChannelStatus.cxx:305
 AliITSChannelStatus.cxx:306
 AliITSChannelStatus.cxx:307
 AliITSChannelStatus.cxx:308
 AliITSChannelStatus.cxx:309
 AliITSChannelStatus.cxx:310
 AliITSChannelStatus.cxx:311
 AliITSChannelStatus.cxx:312
 AliITSChannelStatus.cxx:313
 AliITSChannelStatus.cxx:314
 AliITSChannelStatus.cxx:315
 AliITSChannelStatus.cxx:316
 AliITSChannelStatus.cxx:317
 AliITSChannelStatus.cxx:318
 AliITSChannelStatus.cxx:319
 AliITSChannelStatus.cxx:320
 AliITSChannelStatus.cxx:321
 AliITSChannelStatus.cxx:322
 AliITSChannelStatus.cxx:323
 AliITSChannelStatus.cxx:324
 AliITSChannelStatus.cxx:325
 AliITSChannelStatus.cxx:326
 AliITSChannelStatus.cxx:327
 AliITSChannelStatus.cxx:328
 AliITSChannelStatus.cxx:329
 AliITSChannelStatus.cxx:330
 AliITSChannelStatus.cxx:331
 AliITSChannelStatus.cxx:332
 AliITSChannelStatus.cxx:333
 AliITSChannelStatus.cxx:334
 AliITSChannelStatus.cxx:335
 AliITSChannelStatus.cxx:336
 AliITSChannelStatus.cxx:337
 AliITSChannelStatus.cxx:338
 AliITSChannelStatus.cxx:339
 AliITSChannelStatus.cxx:340
 AliITSChannelStatus.cxx:341
 AliITSChannelStatus.cxx:342
 AliITSChannelStatus.cxx:343
 AliITSChannelStatus.cxx:344
 AliITSChannelStatus.cxx:345
 AliITSChannelStatus.cxx:346
 AliITSChannelStatus.cxx:347
 AliITSChannelStatus.cxx:348
 AliITSChannelStatus.cxx:349
 AliITSChannelStatus.cxx:350
 AliITSChannelStatus.cxx:351
 AliITSChannelStatus.cxx:352
 AliITSChannelStatus.cxx:353
 AliITSChannelStatus.cxx:354
 AliITSChannelStatus.cxx:355
 AliITSChannelStatus.cxx:356
 AliITSChannelStatus.cxx:357
 AliITSChannelStatus.cxx:358
 AliITSChannelStatus.cxx:359
 AliITSChannelStatus.cxx:360
 AliITSChannelStatus.cxx:361
 AliITSChannelStatus.cxx:362
 AliITSChannelStatus.cxx:363
 AliITSChannelStatus.cxx:364
 AliITSChannelStatus.cxx:365
 AliITSChannelStatus.cxx:366
 AliITSChannelStatus.cxx:367
 AliITSChannelStatus.cxx:368
 AliITSChannelStatus.cxx:369
 AliITSChannelStatus.cxx:370
 AliITSChannelStatus.cxx:371
 AliITSChannelStatus.cxx:372
 AliITSChannelStatus.cxx:373
 AliITSChannelStatus.cxx:374
 AliITSChannelStatus.cxx:375
 AliITSChannelStatus.cxx:376
 AliITSChannelStatus.cxx:377
 AliITSChannelStatus.cxx:378
 AliITSChannelStatus.cxx:379
 AliITSChannelStatus.cxx:380
 AliITSChannelStatus.cxx:381
 AliITSChannelStatus.cxx:382
 AliITSChannelStatus.cxx:383
 AliITSChannelStatus.cxx:384
 AliITSChannelStatus.cxx:385
 AliITSChannelStatus.cxx:386
 AliITSChannelStatus.cxx:387
 AliITSChannelStatus.cxx:388
 AliITSChannelStatus.cxx:389
 AliITSChannelStatus.cxx:390
 AliITSChannelStatus.cxx:391
 AliITSChannelStatus.cxx:392
 AliITSChannelStatus.cxx:393
 AliITSChannelStatus.cxx:394
 AliITSChannelStatus.cxx:395
 AliITSChannelStatus.cxx:396
 AliITSChannelStatus.cxx:397
 AliITSChannelStatus.cxx:398
 AliITSChannelStatus.cxx:399
 AliITSChannelStatus.cxx:400
 AliITSChannelStatus.cxx:401
 AliITSChannelStatus.cxx:402
 AliITSChannelStatus.cxx:403
 AliITSChannelStatus.cxx:404
 AliITSChannelStatus.cxx:405
 AliITSChannelStatus.cxx:406
 AliITSChannelStatus.cxx:407
 AliITSChannelStatus.cxx:408
 AliITSChannelStatus.cxx:409
 AliITSChannelStatus.cxx:410
 AliITSChannelStatus.cxx:411
 AliITSChannelStatus.cxx:412
 AliITSChannelStatus.cxx:413
 AliITSChannelStatus.cxx:414
 AliITSChannelStatus.cxx:415
 AliITSChannelStatus.cxx:416
 AliITSChannelStatus.cxx:417
 AliITSChannelStatus.cxx:418
 AliITSChannelStatus.cxx:419
 AliITSChannelStatus.cxx:420
 AliITSChannelStatus.cxx:421
 AliITSChannelStatus.cxx:422
 AliITSChannelStatus.cxx:423
 AliITSChannelStatus.cxx:424
 AliITSChannelStatus.cxx:425
 AliITSChannelStatus.cxx:426
 AliITSChannelStatus.cxx:427
 AliITSChannelStatus.cxx:428
 AliITSChannelStatus.cxx:429
 AliITSChannelStatus.cxx:430
 AliITSChannelStatus.cxx:431
 AliITSChannelStatus.cxx:432
 AliITSChannelStatus.cxx:433
 AliITSChannelStatus.cxx:434
 AliITSChannelStatus.cxx:435
 AliITSChannelStatus.cxx:436
 AliITSChannelStatus.cxx:437
 AliITSChannelStatus.cxx:438
 AliITSChannelStatus.cxx:439
 AliITSChannelStatus.cxx:440
 AliITSChannelStatus.cxx:441
 AliITSChannelStatus.cxx:442
 AliITSChannelStatus.cxx:443
 AliITSChannelStatus.cxx:444
 AliITSChannelStatus.cxx:445
 AliITSChannelStatus.cxx:446
 AliITSChannelStatus.cxx:447
 AliITSChannelStatus.cxx:448
 AliITSChannelStatus.cxx:449
 AliITSChannelStatus.cxx:450
 AliITSChannelStatus.cxx:451
 AliITSChannelStatus.cxx:452
 AliITSChannelStatus.cxx:453
 AliITSChannelStatus.cxx:454
 AliITSChannelStatus.cxx:455
 AliITSChannelStatus.cxx:456
 AliITSChannelStatus.cxx:457
 AliITSChannelStatus.cxx:458
 AliITSChannelStatus.cxx:459
 AliITSChannelStatus.cxx:460
 AliITSChannelStatus.cxx:461
 AliITSChannelStatus.cxx:462
 AliITSChannelStatus.cxx:463
 AliITSChannelStatus.cxx:464
 AliITSChannelStatus.cxx:465
 AliITSChannelStatus.cxx:466
 AliITSChannelStatus.cxx:467
 AliITSChannelStatus.cxx:468
 AliITSChannelStatus.cxx:469
 AliITSChannelStatus.cxx:470
 AliITSChannelStatus.cxx:471
 AliITSChannelStatus.cxx:472
 AliITSChannelStatus.cxx:473
 AliITSChannelStatus.cxx:474
 AliITSChannelStatus.cxx:475
 AliITSChannelStatus.cxx:476
 AliITSChannelStatus.cxx:477
 AliITSChannelStatus.cxx:478
 AliITSChannelStatus.cxx:479
 AliITSChannelStatus.cxx:480
 AliITSChannelStatus.cxx:481
 AliITSChannelStatus.cxx:482
 AliITSChannelStatus.cxx:483
 AliITSChannelStatus.cxx:484
 AliITSChannelStatus.cxx:485
 AliITSChannelStatus.cxx:486
 AliITSChannelStatus.cxx:487
 AliITSChannelStatus.cxx:488
 AliITSChannelStatus.cxx:489
 AliITSChannelStatus.cxx:490
 AliITSChannelStatus.cxx:491
 AliITSChannelStatus.cxx:492
 AliITSChannelStatus.cxx:493
 AliITSChannelStatus.cxx:494
 AliITSChannelStatus.cxx:495
 AliITSChannelStatus.cxx:496
 AliITSChannelStatus.cxx:497
 AliITSChannelStatus.cxx:498
 AliITSChannelStatus.cxx:499
 AliITSChannelStatus.cxx:500
 AliITSChannelStatus.cxx:501
 AliITSChannelStatus.cxx:502
 AliITSChannelStatus.cxx:503
 AliITSChannelStatus.cxx:504
 AliITSChannelStatus.cxx:505
 AliITSChannelStatus.cxx:506
 AliITSChannelStatus.cxx:507
 AliITSChannelStatus.cxx:508
 AliITSChannelStatus.cxx:509
 AliITSChannelStatus.cxx:510
 AliITSChannelStatus.cxx:511
 AliITSChannelStatus.cxx:512
 AliITSChannelStatus.cxx:513
 AliITSChannelStatus.cxx:514
 AliITSChannelStatus.cxx:515
 AliITSChannelStatus.cxx:516
 AliITSChannelStatus.cxx:517
 AliITSChannelStatus.cxx:518
 AliITSChannelStatus.cxx:519
 AliITSChannelStatus.cxx:520
 AliITSChannelStatus.cxx:521
 AliITSChannelStatus.cxx:522
 AliITSChannelStatus.cxx:523
 AliITSChannelStatus.cxx:524
 AliITSChannelStatus.cxx:525
 AliITSChannelStatus.cxx:526
 AliITSChannelStatus.cxx:527
 AliITSChannelStatus.cxx:528
 AliITSChannelStatus.cxx:529
 AliITSChannelStatus.cxx:530
 AliITSChannelStatus.cxx:531
 AliITSChannelStatus.cxx:532
 AliITSChannelStatus.cxx:533
 AliITSChannelStatus.cxx:534
 AliITSChannelStatus.cxx:535
 AliITSChannelStatus.cxx:536
 AliITSChannelStatus.cxx:537
 AliITSChannelStatus.cxx:538
 AliITSChannelStatus.cxx:539
 AliITSChannelStatus.cxx:540
 AliITSChannelStatus.cxx:541
 AliITSChannelStatus.cxx:542
 AliITSChannelStatus.cxx:543
 AliITSChannelStatus.cxx:544
 AliITSChannelStatus.cxx:545
 AliITSChannelStatus.cxx:546
 AliITSChannelStatus.cxx:547
 AliITSChannelStatus.cxx:548
 AliITSChannelStatus.cxx:549
 AliITSChannelStatus.cxx:550
 AliITSChannelStatus.cxx:551
 AliITSChannelStatus.cxx:552
 AliITSChannelStatus.cxx:553
 AliITSChannelStatus.cxx:554
 AliITSChannelStatus.cxx:555
 AliITSChannelStatus.cxx:556
 AliITSChannelStatus.cxx:557
 AliITSChannelStatus.cxx:558
 AliITSChannelStatus.cxx:559
 AliITSChannelStatus.cxx:560
 AliITSChannelStatus.cxx:561
 AliITSChannelStatus.cxx:562
 AliITSChannelStatus.cxx:563
 AliITSChannelStatus.cxx:564
 AliITSChannelStatus.cxx:565
 AliITSChannelStatus.cxx:566
 AliITSChannelStatus.cxx:567
 AliITSChannelStatus.cxx:568
 AliITSChannelStatus.cxx:569
 AliITSChannelStatus.cxx:570
 AliITSChannelStatus.cxx:571
 AliITSChannelStatus.cxx:572
 AliITSChannelStatus.cxx:573
 AliITSChannelStatus.cxx:574
 AliITSChannelStatus.cxx:575
 AliITSChannelStatus.cxx:576
 AliITSChannelStatus.cxx:577
 AliITSChannelStatus.cxx:578
 AliITSChannelStatus.cxx:579
 AliITSChannelStatus.cxx:580
 AliITSChannelStatus.cxx:581
 AliITSChannelStatus.cxx:582
 AliITSChannelStatus.cxx:583
 AliITSChannelStatus.cxx:584
 AliITSChannelStatus.cxx:585
 AliITSChannelStatus.cxx:586