#ifndef __CINT__
-#include <AliAnalysisManager.h>
-#include <AliLog.h>
+#include "AliRsnTrainManager.h"
#endif
-
-Bool_t AddAMRsn(TString analysisSource = "proof", TString analysisMode = "test",TString input="aod",TString inputMC="", TString postfix = "",TString idStr="0")
+Bool_t AddAMRsnTrain(TString analysisSource = "proof", TString analysisMode = "test",TString input="aod",TString inputMC="", TString postfix = "",TString idStr="0")
{
- analysisSource.ToLower(); analysisMode.ToLower();
+ Bool_t usePrivateTrain = kFALSE;
+ usePrivateTrain = kTRUE;
- if (!RsnLoadMacro("RsnManager.C")) return kFALSE;
- TList *listRsn = RsnManager();
+ TString legoTrainPath = "$ALICE_ROOT/PWGLF/RESONANCES/macros/lego_train";
+// legoTrainPath = "/home/mvala/git/AliRsn/PWGLF/RESONANCES/macros/lego_train";
+ AliAnalysisManager::SetGlobalStr("RsnLegoTrainPath",legoTrainPath.Data());
- Bool_t useMC = !inputMC.CompareTo("mc");
- input.ToLower();
- Bool_t valid;
+ AliAnalysisManager *mrg = AliAnalysisManager::GetAnalysisManager();
- Int_t eventMixinPar = AliAnalysisManager::GetGlobalInt("rsnUseEventMixingPar",valid);
- Int_t rsnPar = AliAnalysisManager::GetGlobalInt("rsnUseRSNPar",valid);
- Int_t rsnParDev = AliAnalysisManager::GetGlobalInt("rsnUseRSNParDev",valid);
- if (eventMixinPar) rsnPar = 1;
- if (rsnPar&&rsnParDev>=0) rsnParDev=1;
-
- Int_t pidResponse = AliAnalysisManager::GetGlobalInt("rsnUsePIDResponse",valid);
- Int_t useRsnIH = AliAnalysisManager::GetGlobalInt("rsnUseRsnInputHandler",valid);
- Int_t physSel = AliAnalysisManager::GetGlobalInt("rsnUsePhysSel",valid);
- Int_t useCentralityTask = AliAnalysisManager::GetGlobalInt("rsnUseCentralityTask",valid);
- Int_t useEventPlaneTask = AliAnalysisManager::GetGlobalInt("rsnUseEventPlaneTask",valid);
- Int_t usePIDqa = AliAnalysisManager::GetGlobalInt("rsnUsePIDqa",valid);
- Int_t splitMgrByTask = AliAnalysisManager::GetGlobalInt("rsnSplitMgrByTasks",valid);
-
- Int_t useMixing = AliAnalysisManager::GetGlobalInt("rsnUseMixing",valid);
-
- Int_t isRsnMini = AliAnalysisManager::GetGlobalInt("rsnUseMiniPackage",valid);
- Int_t mixNum = AliAnalysisManager::GetGlobalInt("rsnNumMix",valid);
-
- // ALICE stuff
- AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
- if (!mgr) { Printf("Error[AddAMRsn] mgr is null !!!"); return kFALSE; }
-
- AliAnalysisGrid *analysisPlugin = mgr->GetGridHandler();
- if (!analysisPlugin) { Printf("Error[AddAMRsn] : analysisPlugin is null !!!"); return kFALSE; }
-
- TString myAdditionalLibs;
- if (eventMixinPar) { AliAnalysisAlien::SetupPar("EventMixing"); myAdditionalLibs += " EventMixing.par"; }
- else { gSystem->Load("libEventMixing.so"); myAdditionalLibs += " libEventMixing.so"; }
-
- TString rsnLibName = "PWGLFresonances";
- if (gSystem->Getenv("ALICE_ROOT")) {
- TString alirootVersion = gSystem->GetFromPipe("aliroot --version | awk '{print $3}'");
- if (alirootVersion<"v5-02-19-AN" && alirootVersion.CompareTo("trunk")) rsnLibName = "PWG2resonances";
- if (rsnPar) { AliAnalysisAlien::SetupPar(rsnLibName.Data()); myAdditionalLibs += Form(" %s.par",rsnLibName.Data()); }
- else { gSystem->Load(Form("lib%s.so",rsnLibName.Data())); myAdditionalLibs += Form(" lib%s.so",rsnLibName.Data()); }
- }
+ TString rsnBaseSettings = "Rsn_pp";
+// rsnBaseSettings = "Rsn_PbPb";
+// rsnBaseSettings = "Rsn_pPb";
- if (rsnParDev>=0) {
- if (rsnParDev) { AliAnalysisAlien::SetupPar("PWGLFresonancesdev"); myAdditionalLibs += " PWGLFresonancesdev.par"; }
- else { gSystem->Load("libPWGLFresonancesdev.so"); myAdditionalLibs += " libPWGLFresonancesdev.so"; }
- }
- analysisPlugin->SetAdditionalLibs(myAdditionalLibs.Data());
+ Bool_t useRsnMini = kTRUE;
+// useRsnMini = kFALSE;
- AliMultiInputEventHandler *multiInputHandler = 0;
- AliInputEventHandler *inputHandler = mgr->GetInputEventHandler();
- TString className = inputHandler->ClassName();
- if (!className.CompareTo("AliMultiInputEventHandler")) {
- multiInputHandler = (AliMultiInputEventHandler *)inputHandler;
- }
+ Bool_t useMixing = kFALSE;
+// useMixing = kTRUE;
- AliRsnInputHandler *rsnIH=0;
+ // RSN Setting (same as old AddRsnToManager<Rsn>.C)
+ // Rsn Particle
+ TString rsnStr="Phi";
+ // Rsn Cut
+ TString rsnCutStr="";
- if (pidResponse) {
- if (multiInputHandler) {
- // add PID Response Handler
- if (!RsnLoadMacro("AddPIDResponseInputHandler.C")) return kFALSE;
- AddPIDResponseInputHandler(multiInputHandler,useMC);
- } else {
- gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
- AddTaskPIDResponse(useMC);
- }
- }
+ rsnCutStr="PhiNsigma:KTPCnsig30";
- if (multiInputHandler && useRsnIH) {
- // add Rsn input handler (it has to be after ESD,MC,Tender input handler, but before Mixing)
- rsnIH = new AliRsnInputHandler();
- multiInputHandler->AddInputEventHandler(rsnIH);
+ if ((rsnCutStr.IsNull())&&(!postfix.IsNull())) {
+ rsnCutStr = "PhiNsigma:";
+ rsnCutStr.Append(postfix.Data());
}
- if (physSel) {
- if (!input.CompareTo("esd")) {
- gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
- AddTaskPhysicsSelection(useMC);
+ // Rsn Quality Cut
+ TString rsnQualityCutStr = "";
+// rsnQualityCutStr = "pp_LHC11a_p4_120";
+// rsnQualityCutStr = "pp_LHC11a_p4_70";
+
+
+ TString extraMacro = "";
+ TString extraMacroArgs = "";
+// extraMacro = "RsnTrainSettingsExtra.C";
+// extraMacroArgs = "10.0,10,1,1,1,1,1,1,1,0";
+// extraMacroArgs = "10, 5, 5, -1, 1, 0, 1, 1, 1, 0";
+
+ input.ToLower();
+ inputMC.ToLower();
+ Bool_t useMC = !inputMC.CompareTo("mc");
+ Bool_t valid;
+
+ if (usePrivateTrain) {
+ if (!RsnLoadMacro("RsnPrivateTrainBaseSettings.C")) return kFALSE;
+
+ RsnPrivateTrainBaseSettings();
+
+ Int_t eventMixinPar = AliAnalysisManager::GetGlobalInt("rsnUseEventMixingPar",valid);
+ Int_t rsnPar = AliAnalysisManager::GetGlobalInt("rsnUseRSNPar",valid);
+ Int_t rsnParDev = AliAnalysisManager::GetGlobalInt("rsnUseRSNParDev",valid);
+ if (eventMixinPar) rsnPar = 1;
+ if (rsnPar&&rsnParDev>=0) rsnParDev=1;
+
+ Int_t pidResponse = AliAnalysisManager::GetGlobalInt("rsnUsePIDResponse",valid);
+ Int_t useRsnIH = AliAnalysisManager::GetGlobalInt("rsnUseRsnInputHandler",valid);
+ Int_t physSel = AliAnalysisManager::GetGlobalInt("rsnUsePhysSel",valid);
+ Int_t useCentralityTask = AliAnalysisManager::GetGlobalInt("rsnUseCentralityTask",valid);
+ Int_t useEventPlaneTask = AliAnalysisManager::GetGlobalInt("rsnUseEventPlaneTask",valid);
+ Int_t useVZEROEPSelection = AliAnalysisManager::GetGlobalInt("rsnUseVZEROEPSelection",valid);
+ Int_t usePIDqa = AliAnalysisManager::GetGlobalInt("rsnUsePIDqa",valid);
+
+ // ALICE stuff
+ AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
+ if (!mgr) { Printf("Error[AddAMRsn] mgr is null !!!"); return kFALSE; }
+
+ AliAnalysisGrid *analysisPlugin = mgr->GetGridHandler();
+ if (!analysisPlugin) { Printf("Error[AddAMRsn] : analysisPlugin is null !!!"); return kFALSE; }
+
+ TString myAdditionalLibs;
+ if (eventMixinPar) { AliAnalysisAlien::SetupPar("EventMixing"); myAdditionalLibs += " EventMixing.par"; }
+ else { gSystem->Load("libEventMixing"); myAdditionalLibs += " libEventMixing.so"; }
+
+ TString rsnLibName = "PWGLFresonances";
+ if (gSystem->Getenv("ALICE_ROOT")) {
+ TString alirootVersion = gSystem->GetFromPipe("aliroot --version | awk '{print $3}'");
+ if (alirootVersion<"v5-02-19-AN" && alirootVersion.CompareTo("trunk")) rsnLibName = "PWG2resonances";
+ if (rsnPar) { AliAnalysisAlien::SetupPar(rsnLibName.Data()); myAdditionalLibs += Form(" %s.par",rsnLibName.Data()); }
+ else { gSystem->Load(Form("lib%s",rsnLibName.Data())); myAdditionalLibs += Form(" lib%s.so",rsnLibName.Data()); }
+ }
+ if (rsnParDev>=0) {
+ if (rsnParDev) { AliAnalysisAlien::SetupPar("PWGLFresonancesdev"); myAdditionalLibs += " PWGLFresonancesdev.par"; }
+ else { gSystem->Load("libPWGLFresonancesdev"); myAdditionalLibs += " libPWGLFresonancesdev.so"; }
}
+ analysisPlugin->SetAdditionalLibs(myAdditionalLibs.Data());
- // maybe we can put it in $ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C
- if (multiInputHandler) {
- AliInputEventHandler *ih = multiInputHandler->GetFirstInputEventHandler();
- ih->SetEventSelection(multiInputHandler->GetEventSelection());
+ AliMultiInputEventHandler *multiInputHandler = 0;
+ AliInputEventHandler *inputHandler = mgr->GetInputEventHandler();
+
+ TString className = inputHandler->ClassName();
+ if (!className.CompareTo("AliMultiInputEventHandler")) {
+ multiInputHandler = (AliMultiInputEventHandler *)inputHandler;
}
- }
- if (useCentralityTask) {
- gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");
- AliCentralitySelectionTask *centralityTask = AddTaskCentrality(kFALSE);
- }
+ AliRsnInputHandler *rsnIH=0;
+ if (pidResponse) {
+ if (multiInputHandler) {
+ // add PID Response Handler
+ if (!RsnLoadMacro("AddPIDResponseInputHandler.C")) return kFALSE;
+ AddPIDResponseInputHandler(multiInputHandler,useMC);
+ } else {
+ Printf("Adding PIDResponse task ...");
+ gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
+ AddTaskPIDResponse(useMC);
+ }
+ }
- if (useEventPlaneTask) {
- gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskEventplane.C");
- AliEPSelectionTask *eventPlaneTask = AddTaskEventplane();
- }
+ if (multiInputHandler && useRsnIH) {
+ // add Rsn input handler (it has to be after ESD,MC,Tender input handler, but before Mixing)
+ rsnIH = new AliRsnInputHandler();
+ multiInputHandler->AddInputEventHandler(rsnIH);
+ }
- if (usePIDqa) {
- gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDqa.C");
- AddTaskPIDqa();
- }
+ if (physSel>0) {
+ if (!input.CompareTo("esd")) {
+ gROOT->LoadMacro("$ALICE_ROOT/OADB/macros/AddTaskPhysicsSelection.C");
+ Bool_t physSelBigOut = kTRUE;
+// physSelBigOut = kFALSE;
- // load and run AddTask macro
- if (!RsnLoadMacro("AddRsnAnalysisTask.C")) return kFALSE;
- if (!RsnLoadMacro("RsnConfig.C")) return kFALSE;
- if (!RsnLoadMacro("AddMixingHandler.C")) return kFALSE;
- if (!analysisSource.CompareTo("grid")) {
- if (!RsnLoadMacro("RsnGridPlugin.C")) return kFALSE;
- RsnGridPlugin(analysisMode);
- }
+ AddTaskPhysicsSelection(useMC,kTRUE,0,physSelBigOut);
+ if (physSelBigOut) mrg->SetSpecialOutputLocation("root://aaa//aaa/");
+ }
- if (splitMgrByTask) {
- Int_t iTask=0;
- TList *l=0;
- TNamed *rsnObj = 0;
- AliAnalysisTaskSE *task=0;
- TString rsnName,rsnCutName;
- TIter next(listRsn);
- while ((rsnObj = (TNamed *)next())) {
- l = new TList();
- Printf("Adding task for RSN:%s CUT:%s ",rsnObj->GetName(),rsnObj->GetTitle());
- l->Add(new TNamed(*rsnObj));
- task = AddRsnAnalysisTask(input, useMC, useMixing,rsnIH,l,Form("%s_%d",postfix.Data(),iTask++));
- if (useMixing) {
- // add mixing handler (uncomment to turn on Mixnig)
- AddMixingHandler(multiInputHandler,task, input, useMC,isRsnMini, mixNum,postfix);
+ // maybe we can put it in $ALICE_ROOT/OADB/macros/AddTaskPhysicsSelection.C
+ if (multiInputHandler) {
+ AliInputEventHandler *ih = multiInputHandler->GetFirstInputEventHandler();
+ ih->SetEventSelection(multiInputHandler->GetEventSelection());
}
}
- } else {
- task = AddRsnAnalysisTask(input, useMC, useMixing,rsnIH,listRsn,postfix);
- if (useMixing) {
- // add mixing handler (uncomment to turn on Mixnig)
- AddMixingHandler(multiInputHandler,task, input, useMC,isRsnMini, mixNum,postfix);
+
+ if (useCentralityTask) {
+ gROOT->LoadMacro("$ALICE_ROOT/OADB/macros/AddTaskCentrality.C");
+ AliCentralitySelectionTask *centralityTask = AddTaskCentrality(kFALSE);
+ }
+
+ if (useEventPlaneTask) {
+ gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskEventplane.C");
+ AliEPSelectionTask *eventPlaneTask = AddTaskEventplane();
+ }
+
+ if (useVZEROEPSelection) {
+ gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskVZEROEPSelection.C");
+ AddTaskVZEROEPSelection();
}
+
+ if (usePIDqa) {
+ gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDqa.C");
+ AddTaskPIDqa();
+ }
+
+ } else {
+
+ gSystem->Load("libEventMixing");
+ gSystem->Load("libCORRFW");
+ gSystem->Load("libPWGLFresonances");
}
- // mgr->AddClassDebug("AliRsnCutTrackQuality",AliLog::kDebug+3);
+ if (!input.CompareTo("esd")) rsnBaseSettings.Append("_ESD");
+ else rsnBaseSettings.Append("_AOD");
+
+ // use mc
+ if (useMC) rsnBaseSettings.Append("_MC");
+
+ // use mini
+ if (useRsnMini) rsnBaseSettings.Append("_MINI");
+
+ // use mixing
+ if (useMixing) rsnBaseSettings.Append("_MIX");
+
+ if (!RsnLoadMacro("AddRsnTaskTrain.C")) return kFALSE;
+ AddRsnTaskTrain(rsnBaseSettings.Data(),rsnStr.Data(),rsnCutStr.Data(),rsnQualityCutStr.Data(),extraMacro,extraMacroArgs);
+
+ Printf("%s_%s_%s %s",rsnBaseSettings.Data(),rsnStr.Data(),rsnCutStr.Data(),rsnQualityCutStr.Data());
return kTRUE;
}
Bool_t RsnLoadMacro(TString macro,TString path="") {
Bool_t valid;
- TString lego_path = AliAnalysisManager::GetGlobalStr("rsnLegoTrainPath",valid);
+ TString lego_path = AliAnalysisManager::GetGlobalStr("RsnLegoTrainPath",valid);
if (!valid) lego_path = "$ALICE_ROOT/PWG2/RESONANCES/macros/lego_train";
if (!gSystem->AccessPathName(macro.Data())) {