]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Fix for correctly getting the CDB path when running with plugin (Diego)
authordainese <dainese@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 4 Mar 2011 15:13:23 +0000 (15:13 +0000)
committerdainese <dainese@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 4 Mar 2011 15:13:23 +0000 (15:13 +0000)
PWG3/muondep/AliAnalysisTaskPileup.cxx
PWG3/muondep/AliAnalysisTaskPileup.h

index 8fca45cc0cc55b475965d12de2a583f52e01e146..2e0e04da9abaefb2040000c36fe16332012f0b70 100644 (file)
@@ -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; ientry<fStorageList->GetEntries(); ientry++ ) {
-      TObjString* calibStr = (TObjString*)fStorageList->At(ientry);
+    TObjArray* storageList = fStorageList.Tokenize(" ");
+    storageList->SetOwner();
+    for ( Int_t ientry=0; ientry<storageList->GetEntries(); 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
 }
 
index ba5493d7cf6159d9126c56a1a8f06dab3d9daa5a..71738b675db62855aa024fad2fceafe976278f2b 100644 (file)
@@ -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);
 };