New SSD calibration objects (AliITSBadChannelsSSD, AliITSGainSSD, AliITSNoiseSSD...
[u/mrichter/AliRoot.git] / ITS / AliITSDetTypeRec.cxx
index 0ac224f..d253d34 100644 (file)
 #include "AliITSRawClusterSSD.h"
 #include "AliITSRecPoint.h"
 #include "AliITSCalibrationSDD.h"
+#include "AliITSCalibrationSSD.h"
+#include "AliITSNoiseSSD.h"
+#include "AliITSGainSSD.h"
+#include "AliITSBadChannelsSSD.h"
 #include "AliITSsegmentationSPD.h"
 #include "AliITSsegmentationSDD.h"
 #include "AliITSsegmentationSSD.h"
@@ -384,12 +388,18 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
 
   AliCDBEntry *entrySPD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSPD");
   AliCDBEntry *entrySDD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSDD");
-  AliCDBEntry *entrySSD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSSD");
+ //  AliCDBEntry *entrySSD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSSD");
+    AliCDBEntry *entryNoiseSSD = AliCDBManager::Instance()->Get("ITS/Calib/NoiseSSD");
+    AliCDBEntry *entryGainSSD = AliCDBManager::Instance()->Get("ITS/Calib/GainSSD");
+    AliCDBEntry *entryBadChannelsSSD = AliCDBManager::Instance()->Get("ITS/Calib/BadChannelsSSD");
+
   AliCDBEntry *entry2SPD = AliCDBManager::Instance()->Get("ITS/Calib/RespSPD");
   AliCDBEntry *entry2SDD = AliCDBManager::Instance()->Get("ITS/Calib/RespSDD");
   AliCDBEntry *entry2SSD = AliCDBManager::Instance()->Get("ITS/Calib/RespSSD");
 
-  if(!entrySPD || !entrySDD || !entrySSD || !entry2SPD || !entry2SDD || !entry2SSD){
+  if(!entrySPD || !entrySDD || !entryNoiseSSD || !entryGainSSD || !entryBadChannelsSSD || 
+     !entry2SPD || !entry2SDD || !entry2SSD){
     AliFatal("Calibration object retrieval failed! ");
     return kFALSE;
   }    
@@ -410,9 +420,17 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
   if(!cacheStatus)entry2SDD->SetObject(NULL);
   entry2SDD->SetOwner(kTRUE);
 
-  TObjArray *calSSD = (TObjArray *)entrySSD->GetObject();
-  if(!cacheStatus)entrySSD->SetObject(NULL);
-  entrySSD->SetOwner(kTRUE);
+  TObjArray *noiseSSD = (TObjArray *)entryNoiseSSD->GetObject();
+  if(!cacheStatus)entryNoiseSSD->SetObject(NULL);
+  entryNoiseSSD->SetOwner(kTRUE);
+
+  TObjArray *gainSSD = (TObjArray *)entryGainSSD->GetObject();
+  if(!cacheStatus)entryGainSSD->SetObject(NULL);
+  entryGainSSD->SetOwner(kTRUE);
+
+  TObjArray *badchannelsSSD = (TObjArray *)entryBadChannelsSSD->GetObject();
+  if(!cacheStatus)entryBadChannelsSSD->SetObject(NULL);
+  entryBadChannelsSSD->SetOwner(kTRUE);
 
   AliITSresponseSSD *pSSD = (AliITSresponseSSD*)entry2SSD->GetObject();
   if(!cacheStatus)entry2SSD->SetObject(NULL);
@@ -422,20 +440,23 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
   if(!cacheStatus){
     delete entrySPD;
     delete entrySDD;
-    delete entrySSD;
+    delete entryNoiseSSD;
+    delete entryGainSSD;
+    delete entryBadChannelsSSD;
     delete entry2SPD;
     delete entry2SDD;
     delete entry2SSD;
   }
 
-  if ((!pSPD)||(!pSDD)||(!pSSD) || (!calSPD) || (!calSDD) || (!calSSD)) {
+  if ((!pSPD)||(!pSDD)||(!pSSD) || (!calSPD) || (!calSDD) 
+      || (!noiseSSD)|| (!gainSSD)|| (!badchannelsSSD)) {
     AliWarning("Can not get calibration from calibration database !");
     return kFALSE;
   }
 
   fNMod[0] = calSPD->GetEntries();
   fNMod[1] = calSDD->GetEntries();
-  fNMod[2] = calSSD->GetEntries();
+  fNMod[2] = noiseSSD->GetEntries();
   AliInfo(Form("%i SPD, %i SDD and %i SSD in calibration database",
               fNMod[0], fNMod[1], fNMod[2]));
   AliITSCalibration* cal;
@@ -451,10 +472,19 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
     SetCalibrationModel(iMod, cal);
  }
   for (Int_t i=0; i<fNMod[2]; i++) {
-    cal = (AliITSCalibration*) calSSD->At(i);
-    cal->SetResponse((AliITSresponse*)pSSD);
+
+    AliITSCalibrationSSD *calibSSD = new AliITSCalibrationSSD();
+    calibSSD->SetResponse((AliITSresponse*)pSSD);
+    
+    AliITSNoiseSSD *noise = (AliITSNoiseSSD*) (noiseSSD->At(i));
+    calibSSD->SetNoise(noise);
+    AliITSGainSSD *gain = (AliITSGainSSD*) (gainSSD->At(i));
+    calibSSD->SetGain(gain);
+    AliITSBadChannelsSSD *bad = (AliITSBadChannelsSSD*) (badchannelsSSD->At(i));
+    calibSSD->SetBadChannels(bad);
+
     Int_t iMod = i + fNMod[0] + fNMod[1];
-    SetCalibrationModel(iMod, cal);
+    SetCalibrationModel(iMod, calibSSD);
  }
 
   return kTRUE;