From 2293155b791f4307fd27ee15e4d9af1519771e76 Mon Sep 17 00:00:00 2001 From: marian Date: Mon, 8 Feb 2010 14:15:41 +0000 Subject: [PATCH] AliTPCcalibDB.cxx AliTPCcalibDB.h - Adding AliFatal in case of missing critical calibration entries - Adding non linear field distortion calibration partially bug #62183: DCA of TPC tracks is different for A/C side in pass3 - Do not cache enties which are not used yet in the reconstruction bug #62535: ppbench breaks in TPC AliTPCTransform.cxx - Usage of the Non linear distortion correction due to the field --- TPC/AliTPCTransform.cxx | 15 ++++++++ TPC/AliTPCcalibDB.cxx | 77 +++++++++++++++++++++++------------------ TPC/AliTPCcalibDB.h | 2 ++ 3 files changed, 61 insertions(+), 33 deletions(-) diff --git a/TPC/AliTPCTransform.cxx b/TPC/AliTPCTransform.cxx index 57aa516e182..ca80142ebc8 100755 --- a/TPC/AliTPCTransform.cxx +++ b/TPC/AliTPCTransform.cxx @@ -143,6 +143,8 @@ void AliTPCTransform::Transform(Double_t *x,Int_t *i,UInt_t /*time*/, AliTPCcalibDB* calib=AliTPCcalibDB::Instance(); // AliTPCCalPad * time0TPC = calib->GetPadTime0(); + AliTPCCalPad * distortionMapY = calib->GetDistortionMap(0); + AliTPCCalPad * distortionMapZ = calib->GetDistortionMap(1); AliTPCParam * param = calib->GetParameters(); if (!time0TPC){ AliFatal("Time unisochronity missing"); @@ -209,6 +211,19 @@ void AliTPCTransform::Transform(Double_t *x,Int_t *i,UInt_t /*time*/, // Global2RotatedGlobal(sector,xx); + + // + // Apply non linear distortion correction + // + if (distortionMapY ){ + //can be switch on for each dimension separatelly + if (fCurrentRecoParam->GetUseFieldCorrection()&0x2) + xx[1]-=distortionMapY->GetCalROC(sector)->GetValue(row,pad); + if (fCurrentRecoParam->GetUseFieldCorrection()&0x4) + xx[2]-=distortionMapZ->GetCalROC(sector)->GetValue(row,pad); + } + + // x[0]=xx[0];x[1]=xx[1];x[2]=xx[2]; } diff --git a/TPC/AliTPCcalibDB.cxx b/TPC/AliTPCcalibDB.cxx index 071c85e13e0..edaec73b48e 100644 --- a/TPC/AliTPCcalibDB.cxx +++ b/TPC/AliTPCcalibDB.cxx @@ -176,6 +176,7 @@ AliTPCcalibDB::AliTPCcalibDB(): fPadGainFactor(0), fDedxGainFactor(0), fPadTime0(0), + fDistortionMap(0), fPadNoise(0), fPedestals(0), fCalibRaw(0), @@ -215,6 +216,7 @@ AliTPCcalibDB::AliTPCcalibDB(const AliTPCcalibDB& ): fPadGainFactor(0), fDedxGainFactor(0), fPadTime0(0), + fDistortionMap(0), fPadNoise(0), fPedestals(0), fCalibRaw(0), @@ -263,10 +265,6 @@ AliTPCcalibDB::~AliTPCcalibDB() // destructor // - // don't delete anything, CDB cache is active! - //if (fPadGainFactor) delete fPadGainFactor; - //if (fPadTime0) delete fPadTime0; - //if (fPadNoise) delete fPadNoise; } @@ -315,6 +313,8 @@ void AliTPCcalibDB::Update(){ //if (fPadGainFactor) delete fPadGainFactor; entry->SetOwner(kTRUE); fPadGainFactor = (AliTPCCalPad*)entry->GetObject(); + }else{ + AliFatal("TPC - Missing calibration entry") } // entry = GetCDBEntry("TPC/Calib/TimeGain"); @@ -322,12 +322,16 @@ void AliTPCcalibDB::Update(){ //if (fTimeGainSplines) delete fTimeGainSplines; entry->SetOwner(kTRUE); fTimeGainSplines = (TObjArray*)entry->GetObject(); + }else{ + AliFatal("TPC - Missing calibration entry") } // entry = GetCDBEntry("TPC/Calib/GainFactorDedx"); if (entry){ entry->SetOwner(kTRUE); fDedxGainFactor = (AliTPCCalPad*)entry->GetObject(); + }else{ + AliFatal("TPC - Missing calibration entry") } // entry = GetCDBEntry("TPC/Calib/PadTime0"); @@ -335,7 +339,20 @@ void AliTPCcalibDB::Update(){ //if (fPadTime0) delete fPadTime0; entry->SetOwner(kTRUE); fPadTime0 = (AliTPCCalPad*)entry->GetObject(); + }else{ + AliFatal("TPC - Missing calibration entry") } + + entry = GetCDBEntry("TPC/Calib/Distortion"); + if (entry){ + //if (fPadTime0) delete fPadTime0; + entry->SetOwner(kTRUE); + fDistortionMap =(TObjArray*)entry->GetObject(); + }else{ + //AliFatal("TPC - Missing calibration entry") + } + + // // entry = GetCDBEntry("TPC/Calib/PadNoise"); @@ -343,6 +360,8 @@ void AliTPCcalibDB::Update(){ //if (fPadNoise) delete fPadNoise; entry->SetOwner(kTRUE); fPadNoise = (AliTPCCalPad*)entry->GetObject(); + }else{ + AliFatal("TPC - Missing calibration entry") } entry = GetCDBEntry("TPC/Calib/Pedestals"); @@ -364,12 +383,16 @@ void AliTPCcalibDB::Update(){ //if (fPadNoise) delete fPadNoise; entry->SetOwner(kTRUE); fParam = (AliTPCParam*)(entry->GetObject()->Clone()); + }else{ + AliFatal("TPC - Missing calibration entry") } entry = GetCDBEntry("TPC/Calib/ClusterParam"); if (entry){ entry->SetOwner(kTRUE); fClusterParam = (AliTPCClusterParam*)(entry->GetObject()->Clone()); + }else{ + AliFatal("TPC - Missing calibration entry") } //ALTRO configuration data @@ -377,6 +400,8 @@ void AliTPCcalibDB::Update(){ if (entry){ entry->SetOwner(kTRUE); fALTROConfigData=(TObjArray*)(entry->GetObject()); + }else{ + AliFatal("TPC - Missing calibration entry") } //Calibration Pulser data @@ -394,17 +419,6 @@ void AliTPCcalibDB::Update(){ } //RAW calibration data // entry = GetCDBEntry("TPC/Calib/Raw"); -// if (entry){ -// entry->SetOwner(kTRUE); -// TObjArray *arr=(TObjArray*)(entry->GetObject()); -// if (arr) fCalibRaw=(AliTPCCalibRaw*)arr->At(0); -// } -// //QA calibration data -// entry = GetCDBEntry("TPC/Calib/QA"); -// if (entry){ -// entry->SetOwner(kTRUE); -// fDataQA=dynamic_cast(entry->GetObject()); -// } entry = GetCDBEntry("TPC/Calib/Mapping"); if (entry){ @@ -419,24 +433,15 @@ void AliTPCcalibDB::Update(){ } } - //QA calibration data + //CTP calibration data entry = GetCDBEntry("GRP/CTP/CTPtiming"); if (entry){ //entry->SetOwner(kTRUE); fCTPTimeParams=dynamic_cast(entry->GetObject()); - } - - - //entry = GetCDBEntry("TPC/Calib/ExB"); - //if (entry) { - // entry->SetOwner(kTRUE); - // fExB=dynamic_cast(entry->GetObject()->Clone()); - //} + }else{ + AliFatal("TPC - Missing calibration entry") + } // - // ExB - calculate during initialization - in simulation /reconstruction - // - not invoked here anymore - //fExB = GetExB(-5,kTRUE); - // if (!fTransform) { fTransform=new AliTPCTransform(); fTransform->SetCurrentRun(AliCDBManager::Instance()->GetRun()); @@ -465,7 +470,12 @@ void AliTPCcalibDB::UpdateNonRec(){ entry->SetOwner(kTRUE); fDataQA=dynamic_cast(entry->GetObject()); } - + // High voltage + entry = AliCDBManager::Instance()->Get("TPC/Calib/HighVoltage",fRun); + if (entry) { + fVoltageArray.AddAt(entry->GetObject(),fRun); + } + } @@ -918,19 +928,20 @@ void AliTPCcalibDB::UpdateRunInformations( Int_t run, Bool_t force){ fGoofieArray.AddAt(entry->GetObject(),run); } // - entry = AliCDBManager::Instance()->Get("TPC/Calib/HighVoltage",run); - if (entry) { - fVoltageArray.AddAt(entry->GetObject(),run); - } + // entry = AliCDBManager::Instance()->Get("TPC/Calib/TimeGain",run); if (entry) { fTimeGainSplinesArray.AddAt(entry->GetObject(),run); + }else{ + AliFatal("TPC - Missing calibration entry TimeGain") } // entry = AliCDBManager::Instance()->Get("TPC/Calib/TimeDrift",run); if (entry) { fDriftCorrectionArray.AddAt(entry->GetObject(),run); + }else{ + AliFatal("TPC - Missing calibration entry TimeDrift") } // entry = AliCDBManager::Instance()->Get("TPC/Calib/Temperature",run); diff --git a/TPC/AliTPCcalibDB.h b/TPC/AliTPCcalibDB.h index 6dc5be8ebe3..57507c64568 100644 --- a/TPC/AliTPCcalibDB.h +++ b/TPC/AliTPCcalibDB.h @@ -63,6 +63,7 @@ class AliTPCcalibDB : public TObject AliTPCCalPad* GetPadGainFactor() {return fPadGainFactor;} AliTPCCalPad* GetDedxGainFactor() {return fDedxGainFactor;} AliTPCCalPad* GetPadTime0() {return fPadTime0;} + AliTPCCalPad* GetDistortionMap(Int_t i) {return (fDistortionMap) ? (AliTPCCalPad*)fDistortionMap->At(i):0;} AliTPCCalPad* GetPadNoise() {return fPadNoise;} AliTPCCalPad* GetPedestals() {return fPedestals;} //ALTRO config data @@ -172,6 +173,7 @@ protected: AliTPCCalPad* fPadGainFactor; // Gain calibration entry AliTPCCalPad* fDedxGainFactor; // Gain calibration entry - for dEdx AliTPCCalPad* fPadTime0; // Time0 calibration entry + TObjArray *fDistortionMap; // distortion map AliTPCCalPad* fPadNoise; // Noise calibration entry AliTPCCalPad* fPedestals; // Pedestal calibration entry AliTPCCalibRaw *fCalibRaw; // raw data calibration entry -- 2.43.0