]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/QA/tasks/macros/CreateAlienHandler.C
- added task for testing the D0 trigger cuts with both HLT and offline tracks as...
[u/mrichter/AliRoot.git] / HLT / QA / tasks / macros / CreateAlienHandler.C
1 // $Id$
2 /*
3  * Alien handler macro to run an HLT analysis task for comparing the offline
4  * with the HLT esd tree on the GRID.
5  *
6  * It is loaded in compare_HLT_offline_grid.C.
7  *
8  * @ingroup alihlt_qa
9  * @author Kalliopi.Kanaki@ift.uib.no
10  */
11
12 AliAnalysisGrid* CreateAlienHandler(TString runNumber, TString dataDir, TString gridWorkingDir, TString gridOutputDir, const char* mode = "full", const char* detectorTask="global"){
13   
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.
17   
18   //if(!AliAnalysisGrid::CreateToken()) return NULL;
19   AliAnalysisAlien *plugin = new AliAnalysisAlien();
20
21   // Set the run mode (can be "full", "test", "offline", "submit" or "terminate")
22   plugin->SetRunMode(mode);
23   
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");
28
29   //Allow non-default outputs
30   plugin->SetDefaultOutputs(kFALSE);
31
32   // data alien directory
33   plugin->SetGridDataDir(dataDir.Data());
34   
35   // Set data search pattern
36   plugin->SetDataPattern("*pass1/*ESDs.root");
37   //plugin->SetDataPattern("*/*ESDs.root");
38     
39   plugin->AddRunNumber(runNumber); 
40   //plugin->SetRunRange(xxx,yyy);
41  
42   // define working and output directories
43   plugin->SetGridWorkingDir(gridWorkingDir); // relative to $HOME
44   plugin->SetGridOutputDir(gridOutputDir);   // relative to working dir
45   
46   
47   Bool_t bTPC=kFALSE, bPHOS=kFALSE, bEMCAL=kFALSE, bITS=kFALSE, bGLOBAL=kFALSE, bD0=kFALSE;
48  
49   TString allArgs = detectorTask;
50   TString argument;
51  
52   TObjArray *pTokens = allArgs.Tokenize(" ");
53   if(pTokens){
54      for(int i=0; i<pTokens->GetEntries(); i++){
55          argument=((TObjString*)pTokens->At(i))->GetString();
56          if(argument.IsNull()) continue;
57
58          if(argument.CompareTo("tpc", TString::kIgnoreCase)==0){
59             bTPC = kTRUE;
60             continue;
61          }        
62          if(argument.CompareTo("phos", TString::kIgnoreCase)==0){
63             bPHOS = kTRUE;
64             continue;
65          }         
66          if(argument.CompareTo("emcal", TString::kIgnoreCase)==0){
67             bEMCAL = kTRUE;
68             continue;
69          }         
70          if(argument.CompareTo("its", TString::kIgnoreCase)==0){
71             bITS = kTRUE;
72             continue;
73          }      
74          if(argument.CompareTo("global", TString::kIgnoreCase)==0){
75             bGLOBAL = kTRUE;
76             continue;
77          }        
78          if(argument.CompareTo("D0", TString::kIgnoreCase)==0){
79             bD0 = kTRUE;
80             continue;
81          }  
82          if(argument.CompareTo("all",TString::kIgnoreCase)==0){
83             bTPC    = kTRUE;
84             bPHOS   = kTRUE;
85             bEMCAL   = kTRUE;
86             bITS    = kTRUE;
87             bGLOBAL = kTRUE;
88             continue;
89          }
90          else break;
91     }
92   }
93     
94   // libs, seperate by blanks
95   if(bTPC){  
96     plugin->SetAnalysisSource("AliAnalysisTaskHLTTPC.cxx");  
97     plugin->SetAdditionalLibs("AliAnalysisTaskHLTTPC.h AliAnalysisTaskHLTTPC.cxx");
98     plugin->SetOutputFiles("HLT-OFFLINE-TPC-comparison.root");    
99   }
100   if(bITS){  
101     plugin->SetAnalysisSource("AliAnalysisTaskHLTITS.cxx");  
102     plugin->SetAdditionalLibs("AliAnalysisTaskHLTITS.h AliAnalysisTaskHLTITS.cxx");
103     plugin->SetOutputFiles("HLT-OFFLINE-ITS-comparison.root");    
104   }
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");    
110
111   } else if(bPHOS){  
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");    
116   } else if(bEMCAL){  
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");    
121   }
122   if(bGLOBAL){  
123     plugin->SetAnalysisSource("AliAnalysisTaskHLT.cxx");  
124     plugin->SetAdditionalLibs("AliAnalysisTaskHLT.h AliAnalysisTaskHLT.cxx"); 
125     plugin->SetOutputFiles("HLT-OFFLINE-GLOBAL-comparison.root");
126   }
127   if(bD0) {
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");    
133   }
134   
135   // Optionally define the files to be archived.
136   plugin->SetOutputArchive("log_archive.zip:stdout,stderr");
137   
138   // Optionally set a name for the generated analysis macro (default MyAnalysis.C)
139   plugin->SetAnalysisMacro("runComparison.C");
140   plugin->SetExecutable("comparison.sh");
141
142   plugin->SetSplitMaxInputFileNumber(100);
143   
144   // Optionally set number of failed jobs that will trigger killing waiting sub-jobs.
145   plugin->SetMaxInitFailed(10);
146   
147   // Optionally resubmit threshold.
148   plugin->SetMasterResubmitThreshold(90); // in %
149
150   plugin->SetTTL(30000);// in sec
151   
152   // Optionally set input format (default xml-single)
153   plugin->SetInputFormat("xml-single");
154  
155   // Optionally modify the name of the generated JDL (default analysis.jdl)
156   plugin->SetJDLName("analysis.jdl");
157  
158   // Optionally modify job price (default 1)
159   plugin->SetPrice(1);
160   
161   // Optionally modify split mode (default 'se')
162   plugin->SetSplitMode("se");
163   
164   return plugin;
165 }