]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSDetTypeRec.cxx
Updated QA (Sylwester)
[u/mrichter/AliRoot.git] / ITS / AliITSDetTypeRec.cxx
index 4e8e90eef759a5a73964ed12ebae5452fd32ffc0..011f2a5125a2ca6bf98f541df3877155dd4f3338 100644 (file)
 #include "AliITSCalibrationSDD.h"
 #include "AliITSMapSDD.h"
 #include "AliITSDriftSpeedArraySDD.h"
+#include "AliITSDriftSpeedSDD.h"
 #include "AliITSCalibrationSSD.h"
 #include "AliITSNoiseSSD.h"
 #include "AliITSGainSSD.h"
 #include "AliITSBadChannelsSSD.h"
+#include "AliITSPedestalSSD.h"
 #include "AliITSsegmentationSPD.h"
 #include "AliITSsegmentationSDD.h"
 #include "AliITSsegmentationSSD.h"
@@ -343,7 +345,7 @@ void AliITSDetTypeRec::SetDefaults(){
 
   for(Int_t dettype=0;dettype<fgkNdettypes;dettype++){
     if(dettype==0){
-      seg = new AliITSsegmentationSPD(GetITSgeom());
+      seg = new AliITSsegmentationSPD();
       SetSegmentationModel(dettype,seg);
       SetDigitClassName(dettype,"AliITSdigitSPD");
       SetClusterClassName(dettype,"AliITSRawClusterSPD");
@@ -351,16 +353,16 @@ void AliITSDetTypeRec::SetDefaults(){
     }
     if(dettype==1){
       AliITSCalibrationSDD* res=(AliITSCalibrationSDD*) GetCalibrationModel(GetITSgeom()->GetStartSDD()); 
-      seg = new AliITSsegmentationSDD(GetITSgeom());
+      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");
 
     }
     if(dettype==2){
-      AliITSsegmentationSSD* seg2 = new AliITSsegmentationSSD(GetITSgeom());
+      AliITSsegmentationSSD* seg2 = new AliITSsegmentationSSD();
       seg2->SetAngles(0.0075,0.0275); // strip angels rad P and N side.
       seg2->SetAnglesLay5(0.0075,0.0275); // strip angels rad P and N side.
       seg2->SetAnglesLay6(0.0275,0.0075); // strip angels rad P and N side.
@@ -393,11 +395,13 @@ 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");
     AliCDBEntry *entryNoiseSSD = AliCDBManager::Instance()->Get("ITS/Calib/NoiseSSD");
+    AliCDBEntry *entryPedestalSSD = AliCDBManager::Instance()->Get("ITS/Calib/PedestalSSD");
     AliCDBEntry *entryGainSSD = AliCDBManager::Instance()->Get("ITS/Calib/GainSSD");
     AliCDBEntry *entryBadChannelsSSD = AliCDBManager::Instance()->Get("ITS/Calib/BadChannelsSSD");
 
@@ -409,7 +413,8 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
   AliCDBEntry *mapASDD = AliCDBManager::Instance()->Get("ITS/Calib/MapsAnodeSDD");
   AliCDBEntry *mapTSDD = AliCDBManager::Instance()->Get("ITS/Calib/MapsTimeSDD");
 
-  if(!entrySPD || !entrySDD || !entryNoiseSSD || !entryGainSSD || !entryBadChannelsSSD || 
+  if(!entrySPD || !entrySDD || !entryNoiseSSD || !entryGainSSD || 
+     !entryPedestalSSD || !entryBadChannelsSSD || 
      !entry2SPD || !entry2SDD || !entry2SSD || !drSpSDD || !ddlMapSDD || !mapASDD || !mapTSDD){
     AliFatal("Calibration object retrieval failed! ");
     return kFALSE;
@@ -451,6 +456,10 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
   if(!cacheStatus)entryNoiseSSD->SetObject(NULL);
   entryNoiseSSD->SetOwner(kTRUE);
 
+  TObjArray *pedestalSSD = (TObjArray *)entryPedestalSSD->GetObject();
+  if(!cacheStatus)entryPedestalSSD->SetObject(NULL);
+  entryPedestalSSD->SetOwner(kTRUE);
+
   TObjArray *gainSSD = (TObjArray *)entryGainSSD->GetObject();
   if(!cacheStatus)entryGainSSD->SetObject(NULL);
   entryGainSSD->SetOwner(kTRUE);
@@ -468,6 +477,7 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
     delete entrySPD;
     delete entrySDD;
     delete entryNoiseSSD;
+    delete entryPedestalSSD;
     delete entryGainSSD;
     delete entryBadChannelsSSD;
     delete entry2SPD;
@@ -496,26 +506,31 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
     cal->SetResponse((AliITSresponse*)pSPD);
     SetCalibrationModel(i, cal);
   }
-  for (Int_t i=0; i<fNMod[1]; i++) {
-    cal = (AliITSCalibration*) calSDD->At(i);
-    cal->SetResponse((AliITSresponse*)pSDD);
-    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);
-    fDDLMapSDD->SetDDLMap(ddlsdd);
-    Int_t iMod = i + fNMod[0];
-    SetCalibrationModel(iMod, cal);
+
+  fDDLMapSDD->SetDDLMap(ddlsdd);
+  for(Int_t iddl=0; iddl<AliITSDDLModuleMapSDD::GetNDDLs(); iddl++){
+    for(Int_t icar=0; icar<AliITSDDLModuleMapSDD::GetNModPerDDL();icar++){
+      Int_t iMod=fDDLMapSDD->GetModuleNumber(iddl,icar);
+      if(iMod==-1) continue;
+      Int_t i=iMod - fgkDefaultNModulesSPD;
+      cal = (AliITSCalibration*) calSDD->At(i);
+      cal->SetResponse((AliITSresponse*)pSDD);
+      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);
+      SetCalibrationModel(iMod, cal);
+    }
   }
   for (Int_t i=0; i<fNMod[2]; i++) {
 
@@ -524,12 +539,14 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
     
     AliITSNoiseSSD *noise = (AliITSNoiseSSD*) (noiseSSD->At(i));
     calibSSD->SetNoise(noise);
+    AliITSPedestalSSD *pedestal = (AliITSPedestalSSD*) (pedestalSSD->At(i));
+    calibSSD->SetPedestal(pedestal);
     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];
+    Int_t iMod = i + fgkDefaultNModulesSPD + fgkDefaultNModulesSDD;
     SetCalibrationModel(iMod, calibSSD);
  }