]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/RESONANCES/macros/lego_train/AddRsnAnalysisTask.C
PWG2/SPECTRA -> PWGLF/SPECTRA migration
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / macros / lego_train / AddRsnAnalysisTask.C
1 #ifndef __CINT__
2 #include <TString.h>
3 #include <ANALYSIS/AliAnalysisManager.h>
4 #include <AliRsnAnalysisTask.h>
5 #include <PWG2/RESONANCES/AliRsnDaughterSelector.h>
6 #include <PWG2/RESONANCES/AliRsnMiniAnalysisTask.h>
7 #endif
8 AliAnalysisTaskSE *AddRsnAnalysisTask(TString format = "esd", Bool_t useMC = kFALSE,Bool_t isMixing = kFALSE,AliRsnInputHandler *rsnIH=0,TList *listRsn=0,TString postfix="")
9 {
10    // create manager
11    AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
12    if (!mgr) { Printf("Error [AddRsnAnalysisTask%s] : mgr is null !!!",postfix.Data()); return 0;}
13
14    // initialize task with all available slots, even if not all of them will be used:
15    AliAnalysisTaskSE *task = 0;
16
17    Bool_t valid;
18    Int_t isRsnMini = AliAnalysisManager::GetGlobalInt("rsnUseMiniPackage",valid);
19
20    if (isRsnMini) {
21       postfix.Prepend("Mini");
22       AliRsnMiniAnalysisTask *taskRsnMini = new AliRsnMiniAnalysisTask(Form("Rsn%s",postfix.Data()),useMC);
23       Int_t refreshPrint = AliAnalysisManager::GetGlobalInt("rsnMixPrintRefresh",valid);
24       if (valid) taskRsnMini->SetMixPrintRefresh(refreshPrint);
25       task = (AliAnalysisTaskSE *) taskRsnMini;
26    }
27    else {
28       AliRsnAnalysisTask *taskRsn = new AliRsnAnalysisTask(Form("Rsn%s",postfix.Data()));
29       task = (AliAnalysisTaskSE *) taskRsn;
30    }
31
32    // TODO this is tmp hack
33    if (!rsnIH) rsnIH = new AliRsnInputHandler();
34
35    //   gROOT->LoadMacro("RsnConfig.C");
36    if (!RsnConfig(task,useMC,isMixing,rsnIH,listRsn)) {
37       Printf("Error in RsnConfig.C");
38       return 0;
39    }
40
41    // add the task to manager
42    mgr->AddTask(task);
43
44    AliRsnDaughterSelector *sel = 0;
45
46    if (!isRsnMini) {
47       sel = rsnIH->GetSelector();
48       sel->Init();
49    }
50
51    // connect input container according to source choice
52    mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
53
54    // create paths for the output in the common file
55    TString commonPath = AliAnalysisManager::GetCommonFileName();
56
57    // create containers for output
58    AliAnalysisDataContainer *output = mgr->CreateContainer(Form("RsnHist%s", postfix.Data()), TList::Class(), AliAnalysisManager::kOutputContainer, commonPath.Data());
59
60    // big outout (expert only)
61    Int_t useBigOutput = 0;
62    if (useBigOutput) {
63       Printf("Using Big output ...");
64       task->UseBigOutput();
65       output->SetSpecialOutput();
66       mgr->SetSpecialOutputLocation("root://lx000.saske.sk:21094//tmp/mvala/");
67    }
68
69    mgr->ConnectOutput(task, 1, output);
70
71    return task;
72 }