]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/CalibMacros/CalibEnv.C
AliTPCcalibDB.cxx - Calculate the distance to the closest measurement
[u/mrichter/AliRoot.git] / TPC / CalibMacros / CalibEnv.C
index 5704e51830c650e358b45724d4a7ff800e90a371..4daf732590563b606d0ab369cbd2688522c448fb 100644 (file)
@@ -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 <iostream>
 #include <fstream>
 #include <stdio.h>
@@ -55,7 +56,9 @@ TTreeSRedirector *pcstream =0;
 void ProcessRun(Int_t irun, Int_t startTime, Int_t endTime);
 void GetProductionInfo(Int_t run, Int_t &nalien, Int_t &nRawAlien, Int_t &nlocal, Int_t &nRawLocal);
 void ProcessDrift(Int_t run, Int_t timeStamp);
-
+void ProcessDriftCE(Int_t run, Int_t timeStamp);
+void ProcessDriftAll(Int_t run, Int_t timeStamp);
+void ProcessKryptonTime(Int_t run, Int_t timeStamp);
 void CalibEnv(const char * runList, Int_t first=1, Int_t last=-1){
   //
   // runList - listOfRuns to process
@@ -105,6 +108,11 @@ void CalibEnv(const char * runList, Int_t first=1, Int_t last=-1){
       endTime  =senHV->GetEndTime();
       if (startTime>0&&endTime>0) break;
     }
+    dbutil->FilterCE(120., 3., 4.,pcstream);
+    dbutil->FilterTracks(irun, 10.,pcstream);
+    AliDCSSensorArray* goofieArray = AliTPCcalibDB::Instance()->GetGoofieSensors(irun);                 
+    //if (goofieArray) dbutil->FilterGoofie(goofieArray,2,4,pcstream);
+    // don't filter goofie for the moment
     ProcessRun(irun, startTime,endTime);
   }
   delete pcstream;  
@@ -336,6 +344,9 @@ void ProcessRun(Int_t irun, Int_t startTime, Int_t endTime){
       "tempSkirtA.="<<&vecSkirtTempA<<
       "tempSkirtC.="<<&vecSkirtTempC;
     ProcessDrift(irun, itime);
+    ProcessDriftCE(irun,itime);
+    ProcessDriftAll(irun,itime);
+    ProcessKryptonTime(irun,itime);
     (*pcstream)<<"dcs"<<       
       //noise data
       "meanNoise.="<<&vNoiseMean<<
@@ -447,9 +458,14 @@ void ProcessDrift(Int_t run, Int_t timeStamp){
   TGraphErrors *laserA[3]={0,0,0};
   TGraphErrors *laserC[3]={0,0,0};
   TGraphErrors *cosmicAll=0;
+  TGraphErrors *laserAE[3]={0,0,0};
+  TGraphErrors *laserCE[3]={0,0,0};
+  TGraphErrors *cosmicAllE=0;
   static Double_t     vlaserA[3]={0,0,0};
   static Double_t     vlaserC[3]={0,0,0};
   static Double_t     vcosmicAll=0;
+  static Double_t     vdrift1=0;
+  vdrift1=AliTPCcalibDB::Instance()->GetVDriftCorrectionTime(timeStamp,run,0,1);
 
   if (array){
     laserA[0]=(TGraphErrors*)array->FindObject("GRAPH_MEAN_DELAY_LASER_ALL_A");
@@ -460,13 +476,13 @@ void ProcessDrift(Int_t run, Int_t timeStamp){
     laserC[2]=(TGraphErrors*)array->FindObject("GRAPH_MEAN_GLOBALYGRADIENT_LASER_ALL_C");
     cosmicAll =(TGraphErrors*)array->FindObject("TGRAPHERRORS_MEAN_VDRIFT_COSMICS_ALL");
   }
-  if (laserA[0]) vlaserA[0]= laserA[0]->Eval(timeStamp);
-  if (laserA[1]) vlaserA[1]= laserA[1]->Eval(timeStamp);
-  if (laserA[2]) vlaserA[2]= laserA[2]->Eval(timeStamp);
-  if (laserC[0]) vlaserC[0]= laserC[0]->Eval(timeStamp);
-  if (laserC[1]) vlaserC[1]= laserC[1]->Eval(timeStamp);
-  if (laserC[2]) vlaserC[2]= laserC[2]->Eval(timeStamp);
-  if (cosmicAll) vcosmicAll= cosmicAll->Eval(timeStamp); 
+  if (laserA[0]) vlaserA[0]= AliTPCcalibDButil::EvalGraphConst(laserA[0],timeStamp);
+  if (laserA[1]) vlaserA[1]= AliTPCcalibDButil::EvalGraphConst(laserA[1],timeStamp);
+  if (laserA[2]) vlaserA[2]= AliTPCcalibDButil::EvalGraphConst(laserA[2],timeStamp);
+  if (laserC[0]) vlaserC[0]= AliTPCcalibDButil::EvalGraphConst(laserC[0],timeStamp);
+  if (laserC[1]) vlaserC[1]= AliTPCcalibDButil::EvalGraphConst(laserC[1],timeStamp);
+  if (laserC[2]) vlaserC[2]= AliTPCcalibDButil::EvalGraphConst(laserC[2],timeStamp);
+  if (cosmicAll) vcosmicAll= AliTPCcalibDButil::EvalGraphConst(cosmicAll,timeStamp); 
   (*pcstream)<<"dcs"<<
     "vlaserA0="<<vlaserA[0]<<
     "vlaserA1="<<vlaserA[1]<<
@@ -474,5 +490,175 @@ void ProcessDrift(Int_t run, Int_t timeStamp){
     "vlaserC0="<<vlaserC[0]<<
     "vlaserC1="<<vlaserC[1]<<
     "vlaserC2="<<vlaserC[2]<<
-    "vcosmicAll="<<vcosmicAll;
+    "vcosmicAll="<<vcosmicAll<<
+    "vdrift1="<<vdrift1;
+
+  //
+  // define distance to measurement
+  //
+  static Double_t dlaserA=0; 
+  static Double_t dlaserC=0; 
+  static Double_t dcosmic=0; 
+  static Double_t slaserA=0; 
+  static Double_t slaserC=0; 
+  static Double_t scosmic=0; 
+  static Double_t  vclaserA[3]={0,0,0};
+  static Double_t  vclaserC[3]={0,0,0};
+  static Double_t  vccosmicAll=0;
+  for (Int_t i=0;i<3;i++){
+    if (laserA[i]) AliTPCcalibDButil::GetNearest(laserA[i],timeStamp,dlaserA,vclaserA[i]);
+    if (laserC[i]) AliTPCcalibDButil::GetNearest(laserC[i],timeStamp,dlaserC,vclaserC[i]);
+  }  
+  if (cosmicAll) AliTPCcalibDButil::GetNearest(cosmicAll,timeStamp,dcosmic,vccosmicAll);
+  (*pcstream)<<"dcs"<<
+    "vclaserA0="<<vclaserA[0]<<
+    "vclaserA1="<<vclaserA[1]<<
+    "vclaserA2="<<vclaserA[2]<<
+    "vclaserC0="<<vclaserC[0]<<
+    "vclaserC1="<<vclaserC[1]<<
+    "vclaserC2="<<vclaserC[2]<<
+    "vccosmicAll="<<vccosmicAll<<
+    "dlaserA="<<dlaserA<<
+    "dlaserC="<<dlaserC<<
+    "dcosmic="<<dcosmic<<
+    "slaserA="<<slaserA<<
+    "slaserC="<<slaserC<<
+    "scosmic="<<scosmic;
+}
+
+void ProcessDriftCE(Int_t run,Int_t timeStamp){
+  //
+  // dump drift calibration data CE
+  //
+  TObjArray *arrT=AliTPCcalibDB::Instance()->GetCErocTtime();
+  AliTPCParam *param=AliTPCcalibDB::Instance()->GetParameters();
+  static TVectorD tdriftCE(74);
+  static TVectorD tndriftCE(74);
+  static TVectorD vdriftCE(74);
+  static TVectorD tcdriftCE(74);
+  static TVectorD tddriftCE(74);
+  static Double_t ltime0A;
+  static Double_t ltime0C;
+  //
+  //
+  //
+  ltime0A  = dbutil->GetLaserTime0(run,timeStamp,36000,0);
+  ltime0C  = dbutil->GetLaserTime0(run,timeStamp,36000,1);
+  //
+  for (Int_t i=0; i<arrT->GetEntries();i++){
+    tdriftCE[i]=0;
+    vdriftCE[i]=0;
+    TGraph *graph = (TGraph*)arrT->At(i);
+    if (!graph) continue;
+    tdriftCE[i]=AliTPCcalibDButil::EvalGraphConst(graph,timeStamp);
+    Double_t deltaT,gry;
+    AliTPCcalibDButil::GetNearest(graph,timeStamp,deltaT,gry);
+    tndriftCE[i]=graph->GetN();
+    tcdriftCE[i]=gry;         
+    tddriftCE[i]=deltaT;              
+    if (i%36<18){
+      vdriftCE[i] =(param->GetZLength(i)/(tdriftCE[i]*param->GetTSample()*(1.-ltime0A)-param->GetL1Delay()))/param->GetDriftV();
+    }else{
+      vdriftCE[i] =(param->GetZLength(i)/(tdriftCE[i]*param->GetTSample()*(1.-ltime0A)-param->GetL1Delay()))/param->GetDriftV();
+    }
+  }
+
+  (*pcstream)<<"dcs"<<  
+    "tdriftCE.="<<&tdriftCE<<
+    "vdriftCE.="<<&vdriftCE<<
+    "tndriftCE.="<<&tndriftCE<<
+    "tcdriftCE.="<<&tcdriftCE<<
+    "tddriftCE.="<<&tddriftCE<<
+    "ltime0A="<<ltime0A<<
+    "ltime0C="<<ltime0C;
+   }
+
+
+void ProcessDriftAll(Int_t run,Int_t timeStamp){
+  //
+  // dump drift calibration data  all calibrations form DB util
+  // test of utils
+  static Double_t vdriftCEA=0, vdriftCEC=0, vdriftCEM=0;
+  static Double_t vdriftLTA=0, vdriftLTC=0, vdriftLTM=0;
+  static Double_t dce=0, dla=0,dlc=0,dlm=0;
+  static Double_t ltime0A;
+  static Double_t ltime0C;
+  static Double_t     vdrift1=0;
+  vdrift1=AliTPCcalibDB::Instance()->GetVDriftCorrectionTime(timeStamp,run,0,1);
+  
+  //
+  vdriftCEA= dbutil->GetVDriftTPCCE(dla,run,timeStamp,36000,0);
+  vdriftCEC= dbutil->GetVDriftTPCCE(dlc,run,timeStamp,36000,1);
+  vdriftCEM= dbutil->GetVDriftTPCCE(dlm,run,timeStamp,36000,2);
+  //
+  vdriftLTA= dbutil->GetVDriftTPCLaserTracks(dla,run,timeStamp,36000,0);
+  vdriftLTC= dbutil->GetVDriftTPCLaserTracks(dlc,run,timeStamp,36000,1);
+  vdriftLTM= dbutil->GetVDriftTPCLaserTracks(dlm,run,timeStamp,36000,2);
+  //
+  ltime0A  = dbutil->GetLaserTime0(run,timeStamp,36000,0);
+  ltime0C  = dbutil->GetLaserTime0(run,timeStamp,36000,1);
+
+  (*pcstream)<<"dcs"<<  
+    //
+    "vdriftCEA="<<vdriftCEA<<
+    "vdriftCEC="<<vdriftCEC<<
+    "vdriftCEM="<<vdriftCEM<<
+    "dce="<<dce<<
+    "vdriftLTA="<<vdriftLTA<<
+    "vdriftLTC="<<vdriftLTC<<
+    "vdriftLTM="<<vdriftLTM<<
+    "dla="<<dla<<
+    "dlc="<<dlc<<
+    "dlm="<<dlm<<
+    "vdrift1="<<vdrift1;
+
 }
+
+
+
+void ProcessKryptonTime(Int_t run, Int_t timeStamp){
+  //
+  // Dumping  krypton calibration results
+  //
+  static TObjArray * krArray=0;
+  if (!krArray) {
+    AliCDBEntry* entry = AliCDBManager::Instance()->Get("TPC/Calib/TimeGainKrypton", run);
+    if (entry){
+      krArray = (TObjArray*)entry->GetObject();
+    }
+  }
+  static TVectorD krMean(74);
+  static TVectorD krErr(74);
+  static TVectorD krDist(74);
+  TGraphErrors *gr=0;
+  Double_t deltaT=0,gry=0;
+  if (krArray){
+    for (Int_t isec=0; isec<72; isec++){
+      krMean[isec]=0;
+      krDist[isec]=0;
+      krErr[isec]=0;
+      gr=(TGraphErrors*)krArray->At(isec);
+      if (gr) {
+       krMean[isec]=gr->Eval(timeStamp);
+       AliTPCcalibDButil::GetNearest(gr, timeStamp,deltaT,gry);
+       krDist[isec]=deltaT;
+      }     
+      if (72+isec<krArray->GetEntries()) {
+       gr=(TGraphErrors*)krArray->At(72+isec);
+       if (gr) krErr[isec]=gr->Eval(timeStamp);
+      }
+    }
+    krMean[72]= TMath::Median(36,krMean.GetMatrixArray());
+    krMean[73]= TMath::Median(36,&(krMean.GetMatrixArray()[36]));
+    krErr[72]= TMath::Median(36,krErr.GetMatrixArray());
+    krErr[73]= TMath::Median(36,&(krErr.GetMatrixArray()[36]));
+  }
+  (*pcstream)<<"dcs"<<
+    "krMean.="<<&krMean<<
+    "krErr.="<<&krErr<<
+    "krDist.="<<&krDist;
+}
+
+
+
+