1 Bool_t AddAMRsn(TString analysisSource = "proof", TString analysisMode = "test",TString input="aod",TString inputMC="", TString postfix = "",TString idStr="0")
4 analysisSource.ToLower();analysisMode.ToLower();
6 if (!RsnLoadMacro("RsnManager.C")) return kFALSE;
7 TList *listRsn = RsnManager();
9 Bool_t useMC = !inputMC.CompareTo("mc");
12 Int_t eventMixinPar = AliAnalysisManager::GetGlobalInt("rsnUseEventMixingPar",valid);
13 Int_t rsnPar = AliAnalysisManager::GetGlobalInt("rsnUseRSNPar",valid);
14 if (eventMixinPar) rsnPar = 1;
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);
21 Int_t useMixing = AliAnalysisManager::GetGlobalInt("rsnUseMixing",valid);
23 Int_t isRsnMini = AliAnalysisManager::GetGlobalInt("rsnUseMiniPackage",valid);
24 Int_t mixNum = AliAnalysisManager::GetGlobalInt("rsnNumMix",valid);
27 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
28 if (!mgr) { Printf("Error[AddAMRsn] mgr is null !!!"); return kFALSE; }
30 AliAnalysisGrid *analysisPlugin = mgr->GetGridHandler();
31 if (!analysisPlugin) { Printf("Error[AddAMRsn] : analysisPlugin is null !!!"); return kFALSE; }
33 TString myAdditionalLibs;
34 if (eventMixinPar) { AliAnalysisAlien::SetupPar("EventMixing"); myAdditionalLibs += " EventMixing.par"; }
35 else { gSystem->Load("libEventMixing.so"); myAdditionalLibs += " libEventMixing.so"; }
37 if (rsnPar) { AliAnalysisAlien::SetupPar("PWG2resonances"); myAdditionalLibs += " PWG2resonances.par"; }
38 else { gSystem->Load("libPWG2resonances.so"); myAdditionalLibs += " libPWG2resonances.so"; }
40 analysisPlugin->SetAdditionalLibs(myAdditionalLibs.Data());
43 AliMultiInputEventHandler *multiInputHandler = mgr->GetInputEventHandler();
44 AliRsnInputHandler *rsnIH=0;
47 // add PID Response Handler
48 if (!RsnLoadMacro("AddPIDResponseInputHandler.C")) return kFALSE;
49 AddPIDResponseInputHandler(multiInputHandler);
53 // add Rsn input handler (it has to be after ESD,MC,Tender input handler, but before Mixing)
54 AliRsnInputHandler *rsnIH = new AliRsnInputHandler();
55 multiInputHandler->AddInputEventHandler(rsnIH);
59 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
60 AddTaskPhysicsSelection(useMC);
62 // maybe we can put it in $ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C
63 AliMultiInputEventHandler *multiIH = dynamic_cast<AliMultiInputEventHandler *>(mgr->GetInputEventHandler());
65 AliESDInputHandler *esdIH = dynamic_cast<AliESDInputHandler *>(multiIH->GetFirstInputEventHandler());
66 if (esdIH) esdIH->SetEventSelection(multiIH->GetEventSelection());
67 AliAODInputHandler *aodIH = dynamic_cast<AliAODInputHandler *>(multiIH->GetFirstInputEventHandler());
68 if (aodIH) aodIH->SetEventSelection(multiIH->GetEventSelection());
73 // load and run AddTask macro
74 if (!RsnLoadMacro("AddRsnAnalysisTask.C")) return kFALSE;
75 if (!RsnLoadMacro("RsnConfig.C")) return kFALSE;
76 if (!RsnLoadMacro("AddMixingHandler.C")) return kFALSE;
77 if (!analysisSource.CompareTo("grid")) {
78 if (!RsnLoadMacro("RsnGirdPlugin.C")) return kFALSE;
86 AliAnalysisTaskSE *task=0;
87 TString rsnName,rsnCutName;
89 while ((rsnObj = (TNamed *)next())) {
91 Printf("Adding task for RSN:%s CUT:%s ",rsnObj->GetName(),rsnObj->GetTitle());
92 l->Add(new TNamed(*rsnObj));
93 task = AddRsnAnalysisTask(input, useMC, useMixing,rsnIH,l,Form("%s_%d",postfix.Data(),iTask++));
95 // add mixing handler (uncomment to turn on Mixnig)
96 AddMixingHandler(multiInputHandler,task, input, useMC,isRsnMini, mixNum,postfix);
100 task = AddRsnAnalysisTask(input, useMC, useMixing,rsnIH,listRsn,postfix);
102 // add mixing handler (uncomment to turn on Mixnig)
103 AddMixingHandler(multiInputHandler,task, input, useMC,isRsnMini, mixNum,postfix);
110 Bool_t RsnLoadMacro(TString macro,TString path="") {
113 TString lego_path = AliAnalysisManager::GetGlobalStr("rsnLegoTrainPath",valid);
114 if (!valid) lego_path = "$ALICE_ROOT/PWG2/RESONANCES/macros/lego_train";
116 if (!gSystem->AccessPathName(macro.Data())) {
117 gROOT->LoadMacro(macro.Data());
118 Printf("Macro loaded from %s/%s ...",gSystem->pwd(),macro.Data());
122 if (!gSystem->AccessPathName(gSystem->ExpandPathName(Form("%s/%s",lego_path.Data(),macro.Data())))) {
123 gROOT->LoadMacro(gSystem->ExpandPathName(Form("%s/%s",lego_path.Data(),macro.Data())));
124 Printf("Macro loaded from %s ...",gSystem->ExpandPathName(Form("%s/%s",lego_path.Data(),macro.Data())));
128 Printf("Error loading %s",macro.Data());