4 #include <TGridResult.h>
9 TString dsConfig = AliAnalysisManager::GetGlobalStr("rsnTrainDSConfig",valid);
11 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
12 if (!mgr) { Printf("Error[RsnGridPlugin] mgr is null !!!"); return; }
14 AliAnalysisAlien *plugin = (AliAnalysisAlien *) mgr->GetGridHandler();
15 if (!plugin) { Printf("Error[RsnGridPlugin] : plugin is null !!!"); return; }
17 // getting latest train id
18 TString rsnTrainName = gSystem->BaseName(dsConfig.Data());
19 rsnTrainName.ReplaceAll(".txt","");
21 if (!gGrid) TGrid::Connect("alien://");
23 TGridResult *r = gGrid->Query(Form("%s/RsnTrain/%s",gGrid->GetHomeDirectory(),rsnTrainName.Data()),"*/analysis.root");
24 TString s = r->GetKey(r->GetSize()-1,"lfn");
25 s.ReplaceAll("/analysis.root","");
26 s = gSystem->BaseName(s);
27 Int_t idRsnTrain = s.Atoi()+1;
28 rsnTrainName.Append(Form("/%03d",idRsnTrain));
30 TString rsnTrainWkDir = Form("RsnTrain/%s",rsnTrainName.Data());
31 Info("RsnGridPlugin()",Form("RSN Train directory : %s%s",gGrid->GetHomeDirectory(),rsnTrainWkDir.Data()));
33 plugin->SetGridWorkingDir(rsnTrainWkDir.Data());
34 plugin->SetGridOutputDir("output"); // In this case will be $HOME/work/output
36 plugin->SetAPIVersion("V1.1x");
38 TString rootver = AliAnalysisManager::GetGlobalStr("rsnLegoTrainROOTversion",valid);
39 plugin->SetROOTVersion(rootver.Data());
41 TString alirootVersion = AliAnalysisManager::GetGlobalStr("rsnLegoTrainAliROOTversion",valid);
42 if (alirootVersion.IsNull()) {
43 if (gSystem->Getenv("ALICE_ROOT")) alirootVersion = gSystem->GetFromPipe("aliroot --version | awk '{print $3}'");
45 plugin->SetAliROOTVersion(alirootVersion.Data());
47 plugin->SetExecutableCommand("aliroot -b -q");
49 plugin->SetAnalysisMacro("RsnTrain.C");
50 plugin->SetMasterResubmitThreshold(90);
51 plugin->SetTTL(84600);
52 plugin->SetInputFormat("xml-single");
53 plugin->SetJDLName("RsnTrain.jdl");
55 plugin->SetSplitMode("se");
56 plugin->SetNtestFiles(2);
57 plugin->SetMergeViaJDL();
58 plugin->SetOverwriteMode(kFALSE);
59 // plugin->SetKeepLogs(kTRUE);
61 RsnSetData(plugin,dsConfig,1000);
63 plugin->SetSplitMaxInputFileNumber(50);
65 // Fatal("RsnDataSet","No dataset found !!!");
68 void RsnSetData(AliAnalysisAlien *plugin,TString dsConf,Int_t maxRunsPerMaster = 1000) {
70 Bool_t dsFound = kTRUE;
71 Int_t nRunsPerMaster = 0;
74 TString legoTrainPath = AliAnalysisManager::GetGlobalStr("rsnLegoTrainPath",valid);
76 if (gSystem->AccessPathName(dsConf.Data())) dsConf.Prepend(Form("%s/",legoTrainPath.Data()));
77 dsConf = gSystem->ExpandPathName(dsConf.Data());
79 if (dsConf.Contains(".txt")) {
81 in.open(dsConf.Data());
82 if (!in.is_open()) Fatal("RsnSetData",Form("File %s was not found !!!",dsConf.Data()));
83 Printf("DS config file : %s",dsConf.Data());
85 Bool_t isRun = kFALSE;
89 if (line.IsNull()) continue;
90 if (line.Contains("BASE")) {
91 GetParameterFromConfig(line);
92 plugin->SetGridDataDir(line.Data());
93 Printf("BASE -> %s",line.Data());
96 if (line.Contains("PREFIX")) {
97 GetParameterFromConfig(line);
98 plugin->SetRunPrefix(line.Data());
99 Printf("PREFIX -> %s",line.Data());
102 if (line.Contains("DATA_PATTERN")) {
103 GetParameterFromConfig(line);
104 plugin->SetDataPattern(line.Data());
105 Printf("DATA_PATTERN -> %s",line.Data());
108 if (!line.CompareTo("RUNS")) {
113 // Printf("Adding RUN : %s",line.Data());
114 plugin->AddRunNumber(line.Data());
119 plugin->SetGridDataDir("");
120 plugin->SetDataPattern("");
121 Fatal("RsnDataSet","No dataset found !!!");
124 if (nRunsPerMaster > maxRunsPerMaster) nRunsPerMaster = maxRunsPerMaster;
125 plugin->SetNrunsPerMaster(nRunsPerMaster);
129 void GetParameterFromConfig(TString &str,TString token="="){
130 TObjArray *array = str.Tokenize(token.Data());
131 TObjString *strObj = (TObjString *)array->At(1);
132 if (strObj) str = strObj->GetString();