+ fFOGenerator.SetEfficiency(calFoEffSPD); // this cal object is used only by the generator
+ fFOGenerator.SetNoise(calFoNoiSPD); // this cal object is used only by the generator
+
+ fDDLMapSDD->SetDDLMap(ddlsdd);
+ fRespSDD=pSDD;
+ Float_t avegain=0.;
+ Float_t nGdAnodes=0;
+ Bool_t oldMapFormat=kFALSE;
+ TObject* objmap=(TObject*)mapT->At(0);
+ TString cname(objmap->ClassName());
+ if(cname.CompareTo("AliITSMapSDD")==0){
+ oldMapFormat=kTRUE;
+ AliInfo("SDD Maps converted to new format");
+ }
+
+ for (Int_t i=0; i<fgkDefaultNModulesSDD; i++) {
+ Int_t iddl,icarlos;
+ Int_t iMod = i + fgkDefaultNModulesSPD;
+ fDDLMapSDD->FindInDDLMap(iMod,iddl,icarlos);
+ if(iddl<0){
+ AliITSCalibrationSDD* calsdddead=new AliITSCalibrationSDD();
+ calsdddead->SetBad();
+ AliITSDriftSpeedSDD* driftspdef = new AliITSDriftSpeedSDD();
+ AliITSDriftSpeedArraySDD* arrdrsp=new AliITSDriftSpeedArraySDD(1);
+ arrdrsp->AddDriftSpeed(driftspdef);
+ calsdddead->SetDriftSpeed(0,arrdrsp);
+ calsdddead->SetDriftSpeed(1,arrdrsp);
+ SetCalibrationModel(iMod, calsdddead);
+ AliWarning(Form("SDD module %d not present in DDL map: set it as dead",iMod));
+ }else{
+ cal = (AliITSCalibration*) calSDD->At(i);
+ for(Int_t iAnode=0;iAnode< ((AliITSCalibrationSDD*)cal)->NOfAnodes(); iAnode++){
+ if(((AliITSCalibrationSDD*)cal)->IsBadChannel(iAnode)) continue;
+ avegain+= ((AliITSCalibrationSDD*)cal)->GetChannelGain(iAnode);
+ nGdAnodes++;
+ }
+ Int_t i0=2*i;
+ Int_t i1=1+2*i;
+ AliITSDriftSpeedArraySDD* arr0 = (AliITSDriftSpeedArraySDD*) drSp->At(i0);
+ AliITSDriftSpeedArraySDD* arr1 = (AliITSDriftSpeedArraySDD*) drSp->At(i1);
+
+ AliITSCorrMapSDD* mt0 = 0;
+ AliITSCorrMapSDD* mt1 = 0;
+ if(oldMapFormat){
+ AliITSMapSDD* oldmap0=(AliITSMapSDD*)mapT->At(i0);
+ AliITSMapSDD* oldmap1=(AliITSMapSDD*)mapT->At(i1);
+ mt0=oldmap0->ConvertToNewFormat();
+ mt1=oldmap1->ConvertToNewFormat();
+ }else{
+ mt0=(AliITSCorrMapSDD*)mapT->At(i0);
+ mt1=(AliITSCorrMapSDD*)mapT->At(i1);
+ }
+ cal->SetDriftSpeed(0,arr0);
+ cal->SetDriftSpeed(1,arr1);
+ cal->SetMapT(0,mt0);
+ cal->SetMapT(1,mt1);
+ SetCalibrationModel(iMod, cal);
+ }
+ }
+ if(nGdAnodes) fAveGainSDD=avegain/nGdAnodes;
+ AliDebug(3,Form("SDD average gain=%f\n",fAveGainSDD));
+ fSSDCalibration->SetNoise(noiseSSD);
+ fSSDCalibration->SetGain(gainSSD);
+ fSSDCalibration->SetBadChannels(badChannelsSSD);
+ //fSSDCalibration->FillBadChipMap();