]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/RESONANCES/macros/lego_train/AddAMRsn.C
Added fix for label checking needed for MC (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
3248b3db 4 analysisSource.ToLower();analysisMode.ToLower();
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 }
900e06e4 44 analysisPlugin->SetAdditionalLibs(myAdditionalLibs.Data());
45
900e06e4 46 AliMultiInputEventHandler *multiInputHandler = mgr->GetInputEventHandler();
47 AliRsnInputHandler *rsnIH=0;
48
547e2d97 49 if (pidResponse) {
900e06e4 50 // add PID Response Handler
547e2d97 51 if (!RsnLoadMacro("AddPIDResponseInputHandler.C")) return kFALSE;
900e06e4 52 AddPIDResponseInputHandler(multiInputHandler);
53 }
54
547e2d97 55 if (useRsnIH) {
900e06e4 56 // add Rsn input handler (it has to be after ESD,MC,Tender input handler, but before Mixing)
57 AliRsnInputHandler *rsnIH = new AliRsnInputHandler();
58 multiInputHandler->AddInputEventHandler(rsnIH);
59 }
60
547e2d97 61 if (physSel) {
900e06e4 62 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
63 AddTaskPhysicsSelection(useMC);
64
65 // maybe we can put it in $ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C
66 AliMultiInputEventHandler *multiIH = dynamic_cast<AliMultiInputEventHandler *>(mgr->GetInputEventHandler());
67 if (multiIH) {
68 AliESDInputHandler *esdIH = dynamic_cast<AliESDInputHandler *>(multiIH->GetFirstInputEventHandler());
69 if (esdIH) esdIH->SetEventSelection(multiIH->GetEventSelection());
70 AliAODInputHandler *aodIH = dynamic_cast<AliAODInputHandler *>(multiIH->GetFirstInputEventHandler());
71 if (aodIH) aodIH->SetEventSelection(multiIH->GetEventSelection());
72 }
73 }
74
75
76 // load and run AddTask macro
547e2d97 77 if (!RsnLoadMacro("AddRsnAnalysisTask.C")) return kFALSE;
78 if (!RsnLoadMacro("RsnConfig.C")) return kFALSE;
79 if (!RsnLoadMacro("AddMixingHandler.C")) return kFALSE;
3248b3db 80 if (!analysisSource.CompareTo("grid")) {
81 if (!RsnLoadMacro("RsnGirdPlugin.C")) return kFALSE;
82 RsnGridPlugin();
83 }
900e06e4 84
547e2d97 85 if (splitMgrByTask) {
900e06e4 86 Int_t iTask=0;
87 TList *l=0;
88 TNamed *rsnObj = 0;
89 AliAnalysisTaskSE *task=0;
90 TString rsnName,rsnCutName;
91 TIter next(listRsn);
92 while ((rsnObj = (TNamed *)next())) {
93 l = new TList();
94 Printf("Adding task for RSN:%s CUT:%s ",rsnObj->GetName(),rsnObj->GetTitle());
95 l->Add(new TNamed(*rsnObj));
547e2d97 96 task = AddRsnAnalysisTask(input, useMC, useMixing,rsnIH,l,Form("%s_%d",postfix.Data(),iTask++));
97 if (useMixing) {
900e06e4 98 // add mixing handler (uncomment to turn on Mixnig)
547e2d97 99 AddMixingHandler(multiInputHandler,task, input, useMC,isRsnMini, mixNum,postfix);
900e06e4 100 }
101 }
102 } else {
547e2d97 103 task = AddRsnAnalysisTask(input, useMC, useMixing,rsnIH,listRsn,postfix);
104 if (useMixing) {
900e06e4 105 // add mixing handler (uncomment to turn on Mixnig)
547e2d97 106 AddMixingHandler(multiInputHandler,task, input, useMC,isRsnMini, mixNum,postfix);
900e06e4 107 }
108 }
109
547e2d97 110 return kTRUE;
111}
112
113Bool_t RsnLoadMacro(TString macro,TString path="") {
900e06e4 114
547e2d97 115 Bool_t valid;
116 TString lego_path = AliAnalysisManager::GetGlobalStr("rsnLegoTrainPath",valid);
117 if (!valid) lego_path = "$ALICE_ROOT/PWG2/RESONANCES/macros/lego_train";
900e06e4 118
547e2d97 119 if (!gSystem->AccessPathName(macro.Data())) {
120 gROOT->LoadMacro(macro.Data());
121 Printf("Macro loaded from %s/%s ...",gSystem->pwd(),macro.Data());
122 return kTRUE;
123 }
900e06e4 124
547e2d97 125 if (!gSystem->AccessPathName(gSystem->ExpandPathName(Form("%s/%s",lego_path.Data(),macro.Data())))) {
126 gROOT->LoadMacro(gSystem->ExpandPathName(Form("%s/%s",lego_path.Data(),macro.Data())));
127 Printf("Macro loaded from %s ...",gSystem->ExpandPathName(Form("%s/%s",lego_path.Data(),macro.Data())));
128 return kTRUE;
129 }
130
131 Printf("Error loading %s",macro.Data());
132
133 return kFALSE;
900e06e4 134}