Exemple #1
0
// ======================================
// ===== ALIEN PLUGIN CONFIGURATION =====
// ======================================
//
// This macro configures an AliEn plugin in order to launch a job
// which runs a task from the resonance package on a list of runs
// which are processed separately.
//
// All the possible configuration parameters are arguments
// of the macro function, even if most of them have default
// values which the user will rarely change.
//
// The macro tries to synchronize some output names, using
// a unique name ('analysisName') to define all files that
// describe the output, the analysis macros/executables/JDL.
//
// Since the run mode can be more variable than the config
// it is not set here, but it is required in the run macro
// which uses the plugin.
//
// Considered that the arguments are many, they are explained
// inside the list of arguments in the macro definition.
// In ALL cases where a list of strings must be provided, its
// elements must be separated by a blank character.
//
AliAnalysisAlien* PluginByRunProof
(
   // all parameters which could often be customized
   // are placed at the beginning of the macro, while
   // all others can stay there with their default values:
   // -- analysisName   --> common name used for naming all analysis related files
   // -- dataset        --> dataset to be processed
   // -- testFile       --> used for test mode only
   // -- clusterName    --> PROOF cluster to be used
   const char *dataSet,
   const char *testFile,
   const char *clusterName,
   
   // -- proofReset     --> require or not the PROOF reset
   // -- alirootMode    --> the way AliROOT library are loaded
   // -- clearPack      --> to clear or not the PAR libraries
   Bool_t      proofReset  = kFALSE,
   const char *alirootMode = "default",
   Bool_t      clearPack   = kFALSE,

   // standard package versions
   const char *rootVersion    = "v5-28-00a",
   const char *aliVersion     = "v4-21-17a-AN"
)
{
   // create plugin object
   // with specifications which apply to a run-by-run execution
   // this creates by default also the job structure for merging
   AliAnalysisAlien *plugin = new AliAnalysisAlien;

   // package versions
   plugin->SetROOTVersion(rootVersion);
   plugin->SetAliROOTVersion(aliVersion);

   // additional libraries/includes
   //plugin->SetAdditionalLibs("libTENDER.so TENDERSupplies.par libEventMixing.so libPWG2resonances.so");
   plugin->SetAdditionalLibs("libEventMixing.so PWG2resonances.par");
   
   // PROOF-specific settings
   plugin->SetProofCluster(clusterName);
   plugin->SetProofDataSet(dataSet);
   plugin->SetProofReset(proofReset);
   plugin->SetProofConnectGrid(kTRUE);
   plugin->SetAliRootMode(alirootMode);
   plugin->SetClearPackages(clearPack);
   plugin->SetFileForTestMode(testFile);

   // the end!
   return plugin;
}
//______________________________________________________________________________
AliAnalysisGrid* CreateAlienHandler(const char *taskname, const char *gridmode,
                                    const char *proofcluster, const char *proofdataset)
{
  AliAnalysisAlien *plugin = new AliAnalysisAlien();
  // Set the run mode (can be "full", "test", "offline", "submit" or "terminate")
  plugin->SetRunMode(gridmode);
  
  // Set versions of used packages
  
  plugin->SetAPIVersion("V1.1x");
  plugin->SetROOTVersion("v5-34-08");
  plugin->SetAliROOTVersion("vAN-20140915");
  plugin->SetExecutableCommand("aliroot -b -q");
  
  // Declare input data to be processed.
  
  // Method 1: Create automatically XML collections using alien 'find' command.
  // Define production directory LFN
  //    plugin->SetGridDataDir("/alice/data/2010/LHC10h");
  
  // plugin->SetGridDataDir(" /alice/data/2011/LHC11h_2/"); //sim
  // plugin->SetDataPattern("pass2/*AliAOD.root"); // sim
  
  plugin->SetGridDataDir("/alice/data/2011/LHC11h_2/"); //sim
  plugin->SetDataPattern("*/pass2/*AliESDs.root"); // sim
  plugin->SetRunPrefix("000");   // real data
  
  Int_t runlist[] = {                                                               // Counter
    170309, 170308, 170306, 170270, 170269, 170268, 170230, 170228, 170204, 170203, // 10
    170193, 170163, 170159, 170155, 170081, 170027, 169859, 169858, 169855, 169846, // 20
    169838, 169837, 169835, 169417, 169415, 169411, 169238, 169167, 169160, 169156, // 30
    169148, 169145, 169144, 169138, 169094, 169091, 169035, 168992, 168988, 168826, // 40
    168777, 168514, 168512, 168511, 168467, 168464, 168460, 168458, 168362, 168361, // 50
    168342, 168341, 168325, 168322, 168311, 168310, 167988, 167987                  // 58
  };
  
  for(Int_t i = 0; i < 9; i++)
    plugin->AddRunNumber(runlist[i]);

  plugin->SetNrunsPerMaster(3);
  plugin->SetOutputToRunNo();
  
  
  // Method 2: Declare existing data files (raw collections, xml collections, root file)
  //   plugin->AddDataFile("/alice/data/2008/LHC08c/000057657/raw/Run57657.Merged.RAW.tag.root");
  
  // Define alien work directory where all files will be copied. Relative to alien $HOME.
  plugin->SetGridWorkingDir(taskname);
  
  // Declare alien output directory. Relative to working directory.
  plugin->SetGridOutputDir("output"); // In this case will be $HOME/taskname/out
  
//  plugin->SetAdditionalLibs("libTree.so libGeom.so libPhysics.so libVMC.so libMinuit.so libSTEERBase.so libESD.so libAOD.so  libANALYSIS.so libOADB.so libANALYSISalice.so libCORRFW.so libPWGHFbase.so libPWGflowBase.so libPWGflowTasks.so libPWGHFvertexingHF.so");
  
  // plugin->SetAdditionalLibs("libCORRFW.so libPWGHFbase.so libPWGflowBase.so libPWGflowTasks.so libPWGHFvertexingHF.so");
  
  plugin->SetAnalysisSource("AliAnalysisTaskFlowd.cxx");
  //plugin->SetAdditionalLibs("AliAnalysisTaskFlowd.h AliAnalysisTaskFlowd.cxx ");
  cout<<"-->>>>>>>>>>>>>>>>>>>>>>>>> 1"<<endl;
  
  // Declare the analysis source files names separated by blancs. To be compiled runtime
  // using ACLiC on the worker nodes.
  //plugin->SetAdditionalLibs("libPWGHFbase.so libPWGflowBase.so libPWGflowTasks.so libPWGHFvertexingHF.so AliAODMuonReplicator0.so");
  
  cout<<"-->>>>>>>>>>>>>>>>>>>>>>>>> 2"<<endl;
  // plugin->SetAdditionalLibs("libTree.so libGeom.so libPhysics.so libVMC.so libMinuit.so libSTEERBase.so libESD.so libAOD.so libANALYSIS.so libOADB.so libANALYSISalice.so libCORRFW.so libPWGHFbase.so libPWGflowBase.so libPWGflowTasks.so libPWGHFvertexingHF.so");
  
  // plugin->SetAnalysisSource("AliAnalysisTaskESDMuonFilterO.cxx");
  //plugin->SetAnalysisSource("AliAODMuonReplicator0.cxx");
  
  // Declare all libraries (other than the default ones for the framework. These will be
  // loaded by the generated analysis macro. Add all extra files (task .cxx/.h) here.
  // plugin->SetAdditionalLibs("AliAODMuonReplicator0_cxx.so");
  // plugin->SetAdditionalLibs("AliAnalysisTaskESDMuonFilterO_cxx.so");
  
  //questo
  plugin->SetAdditionalLibs("libSTEERBase.so libESD.so AliAnalysisTaskFlowd.h AliAnalysisTaskFlowd.cxx libPWGflowBase.so libPWGflowTasks.so libPWGHFbase.so libPWGHFvertexingHF.so");
  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/STEER -I$ALICE_ROOT/STEER/STEERBase -I$ALICE_ROOT/STEER/ESD -I$ALICE_ROOT/STEER/AOD -I$ALICE_ROOT/TRD -I$ALICE_ROOT/macros -I$ALICE_ROOT/ANALYSIS  -I$ALICE_ROOT/OADB -I$ALICE_ROOT/PWGHF -I$ALICE_ROOT/PWGHF/base -I$ALICE_ROOT/PWGHF/vertexingHF -I$ALICE_ROOT/PWG/FLOW/Base -I$ALICE_ROOT/PWG/FLOW/Tasks -g");
  
  
  // plugin->SetAdditionalLibs("AliAODMuonReplicator0.h AliAODMuonReplicator0.cxx");
  // plugin->SetAdditionalLibs("AliAnalysisTaskESDMuonFilterO.h AliAnalysisTaskESDMuonFilterO.cxx");
  
  //plugin->SetAdditionalLibs("AliAODMuonReplicator0.h AliAODMuonReplicator0.cxx AliAnalysisTaskESDMuonFilterO.h AliAnalysisTaskESDMuonFilterO.cxx");
  
  cout<<"-->>>>>>>>>>>>>>>>>>>>>>>>> 3"<<endl;
	
  // plugin->SetAdditionalLibs("AliAODMuonReplicator0.h AliAODMuonReplicator0.cxx");
  
  // plugin->SetAdditionalLibs("AliAnalysisTaskESDMuonFilterO.h AliAnalysisTaskESDMuonFilterO.cxx");
  
  // Declare the output file names separated by blancs.
  // (can be like: file.root or file.root@ALICE::Niham::File)
  // To only save certain files, use SetDefaultOutputs(kFALSE), and then
  // SetOutputFiles("list.root other.filename") to choose which files to save
  plugin->SetDefaultOutputs();
  //plugin->SetOutputFiles("list.root");
  
  // Optionally set a name for the generated analysis macro (default MyAnalysis.C)
  plugin->SetAnalysisMacro(Form("%s.C",taskname));
  
  // Optionally set maximum number of input files/subjob (default 100, put 0 to ignore)
  plugin->SetSplitMaxInputFileNumber(10);
  
  // Optionally modify the executable name (default analysis.sh)
  plugin->SetExecutable(Form("%s.sh",taskname));
  
  // set number of test files to use in "test" mode
  plugin->SetNtestFiles(1);
  
  // file containing a list of chuncks to be used for testin
  plugin->SetFileForTestMode("testdata");
  
  // Optionally resubmit threshold.
  plugin->SetMasterResubmitThreshold(90);
  
  // Optionally set time to live (default 30000 sec)
  plugin->SetTTL(30000);
  
  // Optionally set input format (default xml-single)
  plugin->SetInputFormat("xml-single");
  
  // Optionally modify the name of the generated JDL (default analysis.jdl)
  plugin->SetJDLName(Form("%s.jdl",taskname));
  
  // Optionally modify job price (default 1)
  plugin->SetPrice(1);
  
  // Optionally modify split mode (default 'se')
  plugin->SetSplitMode("se");
  
  //----------------------------------------------------------
  //---      PROOF MODE SPECIFIC SETTINGS         ------------
  //----------------------------------------------------------
  // Proof cluster
  plugin->SetProofCluster(proofcluster);
  // Dataset to be used
  plugin->SetProofDataSet(proofdataset);
  // May need to reset proof. Supported modes: 0-no reset, 1-soft, 2-hard
  plugin->SetProofReset(0);
  // May limit number of workers
  plugin->SetNproofWorkers(0);
  // May limit the number of workers per slave
  plugin->SetNproofWorkersPerSlave(1);
  // May use a specific version of root installed in proof
  plugin->SetRootVersionForProof("current");
  // May set the aliroot mode. Check http://aaf.cern.ch/node/83
  plugin->SetAliRootMode("default"); // Loads AF libs by default
  // May request ClearPackages (individual ClearPackage not supported)
  plugin->SetClearPackages(kFALSE);
  // Plugin test mode works only providing a file containing test file locations, used in "local" mode also
  plugin->SetFileForTestMode("files.txt"); // file should contain path name to a local directory containg *ESDs.root etc
  // Request connection to alien upon connection to grid
  plugin->SetProofConnectGrid(kFALSE);
  
  cout<<"-->>>>>>>>>>>>>>>>>>>>>>>>> 4"<<endl;
	
  
  return plugin;
  
  cout<<"-->>>>>>>>>>>>>>>>>>>>>>>>> 5"<<endl;
	
}
//______________________________________________________________________________
AliAnalysisGrid* CreateAlienHandler(Bool_t bAOD, Int_t bunchN, const char *taskname, const char *gridmode, const char *proofcluster, const char *proofdataset)
{
    AliAnalysisAlien *plugin = new AliAnalysisAlien();
    // Set the run mode (can be "full", "test", "offline", "submit" or "terminate")
    plugin->SetRunMode(gridmode);

    // Set versions of used packages
    plugin->SetAPIVersion("V1.1x");
    plugin->SetROOTVersion("v5-34-08");
    plugin->SetAliROOTVersion("v5-05-19-AN");

    // Declare input data to be processed.

    // Method 1: Create automatically XML collections using alien 'find' command.
    // Define production directory LFN
    plugin->SetGridDataDir("/alice/data/2010/LHC10h/");
    // On real reconstructed data:
    // plugin->SetGridDataDir("/alice/data/2009/LHC09d");

    // Set data search pattern
    //plugin->SetDataPattern("*ESDs.root"); // THIS CHOOSES ALL PASSES
    // Data pattern for reconstructed data
    if(!bAOD){
      plugin->SetDataPattern("*ESDs/pass2/*ESDs.root"); // CHECK LATEST PASS OF DATA SET IN ALIENSH
    } 
    else{
      plugin->SetDataPattern("*ESDs/pass2/AOD086/*/AliAOD.root");
    }

    plugin->SetRunPrefix("000");   // real data
    // ...then add run numbers to be considered
    //plugin->SetRunRange(114917,115322);

    if(bunchN==0){
      plugin->AddRunNumber(137366);
    }
    
    //bunch1
    else if(bunchN == 1){
      plugin->AddRunNumber(139510);
      plugin->AddRunNumber(139507);
      plugin->AddRunNumber(139505);
      plugin->AddRunNumber(139503); 
      plugin->AddRunNumber(139465); 
      plugin->AddRunNumber(139438);
      plugin->AddRunNumber(139437);
      plugin->AddRunNumber(139360); 
      plugin->AddRunNumber(139329);
      plugin->AddRunNumber(139328); 
    }

    //bunch2
    else if(bunchN == 2){
      plugin->AddRunNumber(139314); 
      plugin->AddRunNumber(139310);
      plugin->AddRunNumber(139309); 
      plugin->AddRunNumber(139173); 
      plugin->AddRunNumber(139107); 
      plugin->AddRunNumber(139105); 
      plugin->AddRunNumber(139038); 
      plugin->AddRunNumber(139037); 
      plugin->AddRunNumber(139036); 
      plugin->AddRunNumber(139029); 
      plugin->AddRunNumber(139028); 
      plugin->AddRunNumber(138872); 
      plugin->AddRunNumber(138871); 
      plugin->AddRunNumber(138870); 
      plugin->AddRunNumber(138837); 
      plugin->AddRunNumber(138732); 
      plugin->AddRunNumber(138730);
      plugin->AddRunNumber(138666);
      plugin->AddRunNumber(138662); 
      plugin->AddRunNumber(138653); 
    }

    else if(bunchN == 3){
      plugin->AddRunNumber(138652);
      plugin->AddRunNumber(138638);
      plugin->AddRunNumber(138624); 
      plugin->AddRunNumber(138621); 
      plugin->AddRunNumber(138583); 
      plugin->AddRunNumber(138582); 
      plugin->AddRunNumber(138579); 
      plugin->AddRunNumber(138578);
      plugin->AddRunNumber(138534);
      plugin->AddRunNumber(138469); 
    }

    else if(bunchN == 4){
      
      plugin->AddRunNumber(138442);
      plugin->AddRunNumber(138439);
      plugin->AddRunNumber(138438);
      plugin->AddRunNumber(138396); 
      plugin->AddRunNumber(138364); 
      plugin->AddRunNumber(138275); 
      plugin->AddRunNumber(138225); 
      plugin->AddRunNumber(138201);
      plugin->AddRunNumber(138197); 
      plugin->AddRunNumber(138192); 
    }

    else if(bunchN == 5){

      plugin->AddRunNumber(138190);
      plugin->AddRunNumber(137848); 
      plugin->AddRunNumber(137844); 
      plugin->AddRunNumber(137752); 
      plugin->AddRunNumber(137751); 
      plugin->AddRunNumber(137724); 
      plugin->AddRunNumber(137722); 
      plugin->AddRunNumber(137718); 
      plugin->AddRunNumber(137704); 
      plugin->AddRunNumber(137693);
    }

    else if(bunchN == 6){

      plugin->AddRunNumber(137692); 
      plugin->AddRunNumber(137691); 
      plugin->AddRunNumber(137686); 
      plugin->AddRunNumber(137685); 
      plugin->AddRunNumber(137639); 
      plugin->AddRunNumber(137638);
      plugin->AddRunNumber(137608); 
      plugin->AddRunNumber(137595);
      plugin->AddRunNumber(137549);
      plugin->AddRunNumber(137546); 

    }

    else if(bunchN == 7){

      plugin->AddRunNumber(137544); 
      plugin->AddRunNumber(137541); 
      plugin->AddRunNumber(137539); 
      plugin->AddRunNumber(137531); 
      plugin->AddRunNumber(137530); 
      plugin->AddRunNumber(137443); 
      plugin->AddRunNumber(137441); 
      plugin->AddRunNumber(137440); 
      plugin->AddRunNumber(137439); 
      plugin->AddRunNumber(137434); 

    }

    else if(bunchN == 8){

      plugin->AddRunNumber(137432); 
      plugin->AddRunNumber(137431); 
      plugin->AddRunNumber(137430); 
      plugin->AddRunNumber(137366); 
      plugin->AddRunNumber(137243); 
      plugin->AddRunNumber(137236);
      plugin->AddRunNumber(137235);
      plugin->AddRunNumber(137232); 
      plugin->AddRunNumber(137231); 
      plugin->AddRunNumber(137162); 
      plugin->AddRunNumber(137161);
    }

    else{

      stderr<<"BUNCH NOT THERE"<<endl;
      return NULL;

    }

    //plugin->AddRunList("139510, 139507, 139505, 139503, 139465, 139438, 139437, 139360, 139329, 139328, 139314, 139310, 139309, 139173, 139107, 139105, 139038, 139037, 139036, 139029, 139028, 138872, 138871, 138870, 138837, 138732, 138730, 138666, 138662, 138653, 138652, 138638, 138624, 138621, 138583, 138582, 138579, 138578, 138534, 138469, 138442, 138439, 138438, 138396, 138364, 138275, 138225, 138201, 138197, 138192, 138190, 137848, 137844, 137752, 137751, 137724, 137722, 137718, 137704, 137693, 137692, 137691, 137686, 137685, 137639, 137638, 137608, 137595, 137549, 137546, 137544, 137541, 137539, 137531, 137530, 137443, 137441, 137440, 137439, 137434, 137432, 137431, 137430, 137366, 137243, 137236, 137235, 137232, 137231, 137162, 137161");





    plugin->SetNrunsPerMaster(1);
    plugin->SetOutputToRunNo();
    // comment out the next line when using the "terminate" option, unless
    // you want separate merged files for each run
    plugin->SetMergeViaJDL();

    // Method 2: Declare existing data files (raw collections, xml collections, root file)
    // If no path mentioned data is supposed to be in the work directory (see SetGridWorkingDir())
    // XML collections added via this method can be combined with the first method if
    // the content is compatible (using or not tags)
    //   plugin->AddDataFile("tag.xml");
    //   plugin->AddDataFile("/alice/data/2008/LHC08c/000057657/raw/Run57657.Merged.RAW.tag.root");

    // Define alien work directory where all files will be copied. Relative to alien $HOME.
    plugin->SetGridWorkingDir(taskname);

    // Declare alien output directory. Relative to working directory.
    plugin->SetGridOutputDir("out"); // In this case will be $HOME/taskname/out

   // Declare the analysis source files names separated by blancs. To be compiled runtime
    // using ACLiC on the worker nodes.
    plugin->SetAnalysisSource("AliBalance.cxx AliAnalysisTaskBF.cxx");

    // Declare all libraries (other than the default ones for the framework. These will be
    // loaded by the generated analysis macro. Add all extra files (task .cxx/.h) here.
    //plugin->AddIncludePath("-I.");
    //plugin->SetAdditionalLibs("libPWGCFebye.so");
    plugin->SetAdditionalLibs("AliBalance.cxx AliBalance.h AliAnalysisTaskBF.cxx AliAnalysisTaskBF.h");

     // Declare the output file names separated by blancs.
    // (can be like: file.root or file.root@ALICE::Niham::File)
    // To only save certain files, use SetDefaultOutputs(kFALSE), and then
    // SetOutputFiles("list.root other.filename") to choose which files to save
    plugin->SetDefaultOutputs();
    //plugin->SetOutputFiles("list.root");

    // Optionally set a name for the generated analysis macro (default MyAnalysis.C)
    plugin->SetAnalysisMacro(Form("%s.C",taskname));

    // Optionally set maximum number of input files/subjob (default 100, put 0 to ignore)
    plugin->SetSplitMaxInputFileNumber(100);

    // Optionally modify the executable name (default analysis.sh)
    plugin->SetExecutable(Form("%s.sh",taskname));

    // set number of test files to use in "test" mode
    plugin->SetNtestFiles(1);

    // Optionally resubmit threshold.
    plugin->SetMasterResubmitThreshold(90);

    // Optionally set time to live (default 30000 sec)
    plugin->SetTTL(90000);

    // Optionally set input format (default xml-single)
    plugin->SetInputFormat("xml-single");

    // Optionally modify the name of the generated JDL (default analysis.jdl)
    plugin->SetJDLName(Form("%s.jdl",taskname));

    // Optionally modify job price (default 1)
    plugin->SetPrice(1);      

    // Optionally modify split mode (default 'se')    
    plugin->SetSplitMode("se");

    //plugin->SetUseSubmitPolicy();
    //plugin->SetKeepLogs();
    
    //----------------------------------------------------------
    //---      PROOF MODE SPECIFIC SETTINGS         ------------
    //---------------------------------------------------------- 
    // Proof cluster
    plugin->SetProofCluster(proofcluster);
    // Dataset to be used   
    plugin->SetProofDataSet(proofdataset);
    // May need to reset proof. Supported modes: 0-no reset, 1-soft, 2-hard
    plugin->SetProofReset(0);
    // May limit number of workers
    plugin->SetNproofWorkers(0);
    // May limit the number of workers per slave
    plugin->SetNproofWorkersPerSlave(1);   
    // May use a specific version of root installed in proof
    plugin->SetRootVersionForProof("current");
    // May set the aliroot mode. Check http://aaf.cern.ch/node/83 
    plugin->SetAliRootMode("default"); // Loads AF libs by default
    // May request ClearPackages (individual ClearPackage not supported)
    plugin->SetClearPackages(kFALSE);
    // Plugin test mode works only providing a file containing test file locations, used in "local" mode also
    plugin->SetFileForTestMode("files.txt"); // file should contain path name to a local directory containg *ESDs.root etc
    // Request connection to alien upon connection to grid
    plugin->SetProofConnectGrid(kFALSE);

    plugin->Print();

    return plugin;
}