4 #include <TGridResult.h>
6 void RsnGridPlugin(TString analysisMode) {
9 TString dsConfig = AliAnalysisManager::GetGlobalStr("rsnTrainDSConfig",valid);
10 Int_t globalTrainID = AliAnalysisManager::GetGlobalInt("rsnGlobalTrainID",valid);
12 Int_t numRuns = AliAnalysisManager::GetGlobalInt("rsnGridNumRuns",valid);
13 Int_t numRunsSkip = AliAnalysisManager::GetGlobalInt("rsnGridNumRunsSkip",valid);
15 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
17 Printf("Error[RsnGridPlugin] mgr is null !!!");
21 AliAnalysisAlien *plugin = (AliAnalysisAlien *) mgr->GetGridHandler();
23 Printf("Error[RsnGridPlugin] : plugin is null !!!");
27 // getting latest train id
28 TString rsnTrainName = gSystem->BaseName(dsConfig.Data());
29 rsnTrainName.ReplaceAll(".txt","");
30 rsnTrainName.Append(TString::Format("/%03d/%d_%d",globalTrainID,numRunsSkip,numRuns).Data());
32 if (!gGrid) TGrid::Connect("alien://");
34 TGridResult *r = gGrid->Query(TString::Format("%s/RsnTrain/%s",gGrid->GetHomeDirectory(),rsnTrainName.Data()).Data(),"*/analysis.root");
37 TString s = r->GetKey(r->GetSize()-1,"lfn");
38 s.ReplaceAll("/analysis.root","");
39 s = gSystem->BaseName(s);
40 if (!s.IsNull()) idRsnTrain = s.Atoi();
41 if (!analysisMode.CompareTo("full")) idRsnTrain++;
43 rsnTrainName.Append(Form("/%03d",idRsnTrain));
45 TString rsnTrainWkDir = TString::Format("RsnTrain/%s",rsnTrainName.Data()).Data();
46 Info("RsnGridPlugin()",TString::Format("RSN Train directory : %s%s",gGrid->GetHomeDirectory(),rsnTrainWkDir.Data()).Data());
48 plugin->SetGridWorkingDir(rsnTrainWkDir.Data());
49 plugin->SetGridOutputDir("output"); // In this case will be $HOME/work/output
51 plugin->SetAPIVersion("V1.1x");
53 TString rootver = AliAnalysisManager::GetGlobalStr("rsnLegoTrainROOTversion",valid);
54 plugin->SetROOTVersion(rootver.Data());
56 TString alirootVersion = AliAnalysisManager::GetGlobalStr("rsnLegoTrainAliROOTversion",valid);
57 if (alirootVersion.IsNull()) {
58 if (gSystem->Getenv("ALICE_ROOT")) alirootVersion = gSystem->GetFromPipe("aliroot --version | awk '{print $3}'");
60 plugin->SetAliROOTVersion(alirootVersion.Data());
62 plugin->SetExecutableCommand("aliroot -b -q");
64 plugin->SetAnalysisMacro("RsnTrain.C");
65 plugin->SetMasterResubmitThreshold(90);
66 plugin->SetTTL(84600);
67 plugin->SetInputFormat("xml-single");
68 plugin->SetJDLName("RsnTrain.jdl");
70 plugin->SetSplitMode("se");
71 plugin->SetNtestFiles(2);
72 plugin->SetMergeViaJDL();
73 plugin->SetOverwriteMode(kFALSE);
74 // plugin->SetKeepLogs(kTRUE);
76 RsnSetData(plugin,dsConfig,numRuns,numRunsSkip,1000);
78 plugin->SetSplitMaxInputFileNumber(25);
80 // Fatal("RsnDataSet","No dataset found !!!");
83 void RsnSetData(AliAnalysisAlien *plugin,TString dsConf,Int_t numRuns = 1000,Int_t numRunsSkip=0,Int_t maxRunsPerMaster = 1000) {
85 Bool_t dsFound = kTRUE;
86 Int_t nRunsPerMaster = 0;
89 TString legoTrainPath = AliAnalysisManager::GetGlobalStr("rsnLegoTrainPath",valid);
91 if (gSystem->AccessPathName(dsConf.Data())) dsConf.Prepend(Form("%s/",legoTrainPath.Data()));
92 dsConf = gSystem->ExpandPathName(dsConf.Data());
94 if (dsConf.Contains(".txt")) {
96 in.open(dsConf.Data());
97 if (!in.is_open()) Fatal("RsnSetData",Form("File %s was not found !!!",dsConf.Data()));
98 Printf("DS config file : %s",dsConf.Data());
100 Bool_t isRun = kFALSE;
104 if (line.IsNull()) continue;
105 if (line.Contains("BASE")) {
106 GetParameterFromConfig(line);
107 plugin->SetGridDataDir(line.Data());
108 Printf("BASE -> %s",line.Data());
111 if (line.Contains("PREFIX")) {
112 GetParameterFromConfig(line);
113 plugin->SetRunPrefix(line.Data());
114 Printf("PREFIX -> %s",line.Data());
117 if (line.Contains("DATA_PATTERN")) {
118 GetParameterFromConfig(line);
119 plugin->SetDataPattern(line.Data());
120 Printf("DATA_PATTERN -> %s",line.Data());
123 if (!line.CompareTo("RUNS")) {
132 if (nRunsPerMaster < numRuns ) {
133 Printf("Adding RUN : %s",line.Data());
134 plugin->AddRunNumber(line.Data());
144 plugin->SetGridDataDir("");
145 plugin->SetDataPattern("");
146 Fatal("RsnDataSet","No dataset found !!!");
149 if (nRunsPerMaster > maxRunsPerMaster) nRunsPerMaster = maxRunsPerMaster;
150 plugin->SetNrunsPerMaster(nRunsPerMaster);
154 void GetParameterFromConfig(TString &str,TString token="=") {
155 TObjArray *array = str.Tokenize(token.Data());
156 TObjString *strObj = (TObjString *)array->At(1);
157 if (strObj) str = strObj->GetString();