]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/RESONANCES/macros/lego_train/AddAMRsn.C
Split: fix refs to AddTaskCentrality.C
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / macros / lego_train / AddAMRsn.C
CommitLineData
af61092c 1#ifndef __CINT__
2#include "AliRsnTrainManager.h"
3#endif
4Bool_t AddAMRsnTrain(TString analysisSource = "proof", TString analysisMode = "test",TString input="aod",TString inputMC="", TString postfix = "",TString idStr="0")
5{
6
7 Bool_t usePrivateTrain = kFALSE;
8 usePrivateTrain = kTRUE;
9
10 TString legoTrainPath = "$ALICE_ROOT/PWGLF/RESONANCES/macros/lego_train";
11// legoTrainPath = "/home/mvala/git/AliRsn/PWGLF/RESONANCES/macros/lego_train";
12 AliAnalysisManager::SetGlobalStr("RsnLegoTrainPath",legoTrainPath.Data());
13
14 AliAnalysisManager *mrg = AliAnalysisManager::GetAnalysisManager();
15
16 TString rsnBaseSettings = "Rsn_pp";
17// rsnBaseSettings = "Rsn_PbPb";
18// rsnBaseSettings = "Rsn_pPb";
19
20 Bool_t useRsnMini = kTRUE;
21// useRsnMini = kFALSE;
22
23
24 Bool_t useMixing = kFALSE;
25// useMixing = kTRUE;
26
27 // RSN Setting (same as old AddRsnToManager<Rsn>.C)
28 // Rsn Particle
29 TString rsnStr="Phi";
30 // Rsn Cut
31 TString rsnCutStr="";
32
33 rsnCutStr="PhiNsigma:KTPCnsig30";
34
35 if ((rsnCutStr.IsNull())&&(!postfix.IsNull())) {
36 rsnCutStr = "PhiNsigma:";
37 rsnCutStr.Append(postfix.Data());
38 }
39
40 // Rsn Quality Cut
41 TString rsnQualityCutStr = "";
42// rsnQualityCutStr = "pp_LHC11a_p4_120";
43// rsnQualityCutStr = "pp_LHC11a_p4_70";
44
45
46 TString extraMacro = "";
47 TString extraMacroArgs = "";
48// extraMacro = "RsnTrainSettingsExtra.C";
49// extraMacroArgs = "10.0,10,1,1,1,1,1,1,1,0";
50// extraMacroArgs = "10, 5, 5, -1, 1, 0, 1, 1, 1, 0";
51
52 input.ToLower();
53 inputMC.ToLower();
54 Bool_t useMC = !inputMC.CompareTo("mc");
55 Bool_t valid;
56
57 if (usePrivateTrain) {
58 if (!RsnLoadMacro("RsnPrivateTrainBaseSettings.C")) return kFALSE;
59
60 RsnPrivateTrainBaseSettings();
61
62 Int_t eventMixinPar = AliAnalysisManager::GetGlobalInt("rsnUseEventMixingPar",valid);
63 Int_t rsnPar = AliAnalysisManager::GetGlobalInt("rsnUseRSNPar",valid);
64 Int_t rsnParDev = AliAnalysisManager::GetGlobalInt("rsnUseRSNParDev",valid);
65 if (eventMixinPar) rsnPar = 1;
66 if (rsnPar&&rsnParDev>=0) rsnParDev=1;
67
68 Int_t pidResponse = AliAnalysisManager::GetGlobalInt("rsnUsePIDResponse",valid);
69 Int_t useRsnIH = AliAnalysisManager::GetGlobalInt("rsnUseRsnInputHandler",valid);
70 Int_t physSel = AliAnalysisManager::GetGlobalInt("rsnUsePhysSel",valid);
71 Int_t useCentralityTask = AliAnalysisManager::GetGlobalInt("rsnUseCentralityTask",valid);
72 Int_t useEventPlaneTask = AliAnalysisManager::GetGlobalInt("rsnUseEventPlaneTask",valid);
73 Int_t useVZEROEPSelection = AliAnalysisManager::GetGlobalInt("rsnUseVZEROEPSelection",valid);
74 Int_t usePIDqa = AliAnalysisManager::GetGlobalInt("rsnUsePIDqa",valid);
75
76 // ALICE stuff
77 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
78 if (!mgr) { Printf("Error[AddAMRsn] mgr is null !!!"); return kFALSE; }
79
80 AliAnalysisGrid *analysisPlugin = mgr->GetGridHandler();
81 if (!analysisPlugin) { Printf("Error[AddAMRsn] : analysisPlugin is null !!!"); return kFALSE; }
82
83 TString myAdditionalLibs;
84 if (eventMixinPar) { AliAnalysisAlien::SetupPar("EventMixing"); myAdditionalLibs += " EventMixing.par"; }
b0635849 85 else { gSystem->Load("libEventMixing"); myAdditionalLibs += " libEventMixing.so"; }
af61092c 86
87 TString rsnLibName = "PWGLFresonances";
88 if (gSystem->Getenv("ALICE_ROOT")) {
89 TString alirootVersion = gSystem->GetFromPipe("aliroot --version | awk '{print $3}'");
90 if (alirootVersion<"v5-02-19-AN" && alirootVersion.CompareTo("trunk")) rsnLibName = "PWG2resonances";
91 if (rsnPar) { AliAnalysisAlien::SetupPar(rsnLibName.Data()); myAdditionalLibs += Form(" %s.par",rsnLibName.Data()); }
b0635849 92 else { gSystem->Load(Form("lib%s",rsnLibName.Data())); myAdditionalLibs += Form(" lib%s.so",rsnLibName.Data()); }
af61092c 93 }
94 if (rsnParDev>=0) {
95 if (rsnParDev) { AliAnalysisAlien::SetupPar("PWGLFresonancesdev"); myAdditionalLibs += " PWGLFresonancesdev.par"; }
b0635849 96 else { gSystem->Load("libPWGLFresonancesdev"); myAdditionalLibs += " libPWGLFresonancesdev.so"; }
af61092c 97 }
98 analysisPlugin->SetAdditionalLibs(myAdditionalLibs.Data());
99
100 AliMultiInputEventHandler *multiInputHandler = 0;
101 AliInputEventHandler *inputHandler = mgr->GetInputEventHandler();
102
103 TString className = inputHandler->ClassName();
104 if (!className.CompareTo("AliMultiInputEventHandler")) {
105 multiInputHandler = (AliMultiInputEventHandler *)inputHandler;
106 }
107
108 AliRsnInputHandler *rsnIH=0;
109 if (pidResponse) {
110 if (multiInputHandler) {
111 // add PID Response Handler
112 if (!RsnLoadMacro("AddPIDResponseInputHandler.C")) return kFALSE;
113 AddPIDResponseInputHandler(multiInputHandler,useMC);
114 } else {
115 Printf("Adding PIDResponse task ...");
116 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
117 AddTaskPIDResponse(useMC);
118 }
119 }
120
121 if (multiInputHandler && useRsnIH) {
122 // add Rsn input handler (it has to be after ESD,MC,Tender input handler, but before Mixing)
123 rsnIH = new AliRsnInputHandler();
124 multiInputHandler->AddInputEventHandler(rsnIH);
125 }
126
127 if (physSel>0) {
128 if (!input.CompareTo("esd")) {
129 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
130 Bool_t physSelBigOut = kTRUE;
131// physSelBigOut = kFALSE;
132
133 AddTaskPhysicsSelection(useMC,kTRUE,0,physSelBigOut);
134 if (physSelBigOut) mrg->SetSpecialOutputLocation("root://aaa//aaa/");
135 }
136
137 // maybe we can put it in $ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C
138 if (multiInputHandler) {
139 AliInputEventHandler *ih = multiInputHandler->GetFirstInputEventHandler();
140 ih->SetEventSelection(multiInputHandler->GetEventSelection());
141 }
142 }
143
144 if (useCentralityTask) {
1c06a186 145 gROOT->LoadMacro("$ALICE_ROOT/OADB/macros/AddTaskCentrality.C");
af61092c 146 AliCentralitySelectionTask *centralityTask = AddTaskCentrality(kFALSE);
147 }
148
149 if (useEventPlaneTask) {
150 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskEventplane.C");
151 AliEPSelectionTask *eventPlaneTask = AddTaskEventplane();
152 }
153
154 if (useVZEROEPSelection) {
155 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskVZEROEPSelection.C");
156 AddTaskVZEROEPSelection();
157 }
158
159 if (usePIDqa) {
160 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDqa.C");
161 AddTaskPIDqa();
162 }
163
164 } else {
165
4070f709 166 gSystem->Load("libEventMixing");
167 gSystem->Load("libCORRFW");
168 gSystem->Load("libPWGLFresonances");
af61092c 169 }
170
171 if (!input.CompareTo("esd")) rsnBaseSettings.Append("_ESD");
172 else rsnBaseSettings.Append("_AOD");
173
174 // use mc
175 if (useMC) rsnBaseSettings.Append("_MC");
176
177 // use mini
178 if (useRsnMini) rsnBaseSettings.Append("_MINI");
179
180 // use mixing
181 if (useMixing) rsnBaseSettings.Append("_MIX");
182
183 if (!RsnLoadMacro("AddRsnTaskTrain.C")) return kFALSE;
184 AddRsnTaskTrain(rsnBaseSettings.Data(),rsnStr.Data(),rsnCutStr.Data(),rsnQualityCutStr.Data(),extraMacro,extraMacroArgs);
185
186 Printf("%s_%s_%s %s",rsnBaseSettings.Data(),rsnStr.Data(),rsnCutStr.Data(),rsnQualityCutStr.Data());
187
188 return kTRUE;
189}
190
191Bool_t RsnLoadMacro(TString macro,TString path="") {
192
193 Bool_t valid;
194 TString lego_path = AliAnalysisManager::GetGlobalStr("RsnLegoTrainPath",valid);
195 if (!valid) lego_path = "$ALICE_ROOT/PWG2/RESONANCES/macros/lego_train";
196
197 if (!gSystem->AccessPathName(macro.Data())) {
198 gROOT->LoadMacro(macro.Data());
199 Printf("Macro loaded from %s/%s ...",gSystem->pwd(),macro.Data());
200 return kTRUE;
201 }
202
203 if (!gSystem->AccessPathName(gSystem->ExpandPathName(Form("%s/%s",lego_path.Data(),macro.Data())))) {
204 gROOT->LoadMacro(gSystem->ExpandPathName(Form("%s/%s",lego_path.Data(),macro.Data())));
205 Printf("Macro loaded from %s ...",gSystem->ExpandPathName(Form("%s/%s",lego_path.Data(),macro.Data())));
206 return kTRUE;
207 }
208
209 Printf("Error loading %s",macro.Data());
210
211 return kFALSE;
b0635849 212}