ROOT logo
// Created by Enrico Fragiacomo - 13/02/14
// Based on AnalysisSetupRsnMini
//
// This macro sets all those aspects of configuration of an Analysis Train run
// which are always the same for all kinds of analysis (local, PROOF, AliEn)
//
// Inputs:
//
//   - options        = a set of keywords which drive some configurations
//   - outputFileName = name of file produced by train
//   - configPath     = a path where all required config macros are stored
//
// Returns:
//   
//   - if successful: the name of the expected input TTre (esdTree or aodTree)
//   - if failed    : NULL
//

enum ERsnCollType_t { kPP=0,
		      kPPb,
		      kPbPb};

TString Setup
(
   const char *options,
   const char *outputFileName,
   const char *macroPath = "."
)
{
   // prepare output
   TString out("");
   
   //
   // === EXAMINE OPTIONS ==========================================================================
   //

   TString opt(options);
   opt.ToUpper();
   
   Bool_t isMC      = opt.Contains("MC") || (!opt.Contains("DATA"));
   Bool_t isESD     = opt.Contains("ESD");
   Bool_t useTender = opt.Contains("TENDER");
   Bool_t noV0      = opt.Contains("NOV0");

   Int_t collSyst;
   if( opt.Contains("PP") && (!opt.Contains("PB")) ) collSyst=kPP;
   else if( opt.Contains("PPB") ) collSyst=kPPb;
   else collSyst=kPbPb;

   //
   // === LOAD LIBRARIES ===========================================================================
   //

   // load analysis libraries
   gSystem->Load("libSTEERBase.so");
   gSystem->Load("libESD.so");
   gSystem->Load("libAOD.so");
   gSystem->Load("libANALYSIS.so");
   gSystem->Load("libANALYSISalice.so");
   gSystem->Load("libEventMixing.so");
   gSystem->Load("libCORRFW.so");
   
   // tender-related libraries
   if (isESD && useTender) {
      ::Info("AnalysisSetup", "Loading tender libraries");
      gSystem->Load("libTENDER.so");
      gSystem->Load("libTENDERSupplies.so");
   } else if (!isESD) {
      useTender = kFALSE;
   }
   
   // load development RSN library
   if (!AliAnalysisAlien::SetupPar("PWGLFresonances.par")) return "";

   //
   // === CREATE ANALYSIS MANAGER ==================================================================
   //

   AliAnalysisManager *mgr = new AliAnalysisManager("RsnAnalysisManager");
   mgr->SetCommonFileName(outputFileName);
   ::Info("AnalysisSetup", "Common file name: %s", outputFileName);

   //
   // === INPUT / OUTPUT HANDLER CONFIGURATION =====================================================
   //

   if (isESD) {
      out = "esdTree";
      ::Info("AnalysisSetup", "Creating ESD handler");
      AliESDInputHandler *esdHandler = new AliESDInputHandler();
      mgr->SetInputEventHandler(esdHandler);
      if (isMC) {
         ::Info("AnalysisSetup", "Creating MC handler");
         AliMCEventHandler *mcHandler  = new AliMCEventHandler();
         mgr->SetMCtruthEventHandler(mcHandler);
      }
   } else {
      out = "aodTree";
      ::Info("AnalysisSetup", "Creating AOD handler");
      AliAODInputHandler *aodHandler = new AliAODInputHandler();
      mgr->SetInputEventHandler(aodHandler);
   }
   
   //
   // === TENDER TASK (ESD only -- optional) =======================================================
   //

   if (isESD && useTender) {
      ::Info("AnalysisSetup", "Adding tender (and then accepting V0 info)", options);
      gROOT->LoadMacro(Form("%s/AddTaskTender.C", macroPath));
      AddTaskTender();
      noV0 = kFALSE;
   }

   //
   // === PHYSICS SELECTION (ESD only) =============================================================
   //

   if (isESD) {
      ::Info("AnalysisSetup", "Add physics selection by default on ESD analysis");
      gROOT->LoadMacro("$(ALICE_ROOT)/ANALYSIS/macros/AddTaskPhysicsSelection.C");
      AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection(isMC);
      if (noV0) {
         ::Info("AnalysisSetup", "Skip of V0 info is required");
         physSelTask->GetPhysicsSelection()->SetSkipV0(kTRUE);
      }
   }
   
   //
   // === CENTRALITY/PLANE (ESD only) ==============================================================
   //

   if (isESD && !(collSyst==kPP) ) {
     ::Info("AnalysisSetup", "Add centrality and event plane computation tasks");
      gROOT->LoadMacro("$(ALICE_ROOT)/ANALYSIS/macros/AddTaskCentrality.C");
      gROOT->LoadMacro("$(ALICE_ROOT)/ANALYSIS/macros/AddTaskEventplane.C");
      AliCentralitySelectionTask* taskCentrality = (AliCentralitySelectionTask*)AddTaskCentrality();
      if (isMC) {
	::Info("AnalysisSetup", "Setting centrality computation for MC");
	taskCentrality->SetMCInput();
      }
      AddTaskEventplane();
   }

   //
   // === PID RESPONSE =============================================================================
   //
   
   gROOT->LoadMacro("$(ALICE_ROOT)/ANALYSIS/macros/AddTaskPIDResponse.C");
   AddTaskPIDResponse(isMC);
      
   //
   // === MAIN TASK FOR THE SIGMASTAR ANALYSIS ==============================================================================
   //
   
   gROOT->LoadMacro(Form("%s/AddTaskSigmaStar.C", macroPath));
   if (!AddTaskSigmaStar(isMC, collSyst, 10.0 ,0, 0, 0, 5, 3.0, 3.0, 7.0, 0.01, 0.3, 0.97, 0.5, 70, 1.0, 10.0, 20.0, 68, "Sigma1385")) return ""; 

   ::Info("AnalysisSetup", "Setup successful");
   return out;
}
 AnalysisSetupSigmaStar.C:1
 AnalysisSetupSigmaStar.C:2
 AnalysisSetupSigmaStar.C:3
 AnalysisSetupSigmaStar.C:4
 AnalysisSetupSigmaStar.C:5
 AnalysisSetupSigmaStar.C:6
 AnalysisSetupSigmaStar.C:7
 AnalysisSetupSigmaStar.C:8
 AnalysisSetupSigmaStar.C:9
 AnalysisSetupSigmaStar.C:10
 AnalysisSetupSigmaStar.C:11
 AnalysisSetupSigmaStar.C:12
 AnalysisSetupSigmaStar.C:13
 AnalysisSetupSigmaStar.C:14
 AnalysisSetupSigmaStar.C:15
 AnalysisSetupSigmaStar.C:16
 AnalysisSetupSigmaStar.C:17
 AnalysisSetupSigmaStar.C:18
 AnalysisSetupSigmaStar.C:19
 AnalysisSetupSigmaStar.C:20
 AnalysisSetupSigmaStar.C:21
 AnalysisSetupSigmaStar.C:22
 AnalysisSetupSigmaStar.C:23
 AnalysisSetupSigmaStar.C:24
 AnalysisSetupSigmaStar.C:25
 AnalysisSetupSigmaStar.C:26
 AnalysisSetupSigmaStar.C:27
 AnalysisSetupSigmaStar.C:28
 AnalysisSetupSigmaStar.C:29
 AnalysisSetupSigmaStar.C:30
 AnalysisSetupSigmaStar.C:31
 AnalysisSetupSigmaStar.C:32
 AnalysisSetupSigmaStar.C:33
 AnalysisSetupSigmaStar.C:34
 AnalysisSetupSigmaStar.C:35
 AnalysisSetupSigmaStar.C:36
 AnalysisSetupSigmaStar.C:37
 AnalysisSetupSigmaStar.C:38
 AnalysisSetupSigmaStar.C:39
 AnalysisSetupSigmaStar.C:40
 AnalysisSetupSigmaStar.C:41
 AnalysisSetupSigmaStar.C:42
 AnalysisSetupSigmaStar.C:43
 AnalysisSetupSigmaStar.C:44
 AnalysisSetupSigmaStar.C:45
 AnalysisSetupSigmaStar.C:46
 AnalysisSetupSigmaStar.C:47
 AnalysisSetupSigmaStar.C:48
 AnalysisSetupSigmaStar.C:49
 AnalysisSetupSigmaStar.C:50
 AnalysisSetupSigmaStar.C:51
 AnalysisSetupSigmaStar.C:52
 AnalysisSetupSigmaStar.C:53
 AnalysisSetupSigmaStar.C:54
 AnalysisSetupSigmaStar.C:55
 AnalysisSetupSigmaStar.C:56
 AnalysisSetupSigmaStar.C:57
 AnalysisSetupSigmaStar.C:58
 AnalysisSetupSigmaStar.C:59
 AnalysisSetupSigmaStar.C:60
 AnalysisSetupSigmaStar.C:61
 AnalysisSetupSigmaStar.C:62
 AnalysisSetupSigmaStar.C:63
 AnalysisSetupSigmaStar.C:64
 AnalysisSetupSigmaStar.C:65
 AnalysisSetupSigmaStar.C:66
 AnalysisSetupSigmaStar.C:67
 AnalysisSetupSigmaStar.C:68
 AnalysisSetupSigmaStar.C:69
 AnalysisSetupSigmaStar.C:70
 AnalysisSetupSigmaStar.C:71
 AnalysisSetupSigmaStar.C:72
 AnalysisSetupSigmaStar.C:73
 AnalysisSetupSigmaStar.C:74
 AnalysisSetupSigmaStar.C:75
 AnalysisSetupSigmaStar.C:76
 AnalysisSetupSigmaStar.C:77
 AnalysisSetupSigmaStar.C:78
 AnalysisSetupSigmaStar.C:79
 AnalysisSetupSigmaStar.C:80
 AnalysisSetupSigmaStar.C:81
 AnalysisSetupSigmaStar.C:82
 AnalysisSetupSigmaStar.C:83
 AnalysisSetupSigmaStar.C:84
 AnalysisSetupSigmaStar.C:85
 AnalysisSetupSigmaStar.C:86
 AnalysisSetupSigmaStar.C:87
 AnalysisSetupSigmaStar.C:88
 AnalysisSetupSigmaStar.C:89
 AnalysisSetupSigmaStar.C:90
 AnalysisSetupSigmaStar.C:91
 AnalysisSetupSigmaStar.C:92
 AnalysisSetupSigmaStar.C:93
 AnalysisSetupSigmaStar.C:94
 AnalysisSetupSigmaStar.C:95
 AnalysisSetupSigmaStar.C:96
 AnalysisSetupSigmaStar.C:97
 AnalysisSetupSigmaStar.C:98
 AnalysisSetupSigmaStar.C:99
 AnalysisSetupSigmaStar.C:100
 AnalysisSetupSigmaStar.C:101
 AnalysisSetupSigmaStar.C:102
 AnalysisSetupSigmaStar.C:103
 AnalysisSetupSigmaStar.C:104
 AnalysisSetupSigmaStar.C:105
 AnalysisSetupSigmaStar.C:106
 AnalysisSetupSigmaStar.C:107
 AnalysisSetupSigmaStar.C:108
 AnalysisSetupSigmaStar.C:109
 AnalysisSetupSigmaStar.C:110
 AnalysisSetupSigmaStar.C:111
 AnalysisSetupSigmaStar.C:112
 AnalysisSetupSigmaStar.C:113
 AnalysisSetupSigmaStar.C:114
 AnalysisSetupSigmaStar.C:115
 AnalysisSetupSigmaStar.C:116
 AnalysisSetupSigmaStar.C:117
 AnalysisSetupSigmaStar.C:118
 AnalysisSetupSigmaStar.C:119
 AnalysisSetupSigmaStar.C:120
 AnalysisSetupSigmaStar.C:121
 AnalysisSetupSigmaStar.C:122
 AnalysisSetupSigmaStar.C:123
 AnalysisSetupSigmaStar.C:124
 AnalysisSetupSigmaStar.C:125
 AnalysisSetupSigmaStar.C:126
 AnalysisSetupSigmaStar.C:127
 AnalysisSetupSigmaStar.C:128
 AnalysisSetupSigmaStar.C:129
 AnalysisSetupSigmaStar.C:130
 AnalysisSetupSigmaStar.C:131
 AnalysisSetupSigmaStar.C:132
 AnalysisSetupSigmaStar.C:133
 AnalysisSetupSigmaStar.C:134
 AnalysisSetupSigmaStar.C:135
 AnalysisSetupSigmaStar.C:136
 AnalysisSetupSigmaStar.C:137
 AnalysisSetupSigmaStar.C:138
 AnalysisSetupSigmaStar.C:139
 AnalysisSetupSigmaStar.C:140
 AnalysisSetupSigmaStar.C:141
 AnalysisSetupSigmaStar.C:142
 AnalysisSetupSigmaStar.C:143
 AnalysisSetupSigmaStar.C:144
 AnalysisSetupSigmaStar.C:145
 AnalysisSetupSigmaStar.C:146
 AnalysisSetupSigmaStar.C:147
 AnalysisSetupSigmaStar.C:148
 AnalysisSetupSigmaStar.C:149
 AnalysisSetupSigmaStar.C:150
 AnalysisSetupSigmaStar.C:151
 AnalysisSetupSigmaStar.C:152
 AnalysisSetupSigmaStar.C:153
 AnalysisSetupSigmaStar.C:154
 AnalysisSetupSigmaStar.C:155
 AnalysisSetupSigmaStar.C:156
 AnalysisSetupSigmaStar.C:157
 AnalysisSetupSigmaStar.C:158
 AnalysisSetupSigmaStar.C:159
 AnalysisSetupSigmaStar.C:160
 AnalysisSetupSigmaStar.C:161
 AnalysisSetupSigmaStar.C:162