]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/RESONANCES/macros/lego_train/AddAMRsn.C
Updated macros for lego_train (mvala)
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / macros / lego_train / AddAMRsn.C
1 #ifndef __CINT__
2 #include "AliRsnTrainManager.h"
3 #endif
4 Bool_t AddAMRsn(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
15    // RSN Setting (same as old AddRsnToManager<Rsn>.C)
16    // Rsn Particle
17    TString rsnStr="Phi";
18    // Rsn Cut
19    TString rsnCutStr="PhiNsigma:KTPCnsig30";
20    // Rsn Quality Cut
21    TString rsnQualityCutStr = "";
22    // rsnQualityCutStr = "pp_LHC11_p4_120";
23
24    input.ToLower();
25    inputMC.ToLower();
26    Bool_t useMC = !inputMC.CompareTo("mc");
27    Bool_t valid;
28
29    if (usePrivateTrain) {
30       if (!RsnLoadMacro("RsnPrivateTrainBaseSettings.C")) return kFALSE;
31
32       RsnPrivateTrainBaseSettings();
33
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;
39
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);
46
47
48 //      Int_t splitMgrByTask = AliAnalysisManager::GetGlobalInt("rsnSplitMgrByTasks",valid);
49
50 //      Int_t useMixing = AliAnalysisManager::GetGlobalInt("rsnUseMixing",valid);
51
52 //      Int_t isRsnMini = AliAnalysisManager::GetGlobalInt("rsnUseMiniPackage",valid);
53 //      Int_t mixNum = AliAnalysisManager::GetGlobalInt("rsnNumMix",valid);
54
55       // ALICE stuff
56       AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
57       if (!mgr) { Printf("Error[AddAMRsn] mgr is null !!!"); return kFALSE; }
58
59       AliAnalysisGrid *analysisPlugin = mgr->GetGridHandler();
60       if (!analysisPlugin) { Printf("Error[AddAMRsn] : analysisPlugin is null !!!"); return kFALSE; }
61
62       TString myAdditionalLibs;
63       if (eventMixinPar) { AliAnalysisAlien::SetupPar("EventMixing"); myAdditionalLibs += " EventMixing.par"; }
64       else { gSystem->Load("libEventMixing.so"); myAdditionalLibs += " libEventMixing.so"; }
65
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()); }
72       }
73       if (rsnParDev>=0) {
74          if (rsnParDev) { AliAnalysisAlien::SetupPar("PWGLFresonancesdev"); myAdditionalLibs += " PWGLFresonancesdev.par"; }
75          else { gSystem->Load("libPWGLFresonancesdev.so"); myAdditionalLibs += " libPWGLFresonancesdev.so"; }
76       }
77       analysisPlugin->SetAdditionalLibs(myAdditionalLibs.Data());
78
79       AliMultiInputEventHandler *multiInputHandler = 0;
80       AliInputEventHandler *inputHandler = mgr->GetInputEventHandler();
81
82       TString className = inputHandler->ClassName();
83       if (!className.CompareTo("AliMultiInputEventHandler")) {
84          multiInputHandler = (AliMultiInputEventHandler *)inputHandler;
85       }
86
87       AliRsnInputHandler *rsnIH=0;
88
89       if (pidResponse) {
90          if (multiInputHandler) {
91             // add PID Response Handler
92             if (!RsnLoadMacro("AddPIDResponseInputHandler.C")) return kFALSE;
93             AddPIDResponseInputHandler(multiInputHandler,useMC);
94          } else {
95             gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
96             AddTaskPIDResponse(useMC);
97          }
98       }
99
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);
104       }
105
106       if (physSel) {
107          if (!input.CompareTo("esd")) {
108             gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
109             AddTaskPhysicsSelection(useMC);
110          }
111
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());
116          }
117       }
118
119       if (useCentralityTask) {
120          gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");
121          AliCentralitySelectionTask *centralityTask = AddTaskCentrality(kFALSE);
122       }
123
124       if (useEventPlaneTask) {
125          gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskEventplane.C");
126          AliEPSelectionTask *eventPlaneTask = AddTaskEventplane();
127       }
128
129       if (usePIDqa) {
130          gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDqa.C");
131          AddTaskPIDqa();
132       }
133
134    } else {
135
136       gSystem->Load("libEventMixing.so");
137       gSystem->Load("libCORRFW.so");
138       gSystem->Load("libPWGLFresonances.so");
139    }
140
141    TString rsnBaseSettings = "Rsn_pp";
142 //   rsnBaseSettings = "Rsn_PbPb";
143 //   rsnBaseSettings = "Rsn_pPb";
144
145    if (!input.CompareTo("esd")) rsnBaseSettings.Append("_ESD");
146    else rsnBaseSettings.Append("_AOD");
147
148    // use mc
149    if (useMC) rsnBaseSettings.Append("_MC");
150
151    // use mini
152    rsnBaseSettings.Append("_MINI");
153
154    if (!RsnLoadMacro("AddRsnTaskTrain.C")) return kFALSE;
155    AddRsnTaskTrain(rsnBaseSettings,rsnStr.Data(),rsnCutStr.Data(),"","","");
156
157    return kTRUE;
158 }
159
160 Bool_t RsnLoadMacro(TString macro,TString path="") {
161
162    Bool_t valid;
163    TString lego_path = AliAnalysisManager::GetGlobalStr("RsnLegoTrainPath",valid);
164    if (!valid) lego_path = "$ALICE_ROOT/PWG2/RESONANCES/macros/lego_train";
165
166    if (!gSystem->AccessPathName(macro.Data())) {
167       gROOT->LoadMacro(macro.Data());
168       Printf("Macro loaded from %s/%s ...",gSystem->pwd(),macro.Data());
169       return kTRUE;
170    }
171
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())));
175       return kTRUE;
176    }
177
178    Printf("Error loading %s",macro.Data());
179
180    return kFALSE;
181 }