1. Adding drift correction calibration
authormarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 3 Jul 2009 18:18:38 +0000 (18:18 +0000)
committermarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 3 Jul 2009 18:18:38 +0000 (18:18 +0000)
2. Update and UpdateRunInformations(Int_t run, Bool_t force=kFALSE)
   in public interface.

3. UpdateRunInformations
   Update Pressure(GRP), Temperature, Drift velocity correction,HighVoltage
   In offline to be used just once
   HLT can use it to update the current information which will be than used
   for corrections

4. Test of functionality was done using CalibMacros/calibEnv.C

TPC/AliTPCcalibDB.cxx
TPC/AliTPCcalibDB.h

index 7ede1d8..892bf51 100644 (file)
@@ -181,6 +181,7 @@ AliTPCcalibDB::AliTPCcalibDB():
   fVoltageArray(100000),
   fTemperatureArray(100000),    //! array of temperature sensors - per run - Just for calibration studies
   fVdriftArray(100000),                 //! array of v drift interfaces
+  fDriftCorrectionArray(100000),  //! array of drift correction
   fRunList(100000)              //! run list - indicates try to get the run param 
 
 {
@@ -213,6 +214,7 @@ AliTPCcalibDB::AliTPCcalibDB(const AliTPCcalibDB& ):
   fVoltageArray(0),
   fTemperatureArray(0),   //! array of temperature sensors - per run - Just for calibration studies
   fVdriftArray(0),         //! array of v drift interfaces
+  fDriftCorrectionArray(0),         //! array of v drift interfaces
   fRunList(0)              //! run list - indicates try to get the run param 
 {
   //
@@ -736,7 +738,9 @@ void  AliTPCcalibDB::SetExBField(Float_t bz){
 
 
 
-void AliTPCcalibDB::GetRunInformations( Int_t run){
+
+
+void AliTPCcalibDB::UpdateRunInformations( Int_t run, Bool_t force){
   //
   // - > Don't use it for reconstruction - Only for Calibration studies
   //
@@ -749,9 +753,11 @@ void AliTPCcalibDB::GetRunInformations( Int_t run){
     fVoltageArray.Expand(run*2+1); 
     fTemperatureArray.Expand(run*2+1);
     fVdriftArray.Expand(run*2+1);
+    fDriftCorrectionArray.Expand(run*2+1);
     fTimeGainSplinesArray.Expand(run*2+1);
   }
-  if (fRunList[run]>0) return;
+  if (fRunList[run]>0 &&force==kFALSE) return;
+  //
   entry = AliCDBManager::Instance()->Get("GRP/GRP/Data",run);
   if (entry)  {
     AliGRPObject * grpRun = dynamic_cast<AliGRPObject*>(entry->GetObject());
@@ -768,16 +774,29 @@ void AliTPCcalibDB::GetRunInformations( Int_t run){
     fGRPArray.AddAt(grpRun,run);
   }
   entry = AliCDBManager::Instance()->Get("TPC/Calib/Goofie",run);
-  if (entry)  fGoofieArray.AddAt(entry->GetObject(),run);
+  if (entry){
+    fGoofieArray.AddAt(entry->GetObject(),run);
+  }
   //
   entry = AliCDBManager::Instance()->Get("TPC/Calib/HighVoltage",run);
-  if (entry)  fVoltageArray.AddAt(entry->GetObject(),run);
+  if (entry)  {
+    fVoltageArray.AddAt(entry->GetObject(),run);
+  }
   //
   entry = AliCDBManager::Instance()->Get("TPC/Calib/TimeGain",run);
-  if (entry)  fTimeGainSplinesArray.AddAt(entry->GetObject(),run);
+  if (entry)  {
+    fTimeGainSplinesArray.AddAt(entry->GetObject(),run);
+  }
+  //
+  entry = AliCDBManager::Instance()->Get("TPC/Calib/TimeDrift",run);
+  if (entry)  {
+    fDriftCorrectionArray.AddAt(entry->GetObject(),run);
+  }
   //
   entry = AliCDBManager::Instance()->Get("TPC/Calib/Temperature",run);
-  if (entry)  fTemperatureArray.AddAt(entry->GetObject(),run);
+  if (entry)  {
+    fTemperatureArray.AddAt(entry->GetObject(),run);
+  }
   fRunList[run]=1;  // sign as used
 
   AliDCSSensor * press = GetPressureSensor(run,0);
@@ -804,7 +823,7 @@ AliGRPObject *AliTPCcalibDB::GetGRP(Int_t run){
   //
   AliGRPObject * grpRun = dynamic_cast<AliGRPObject *>((Instance()->fGRPArray).At(run));
   if (!grpRun) {
-    Instance()->GetRunInformations(run);
+    Instance()->UpdateRunInformations(run);
     grpRun = dynamic_cast<AliGRPObject *>(Instance()->fGRPArray.At(run));
     if (!grpRun) return 0; 
   }
@@ -817,7 +836,7 @@ TMap *  AliTPCcalibDB::GetGRPMap(Int_t run){
   //
   TMap * grpRun = dynamic_cast<TMap *>((Instance()->fGRPMaps).At(run));
   if (!grpRun) {
-    Instance()->GetRunInformations(run);
+    Instance()->UpdateRunInformations(run);
     grpRun = dynamic_cast<TMap *>(Instance()->fGRPMaps.At(run));
     if (!grpRun) return 0; 
   }
@@ -849,7 +868,7 @@ AliDCSSensor * AliTPCcalibDB::GetPressureSensor(Int_t run, Int_t type){
   //
   AliGRPObject * grpRun = dynamic_cast<AliGRPObject *>(fGRPArray.At(run)); 
   if (!grpRun) {
-    GetRunInformations(run);
+    UpdateRunInformations(run);
     grpRun = dynamic_cast<AliGRPObject *>(fGRPArray.At(run));
     if (!grpRun) return 0; 
   }
@@ -864,7 +883,7 @@ AliTPCSensorTempArray * AliTPCcalibDB::GetTemperatureSensor(Int_t run){
   //
   AliTPCSensorTempArray * tempArray = (AliTPCSensorTempArray *)fTemperatureArray.At(run);
   if (!tempArray) {
-    GetRunInformations(run);
+    UpdateRunInformations(run);
     tempArray = (AliTPCSensorTempArray *)fTemperatureArray.At(run);
   }
   return tempArray;
@@ -877,7 +896,7 @@ TObjArray * AliTPCcalibDB::GetTimeGainSplinesRun(Int_t run){
   //
   TObjArray * gainSplines = (TObjArray *)fTimeGainSplinesArray.At(run);
   if (!gainSplines) {
-    GetRunInformations(run);
+    UpdateRunInformations(run);
     gainSplines = (TObjArray *)fTimeGainSplinesArray.At(run);
   }
   return gainSplines;
@@ -889,7 +908,7 @@ AliDCSSensorArray * AliTPCcalibDB::GetVoltageSensors(Int_t run){
   //
   AliDCSSensorArray * voltageArray = (AliDCSSensorArray *)fVoltageArray.At(run);
   if (!voltageArray) {
-    GetRunInformations(run);
+    UpdateRunInformations(run);
     voltageArray = (AliDCSSensorArray *)fVoltageArray.At(run);
   }
   return voltageArray;
@@ -901,7 +920,7 @@ AliDCSSensorArray * AliTPCcalibDB::GetGoofieSensors(Int_t run){
   //
   AliDCSSensorArray * goofieArray = (AliDCSSensorArray *)fGoofieArray.At(run);
   if (!goofieArray) {
-    GetRunInformations(run);
+    UpdateRunInformations(run);
     goofieArray = (AliDCSSensorArray *)fGoofieArray.At(run);
   }
   return goofieArray;
@@ -915,7 +934,7 @@ AliTPCCalibVdrift *     AliTPCcalibDB::GetVdrift(Int_t run){
   //
   AliTPCCalibVdrift  * vdrift = (AliTPCCalibVdrift*)fVdriftArray.At(run);
   if (!vdrift) {
-    GetRunInformations(run);
+    UpdateRunInformations(run);
     vdrift= (AliTPCCalibVdrift*)fVdriftArray.At(run);
   }
   return vdrift;
index 302724c..02fabbf 100644 (file)
@@ -39,6 +39,11 @@ class AliTPCcalibDB : public TObject
   virtual ~AliTPCcalibDB();
   static void Terminate();
   void   SetRun(Long64_t run);   
+  void   Update();  //update entries
+  void   UpdateRunInformations(Int_t run, Bool_t force=kFALSE);
+  //
+  //
+  //
   //
   AliTPCTransform* GetTransform() {return fTransform;}
   AliTPCExB*    GetExB() {return fExB;}
@@ -85,9 +90,7 @@ class AliTPCcalibDB : public TObject
   //
 protected:
   
-  void         Update();  //update entries
   AliCDBEntry* GetCDBEntry(const char* cdbPath);   
-  void GetRunInformations(Int_t run); // JUST FOR CALIBRATION STUDIES
   Long64_t        fRun;         // current run number
   AliTPCTransform *fTransform;      // object responsible for spacial corrections
   AliTPCExB *fExB;              // ExB correction factor
@@ -117,6 +120,8 @@ protected:
   TObjArray      fVoltageArray;                                        //! array of Chamber HV values -per run
   TObjArray      fTemperatureArray;                    //! array of temperature sensors - per run
   TObjArray      fVdriftArray;                                 //! array of v drift interfaces
+  TObjArray      fDriftCorrectionArray;                //! array of drift correction
+
   TArrayI        fRunList;                                                     //! run list - indicates try to get the run param
   //
   static AliTPCcalibDB* fgInstance;  // singleton control