#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)
{
}
AliITSChannelStatus::AliITSChannelStatus(TString config):
TObject(),
fSPDChannelStatus(0),
fSDDChannelStatus(0),
fSSDChannelStatus(0)
{
CreateArrays();
if(config.Contains("Ideal") || config.Contains("Default")){
InitDefaults();
}
}
AliITSChannelStatus::AliITSChannelStatus(AliCDBManager *cdb):
TObject(),
fSPDChannelStatus(0),
fSDDChannelStatus(0),
fSSDChannelStatus(0)
{
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)
{
CreateArrays();
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;
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);
}
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);
}
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);
}
}
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);
}
}
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(){
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(){
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* , const TObjArray* noisArrSPD, const TObjArray* calArrSDD, const TObjArray *calArrSSD){
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;
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);
}
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);
}
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);
}
}
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);
}
}
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)
{
}
AliITSChannelStatus& AliITSChannelStatus::operator=(const AliITSChannelStatus& cstatus)
{
this->~AliITSChannelStatus();
new(this) AliITSChannelStatus(cstatus);
return *this;
}
AliITSChannelStatus::~AliITSChannelStatus(){
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 {
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 {
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 {
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){
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 {
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 {
AliITSsegmentationSDD *seg=new AliITSsegmentationSDD();
Float_t dummySpeed=6.5;
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 {
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 {
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{
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{
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