]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ANALYSIS/AliAnalysisManager.cxx
Warnings removed when setting event handlers to the manager.
[u/mrichter/AliRoot.git] / ANALYSIS / AliAnalysisManager.cxx
index 2299a52b8942f61a62ffd17c033133dbd1bc34f2..514339365728c2b67c5da89d5d7a24b1c91ed528 100644 (file)
@@ -454,8 +454,11 @@ void AliAnalysisManager::PackOutput(TList *target)
             if (strlen(filename) && !isManagedByHandler) {
                // Backup current folder
                TDirectory *opwd = gDirectory;
-               // File resident outputs
-               TFile *file = AliAnalysisManager::OpenFile(output, "RECREATE", kTRUE);
+               // File resident outputs. 
+               // Check first if the file exists.
+               TString open_option = "RECREATE";
+               if (!gSystem->AccessPathName(output->GetFileName())) open_option = "UPDATE";
+               TFile *file = AliAnalysisManager::OpenFile(output, open_option, kTRUE);
                // Clear file list to release object ownership to user.
                file->Clear();
                // Save data to file, then close.
@@ -511,7 +514,8 @@ void AliAnalysisManager::PackOutput(TList *target)
             if (fDebug > 1) printf("PackOutput %s: special output\n", output->GetName());
             if (isManagedByHandler) {
                // Terminate IO for files managed by the output handler
-               if (file) file->Write();
+               // file->Write() moved to AOD handler (A.G. 11.01.10)
+//               if (file) file->Write();
                if (file && fDebug > 2) {
                   printf("   handled file %s listing content:\n", file->GetName());
                   file->ls();
@@ -746,7 +750,14 @@ void AliAnalysisManager::Terminate()
       }
    }   
    //
+   if (fInputEventHandler)   fInputEventHandler  ->TerminateIO();
+   if (fOutputEventHandler)  fOutputEventHandler ->TerminateIO();
+   if (fMCtruthEventHandler) fMCtruthEventHandler->TerminateIO();
    TIter next1(fOutputs);
+   TString handlerFile = "";
+   if (fOutputEventHandler) {
+      handlerFile = fOutputEventHandler->GetOutputFileName();
+   }
    while ((output=(AliAnalysisDataContainer*)next1())) {
       // Special outputs or grid files have the files already closed and written.
       if (fMode == kGridAnalysis) continue;
@@ -754,21 +765,19 @@ void AliAnalysisManager::Terminate()
         if (output->IsSpecialOutput() || output->IsRegisterDataset()) continue;
       }  
       const char *filename = output->GetFileName();
-      if (!(strcmp(filename, "default"))) {
-         if (fOutputEventHandler) filename = fOutputEventHandler->GetOutputFileName();
-         TFile *aodfile = (TFile*)gROOT->GetListOfFiles()->FindObject(filename);
-         if (aodfile) {
-            if (fDebug > 1) printf("Writing output handler file: %s\n", filename);
-            aodfile->Write();
-            continue;
-         }   
-      }      
+      TString open_option = "RECREATE";
+      if (!(strcmp(filename, "default"))) continue;
       if (!strlen(filename)) continue;
       if (!output->GetData()) continue;
       TDirectory *opwd = gDirectory;
       TFile *file = output->GetFile();
       if (!file) file = (TFile*)gROOT->GetListOfFiles()->FindObject(filename);
-      if (!file) file = new TFile(filename, "RECREATE");
+      if (!file) {
+             printf("Terminate : handlerFile = %s, filename = %s\n",handlerFile.Data(),filename);
+             //if (handlerFile == filename && !gSystem->AccessPathName(filename)) open_option = "UPDATE";
+         if (!gSystem->AccessPathName(filename)) open_option = "UPDATE";
+         file = new TFile(filename, open_option);
+      }
       if (file->IsZombie()) {
          Error("Terminate", "Cannot open output file %s", filename);
          continue;
@@ -817,10 +826,6 @@ void AliAnalysisManager::Terminate()
       if (opwd) opwd->cd();
    }   
 
-   if (fInputEventHandler)   fInputEventHandler  ->TerminateIO();
-   if (fOutputEventHandler)  fOutputEventHandler ->TerminateIO();
-   if (fMCtruthEventHandler) fMCtruthEventHandler->TerminateIO();
-
    Bool_t getsysInfo = ((fNSysInfo>0) && (fMode==kLocalAnalysis))?kTRUE:kFALSE;
    if (getsysInfo) {
       TDirectory *cdir = gDirectory;
@@ -1291,7 +1296,7 @@ TFile *AliAnalysisManager::OpenFile(AliAnalysisDataContainer *cont, const char *
       TString opt(option);
       opt.ToUpper();
       if ((opt=="UPDATE") && (opt!=f->GetOption())) 
-        ::Fatal("AliAnalysisManager::OpenFile", "File %s already opened, but not in UPDATE mode!", cont->GetFileName());
+        ::Info("AliAnalysisManager::OpenFile", "File %s already opened in %s mode!", cont->GetFileName(), f->GetOption());
     } else {
       f = TFile::Open(filename, option);
     }    
@@ -1335,7 +1340,7 @@ TFile *AliAnalysisManager::OpenProofFile(AliAnalysisDataContainer *cont, const c
       TString opt(option);
       opt.ToUpper();
       if ((opt=="UPDATE") && (opt!=f->GetOption()))
-        Fatal("OpenProofFile", "File %s already opened, but not in UPDATE mode!", cont->GetFileName());
+        ::Info("OpenProofFile", "File %s already opened in %s mode!", cont->GetFileName(), f->GetOption());
     } else {
       f = new TFile(filename, option);
     }
@@ -1499,7 +1504,7 @@ void AliAnalysisManager::SetInputEventHandler(AliVEventHandler*  handler)
 // Set the input event handler and create a container for it.
    fInputEventHandler   = handler;
    fCommonInput = CreateContainer("cAUTO_INPUT", TChain::Class(), AliAnalysisManager::kInputContainer);
-   Warning("SetInputEventHandler", " An automatic input container for the input chain was created.\nPlease use: mgr->GetCommonInputContainer() to access it.");
+//   Warning("SetInputEventHandler", " An automatic input container for the input chain was created.\nPlease use: mgr->GetCommonInputContainer() to access it.");
 }
 
 //______________________________________________________________________________
@@ -1509,7 +1514,7 @@ void AliAnalysisManager::SetOutputEventHandler(AliVEventHandler*  handler)
    fOutputEventHandler   = handler;
    fCommonOutput = CreateContainer("cAUTO_OUTPUT", TTree::Class(), AliAnalysisManager::kOutputContainer, "default");
    fCommonOutput->SetSpecialOutput();
-   Warning("SetOutputEventHandler", " An automatic output container for the output tree was created.\nPlease use: mgr->GetCommonOutputContainer() to access it.");
+//   Warning("SetOutputEventHandler", " An automatic output container for the output tree was created.\nPlease use: mgr->GetCommonOutputContainer() to access it.");
 }
 
 //______________________________________________________________________________
@@ -1590,6 +1595,8 @@ Bool_t AliAnalysisManager::ValidateOutputFiles() const
       if (filename == "default") {
          if (!fOutputEventHandler) continue;
          filename = fOutputEventHandler->GetOutputFileName();
+         // Main AOD may not be there
+         if (gSystem->AccessPathName(filename)) continue;
       }
       // Check if the file is closed
       if (openedFiles.Contains(filename)) continue;;