]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Fixes for the AliEn plugin
authoragheata <agheata@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 3 Apr 2009 06:26:15 +0000 (06:26 +0000)
committeragheata <agheata@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 3 Apr 2009 06:26:15 +0000 (06:26 +0000)
ANALYSIS/AliAnalysisAlien.cxx
ANALYSIS/AliAnalysisAlien.h
ANALYSIS/AliAnalysisGrid.h

index dc58960cffc1d822611a1948eefca476efb76d8e..718d9d40c206af25b722379194ca2a20d51dd310 100644 (file)
@@ -280,7 +280,6 @@ Bool_t AliAnalysisAlien::Connect()
       return kFALSE;
    }  
    fUser = gGrid->GetUser();
-   fCloseSE = gSystem->Getenv("alien_CLOSE_SE");
    Info("Connect", "\n#####   Connected to AliEn as user %s. Setting analysis user to <%s>", fUser.Data(), fUser.Data());
    return kTRUE;
 }
@@ -569,13 +568,21 @@ Bool_t AliAnalysisAlien::CreateJDL()
          arr = fOutputArchive.Tokenize(" ");
          TIter next(arr);
          while ((os=(TObjString*)next()))
-            fGridJDL->AddToOutputArchive(os->GetString().Data());
+         if (!os->GetString().Contains("@") && fCloseSE.Length())
+            fGridJDL->AddToOutputArchive(Form("%s@%s",os->GetString().Data(), fCloseSE.Data())); 
+         else
+            fGridJDL->AddToOutputArchive(os->GetString());
          delete arr;
       }      
       fGridJDL->SetOutputDirectory(Form("%s/%s/#alien_counter_03i#", workdir.Data(), fGridOutputDir.Data()));
       arr = fOutputFiles.Tokenize(" ");
       TIter next(arr);
-      while ((os=(TObjString*)next())) fGridJDL->AddToOutputSandbox(os->GetString());
+      while ((os=(TObjString*)next())) {
+         if (!os->GetString().Contains("@") && fCloseSE.Length())
+            fGridJDL->AddToOutputSandbox(Form("%s@%s",os->GetString().Data(), fCloseSE.Data())); 
+         else
+            fGridJDL->AddToOutputSandbox(os->GetString());
+      }   
       delete arr;
 //      fGridJDL->SetPrice((UInt_t)fPrice);
       fGridJDL->SetValue("Price", Form("\"%d\"", fPrice));
@@ -934,6 +941,27 @@ void AliAnalysisAlien::StartAnalysis(Long64_t /*nentries*/, Long64_t /*firstEntr
 {
 // Start remote grid analysis.
    
+   // Check if output files have to be taken from the analysis manager
+   if (TestBit(AliAnalysisGrid::kDefaultOutputs)) {
+      AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
+      if (!mgr || !mgr->IsInitialized()) {
+         Error("StartAnalysis", "You need an initialized analysis manager for this");
+         return;
+      }
+      fOutputFiles = "";
+      TIter next(mgr->GetOutputs());
+      AliAnalysisDataContainer *output;
+      while ((output=(AliAnalysisDataContainer*)next())) {
+         const char *filename = output->GetFileName();
+         if (!(strcmp(filename, "default"))) {
+            if (!mgr->GetOutputEventHandler()) continue;
+            filename = mgr->GetOutputEventHandler()->GetOutputFileName();
+         }
+         if (fOutputFiles.Length()) fOutputFiles += " ";
+         fOutputFiles += filename;
+      }
+   }
+   if (!fCloseSE.Length()) fCloseSE = gSystem->Getenv("alien_CLOSE_SE");
    if (TestBit(AliAnalysisGrid::kOffline)) {
       Info("StartAnalysis","\n##### OFFLINE MODE ##### Files to be used in GRID are produced but not copied \
       \n                         there nor any job run. You can revise the JDL and analysis \
@@ -960,26 +988,6 @@ void AliAnalysisAlien::StartAnalysis(Long64_t /*nentries*/, Long64_t /*firstEntr
       return;
    }   
    CreateDataset(fDataPattern);
-   // Check if output files have to be taken from the analysis manager
-   if (TestBit(AliAnalysisGrid::kDefaultOutputs)) {
-      AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
-      if (!mgr || !mgr->IsInitialized()) {
-         Error("StartAnalysis", "You need an initialized analysis manager for this");
-         return;
-      }
-      fOutputFiles = "";
-      TIter next(mgr->GetOutputs());
-      AliAnalysisDataContainer *output;
-      while ((output=(AliAnalysisDataContainer*)next())) {
-         const char *filename = output->GetFileName();
-        if (!(strcmp(filename, "default"))) {
-           if (!mgr->GetOutputEventHandler()) continue;
-           filename = mgr->GetOutputEventHandler()->GetOutputFileName();
-        }
-        if (fOutputFiles.Length()) fOutputFiles += " ";
-        fOutputFiles += filename;
-      }
-   }
    WriteAnalysisFile();   
    WriteAnalysisMacro();
    WriteExecutable();
@@ -999,7 +1007,7 @@ void AliAnalysisAlien::StartAnalysis(Long64_t /*nentries*/, Long64_t /*firstEntr
          output_file = str->GetString();
          Int_t index = output_file.Index("@");
          if (index > 0) output_file.Remove(index);         
-         gSystem->Exec(Form("rm %s", output_file.Data()));
+         if (!gSystem->AccessPathName(output_file)) gSystem->Exec(Form("rm %s", output_file.Data()));
       }
       delete list;
       gSystem->Exec(Form("bash %s 2>stderr", fExecutable.Data()));
@@ -1110,9 +1118,6 @@ void AliAnalysisAlien::WriteAnalysisMacro()
          out << "   gSystem->Load(\"libAOD\");" << endl;
          out << "   gSystem->Load(\"libANALYSIS\");" << endl;
          out << "   gSystem->Load(\"libANALYSISalice\");" << endl << endl;
-         out << "// include path (remove if using par files)" << endl;
-         out << "   gROOT->ProcessLine(\".include $ALICE_ROOT/include\");" << endl;
-         if (fIncludePath.Length()) out << "   gSystem->AddIncludePath(\"" << fIncludePath.Data() << "\");" << endl << endl;
       } else {
          out << "// Compile all par packages" << endl;
          TIter next(fPackages);
@@ -1120,6 +1125,9 @@ void AliAnalysisAlien::WriteAnalysisMacro()
          while ((obj=next())) 
             out << "   if (!SetupPar(\"" << obj->GetName() << "\")) return;" << endl;
       }   
+      out << "// include path" << endl;
+      if (fIncludePath.Length()) out << "   gSystem->AddIncludePath(\"" << fIncludePath.Data() << "\");" << endl;
+      out << "   gSystem->AddIncludePath(\"-I$ALICE_ROOT/include\");" << endl << endl;
       if (fAdditionalLibs.Length()) {
          out << "// Add aditional AliRoot libraries" << endl;
          TObjArray *list = fAdditionalLibs.Tokenize(" ");
index 950f601df2356dc7e902e5dabe4d2ae30c50aaf2..a743a77f57ada00c3b2e306b9dd2e9c430ad4e3a 100644 (file)
@@ -59,6 +59,7 @@ public:
    virtual void        SetMasterResubmitThreshold(Int_t percentage)      {fMasterResubmitThreshold = percentage;}
    virtual void        SetNtestFiles(Int_t nfiles)                       {fNtestFiles = nfiles;}
    virtual void        SetJDLName(const char *name="analysis.jdl")       {fJDLName = name;}
+   virtual void        SetPreferedSE(const char *se)                     {fCloseSE = se;}
 
    TGridJDL           *GetGridJDL() {return fGridJDL;}
 //Utilities
index e35774adfa77619c0acef6847ee71bc096cb773a..1c0740f0d5e556f77099b6062b1ea2f31920efaf 100644 (file)
@@ -69,6 +69,7 @@ enum EPluginRunMode {
    virtual void        SetMasterResubmitThreshold(Int_t percentage)      = 0;
    virtual void        SetNtestFiles(Int_t nfiles)                       = 0;
    virtual void        SetJDLName(const char *name="analysis.jdl")       = 0;
+   virtual void        SetPreferedSE(const char *se)                     = 0;
    
  // Set run mode.  Can be "full", "test", "offline", "submit" or "merge"
    virtual void        SetRunMode(const char *mode="full");