From 964d8c19d9cacc702a0f313e8ee523768a73d2ec Mon Sep 17 00:00:00 2001 From: masera Date: Wed, 21 Apr 2010 17:16:56 +0000 Subject: [PATCH] Fix for bug number 66155 --- ITS/AliITSCalibrationSSD.cxx | 4 ++++ ITS/AliITSDetTypeRec.cxx | 16 ++++++++++++---- ITS/AliITSDetTypeRec.h | 6 +++--- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/ITS/AliITSCalibrationSSD.cxx b/ITS/AliITSCalibrationSSD.cxx index 967818940ee..bdcc8faa56c 100644 --- a/ITS/AliITSCalibrationSSD.cxx +++ b/ITS/AliITSCalibrationSSD.cxx @@ -84,6 +84,10 @@ AliITSCalibrationSSD::~AliITSCalibrationSSD(){ // destructor delete [] fDetPar; + if(fNoise)delete fNoise; + if(fPedestal)delete fPedestal; + if(fGain)delete fGain; + if(fBadChannels)delete fBadChannels; } //______________________________________________________________________ void AliITSCalibrationSSD::SetDetParam(Double_t *par){ diff --git a/ITS/AliITSDetTypeRec.cxx b/ITS/AliITSDetTypeRec.cxx index c92d970a1f2..82ff297010c 100644 --- a/ITS/AliITSDetTypeRec.cxx +++ b/ITS/AliITSDetTypeRec.cxx @@ -167,7 +167,12 @@ AliITSDetTypeRec::~AliITSDetTypeRec(){ if(fDDLMapSDD) delete fDDLMapSDD; } } - if(fSSDCalibration) delete fSSDCalibration; + if(fSSDCalibration){ + if(!(AliCDBManager::Instance()->GetCacheFlag())) { + delete fSSDCalibration; + fSSDCalibration = NULL; + } + } if(fSPDDead){ if(!(AliCDBManager::Instance()->GetCacheFlag())) { fSPDDead->Delete(); @@ -615,11 +620,12 @@ Bool_t AliITSDetTypeRec::GetCalibrationSSD(Bool_t cacheStatus) { } TObject *emptyssd = 0; TString ssdobjectname; - AliITSNoiseSSDv2 *noiseSSD = new AliITSNoiseSSDv2(); + AliITSNoiseSSDv2 *noiseSSD = NULL; emptyssd = (TObject *)entryNoiseSSD->GetObject(); ssdobjectname = emptyssd->GetName(); if(ssdobjectname=="TObjArray") { TObjArray *noiseSSDOld = (TObjArray *)entryNoiseSSD->GetObject(); + noiseSSD = new AliITSNoiseSSDv2(); ReadOldSSDNoise(noiseSSDOld, noiseSSD); } else if(ssdobjectname=="AliITSNoiseSSDv2") @@ -627,11 +633,12 @@ Bool_t AliITSDetTypeRec::GetCalibrationSSD(Bool_t cacheStatus) { if(!cacheStatus)entryNoiseSSD->SetObject(NULL); entryNoiseSSD->SetOwner(kTRUE); - AliITSGainSSDv2 *gainSSD = new AliITSGainSSDv2(); + AliITSGainSSDv2 *gainSSD = NULL;; emptyssd = (TObject *)entryGainSSD->GetObject(); ssdobjectname = emptyssd->GetName(); if(ssdobjectname=="Gain") { TObjArray *gainSSDOld = (TObjArray *)entryGainSSD->GetObject(); + gainSSD = new AliITSGainSSDv2(); ReadOldSSDGain(gainSSDOld, gainSSD); } else if(ssdobjectname=="AliITSGainSSDv2") @@ -639,11 +646,12 @@ Bool_t AliITSDetTypeRec::GetCalibrationSSD(Bool_t cacheStatus) { if(!cacheStatus)entryGainSSD->SetObject(NULL); entryGainSSD->SetOwner(kTRUE); - AliITSBadChannelsSSDv2 *badChannelsSSD = new AliITSBadChannelsSSDv2(); + AliITSBadChannelsSSDv2 *badChannelsSSD = NULL; emptyssd = (TObject *)entryBadChannelsSSD->GetObject(); ssdobjectname = emptyssd->GetName(); if(ssdobjectname=="TObjArray") { TObjArray *badChannelsSSDOld = (TObjArray *)entryBadChannelsSSD->GetObject(); + badChannelsSSD = new AliITSBadChannelsSSDv2(); ReadOldSSDBadChannels(badChannelsSSDOld, badChannelsSSD); } else if(ssdobjectname=="AliITSBadChannelsSSDv2") diff --git a/ITS/AliITSDetTypeRec.h b/ITS/AliITSDetTypeRec.h index a01dcd07595..40fb6b054de 100644 --- a/ITS/AliITSDetTypeRec.h +++ b/ITS/AliITSDetTypeRec.h @@ -52,9 +52,6 @@ class AliITSDetTypeRec : public TObject { virtual void SetSPDDeadModel(Int_t iMod, AliITSCalibration *cal); virtual void SetReconstructionModel(Int_t dettype, AliITSClusterFinder *rec); virtual Bool_t GetCalibration(); - virtual Bool_t GetCalibrationSPD(Bool_t cacheStatus); - virtual Bool_t GetCalibrationSDD(Bool_t cacheStatus); - virtual Bool_t GetCalibrationSSD(Bool_t cacheStatus); virtual AliITSsegmentation* GetSegmentationModel(Int_t dettype) const; virtual AliITSCalibration* GetCalibrationModel(Int_t iMod) const; virtual AliITSCalibration* GetSPDDeadModel(Int_t iMod) const; @@ -118,6 +115,9 @@ class AliITSDetTypeRec : public TObject { AliITSBadChannelsSSDv2 *badChannelsSSD); void ReadOldSSDGain(const TObjArray *array, AliITSGainSSDv2 *gainSSD); + virtual Bool_t GetCalibrationSPD(Bool_t cacheStatus); + virtual Bool_t GetCalibrationSDD(Bool_t cacheStatus); + virtual Bool_t GetCalibrationSSD(Bool_t cacheStatus); // virtual void SetLoader(AliITSLoader* loader) {fLoader=loader;} static const Int_t fgkNdettypes; // number of det. types -- 2.43.0