]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSDetTypeSim.cxx
Switch off global QA for the moment
[u/mrichter/AliRoot.git] / ITS / AliITSDetTypeSim.cxx
index e2df8274e0a68b79f1a5b2af9112f4fcdf06ccc6..e7f17f05eee0df3be2b0857c54ff5b0b3d7ea954 100644 (file)
@@ -44,6 +44,9 @@
 #include "AliITSpListItem.h"
 #include "AliITSresponseSDD.h"
 #include "AliITSCalibrationSDD.h"
+#include "AliITSMapSDD.h"
+#include "AliITSDriftSpeedArraySDD.h"
+#include "AliITSDriftSpeedSDD.h"
 #include "AliITSCalibrationSSD.h"
 #include "AliITSNoiseSSD.h"
 #include "AliITSGainSSD.h"
@@ -78,6 +81,7 @@ fSDigits(),      //! [NMod][NSDigits]
 fNDigits(0),     //! number of Digits
 fRunNumber(0),   //! Run number (to access DB)
 fDigits(),       //! [NMod][NDigits]
+fDDLMapSDD(0),
 fHitClassName(), // String with Hit class name.
 fSDigClassName(),// String with SDigit class name.
 fDigClassName(), // String with digit class name.
@@ -97,6 +101,7 @@ fFirstcall(kTRUE){ // flag
   fSDigits = new TClonesArray("AliITSpListItem",1000);
   fDigits = new TObjArray(fgkNdettypes);
   fNDigits = new Int_t[fgkNdettypes];
+  fDDLMapSDD=new AliITSDDLModuleMapSDD();
   fNMod[0] = fgkDefaultNModulesSPD;
   fNMod[1] = fgkDefaultNModulesSDD;
   fNMod[2] = fgkDefaultNModulesSSD;
@@ -146,6 +151,7 @@ AliITSDetTypeSim::~AliITSDetTypeSim(){
        delete fPostProcess;
     }
     fPostProcess = 0;
+    if(fDDLMapSDD) delete fDDLMapSDD;
     if(fNDigits) delete [] fNDigits;
     fNDigits = 0;
     if (fLoader)fLoader->GetModulesFolder()->Remove(this);
@@ -173,6 +179,7 @@ fSDigits(source.fSDigits),      //! [NMod][NSDigits]
 fNDigits(source.fNDigits),     //! number of Digits
 fRunNumber(source.fRunNumber),   //! Run number (to access DB)
 fDigits(source.fDigits),       //! [NMod][NDigits]
+fDDLMapSDD(source.fDDLMapSDD),
 fHitClassName(source.fHitClassName), // String with Hit class name.
 fSDigClassName(source.fSDigClassName),// String with SDigit class name.
 fDigClassName(), // String with digit class name.
@@ -272,13 +279,11 @@ void AliITSDetTypeSim::SetDefaultSegmentation(Int_t idet){
     if(GetSegmentationModel(idet))
        delete (AliITSsegmentation*)fSegmentation->At(idet);
     if(idet==0){
-       seg = new AliITSsegmentationSPD(GetITSgeom());
+       seg = new AliITSsegmentationSPD();
     }else if(idet==1){
-       AliITSCalibration* res=GetCalibrationModel(
-           GetITSgeom()->GetStartSDD());
-       seg = new AliITSsegmentationSDD(GetITSgeom(),res);
+       seg = new AliITSsegmentationSDD();
     }else {
-       seg = new AliITSsegmentationSSD(GetITSgeom());
+       seg = new AliITSsegmentationSSD();
     }
     SetSegmentationModel(idet,seg);
 }
@@ -403,10 +408,10 @@ void AliITSDetTypeSim::SetDefaults(){
                    GetITSgeom()->GetStartSDD());
            const char *kopt = ((AliITSresponseSDD*)rsp->GetResponse())->
                ZeroSuppOption();
-           if((!strstr(kopt,"2D"))&&(!strstr(kopt,"1D"))) {
-               SetDigitClassName(idet,"AliITSdigit");
+           if(!strstr(kopt,"ZS")) {
+             SetDigitClassName(idet,"AliITSdigit");
            }else {
-               SetDigitClassName(idet,"AliITSdigitSDD");
+             SetDigitClassName(idet,"AliITSdigitSDD");
            } // end if
        } // end if idet==1
        //SSD
@@ -449,28 +454,32 @@ 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 *ddlMapSDD = AliCDBManager::Instance()->Get("ITS/Calib/DDLMapSDD",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);
-    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 *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", run);
   AliCDBEntry *entry2SDD = AliCDBManager::Instance()->Get("ITS/Calib/RespSDD", run);
   AliCDBEntry *entry2SSD = AliCDBManager::Instance()->Get("ITS/Calib/RespSSD", run);
 
   if(!entrySPD || !entrySDD || !entryNoiseSSD || !entryGainSSD || !entryBadChannelsSSD || 
-     !entry2SPD || !entry2SDD || !entry2SSD){
+     !entry2SPD || !entry2SDD || !entry2SSD || !drSpSDD || !ddlMapSDD || !mapASDD ||!mapTSDD){
     AliFatal("Calibration object retrieval failed! ");
     return kFALSE;
   }    
 
-  if(!entrySPD || !entrySDD || !entryNoiseSSD || !entryGainSSD || !entryBadChannelsSSD || 
-     !entry2SPD || !entry2SDD || !entry2SSD){
-    AliFatal("Calibration object retrieval failed! ");
-    return kFALSE;
-  }    
+//   if(!entrySPD || !entrySDD || !entryNoiseSSD || !entryGainSSD || !entryBadChannelsSSD || 
+//      !entry2SPD || !entry2SDD || !entry2SSD){
+//     AliFatal("Calibration object retrieval failed! ");
+//     return kFALSE;
+//   }         
 
   TObjArray *calSPD = (TObjArray *)entrySPD->GetObject();
   if(!isCacheActive)entrySPD->SetObject(NULL);
@@ -488,6 +497,22 @@ 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);
+
+  AliITSDDLModuleMapSDD *ddlsdd=(AliITSDDLModuleMapSDD*)ddlMapSDD->GetObject();
+  if(!isCacheActive)ddlMapSDD->SetObject(NULL);
+  ddlMapSDD->SetOwner(kTRUE);
+
+  TObjArray *mapAn = (TObjArray *)mapASDD->GetObject();
+  if(!isCacheActive)mapASDD->SetObject(NULL);
+  mapASDD->SetOwner(kTRUE);
+
+  TObjArray *mapT = (TObjArray *)mapTSDD->GetObject();
+  if(!isCacheActive)mapTSDD->SetObject(NULL);
+  mapTSDD->SetOwner(kTRUE);
+
   /*
   TObjArray *calSSD = (TObjArray *)entrySSD->GetObject();
   if(!isCacheActive)entrySSD->SetObject(NULL);
@@ -520,12 +545,16 @@ Bool_t AliITSDetTypeSim::GetCalibration() {
     delete entry2SPD;
     delete entry2SDD;
     delete entry2SSD;
+    delete mapASDD;   
+    delete mapTSDD;
+    delete drSpSDD;
+    delete ddlMapSDD;
   }
   
   AliCDBManager::Instance()->SetCacheFlag(origCacheStatus);
 
-  if ((!pSPD)||(!pSDD)||(!pSSD) || (!calSPD) || (!calSDD) 
-      || (!noiseSSD)|| (!gainSSD)|| (!badchannelsSSD)) {
+  if ((!pSPD)||(!pSDD)||(!pSSD) || (!calSPD) || (!calSDD) || (!drSp) || (!ddlsdd)
+      || (!mapAn) || (!mapT) || (!noiseSSD)|| (!gainSSD)|| (!badchannelsSSD)) {
     AliWarning("Can not get calibration from calibration database !");
     return kFALSE;
   }
@@ -540,13 +569,33 @@ Bool_t AliITSDetTypeSim::GetCalibration() {
     cal = (AliITSCalibration*) calSPD->At(i);
     cal->SetResponse(pSPD);
     SetCalibrationModel(i, cal);
- }
-  for (Int_t i=0; i<fNMod[1]; i++) {
-    cal = (AliITSCalibration*) calSDD->At(i);
-    cal->SetResponse(pSDD);
-    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++) {
     AliITSCalibrationSSD *calibSSD = new AliITSCalibrationSSD();
     calibSSD->SetResponse((AliITSresponse*)pSSD);
@@ -558,7 +607,7 @@ Bool_t AliITSDetTypeSim::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);
 
  }
@@ -814,7 +863,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);