]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
protect against crash due to wrong gDirectory settings in OCDB
authorabercuci <abercuci@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 1 Aug 2012 07:59:23 +0000 (07:59 +0000)
committerabercuci <abercuci@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 1 Aug 2012 07:59:23 +0000 (07:59 +0000)
manipulations (Markus)

TRD/AliTRDcalibDB.cxx

index d10d2f59dfee49c251015fc793f5d23d2de6ce30..aba9909ca8621f7d93a2524b520fe72d9566393b 100644 (file)
@@ -28,6 +28,7 @@
 //                                                                           //
 ///////////////////////////////////////////////////////////////////////////////
 
+#include <TROOT.h>
 #include <TClonesArray.h>
 #include <TObjArray.h>
 
@@ -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<const TObjArray *>(GetCachedCDBObject(kIDPIDLQ1D));
-
-      TIter refs(references);
-      TObject *obj = NULL;
-      AliTRDPIDReference *ref = NULL;
-      Bool_t hasReference = kFALSE;
-      while ((obj = refs())){
-        if ((ref = dynamic_cast<AliTRDPIDReference *>(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<const TObjArray *>(GetCachedCDBObject(kIDPIDLQ1D));
+
+    TIter refs(references);
+    TObject *obj = NULL;
+    AliTRDPIDReference *ref = NULL;
+    Bool_t hasReference = kFALSE;
+    while ((obj = refs())){
+      if ((ref = dynamic_cast<AliTRDPIDReference *>(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;
 
 }