couple of fixes in the implementation of the AliAnalysisTaskCfg
authoragheata <agheata@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 23 Aug 2011 09:24:16 +0000 (09:24 +0000)
committeragheata <agheata@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 23 Aug 2011 09:24:16 +0000 (09:24 +0000)
ANALYSIS/AliAnalysisAlien.cxx
ANALYSIS/AliAnalysisAlien.h
ANALYSIS/AliAnalysisTaskCfg.cxx

index 4166696..eaa77a8 100644 (file)
@@ -476,7 +476,7 @@ Bool_t AliAnalysisAlien::CheckDependencies()
             // Remove at idep and move all objects below up one slot
             // down to index i included.
             fModules->RemoveAt(idep);
-            for (k=idep-1; k>=i; k++) fModules->AddAt(fModules->RemoveAt(k),k+1);
+            for (k=idep-1; k>=i; k--) fModules->AddAt(fModules->RemoveAt(k),k+1);
             fModules->AddAt(dep, i++);
          }
          //Redo from istart if dependencies were inserted
@@ -487,6 +487,22 @@ Bool_t AliAnalysisAlien::CheckDependencies()
 }      
 
 //______________________________________________________________________________
+AliAnalysisManager *AliAnalysisAlien::CreateAnalysisManager(const char *name, const char *filename)
+{
+// Create the analysis manager and optionally execute the macro in filename.
+   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
+   if (mgr) return mgr;
+   mgr = new AliAnalysisManager(name);
+   mgr->SetGridHandler((AliAnalysisGrid*)this);
+   if (strlen(filename)) {
+      TString line = gSystem->ExpandPathName(filename);
+      line.Prepend(".x ");
+      gROOT->ProcessLine(line.Data());
+   }
+   return mgr;
+}      
+      
+//______________________________________________________________________________
 Int_t AliAnalysisAlien::GetNmodules() const
 {
 // Get number of modules.
@@ -557,6 +573,11 @@ Bool_t AliAnalysisAlien::GenerateTest(const char *modname)
 Bool_t AliAnalysisAlien::LoadModules()
 {
 // Load all modules by executing the AddTask macros. Checks first the dependencies.
+   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
+   if (!mgr) {
+      Error("LoadModules", "No analysis manager created yet. Use CreateAnalysisManager first.");
+      return kFALSE;
+   }   
    if (!CheckDependencies()) return kFALSE;
    TIter next(fModules);
    AliAnalysisTaskCfg *mod;
@@ -576,7 +597,9 @@ Bool_t AliAnalysisAlien::LoadModules()
          if (!fAdditionalLibs.IsNull()) fAdditionalLibs += " ";
          fAdditionalLibs += lib;
       }
-   }      
+   }
+   if (!mgr->InitAnalysis()) return kFALSE;
+   mgr->PrintStatus();
    return kTRUE;
 }      
 
index 99b4d89..ee9a064 100644 (file)
@@ -100,6 +100,7 @@ public:
 //Utilities
    void                AddModule(AliAnalysisTaskCfg *module);
    void                AddModules(TObjArray *list);
+   AliAnalysisManager *CreateAnalysisManager(const char *name, const char *filename="");
    Int_t               GetNmodules() const;
    AliAnalysisTaskCfg *GetModule(const char *name);
    Bool_t              LoadModules();
index a345570..d94df77 100644 (file)
@@ -150,7 +150,7 @@ TMacro *AliAnalysisTaskCfg::OpenMacro(const char *name)
    }   
    TString expname;
    if (strlen(name)) expname = gSystem->ExpandPathName(name);
-   else              expname = gSystem->ExpandPathName(fMacroName);
+   else              expname = gSystem->ExpandPathName(fMacroName.Data());
    if (expname.IsNull()) {
       Error("OpenMacro", "Macro name not provided and not previously set");
       return 0;
@@ -364,7 +364,7 @@ void AliAnalysisTaskCfg::Print(Option_t * option) const
    if (full) {
       if (fMacro) fMacro->Print();
       else {
-         TMacro macro(gSystem->ExpandPathName(fMacroName));
+         TMacro macro(gSystem->ExpandPathName(fMacroName.Data()));
          macro.Print();
       }   
    }