TENDER becomes Tender
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / macros / mini / AnalysisSetupLStarPPb.C
CommitLineData
295b65bf 1/* Macro for setup of Lambda* analysis in PPb collisions.
2// Created by Sarita Sahoo, 30 Jan. 2014
3//
4//
5// This macro sets all the aspects of configuration of an Analysis Train run
6// which are always the same for all kinds of analysis (local, PROOF, AliEn)
7//
8// Inputs:
9//
10// - nmix = number of mixings to do (if > 0, initialize mixing stuff)
11// - options = a set of keywords which drive some configurations
12// - outputFileName = name of file produced by train
13// - configPath = a path where all required config macros are stored
14//
15// Notes:
16//
17// - in case the source is an ESD, and if inputs are a MC production
18// the MC input handler is created by default
19//
20// Returns:
21//
22// - if successful: the name of the expected input TTree (esdTree or aodTree)
23// - if failed : NULL
24*/
25
26TString Setup
27(
28 Int_t nmix,
29 const char *options,
30 const char *outputFileName,
31 const char *macroPath = "."
32)
33{
34
35
36 // prepare output
37 TString out("");
38
39 //
40 // === EXAMINE OPTIONS ==========================================================================
41 //
42
43 // this is done using the utility 'RsnOptions.C'
44 // which provides a unique way to interpret them
45
46 TString opt(options);
47 opt.ToUpper();
48
49 Bool_t isMC = opt.Contains("MC") || (!opt.Contains("DATA"));
50 Bool_t isPP = opt.Contains("PP") || (!opt.Contains("PBPB"));
51 Bool_t isESD = opt.Contains("ESD");
af472fff 52 Bool_t useTender = opt.Contains("Tender");
295b65bf 53 Bool_t noV0 = opt.Contains("NOV0");
54
55 //
56 // === LOAD LIBRARIES ===========================================================================
57 //
58
59 // load analysis libraries
60 gSystem->Load("libCore.so");
61 gSystem->Load("libGeom.so");
62 gSystem->Load("libVMC.so");
63 gSystem->Load("libMinuit.so");
64 gSystem->Load("libPhysics.so");
65 gSystem->Load("libTree.so");
66 gSystem->Load("libSTEERBase.so");
67 gSystem->Load("libESD.so");
68 gSystem->Load("libAOD.so");
69 gSystem->Load("libANALYSIS.so");
70 gSystem->Load("libANALYSISalice.so");
71 gSystem->Load("libEventMixing.so");
72 gSystem->Load("libCORRFW.so");
73 gSystem->Load("libPWGLFresonances.so");
74
75
76 // tender-related libraries
77 if (isESD && useTender) {
78 ::Info("AnalysisSetup", "Loading tender libraries");
af472fff 79 gSystem->Load("libTender.so");
80 gSystem->Load("libTenderSupplies.so");
295b65bf 81 } else if (!isESD) {
82 useTender = kFALSE;
83 }
84
85 // load development RSN library
86 if (!AliAnalysisAlien::SetupPar("PWGLFresonances.par")) return "";
87
88 //
89 // === CREATE ANALYSIS MANAGER ==================================================================
90 //
91
92 AliAnalysisManager *mgr = new AliAnalysisManager("RsnAnalysisManager");
93 mgr->SetCommonFileName(outputFileName);
94 ::Info("AnalysisSetup", "Common file name: %s", outputFileName);
95
96 //
97 // === INPUT / OUTPUT HANDLER CONFIGURATION =====================================================
98 //
99
100 if (isESD) {
101 out = "esdTree";
102 ::Info("AnalysisSetup", "Creating ESD handler");
103 AliESDInputHandler *esdHandler = new AliESDInputHandler();
104 mgr->SetInputEventHandler(esdHandler);
105 if (isMC) {
106 ::Info("AnalysisSetup", "Creating MC handler");
107 AliMCEventHandler *mcHandler = new AliMCEventHandler();
108 mgr->SetMCtruthEventHandler(mcHandler);
109 }
110 } else {
111 out = "aodTree";
112 ::Info("AnalysisSetup", "Creating AOD handler");
113 AliAODInputHandler *aodHandler = new AliAODInputHandler();
114 mgr->SetInputEventHandler(aodHandler);
115 }
116
117 //
af472fff 118 // === Tender TASK (ESD only -- optional) =======================================================
295b65bf 119 //
120
121 if (isESD && useTender) {
122 ::Info("AnalysisSetup", "Adding tender (and then accepting V0 info)", options);
123 gROOT->LoadMacro(Form("%s/AddTaskTender.C", macroPath));
124 AddTaskTender();
125 noV0 = kFALSE;
126 }
127
128 //
129 // === PHYSICS SELECTION (ESD only) =============================================================
130 //
131
132 if (isESD) {
133 ::Info("AnalysisSetup", "Add physics selection by default on ESD analysis");
134 gROOT->LoadMacro("$(ALICE_ROOT)/ANALYSIS/macros/AddTaskPhysicsSelection.C");
135 AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection(isMC);
136 if (noV0) {
137 ::Info("AnalysisSetup", "Skip of V0 info is required");
138 physSelTask->GetPhysicsSelection()->SetSkipV0(kTRUE);
139 }
140 }
141
142 //
143 // === CENTRALITY/PLANE (ESD only) ==============================================================
144 //
145 if (isESD && !isPP) {
146 ::Info("AnalysisSetup", "Add centrality and event plane computation tasks");
147 gROOT->LoadMacro("$(ALICE_ROOT)/ANALYSIS/macros/AddTaskCentrality.C");
148 gROOT->LoadMacro("$(ALICE_ROOT)/ANALYSIS/macros/AddTaskEventplane.C");
149 AliCentralitySelectionTask* taskCentrality = (AliCentralitySelectionTask*)AddTaskCentrality();
150 if (isMC) {
151 ::Info("AnalysisSetup", "Setting centrality computation for MC");
152 taskCentrality->SetMCInput();
153 }
154 AddTaskEventplane();
155 }
156 //
157 // === PID RESPONSE =============================================================================
158 //
159
160 gROOT->LoadMacro("$(ALICE_ROOT)/ANALYSIS/macros/AddTaskPIDResponse.C");
161 AddTaskPIDResponse(isMC,kTRUE,kTRUE);
162
163 //gROOT->LoadMacro("$(ALICE_ROOT)/ANALYSIS/macros/AddTaskPIDqa.C ");
164 //AddTaskPIDqa();
165
166 //
167 // === OTHER TASKS ==============================================================================
168 //
169
170 // add RSN task
171 gROOT->LoadMacro(Form("%s/AddTaskLStarPPb.C", macroPath));
172 if (!AddTaskLStarPPb(isMC, isPP, macroPath, nmix)) return "";
173
174 ::Info("AnalysisSetup", "Setup successful");
175 return out;
176}