ROOT logo
AliAnalysisTask *AddRsnTaskTrain(const char *commonStr,const char *rsnStr,const char *rsnCutStr,TString rsnQualityCutStr="",TString extraMacro="",TString extraMacroArgs="") {
   // rsnStr -> <Name>
   // rsnCutStr -> <CutName>
   // 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
   //    return AddRsnTask("<Name>:mon","<CutName>:<opt>","");
   // or like we are using it now
   //    return AddRsnTask(rsnStr,rsnCutStr,"");

   Printf ("Running AddRsnTaskTrain(\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\")",commonStr,rsnStr,rsnCutStr,rsnQualityCutStr.Data(),extraMacro.Data(),extraMacroArgs.Data());
   Bool_t valid;
   AliAnalysisManager::GetGlobalStr("LegoTrainPath",valid);
   if (!valid) {
      TString legoTrainPath = "$ALICE_ROOT/PWGLF/RESONANCES/macros/lego_train";
      AliAnalysisManager::SetGlobalStr("LegoTrainPath",legoTrainPath.Data());
   }

   // Creating Rsn Train Manager
   AliRsnTrainManager *rsnMgr = new AliRsnTrainManager();

   // Rsn Quality Cuts
   if (!RsnLoadMacroTrain("RsnQualityCut.C")) return kFALSE;
   if (!rsnQualityCutStr.IsNull()) AliRsnTrainManager::SetGlobalStr("RsnQualityCut",rsnQualityCutStr.Data());
   //pp_LHC11_p4_120


   if (!RsnLoadMacroTrain("RsnTrainCommonSettings.C")) return kFALSE;
   if (!extraMacro.IsNull()) {
      if (!RsnLoadMacroTrain(extraMacro.Data())) return kFALSE;
   }
   RsnTrainCommonSettings(commonStr,rsnStr,extraMacro,extraMacroArgs);

   rsnMgr->Print();

   if (!RsnLoadMacroTrain("AddRsnTask.C")) return kFALSE;

   // Generate Rsn Analysisa Task
   AliAnalysisTask *task = AddRsnTask(rsnStr,rsnCutStr,"");

   Printf("Saving Rsn Info -> RsnInfo.root");
   TFile *f = TFile::Open("RsnInfo.root","RECREATE");
   AliRsnTrainManager *rsnMgr = AliRsnTrainManager::GetRsnTrainManager();
   TMap *map = rsnMgr->GetGlobals();
   f->WriteObject(map,"RsnInfoMap");
   f->Close();

   // deleting AliRsnTrainManager to reset all previous settings
   delete rsnMgr;

   return task;

}

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

   Bool_t valid;
   TString 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;
}
 AddRsnTaskTrain.C:1
 AddRsnTaskTrain.C:2
 AddRsnTaskTrain.C:3
 AddRsnTaskTrain.C:4
 AddRsnTaskTrain.C:5
 AddRsnTaskTrain.C:6
 AddRsnTaskTrain.C:7
 AddRsnTaskTrain.C:8
 AddRsnTaskTrain.C:9
 AddRsnTaskTrain.C:10
 AddRsnTaskTrain.C:11
 AddRsnTaskTrain.C:12
 AddRsnTaskTrain.C:13
 AddRsnTaskTrain.C:14
 AddRsnTaskTrain.C:15
 AddRsnTaskTrain.C:16
 AddRsnTaskTrain.C:17
 AddRsnTaskTrain.C:18
 AddRsnTaskTrain.C:19
 AddRsnTaskTrain.C:20
 AddRsnTaskTrain.C:21
 AddRsnTaskTrain.C:22
 AddRsnTaskTrain.C:23
 AddRsnTaskTrain.C:24
 AddRsnTaskTrain.C:25
 AddRsnTaskTrain.C:26
 AddRsnTaskTrain.C:27
 AddRsnTaskTrain.C:28
 AddRsnTaskTrain.C:29
 AddRsnTaskTrain.C:30
 AddRsnTaskTrain.C:31
 AddRsnTaskTrain.C:32
 AddRsnTaskTrain.C:33
 AddRsnTaskTrain.C:34
 AddRsnTaskTrain.C:35
 AddRsnTaskTrain.C:36
 AddRsnTaskTrain.C:37
 AddRsnTaskTrain.C:38
 AddRsnTaskTrain.C:39
 AddRsnTaskTrain.C:40
 AddRsnTaskTrain.C:41
 AddRsnTaskTrain.C:42
 AddRsnTaskTrain.C:43
 AddRsnTaskTrain.C:44
 AddRsnTaskTrain.C:45
 AddRsnTaskTrain.C:46
 AddRsnTaskTrain.C:47
 AddRsnTaskTrain.C:48
 AddRsnTaskTrain.C:49
 AddRsnTaskTrain.C:50
 AddRsnTaskTrain.C:51
 AddRsnTaskTrain.C:52
 AddRsnTaskTrain.C:53
 AddRsnTaskTrain.C:54
 AddRsnTaskTrain.C:55
 AddRsnTaskTrain.C:56
 AddRsnTaskTrain.C:57
 AddRsnTaskTrain.C:58
 AddRsnTaskTrain.C:59
 AddRsnTaskTrain.C:60
 AddRsnTaskTrain.C:61
 AddRsnTaskTrain.C:62
 AddRsnTaskTrain.C:63
 AddRsnTaskTrain.C:64
 AddRsnTaskTrain.C:65
 AddRsnTaskTrain.C:66
 AddRsnTaskTrain.C:67
 AddRsnTaskTrain.C:68
 AddRsnTaskTrain.C:69
 AddRsnTaskTrain.C:70
 AddRsnTaskTrain.C:71
 AddRsnTaskTrain.C:72
 AddRsnTaskTrain.C:73
 AddRsnTaskTrain.C:74
 AddRsnTaskTrain.C:75
 AddRsnTaskTrain.C:76
 AddRsnTaskTrain.C:77
 AddRsnTaskTrain.C:78
 AddRsnTaskTrain.C:79
 AddRsnTaskTrain.C:80