]> 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 aa34eb779539d953caa52eca8292e32ae7b1fd41..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.;
@@ -1911,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;
   }
@@ -1945,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++ ) {
@@ -1977,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);  //
+}
+