ROOT logo
Int_t AddD2HTrain(Bool_t readMC=kTRUE,
                  Int_t addQA=1,
		  Int_t addD0Mass=1,
		  Int_t addD0MassLS=1,
		  Int_t addDplus=1,
		  Int_t addLSD0=0,
		  Int_t addCFD0=0,
		  Int_t addPromptD0=1,
		  Int_t addDs=0,
		  Int_t addDStar=1,
		  Int_t addDStarJets=0,
		  Int_t addCFDStar=0) {
  // 
  // Tasks of the D2H subgroup of PWGHF that can run in the Official Train
  //
  // They all use AOD+AOD.VertexingHF as input. 
  // They need to read the cuts from the macro 
  // $ALICE_ROOT/PWGHF/vertexingHF/ConfigVertexingHF.C (trunk version).
  // This macro is loaded in the Init(), so it should be enough to have it 
  // in the local dir when the train is launched with the alien plugin.
  // They all produce only histos in the output. 
  //
  // andrea.dainese@pd.infn.it
  //

  TString taskName="",loadMacroPath="$ALICE_ROOT/PWGHF/vertexingHF/macros/";
  Int_t ntasks=0;

  //taskName="AddTaskCompareHF.C"; taskName.Prepend(loadMacroPath.Data());
  //gROOT->LoadMacro(taskName.Data());
  //AliAnalysisTaskSECompareHF *cmpTask = AddTaskCompareHF();
  
  if(addQA) {
    taskName="AddTaskHFQA.C"; taskName.Prepend(loadMacroPath.Data());
    gROOT->LoadMacro(taskName.Data());
    AliAnalysisTaskSEHFQA *taskQAHF = AddTaskHFQA(AliAnalysisTaskSEHFQA::kD0toKpi,"",readMC,kTRUE);
    ntasks++;
  }


  if(addD0Mass || addD0MassLS) {
    taskName="AddTaskD0Mass.C"; taskName.Prepend(loadMacroPath.Data());
    gROOT->LoadMacro(taskName.Data());
    if(addD0Mass) {
      AliAnalysisTaskSED0Mass *d0massTask = AddTaskD0Mass(0,readMC);
      ntasks++;
    }
    if(addD0MassLS) {
      AliAnalysisTaskSED0Mass *d0massLikeSignTask = AddTaskD0Mass(1,readMC); 
      ntasks++;
    }
  }

  if(addDplus) {
    taskName="AddTaskDplus.C"; taskName.Prepend(loadMacroPath.Data());
    gROOT->LoadMacro(taskName.Data());
    AliAnalysisTaskSEDplus *dplusTask = AddTaskDplus(kFALSE,readMC);
    ntasks++;
  }  

  //taskName="AddTaskSelectHF.C"; taskName.Prepend(loadMacroPath.Data());
  //gROOT->LoadMacro(taskName.Data());
  //AliAnalysisTaskSESelectHF *seleTask = AddTaskSelectHF();
  
  if(addLSD0 && readMC) {
    taskName="AddTaskBkgLikeSignD0.C"; taskName.Prepend(loadMacroPath.Data());
    gROOT->LoadMacro(taskName.Data());
    AliAnalysisTaskSEBkgLikeSignD0 *lsD0Task = AddTaskBkgLikeSignD0();
    ntasks++;
  }

  if(addCFD0 && readMC) {
    taskName="AddTaskCFMultiVarMultiStep.C"; taskName.Prepend(loadMacroPath.Data());
    gROOT->LoadMacro(taskName.Data());
    AliCFHeavyFlavourTaskMultiVarMultiStep *cfmvmsTask = AddTaskCFMultiVarMultiStep();
    ntasks++;
  }

  if(addPromptD0) {
    taskName="AddTaskSECharmFraction.C"; 
    taskName.Prepend(loadMacroPath.Data());
    gROOT->LoadMacro(taskName.Data());
    Int_t switchMC[5]={0,0,0,0,0};
    Int_t ppPbPb=1;// 0 for pp, 1 for PbPb, used to siwtch on/off the removal of daughters from the primary vertex
    AliAnalysisTaskSECharmFraction *cFractTask = AddTaskSECharmFraction("standard",switchMC,readMC,kTRUE,kFALSE,"D0toKpiCharmFractCuts.root","c",ppPbPb);
    // arguments: filename,switchMC,readmc,usepid,likesign,cutfilename,containerprefix
    ntasks++;
  }

  if(addDs) {
    taskName="AddTaskDs.C"; taskName.Prepend(loadMacroPath.Data());
    gROOT->LoadMacro(taskName.Data());
    AliAnalysisTaskSEDs *dsTask = AddTaskDs(readMC);
    ntasks++;
  }  

  if(addDStar) {
    taskName="AddTaskDStarSpectra.C"; taskName.Prepend(loadMacroPath.Data());
    gROOT->LoadMacro(taskName.Data());
    AliAnalysisTaskSEDStarSpectra *dstarTask = AddTaskDStarSpectra(readMC);
    ntasks++;
  }  

  if(addDStarJets) {
    taskName="AddTaskDStarJets.C"; taskName.Prepend(loadMacroPath.Data());
    gROOT->LoadMacro(taskName.Data());
    AliAnalysisTaskSEDStarJets *dstarjetsTask = AddTaskDStarJets(readMC);
    ntasks++;
  }  

  if(addCFDStar && readMC) {
    taskName="AddTaskCFDStar.C"; taskName.Prepend(loadMacroPath.Data());
    gROOT->LoadMacro(taskName.Data());
    AliCFTaskForDStarAnalysis *cfDstarTask = AddTaskCFDStar();
    ntasks++;
  }


  return ntasks;
}
 AddD2HTrain.C:1
 AddD2HTrain.C:2
 AddD2HTrain.C:3
 AddD2HTrain.C:4
 AddD2HTrain.C:5
 AddD2HTrain.C:6
 AddD2HTrain.C:7
 AddD2HTrain.C:8
 AddD2HTrain.C:9
 AddD2HTrain.C:10
 AddD2HTrain.C:11
 AddD2HTrain.C:12
 AddD2HTrain.C:13
 AddD2HTrain.C:14
 AddD2HTrain.C:15
 AddD2HTrain.C:16
 AddD2HTrain.C:17
 AddD2HTrain.C:18
 AddD2HTrain.C:19
 AddD2HTrain.C:20
 AddD2HTrain.C:21
 AddD2HTrain.C:22
 AddD2HTrain.C:23
 AddD2HTrain.C:24
 AddD2HTrain.C:25
 AddD2HTrain.C:26
 AddD2HTrain.C:27
 AddD2HTrain.C:28
 AddD2HTrain.C:29
 AddD2HTrain.C:30
 AddD2HTrain.C:31
 AddD2HTrain.C:32
 AddD2HTrain.C:33
 AddD2HTrain.C:34
 AddD2HTrain.C:35
 AddD2HTrain.C:36
 AddD2HTrain.C:37
 AddD2HTrain.C:38
 AddD2HTrain.C:39
 AddD2HTrain.C:40
 AddD2HTrain.C:41
 AddD2HTrain.C:42
 AddD2HTrain.C:43
 AddD2HTrain.C:44
 AddD2HTrain.C:45
 AddD2HTrain.C:46
 AddD2HTrain.C:47
 AddD2HTrain.C:48
 AddD2HTrain.C:49
 AddD2HTrain.C:50
 AddD2HTrain.C:51
 AddD2HTrain.C:52
 AddD2HTrain.C:53
 AddD2HTrain.C:54
 AddD2HTrain.C:55
 AddD2HTrain.C:56
 AddD2HTrain.C:57
 AddD2HTrain.C:58
 AddD2HTrain.C:59
 AddD2HTrain.C:60
 AddD2HTrain.C:61
 AddD2HTrain.C:62
 AddD2HTrain.C:63
 AddD2HTrain.C:64
 AddD2HTrain.C:65
 AddD2HTrain.C:66
 AddD2HTrain.C:67
 AddD2HTrain.C:68
 AddD2HTrain.C:69
 AddD2HTrain.C:70
 AddD2HTrain.C:71
 AddD2HTrain.C:72
 AddD2HTrain.C:73
 AddD2HTrain.C:74
 AddD2HTrain.C:75
 AddD2HTrain.C:76
 AddD2HTrain.C:77
 AddD2HTrain.C:78
 AddD2HTrain.C:79
 AddD2HTrain.C:80
 AddD2HTrain.C:81
 AddD2HTrain.C:82
 AddD2HTrain.C:83
 AddD2HTrain.C:84
 AddD2HTrain.C:85
 AddD2HTrain.C:86
 AddD2HTrain.C:87
 AddD2HTrain.C:88
 AddD2HTrain.C:89
 AddD2HTrain.C:90
 AddD2HTrain.C:91
 AddD2HTrain.C:92
 AddD2HTrain.C:93
 AddD2HTrain.C:94
 AddD2HTrain.C:95
 AddD2HTrain.C:96
 AddD2HTrain.C:97
 AddD2HTrain.C:98
 AddD2HTrain.C:99
 AddD2HTrain.C:100
 AddD2HTrain.C:101
 AddD2HTrain.C:102
 AddD2HTrain.C:103
 AddD2HTrain.C:104
 AddD2HTrain.C:105
 AddD2HTrain.C:106
 AddD2HTrain.C:107
 AddD2HTrain.C:108
 AddD2HTrain.C:109
 AddD2HTrain.C:110
 AddD2HTrain.C:111
 AddD2HTrain.C:112
 AddD2HTrain.C:113
 AddD2HTrain.C:114
 AddD2HTrain.C:115
 AddD2HTrain.C:116
 AddD2HTrain.C:117
 AddD2HTrain.C:118
 AddD2HTrain.C:119
 AddD2HTrain.C:120
 AddD2HTrain.C:121