1 void SetDataFromConfigFile(AliAnalysisAlien *plugin, const char* filename, Int_t AnalysisMC, Bool_t esdAna, Int_t nMaxRuns);
4 //AliAnalysisGrid* CreateAlienHandler(Int_t nFiles, Bool_t AnalysisMC, Int_t runtype, const char* taskname, const char* mode)
5 AliAnalysisGrid* CreateAlienHandler(Int_t nMaxRuns, Int_t AnalysisMC, Bool_t esdAna, const char* taskname, const char* nameoutputs, const char* mode, const char* label, const char* alirootver, Int_t task_num)
8 AliAnalysisAlien *plugin = new AliAnalysisAlien();
10 plugin->SetRunMode(mode);
12 // Set versions of used packages
13 plugin->SetAPIVersion("V1.1x");
14 plugin->SetROOTVersion("v5-30-06");
15 plugin->SetAliROOTVersion(alirootver);
17 Char_t configfile[64];
18 sprintf(configfile,"%s.conf",label);
20 cout << "Configuration file: " << configfile << endl;
24 sprintf(label, "%s_MC_ESDs_%d", label, AnalysisMC);
26 sprintf(label, "%s_MC_AODs_%d", label, AnalysisMC);
30 sprintf(label, "%s_Data_ESDs", label);
32 sprintf(label, "%s_Data_AODs", label);
34 cout << "Label: " << label << endl;
36 // output to run numbers
37 plugin->SetOutputToRunNo();
39 SetDataFromConfigFile(plugin, configfile, AnalysisMC, esdAna, nMaxRuns);
41 // sprintf(outputfiles,"%s_%s.root %sDebug.root",taskname,label,taskname);
42 //Char_t outputfiles[256];
43 //sprintf(outputfiles,"%s_Tree.root",taskname);
45 // Method 2: Declare existing data files (raw collections, xml
46 // collections, root file) If no path mentioned data is supposed to be
47 // in the work directory (see SetGridWorkingDir()) XML collections
48 // added via this method can be combined with the first method if the
49 // content is compatible (using or not tags)
50 // plugin->AddDataFile("tag.xml");
51 // plugin->AddDataFile("/alice/data/2008/LHC08c/000057657/raw/Run57657.Merged.RAW.tag.root");
54 // Define alien work directory where all files will be copied. Relative to alien $HOME.
56 sprintf(tmpname,"work_%s_%s",taskname,label);
57 plugin->SetGridWorkingDir(tmpname);
59 // Declare alien output directory. Relative to working directory.
60 plugin->SetGridOutputDir("output"); // In this case will be $HOME/work/output
62 // Declare the analysis source files names separated by blancs. To be compiled runtime
63 // using ACLiC on the worker nodes.
64 plugin->AddIncludePath("-I$ROOTSYS/include -I$ALICE_ROOT/include");
65 Char_t anasource[256];
67 sprintf(anasource, "DebugClasses.C AliAnalysisTask%s.cxx", taskname);
70 sprintf(anasource, "DebugClasses.C AliAnalysisTask%s.cxx AliAnalysisTask%sV0.cxx", taskname, taskname);
72 plugin->SetAnalysisSource(anasource);
74 // Declare all libraries (other than the default ones for the framework. These will be
75 // loaded by the generated analysis macro. Add all extra files (task .cxx/.h) here.
78 sprintf(addlib, "DebugClasses.C AliAnalysisTask%s.h AliAnalysisTask%s.cxx", taskname, taskname);
80 sprintf(addlib, "DebugClasses.C AliAnalysisTask%s.h AliAnalysisTask%s.cxx AliAnalysisTask%sV0.h AliAnalysisTask%sV0.cxx", taskname, taskname, taskname, taskname);
82 plugin->SetAdditionalLibs(addlib);
84 // Declare the output file names separated by blancs.
85 // (can be like: file.root or file.root@ALICE::Niham::File)
86 plugin->SetDefaultOutputs(kFALSE);
87 plugin->SetOutputFiles(nameoutputs);
89 //plugin->SetMergeViaJDL(kTRUE);
93 // Optionally set a name for the generated analysis macro (default MyAnalysis.C)
94 sprintf(tmpname,"macro_%s_%s.C",taskname,label);
95 plugin->SetAnalysisMacro(tmpname);
97 // Optionally set maximum number of input files/subjob (default 100, put 0 to ignore)
98 plugin->SetSplitMaxInputFileNumber(100);
100 // Optionally set number of failed jobs that will trigger killing waiting sub-jobs.
101 plugin->SetMaxInitFailed(500);
103 // Optionally resubmit threshold.
104 plugin->SetMasterResubmitThreshold(90);
106 // Optionally set time to live (default 30000 sec)
107 // plugin->SetTTL(7200);
108 plugin->SetTTL(30000);
110 // Optionally set input format (default xml-single)
111 plugin->SetInputFormat("xml-single");
113 // Optionally modify the name of the generated JDL (default analysis.jdl)
114 sprintf(tmpname,"%s_%s.jdl",taskname,label);
115 plugin->SetJDLName(tmpname);
117 // Optionally modify the executable name (default analysis.sh)
118 sprintf(tmpname,"%s_%s.sh",taskname,label);
119 plugin->SetExecutable(tmpname);
121 // Optionally modify job price (default 1)
124 plugin->SetMergeViaJDL(kTRUE);
125 // Use fastread option
126 plugin->SetFastReadOption(kTRUE);
127 // Optionally modify split mode (default 'se')
128 plugin->SetSplitMode("se");
129 plugin->SetExecutableCommand("aliroot -b -q");
140 void SetDataFromConfigFile(AliAnalysisAlien *plugin, const char* fileName, Int_t AnalysisMC, Bool_t esdAna, Int_t nMaxRuns)
144 FILE* file = fopen(fileName,"r");
146 cout << "File " << fileName << " not found!" << endl;
152 Char_t runperiodpattern[128];
154 sprintf(runperiodpattern,"Run period MC%d: %s", AnalysisMC, "%s %s %s");
156 sprintf(runperiodpattern,"Run period: %s", "%s %s %s");
158 cout << "PATTERN: " << runperiodpattern << endl;
161 while (fgets(dummy,128,file) != NULL && (nRuns<nMaxRuns||nMaxRuns<=0)) {
162 char runperiod[128], pass[64], aodDir[64];
164 if(sscanf(dummy, runperiodpattern, &runperiod, &pass, &aodDir)){
165 //if(sscanf(dummy, "Run period: %d %d",&a,&b)){
166 Char_t griddatadir[256];
167 Char_t datapattern[256];
170 sprintf(griddatadir, "/alice/sim/%s", runperiod);
172 sprintf(datapattern,"/*/AliESDs.root");
174 sprintf(datapattern,"/%s/*/AliAOD.root", aodDir);
178 plugin->SetRunPrefix("000");
180 sscanf(runperiod, "LHC%d", &year);
181 sprintf(griddatadir, "/alice/data/20%d/%s", year, runperiod);
183 sprintf(datapattern,"*ESDs/%s/*/AliESDs.root",pass);
184 //sprintf(datapattern,"*ESDs/%s/10000121040024.40/AliESDs.root",pass);
186 sprintf(datapattern,"*ESDs/%s/%s/*/AliAOD.root",pass, aodDir);
189 cout << "GridDataDir: " << griddatadir << endl;
190 cout << "DataPatter: " << datapattern << endl;
191 plugin->SetGridDataDir(griddatadir);
192 plugin->SetDataPattern(datapattern);
195 if(sscanf(dummy,"Run: %d %s", &run)){
196 plugin->AddRunNumber(run);