]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/RESONANCES/macros/train/LHC2010-7TeV-phi/fixed_rapidity/AddRsnAnalysis.C
efbcf2c579cc6b45e6801696da57c9f1a0b188ac
[u/mrichter/AliRoot.git] / PWG2 / RESONANCES / macros / train / LHC2010-7TeV-phi / fixed_rapidity / AddRsnAnalysis.C
1 //
2 // This macro serves to add the RSN analysis task to the steering macro.
3 //
4 // Inputs:
5 //   - dataLabel   = a string with informations about the type of data
6 //                   which could be needed to be ported to the config macro
7 //                   to set up some cuts
8 //   - configMacro = macro which configures the analysis; it has *ALWAYS*
9 //                   defined inside a function named 'RsnConfigTask()',
10 //                   whatever the name of the macro itself, whose first two
11 //                   arguments must have to be the task and the 'dataLabel' argument.
12 //
13 Bool_t AddRsnAnalysis
14 (
15   const char *options,
16   const char *configs = "RsnConfigNoSA.C RsnConfigSA.C",
17   const char *path    = "$(ALICE_ROOT)/PWG2/RESONANCES/macros/train/LHC2010-7TeV-phi"
18 )
19 {
20   // retrieve analysis manager
21   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
22     
23   // create the task and connect with physics selection
24   AliRsnAnalysisSE *task = new AliRsnAnalysisSE("RsnAnalysis");
25   task->SetZeroEventPercentWarning(100.0);
26   task->SelectCollisionCandidates();
27
28   // add the task to manager
29   mgr->AddTask(task);
30
31   // load and execute all required configuration macroes in the string (arg #2)
32   TString    sList   = configs;
33   TObjArray *list    = sList.Tokenize(" ");
34   Int_t      nConfig = list->GetEntries();
35   Int_t      iConfig = 0;
36   for (iConfig = 0; iConfig < nConfig; iConfig++)
37   {
38     TObjString *ostr = (TObjString*)list->At(iConfig);
39     
40     // the config macro is assumed to be stored in the path in argument #3
41     // and to have three arguments: task name, a free string of options and the path where it is stored
42     // --> all of them is a string, and then it must be passed with the quote marks
43     const char *macro     = ostr->GetString().Data();
44     const char *argName   = Form("\"%s\"", task->GetName());
45     const char *argOption = Form("\"%s\"", options);
46     const char *argPath   = Form("\"%s\"", path);
47     gROOT->ProcessLine(Form(".x %s/%s(%s,%s,%s)", path, macro, argName, argOption, argPath));
48   }
49
50   // connect input container according to source choice
51   mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
52
53   // create paths for the output in the common file
54   Char_t commonPath[500];
55   sprintf(commonPath, "%s", AliAnalysisManager::GetCommonFileName());
56
57   // create containers for output
58   AliAnalysisDataContainer *outputInfo = mgr->CreateContainer("RsnInfo", TList::Class(), AliAnalysisManager::kOutputContainer, commonPath);
59   AliAnalysisDataContainer *outputHist = mgr->CreateContainer("RsnHist", TList::Class(), AliAnalysisManager::kOutputContainer, commonPath);
60   mgr->ConnectOutput(task, 1, outputInfo);
61   mgr->ConnectOutput(task, 2, outputHist);
62
63   return kTRUE;
64 }