ROOT logo
TList *RsnManager() {

   Int_t isESD             = 0;
   
   Int_t isPP              = 0;
   Int_t useRsnMini        = 1;

   Int_t useMixing         = 1;
   Int_t numMix            = 5;

   Int_t fullOutput        = 1;
   Int_t mcMomentum        = 0;
   Int_t mcMon             = 0;
   
   Int_t usePhysSel        = -1;
//   usePhysSel              = AliVEvent::kMB;
   Int_t useCentralityTask = 0;
   Int_t useEventPlaneTask = 0;
   
   Double_t eventCutVertex = 10.0;
   Int_t useYNotEta        = 0;
   
   // useCommonQualityCut=-1  -> Defaultcuts for 2010
   Int_t useCommonQualityCut = -1;
   useCommonQualityCut = 5;

   Int_t useEventMixPar    = 0;
   Int_t useRsnPar         = 0;
   Int_t useRsnParDev      = -1;

   TString rootver = "v5-33-02b";
   TString alirootver = "";
//      alirootver = "v5-03-07-AN";

   TString legoTrainPath = "$ALICE_ROOT/PWGLF/RESONANCES/macros/lego_train";
//    legoTrainPath = "$HOME/git/AliRsn/PWGLF/RESONANCES/macros/lego_train";


   TList *listRsn = new TList();

   // This will use AddRsnPairs<Name>.C
   // and for cuts AddRsnDaughterCuts<CutName>.C
   // and <opt> string is passed to AddRsnDaughterCuts<CutName>.C
   // so you can control different cut settings
   // string "<Name>:mon" means that it will add monitoring histograms from cuts
   // Note : for now you have to set gRsnUseMiniPackage = 0 to have mon histograms
   //    listRsn->Add(new TNamed("<Name>:mon","<CutName>:<opt>"));

   TString commonCutOption="";
   commonCutOption = "mon";
//    commonCutOption += "_eta";

   AddResonanceToRsnManager(listRsn,"AddRsnToManagerPhi.C",legoTrainPath.Data());
//    AddResonanceToRsnManager(listRsn,"AddRsnToManagerKStar.C",legoTrainPath.Data());
//    AddResonanceToRsnManager(listRsn,"AddRsnToManagerRho.C",legoTrainPath.Data());
//    AddResonanceToRsnManager(listRsn,"AddRsnToManagerLambda.C",legoTrainPath.Data());


   
   //============= ONLY for GRID ====================
   TString dsConfig = "datasets-grid/LHC11e3a_AOD074.txt";
   Int_t globalTrainID=0;
   Int_t numRuns = 1000;
   Int_t numRunsSkip = 0;

   //================================================

   ///////////////////////////////////////////
   // don't edit next lines (EXPERTS ONLY)
   ///////////////////////////////////////////
   
   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
   if (!mgr) {
      Printf("Error[RsnManager] mgr is null !!!");
      return 0;
   }

   AliAnalysisManager::SetGlobalStr("rsnLegoTrainPath",legoTrainPath.Data());

   AliAnalysisManager::SetGlobalInt("rsnIsPP",isPP);

   // use parfiles instead of libs
   AliAnalysisManager::SetGlobalInt("rsnUseEventMixingPar",useEventMixPar);
   AliAnalysisManager::SetGlobalInt("rsnUseRSNPar",useRsnPar);
   AliAnalysisManager::SetGlobalInt("rsnUseRSNParDev",useRsnParDev);
   // common options
   AliAnalysisManager::SetGlobalInt("rsnUsePhysSel",usePhysSel);
   AliAnalysisManager::SetGlobalInt("rsnUseCentralityTask",useCentralityTask);
   AliAnalysisManager::SetGlobalInt("rsnUseEventPlaneTask",useEventPlaneTask);
   
   AliAnalysisManager::SetGlobalInt("rsnUsePIDResponse",1);
   
   AliAnalysisManager::SetGlobalInt("rsnCommonQualityCut",useCommonQualityCut);
   AliAnalysisManager::SetGlobalInt("rsnUseRapidity",useYNotEta);
   
   // rsn options

   AliAnalysisManager::SetGlobalInt("rsnUseMixing",useMixing);
   if (useRsnMini) {
      AliAnalysisManager::SetGlobalInt("rsnUseMiniPackage",1);
      AliAnalysisManager::SetGlobalInt("rsnUseRsnInputHandler",0);
      AliAnalysisManager::SetGlobalInt("rsnSplitMgrByTasks",1);
   } else  {
      AliAnalysisManager::SetGlobalInt("rsnUseMiniPackage",0);
      AliAnalysisManager::SetGlobalInt("rsnUseRsnInputHandler",1);
      AliAnalysisManager::SetGlobalInt("rsnSplitMgrByTasks",0);
//       AliAnalysisManager::SetGlobalInt("rsnUseMixing",0);
   }

   // mixing setting
   AliAnalysisManager::SetGlobalInt("rsnNumMix",numMix);

   // oputput settings
   AliAnalysisManager::SetGlobalInt("rsnOutputFull",fullOutput);
   AliAnalysisManager::SetGlobalInt("rsnUseMCMomentum",mcMomentum);
   AliAnalysisManager::SetGlobalInt("rsnUseMCMonitoring",mcMon);
   AliAnalysisManager::SetGlobalDbl("rsnEventCutVertex",eventCutVertex);

   // expert options (don't change)
   AliAnalysisManager::SetGlobalInt("rsnMixPrintRefresh",-1);

   // RSN train settings for GRID
   AliAnalysisManager::SetGlobalStr("rsnTrainDSConfig",dsConfig.Data());
   AliAnalysisManager::SetGlobalInt("rsnGlobalTrainID",globalTrainID);
   AliAnalysisManager::SetGlobalInt("rsnGridNumRuns",numRuns);
   AliAnalysisManager::SetGlobalInt("rsnGridNumRunsSkip",numRunsSkip);

   // root and aliroot version
   AliAnalysisManager::SetGlobalStr("rsnLegoTrainROOTversion",rootver.Data());
   AliAnalysisManager::SetGlobalStr("rsnLegoTrainAliROOTversion",alirootver.Data());

   AliAnalysisManager::SetGlobalStr("rsnLegoTrainCommonCutOption",commonCutOption.Data());
   
   return listRsn;
}

Bool_t AddResonanceToRsnManager(TList *listRsn,TString rsnAddMacro="AddRsnToManagerPhi.C",TString path="") {
   if (!listRsn) return kFALSE;
   
   RsnManagerLoadMacro(rsnAddMacro,path);
   rsnAddMacro.ReplaceAll(".C","");
   gROOT->ProcessLine(TString::Format("%s((TList*)%p)",rsnAddMacro.Data(),listRsn).Data());

   return kTRUE;
}

Bool_t RsnManagerLoadMacro(TString macro,TString path="") {

   TString lego_path=path;

   if (lego_path.IsNull()) {
      Bool_t valid;
      lego_path = AliAnalysisManager::GetGlobalStr("rsnLegoTrainPath",valid);
      if (!valid) lego_path = "$ALICE_ROOT/PWGLF/RESONANCES/macros/lego_train";
   }
   if (!gSystem->AccessPathName(macro.Data())) {
      gROOT->LoadMacro(macro.Data());
      Printf("Macro loaded from %s/%s ...",gSystem->pwd(),macro.Data());
      return kTRUE;
   }

   if (!gSystem->AccessPathName(gSystem->ExpandPathName(Form("%s/%s",lego_path.Data(),macro.Data())))) {
      gROOT->LoadMacro(gSystem->ExpandPathName(Form("%s/%s",lego_path.Data(),macro.Data())));
      Printf("Macro loaded from %s ...",gSystem->ExpandPathName(Form("%s/%s",lego_path.Data(),macro.Data())));
      return kTRUE;
   }

   Printf("Error loading %s",macro.Data());

   return kFALSE;
}

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