Call to Terminate allowed in case of plugin->SetOutputSingleFolder()
authoragheata <agheata@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 17 Dec 2009 09:18:07 +0000 (09:18 +0000)
committeragheata <agheata@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 17 Dec 2009 09:18:07 +0000 (09:18 +0000)
ANALYSIS/AliAnalysisAlien.cxx
ANALYSIS/AliAnalysisAlien.h
ANALYSIS/AliAnalysisGrid.h
ANALYSIS/AliAnalysisManager.cxx

index 02bc529..7de448e 100644 (file)
@@ -1237,6 +1237,13 @@ Bool_t AliAnalysisAlien::IsCollection(const char *lfn) const
 }   
 
 //______________________________________________________________________________
+Bool_t AliAnalysisAlien::IsSingleOutput() const
+{
+// Check if single-ouput option is on.
+   return (!fOutputSingle.IsNull());
+}
+   
+//______________________________________________________________________________
 void AliAnalysisAlien::Print(Option_t *) const
 {
 // Print current plugin settings.
@@ -1725,8 +1732,14 @@ void AliAnalysisAlien::WriteAnalysisFile()
       TDirectory *cdir = gDirectory;
       TFile *file = TFile::Open(analysisFile, "RECREATE");
       if (file) {
+         // Skip task Terminate calls for the grid job
+         mgr->SetSkipTerminate(kTRUE);
+         // Unless merging makes no sense
+         if (IsSingleOutput()) mgr->SetSkipTerminate(kFALSE);
          mgr->Write();
          delete file;
+         // Enable termination for local jobs
+         mgr->SetSkipTerminate(kFALSE);
       }
       if (cdir) cdir->cd();
       Info("WriteAnalysisFile", "\n#####   Analysis manager: %s wrote to file <%s>\n", mgr->GetName(),analysisFile.Data());
index 283ea79..c639a70 100644 (file)
@@ -103,6 +103,7 @@ protected:
    void                SubmitNext();
 
    Bool_t              IsCollection(const char *lfn) const;
+   virtual Bool_t      IsSingleOutput() const;
    Bool_t              IsUsingTags() const {return TObject::TestBit(AliAnalysisGrid::kUseTags);}
 
 private:
index 91a517e..3deeeb3 100644 (file)
@@ -44,6 +44,7 @@ enum EPluginRunMode {
    virtual void        AddRunNumber(Int_t run)                           = 0;
    virtual void        AddRunNumber(const char *run)                     = 0;
    virtual void        AddDataFile(const char *lfn)                      = 0;
+   virtual Bool_t      IsSingleOutput() const                            = 0;
    virtual void        SetExecutable(const char *name="analysis.sh")     = 0;
    virtual void        SetArguments(const char *name="")                 = 0;
    virtual void        SetAnalysisMacro(const char *name="myAnalysis.C") = 0;
index 643db8a..2299a52 100644 (file)
@@ -1094,7 +1094,6 @@ void AliAnalysisManager::StartAnalysis(const char *type, TTree *tree, Long64_t n
    Bool_t runlocalinit = kTRUE;
    if (anaType.Contains("file")) {
       runlocalinit = kFALSE;
-      SetSkipTerminate(kTRUE);
    }   
    if (anaType.Contains("proof"))     fMode = kProofAnalysis;
    else if (anaType.Contains("grid")) fMode = kGridAnalysis;