2 #include "AliRsnTrainManager.h"
4 Bool_t AddAMRsn(TString analysisSource = "proof", TString analysisMode = "test",TString input="aod",TString inputMC="", TString postfix = "",TString idStr="0")
7 Bool_t usePrivateTrain = kFALSE;
8 usePrivateTrain = kTRUE;
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());
15 // RSN Setting (same as old AddRsnToManager<Rsn>.C)
19 TString rsnCutStr="PhiNsigma:KTPCnsig30";
21 TString rsnQualityCutStr = "";
22 // rsnQualityCutStr = "pp_LHC11_p4_120";
26 Bool_t useMC = !inputMC.CompareTo("mc");
29 if (usePrivateTrain) {
30 if (!RsnLoadMacro("RsnPrivateTrainBaseSettings.C")) return kFALSE;
32 RsnPrivateTrainBaseSettings();
34 Int_t eventMixinPar = AliAnalysisManager::GetGlobalInt("rsnUseEventMixingPar",valid);
35 Int_t rsnPar = AliAnalysisManager::GetGlobalInt("rsnUseRSNPar",valid);
36 Int_t rsnParDev = AliAnalysisManager::GetGlobalInt("rsnUseRSNParDev",valid);
37 if (eventMixinPar) rsnPar = 1;
38 if (rsnPar&&rsnParDev>=0) rsnParDev=1;
40 Int_t pidResponse = AliAnalysisManager::GetGlobalInt("rsnUsePIDResponse",valid);
41 Int_t useRsnIH = AliAnalysisManager::GetGlobalInt("rsnUseRsnInputHandler",valid);
42 Int_t physSel = AliAnalysisManager::GetGlobalInt("rsnUsePhysSel",valid);
43 Int_t useCentralityTask = AliAnalysisManager::GetGlobalInt("rsnUseCentralityTask",valid);
44 Int_t useEventPlaneTask = AliAnalysisManager::GetGlobalInt("rsnUseEventPlaneTask",valid);
45 Int_t usePIDqa = AliAnalysisManager::GetGlobalInt("rsnUsePIDqa",valid);
48 // Int_t splitMgrByTask = AliAnalysisManager::GetGlobalInt("rsnSplitMgrByTasks",valid);
50 // Int_t useMixing = AliAnalysisManager::GetGlobalInt("rsnUseMixing",valid);
52 // Int_t isRsnMini = AliAnalysisManager::GetGlobalInt("rsnUseMiniPackage",valid);
53 // Int_t mixNum = AliAnalysisManager::GetGlobalInt("rsnNumMix",valid);
56 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
57 if (!mgr) { Printf("Error[AddAMRsn] mgr is null !!!"); return kFALSE; }
59 AliAnalysisGrid *analysisPlugin = mgr->GetGridHandler();
60 if (!analysisPlugin) { Printf("Error[AddAMRsn] : analysisPlugin is null !!!"); return kFALSE; }
62 TString myAdditionalLibs;
63 if (eventMixinPar) { AliAnalysisAlien::SetupPar("EventMixing"); myAdditionalLibs += " EventMixing.par"; }
64 else { gSystem->Load("libEventMixing.so"); myAdditionalLibs += " libEventMixing.so"; }
66 TString rsnLibName = "PWGLFresonances";
67 if (gSystem->Getenv("ALICE_ROOT")) {
68 TString alirootVersion = gSystem->GetFromPipe("aliroot --version | awk '{print $3}'");
69 if (alirootVersion<"v5-02-19-AN" && alirootVersion.CompareTo("trunk")) rsnLibName = "PWG2resonances";
70 if (rsnPar) { AliAnalysisAlien::SetupPar(rsnLibName.Data()); myAdditionalLibs += Form(" %s.par",rsnLibName.Data()); }
71 else { gSystem->Load(Form("lib%s.so",rsnLibName.Data())); myAdditionalLibs += Form(" lib%s.so",rsnLibName.Data()); }
74 if (rsnParDev) { AliAnalysisAlien::SetupPar("PWGLFresonancesdev"); myAdditionalLibs += " PWGLFresonancesdev.par"; }
75 else { gSystem->Load("libPWGLFresonancesdev.so"); myAdditionalLibs += " libPWGLFresonancesdev.so"; }
77 analysisPlugin->SetAdditionalLibs(myAdditionalLibs.Data());
79 AliMultiInputEventHandler *multiInputHandler = 0;
80 AliInputEventHandler *inputHandler = mgr->GetInputEventHandler();
82 TString className = inputHandler->ClassName();
83 if (!className.CompareTo("AliMultiInputEventHandler")) {
84 multiInputHandler = (AliMultiInputEventHandler *)inputHandler;
87 AliRsnInputHandler *rsnIH=0;
90 if (multiInputHandler) {
91 // add PID Response Handler
92 if (!RsnLoadMacro("AddPIDResponseInputHandler.C")) return kFALSE;
93 AddPIDResponseInputHandler(multiInputHandler,useMC);
95 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
96 AddTaskPIDResponse(useMC);
100 if (multiInputHandler && useRsnIH) {
101 // add Rsn input handler (it has to be after ESD,MC,Tender input handler, but before Mixing)
102 rsnIH = new AliRsnInputHandler();
103 multiInputHandler->AddInputEventHandler(rsnIH);
107 if (!input.CompareTo("esd")) {
108 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
109 AddTaskPhysicsSelection(useMC);
112 // maybe we can put it in $ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C
113 if (multiInputHandler) {
114 AliInputEventHandler *ih = multiInputHandler->GetFirstInputEventHandler();
115 ih->SetEventSelection(multiInputHandler->GetEventSelection());
119 if (useCentralityTask) {
120 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");
121 AliCentralitySelectionTask *centralityTask = AddTaskCentrality(kFALSE);
124 if (useEventPlaneTask) {
125 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskEventplane.C");
126 AliEPSelectionTask *eventPlaneTask = AddTaskEventplane();
130 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDqa.C");
136 gSystem->Load("libEventMixing.so");
137 gSystem->Load("libCORRFW.so");
138 gSystem->Load("libPWGLFresonances.so");
141 TString rsnBaseSettings = "Rsn_pp";
142 // rsnBaseSettings = "Rsn_PbPb";
143 // rsnBaseSettings = "Rsn_pPb";
145 if (!input.CompareTo("esd")) rsnBaseSettings.Append("_ESD");
146 else rsnBaseSettings.Append("_AOD");
149 if (useMC) rsnBaseSettings.Append("_MC");
152 rsnBaseSettings.Append("_MINI");
154 if (!RsnLoadMacro("AddRsnTaskTrain.C")) return kFALSE;
155 AddRsnTaskTrain(rsnBaseSettings,rsnStr.Data(),rsnCutStr.Data(),"","","");
160 Bool_t RsnLoadMacro(TString macro,TString path="") {
163 TString lego_path = AliAnalysisManager::GetGlobalStr("RsnLegoTrainPath",valid);
164 if (!valid) lego_path = "$ALICE_ROOT/PWG2/RESONANCES/macros/lego_train";
166 if (!gSystem->AccessPathName(macro.Data())) {
167 gROOT->LoadMacro(macro.Data());
168 Printf("Macro loaded from %s/%s ...",gSystem->pwd(),macro.Data());
172 if (!gSystem->AccessPathName(gSystem->ExpandPathName(Form("%s/%s",lego_path.Data(),macro.Data())))) {
173 gROOT->LoadMacro(gSystem->ExpandPathName(Form("%s/%s",lego_path.Data(),macro.Data())));
174 Printf("Macro loaded from %s ...",gSystem->ExpandPathName(Form("%s/%s",lego_path.Data(),macro.Data())));
178 Printf("Error loading %s",macro.Data());