]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSDetTypeRec.cxx
bugfix: undeleted characters in data type id from previous data type setting
[u/mrichter/AliRoot.git] / ITS / AliITSDetTypeRec.cxx
index d253d34046b47a947985b5ec908a1ffea35f0178..47b9a54b5dd8c41a5d0f8d03ff191dc772e2d5c3 100644 (file)
@@ -44,6 +44,7 @@
 #include "AliITSRawClusterSSD.h"
 #include "AliITSRecPoint.h"
 #include "AliITSCalibrationSDD.h"
+#include "AliITSMapSDD.h"
 #include "AliITSCalibrationSSD.h"
 #include "AliITSNoiseSSD.h"
 #include "AliITSGainSSD.h"
@@ -157,15 +158,17 @@ AliITSDetTypeRec::~AliITSDetTypeRec(){
     fSegmentation = 0;
   }
   if(fCalibration){
-    AliITSresponse* rspd = ((AliITSCalibration*)fCalibration->At(GetITSgeom()->GetStartSPD()))->GetResponse();    
-    AliITSresponse* rsdd = ((AliITSCalibration*)fCalibration->At(GetITSgeom()->GetStartSDD()))->GetResponse();
-    AliITSresponse* rssd = ((AliITSCalibration*)fCalibration->At(GetITSgeom()->GetStartSSD()))->GetResponse();
-    if(rspd) delete rspd;
-    if(rsdd) delete rsdd;
-    if(rssd) delete rssd;
-    fCalibration->Delete();
-    delete fCalibration;
-    fCalibration = 0;
+    if(!(AliCDBManager::Instance()->GetCacheFlag())) {
+      AliITSresponse* rspd = ((AliITSCalibration*)fCalibration->At(GetITSgeom()->GetStartSPD()))->GetResponse();    
+      AliITSresponse* rsdd = ((AliITSCalibration*)fCalibration->At(GetITSgeom()->GetStartSDD()))->GetResponse();
+      AliITSresponse* rssd = ((AliITSCalibration*)fCalibration->At(GetITSgeom()->GetStartSSD()))->GetResponse();
+      if(rspd) delete rspd;
+      if(rsdd) delete rsdd;
+      if(rssd) delete rssd;
+      fCalibration->Delete();
+      delete fCalibration;
+      fCalibration = 0;
+    }
   }
   if(fPreProcess) delete fPreProcess;
   if(fPostProcess) delete fPostProcess;
@@ -344,7 +347,7 @@ void AliITSDetTypeRec::SetDefaults(){
     }
     if(dettype==1){
       AliITSCalibrationSDD* res=(AliITSCalibrationSDD*) GetCalibrationModel(GetITSgeom()->GetStartSDD()); 
-      seg = new AliITSsegmentationSDD(GetITSgeom(),res);
+      seg = new AliITSsegmentationSDD(GetITSgeom());
       SetSegmentationModel(dettype,seg);
       const char *kopt = ((AliITSresponseSDD*)res->GetResponse())->ZeroSuppOption();
       if((!strstr(kopt,"2D"))&&(!strstr(kopt,"1D"))) SetDigitClassName(dettype,"AliITSdigit");
@@ -386,7 +389,7 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
     fCalibration->Clear();
   }
 
-  AliCDBEntry *entrySPD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSPD");
+  AliCDBEntry *entrySPD = AliCDBManager::Instance()->Get("ITS/Calib/SPDDead");
   AliCDBEntry *entrySDD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSDD");
  
  //  AliCDBEntry *entrySSD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSSD");
@@ -397,9 +400,11 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
   AliCDBEntry *entry2SPD = AliCDBManager::Instance()->Get("ITS/Calib/RespSPD");
   AliCDBEntry *entry2SDD = AliCDBManager::Instance()->Get("ITS/Calib/RespSDD");
   AliCDBEntry *entry2SSD = AliCDBManager::Instance()->Get("ITS/Calib/RespSSD");
+  AliCDBEntry *mapASDD = AliCDBManager::Instance()->Get("ITS/Calib/MapsAnodeSDD");
+  AliCDBEntry *mapTSDD = AliCDBManager::Instance()->Get("ITS/Calib/MapsTimeSDD");
 
   if(!entrySPD || !entrySDD || !entryNoiseSSD || !entryGainSSD || !entryBadChannelsSSD || 
-     !entry2SPD || !entry2SDD || !entry2SSD){
+     !entry2SPD || !entry2SDD || !entry2SSD || !mapASDD || !mapTSDD){
     AliFatal("Calibration object retrieval failed! ");
     return kFALSE;
   }    
@@ -420,6 +425,14 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
   if(!cacheStatus)entry2SDD->SetObject(NULL);
   entry2SDD->SetOwner(kTRUE);
 
+  TObjArray *mapAn = (TObjArray *)mapASDD->GetObject();
+  if(!cacheStatus)mapASDD->SetObject(NULL);
+  mapASDD->SetOwner(kTRUE);
+
+  TObjArray *mapT = (TObjArray *)mapTSDD->GetObject();
+  if(!cacheStatus)mapTSDD->SetObject(NULL);
+  mapTSDD->SetOwner(kTRUE);
+
   TObjArray *noiseSSD = (TObjArray *)entryNoiseSSD->GetObject();
   if(!cacheStatus)entryNoiseSSD->SetObject(NULL);
   entryNoiseSSD->SetOwner(kTRUE);
@@ -446,10 +459,12 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
     delete entry2SPD;
     delete entry2SDD;
     delete entry2SSD;
+    delete mapASDD;
+    delete mapTSDD;
   }
 
   if ((!pSPD)||(!pSDD)||(!pSSD) || (!calSPD) || (!calSDD) 
-      || (!noiseSSD)|| (!gainSSD)|| (!badchannelsSSD)) {
+      || (!mapAn) || (!mapT) || (!noiseSSD)|| (!gainSSD)|| (!badchannelsSSD)) {
     AliWarning("Can not get calibration from calibration database !");
     return kFALSE;
   }
@@ -464,13 +479,23 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
     cal = (AliITSCalibration*) calSPD->At(i);
     cal->SetResponse((AliITSresponse*)pSPD);
     SetCalibrationModel(i, cal);
- }
+  }
+  Int_t nn1=0;
+  Int_t nn2=0;
   for (Int_t i=0; i<fNMod[1]; i++) {
     cal = (AliITSCalibration*) calSDD->At(i);
     cal->SetResponse((AliITSresponse*)pSDD);
+    AliITSMapSDD* m1 = (AliITSMapSDD*)mapAn->At(nn1);nn1++;
+    AliITSMapSDD* m2 = (AliITSMapSDD*)mapAn->At(nn1);nn1++;
+    AliITSMapSDD* m3 = (AliITSMapSDD*)mapT->At(nn2);nn2++;
+    AliITSMapSDD* m4 = (AliITSMapSDD*)mapT->At(nn2);nn2++; 
+    cal->SetMapA(0,m1);
+    cal->SetMapA(1,m2);
+    cal->SetMapT(0,m3);
+    cal->SetMapT(1,m4);
     Int_t iMod = i + fNMod[0];
     SetCalibrationModel(iMod, cal);
- }
 }
   for (Int_t i=0; i<fNMod[2]; i++) {
 
     AliITSCalibrationSSD *calibSSD = new AliITSCalibrationSSD();