]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG3/vertexingHF/RunAnalysisAODVertexingHF.C
Better handling of preferred storage
[u/mrichter/AliRoot.git] / PWG3 / vertexingHF / RunAnalysisAODVertexingHF.C
index 7040e14a74566ae65d3fb111cc801ac43b22e167..a574f9790756eeab25790be1bbc2c20fca462657 100644 (file)
@@ -1,4 +1,5 @@
 class AliAnalysisGrid;\r
+TString mySE="ALICE::CNAF::SE";\r
 \r
 void RunAnalysisAODVertexingHF()\r
 {\r
@@ -13,14 +14,21 @@ void RunAnalysisAODVertexingHF()
   // "grid" mode added by R.Bala, bala@to.infn.it\r
   //\r
 \r
+  gSystem->Setenv("alien_CLOSE_SE",mySE.Data());\r
+\r
+  gSystem->SetIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT -I$ALICE_ROOT/include -I$ALICE_ROOT/ITS -I$ALICE_ROOT/TPC -I$ALICE_ROOT/CONTAINERS -I$ALICE_ROOT/STEER -I$ALICE_ROOT/TRD -I$ALICE_ROOT/macros -I$ALICE_ROOT/ANALYSIS -I$ALICE_ROOT/PWG3 -I$ALICE_ROOT/PWG3/vertexingHF -g"); \r
   //\r
-  TString analysisMode = "local"; // "local", "grid", or "proof" (not yet)\r
-  TString inputMode    = "list"; // "list", "xml", or "dataset" (not yet)\r
+  TString trainName = "Test";\r
+  TString analysisMode = "grid"; // "local", "grid", or "proof"\r
+  TString inputMode    = "list"; // "list", "xml", or "dataset"\r
   Long64_t nentries=1234567890,firstentry=0;\r
   Bool_t useParFiles=kFALSE;\r
-  Bool_t useAlienPlugin=kFALSE;\r
-  TString pluginmode="full";\r
+  Bool_t useAlienPlugin=kTRUE;\r
+  TString pluginmode="test";\r
+  Bool_t saveProofToAlien=kFALSE;\r
+  TString proofOutdir = "";\r
   TString loadMacroPath="$ALICE_ROOT/PWG3/vertexingHF/";\r
+  //TString loadMacroPath="./"; // this is normally needed for CAF\r
   //\r
 \r
   if(analysisMode=="grid") {\r
@@ -28,10 +36,27 @@ void RunAnalysisAODVertexingHF()
     TGrid::Connect("alien://");\r
   } else if(analysisMode=="proof") {\r
     // Connect to the PROOF cluster\r
-    printf("PROOF mode not yet functional..\n");\r
-    return;\r
+    if(inputMode!="dataset") {printf("Input mode must be dataset, for proof analysis\n"); return;}\r
+    gEnv->SetValue("XSec.GSI.DelegProxy","2");\r
     TProof::Open("alicecaf");\r
     //TProof::Reset("alicecaf");\r
+    if(saveProofToAlien) {\r
+      TGrid::Connect("alien://");\r
+      if(gGrid) {\r
+       TString homedir = gGrid->GetHomeDirectory();\r
+       TString workdir = homedir + trainName;\r
+       if(!gGrid->Cd(workdir)) {\r
+         gGrid->Cd(homedir);\r
+         if(gGrid->Mkdir(workdir)) {\r
+           gGrid->Cd(trainName);\r
+           ::Info("VertexingTrain::Connect()", "Directory %s created", gGrid->Pwd());\r
+         }\r
+       }          \r
+       gGrid->Mkdir("proof_output");\r
+       gGrid->Cd("proof_output");\r
+       proofOutdir = Form("alien://%s", gGrid->Pwd());\r
+      } \r
+    }\r
   }\r
 \r
 \r
@@ -47,12 +72,16 @@ void RunAnalysisAODVertexingHF()
     gSystem->Load("libVMC.so");    \r
     // Enable the needed packages\r
     //gProof->ClearPackages();\r
+    TString parDir="/afs/cern.ch/user/d/dainesea/code/";\r
+    TString parFile;\r
     if(!useParFiles) {\r
-      gProof->UploadPackage("AF-v4-16");\r
-      gProof->EnablePackage("AF-v4-16");\r
+      gProof->UploadPackage("AF-v4-17");\r
+      gProof->EnablePackage("AF-v4-17");\r
+      // --- Enable the PWG3vertexingHF Package\r
+      parFile="PWG3vertexingHF.par"; parFile.Prepend(parDir.Data());\r
+      gProof->UploadPackage(parFile.Data());\r
+      gProof->EnablePackage("PWG3vertexingHF");\r
     } else {\r
-      TString parDir="/afs/cern.ch/user/d/dainesea/code/";\r
-      TString parFile;\r
       // --- Enable the STEERBase Package\r
       parFile="STEERBase.par"; parFile.Prepend(parDir.Data());\r
       gProof->UploadPackage(parFile.Data());\r
@@ -108,43 +137,47 @@ void RunAnalysisAODVertexingHF()
 \r
   // Create Alien plugin, if requested\r
   if(useAlienPlugin) {  \r
+    if(analysisMode!="grid") {printf("Analysis mode must be grid, to use alien plugin\n"); return;}\r
     AliAnalysisGrid *alienHandler = CreateAlienHandler(pluginmode,useParFiles);  \r
     if(!alienHandler) return;\r
   }\r
 \r
 \r
   //-------------------------------------------------------------------\r
-  // Prepare input chain\r
+  // Prepare input\r
   TChain *chainAOD = 0;\r
   TString dataset; // for proof\r
 \r
   if(!useAlienPlugin) {\r
     TString makeAODInputChain="MakeAODInputChain.C"; makeAODInputChain.Prepend(loadMacroPath.Data());\r
-    gROOT->LoadMacro(makeAODInputChain.Data());\r
     if(inputMode=="list") {\r
       // Local files\r
+      gROOT->LoadMacro(makeAODInputChain.Data());\r
       chainAOD = MakeAODInputChain();// with this it reads ./AliAOD.root and ./AliAOD.VertexingHF.root\r
       //chainAOD = MakeAODInputChain("alien:///alice/cern.ch/user/r/rbala/newtrain/out_lhc08x/180100/",1,1);\r
     } else if(inputMode=="xml") {\r
       // xml\r
+      gROOT->LoadMacro(makeAODInputChain.Data());\r
       chainAOD = MakeAODInputChain("collection_aod.xml","collection_aodHF.xml");\r
     } else if(inputMode=="dataset") {\r
       // CAF dataset\r
-      //gProof->ShowDataSet();\r
-      dataset="/ITS/dainesea/AODVertexingHF_LHC08x_180100_small";\r
-      chainAOD = MakeAODInputChainCAF(dataset.Data());\r
+      //gProof->ShowDataSets();\r
+      dataset="/ITS/dainesea/AODVertexingHF_LHC08x_180100";\r
     }\r
   }\r
 \r
   // Create the analysis manager\r
   AliAnalysisManager *mgr  = new AliAnalysisManager("My Manager","My Manager");\r
-  mgr->SetDebugLevel(10);\r
+  mgr->SetDebugLevel(0);\r
   // Connect plug-in to the analysis manager\r
   if(useAlienPlugin) mgr->SetGridHandler(alienHandler);\r
 \r
-\r
   // Input\r
   AliAODInputHandler *inputHandler = new AliAODInputHandler();\r
+  if(analysisMode=="proof") {\r
+    inputHandler->AddFriend("AliAOD.VertexingHF.root");\r
+    if(saveProofToAlien) mgr->SetSpecialOutputLocation(proofOutdir);\r
+  }\r
   mgr->SetInputEventHandler(inputHandler);\r
   //-------------------------------------------------------------------\r
 \r
@@ -157,35 +190,57 @@ void RunAnalysisAODVertexingHF()
   taskName="AddTaskCompareHF.C"; taskName.Prepend(loadMacroPath.Data());\r
   gROOT->LoadMacro(taskName.Data());\r
   AliAnalysisTaskSECompareHF *cmpTask = AddTaskCompareHF();\r
+  \r
+  taskName="AddTaskD0Mass.C"; taskName.Prepend(loadMacroPath.Data());\r
+  gROOT->LoadMacro(taskName.Data());\r
+  AliAnalysisTaskSED0Mass *d0massTask = AddTaskD0Mass();\r
 \r
+  \r
   taskName="AddTaskDplus.C"; taskName.Prepend(loadMacroPath.Data());\r
   gROOT->LoadMacro(taskName.Data());\r
   AliAnalysisTaskSEDplus *dplusTask = AddTaskDplus();\r
-\r
+  \r
   //taskName="AddTaskSelectHF.C"; taskName.Prepend(loadMacroPath.Data());\r
   //gROOT->LoadMacro(taskName.Data());\r
   //AliAnalysisTaskSESelectHF *seleTask = AddTaskSelectHF();\r
 \r
-  taskName="AddTaskBkgLikeSign.C"; taskName.Prepend(loadMacroPath.Data());\r
+  taskName="AddTaskBkgLikeSignD0.C"; taskName.Prepend(loadMacroPath.Data());\r
   gROOT->LoadMacro(taskName.Data());\r
-  AliAnalysisTaskSEBkgLikeSignJPSI *lsTask = AddTaskBkgLikeSign();\r
-\r
-  //taskName="AddTaskBtoJPSItoEle.C"; taskName.Prepend(loadMacroPath.Data());\r
-  //gROOT->LoadMacro(taskName.Data());\r
-  //AliAnalysisTaskSEBtoJPSItoEle *jpsiTask = AddTaskBtoJPSItoEle();\r
+  AliAnalysisTaskSEBkgLikeSignD0 *lsD0Task = AddTaskBkgLikeSignD0();\r
 \r
-  //taskName="AddTaskCF.C"; taskName.Prepend(loadMacroPath.Data());\r
-  //gROOT->LoadMacro(taskName.Data());\r
-  //AliCFHeavyFlavourTask *cfTask = AddTaskCF();\r
+  taskName="AddTaskBkgLikeSignJPSI.C"; taskName.Prepend(loadMacroPath.Data());\r
+  gROOT->LoadMacro(taskName.Data());\r
+  AliAnalysisTaskSEBkgLikeSignJPSI *lsJPSITask = AddTaskBkgLikeSignJPSI();\r
 \r
-  //taskName="AddTaskCFMultiVar.C"; taskName.Prepend(loadMacroPath.Data());\r
-  //gROOT->LoadMacro(taskName.Data());\r
-  //AliCFHeavyFlavourTaskMultiVar *cfmvTask = AddTaskCFMultiVar();\r
+  taskName="AddTaskBtoJPSItoEle.C"; taskName.Prepend(loadMacroPath.Data());\r
+  gROOT->LoadMacro(taskName.Data());\r
+  AliAnalysisTaskSEBtoJPSItoEle *jpsiTask = AddTaskBtoJPSItoEle();\r
 \r
-  taskName="AddTaskMultiVarMultiStep.C"; taskName.Prepend(loadMacroPath.Data());\r
+  taskName="AddTaskCFMultiVarMultiStep.C"; taskName.Prepend(loadMacroPath.Data());\r
   gROOT->LoadMacro(taskName.Data());\r
   AliCFHeavyFlavourTaskMultiVarMultiStep *cfmvmsTask = AddTaskCFMultiVarMultiStep();\r
 \r
+  taskName="AddTaskCharmFraction.C"; taskName.Prepend(loadMacroPath.Data());\r
+  gROOT->LoadMacro(taskName.Data());\r
+  // The task is added several times with different settings:\r
+  AliAnalysisTaskCharmFraction *cFractTaskSignal   = AddTaskCharmFraction("d0D0_Signal.root");\r
+  AliAnalysisTaskCharmFraction *cFractTaskNoMCSel  = AddTaskCharmFraction("d0D0NoMCSel.root",kFALSE,kTRUE,kFALSE);\r
+  AliAnalysisTaskCharmFraction *cFractTaskNoMCSel  = AddTaskCharmFraction("d0D0NoMCSel_SideBand.root",kTRUE,kTRUE,kFALSE);\r
+  AliAnalysisTaskCharmFraction *cFractTaskPureBack = AddTaskCharmFraction("d0D0_PureBack.root",kFALSE,kTRUE,kTRUE,kTRUE,kFALSE,kTRUE,kTRUE,kFALSE,kTRUE);\r
+  AliAnalysisTaskCharmFraction *cFractTaskFromB    = AddTaskCharmFraction("d0D0_FromB.root",kFALSE,kTRUE,kTRUE,kFALSE,kTRUE);\r
+\r
+  // attach a private task (not committed)\r
+  // (the files MyTask.h MyTask.cxx AddMyTask.C have to be declared in plugin\r
+  // configuration, see below)\r
+  /*\r
+  if(analysisMode.Data()=="proof") {\r
+    gProof->LoadMacro("MyTask.cxx++g");\r
+  } else {\r
+    gROOT->LoadMacro("MyTask.cxx++g");\r
+  }\r
+  gROOT->LoadMacro("AddMyTask.C");\r
+  MyTask *myTask = AddMyTask();\r
+  */\r
 \r
   //-------------------------------------------------------------------\r
 \r
@@ -197,7 +252,12 @@ void RunAnalysisAODVertexingHF()
   if(!mgr->InitAnalysis()) return;\r
   mgr->PrintStatus();\r
   if(analysisMode=="grid" && !useAlienPlugin) analysisMode="local";\r
-  mgr->StartAnalysis(analysisMode.Data(),chainAOD,nentries,firstentry);\r
+  if(analysisMode!="proof") {\r
+    mgr->StartAnalysis(analysisMode.Data(),chainAOD,nentries,firstentry);\r
+  } else {\r
+    // proof\r
+    mgr->StartAnalysis(analysisMode.Data(),dataset.Data(),nentries,firstentry);\r
+  }\r
 \r
   return;\r
 }\r
@@ -216,17 +276,21 @@ AliAnalysisGrid* CreateAlienHandler(TString pluginmode="test",Bool_t useParFiles
    plugin->SetNtestFiles(1);\r
    // Set versions of used packages\r
    plugin->SetAPIVersion("V2.4");\r
-   plugin->SetROOTVersion("v5-23-02");\r
-   plugin->SetAliROOTVersion("v4-17-00");\r
+   plugin->SetROOTVersion("v5-24-00");\r
+   plugin->SetAliROOTVersion("v4-18-06-AN");\r
    // Declare input data to be processed.\r
    // Method 1: Create automatically XML collections using alien 'find' command.\r
    // Define production directory LFN\r
-   plugin->SetGridDataDir("/alice/cern.ch/user/r/rbala/newtrain/out_lhc08x/");\r
+   //plugin->SetGridDataDir("/alice/cern.ch/user/r/rbala/newtrain/out_lhc08x/");\r
+   //plugin->SetGridDataDir("/alice/cern.ch/user/m/mgheata/analysisESD/output_train_default_28May2009_09h33/");\r
+   plugin->SetGridDataDir("/alice/sim/PDC_09/LHC09a5/AOD1/");\r
    // Set data search pattern\r
    plugin->SetDataPattern("AliAOD.root");\r
    plugin->SetFriendChainName("AliAOD.VertexingHF.root");\r
    // ...then add run numbers to be considered\r
-   plugin->AddRunNumber(180100);\r
+   //plugin->AddRunNumber(529007);\r
+   //  or\r
+   //plugin->SetRunRange(529000,529007);\r
    // Method 2: Declare existing data files (raw collections, xml collections, root file)\r
    // If no path mentioned data is supposed to be in the work directory (see SetGridWorkingDir())\r
    // XML collections added via this method can be combined with the first method if\r
@@ -234,15 +298,15 @@ AliAnalysisGrid* CreateAlienHandler(TString pluginmode="test",Bool_t useParFiles
    //plugin->AddDataFile("/alice/cern.ch/user/r/rbala/newtrain/collection/collection_aod_lhc08w.xml");\r
    //   plugin->AddDataFile("/alice/data/2008/LHC08c/000057657/raw/Run57657.Merged.RAW.tag.root");\r
    // Define alien work directory where all files will be copied. Relative to alien $HOME.\r
-   plugin->SetGridWorkingDir("work");\r
+   plugin->SetGridWorkingDir("lhc09a5_061009");\r
    // Declare alien output directory. Relative to working directory.\r
    plugin->SetGridOutputDir("output"); // In this case will be $HOME/work/output\r
    // Declare the analysis source files names separated by blancs. To be compiled runtime\r
    // using ACLiC on the worker nodes.\r
-   //plugin->SetAnalysisSource("$ALICE_ROOT/PWG3/vertexingHF/AliAnalysisTaskSECompareHF.cxx");\r
+   //plugin->SetAnalysisSource("MyTask.cxx");\r
    // Declare all libraries (other than the default ones for the framework. These will be\r
    // loaded by the generated analysis macro. Add all extra files (task .cxx/.h) here.\r
-   plugin->SetAdditionalLibs("libPWG3vertexingHF.so");\r
+   plugin->SetAdditionalLibs("libPWG3vertexingHF.so libPWG3base.so libPWG3muon.so libPWG4PartCorrBase.so libPWG4PartCorrDep.so MakeAODInputChain.C"/* MyTask.cxx MyTask.h" */);\r
    // use par files\r
    if(useParFiles) {\r
      plugin->EnablePackage("STEERBase.par");\r
@@ -251,11 +315,17 @@ AliAnalysisGrid* CreateAlienHandler(TString pluginmode="test",Bool_t useParFiles
      plugin->EnablePackage("ANALYSIS.par");\r
      plugin->EnablePackage("ANALYSISalice.par");\r
      plugin->EnablePackage("CORRFW.par");\r
+     plugin->EnablePackage("PWG3base.par");\r
      plugin->EnablePackage("PWG3vertexingHF.par");\r
+     plugin->EnablePackage("PWG3muon.par");\r
+     plugin->EnablePackage("PWG4PartCorrBase.par");\r
+     plugin->EnablePackage("PWG4PartCorrDep.par");\r
    }\r
+   plugin->AddIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT -I$ALICE_ROOT/include -I$ALICE_ROOT/ITS -I$ALICE_ROOT/TPC -I$ALICE_ROOT/CONTAINERS -I$ALICE_ROOT/STEER -I$ALICE_ROOT/TRD -I$ALICE_ROOT/macros -I$ALICE_ROOT/ANALYSIS -I$ALICE_ROOT/PWG3 -I$ALICE_ROOT/PWG3/vertexingHF -g");\r
    // Declare the output file names separated by blancs.\r
    // (can be like: file.root or file.root@ALICE::Niham::File)\r
-   plugin->SetOutputFiles("CmpHF.root");\r
+   plugin->SetDefaultOutputs(kTRUE);\r
+   //plugin->SetOutputFiles("output.root CmpHF.root CmpHFnt.root D0InvMass.root InvMassDplus.root InvMassDplus_nt1.root InvMassDplus_nt2.root");\r
    // Optionally define the files to be archived.\r
    //   plugin->SetOutputArchive("log_archive.zip:stdout,stderr@ALICE::NIHAM::File root_archive.zip:*.root@ALICE::NIHAM::File");\r
    plugin->SetOutputArchive("log_archive.zip:stdout,stderr");\r
@@ -278,7 +348,7 @@ AliAnalysisGrid* CreateAlienHandler(TString pluginmode="test",Bool_t useParFiles
    // Optionally modify split mode (default 'se')    \r
    plugin->SetSplitMode("se");\r
    // Optionally set the preferred SE    \r
-   plugin->SetPreferedSE("ALICE::Legnaro::SE");\r
+   plugin->SetPreferedSE(mySE.Data());\r
    \r
    return plugin;\r
 }\r