ROOT logo
AliAnalysisTaskCombinHF *AddTaskCombinHF(Int_t meson = 0,
                                         Bool_t readMC = kTRUE,
                                         TString containerStr = "",
                                         TString cutObjFile = "",
                                         TString cutObjNam = "",
                                         Int_t filterMask = 1,
                                         Double_t ptcut = 0.3,
                                         Double_t etacut = 0.9,
                                         Int_t pidStrategy = 0,
                                         Int_t casePID = 2,
                                         Double_t bayesThresKaon = 0.4,
                                         Double_t bayesThresPion = 0.4,
                                         Double_t minMass = 1.6,
                                         Double_t maxMass = 2.15,
                                         Double_t maxPt = 20.,
                                         Double_t ptBinWidth = 0.5)
{
  
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    ::Error("AddTaskCombinHF", "No analysis manager to connect to.");
  }
  
  //Analysis Task
  
  
  AliRDHFCuts* analysiscuts=0x0;
  AliAODPidHF* pid=0x0;
  if(!cutObjFile.IsNull()){
    TFile *f=TFile::Open(cutObjFile.Data(),"READ");
    if(f){
      analysiscuts=(AliRDHFCuts*)f->Get(cutObjNam.Data());
      AliESDtrackCuts *esdc=analysiscuts->GetTrackCuts();
      pid=analysiscuts->GetPidHF();
    }
  }
  else {
    if(meson==0) analysiscuts=new AliRDHFCutsD0toKpi();
    else analysiscuts=new AliRDHFCutsDplustoKpipi();
    analysiscuts->SetStandardCutsPP2010();
    pid=new AliAODPidHF();
    pid->SetMatch(5);
    pid->SetTPCnSigmaRangeForPions(-3.,3.);
    pid->SetTPCnSigmaRangeForKaons(-2.,3.);
    pid->SetTPCnSigmaRangeForProtons(-3.,3.);
    pid->SetTOFnSigmaRangeForPions(-3.,3.);
    pid->SetTOFnSigmaRangeForKaons(-2.,2.);
    pid->SetTOFnSigmaRangeForProtons(-3.,3.);
    
  }
  if(!analysiscuts){
    Printf("Wrong file or cut object name set");
    return 0x0;
  }
  
  AliAnalysisTaskCombinHF *dTask = new AliAnalysisTaskCombinHF(meson,analysiscuts);
  if(!cutObjFile.IsNull()){
    dTask->SetKaonTrackCuts(esdc);
    dTask->SetPionTrackCuts(esdc);
    dTask->SetTrackCuts(esdc);
  }
  dTask->SetReadMC(readMC);
  dTask->SetDebugLevel(0);
  
  dTask->SetFilterMask(filterMask);
  dTask->SetPtAccCut(ptcut);
  dTask->SetEtaAccCut(etacut);
  
  // mass and pt range for histograms
  dTask->SetMassWindow(minMass, maxMass);
  dTask->SetMaxPt(maxPt);
  dTask->SetPtBinWidth(ptBinWidth);
  
  // PID settings
  dTask->SetPIDHF(pid);
  dTask->SetPIDstrategy(pidStrategy);
  dTask->SetPIDselCaseZero(casePID);
  dTask->SetBayesThres(bayesThresKaon, bayesThresPion);
  
  
  mgr->AddTask(dTask);
  
  
  // Create containers for input/output
  
  TString mesname="Dzero";
  if(meson==1) mesname="Dplus";
  TString inname = Form("cinput%s%s",mesname.Data(),containerStr.Data());
  TString outname = Form("coutput%s%s",mesname.Data(),containerStr.Data());
  TString normname = Form("coutput%sNorm%s",mesname.Data(),containerStr.Data());
  
  AliAnalysisDataContainer *cinput = mgr->CreateContainer(inname,TChain::Class(),
                                                          AliAnalysisManager::kInputContainer);
  TString outputfile = AliAnalysisManager::GetCommonFileName();
  outputfile += Form(":PWG3_D2H_InvMass%sLowPt%s",mesname.Data(),containerStr.Data());
  
  
  AliAnalysisDataContainer *coutput = mgr->CreateContainer(outname,TList::Class(),
                                                           AliAnalysisManager::kOutputContainer,
                                                           outputfile.Data());
  AliAnalysisDataContainer *coutputNorm = mgr->CreateContainer(normname,AliNormalizationCounter::Class(),
                                                               AliAnalysisManager::kOutputContainer,
                                                               outputfile.Data());
  
  mgr->ConnectInput(dTask,0,mgr->GetCommonInputContainer());
  
  mgr->ConnectOutput(dTask,1,coutput);
  
  mgr->ConnectOutput(dTask,2,coutputNorm);  
  
  return dTask;
}
 AddTaskCombinHF.C:1
 AddTaskCombinHF.C:2
 AddTaskCombinHF.C:3
 AddTaskCombinHF.C:4
 AddTaskCombinHF.C:5
 AddTaskCombinHF.C:6
 AddTaskCombinHF.C:7
 AddTaskCombinHF.C:8
 AddTaskCombinHF.C:9
 AddTaskCombinHF.C:10
 AddTaskCombinHF.C:11
 AddTaskCombinHF.C:12
 AddTaskCombinHF.C:13
 AddTaskCombinHF.C:14
 AddTaskCombinHF.C:15
 AddTaskCombinHF.C:16
 AddTaskCombinHF.C:17
 AddTaskCombinHF.C:18
 AddTaskCombinHF.C:19
 AddTaskCombinHF.C:20
 AddTaskCombinHF.C:21
 AddTaskCombinHF.C:22
 AddTaskCombinHF.C:23
 AddTaskCombinHF.C:24
 AddTaskCombinHF.C:25
 AddTaskCombinHF.C:26
 AddTaskCombinHF.C:27
 AddTaskCombinHF.C:28
 AddTaskCombinHF.C:29
 AddTaskCombinHF.C:30
 AddTaskCombinHF.C:31
 AddTaskCombinHF.C:32
 AddTaskCombinHF.C:33
 AddTaskCombinHF.C:34
 AddTaskCombinHF.C:35
 AddTaskCombinHF.C:36
 AddTaskCombinHF.C:37
 AddTaskCombinHF.C:38
 AddTaskCombinHF.C:39
 AddTaskCombinHF.C:40
 AddTaskCombinHF.C:41
 AddTaskCombinHF.C:42
 AddTaskCombinHF.C:43
 AddTaskCombinHF.C:44
 AddTaskCombinHF.C:45
 AddTaskCombinHF.C:46
 AddTaskCombinHF.C:47
 AddTaskCombinHF.C:48
 AddTaskCombinHF.C:49
 AddTaskCombinHF.C:50
 AddTaskCombinHF.C:51
 AddTaskCombinHF.C:52
 AddTaskCombinHF.C:53
 AddTaskCombinHF.C:54
 AddTaskCombinHF.C:55
 AddTaskCombinHF.C:56
 AddTaskCombinHF.C:57
 AddTaskCombinHF.C:58
 AddTaskCombinHF.C:59
 AddTaskCombinHF.C:60
 AddTaskCombinHF.C:61
 AddTaskCombinHF.C:62
 AddTaskCombinHF.C:63
 AddTaskCombinHF.C:64
 AddTaskCombinHF.C:65
 AddTaskCombinHF.C:66
 AddTaskCombinHF.C:67
 AddTaskCombinHF.C:68
 AddTaskCombinHF.C:69
 AddTaskCombinHF.C:70
 AddTaskCombinHF.C:71
 AddTaskCombinHF.C:72
 AddTaskCombinHF.C:73
 AddTaskCombinHF.C:74
 AddTaskCombinHF.C:75
 AddTaskCombinHF.C:76
 AddTaskCombinHF.C:77
 AddTaskCombinHF.C:78
 AddTaskCombinHF.C:79
 AddTaskCombinHF.C:80
 AddTaskCombinHF.C:81
 AddTaskCombinHF.C:82
 AddTaskCombinHF.C:83
 AddTaskCombinHF.C:84
 AddTaskCombinHF.C:85
 AddTaskCombinHF.C:86
 AddTaskCombinHF.C:87
 AddTaskCombinHF.C:88
 AddTaskCombinHF.C:89
 AddTaskCombinHF.C:90
 AddTaskCombinHF.C:91
 AddTaskCombinHF.C:92
 AddTaskCombinHF.C:93
 AddTaskCombinHF.C:94
 AddTaskCombinHF.C:95
 AddTaskCombinHF.C:96
 AddTaskCombinHF.C:97
 AddTaskCombinHF.C:98
 AddTaskCombinHF.C:99
 AddTaskCombinHF.C:100
 AddTaskCombinHF.C:101
 AddTaskCombinHF.C:102
 AddTaskCombinHF.C:103
 AddTaskCombinHF.C:104
 AddTaskCombinHF.C:105
 AddTaskCombinHF.C:106
 AddTaskCombinHF.C:107
 AddTaskCombinHF.C:108
 AddTaskCombinHF.C:109
 AddTaskCombinHF.C:110
 AddTaskCombinHF.C:111
 AddTaskCombinHF.C:112
 AddTaskCombinHF.C:113