ROOT logo
#ifndef __CINT__
#include <TSystem.h>
#include <ANALYSIS/AliAnalysisAlien.h>
#endif

AliAnalysisGrid *SetupAnalysisPlugin(TString analysisMode)
{

   AliAnalysisAlien *plugin = new AliAnalysisAlien();

   // Overwrite all generated files, datasets and output results from a previous session
   plugin->SetOverwriteMode();
   // Set the run mode (can be "full", "test", "offline", "submit" or "terminate")
   plugin->SetRunMode(analysisMode.Data());  // VERY IMPORTANT - DECRIBED BELOW

   // seutp aliroot version
   TString alirootVersion = gSystem->GetFromPipe("aliroot --version | awk '{print $3}'");
//   alirootVersion="v5-02-05-AN";
   plugin->SetAliROOTVersion(alirootVersion.Data());
   // adds Proof setting
   MySetupAnalysisPluginProof(plugin,analysisMode);

   // adds AliEn settings
   MySetupAnalysisPluginAliEn(plugin);

   return plugin;
}

void MySetupAnalysisPluginProof(AliAnalysisAlien *plugin,TString analysisMode)
{

   plugin->SetProofParameter("PROOF_UseMergers", "-1");
   if (!analysisMode.CompareTo("full")) plugin->SetProofParameter("PROOF_ForceLocal", "1");
   plugin->SetProofCluster("alice-caf.cern.ch");
//   plugin->SetProofCluster("alice-caf.cern.ch:1099");
//    plugin->SetProofCluster("skaf.saske.sk");
//    plugin->SetProofCluster("skaf.saske.sk:1099");
   plugin->SetProofCluster("kiaf.sdfarm.kr");

   // May need to reset proof. Supported modes: 0-no reset, 1-soft, 2-hard
   plugin->SetProofReset(0);
// May limit the number of workers per slave. If used with SetNproofWorkers, SetParallel(nproofworkers) will be called after connection
//   plugin->SetNproofWorkers(1);
//    plugin->SetNproofWorkersPerSlave(1);
// May request connection to alien upon connection to grid
//    plugin->SetProofConnectGrid(kTRUE);

//    plugin->SetNproofWorkers(10);
// May use a specific version of root installed in proof
//     plugin->SetRootVersionForProof("VO_ALICE@ROOT::v5-28-00d");
//     plugin->SetRootVersionForProof("current");
// May set the aliroot mode. Check http://aaf.cern.ch/node/83
   plugin->SetAliRootMode("default"); // Loads AF libs by default
//     plugin->SetAliRootMode("ALIROOT"); // Loads AF libs by default
// May request ClearPackages (individual ClearPackage not supported)
//    plugin->SetClearPackages();
// Plugin test mode works only providing a file containing test file locations

   // test file
   plugin->SetFileForTestMode("files.txt");

   // dataset
   plugin->SetProofDataSet("/alice/sim/LHC11a10b_000137539_AOD048");

   // list of datasets in txt file
   plugin->SetProofDataSet("ds.txt");

   //++++++++++++++ end PROOF ++++++++++++++++

}

void MySetupAnalysisPluginAliEn(AliAnalysisAlien *plugin)
{

//   plugin->SetAPIVersion("V1.1x");
//   plugin->SetROOTVersion("v5-28-00c");
// //    plugin->SetAliROOTVersion("v4-20-13-AN");
//   plugin->SetExecutableCommand("aliroot -b -q");
//
//
//   // Method 1: Create automatically XML collections using alien 'find' command.
// // Define production directory LFN
//
//   Int_t nRunsPerMaster = 0;
//   Int_t maxRunsPerMaster = 100;
//   TString runs = "";
//   // DATA
//   plugin->SetGridDataDir("/alice/data/2010/LHC10b");
//   plugin->SetDataPattern("*ESDs/pass2/*ESDs.root"); // real data check reco pass and data base directory
//   plugin->SetRunPrefix("000");   // real data
//   runs = "117222, 117220, 117116, 117112, 117109, 117099, 117092, 117063, 117060, 117059, 117053, 117052, 117050, 117048, 116643, 116574, 116571, 116562, 116403, 116402, 116288, 116102, 115414, 115401, 115393, 115193, 115186, 114931";
//   plugin->SetSplitMaxInputFileNumber(1);
// //     // AOD
// //     plugin->SetGridDataDir("/alice/data/2010/LHC10b");
// //     plugin->SetDataPattern("*ESDs/pass2/AOD034/*AliAOD.root");
// //     plugin->SetRunPrefix("000");   // real data
//
// //    plugin->SetDataPattern("*tag.root");  // Use ESD tags (same applies for AOD's)
// // ...then add run numbers to be considered
// //    plugin->AddRunNumber(125020);    // simulated
//
// //    // sim
// //    plugin->SetGridDataDir("/alice/sim/LHC10d4/");
// //    plugin->SetDataPattern("*ESDs.root"); // real data check reco pass and data base directory
// //    plugin->SetRunPrefix("");   // sim data
// //    runs = "120829,120825";
// // //     runs = "120829,120825,120824,120823,120822,120821,120820,120758,120750";
// //    plugin->SetSplitMaxInputFileNumber(10);
//
//   plugin->SetGridDataDir("/alice/data/2010/LHC10h");
//   plugin->SetDataPattern("*ESDs/pass2/*ESDs.root"); // real data check reco pass and data base directory
//   plugin->SetRunPrefix("000");   // real data
//   runs = "137366";
// //    runs = "137366, 138200, 139172";
//   plugin->SetSplitMaxInputFileNumber(100);
//
//
//   // AOD
// //     runs = "117220";
//   TObjArray *array = runs.Tokenize(",");
//   TObjString *str;
//   TString strr, strr2_1, strr2_2;
//   for (Int_t i = 0; i < array->GetEntriesFast(); i++) {
//     str = (TObjString *) array->At(i);
//     strr = str->GetString();
//     if (!strr.IsNull()) {
//       plugin->AddRunNumber(strr.Atoi());
//       nRunsPerMaster++;
//     }
//   }
//
//
//   if (nRunsPerMaster > maxRunsPerMaster) nRunsPerMaster = maxRunsPerMaster;
//   plugin->SetNrunsPerMaster(nRunsPerMaster);
//
// // 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("work/rsn/PbPb/0001/");
// // Declare alien output directory. Relative to working directory.
//   plugin->SetGridOutputDir("output"); // In this case will be $HOME/work/output
// // Declare the analysis source files names separated by blancs. To be compiled runtime
// // using ACLiC on the worker nodes.
// //    plugin->SetAnalysisSource("AliAnalysisTaskCustomMix.cxx");
// //    plugin->SetAdditionalRootLibs("CORRFW PWG2resonances");
// //    plugin->SetAdditionalRootLibs("PWG2resonances");
// //    plugin->SetAdditionalRootLibs("PWG2resonances");
// //
// //    plugin->SetAdditionalLibs("AliAnalysisTaskCustomMix.h AliAnalysisTaskCustomMix.cxx");
// //    plugin->EnablePackage("PWG2resonances");
// //    plugin->EnablePackage("");
// //    plugin->EnablePackage("");
// // 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.
//
// // No need for output file names. Procedure is automatic.
// //   plugin->SetOutputFiles("Pt.ESD.1.root");
// //   plugin->SetDefaultOutputs();
// // No need define the files to be archived. Note that this is handled automatically by the plugin.
// //   plugin->SetOutputArchive("log_archive.zip:stdout,stderr");
// // Set a name for the generated analysis macro (default MyAnalysis.C) Make this unique !
//   plugin->SetAnalysisMacro("AnalysisTest.C");
// // Optionally set maximum number of input files/subjob (default 100, put 0 to ignore). The optimum for an analysis
// // is correlated with the run time - count few hours TTL per job, not minutes !
// //    plugin->SetSplitMaxInputFileNumber(1);
// // Optionally set number of failed jobs that will trigger killing waiting sub-jobs.
// //    plugin->SetMaxInitFailed(5);
// // Optionally resubmit threshold.
//   plugin->SetMasterResubmitThreshold(90);
// // Optionally set time to live (default 30000 sec)
// //    plugin->SetTTL(20000);
//   // 23h 30m
//   plugin->SetTTL(84600);
//
// // Optionally set input format (default xml-single)
//   plugin->SetInputFormat("xml-single");
// // Optionally modify the name of the generated JDL (default analysis.jdl)
//   plugin->SetJDLName("TaskMix.jdl");
// // Optionally modify job price (default 1)
//   plugin->SetPrice(1);
// // Optionally modify split mode (default 'se')
//   plugin->SetSplitMode("se");
// // set number of files to test
//   plugin->SetNtestFiles(2);
//
//   plugin->SetKeepLogs(kTRUE);

}
 SetupAnalysisPlugin.C:1
 SetupAnalysisPlugin.C:2
 SetupAnalysisPlugin.C:3
 SetupAnalysisPlugin.C:4
 SetupAnalysisPlugin.C:5
 SetupAnalysisPlugin.C:6
 SetupAnalysisPlugin.C:7
 SetupAnalysisPlugin.C:8
 SetupAnalysisPlugin.C:9
 SetupAnalysisPlugin.C:10
 SetupAnalysisPlugin.C:11
 SetupAnalysisPlugin.C:12
 SetupAnalysisPlugin.C:13
 SetupAnalysisPlugin.C:14
 SetupAnalysisPlugin.C:15
 SetupAnalysisPlugin.C:16
 SetupAnalysisPlugin.C:17
 SetupAnalysisPlugin.C:18
 SetupAnalysisPlugin.C:19
 SetupAnalysisPlugin.C:20
 SetupAnalysisPlugin.C:21
 SetupAnalysisPlugin.C:22
 SetupAnalysisPlugin.C:23
 SetupAnalysisPlugin.C:24
 SetupAnalysisPlugin.C:25
 SetupAnalysisPlugin.C:26
 SetupAnalysisPlugin.C:27
 SetupAnalysisPlugin.C:28
 SetupAnalysisPlugin.C:29
 SetupAnalysisPlugin.C:30
 SetupAnalysisPlugin.C:31
 SetupAnalysisPlugin.C:32
 SetupAnalysisPlugin.C:33
 SetupAnalysisPlugin.C:34
 SetupAnalysisPlugin.C:35
 SetupAnalysisPlugin.C:36
 SetupAnalysisPlugin.C:37
 SetupAnalysisPlugin.C:38
 SetupAnalysisPlugin.C:39
 SetupAnalysisPlugin.C:40
 SetupAnalysisPlugin.C:41
 SetupAnalysisPlugin.C:42
 SetupAnalysisPlugin.C:43
 SetupAnalysisPlugin.C:44
 SetupAnalysisPlugin.C:45
 SetupAnalysisPlugin.C:46
 SetupAnalysisPlugin.C:47
 SetupAnalysisPlugin.C:48
 SetupAnalysisPlugin.C:49
 SetupAnalysisPlugin.C:50
 SetupAnalysisPlugin.C:51
 SetupAnalysisPlugin.C:52
 SetupAnalysisPlugin.C:53
 SetupAnalysisPlugin.C:54
 SetupAnalysisPlugin.C:55
 SetupAnalysisPlugin.C:56
 SetupAnalysisPlugin.C:57
 SetupAnalysisPlugin.C:58
 SetupAnalysisPlugin.C:59
 SetupAnalysisPlugin.C:60
 SetupAnalysisPlugin.C:61
 SetupAnalysisPlugin.C:62
 SetupAnalysisPlugin.C:63
 SetupAnalysisPlugin.C:64
 SetupAnalysisPlugin.C:65
 SetupAnalysisPlugin.C:66
 SetupAnalysisPlugin.C:67
 SetupAnalysisPlugin.C:68
 SetupAnalysisPlugin.C:69
 SetupAnalysisPlugin.C:70
 SetupAnalysisPlugin.C:71
 SetupAnalysisPlugin.C:72
 SetupAnalysisPlugin.C:73
 SetupAnalysisPlugin.C:74
 SetupAnalysisPlugin.C:75
 SetupAnalysisPlugin.C:76
 SetupAnalysisPlugin.C:77
 SetupAnalysisPlugin.C:78
 SetupAnalysisPlugin.C:79
 SetupAnalysisPlugin.C:80
 SetupAnalysisPlugin.C:81
 SetupAnalysisPlugin.C:82
 SetupAnalysisPlugin.C:83
 SetupAnalysisPlugin.C:84
 SetupAnalysisPlugin.C:85
 SetupAnalysisPlugin.C:86
 SetupAnalysisPlugin.C:87
 SetupAnalysisPlugin.C:88
 SetupAnalysisPlugin.C:89
 SetupAnalysisPlugin.C:90
 SetupAnalysisPlugin.C:91
 SetupAnalysisPlugin.C:92
 SetupAnalysisPlugin.C:93
 SetupAnalysisPlugin.C:94
 SetupAnalysisPlugin.C:95
 SetupAnalysisPlugin.C:96
 SetupAnalysisPlugin.C:97
 SetupAnalysisPlugin.C:98
 SetupAnalysisPlugin.C:99
 SetupAnalysisPlugin.C:100
 SetupAnalysisPlugin.C:101
 SetupAnalysisPlugin.C:102
 SetupAnalysisPlugin.C:103
 SetupAnalysisPlugin.C:104
 SetupAnalysisPlugin.C:105
 SetupAnalysisPlugin.C:106
 SetupAnalysisPlugin.C:107
 SetupAnalysisPlugin.C:108
 SetupAnalysisPlugin.C:109
 SetupAnalysisPlugin.C:110
 SetupAnalysisPlugin.C:111
 SetupAnalysisPlugin.C:112
 SetupAnalysisPlugin.C:113
 SetupAnalysisPlugin.C:114
 SetupAnalysisPlugin.C:115
 SetupAnalysisPlugin.C:116
 SetupAnalysisPlugin.C:117
 SetupAnalysisPlugin.C:118
 SetupAnalysisPlugin.C:119
 SetupAnalysisPlugin.C:120
 SetupAnalysisPlugin.C:121
 SetupAnalysisPlugin.C:122
 SetupAnalysisPlugin.C:123
 SetupAnalysisPlugin.C:124
 SetupAnalysisPlugin.C:125
 SetupAnalysisPlugin.C:126
 SetupAnalysisPlugin.C:127
 SetupAnalysisPlugin.C:128
 SetupAnalysisPlugin.C:129
 SetupAnalysisPlugin.C:130
 SetupAnalysisPlugin.C:131
 SetupAnalysisPlugin.C:132
 SetupAnalysisPlugin.C:133
 SetupAnalysisPlugin.C:134
 SetupAnalysisPlugin.C:135
 SetupAnalysisPlugin.C:136
 SetupAnalysisPlugin.C:137
 SetupAnalysisPlugin.C:138
 SetupAnalysisPlugin.C:139
 SetupAnalysisPlugin.C:140
 SetupAnalysisPlugin.C:141
 SetupAnalysisPlugin.C:142
 SetupAnalysisPlugin.C:143
 SetupAnalysisPlugin.C:144
 SetupAnalysisPlugin.C:145
 SetupAnalysisPlugin.C:146
 SetupAnalysisPlugin.C:147
 SetupAnalysisPlugin.C:148
 SetupAnalysisPlugin.C:149
 SetupAnalysisPlugin.C:150
 SetupAnalysisPlugin.C:151
 SetupAnalysisPlugin.C:152
 SetupAnalysisPlugin.C:153
 SetupAnalysisPlugin.C:154
 SetupAnalysisPlugin.C:155
 SetupAnalysisPlugin.C:156
 SetupAnalysisPlugin.C:157
 SetupAnalysisPlugin.C:158
 SetupAnalysisPlugin.C:159
 SetupAnalysisPlugin.C:160
 SetupAnalysisPlugin.C:161
 SetupAnalysisPlugin.C:162
 SetupAnalysisPlugin.C:163
 SetupAnalysisPlugin.C:164
 SetupAnalysisPlugin.C:165
 SetupAnalysisPlugin.C:166
 SetupAnalysisPlugin.C:167
 SetupAnalysisPlugin.C:168
 SetupAnalysisPlugin.C:169
 SetupAnalysisPlugin.C:170
 SetupAnalysisPlugin.C:171
 SetupAnalysisPlugin.C:172
 SetupAnalysisPlugin.C:173
 SetupAnalysisPlugin.C:174
 SetupAnalysisPlugin.C:175
 SetupAnalysisPlugin.C:176
 SetupAnalysisPlugin.C:177
 SetupAnalysisPlugin.C:178
 SetupAnalysisPlugin.C:179
 SetupAnalysisPlugin.C:180
 SetupAnalysisPlugin.C:181
 SetupAnalysisPlugin.C:182
 SetupAnalysisPlugin.C:183
 SetupAnalysisPlugin.C:184
 SetupAnalysisPlugin.C:185
 SetupAnalysisPlugin.C:186
 SetupAnalysisPlugin.C:187
 SetupAnalysisPlugin.C:188
 SetupAnalysisPlugin.C:189
 SetupAnalysisPlugin.C:190
 SetupAnalysisPlugin.C:191
 SetupAnalysisPlugin.C:192
 SetupAnalysisPlugin.C:193
 SetupAnalysisPlugin.C:194