ROOT logo
AliAnalysisTaskSEHFv2 *AddTaskHFv2(TString filename="DplustoKpipiCutsPbPb.root",AliAnalysisTaskSEHFv2::DecChannel decCh=AliAnalysisTaskSEHFv2::kDplustoKpipi,TString cutsobjname="AnalysisCuts", Bool_t readMC=kFALSE, TString suffix="", Int_t flagep=0 /*0=tracks,1=V0,2=v0A,3=V0C*/,Float_t minC=20.,Float_t maxC=80.)
{
  //
  // Test macro for the AliAnalysisTaskSE for  D 
  // mesons v2 analysis with event plane method
  // Authors: Chiara Bianchin, cbianchi@pd.infn.it, 
  //          Robert Grajcarek, grajcarek@physi.uni-heidelberg.de
  //          Giacomo Ortona, ortona@to.infn.it,
  //          Carlos Perez Lara, carlos.eugenio.perez.lara@cern.ch
  //          Francesco Prino, prino@to.infn.it
  // Get the pointer to the existing analysis manager via the static access method.
  //============================================================================
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    ::Error("AddTaskHFv2", "No analysis manager to connect to.");
    return NULL;
  }

  Bool_t stdcuts=kFALSE;
  TFile* filecuts;
  if( filename.EqualTo("") ) {
    stdcuts=kTRUE; 
  } else {
    filecuts=TFile::Open(filename.Data());
    if(!filecuts ||(filecuts&& !filecuts->IsOpen())){
      AliFatal("Input file not found : check your cut object");
    }
  }
  
  AliRDHFCuts *analysiscuts=0x0;
  Int_t pdgmes=-1;
  //Analysis cuts

  if(decCh==AliAnalysisTaskSEHFv2::kDplustoKpipi){
    if(stdcuts){
      analysiscuts = new AliRDHFCutsDplustoKpipi();
      analysiscuts->SetStandardCutsPbPb2011();
    }else  analysiscuts = (AliRDHFCutsDplustoKpipi*)filecuts->Get(cutsobjname);
    suffix.Prepend("Dplus");
    pdgmes=411;
  }else if(decCh==AliAnalysisTaskSEHFv2::kD0toKpi){
    if(stdcuts) {
      analysiscuts = new AliRDHFCutsD0toKpi();
      analysiscuts->SetStandardCutsPbPb2011();
    }
    else analysiscuts = (AliRDHFCutsD0toKpi*)filecuts->Get(cutsobjname);
    suffix.Prepend("Dzero");
    pdgmes=421;
  }else if(decCh==AliAnalysisTaskSEHFv2::kDstartoKpipi){
    if(stdcuts) {
      analysiscuts = new AliRDHFCutsDStartoKpipi();
      analysiscuts->SetStandardCutsPbPb2011();
    }
    else analysiscuts = (AliRDHFCutsDStartoKpipi*)filecuts->Get(cutsobjname);
    suffix.Prepend("Dstar");
    pdgmes=413;
  }
  if(pdgmes==-1){
    AliFatal("Wrong meson setting");
  }
  if(!analysiscuts){
    AliFatal("Specific AliRDHFCuts not found");
  }

  // Analysis task    
  AliAnalysisTaskSEHFv2 *v2Task = new AliAnalysisTaskSEHFv2("HFv2Analysis",analysiscuts,decCh);
  v2Task->SetReadMC(readMC);
  v2Task->SetEtaGapFeatureForEventplaneFromTracks(kFALSE);
  if(decCh == AliAnalysisTaskSEHFv2::kDstartoKpipi){
     v2Task->SetNMassBins(200);}
  else if(decCh == AliAnalysisTaskSEHFv2::kDplustoKpipi || decCh == AliAnalysisTaskSEHFv2::kD0toKpi){
     v2Task->SetNMassBins(104);
     v2Task->SetMassLimits(0.2,pdgmes);}
  v2Task->SetMinCentrality(minC);
  v2Task->SetMaxCentrality(maxC);
  v2Task->SetDebugLevel(0);
  v2Task->SetV0EventPlaneOrder(2);
  if(flagep==0){
    v2Task->SetTPCEP();
    suffix+="TPC";
  }else if(flagep==1){
    v2Task->SetVZEROEP();
    suffix+="VZERO";
  }else if(flagep==2){
    v2Task->SetVZEROAEP();
    suffix+="VZEROA";
  }else if(flagep==3){
    v2Task->SetVZEROCEP();
    suffix+="VZEROC";
  }
  mgr->AddTask(v2Task);

  // Create containers for input/output

  TString contname=Form("cinputv2%s",suffix.Data());
  AliAnalysisDataContainer *cinputv2 = mgr->CreateContainer(contname.Data(),TChain::Class(),AliAnalysisManager::kInputContainer);

  TString outputfile = AliAnalysisManager::GetCommonFileName();
  TString outputhistos = Form("%s:PWGHF_D2H_HFv2_%s",outputfile.Data(),suffix.Data()); 

  contname=Form("hEventsInfo%s",suffix.Data());
  AliAnalysisDataContainer *coutputstat = mgr->CreateContainer(contname.Data(),TH1F::Class(),AliAnalysisManager::kOutputContainer,outputhistos.Data());

  contname=Form("coutputv2%s",suffix.Data());
  AliAnalysisDataContainer *coutputv2 = mgr->CreateContainer(contname.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,outputhistos.Data());

  contname=Form("cutobj%s",suffix.Data());
  AliAnalysisDataContainer *cutobj = mgr->CreateContainer(contname.Data(),AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer,outputhistos.Data());

  mgr->ConnectInput(v2Task,0,mgr->GetCommonInputContainer());
  
  mgr->ConnectOutput(v2Task,1,coutputstat);
  
  mgr->ConnectOutput(v2Task,2,coutputv2);

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