From 8d37cc87e0a8556870ed6a1b702076fba2d73a9b Mon Sep 17 00:00:00 2001 From: masera Date: Tue, 8 Apr 2008 16:25:26 +0000 Subject: [PATCH] Switching off noisy pixel in SPD cluster finder. AliITSDetTypeRec reads only noisy pixels from OCDB --- ITS/AliITSCalibrationSPD.cxx | 17 +++++++++++++++++ ITS/AliITSCalibrationSPD.h | 1 + ITS/AliITSClusterFinderV2SPD.cxx | 13 ++++++++++++- ITS/AliITSDetTypeRec.cxx | 3 ++- 4 files changed, 32 insertions(+), 2 deletions(-) diff --git a/ITS/AliITSCalibrationSPD.cxx b/ITS/AliITSCalibrationSPD.cxx index fcfe7b3bf8d..a7252dfef9b 100644 --- a/ITS/AliITSCalibrationSPD.cxx +++ b/ITS/AliITSCalibrationSPD.cxx @@ -95,6 +95,23 @@ Bool_t AliITSCalibrationSPD::IsPixelBad(Int_t col, Int_t row) const { } return false; } + +//____________________________________________________________________________ +void AliITSCalibrationSPD::GetBadPixel(Int_t i, Int_t &row, Int_t &col) const { + // + // i: is the i-th bad pixel in fBadChannels + // row: is the corresponding row (-1 if i is out of range) + // col: is the corresponding column (-1 if i is out of range) + row = -1; + col = -1; + if(i<0 || i>=GetNrBad()){ + AliWarning(Form("Index %d is out of bounds - nothing done",i)); + return; + } + col = fBadChannels.At(i*2); + row = fBadChannels.At(i*2+1); +} + //___________________________________________________________________________ Int_t AliITSCalibrationSPD::GetNrBadInColumn(Int_t col) const { // diff --git a/ITS/AliITSCalibrationSPD.h b/ITS/AliITSCalibrationSPD.h index 03e0fa4506d..92f374d31ad 100644 --- a/ITS/AliITSCalibrationSPD.h +++ b/ITS/AliITSCalibrationSPD.h @@ -80,6 +80,7 @@ class AliITSCalibrationSPD : public AliITSCalibration { Int_t GetBadRowAt(UInt_t index); //returns -1 if out of bounds void ClearBad() {fBadChannels.Reset(); fNrBad=0;} Bool_t IsPixelBad(Int_t col, Int_t row) const ; + void GetBadPixel(Int_t i, Int_t &row, Int_t &col) const; void SetBadList(TArrayI badlist) {fBadChannels=badlist;} void SetNrBad(UInt_t nr) {fNrBad=nr;} diff --git a/ITS/AliITSClusterFinderV2SPD.cxx b/ITS/AliITSClusterFinderV2SPD.cxx index c574df15f39..1b5429b5e86 100644 --- a/ITS/AliITSClusterFinderV2SPD.cxx +++ b/ITS/AliITSClusterFinderV2SPD.cxx @@ -21,6 +21,7 @@ //////////////////////////////////////////////////////////////////////////// +#include "AliITSCalibrationSPD.h" #include "AliITSClusterFinderV2SPD.h" #include "AliITSRecPoint.h" #include "AliITSgeomTGeo.h" @@ -95,7 +96,17 @@ Int_t AliITSClusterFinderV2SPD::ClustersSPD(AliBin* bins, TClonesArray* digits,T } } const TGeoHMatrix *mT2L=AliITSgeomTGeo::GetTracking2LocalMatrix(iModule); - + + AliITSCalibrationSPD *cal = + (AliITSCalibrationSPD*) fDetTypeRec->GetCalibrationModel(iModule); + // Loop on bad pixels and reset them + for(Int_t ipix = 0; ipixGetNrBad(); ipix++){ + Int_t row, col; + cal->GetBadPixel(ipix,row,col); + Int_t index = (row+1) * nzbins + (col+1); + bins[index].SetQ(0); + bins[index].SetMask(0xFFFFFFFE); + } Int_t nclu=0; for(Int_t iBin =0; iBin < maxBins;iBin++){ if(bins[iBin].IsUsed()) continue; diff --git a/ITS/AliITSDetTypeRec.cxx b/ITS/AliITSDetTypeRec.cxx index 41fba090a44..011f2a5125a 100644 --- a/ITS/AliITSDetTypeRec.cxx +++ b/ITS/AliITSDetTypeRec.cxx @@ -395,7 +395,8 @@ Bool_t AliITSDetTypeRec::GetCalibration() { fCalibration->Clear(); } - AliCDBEntry *entrySPD = AliCDBManager::Instance()->Get("ITS/Calib/SPDDead"); + // dead pixel are not used for local reconstruction + AliCDBEntry *entrySPD = AliCDBManager::Instance()->Get("ITS/Calib/SPDNoisy"); AliCDBEntry *entrySDD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSDD"); // AliCDBEntry *entrySSD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSSD"); -- 2.43.0