]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliTPCcalibDB.cxx
Corrected UInt_t <-> Int_t conversion
[u/mrichter/AliRoot.git] / TPC / AliTPCcalibDB.cxx
index a308fb417361511e4feac142d4562136d70e76c0..b2c520ba3cc394793efcc14dfd51cfb38980fb9b 100644 (file)
@@ -125,6 +125,7 @@ class AliTPCCalDet;
 #include "AliTPCCalibRaw.h"
 #include "AliTPCParam.h"
 #include "AliTPCCorrection.h"
+#include "AliTPCComposedCorrection.h"
 #include "AliTPCPreprocessorOnline.h"
 
 
@@ -202,8 +203,10 @@ AliTPCcalibDB::AliTPCcalibDB():
   fVdriftArray(100000),                 //! array of v drift interfaces
   fDriftCorrectionArray(100000),  //! array of drift correction
   fRunList(100000),              //! run list - indicates try to get the run param 
+  fBHasAlignmentOCDB(kFALSE),    // Flag  - has the alignment on the composed correction ?
   fDButil(0),
-  fCTPTimeParams(0)
+  fCTPTimeParams(0),
+  fMode(-1)
 {
   //
   // constructor
@@ -245,8 +248,10 @@ AliTPCcalibDB::AliTPCcalibDB(const AliTPCcalibDB& ):
   fVdriftArray(0),         //! array of v drift interfaces
   fDriftCorrectionArray(0), //! array of v drift corrections
   fRunList(0),              //! run list - indicates try to get the run param 
+  fBHasAlignmentOCDB(kFALSE),    // Flag  - has the alignment on the composed correction ?
   fDButil(0),
-  fCTPTimeParams(0)
+  fCTPTimeParams(0),
+  fMode(-1)
 {
   //
   // Copy constructor invalid -- singleton implementation
@@ -291,7 +296,7 @@ AliCDBEntry* AliTPCcalibDB::GetCDBEntry(const char* cdbPath)
   AliCDBEntry* entry = AliCDBManager::Instance()->Get(cdbPath, fRun); 
   if (!entry) 
   { 
-    sprintf(chinfo,"AliTPCcalibDB: Failed to get entry:\t%s ", cdbPath);
+    snprintf(chinfo,1000,"AliTPCcalibDB: Failed to get entry:\t%s ", cdbPath);
     AliError(chinfo); 
     return 0; 
   }
@@ -330,7 +335,7 @@ void AliTPCcalibDB::Update(){
     entry->SetOwner(kTRUE);
     fPadGainFactor = (AliTPCCalPad*)entry->GetObject();
   }else{
-    AliFatal("TPC - Missing calibration entry TPC/Calib/PadGainFactor")
+    AliFatal("TPC - Missing calibration entry TPC/Calib/PadGainFactor");
   }
   //
   entry          = GetCDBEntry("TPC/Calib/TimeGain");
@@ -339,7 +344,7 @@ void AliTPCcalibDB::Update(){
     entry->SetOwner(kTRUE);
     fTimeGainSplines = (TObjArray*)entry->GetObject();
   }else{
-    AliFatal("TPC - Missing calibration entry TPC/Calib/Timegain")
+    AliFatal("TPC - Missing calibration entry TPC/Calib/Timegain");
   }
   //
   entry          = GetCDBEntry("TPC/Calib/GainFactorDedx");
@@ -347,7 +352,7 @@ void AliTPCcalibDB::Update(){
     entry->SetOwner(kTRUE);
     fDedxGainFactor = (AliTPCCalPad*)entry->GetObject();
   }else{
-    AliFatal("TPC - Missing calibration entry TPC/Calib/gainFactordEdx")
+    AliFatal("TPC - Missing calibration entry TPC/Calib/gainFactordEdx");
   }
   //
   entry          = GetCDBEntry("TPC/Calib/PadTime0");
@@ -356,7 +361,7 @@ void AliTPCcalibDB::Update(){
     entry->SetOwner(kTRUE);
     fPadTime0 = (AliTPCCalPad*)entry->GetObject();
   }else{
-    AliFatal("TPC - Missing calibration entry")
+    AliFatal("TPC - Missing calibration entry");
   }
 
   entry          = GetCDBEntry("TPC/Calib/Distortion");
@@ -377,7 +382,7 @@ void AliTPCcalibDB::Update(){
     entry->SetOwner(kTRUE);
     fPadNoise = (AliTPCCalPad*)entry->GetObject();
   }else{
-    AliFatal("TPC - Missing calibration entry")
+    AliFatal("TPC - Missing calibration entry");
   }
 
   entry          = GetCDBEntry("TPC/Calib/Pedestals");
@@ -400,7 +405,7 @@ void AliTPCcalibDB::Update(){
     entry->SetOwner(kTRUE);
     fParam = (AliTPCParam*)(entry->GetObject()->Clone());
   }else{
-    AliFatal("TPC - Missing calibration entry TPC/Calib/Parameters")
+    AliFatal("TPC - Missing calibration entry TPC/Calib/Parameters");
   }
 
   entry          = GetCDBEntry("TPC/Calib/ClusterParam");
@@ -408,7 +413,7 @@ void AliTPCcalibDB::Update(){
     entry->SetOwner(kTRUE);
     fClusterParam = (AliTPCClusterParam*)(entry->GetObject()->Clone());
   }else{
-    AliFatal("TPC - Missing calibration entry")
+    AliFatal("TPC - Missing calibration entry");
   }
 
   //ALTRO configuration data
@@ -417,7 +422,7 @@ void AliTPCcalibDB::Update(){
     entry->SetOwner(kTRUE);
     fALTROConfigData=(TObjArray*)(entry->GetObject());
   }else{
-    AliFatal("TPC - Missing calibration entry")
+    AliFatal("TPC - Missing calibration entry");
   }
   
   //Calibration Pulser data
@@ -455,7 +460,7 @@ void AliTPCcalibDB::Update(){
     //entry->SetOwner(kTRUE);
     fCTPTimeParams=dynamic_cast<AliCTPTimeParams*>(entry->GetObject());
   }else{
-    AliError("TPC - Missing calibration entry")
+    AliError("TPC - Missing calibration entry");
   }  
   //TPC space point correction data
   entry          = GetCDBEntry("TPC/Calib/Correction");
@@ -466,14 +471,22 @@ void AliTPCcalibDB::Update(){
     fComposedCorrectionArray=dynamic_cast<TObjArray*>(entry->GetObject());
     if (fComposedCorrectionArray){
       for (Int_t i=0; i<fComposedCorrectionArray->GetEntries(); i++){
-       AliTPCCorrection* composedCorrection= dynamic_cast<AliTPCCorrection*>(fComposedCorrectionArray->At(i));
-       if (composedCorrection) composedCorrection->Init();
+       AliTPCComposedCorrection* composedCorrection= dynamic_cast<AliTPCComposedCorrection*>(fComposedCorrectionArray->At(i));
+       if (composedCorrection) {
+         composedCorrection->Init();
+         if (composedCorrection->GetCorrections()){
+           if (composedCorrection->GetCorrections()->FindObject("FitAlignTPC")){
+             fBHasAlignmentOCDB=kTRUE;
+           }
+         }
+       }
       }
-    }
+    }  
   }else{
-    AliError("TPC - Missing calibration entry-  TPC/Calib/Correction")
-  }  
-
+    AliError("TPC - Missing calibration entry-  TPC/Calib/Correction");
+  } 
+  //RCU trigger config mode
+  fMode=GetRCUTriggerConfig();
   //
   if (!fTransform) {
     fTransform=new AliTPCTransform(); 
@@ -841,9 +854,8 @@ Bool_t AliTPCcalibDB::IsTrgL0()
   //
   // return if the FEE readout was triggered on L0
   //
-  Int_t mode=GetRCUTriggerConfig();
-  if (mode<0) return kFALSE;
-  return (mode==1);
+  if (fMode<0) return kFALSE;
+  return (fMode==1);
 }
 
 Bool_t AliTPCcalibDB::IsTrgL1()
@@ -851,9 +863,8 @@ Bool_t AliTPCcalibDB::IsTrgL1()
   //
   // return if the FEE readout was triggered on L1
   //
-  Int_t mode=GetRCUTriggerConfig();
-  if (mode<0) return kFALSE;
-  return (mode==0);
+  if (fMode<0) return kFALSE;
+  return (fMode==0);
 }
 
 void AliTPCcalibDB::RegisterExB(Int_t index, Float_t bz, Bool_t bdelete){
@@ -970,14 +981,21 @@ void AliTPCcalibDB::UpdateRunInformations( Int_t run, Bool_t force){
   if (entry)  {
     fTimeGainSplinesArray.AddAt(entry->GetObject(),run);
   }else{
-    AliFatal("TPC - Missing calibration entry TimeGain")
+    AliFatal("TPC - Missing calibration entry TimeGain");
   }
   //
   entry = AliCDBManager::Instance()->Get("TPC/Calib/TimeDrift",run);
   if (entry)  {
-    fDriftCorrectionArray.AddAt(entry->GetObject(),run);
+    TObjArray * timeArray = (TObjArray*)entry->GetObject();    
+    fDriftCorrectionArray.AddAt(entry->GetObject(),run);  
+    AliTPCCorrection * correctionTime = (AliTPCCorrection *)timeArray->FindObject("FitCorrectionTime");
+    if (correctionTime && fComposedCorrectionArray){
+      correctionTime->Init();
+      if (fComposedCorrectionArray->GetEntriesFast()<4) fComposedCorrectionArray->Expand(40);
+      fComposedCorrectionArray->AddAt(correctionTime,4); //add time dependent correction to the list of available corrections
+    }
   }else{
-    AliFatal("TPC - Missing calibration entry TimeDrift")
+    AliFatal("TPC - Missing calibration entry TimeDrift");
   }
   //
   entry = AliCDBManager::Instance()->Get("TPC/Calib/Temperature",run);
@@ -996,7 +1014,7 @@ void AliTPCcalibDB::UpdateRunInformations( Int_t run, Bool_t force){
     accept = fDButil->FilterTemperature(temp)>0.1;
   }
   if (press) {
-    const Double_t kMinP=950.;
+    const Double_t kMinP=900.;
     const Double_t kMaxP=1050.;
     const Double_t kMaxdP=10.;
     const Double_t kSigmaCut=4.;
@@ -1179,6 +1197,7 @@ AliTPCCalibVdrift *     AliTPCcalibDB::GetVdrift(Int_t run){
   //
   // Get the interface to the the vdrift 
   //
+  if (run>=fVdriftArray.GetEntriesFast())  UpdateRunInformations(run);
   AliTPCCalibVdrift  * vdrift = (AliTPCCalibVdrift*)fVdriftArray.At(run);
   if (!vdrift) {
     UpdateRunInformations(run);
@@ -1322,7 +1341,7 @@ Float_t AliTPCcalibDB::GetDCSSensorMeanValue(AliDCSSensorArray *arr, const char
   return val;
 }
 
-Float_t AliTPCcalibDB::GetChamberHighVoltage(Int_t run, Int_t sector, Int_t timeStamp, Int_t sigDigits) {
+Float_t AliTPCcalibDB::GetChamberHighVoltage(Int_t run, Int_t sector, Int_t timeStamp, Int_t sigDigits, Bool_t current) {
   //
   // return the chamber HV for given run and time: 0-35 IROC, 36-72 OROC
   // if timeStamp==-1 return mean value
@@ -1341,6 +1360,16 @@ Float_t AliTPCcalibDB::GetChamberHighVoltage(Int_t run, Int_t sector, Int_t time
     //OROC
     sensorName=Form("TPC_ANODE_O_%c%02d_0_VMEAS",sideName,sector%18);
   }
+  if (current){
+    if (sector<36){
+      //IROC
+      sensorName=Form("TPC_ANODE_I_%c%02d_IMEAS",sideName,sector%18);
+  }else{
+      //OROC
+      sensorName=Form("TPC_ANODE_O_%c%02d_0_IMEAS",sideName,sector%18);
+    }
+
+  }
   if (timeStamp==-1){
     val=AliTPCcalibDB::GetDCSSensorMeanValue(voltageArray, sensorName.Data(),sigDigits);
   } else {
@@ -1629,6 +1658,7 @@ AliGRPObject * AliTPCcalibDB::MakeGRPObjectFromMap(TMap *map){
   AliGRPObject *grpRun = new AliGRPObject; 
   grpRun->ReadValuesFromMap(map);
   grpRun->SetCavernAtmosPressure(sensor2);
+  grpRun->SetCavernAtmosPressure(sensor2);
   grpRun->SetSurfaceAtmosPressure(sensor);
   return grpRun;
 }
@@ -1781,7 +1811,7 @@ Double_t AliTPCcalibDB::GetVDriftCorrectionTime(Int_t timeStamp, Int_t run, Int_
   if (mode==1) {
     const Double_t kEpsilon=0.00000000001;
     const Double_t kdeltaT=360.; // 10 minutes
-    if(TMath::Abs(driftITS) < 12*kdeltaT) {
+    if(TMath::Abs(deltaITS) < 12*kdeltaT) {
       result = driftITS;
     } else {
     wITS  = 64.*kdeltaT/(deltaITS +kdeltaT);
@@ -1857,7 +1887,7 @@ Double_t AliTPCcalibDB::GetVDriftCorrectionGy(Int_t timeStamp, Int_t run, Int_t
   // use TPC-ITS if present
   TGraphErrors *gr= (TGraphErrors*)array->FindObject("ALIGN_ITSB_TPC_VDGY");
   if(gr) { 
-    result = (gr->Eval(timeStamp));
+    result = AliTPCcalibDButil::EvalGraphConst(gr,timeStamp);
 
     // transform from [(cm/mus)/ m] to [1/cm]
     result /= (fParam->GetDriftV()/1000000.);
@@ -1899,7 +1929,7 @@ AliTPCCalPad* AliTPCcalibDB::MakeDeadMap(Double_t notInMap, const char* nameMapp
   TFile *fileMapping = new TFile(nameMappingFile, "read");
   AliTPCmapper *mapping = (AliTPCmapper*) fileMapping->Get("tpcMapping");
   if (!mapping) {
-    sprintf(chinfo,"Failed to get mapping object from %s.  ...\n", nameMappingFile);
+    snprintf(chinfo,1000,"Failed to get mapping object from %s.  ...\n", nameMappingFile);
     AliError (chinfo);
     return 0;
   }
@@ -1933,8 +1963,11 @@ AliTPCCalPad* AliTPCcalibDB::MakeDeadMap(Double_t notInMap, const char* nameMapp
   Double_t active;
   for (Int_t i=0; i<mapping->GetNumDdl(); i++) {
     idDDL= i+offset;
+    if (idDDL<0) continue;
     Int_t patch = mapping->GetPatchFromEquipmentID(idDDL);   
+    if (patch<0) continue;
     Int_t roc=mapping->GetRocFromEquipmentID(idDDL);
+    if (roc<0) continue;
     AliTPCCalROC *calRoc=deadMap->GetCalROC(roc);
     if (calRoc) {
      for ( Int_t branch = 0; branch < 2; branch++ ) {
@@ -1965,11 +1998,39 @@ AliTPCCalPad* AliTPCcalibDB::MakeDeadMap(Double_t notInMap, const char* nameMapp
 AliTPCCorrection * AliTPCcalibDB::GetTPCComposedCorrection(Float_t field) const{
   //
   // GetComposed correction for given field setting
-  //
+  // If not specific correction for field used return correction for all field
+  //        - Complication needed to gaurantee OCDB back compatibility 
+  //        - Not neeeded for the new space point correction 
   if (!fComposedCorrectionArray) return 0;
-  if (field>0.1) return (AliTPCCorrection *)fComposedCorrectionArray->At(1);
-  if (field<-0.1) return (AliTPCCorrection *)fComposedCorrectionArray->At(2);
+  if (field>0.1 && fComposedCorrectionArray->At(1)) {   
+    return (AliTPCCorrection *)fComposedCorrectionArray->At(1);
+  }
+  if (field<-0.1 &&fComposedCorrectionArray->At(2)) {
+    return (AliTPCCorrection *)fComposedCorrectionArray->At(2);
+  }
   return (AliTPCCorrection *)fComposedCorrectionArray->At(0);
   
 }
 
+
+AliTPCCorrection * AliTPCcalibDB::GetTPCComposedCorrectionDelta() const{
+  //
+  // GetComposedCorrection delta
+  // Delta is time dependent - taken form the CalibTime OCDB entry
+  //
+  if (!fComposedCorrectionArray) return 0;
+  if (fRun<0) return 0;
+  if (fDriftCorrectionArray.GetEntriesFast()<=fRun) return 0;
+  if (fDriftCorrectionArray.At(fRun)==0) return 0;
+  if (fComposedCorrectionArray->GetEntriesFast()<=4) {
+    fComposedCorrectionArray->Expand(5);
+    TObjArray * timeArray =(TObjArray*)(fDriftCorrectionArray.At(fRun));
+     AliTPCCorrection * correctionTime = (AliTPCCorrection *)timeArray->FindObject("FitCorrectionTime");
+     if (correctionTime){
+       correctionTime->Init();
+       fComposedCorrectionArray->AddAt(correctionTime,4); //add time dependent c
+     }
+  }
+  return (AliTPCCorrection *)fComposedCorrectionArray->At(4);  //
+}
+