X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ITS%2FAliITSDetTypeSim.cxx;h=e7f17f05eee0df3be2b0857c54ff5b0b3d7ea954;hb=1c988c69558037193ea9e6a53dc1fa251b532a8f;hp=f056e1250eef16201244fffcf3b81aaeff5a13f2;hpb=18da6e540fc338be853169fd8cb89eb51b309ec6;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/AliITSDetTypeSim.cxx b/ITS/AliITSDetTypeSim.cxx index f056e1250ee..e7f17f05eee 100644 --- a/ITS/AliITSDetTypeSim.cxx +++ b/ITS/AliITSDetTypeSim.cxx @@ -46,6 +46,7 @@ #include "AliITSCalibrationSDD.h" #include "AliITSMapSDD.h" #include "AliITSDriftSpeedArraySDD.h" +#include "AliITSDriftSpeedSDD.h" #include "AliITSCalibrationSSD.h" #include "AliITSNoiseSSD.h" #include "AliITSGainSSD.h" @@ -80,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. @@ -99,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; @@ -148,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); @@ -175,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. @@ -274,11 +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){ - seg = new AliITSsegmentationSDD(GetITSgeom()); + 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 @@ -452,6 +457,7 @@ Bool_t AliITSDetTypeSim::GetCalibration() { 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); @@ -464,7 +470,7 @@ Bool_t AliITSDetTypeSim::GetCalibration() { AliCDBEntry *entry2SSD = AliCDBManager::Instance()->Get("ITS/Calib/RespSSD", run); if(!entrySPD || !entrySDD || !entryNoiseSSD || !entryGainSSD || !entryBadChannelsSSD || - !entry2SPD || !entry2SDD || !entry2SSD || !drSpSDD || !mapASDD ||!mapTSDD){ + !entry2SPD || !entry2SDD || !entry2SSD || !drSpSDD || !ddlMapSDD || !mapASDD ||!mapTSDD){ AliFatal("Calibration object retrieval failed! "); return kFALSE; } @@ -495,6 +501,10 @@ Bool_t AliITSDetTypeSim::GetCalibration() { 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); @@ -538,11 +548,12 @@ Bool_t AliITSDetTypeSim::GetCalibration() { delete mapASDD; delete mapTSDD; delete drSpSDD; + delete ddlMapSDD; } AliCDBManager::Instance()->SetCacheFlag(origCacheStatus); - if ((!pSPD)||(!pSDD)||(!pSSD) || (!calSPD) || (!calSDD) || (!drSp) + if ((!pSPD)||(!pSDD)||(!pSSD) || (!calSPD) || (!calSDD) || (!drSp) || (!ddlsdd) || (!mapAn) || (!mapT) || (!noiseSSD)|| (!gainSSD)|| (!badchannelsSSD)) { AliWarning("Can not get calibration from calibration database !"); return kFALSE; @@ -559,26 +570,32 @@ Bool_t AliITSDetTypeSim::GetCalibration() { cal->SetResponse(pSPD); SetCalibrationModel(i, cal); } - for (Int_t i=0; iAt(i); - cal->SetResponse(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); - Int_t iMod = i + fNMod[0]; - SetCalibrationModel(iMod, cal); - } + + fDDLMapSDD->SetDDLMap(ddlsdd); + for(Int_t iddl=0; iddlGetModuleNumber(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; iSetResponse((AliITSresponse*)pSSD); @@ -590,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); }