]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/FLOW/macros/runTaskFlowHigherOrdersAllPID.C
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGCF / FLOW / macros / runTaskFlowHigherOrdersAllPID.C
1 // run.C\r
2 //\r
3 // Template run macro for AliBasicTask.cxx/.h with example layout of\r
4 // physics selections and options, in macro and task.\r
5 //\r
6 // Author: Arvinder Palaha\r
7 //\r
8 class AliAnalysisGrid;\r
9 class AliAnalysisTaskBF;\r
10 class AliBalance;\r
11 \r
12 //Centrality stuff\r
13 Int_t binfirst = 0;  //where do we start numbering bins\r
14 Int_t binlast = 8;  //where do we stop numbering bins\r
15 const Int_t numberOfCentralityBins = 9;\r
16 Double_t centralityArray[numberOfCentralityBins+1] = {0.,5.,10.,20.,30.,40.,50.,60.,70.,80.}; // in centrality percentile\r
17 \r
18 //Systematic studies\r
19 const Int_t numberOfSyst = 13;\r
20 Float_t vZ[numberOfSyst]     = {10.,12.,6.,8.,10.,10.,10.,10.,10.,10.,10.,10.,10.};     // global Vertex Z cut\r
21 Float_t DCAxy[numberOfSyst]  = {-1.,2.4,2.4,2.4,2.2,2.0,1.8,2.4,2.4,2.4,2.4,2.4,2.4};   // DCA xy cut (afterburner, -1 = w/o additional cut)\r
22 Float_t DCAz[numberOfSyst]   = {-1.,3.2,3.2,3.2,3.0,2.8,2.6,3.2,3.2,3.2,3.2,3.2,3.2};   // DCA z cut (afterburner, -1 = w/o additional cut)\r
23 Float_t ptMin[numberOfSyst]  = {0.3,0.3,0.3,0.3,0.3,0.3,0.3,1.5,5.0,0.3,0.3,0.3,0.3};   // pt cuts\r
24 Float_t ptMax[numberOfSyst]  = {5.,1.5,1.5,1.5,1.5,1.5,1.5,5.0,10.0,10.0,1.5,1.5,1.5}; // pt cuts\r
25 Float_t etaMin[numberOfSyst] = {-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-1.0,-0.6,-0.4}; // eta cuts\r
26 Float_t etaMax[numberOfSyst] = {0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8,1.0,0.6,0.4};   // eta cuts\r
27 \r
28 Bool_t kUsePID = kFALSE;\r
29 Bool_t bUseHBTCut = kTRUE;\r
30 Bool_t bUseConversionCut = kTRUE;\r
31 Bool_t bResonancesCut = kTRUE;\r
32 Bool_t bMomentumDifferenceCut = kTRUE;\r
33 Int_t kNSigmaElectronRejection = 3;\r
34 \r
35 //______________________________________________________________________________\r
36 void runTaskFlowHigherOrdersAllPID(\r
37          const char* runtype = "local", // local, proof or grid\r
38          const char *gridmode = "terminate", // Set the run mode (can be "full", "test", "offline", "submit" or "terminate"). Full & Test work for proof\r
39          const Int_t bunchN = 0,\r
40          const bool bAOD = 1, // 1 = AOD ANALYSIS, 0 = ESD ANALYSIS\r
41          const bool bMCtruth = 0, // 1 = MCEvent handler is on (MC truth), 0 = MCEvent handler is off (MC reconstructed/real data)\r
42          const bool bMCphyssel = 1, // 1 = looking at MC truth or reconstructed, 0 = looking at real data\r
43          const Long64_t nentries = 50000, // for local and proof mode, ignored in grid mode. Set to 1234567890 for all events.\r
44          const Long64_t firstentry = 0, // for local and proof mode, ignored in grid mode\r
45          TString proofdataset = "bunchPROOF", // path to dataset on proof cluster, for proof analysis\r
46          const char *proofcluster = "miweber@alice-caf.cern.ch", // which proof cluster to use in proof mode\r
47          const char *taskname = "BF_Syst_Test" // sets name of grid generated macros\r
48          )\r
49 {\r
50     // check run type\r
51     if(runtype != "local" && runtype != "proof" && runtype != "grid") {\r
52         Printf("\n\tIncorrect run option, check first argument of run macro");\r
53         Printf("\tint runtype = local, proof or grid\n");\r
54         return;\r
55     }\r
56     Printf("%s analysis chosen",runtype);\r
57   \r
58     // load libraries\r
59     gSystem->Load("libCore.so");        \r
60     gSystem->Load("libGeom.so");\r
61     gSystem->Load("libVMC.so");\r
62     gSystem->Load("libPhysics.so");\r
63     gSystem->Load("libTree.so");\r
64     gSystem->Load("libSTEERBase.so");\r
65     gSystem->Load("libESD.so");\r
66     gSystem->Load("libAOD.so");\r
67     gSystem->Load("libANALYSIS.so");\r
68     gSystem->Load("libANALYSISalice.so");\r
69     gSystem->Load("libEventMixing.so");\r
70     gSystem->Load("libCORRFW.so");\r
71     gSystem->Load("libPWGTools.so");\r
72     gSystem->Load("libPWGCFebye.so");\r
73     gSystem->Load("libPWGflowBase.so");\r
74     gSystem->Load("libPWGflowTasks.so");\r
75 \r
76     // additional\r
77 \r
78     // compile standalone stuff\r
79     //gROOT->LoadMacro("AliBalance.cxx++g");\r
80     //gROOT->LoadMacro("AliAnalysisTaskBF.cxx++g");\r
81 \r
82     // add aliroot indlude path\r
83     //gROOT->ProcessLine(".include $PWD/.");\r
84     //gROOT->ProcessLine(Form(".include %s/include",gSystem->ExpandPathName("$ALICE_ROOT")));\r
85 \r
86     gROOT->SetStyle("Plain");\r
87 \r
88     // analysis manager\r
89     AliAnalysisManager* mgr = new AliAnalysisManager(Form("%s%i",taskname,bunchN));\r
90     \r
91     // create the alien handler and attach it to the manager\r
92     if(runtype == "grid") {\r
93       AliAnalysisGrid *plugin = CreateAlienHandler(bAOD,bunchN,Form("%s%i",taskname,bunchN), gridmode, proofcluster, Form("%s_%d.txt",proofdataset.Data(),bunchN)); \r
94       mgr->SetGridHandler(plugin);\r
95     }\r
96     else if(runtype == "local") {\r
97       TString filename;\r
98       TChain* chain = 0x0;\r
99       if((!bAOD)&&(!bMCtruth)) {\r
100         chain = new TChain("esdTree");\r
101         for(Int_t i = 0; i < 4; i++) {\r
102           filename = "/data/alice2/pchrist/HeavyIons/Data/2011/Set";\r
103           filename += i; filename += "/AliESDs.root";\r
104           chain->Add(filename.Data());\r
105         }\r
106       }\r
107       else if((bAOD)&&(!bMCtruth)) {\r
108         chain = new TChain("aodTree");\r
109         for(Int_t i = 0; i < 10; i++) {\r
110           filename = "/glusterfs/alice1/alice2/pchrist/HeavyIons/Data/2011/Set";\r
111           filename += i; filename += "/AliAOD.root";\r
112           chain->Add(filename.Data());\r
113         }\r
114       }\r
115       else if((!bAOD)&&(bMCtruth)) {\r
116         chain = new TChain("TE");\r
117         for(Int_t i = 10; i < 99; i++) {\r
118           filename = "/project/alice/users/alisrm/Efficiency_Contamination/LHC13b3_HIJING_pA_AOD/";\r
119           filename += i;\r
120           filename += "/galice.root";\r
121           chain->Add(filename.Data());\r
122         }\r
123       }\r
124       else if((bAOD)&&(bMCtruth)) { //used for MCAOD\r
125         chain = new TChain("aodTree");   \r
126         for(Int_t i = 10; i < 99; i++) { \r
127           filename = "/project/alice/users/alisrm/Efficiency_Contamination/LHC13b3_HIJING_pA_AOD/";\r
128           filename += i; \r
129           filename += "/AliAOD.root";\r
130           chain->Add(filename.Data());\r
131         } \r
132       }\r
133       \r
134 \r
135     }//local mode\r
136 \r
137     // input handler (ESD or AOD)\r
138     AliVEventHandler* inputH = NULL;\r
139     if(!bAOD){\r
140       inputH = new AliESDInputHandler();\r
141     }\r
142     else{\r
143       inputH = new AliAODInputHandler();\r
144     }\r
145     mgr->SetInputEventHandler(inputH);\r
146     \r
147     // mc event handler\r
148     if(bMCtruth) {\r
149       AliMCEventHandler* mchandler = new AliMCEventHandler();\r
150       // Not reading track references\r
151       mchandler->SetReadTR(kFALSE);\r
152       mgr->SetMCtruthEventHandler(mchandler);\r
153     }   \r
154     \r
155     // AOD output handler\r
156     //AliAODHandler* aodoutHandler = new AliAODHandler();\r
157     //aodoutHandler->SetOutputFileName("aod.root");\r
158     //mgr->SetOutputEventHandler(aodoutHandler); \r
159     \r
160     // === Physics Selection Task ===\r
161     //\r
162     // In SelectCollisionCandidate(), default is kMB, so the task UserExec() \r
163     // function is only called for these events.\r
164     // Options are:\r
165     //    kMB             Minimum Bias trigger\r
166     //    kMBNoTRD        Minimum bias trigger where the TRD is not read out\r
167     //    kMUON           Muon trigger\r
168     //    kHighMult       High-Multiplicity Trigger\r
169     //    kUserDefined    For manually defined trigger selection\r
170     //\r
171     // Multiple options possible with the standard AND/OR operators && and ||\r
172     // These all have the usual offline SPD or V0 selections performed.\r
173     //\r
174     // With a pointer to the physics selection object using physSelTask->GetPhysicsSelection(),\r
175     // one can manually set the selected and background classes using:\r
176     //    AddCollisionTriggerClass("+CINT1B-ABCE-NOPF-ALL")\r
177     //    AddBGTriggerClass("+CINT1A-ABCE-NOPF-ALL");\r
178     //\r
179     // One can also specify multiple classes at once, or require a class to NOT\r
180     // trigger, for e.g.\r
181     //    AddBGTriggerClass("+CSMBA-ABCE-NOPF-ALL -CSMBB-ABCE-NOPF-ALL");\r
182     //\r
183     // NOTE that manually setting the physics selection overrides the standard\r
184     // selection, so it must be done in completeness.\r
185     //\r
186     // ALTERNATIVELY, one can make the physics selection inside the task\r
187     // UserExec().\r
188     // For this case, comment out the task->SelectCol.... line, \r
189     // and see AliBasicTask.cxx UserExec() function for details on this.\r
190 \r
191     //gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");\r
192     //AliPhysicsSelectionTask *physSelTask = AddTaskPhysicsSelection(bMCphyssel);\r
193     //if(!physSelTask) { Printf("no physSelTask"); return; }\r
194     //AliPhysicsSelection *physSel = physSelTask->GetPhysicsSelection();\r
195     //physSel->AddCollisionTriggerClass("+CINT1B-ABCE-NOPF-ALL");// #3119 #769");\r
196                 \r
197     // create task\r
198     //Add the centrality determination task and the physics selection \r
199     // (only on ESD level, in AODs centrality is already in header and events are selected)\r
200 //    if((!bAOD)&&(!bMCtruth)){\r
201 //      gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");\r
202 //      AliCentralitySelectionTask *taskCentrality = AddTaskCentrality();\r
203 \r
204       // Add physics selection task (NOT needed for AODs)\r
205 //      gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");\r
206 //      AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection(bMCphyssel);\r
207 //    }\r
208 /////////////////////////////////////////\r
209     //Add flow centrality bayesian \r
210 \r
211       gROOT->LoadMacro("AddTaskFlowHigherOrdersAllPID.C");\r
212       //gROOT->LoadMacro("$ALICE_ROOT/PWGCF/FLOW/macros/AddTaskFlowHigherOrdersAllPID.C");\r
213   //  gROOT->LoadMacro("$ALICE_ROOT/PWGCF/FLOW/macros/AddTaskFlowCentralityBayesian.C");\r
214   //  gROOT->LoadMacro("~/Desktop/work/PhD/flow/AddTaskFlowCentralityBayesian.C");\r
215       AliAnalysisTaskFlowEvent* FlowTask = AddTaskFlowHigherOrdersAllPID(AliVEvent::kCentral | AliVEvent::kSemiCentral | AliVEvent::kMB,0.,80.,"AnalysisResults",kTRUE,768,768,AliPID::kPion,AliFlowTrackCuts::kTOFbayesian,0,kFALSE,-0.8,0.8,"");\r
216 /////////////////////////////////////////\r
217 \r
218     //Add the PID response\r
219 //    if((kUsePID)||(kNSigmaElectronRejection)) {\r
220 //      gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");\r
221 //      AddTaskPIDResponse(bMCphyssel); \r
222 //    }\r
223 \r
224     //Add the VZERO event plane task\r
225 //    gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskVZEROEPSelection.C"); \r
226 //    AliVZEROEPSelectionTask* epSelTask = AddTaskVZEROEPSelection();\r
227 \r
228     //Add the BF task (all centralities)\r
229  //   gROOT->LoadMacro("$ALICE_ROOT/PWGCF/EBYE/macros/AddTaskBalancePsiCentralityTrain.C"); \r
230 \r
231 //    AliAnalysisTaskBFPsi *taskBF = AddTaskBalancePsiCentralityTrain(0, 500, kFALSE, kTRUE, kFALSE, "V0M", 10, -1, -1, 0.2, 20.0, -0.8, 0.8, -1, -1, kUsePID, kFALSE, kTRUE, 0.02, kFALSE, 0.04, kTRUE, 0.1, 128, 1, "AnalysisResults","TE","Multiplicity","AOD",kTRUE, kNSigmaElectronRejection);\r
232     //taskBF->SetDebugLevel();\r
233 \r
234     // enable debug printouts\r
235     //mgr->SetDebugLevel(2);\r
236     //mgr->SetUseProgressBar(1,100);\r
237     if (!mgr->InitAnalysis()) return;\r
238     mgr->PrintStatus();\r
239   \r
240     // start analysis\r
241     Printf("Starting Analysis....");\r
242     if(runtype == "local") \r
243       mgr->StartAnalysis("local",chain);\r
244     else\r
245       mgr->StartAnalysis(runtype,nentries,firstentry);\r
246 }\r
247 \r
248 //______________________________________________________________________________\r
249 AliAnalysisGrid* CreateAlienHandler(Bool_t bAOD, Int_t bunchN, const char *taskname, const char *gridmode, const char *proofcluster, const char *proofdataset)\r
250 {\r
251     AliAnalysisAlien *plugin = new AliAnalysisAlien();\r
252     // Set the run mode (can be "full", "test", "offline", "submit" or "terminate")\r
253     plugin->SetRunMode(gridmode);\r
254 \r
255     // Set versions of used packages\r
256     plugin->SetAPIVersion("V1.1x");\r
257     plugin->SetROOTVersion("v5-34-08");\r
258     plugin->SetAliROOTVersion("v5-05-19-AN");\r
259 \r
260     // Declare input data to be processed.\r
261 \r
262     // Method 1: Create automatically XML collections using alien 'find' command.\r
263     // Define production directory LFN\r
264     plugin->SetGridDataDir("/alice/data/2010/LHC10h/");\r
265     // On real reconstructed data:\r
266     // plugin->SetGridDataDir("/alice/data/2009/LHC09d");\r
267 \r
268     // Set data search pattern\r
269     //plugin->SetDataPattern("*ESDs.root"); // THIS CHOOSES ALL PASSES\r
270     // Data pattern for reconstructed data\r
271     if(!bAOD){\r
272       plugin->SetDataPattern("*ESDs/pass2/*ESDs.root"); // CHECK LATEST PASS OF DATA SET IN ALIENSH\r
273     } \r
274     else{\r
275       plugin->SetDataPattern("*ESDs/pass2/AOD086/*/AliAOD.root");\r
276     }\r
277 \r
278     plugin->SetRunPrefix("000");   // real data\r
279     // ...then add run numbers to be considered\r
280     //plugin->SetRunRange(114917,115322);\r
281 \r
282     if(bunchN==0){\r
283       plugin->AddRunNumber(137366);\r
284     }\r
285     \r
286     //bunch1\r
287     else if(bunchN == 1){\r
288       plugin->AddRunNumber(139510);\r
289       plugin->AddRunNumber(139507);\r
290       plugin->AddRunNumber(139505);\r
291       plugin->AddRunNumber(139503); \r
292       plugin->AddRunNumber(139465); \r
293       plugin->AddRunNumber(139438);\r
294       plugin->AddRunNumber(139437);\r
295       plugin->AddRunNumber(139360); \r
296       plugin->AddRunNumber(139329);\r
297       plugin->AddRunNumber(139328); \r
298     }\r
299 \r
300     //bunch2\r
301     else if(bunchN == 2){\r
302       plugin->AddRunNumber(139314); \r
303       plugin->AddRunNumber(139310);\r
304       plugin->AddRunNumber(139309); \r
305       plugin->AddRunNumber(139173); \r
306       plugin->AddRunNumber(139107); \r
307       plugin->AddRunNumber(139105); \r
308       plugin->AddRunNumber(139038); \r
309       plugin->AddRunNumber(139037); \r
310       plugin->AddRunNumber(139036); \r
311       plugin->AddRunNumber(139029); \r
312       plugin->AddRunNumber(139028); \r
313       plugin->AddRunNumber(138872); \r
314       plugin->AddRunNumber(138871); \r
315       plugin->AddRunNumber(138870); \r
316       plugin->AddRunNumber(138837); \r
317       plugin->AddRunNumber(138732); \r
318       plugin->AddRunNumber(138730);\r
319       plugin->AddRunNumber(138666);\r
320       plugin->AddRunNumber(138662); \r
321       plugin->AddRunNumber(138653); \r
322     }\r
323 \r
324     else if(bunchN == 3){\r
325       plugin->AddRunNumber(138652);\r
326       plugin->AddRunNumber(138638);\r
327       plugin->AddRunNumber(138624); \r
328       plugin->AddRunNumber(138621); \r
329       plugin->AddRunNumber(138583); \r
330       plugin->AddRunNumber(138582); \r
331       plugin->AddRunNumber(138579); \r
332       plugin->AddRunNumber(138578);\r
333       plugin->AddRunNumber(138534);\r
334       plugin->AddRunNumber(138469); \r
335     }\r
336 \r
337     else if(bunchN == 4){\r
338       \r
339       plugin->AddRunNumber(138442);\r
340       plugin->AddRunNumber(138439);\r
341       plugin->AddRunNumber(138438);\r
342       plugin->AddRunNumber(138396); \r
343       plugin->AddRunNumber(138364); \r
344       plugin->AddRunNumber(138275); \r
345       plugin->AddRunNumber(138225); \r
346       plugin->AddRunNumber(138201);\r
347       plugin->AddRunNumber(138197); \r
348       plugin->AddRunNumber(138192); \r
349     }\r
350 \r
351     else if(bunchN == 5){\r
352 \r
353       plugin->AddRunNumber(138190);\r
354       plugin->AddRunNumber(137848); \r
355       plugin->AddRunNumber(137844); \r
356       plugin->AddRunNumber(137752); \r
357       plugin->AddRunNumber(137751); \r
358       plugin->AddRunNumber(137724); \r
359       plugin->AddRunNumber(137722); \r
360       plugin->AddRunNumber(137718); \r
361       plugin->AddRunNumber(137704); \r
362       plugin->AddRunNumber(137693);\r
363     }\r
364 \r
365     else if(bunchN == 6){\r
366 \r
367       plugin->AddRunNumber(137692); \r
368       plugin->AddRunNumber(137691); \r
369       plugin->AddRunNumber(137686); \r
370       plugin->AddRunNumber(137685); \r
371       plugin->AddRunNumber(137639); \r
372       plugin->AddRunNumber(137638);\r
373       plugin->AddRunNumber(137608); \r
374       plugin->AddRunNumber(137595);\r
375       plugin->AddRunNumber(137549);\r
376       plugin->AddRunNumber(137546); \r
377 \r
378     }\r
379 \r
380     else if(bunchN == 7){\r
381 \r
382       plugin->AddRunNumber(137544); \r
383       plugin->AddRunNumber(137541); \r
384       plugin->AddRunNumber(137539); \r
385       plugin->AddRunNumber(137531); \r
386       plugin->AddRunNumber(137530); \r
387       plugin->AddRunNumber(137443); \r
388       plugin->AddRunNumber(137441); \r
389       plugin->AddRunNumber(137440); \r
390       plugin->AddRunNumber(137439); \r
391       plugin->AddRunNumber(137434); \r
392 \r
393     }\r
394 \r
395     else if(bunchN == 8){\r
396 \r
397       plugin->AddRunNumber(137432); \r
398       plugin->AddRunNumber(137431); \r
399       plugin->AddRunNumber(137430); \r
400       plugin->AddRunNumber(137366); \r
401       plugin->AddRunNumber(137243); \r
402       plugin->AddRunNumber(137236);\r
403       plugin->AddRunNumber(137235);\r
404       plugin->AddRunNumber(137232); \r
405       plugin->AddRunNumber(137231); \r
406       plugin->AddRunNumber(137162); \r
407       plugin->AddRunNumber(137161);\r
408     }\r
409 \r
410     else{\r
411 \r
412       stderr<<"BUNCH NOT THERE"<<endl;\r
413       return NULL;\r
414 \r
415     }\r
416 \r
417     //plugin->AddRunList("139510, 139507, 139505, 139503, 139465, 139438, 139437, 139360, 139329, 139328, 139314, 139310, 139309, 139173, 139107, 139105, 139038, 139037, 139036, 139029, 139028, 138872, 138871, 138870, 138837, 138732, 138730, 138666, 138662, 138653, 138652, 138638, 138624, 138621, 138583, 138582, 138579, 138578, 138534, 138469, 138442, 138439, 138438, 138396, 138364, 138275, 138225, 138201, 138197, 138192, 138190, 137848, 137844, 137752, 137751, 137724, 137722, 137718, 137704, 137693, 137692, 137691, 137686, 137685, 137639, 137638, 137608, 137595, 137549, 137546, 137544, 137541, 137539, 137531, 137530, 137443, 137441, 137440, 137439, 137434, 137432, 137431, 137430, 137366, 137243, 137236, 137235, 137232, 137231, 137162, 137161");\r
418 \r
419 \r
420 \r
421 \r
422 \r
423     plugin->SetNrunsPerMaster(1);\r
424     plugin->SetOutputToRunNo();\r
425     // comment out the next line when using the "terminate" option, unless\r
426     // you want separate merged files for each run\r
427     plugin->SetMergeViaJDL();\r
428 \r
429     // Method 2: Declare existing data files (raw collections, xml collections, root file)\r
430     // If no path mentioned data is supposed to be in the work directory (see SetGridWorkingDir())\r
431     // XML collections added via this method can be combined with the first method if\r
432     // the content is compatible (using or not tags)\r
433     //   plugin->AddDataFile("tag.xml");\r
434     //   plugin->AddDataFile("/alice/data/2008/LHC08c/000057657/raw/Run57657.Merged.RAW.tag.root");\r
435 \r
436     // Define alien work directory where all files will be copied. Relative to alien $HOME.\r
437     plugin->SetGridWorkingDir(taskname);\r
438 \r
439     // Declare alien output directory. Relative to working directory.\r
440     plugin->SetGridOutputDir("out"); // In this case will be $HOME/taskname/out\r
441 \r
442    // Declare the analysis source files names separated by blancs. To be compiled runtime\r
443     // using ACLiC on the worker nodes.\r
444     plugin->SetAnalysisSource("AliBalance.cxx AliAnalysisTaskBF.cxx");\r
445 \r
446     // Declare all libraries (other than the default ones for the framework. These will be\r
447     // loaded by the generated analysis macro. Add all extra files (task .cxx/.h) here.\r
448     //plugin->AddIncludePath("-I.");\r
449     //plugin->SetAdditionalLibs("libPWGCFebye.so");\r
450     plugin->SetAdditionalLibs("AliBalance.cxx AliBalance.h AliAnalysisTaskBF.cxx AliAnalysisTaskBF.h");\r
451 \r
452      // Declare the output file names separated by blancs.\r
453     // (can be like: file.root or file.root@ALICE::Niham::File)\r
454     // To only save certain files, use SetDefaultOutputs(kFALSE), and then\r
455     // SetOutputFiles("list.root other.filename") to choose which files to save\r
456     plugin->SetDefaultOutputs();\r
457     //plugin->SetOutputFiles("list.root");\r
458 \r
459     // Optionally set a name for the generated analysis macro (default MyAnalysis.C)\r
460     plugin->SetAnalysisMacro(Form("%s.C",taskname));\r
461 \r
462     // Optionally set maximum number of input files/subjob (default 100, put 0 to ignore)\r
463     plugin->SetSplitMaxInputFileNumber(100);\r
464 \r
465     // Optionally modify the executable name (default analysis.sh)\r
466     plugin->SetExecutable(Form("%s.sh",taskname));\r
467 \r
468     // set number of test files to use in "test" mode\r
469     plugin->SetNtestFiles(1);\r
470 \r
471     // Optionally resubmit threshold.\r
472     plugin->SetMasterResubmitThreshold(90);\r
473 \r
474     // Optionally set time to live (default 30000 sec)\r
475     plugin->SetTTL(90000);\r
476 \r
477     // Optionally set input format (default xml-single)\r
478     plugin->SetInputFormat("xml-single");\r
479 \r
480     // Optionally modify the name of the generated JDL (default analysis.jdl)\r
481     plugin->SetJDLName(Form("%s.jdl",taskname));\r
482 \r
483     // Optionally modify job price (default 1)\r
484     plugin->SetPrice(1);      \r
485 \r
486     // Optionally modify split mode (default 'se')    \r
487     plugin->SetSplitMode("se");\r
488 \r
489     //plugin->SetUseSubmitPolicy();\r
490     //plugin->SetKeepLogs();\r
491     \r
492     //----------------------------------------------------------\r
493     //---      PROOF MODE SPECIFIC SETTINGS         ------------\r
494     //---------------------------------------------------------- \r
495     // Proof cluster\r
496     plugin->SetProofCluster(proofcluster);\r
497     // Dataset to be used   \r
498     plugin->SetProofDataSet(proofdataset);\r
499     // May need to reset proof. Supported modes: 0-no reset, 1-soft, 2-hard\r
500     plugin->SetProofReset(0);\r
501     // May limit number of workers\r
502     plugin->SetNproofWorkers(0);\r
503     // May limit the number of workers per slave\r
504     plugin->SetNproofWorkersPerSlave(1);   \r
505     // May use a specific version of root installed in proof\r
506     plugin->SetRootVersionForProof("current");\r
507     // May set the aliroot mode. Check http://aaf.cern.ch/node/83 \r
508     plugin->SetAliRootMode("default"); // Loads AF libs by default\r
509     // May request ClearPackages (individual ClearPackage not supported)\r
510     plugin->SetClearPackages(kFALSE);\r
511     // Plugin test mode works only providing a file containing test file locations, used in "local" mode also\r
512     plugin->SetFileForTestMode("files.txt"); // file should contain path name to a local directory containg *ESDs.root etc\r
513     // Request connection to alien upon connection to grid\r
514     plugin->SetProofConnectGrid(kFALSE);\r
515 \r
516     plugin->Print();\r
517 \r
518     return plugin;\r
519 }\r
520 \r