3 * Alien handler macro to run an HLT analysis task for comparing the offline
4 * with the HLT esd tree on the GRID.
6 * It is loaded in compare_HLT_offline_grid.C.
9 * @author Kalliopi.Kanaki@ift.uib.no
12 AliAnalysisGrid* CreateAlienHandler(TString runNumber, TString dataDir, TString gridWorkingDir, TString gridOutputDir, const char* mode = "full", const char* detectorTask="global"){
14 // Check if user has a valid token, otherwise make one. This has limitations.
15 // One can always follow the standard procedure of calling alien-token-init then
16 // source /tmp/gclient_env_$UID in the current shell.
18 //if(!AliAnalysisGrid::CreateToken()) return NULL;
19 AliAnalysisAlien *plugin = new AliAnalysisAlien();
21 // Set the run mode (can be "full", "test", "offline", "submit" or "terminate")
22 plugin->SetRunMode(mode);
24 // check the versions available on alien with the command 'packages'
25 plugin->SetAPIVersion("V1.1x");
26 plugin->SetROOTVersion("v5-27-05-build1");
27 plugin->SetAliROOTVersion("v4-20-09-AN-build1");
29 //Allow non-default outputs
30 plugin->SetDefaultOutputs(kFALSE);
32 // data alien directory
33 plugin->SetGridDataDir(dataDir.Data());
35 // Set data search pattern
36 plugin->SetDataPattern("*pass1/*ESDs.root");
37 //plugin->SetDataPattern("*/*ESDs.root");
39 plugin->AddRunNumber(runNumber);
40 //plugin->SetRunRange(xxx,yyy);
42 // define working and output directories
43 plugin->SetGridWorkingDir(gridWorkingDir); // relative to $HOME
44 plugin->SetGridOutputDir(gridOutputDir); // relative to working dir
47 Bool_t bTPC=kFALSE, bPHOS=kFALSE, bEMCAL=kFALSE, bITS=kFALSE, bGLOBAL=kFALSE, bD0=kFALSE;
49 TString allArgs = detectorTask;
52 TObjArray *pTokens = allArgs.Tokenize(" ");
54 for(int i=0; i<pTokens->GetEntries(); i++){
55 argument=((TObjString*)pTokens->At(i))->GetString();
56 if(argument.IsNull()) continue;
58 if(argument.CompareTo("tpc", TString::kIgnoreCase)==0){
62 if(argument.CompareTo("phos", TString::kIgnoreCase)==0){
66 if(argument.CompareTo("emcal", TString::kIgnoreCase)==0){
70 if(argument.CompareTo("its", TString::kIgnoreCase)==0){
74 if(argument.CompareTo("global", TString::kIgnoreCase)==0){
78 if(argument.CompareTo("D0", TString::kIgnoreCase)==0){
82 if(argument.CompareTo("all",TString::kIgnoreCase)==0){
94 // libs, seperate by blanks
96 plugin->SetAnalysisSource("AliAnalysisTaskHLTTPC.cxx");
97 plugin->SetAdditionalLibs("AliAnalysisTaskHLTTPC.h AliAnalysisTaskHLTTPC.cxx");
98 plugin->SetOutputFiles("HLT-OFFLINE-TPC-comparison.root");
101 plugin->SetAnalysisSource("AliAnalysisTaskHLTITS.cxx");
102 plugin->SetAdditionalLibs("AliAnalysisTaskHLTITS.h AliAnalysisTaskHLTITS.cxx");
103 plugin->SetOutputFiles("HLT-OFFLINE-ITS-comparison.root");
105 if(bPHOS && bEMCAL) {
106 plugin->AddIncludePath("-I$ROOTSYS -I$ROOTSYS/include -I$ALICE_ROOT/include -I$ALICE_ROOT -I$ALICE_ROOT/RAW -I$ALICE_ROOT/STEER -I$ALICE_ROOT/PHOS -I$ALICE_ROOT/HLT/BASE -I$ALICE_ROOT/HLT/BASE/util -I$ALICE_ROOT/HLT/global/physics");
107 plugin->SetAnalysisSource("AliAnalysisTaskHLTCalo.cxx AliAnalysisTaskHLTPHOS.cxx AliAnalysisTaskHLTEMCAL.cxx");
108 plugin->SetAdditionalLibs("libRAWDatabase.so libProof.so libGui.so libCDB.so libSTEER.so libHLTbase.so libAliHLTUtil.so libAliHLTGlobal.so AliAnalysisTaskHLTCalo.cxx AliAnalysisTaskHLTCalo.h AliAnalysisTaskHLTPHOS.cxx AliAnalysisTaskHLTPHOS.h AliAnalysisTaskHLTEMCAL.cxx AliAnalysisTaskHLTEMCAL.h");
109 plugin->SetOutputFiles("HLT-OFFLINE-PHOS-comparison.root HLT-OFFLINE-EMCAL-comparison.root");
112 plugin->AddIncludePath("-I$ROOTSYS -I$ROOTSYS/include -I$ALICE_ROOT/include -I$ALICE_ROOT -I$ALICE_ROOT/RAW -I$ALICE_ROOT/STEER -I$ALICE_ROOT/PHOS -I$ALICE_ROOT/HLT/BASE -I$ALICE_ROOT/HLT/BASE/util -I$ALICE_ROOT/HLT/global/physics");
113 plugin->SetAnalysisSource("AliAnalysisTaskHLTCalo.cxx AliAnalysisTaskHLTPHOS.cxx");
114 plugin->SetAdditionalLibs("libRAWDatabase.so libProof.so libGui.so libCDB.so libSTEER.so libHLTbase.so libAliHLTUtil.so libAliHLTGlobal.so AliAnalysisTaskHLTCalo.cxx AliAnalysisTaskHLTCalo.h AliAnalysisTaskHLTPHOS.cxx AliAnalysisTaskHLTPHOS.h");
115 plugin->SetOutputFiles("HLT-OFFLINE-PHOS-comparison.root");
117 plugin->AddIncludePath("-I$ROOTSYS -I$ROOTSYS/include -I$ALICE_ROOT/include -I$ALICE_ROOT -I$ALICE_ROOT/RAW -I$ALICE_ROOT/STEER -I$ALICE_ROOT/EMCAL -I$ALICE_ROOT/HLT/BASE -I$ALICE_ROOT/HLT/BASE/util -I$ALICE_ROOT/HLT/global/physics");
118 plugin->SetAnalysisSource("AliAnalysisTaskHLTCalo.cxx AliAnalysisTaskHLTEMCAL.cxx");
119 plugin->SetAdditionalLibs("libRAWDatabase.so libProof.so libGui.so libCDB.so libSTEER.so libHLTbase.so libAliHLTUtil.so libAliHLTGlobal.so AliAnalysisTaskHLTCalo.cxx AliAnalysisTaskHLTCalo.h AliAnalysisTaskHLTEMCAL.cxx AliAnalysisTaskHLTEMCAL.h");
120 plugin->SetOutputFiles("HLT-OFFLINE-EMCAL-comparison.root");
123 plugin->SetAnalysisSource("AliAnalysisTaskHLT.cxx");
124 plugin->SetAdditionalLibs("AliAnalysisTaskHLT.h AliAnalysisTaskHLT.cxx");
125 plugin->SetOutputFiles("HLT-OFFLINE-GLOBAL-comparison.root");
128 //plugin->AddIncludePath("-I$ROOTSYS -I$ROOTSYS/include -I$ALICE_ROOT/include -I$ALICE_ROOT -I$ALICE_ROOT/RAW -I$ALICE_ROOT/STEER -I$ALICE_ROOT/HLT/BASE -I$ALICE_ROOT/HLT/BASE/util -I$ALICE_ROOT/HLT/global/physics -I$ALICE_ROOT/HLT/trigger");
129 //plugin->SetAdditionalLibs("libRAWDatabase.so libProof.so libGui.so libCDB.so libSTEER.so libHLTbase.so libAliHLTUtil.so libAliHLTGlobal.so AliAnalysisTaskD0Trigger.cxx AliAnalysisTaskD0Trigger.h");
130 plugin->SetAnalysisSource("AliAnalysisTaskD0Trigger.cxx");
131 plugin->SetAdditionalLibs("AliAnalysisTaskD0Trigger.h AliAnalysisTaskD0Trigger.cxx");
132 plugin->SetOutputFiles("HLT-OFFLINE-D0-comparison.root");
135 // Optionally define the files to be archived.
136 plugin->SetOutputArchive("log_archive.zip:stdout,stderr");
138 // Optionally set a name for the generated analysis macro (default MyAnalysis.C)
139 plugin->SetAnalysisMacro("runComparison.C");
140 plugin->SetExecutable("comparison.sh");
142 plugin->SetSplitMaxInputFileNumber(100);
144 // Optionally set number of failed jobs that will trigger killing waiting sub-jobs.
145 plugin->SetMaxInitFailed(10);
147 // Optionally resubmit threshold.
148 plugin->SetMasterResubmitThreshold(90); // in %
150 plugin->SetTTL(30000);// in sec
152 // Optionally set input format (default xml-single)
153 plugin->SetInputFormat("xml-single");
155 // Optionally modify the name of the generated JDL (default analysis.jdl)
156 plugin->SetJDLName("analysis.jdl");
158 // Optionally modify job price (default 1)
161 // Optionally modify split mode (default 'se')
162 plugin->SetSplitMode("se");