]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/RESONANCES/macros/lego_train/AddAMRsn.C
New version of lego_train macros (M. Vala)
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / macros / lego_train / AddAMRsn.C
CommitLineData
900e06e4 1Bool_t AddAMRsn(TString analysisSource = "proof", TString analysisMode = "test",TString input="aod",TString inputMC="", TString postfix = "",TString idStr="0")
2{
3
43d3541a 4 analysisSource.ToLower(); analysisMode.ToLower();
3248b3db 5
547e2d97 6 if (!RsnLoadMacro("RsnManager.C")) return kFALSE;
900e06e4 7 TList *listRsn = RsnManager();
8
9 Bool_t useMC = !inputMC.CompareTo("mc");
547e2d97 10 Bool_t valid;
11
12 Int_t eventMixinPar = AliAnalysisManager::GetGlobalInt("rsnUseEventMixingPar",valid);
13 Int_t rsnPar = AliAnalysisManager::GetGlobalInt("rsnUseRSNPar",valid);
14 if (eventMixinPar) rsnPar = 1;
15
16 Int_t pidResponse = AliAnalysisManager::GetGlobalInt("rsnUsePIDResponse",valid);
17 Int_t useRsnIH = AliAnalysisManager::GetGlobalInt("rsnUseRsnInputHandler",valid);
18 Int_t physSel = AliAnalysisManager::GetGlobalInt("rsnUsePhysSel",valid);
19 Int_t splitMgrByTask = AliAnalysisManager::GetGlobalInt("rsnSplitMgrByTasks",valid);
20
21 Int_t useMixing = AliAnalysisManager::GetGlobalInt("rsnUseMixing",valid);
22
23 Int_t isRsnMini = AliAnalysisManager::GetGlobalInt("rsnUseMiniPackage",valid);
24 Int_t mixNum = AliAnalysisManager::GetGlobalInt("rsnNumMix",valid);
900e06e4 25
26 // ALICE stuff
27 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
28 if (!mgr) { Printf("Error[AddAMRsn] mgr is null !!!"); return kFALSE; }
29
30 AliAnalysisGrid *analysisPlugin = mgr->GetGridHandler();
31 if (!analysisPlugin) { Printf("Error[AddAMRsn] : analysisPlugin is null !!!"); return kFALSE; }
32
900e06e4 33 TString myAdditionalLibs;
547e2d97 34 if (eventMixinPar) { AliAnalysisAlien::SetupPar("EventMixing"); myAdditionalLibs += " EventMixing.par"; }
900e06e4 35 else { gSystem->Load("libEventMixing.so"); myAdditionalLibs += " libEventMixing.so"; }
36
deb5c67a 37 TString rsnLibName = "PWGLFresonances";
38 if (gSystem->Getenv("ALICE_ROOT")) {
39 TString alirootVersion = gSystem->GetFromPipe("aliroot --version | awk '{print $3}'");
40 if (alirootVersion<"v5-02-19-AN" && alirootVersion.CompareTo("trunk")) rsnLibName = "PWG2resonances";
41 if (rsnPar) { AliAnalysisAlien::SetupPar(rsnLibName.Data()); myAdditionalLibs += Form(" %s.par",rsnLibName.Data()); }
42 else { gSystem->Load(Form("lib%s.so",rsnLibName.Data())); myAdditionalLibs += Form(" lib%s.so",rsnLibName.Data()); }
43 }
43d3541a 44
900e06e4 45 analysisPlugin->SetAdditionalLibs(myAdditionalLibs.Data());
46
900e06e4 47 AliMultiInputEventHandler *multiInputHandler = mgr->GetInputEventHandler();
48 AliRsnInputHandler *rsnIH=0;
49
547e2d97 50 if (pidResponse) {
900e06e4 51 // add PID Response Handler
547e2d97 52 if (!RsnLoadMacro("AddPIDResponseInputHandler.C")) return kFALSE;
43d3541a 53 AddPIDResponseInputHandler(multiInputHandler,useMC);
900e06e4 54 }
55
547e2d97 56 if (useRsnIH) {
900e06e4 57 // add Rsn input handler (it has to be after ESD,MC,Tender input handler, but before Mixing)
58 AliRsnInputHandler *rsnIH = new AliRsnInputHandler();
59 multiInputHandler->AddInputEventHandler(rsnIH);
60 }
61
547e2d97 62 if (physSel) {
900e06e4 63 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
64 AddTaskPhysicsSelection(useMC);
65
66 // maybe we can put it in $ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C
67 AliMultiInputEventHandler *multiIH = dynamic_cast<AliMultiInputEventHandler *>(mgr->GetInputEventHandler());
68 if (multiIH) {
69 AliESDInputHandler *esdIH = dynamic_cast<AliESDInputHandler *>(multiIH->GetFirstInputEventHandler());
70 if (esdIH) esdIH->SetEventSelection(multiIH->GetEventSelection());
71 AliAODInputHandler *aodIH = dynamic_cast<AliAODInputHandler *>(multiIH->GetFirstInputEventHandler());
72 if (aodIH) aodIH->SetEventSelection(multiIH->GetEventSelection());
73 }
74 }
75
76
77 // load and run AddTask macro
547e2d97 78 if (!RsnLoadMacro("AddRsnAnalysisTask.C")) return kFALSE;
79 if (!RsnLoadMacro("RsnConfig.C")) return kFALSE;
80 if (!RsnLoadMacro("AddMixingHandler.C")) return kFALSE;
3248b3db 81 if (!analysisSource.CompareTo("grid")) {
43d3541a 82 if (!RsnLoadMacro("RsnGridPlugin.C")) return kFALSE;
3248b3db 83 RsnGridPlugin();
84 }
900e06e4 85
547e2d97 86 if (splitMgrByTask) {
900e06e4 87 Int_t iTask=0;
88 TList *l=0;
89 TNamed *rsnObj = 0;
90 AliAnalysisTaskSE *task=0;
91 TString rsnName,rsnCutName;
92 TIter next(listRsn);
93 while ((rsnObj = (TNamed *)next())) {
94 l = new TList();
95 Printf("Adding task for RSN:%s CUT:%s ",rsnObj->GetName(),rsnObj->GetTitle());
96 l->Add(new TNamed(*rsnObj));
547e2d97 97 task = AddRsnAnalysisTask(input, useMC, useMixing,rsnIH,l,Form("%s_%d",postfix.Data(),iTask++));
98 if (useMixing) {
900e06e4 99 // add mixing handler (uncomment to turn on Mixnig)
547e2d97 100 AddMixingHandler(multiInputHandler,task, input, useMC,isRsnMini, mixNum,postfix);
900e06e4 101 }
102 }
103 } else {
547e2d97 104 task = AddRsnAnalysisTask(input, useMC, useMixing,rsnIH,listRsn,postfix);
105 if (useMixing) {
900e06e4 106 // add mixing handler (uncomment to turn on Mixnig)
547e2d97 107 AddMixingHandler(multiInputHandler,task, input, useMC,isRsnMini, mixNum,postfix);
900e06e4 108 }
109 }
110
547e2d97 111 return kTRUE;
112}
113
114Bool_t RsnLoadMacro(TString macro,TString path="") {
900e06e4 115
547e2d97 116 Bool_t valid;
117 TString lego_path = AliAnalysisManager::GetGlobalStr("rsnLegoTrainPath",valid);
118 if (!valid) lego_path = "$ALICE_ROOT/PWG2/RESONANCES/macros/lego_train";
900e06e4 119
547e2d97 120 if (!gSystem->AccessPathName(macro.Data())) {
121 gROOT->LoadMacro(macro.Data());
122 Printf("Macro loaded from %s/%s ...",gSystem->pwd(),macro.Data());
123 return kTRUE;
124 }
900e06e4 125
547e2d97 126 if (!gSystem->AccessPathName(gSystem->ExpandPathName(Form("%s/%s",lego_path.Data(),macro.Data())))) {
127 gROOT->LoadMacro(gSystem->ExpandPathName(Form("%s/%s",lego_path.Data(),macro.Data())));
128 Printf("Macro loaded from %s ...",gSystem->ExpandPathName(Form("%s/%s",lego_path.Data(),macro.Data())));
129 return kTRUE;
130 }
131
132 Printf("Error loading %s",macro.Data());
133
134 return kFALSE;
900e06e4 135}
43d3541a 136