]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Fixed initialization of AOD file in proof case. Handling delta AOD's supported.
authoragheata <agheata@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 29 Apr 2009 12:13:39 +0000 (12:13 +0000)
committeragheata <agheata@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 29 Apr 2009 12:13:39 +0000 (12:13 +0000)
STEER/AliAODHandler.cxx

index 039a9f15d60631c0132a37b828e2ee54cd84c396..8dc560d1e29e28300a3f805b31c6bf583a80afe1 100644 (file)
@@ -26,6 +26,7 @@
 #include <TRef.h>
 #include <TString.h>
 #include <TList.h>
+#include <TROOT.h>
 
 #include "AliLog.h"
 #include "AliAODHandler.h"
@@ -123,23 +124,19 @@ Bool_t AliAODHandler::Init(Option_t* opt)
   // File opening according to execution mode
   TString option(opt);
   option.ToLower();
+  TDirectory *owd = gDirectory;
   if (option.Contains("proof")) {
     // proof
-    if (option.Contains("special")) {
-       // File for tree already opened on slave -> merging via files
-       fFileA = gFile;
-       CreateTree(1);
-    } else {   
-       // Merging in memory (not needed anymore)
-       CreateTree(1);
-    }   
+    // Merging via files. Need to access analysis manager via interpreter.
+    gROOT->ProcessLine(Form("AliAnalysisManager::GetAnalysisManager()->OpenProofFile(%s, \"RECREATE\");", fFileName.Data()));
+    gROOT->ProcessLine(Form("AliAnalysisManager::GetAnalysisManager()->GetCommonOutputContainer()->SetFile((TFile*)0x%lx);", gFile));
+    fFileA = gFile;
   } else {
     // local and grid
-    TDirectory *owd = gDirectory;
     fFileA = new TFile(fFileName.Data(), "RECREATE");
-    CreateTree(1);
-    owd->cd();
   }
+  CreateTree(1);
+  owd->cd();
   if (fExtensions) {
      TIter next(fExtensions);
      AliAODExtension *ext;
@@ -588,12 +585,21 @@ void AliAODExtension::AddBranch(const char* cname, void* addobj)
 }
 
 //______________________________________________________________________________
-Bool_t AliAODExtension::Init(Option_t */*option*/)
+Bool_t AliAODExtension::Init(Option_t *option)
 {
 // Initialize IO.
   if(!fAODEvent) fAODEvent = new AliAODEvent();
   TDirectory *owd = gDirectory;
-  fFileE = new TFile(GetName(), "RECREATE");
+  TString opt(option);
+  opt.ToLower();
+  if (opt.Contains("proof")) {
+    // proof
+    // Merging via files. Need to access analysis manager via interpreter.
+    gROOT->ProcessLine(Form("AliAnalysisManager::GetAnalysisManager()->OpenProofFile(%s, \"RECREATE\");", fName.Data()));
+    fFileE = gFile;
+  } else {
+    fFileE = new TFile(GetName(), "RECREATE");
+  }  
   fTreeE = new TTree("aodTree", "AliAOD tree");
   fTreeE->Branch(fAODEvent->GetList());
   TRef junk = (TObject*)fTreeE->BranchRef();