]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSDetTypeRec.cxx
AliITSRecoParam retrieved from the OCDB
[u/mrichter/AliRoot.git] / ITS / AliITSDetTypeRec.cxx
index 4d957bbf9c09e983f7ecbad80e8b8050662b2297..49a56239bb09228b2b1977c0af3605fb67f6ccd8 100644 (file)
@@ -43,6 +43,8 @@
 #include "AliITSRawClusterSDD.h"
 #include "AliITSRawClusterSSD.h"
 #include "AliITSRecPoint.h"
+#include "AliITSReconstructor.h"
+#include "AliITSRecoParam.h"
 #include "AliITSCalibrationSDD.h"
 #include "AliITSMapSDD.h"
 #include "AliITSDriftSpeedArraySDD.h"
@@ -356,7 +358,7 @@ void AliITSDetTypeRec::SetDefaults(){
       seg = new AliITSsegmentationSDD();
       SetSegmentationModel(dettype,seg);
       const char *kopt = ((AliITSresponseSDD*)res->GetResponse())->ZeroSuppOption();
-      if((!strstr(kopt,"2D"))&&(!strstr(kopt,"1D"))) SetDigitClassName(dettype,"AliITSdigit");
+      if(!strstr(kopt,"ZS")) SetDigitClassName(dettype,"AliITSdigit");
       else SetDigitClassName(dettype,"AliITSdigitSDD");
       SetClusterClassName(dettype,"AliITSRawClusterSDD");
 
@@ -395,7 +397,8 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
     fCalibration->Clear();
   }
 
-  AliCDBEntry *entrySPD = AliCDBManager::Instance()->Get("ITS/Calib/SPDDead");
+  // dead pixel are not used for local reconstruction
+  AliCDBEntry *entrySPD = AliCDBManager::Instance()->Get("ITS/Calib/SPDNoisy");
   AliCDBEntry *entrySDD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSDD");
  
  //  AliCDBEntry *entrySSD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSSD");
@@ -403,7 +406,8 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
     AliCDBEntry *entryPedestalSSD = AliCDBManager::Instance()->Get("ITS/Calib/PedestalSSD");
     AliCDBEntry *entryGainSSD = AliCDBManager::Instance()->Get("ITS/Calib/GainSSD");
     AliCDBEntry *entryBadChannelsSSD = AliCDBManager::Instance()->Get("ITS/Calib/BadChannelsSSD");
-
+    // Entry for the AliITSRecoParam object
+    AliCDBEntry *entryRP = AliCDBManager::Instance()->Get("ITS/Calib/RecoParam/");
   AliCDBEntry *entry2SPD = AliCDBManager::Instance()->Get("ITS/Calib/RespSPD");
   AliCDBEntry *entry2SDD = AliCDBManager::Instance()->Get("ITS/Calib/RespSDD");
   AliCDBEntry *entry2SSD = AliCDBManager::Instance()->Get("ITS/Calib/RespSSD");
@@ -414,7 +418,7 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
 
   if(!entrySPD || !entrySDD || !entryNoiseSSD || !entryGainSSD || 
      !entryPedestalSSD || !entryBadChannelsSSD || 
-     !entry2SPD || !entry2SDD || !entry2SSD || !drSpSDD || !ddlMapSDD || !mapASDD || !mapTSDD){
+     !entry2SPD || !entry2SDD || !entry2SSD || !drSpSDD || !ddlMapSDD || !mapASDD || !mapTSDD || !entryRP){
     AliFatal("Calibration object retrieval failed! ");
     return kFALSE;
   }    
@@ -471,6 +475,16 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
   if(!cacheStatus)entry2SSD->SetObject(NULL);
   entry2SSD->SetOwner(kTRUE);
 
+  AliITSRecoParam *rp = (AliITSRecoParam*)entryRP->GetObject();
+  if(!cacheStatus)entryRP->SetObject(NULL);
+  entryRP->SetOwner(kTRUE);
+  if(!AliITSReconstructor::GetRecoParam()){
+    AliITSReconstructor::SetRecoParam(rp);
+  }
+  else {
+    AliWarning("AliITSRecoPAram object has been already set in AliITSReconstructor. The OCDB instance will not be used\n");
+  }
+
   // DB entries are deleted. In this way metadeta objects are deleted as well
   if(!cacheStatus){
     delete entrySPD;
@@ -511,7 +525,7 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
     for(Int_t icar=0; icar<AliITSDDLModuleMapSDD::GetNModPerDDL();icar++){
       Int_t iMod=fDDLMapSDD->GetModuleNumber(iddl,icar);
       if(iMod==-1) continue;
-      Int_t i=iMod-fNMod[0];
+      Int_t i=iMod - fgkDefaultNModulesSPD;
       cal = (AliITSCalibration*) calSDD->At(i);
       cal->SetResponse((AliITSresponse*)pSDD);
       Int_t i0=2*i;
@@ -545,7 +559,7 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
     AliITSBadChannelsSSD *bad = (AliITSBadChannelsSSD*) (badchannelsSSD->At(i));
     calibSSD->SetBadChannels(bad);
 
-    Int_t iMod = i + fNMod[0] + fNMod[1];
+    Int_t iMod = i + fgkDefaultNModulesSPD + fgkDefaultNModulesSDD;
     SetCalibrationModel(iMod, calibSSD);
  }