From 7af74efe180bfebe8ee1f14c65a965c8fad13886 Mon Sep 17 00:00:00 2001 From: dainese Date: Fri, 4 Mar 2011 15:13:23 +0000 Subject: [PATCH] Fix for correctly getting the CDB path when running with plugin (Diego) --- PWG3/muondep/AliAnalysisTaskPileup.cxx | 45 +++++++++++++------------- PWG3/muondep/AliAnalysisTaskPileup.h | 10 ++++-- 2 files changed, 30 insertions(+), 25 deletions(-) diff --git a/PWG3/muondep/AliAnalysisTaskPileup.cxx b/PWG3/muondep/AliAnalysisTaskPileup.cxx index 8fca45cc0cc..2e0e04da9ab 100644 --- a/PWG3/muondep/AliAnalysisTaskPileup.cxx +++ b/PWG3/muondep/AliAnalysisTaskPileup.cxx @@ -98,10 +98,10 @@ AliAnalysisTaskSE(), fTriggerClasses(0x0), fTriggerClassIndex(0x0), fIsInitCDB(0), - fCentralityClasses(0x0) + fCentralityClasses(0x0), + fStorageList("") #if defined(READOCDB) - , fTriggerRunScalers(0x0), - fStorageList(0x0) + , fTriggerRunScalers(0x0) #endif { @@ -117,12 +117,11 @@ AliAnalysisTaskPileup::AliAnalysisTaskPileup(const char *name) : fTriggerClasses(0x0), fTriggerClassIndex(0x0), fIsInitCDB(0), - fCentralityClasses(0x0) + fCentralityClasses(0x0), + fStorageList("") #if defined(READOCDB) - , fTriggerRunScalers(0x0), - fStorageList(0x0) + , fTriggerRunScalers(0x0) #endif - { /// Constructor @@ -136,7 +135,7 @@ AliAnalysisTaskPileup::~AliAnalysisTaskPileup() /// Destructor // For proof: do not delete output containers - if ( ! AliAnalysisManager::GetAnalysisManager()->IsProofMode() ) { + if ( ! AliAnalysisManager::GetAnalysisManager() || ! AliAnalysisManager::GetAnalysisManager()->IsProofMode() ) { delete fEventCounters; } @@ -144,10 +143,9 @@ AliAnalysisTaskPileup::~AliAnalysisTaskPileup() delete fTriggerClasses; delete fTriggerClassIndex; -#if defined(READOCDB) + //#if defined(READOCDB) //delete fTriggerRunScalers; // Not owner -> Owned by OCDB - delete fStorageList; -#endif + //#endif } @@ -158,12 +156,17 @@ void AliAnalysisTaskPileup::NotifyRun() /// Notify run #if defined(READOCDB) - fStorageList->Compress(); + if ( fStorageList.IsNull() ) { + AliError("Default storage not set! Pileup corrections won't be calculated!"); + return; + } if ( ! AliCDBManager::Instance()->GetDefaultStorage() ) { - for ( Int_t ientry=0; ientryGetEntries(); ientry++ ) { - TObjString* calibStr = (TObjString*)fStorageList->At(ientry); + TObjArray* storageList = fStorageList.Tokenize(" "); + storageList->SetOwner(); + for ( Int_t ientry=0; ientryGetEntries(); ientry++ ) { + TObjString* calibStr = (TObjString*)storageList->At(ientry); ientry++; - TObjString* dbStr = (TObjString*)fStorageList->At(ientry); + TObjString* dbStr = (TObjString*)storageList->At(ientry); TString calibName = calibStr->GetString(); if ( ! calibName.CompareTo("default") ) { AliCDBManager::Instance()->SetDefaultStorage(dbStr->GetName()); @@ -172,6 +175,7 @@ void AliAnalysisTaskPileup::NotifyRun() AliCDBManager::Instance()->SetSpecificStorage(calibStr->GetName(), dbStr->GetName()); } } + delete storageList; } // Default storage was not correclty set: nothing done @@ -537,16 +541,13 @@ void AliAnalysisTaskPileup::SetSpecificStorage(TString calibType, TString dbStri { /// Set specific storage #if defined(READOCDB) - if ( ! fStorageList ) { - fStorageList = new TObjArray(5); - fStorageList->SetOwner(); - } - fStorageList->AddLast(new TObjString(calibType)); - fStorageList->AddLast(new TObjString(dbString)); + if ( ! fStorageList.IsNull() ) fStorageList += " "; + fStorageList += Form("%s %s", calibType.Data(), dbString.Data()); + if ( fDebug >= 3 ) printf("AliAnalysisTaskPileup: Setting storage %s %s", calibType.Data(), dbString.Data()); #else calibType = ""; dbString = ""; - AliWarning(Form("Class was not compiled to run on OCDB. Command will not have effect")); + AliWarning("Class was not compiled to run on OCDB. Command will not have effect"); #endif } diff --git a/PWG3/muondep/AliAnalysisTaskPileup.h b/PWG3/muondep/AliAnalysisTaskPileup.h index ba5493d7cf6..71738b675db 100644 --- a/PWG3/muondep/AliAnalysisTaskPileup.h +++ b/PWG3/muondep/AliAnalysisTaskPileup.h @@ -63,11 +63,15 @@ private: Bool_t fIsInitCDB; //!< Flag telling if CDB is used TAxis* fCentralityClasses; //!< Centrality classes -#ifdef READOCDB + // In principle it is used only when READOCDB is defined + // but if it is defined in the #if condition, it is not + // correctly streamed to file (not good for plugin) + TString fStorageList; /// List of storages + +#if defined(READOCDB) AliTriggerRunScalers* fTriggerRunScalers; //!< Trigger scalers from OCDB - TObjArray* fStorageList; /// List of storages #endif - + ClassDef(AliAnalysisTaskPileup, 1); }; -- 2.43.5