]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGLF/RESONANCES/macros/lego_train/AddAMRsn.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / macros / lego_train / AddAMRsn.C
index 2255a41b79b0970ec2aece03b0a52e1fe4aa319f..c9817f2fa081af1f43620547fdfe7c569b9cf0f0 100644 (file)
 #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;
 }
@@ -156,7 +191,7 @@ Bool_t AddAMRsn(TString analysisSource = "proof", TString analysisMode = "test",
 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())) {