From: abercuci Date: Wed, 1 Aug 2012 07:59:23 +0000 (+0000) Subject: protect against crash due to wrong gDirectory settings in OCDB X-Git-Url: http://git.uio.no/git/?a=commitdiff_plain;h=f2391aef7f4e428e69d4be5acb9a09238276cd5b;p=u%2Fmrichter%2FAliRoot.git protect against crash due to wrong gDirectory settings in OCDB manipulations (Markus) --- diff --git a/TRD/AliTRDcalibDB.cxx b/TRD/AliTRDcalibDB.cxx index d10d2f59dfe..aba9909ca86 100644 --- a/TRD/AliTRDcalibDB.cxx +++ b/TRD/AliTRDcalibDB.cxx @@ -28,6 +28,7 @@ // // /////////////////////////////////////////////////////////////////////////////// +#include #include #include @@ -1533,42 +1534,47 @@ const AliTRDCalPID *AliTRDcalibDB::GetPIDObject(AliTRDpidUtil::ETRDPIDMethod met } //_____________________________________________________________________________ -AliTRDPIDResponse *AliTRDcalibDB::GetPIDResponse(AliTRDPIDResponse::ETRDPIDMethod method) +AliTRDPIDResponse *AliTRDcalibDB::GetPIDResponse(AliTRDPIDResponse::ETRDPIDMethod /*method*/) { // // Returns the PID response object for 1D-LQ // if (!fPIDResponse) { + AliDebug(2, "Setting new PID response."); fPIDResponse = new AliTRDPIDResponse; // Load Reference Histos from OCDB - if(method == AliTRDPIDResponse::kLQ1D){ - fPIDResponse->SetPIDmethod(method); - const TObjArray *references = dynamic_cast(GetCachedCDBObject(kIDPIDLQ1D)); - - TIter refs(references); - TObject *obj = NULL; - AliTRDPIDReference *ref = NULL; - Bool_t hasReference = kFALSE; - while ((obj = refs())){ - if ((ref = dynamic_cast(obj))){ - AliTRDPIDResponseObject *ro = new AliTRDPIDResponseObject; - ro->SetPIDReference(ref); - fPIDResponse->SetPIDResponseObject(ro); - hasReference = kTRUE; - break; - } - } - - if (!hasReference) { - AliError("Reference histograms not found in the OCDB"); +// if(method == AliTRDPIDResponse::kLQ1D){ + fPIDResponse->SetPIDmethod(AliTRDPIDResponse::kLQ1D); + const TObjArray *references = dynamic_cast(GetCachedCDBObject(kIDPIDLQ1D)); + + TIter refs(references); + TObject *obj = NULL; + AliTRDPIDReference *ref = NULL; + Bool_t hasReference = kFALSE; + while ((obj = refs())){ + if ((ref = dynamic_cast(obj))){ + AliDebug(2, "Setting new PID response object."); + TDirectory *bkpdir = gDirectory; + gROOT->cd(); + AliTRDPIDResponseObject *ro = new AliTRDPIDResponseObject; + ro->SetPIDReference(ref); + fPIDResponse->SetPIDResponseObject(ro); + hasReference = kTRUE; + gDirectory = bkpdir; + break; } } + if (!hasReference) { + AliError("Reference histograms not found in the OCDB"); + } } +// } + return fPIDResponse; }