From: marian Date: Thu, 22 Oct 2009 08:36:04 +0000 (+0000) Subject: AliTPCcalibDB.cxx - Check the OCDB info consistency X-Git-Url: http://git.uio.no/git/?a=commitdiff_plain;h=a8f8b6a12d61c574139f5e77370a2991c334e2ee;p=u%2Fmrichter%2FAliRoot.git AliTPCcalibDB.cxx - Check the OCDB info consistency AliTPCTransform.cxx - cach current correction CalibEnv.C - exporting drift velocity for different type of post-proces algorithm --- diff --git a/TPC/AliTPCTransform.cxx b/TPC/AliTPCTransform.cxx index 8877982cdfc..6a9f4268afc 100755 --- a/TPC/AliTPCTransform.cxx +++ b/TPC/AliTPCTransform.cxx @@ -246,35 +246,38 @@ void AliTPCTransform::Local2RotatedGlobal(Int_t sector, Double_t *x) const { } } // - // - Double_t vdcorrectionTime=1; - Double_t time0corrTime=0; - // - if(fCurrentRecoParam&&fCurrentRecoParam->GetUseDriftCorrectionTime()>0) { - vdcorrectionTime = (1+AliTPCcalibDB::Instance()-> - GetVDriftCorrectionTime(fCurrentTimeStamp, - AliTPCcalibDB::Instance()->GetRun(), - sector%36>=18, - fCurrentRecoParam->GetUseDriftCorrectionTime())); - time0corrTime= AliTPCcalibDB::Instance()-> - GetTime0CorrectionTime(fCurrentTimeStamp, - AliTPCcalibDB::Instance()->GetRun(), - sector%36>=18, - fCurrentRecoParam->GetUseDriftCorrectionTime()); - } - // - if(fCurrentRecoParam&&fCurrentRecoParam->GetUseDriftCorrectionGY()>0) { - Float_t xyzPad[3]; - AliTPCROC::Instance()->GetPositionGlobal(sector, TMath::Nint(x[0]) ,TMath::Nint(x[1]), xyzPad); - - Double_t corrGy= (1+(xyzPad[1])*AliTPCcalibDB::Instance()-> - GetVDriftCorrectionGy(fCurrentTimeStamp, - AliTPCcalibDB::Instance()->GetRun(), - sector%36>=18, - fCurrentRecoParam->GetUseDriftCorrectionGY())); - vdcorrectionTime *=corrGy; + // simple caching non thread save + static Double_t vdcorrectionTime=1; + static Double_t time0corrTime=0; + static Int_t lastStampT=-1; + // + if (lastStampT!=fCurrentTimeStamp){ + lastStampT=fCurrentTimeStamp; + if(fCurrentRecoParam&&fCurrentRecoParam->GetUseDriftCorrectionTime()>0) { + vdcorrectionTime = (1+AliTPCcalibDB::Instance()-> + GetVDriftCorrectionTime(fCurrentTimeStamp, + AliTPCcalibDB::Instance()->GetRun(), + sector%36>=18, + fCurrentRecoParam->GetUseDriftCorrectionTime())); + time0corrTime= AliTPCcalibDB::Instance()-> + GetTime0CorrectionTime(fCurrentTimeStamp, + AliTPCcalibDB::Instance()->GetRun(), + sector%36>=18, + fCurrentRecoParam->GetUseDriftCorrectionTime()); + } + // + if(fCurrentRecoParam&&fCurrentRecoParam->GetUseDriftCorrectionGY()>0) { + Float_t xyzPad[3]; + AliTPCROC::Instance()->GetPositionGlobal(sector, TMath::Nint(x[0]) ,TMath::Nint(x[1]), xyzPad); + + Double_t corrGy= (1+(xyzPad[1])*AliTPCcalibDB::Instance()-> + GetVDriftCorrectionGy(fCurrentTimeStamp, + AliTPCcalibDB::Instance()->GetRun(), + sector%36>=18, + fCurrentRecoParam->GetUseDriftCorrectionGY())); + vdcorrectionTime *=corrGy; + } } - if (!param){ diff --git a/TPC/AliTPCcalibDB.cxx b/TPC/AliTPCcalibDB.cxx index d02a64daeca..9b38f2a8df7 100644 --- a/TPC/AliTPCcalibDB.cxx +++ b/TPC/AliTPCcalibDB.cxx @@ -296,8 +296,7 @@ void AliTPCcalibDB::SetRun(Long64_t run) void AliTPCcalibDB::Update(){ // - AliCDBEntry * entry=0; - + AliCDBEntry * entry=0; Bool_t cdbCache = AliCDBManager::Instance()->GetCacheFlag(); // save cache status AliCDBManager::Instance()->SetCacheFlag(kTRUE); // activate CDB cache @@ -424,7 +423,6 @@ void AliTPCcalibDB::Update(){ // AliCDBManager::Instance()->SetCacheFlag(cdbCache); // reset original CDB cache - } @@ -1570,6 +1568,8 @@ Double_t AliTPCcalibDB::GetVDriftCorrectionTime(Int_t timeStamp, Int_t run, Int_ // // Notice - Extrapolation outside of calibration range - using constant function // + if (run<=0 && fTransform) run = fTransform->GetCurrentRunNumber(); + UpdateRunInformations(run,kFALSE); TObjArray *array =AliTPCcalibDB::Instance()->GetTimeVdriftSplineRun(run); if (!array) return 0; TGraphErrors *laserA= (TGraphErrors*)array->FindObject("GRAPH_MEAN_DRIFT_LASER_ALL_A"); @@ -1601,6 +1601,8 @@ Double_t AliTPCcalibDB::GetTime0CorrectionTime(Int_t timeStamp, Int_t run, Int_t // // Notice - Extrapolation outside of calibration range - using constant function // + if (run<=0 && fTransform) run = fTransform->GetCurrentRunNumber(); + UpdateRunInformations(run,kFALSE); TObjArray *array =AliTPCcalibDB::Instance()->GetTimeVdriftSplineRun(run); if (!array) return 0; TGraphErrors *laserA= (TGraphErrors*)array->FindObject("GRAPH_MEAN_DRIFT_LASER_ALL_A"); @@ -1641,7 +1643,9 @@ Double_t AliTPCcalibDB::GetVDriftCorrectionGy(Int_t timeStamp, Int_t run, Int_t // side - the drift velocity gy correction per side (CE and Laser tracks) // // Notice - Extrapolation outside of calibration range - using constant function - // + // + if (run<=0 && fTransform) run = fTransform->GetCurrentRunNumber(); + UpdateRunInformations(run,kFALSE); TObjArray *array =AliTPCcalibDB::Instance()->GetTimeVdriftSplineRun(run); if (!array) return 0; TGraphErrors *laserA= (TGraphErrors*)array->FindObject("GRAPH_MEAN_GLOBALYGRADIENT_LASER_ALL_A"); diff --git a/TPC/CalibMacros/CalibEnv.C b/TPC/CalibMacros/CalibEnv.C index 5704e51830c..41ff7bad3d4 100644 --- a/TPC/CalibMacros/CalibEnv.C +++ b/TPC/CalibMacros/CalibEnv.C @@ -7,7 +7,8 @@ gSystem->AddIncludePath("-I$ALICE_ROOT/TPC"); CalibEnv("run.list"); TFile f("dcsTime.root") */ - +#include "TMVA/TSpline1.h" +#include "TMVA/TSpline2.h" #include #include #include @@ -50,6 +51,8 @@ AliTPCcalibDButil *dbutil =0; TTree * dcsTree=0; TString refFile="dummy.root"; TTreeSRedirector *pcstream =0; +void GetNearest(TGraph *graph, Double_t x, Double_t &dx, Double_t &y); +void GetInterpoloationSigma(TGraph *graph, Double_t x, Double_t &dx, Double_t &sy, Double_t deltaX); // // void ProcessRun(Int_t irun, Int_t startTime, Int_t endTime); @@ -450,6 +453,7 @@ void ProcessDrift(Int_t run, Int_t timeStamp){ static Double_t vlaserA[3]={0,0,0}; static Double_t vlaserC[3]={0,0,0}; static Double_t vcosmicAll=0; + if (array){ laserA[0]=(TGraphErrors*)array->FindObject("GRAPH_MEAN_DELAY_LASER_ALL_A"); @@ -475,4 +479,79 @@ void ProcessDrift(Int_t run, Int_t timeStamp){ "vlaserC1="<GetN(), graph->GetX(),x); + if (index<1) index=1; + if (index>=graph->GetN()-1) index=graph->GetN()-2; + + for (Int_t idelta=-10; idelta<=10; idelta++){ + Double_t y0=0,dummy=0; + Double_t lx=x+idelta*deltaX/20.; + deltas[counter]=spline1->Eval(lx)-graph->GetY()[index]; + counter++; + deltas[counter]=spline1->Eval(lx)-graph->GetY()[index+1]; + counter++; + } + sy=TMath::RMS(counter,deltas); }