]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliTPCcalibDB.cxx
Marian + Jens
[u/mrichter/AliRoot.git] / TPC / AliTPCcalibDB.cxx
index 70046491d4e6b8861068acb791f898d1b1696acf..342328c5bff29ba073f3687f141e227a362b1d83 100644 (file)
@@ -852,9 +852,8 @@ void AliTPCcalibDB::UpdateRunInformations( Int_t run, Bool_t force){
   // - > Don't use it for reconstruction - Only for Calibration studies
   //
   if (run<0) return;
-  if (fRunList[run]>0 &&force==kFALSE) return;
   AliCDBEntry * entry = 0;
-  if (run>= fRunList.GetSize()){
+  if (run>= fRunList.fN){
     fRunList.Set(run*2+1);
     fGRPArray.Expand(run*2+1);
     fGRPMaps.Expand(run*2+1);
@@ -864,7 +863,14 @@ void AliTPCcalibDB::UpdateRunInformations( Int_t run, Bool_t force){
     fVdriftArray.Expand(run*2+1);
     fDriftCorrectionArray.Expand(run*2+1);
     fTimeGainSplinesArray.Expand(run*2+1);
+    //
+    //
+    fALTROConfigData->Expand(run*2+1);    // ALTRO configuration data
+    fPulserData->Expand(run*2+1);         // Calibration Pulser data
+    fCEData->Expand(run*2+1);             // CE data
+    fTimeGainSplines->Expand(run*2+1); // Array of AliSplineFits: at 0 MIP position in
   }
+  if (fRunList[run]>0 &&force==kFALSE) return;
 
   fRunList[run]=1;  // sign as used
 
@@ -1682,24 +1688,33 @@ Double_t AliTPCcalibDB::GetVDriftCorrectionTime(Int_t timeStamp, Int_t run, Int_
   Double_t result;
   // mode 1  automatic mode - according to the distance to the valid calibration
   //                        -  
-  Double_t deltaP=0,  driftP=0,  wP  = 0.;
-  Double_t deltaLT=0, driftLT=0, wLT = 0.;
-  Double_t deltaCE=0, driftCE=0, wCE = 0.;
+  Double_t deltaP=0,  driftP=0,      wP  = 0.;
+  Double_t deltaITS=0,driftITS=0,    wITS= 0.;
+  Double_t deltaLT=0, driftLT=0,     wLT = 0.;
+  Double_t deltaCE=0, driftCE=0,     wCE = 0.;
   driftP  = fDButil->GetVDriftTPC(deltaP,run,timeStamp); 
+  driftITS= fDButil->GetVDriftTPCITS(deltaITS,run,timeStamp);
   driftCE = fDButil->GetVDriftTPCCE(deltaCE, run,timeStamp,36000,2);
   driftLT = fDButil->GetVDriftTPCLaserTracks(deltaLT,run,timeStamp,36000,2);
+  deltaITS = TMath::Abs(deltaITS);
   deltaP   = TMath::Abs(deltaP);
   deltaLT  = TMath::Abs(deltaLT);
   deltaCE  = TMath::Abs(deltaCE);
   if (mode==1) {
-    const Double_t kEpsilon=0.0000000001;
-    Double_t meanDist= (deltaP+deltaLT+deltaCE)*0.3;
-    if (meanDist<1.) return driftLT;
-    wP  = meanDist/(deltaP +0.005*meanDist);
-    wLT = meanDist/(deltaLT+0.005*meanDist);
-    wCE = meanDist/(deltaCE+0.001*meanDist);
+    const Double_t kEpsilon=0.00000000001;
+    const Double_t kdeltaT=360.; // 10 minutes
+    wITS  = 64.*kdeltaT/(deltaITS +kdeltaT);
+    wLT   = 16.*kdeltaT/(deltaLT  +kdeltaT);
+    wP    = 0. *kdeltaT/(deltaP   +kdeltaT);
+    wCE   = 1. *kdeltaT/(deltaCE  +kdeltaT);
+    //
+    //
+    if (TMath::Abs(driftP)<kEpsilon)  wP=0;  // invalid calibration
+    if (TMath::Abs(driftITS)<kEpsilon)wITS=0;  // invalid calibration
+    if (TMath::Abs(driftLT)<kEpsilon) wLT=0;  // invalid calibration
     if (TMath::Abs(driftCE)<kEpsilon) wCE=0;  // invalid calibration
-    result = (driftP*wP+driftLT*wLT+driftCE*wCE)/(wP+wLT+wCE);
+    if (wP+wITS+wLT+wCE<kEpsilon) return 0;
+    result = (driftP*wP+driftITS*wITS+driftLT*wLT+driftCE*wCE)/(wP+wITS+wLT+wCE);
   }
 
   return result;
@@ -1719,9 +1734,16 @@ Double_t AliTPCcalibDB::GetTime0CorrectionTime(Int_t timeStamp, Int_t run, Int_t
   // Notice - Extrapolation outside of calibration range  - using constant function
   //
   Double_t result=0;
-  if (mode==1) result=fDButil->GetTriggerOffsetTPC(run,timeStamp);    
-  result  *=fParam->GetZLength();
-
+  if (mode==2) {
+    // TPC-TPC mode
+    result=fDButil->GetTriggerOffsetTPC(run,timeStamp);    
+    result  *=fParam->GetZLength();
+  }
+  if (mode==1){
+    // TPC-ITS mode
+    Double_t dist=0;
+    result=   fDButil->GetTime0TPCITS(dist, run, timeStamp);
+  }
   return result;
 
 }