]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSDetTypeSim.cxx
plitting of drift speed (updated at every physics run) from other calibration paramet...
[u/mrichter/AliRoot.git] / ITS / AliITSDetTypeSim.cxx
index 541224e7dd359d46086df66c5126910e39af18ae..f056e1250eef16201244fffcf3b81aaeff5a13f2 100644 (file)
@@ -45,6 +45,7 @@
 #include "AliITSresponseSDD.h"
 #include "AliITSCalibrationSDD.h"
 #include "AliITSMapSDD.h"
+#include "AliITSDriftSpeedArraySDD.h"
 #include "AliITSCalibrationSSD.h"
 #include "AliITSNoiseSSD.h"
 #include "AliITSGainSSD.h"
@@ -275,9 +276,7 @@ void AliITSDetTypeSim::SetDefaultSegmentation(Int_t idet){
     if(idet==0){
        seg = new AliITSsegmentationSPD(GetITSgeom());
     }else if(idet==1){
-       AliITSCalibration* res=GetCalibrationModel(
-           GetITSgeom()->GetStartSDD());
-       seg = new AliITSsegmentationSDD(GetITSgeom(),res);
+       seg = new AliITSsegmentationSDD(GetITSgeom());
     }else {
        seg = new AliITSsegmentationSSD(GetITSgeom());
     }
@@ -450,8 +449,9 @@ Bool_t AliITSDetTypeSim::GetCalibration() {
 
   AliCDBManager::Instance()->SetCacheFlag(isCacheActive);
 
-  AliCDBEntry *entrySPD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSPD", run);
+  AliCDBEntry *entrySPD = AliCDBManager::Instance()->Get("ITS/Calib/SPDDead", run);
   AliCDBEntry *entrySDD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSDD", run);
+  AliCDBEntry *drSpSDD = AliCDBManager::Instance()->Get("ITS/Calib/DriftSpeedSDD",run);
   AliCDBEntry *mapASDD = AliCDBManager::Instance()->Get("ITS/Calib/MapsAnodeSDD",run);
   AliCDBEntry *mapTSDD = AliCDBManager::Instance()->Get("ITS/Calib/MapsTimeSDD",run);
   // AliCDBEntry *entrySSD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSSD", run);
@@ -464,7 +464,7 @@ Bool_t AliITSDetTypeSim::GetCalibration() {
   AliCDBEntry *entry2SSD = AliCDBManager::Instance()->Get("ITS/Calib/RespSSD", run);
 
   if(!entrySPD || !entrySDD || !entryNoiseSSD || !entryGainSSD || !entryBadChannelsSSD || 
-     !entry2SPD || !entry2SDD || !entry2SSD || !mapASDD ||!mapTSDD){
+     !entry2SPD || !entry2SDD || !entry2SSD || !drSpSDD || !mapASDD ||!mapTSDD){
     AliFatal("Calibration object retrieval failed! ");
     return kFALSE;
   }    
@@ -491,6 +491,10 @@ Bool_t AliITSDetTypeSim::GetCalibration() {
   if(!isCacheActive)entry2SDD->SetObject(NULL);
   entry2SDD->SetOwner(kTRUE);
 
+  TObjArray *drSp = (TObjArray *)drSpSDD->GetObject();
+  if(!isCacheActive)drSpSDD->SetObject(NULL);
+  drSpSDD->SetOwner(kTRUE);
+
   TObjArray *mapAn = (TObjArray *)mapASDD->GetObject();
   if(!isCacheActive)mapASDD->SetObject(NULL);
   mapASDD->SetOwner(kTRUE);
@@ -533,11 +537,12 @@ Bool_t AliITSDetTypeSim::GetCalibration() {
     delete entry2SSD;
     delete mapASDD;   
     delete mapTSDD;
+    delete drSpSDD;
   }
   
   AliCDBManager::Instance()->SetCacheFlag(origCacheStatus);
 
-  if ((!pSPD)||(!pSDD)||(!pSSD) || (!calSPD) || (!calSDD) 
+  if ((!pSPD)||(!pSDD)||(!pSSD) || (!calSPD) || (!calSDD) || (!drSp)
       || (!mapAn) || (!mapT) || (!noiseSSD)|| (!gainSSD)|| (!badchannelsSSD)) {
     AliWarning("Can not get calibration from calibration database !");
     return kFALSE;
@@ -553,20 +558,24 @@ Bool_t AliITSDetTypeSim::GetCalibration() {
     cal = (AliITSCalibration*) calSPD->At(i);
     cal->SetResponse(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(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 i0=2*i;
+    Int_t i1=1+2*i;
+    AliITSDriftSpeedArraySDD* arr0 = (AliITSDriftSpeedArraySDD*) drSp->At(i0);
+    AliITSMapSDD* ma0 = (AliITSMapSDD*)mapAn->At(i0);
+    AliITSMapSDD* mt0 = (AliITSMapSDD*)mapT->At(i0);
+    AliITSDriftSpeedArraySDD* arr1 = (AliITSDriftSpeedArraySDD*) drSp->At(i1);
+    AliITSMapSDD* ma1 = (AliITSMapSDD*)mapAn->At(i1);
+    AliITSMapSDD* mt1 = (AliITSMapSDD*)mapT->At(i1);
+    cal->SetDriftSpeed(0,arr0);
+    cal->SetDriftSpeed(1,arr1);
+    cal->SetMapA(0,ma0);
+    cal->SetMapA(1,ma1);
+    cal->SetMapT(0,mt0);
+    cal->SetMapT(1,mt1);
     Int_t iMod = i + fNMod[0];
     SetCalibrationModel(iMod, cal);
  }
@@ -837,7 +846,7 @@ void AliITSDetTypeSim::StoreCalibration(Int_t firstRun, Int_t lastRun,
     AliError("AliITSCalibration classes are not defined - nothing done");
     return;
   }
-  AliCDBId idRespSPD("ITS/Calib/CalibSPD",firstRun, lastRun);
+  AliCDBId idRespSPD("ITS/Calib/SPDDead",firstRun, lastRun);
   AliCDBId idRespSDD("ITS/Calib/CalibSDD",firstRun, lastRun);
   AliCDBId idRespSSD("ITS/Calib/CalibSSD",firstRun, lastRun);