X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ITS%2FAliITSDetTypeRec.cxx;h=47b9a54b5dd8c41a5d0f8d03ff191dc772e2d5c3;hb=9f75c734fcedd7927ee4a975ac20f298a9f8160b;hp=d253d34046b47a947985b5ec908a1ffea35f0178;hpb=fb4dfab90375b096539a4ace307117dc6cb10a9d;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/AliITSDetTypeRec.cxx b/ITS/AliITSDetTypeRec.cxx index d253d34046b..47b9a54b5dd 100644 --- a/ITS/AliITSDetTypeRec.cxx +++ b/ITS/AliITSDetTypeRec.cxx @@ -44,6 +44,7 @@ #include "AliITSRawClusterSSD.h" #include "AliITSRecPoint.h" #include "AliITSCalibrationSDD.h" +#include "AliITSMapSDD.h" #include "AliITSCalibrationSSD.h" #include "AliITSNoiseSSD.h" #include "AliITSGainSSD.h" @@ -157,15 +158,17 @@ AliITSDetTypeRec::~AliITSDetTypeRec(){ fSegmentation = 0; } if(fCalibration){ - AliITSresponse* rspd = ((AliITSCalibration*)fCalibration->At(GetITSgeom()->GetStartSPD()))->GetResponse(); - AliITSresponse* rsdd = ((AliITSCalibration*)fCalibration->At(GetITSgeom()->GetStartSDD()))->GetResponse(); - AliITSresponse* rssd = ((AliITSCalibration*)fCalibration->At(GetITSgeom()->GetStartSSD()))->GetResponse(); - if(rspd) delete rspd; - if(rsdd) delete rsdd; - if(rssd) delete rssd; - fCalibration->Delete(); - delete fCalibration; - fCalibration = 0; + if(!(AliCDBManager::Instance()->GetCacheFlag())) { + AliITSresponse* rspd = ((AliITSCalibration*)fCalibration->At(GetITSgeom()->GetStartSPD()))->GetResponse(); + AliITSresponse* rsdd = ((AliITSCalibration*)fCalibration->At(GetITSgeom()->GetStartSDD()))->GetResponse(); + AliITSresponse* rssd = ((AliITSCalibration*)fCalibration->At(GetITSgeom()->GetStartSSD()))->GetResponse(); + if(rspd) delete rspd; + if(rsdd) delete rsdd; + if(rssd) delete rssd; + fCalibration->Delete(); + delete fCalibration; + fCalibration = 0; + } } if(fPreProcess) delete fPreProcess; if(fPostProcess) delete fPostProcess; @@ -344,7 +347,7 @@ void AliITSDetTypeRec::SetDefaults(){ } if(dettype==1){ AliITSCalibrationSDD* res=(AliITSCalibrationSDD*) GetCalibrationModel(GetITSgeom()->GetStartSDD()); - seg = new AliITSsegmentationSDD(GetITSgeom(),res); + seg = new AliITSsegmentationSDD(GetITSgeom()); SetSegmentationModel(dettype,seg); const char *kopt = ((AliITSresponseSDD*)res->GetResponse())->ZeroSuppOption(); if((!strstr(kopt,"2D"))&&(!strstr(kopt,"1D"))) SetDigitClassName(dettype,"AliITSdigit"); @@ -386,7 +389,7 @@ Bool_t AliITSDetTypeRec::GetCalibration() { fCalibration->Clear(); } - AliCDBEntry *entrySPD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSPD"); + AliCDBEntry *entrySPD = AliCDBManager::Instance()->Get("ITS/Calib/SPDDead"); AliCDBEntry *entrySDD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSDD"); // AliCDBEntry *entrySSD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSSD"); @@ -397,9 +400,11 @@ Bool_t AliITSDetTypeRec::GetCalibration() { AliCDBEntry *entry2SPD = AliCDBManager::Instance()->Get("ITS/Calib/RespSPD"); AliCDBEntry *entry2SDD = AliCDBManager::Instance()->Get("ITS/Calib/RespSDD"); AliCDBEntry *entry2SSD = AliCDBManager::Instance()->Get("ITS/Calib/RespSSD"); + AliCDBEntry *mapASDD = AliCDBManager::Instance()->Get("ITS/Calib/MapsAnodeSDD"); + AliCDBEntry *mapTSDD = AliCDBManager::Instance()->Get("ITS/Calib/MapsTimeSDD"); if(!entrySPD || !entrySDD || !entryNoiseSSD || !entryGainSSD || !entryBadChannelsSSD || - !entry2SPD || !entry2SDD || !entry2SSD){ + !entry2SPD || !entry2SDD || !entry2SSD || !mapASDD || !mapTSDD){ AliFatal("Calibration object retrieval failed! "); return kFALSE; } @@ -420,6 +425,14 @@ Bool_t AliITSDetTypeRec::GetCalibration() { if(!cacheStatus)entry2SDD->SetObject(NULL); entry2SDD->SetOwner(kTRUE); + TObjArray *mapAn = (TObjArray *)mapASDD->GetObject(); + if(!cacheStatus)mapASDD->SetObject(NULL); + mapASDD->SetOwner(kTRUE); + + TObjArray *mapT = (TObjArray *)mapTSDD->GetObject(); + if(!cacheStatus)mapTSDD->SetObject(NULL); + mapTSDD->SetOwner(kTRUE); + TObjArray *noiseSSD = (TObjArray *)entryNoiseSSD->GetObject(); if(!cacheStatus)entryNoiseSSD->SetObject(NULL); entryNoiseSSD->SetOwner(kTRUE); @@ -446,10 +459,12 @@ Bool_t AliITSDetTypeRec::GetCalibration() { delete entry2SPD; delete entry2SDD; delete entry2SSD; + delete mapASDD; + delete mapTSDD; } if ((!pSPD)||(!pSDD)||(!pSSD) || (!calSPD) || (!calSDD) - || (!noiseSSD)|| (!gainSSD)|| (!badchannelsSSD)) { + || (!mapAn) || (!mapT) || (!noiseSSD)|| (!gainSSD)|| (!badchannelsSSD)) { AliWarning("Can not get calibration from calibration database !"); return kFALSE; } @@ -464,13 +479,23 @@ Bool_t AliITSDetTypeRec::GetCalibration() { cal = (AliITSCalibration*) calSPD->At(i); cal->SetResponse((AliITSresponse*)pSPD); SetCalibrationModel(i, cal); - } + } + Int_t nn1=0; + Int_t nn2=0; for (Int_t i=0; iAt(i); cal->SetResponse((AliITSresponse*)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 iMod = i + fNMod[0]; SetCalibrationModel(iMod, cal); - } + } for (Int_t i=0; i