]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/RESONANCES/macros/lego_train/RsnGridPlugin.C
Migration of PWG2/RESONANCES -> PWGLF/RESONANCES
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / macros / lego_train / RsnGridPlugin.C
1 #ifndef __CINT__
2 #include <Riostream.h>
3 #endif
4 void RsnGridPlugin() {
5
6    Bool_t valid = kTRUE;
7    Int_t idRsnTrain = AliAnalysisManager::GetGlobalInt("rsnTrainID",valid);
8    TString dsConfig = AliAnalysisManager::GetGlobalStr("rsnTrainDSConfig",valid);
9
10    AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
11    if (!mgr) { Printf("Error[RsnGridPlugin] mgr is null !!!"); return; }
12
13    AliAnalysisAlien *plugin = (AliAnalysisAlien *) mgr->GetGridHandler();
14    if (!plugin) { Printf("Error[RsnGridPlugin] : plugin is null !!!"); return; }
15
16    TString rsnTrainName = gSystem->BaseName(dsConfig.Data());
17    rsnTrainName.ReplaceAll(".txt",Form("/%03d",idRsnTrain));
18
19    plugin->SetGridWorkingDir(Form("RsnTrain/%s",rsnTrainName.Data()));
20    plugin->SetGridOutputDir("output"); // In this case will be $HOME/work/output
21
22    plugin->SetAPIVersion("V1.1x");
23    plugin->SetROOTVersion("v5-30-03-1");
24
25    TString alirootVersion="v5-02-16-AN";
26    alirootVersion = gSystem->GetFromPipe("aliroot --version | awk '{print $3}'");
27
28    plugin->SetAliROOTVersion(alirootVersion.Data());
29
30    plugin->SetExecutableCommand("aliroot -b -q");
31
32    plugin->SetAnalysisMacro("RsnTrain.C");
33    plugin->SetMasterResubmitThreshold(90);
34    plugin->SetTTL(84600);
35    plugin->SetInputFormat("xml-single");
36    plugin->SetJDLName("RsnTrain.jdl");
37    plugin->SetPrice(1);
38    plugin->SetSplitMode("se");
39    plugin->SetNtestFiles(2);
40    plugin->SetMergeViaJDL();
41    //    plugin->SetKeepLogs(kTRUE);
42
43    RsnSetData(plugin,dsConfig,1000);
44
45    plugin->SetSplitMaxInputFileNumber(50);
46
47    //   Fatal("RsnDataSet","No dataset found !!!");
48 }
49
50 void RsnSetData(AliAnalysisAlien *plugin,TString dsConf,Int_t maxRunsPerMaster = 1000) {
51
52    Bool_t dsFound = kTRUE;
53    Int_t nRunsPerMaster = 0;
54
55    Bool_t valid = kTRUE;
56    TString legoTrainPath = AliAnalysisManager::GetGlobalStr("rsnLegoTrainPath",valid);
57
58    if (gSystem->AccessPathName(dsConf.Data())) dsConf.Prepend(Form("%s/",legoTrainPath.Data()));
59    dsConf = gSystem->ExpandPathName(dsConf.Data());
60
61    if (dsConf.Contains(".txt")) {
62       ifstream in;
63       in.open(dsConf.Data());
64       if (!in.is_open()) Fatal("RsnSetData",Form("File %s was not found !!!",dsConf.Data()));
65       Printf("DS config file : %s",dsConf.Data());
66       TString line;
67       Bool_t isRun = kFALSE;
68       while (in.good())
69       {
70          in >> line;
71          if (line.IsNull()) continue;
72          if (line.Contains("BASE")) {
73             GetParameterFromConfig(line);
74             plugin->SetGridDataDir(line.Data());
75             Printf("BASE -> %s",line.Data());
76             continue;
77          }
78          if (line.Contains("PREFIX")) {
79             GetParameterFromConfig(line);
80             plugin->SetRunPrefix(line.Data());
81             Printf("PREFIX -> %s",line.Data());
82             continue;
83          }
84          if (line.Contains("DATA_PATTERN")) {
85             GetParameterFromConfig(line);
86             plugin->SetDataPattern(line.Data());
87             Printf("DATA_PATTERN -> %s",line.Data());
88             continue;
89          }
90          if (!line.CompareTo("RUNS")) {
91             isRun = kTRUE;
92             in >> line;
93          }
94          if (isRun) {
95             //            Printf("Adding RUN : %s",line.Data());
96             plugin->AddRunNumber(line.Data());
97             nRunsPerMaster++;
98          }
99       }
100    } else {
101       plugin->SetGridDataDir("");
102       plugin->SetDataPattern("");
103       Fatal("RsnDataSet","No dataset found !!!");
104    }
105
106    if (nRunsPerMaster > maxRunsPerMaster) nRunsPerMaster = maxRunsPerMaster;
107    plugin->SetNrunsPerMaster(nRunsPerMaster);
108
109 }
110
111 void GetParameterFromConfig(TString &str,TString token="="){
112    TObjArray *array = str.Tokenize(token.Data());
113    TObjString *strObj = (TObjString *)array->At(1);
114    if (strObj) str = strObj->GetString();
115    else str = "";
116 }