ROOT logo
AliAnalysisTaskSEHFQA* AddTaskHFQA(AliAnalysisTaskSEHFQA::DecChannel ch,TString filecutsname="",Bool_t readMC=kFALSE, Bool_t simplemode=kFALSE, Int_t system=1 /*0=pp, 1=PbPb*/, TString finDirname="",Bool_t trackon=kTRUE,Bool_t pidon=kTRUE,Bool_t centralityon=kTRUE, Bool_t eventselon=kTRUE, Bool_t flowobson=kFALSE, Bool_t filldistribforeffcheckson=kFALSE){
  //
  // Test macro for the AliAnalysisTaskSE for HF mesons quality assurance
  //Author: C.Bianchin chiara.bianchin@pd.infn.it

  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    ::Error("AddTaskHFQA", "No analysis manager to connect to.");
    return NULL;
  }

  Bool_t stdcuts=kFALSE;
  TFile* filecuts;
  if( filecutsname.EqualTo("") ) {
    stdcuts=kTRUE; 
  } else {
      filecuts=TFile::Open(filecutsname.Data());
      if(!filecuts ||(filecuts&& !filecuts->IsOpen())){
	AliFatal("Input file not found : check your cut object");
      }
  }
 
  if(system==0) centralityon=kFALSE;

  AliRDHFCuts *analysiscuts=0x0;

  TString filename="",out1name="nEntriesQA",out2name="outputPid",out3name="outputTrack",out4name="cuts",out5name="countersCentrality",out6name="outputCentrCheck",out7name="outputEvSel",out8name="outputFlowObs",inname="input",suffix="",cutsobjname="",centr="";
  filename = AliAnalysisManager::GetCommonFileName();
  filename += ":PWG3_D2H_QA";
  filename += finDirname.Data();

  switch (ch){
  case 0:
    cutsobjname="AnalysisCuts";
    if(stdcuts) {
      analysiscuts = new AliRDHFCutsDplustoKpipi();
      if (system == 0) analysiscuts->SetStandardCutsPP2010();
      else analysiscuts->SetStandardCutsPbPb2011();
    }
    else analysiscuts = (AliRDHFCutsDplustoKpipi*)filecuts->Get(cutsobjname);
    suffix="Dplus";
    break;
  case 1:
    cutsobjname="D0toKpiCuts";
    if(stdcuts) {
      analysiscuts = new AliRDHFCutsD0toKpi();
      if (system == 0) analysiscuts->SetStandardCutsPP2010();
      else analysiscuts->SetStandardCutsPbPb2011();
    }
    else analysiscuts = (AliRDHFCutsD0toKpi*)filecuts->Get(cutsobjname);
    suffix="D0";
    break;
  case 2:
    cutsobjname="DStartoKpipiCuts";
    if(stdcuts) {
      analysiscuts = new AliRDHFCutsDStartoKpipi();
      if (system == 0) analysiscuts->SetStandardCutsPP2010();
      else analysiscuts->SetStandardCutsPbPb2011();
    }
    else analysiscuts = (AliRDHFCutsDstartoKpipi*)filecuts->Get(cutsobjname);
    suffix="Dstar";
    break;
  case 3:
    cutsobjname="DstoKKpiCuts";
    if(stdcuts) {
      analysiscuts = new AliRDHFCutsDstoKKpi();
      if (system == 0) analysiscuts->SetStandardCutsPP2010();
      else analysiscuts->SetStandardCutsPbPb2010();
    }
    else analysiscuts = (AliRDHFCutsDstoKKpi*)filecuts->Get(cutsobjname);
    suffix="Ds";
    break;
  case 4:
    cutsobjname="D0toKpipipiCuts";
    if(stdcuts) {
      analysiscuts = new AliRDHFCutsD0toKpipipi();
      if (system == 0) analysiscuts->SetStandardCutsPP2010();
      else analysiscuts->SetStandardCutsPbPb2010();
    }
    else analysiscuts = (AliRDHFCutsD0toKpipipi*)filecuts->Get(cutsobjname);
    suffix="D04";
    break;
  case 5:
    cutsobjname="LctopKpiAnalysisCuts";
    if(stdcuts) {
      analysiscuts = new AliRDHFCutsLctopKpi();
      if (system == 0) analysiscuts->SetStandardCutsPP2010();
      else analysiscuts->SetStandardCutsPbPb2010();
    }
    else analysiscuts = (AliRDHFCutsLctopKpi*)filecuts->Get(cutsobjname);
    suffix="Lc";
    break;
  case 6:
    cutsobjname="LctoV0AnalysisCuts";
    if(stdcuts) {
      analysiscuts = new AliRDHFCutsLctoV0bachelor();
      if (system == 0) analysiscuts->SetStandardCutsPP2010();
      else analysiscuts->SetStandardCutsPbPb2010();
    }
    else analysiscuts = (AliRDHFCutsLctoV0*)filecuts->Get(cutsobjname);
    suffix="LcToV0x";
    break;
  }

  inname+=suffix;
  out1name+=suffix;
  out2name+=suffix;
  out3name+=suffix;
  out4name=cutsobjname;
  out4name+=suffix;
  out5name+=suffix;
  out6name+=suffix;
  out7name+=suffix;
  out8name+=suffix;

  if(!analysiscuts && filecutsname!="none"){
    cout<<"Specific AliRDHFCuts not found"<<endl;
    return;
  }

  centr=Form("%.0f%.0f",analysiscuts->GetMinCentrality(),analysiscuts->GetMaxCentrality());
  inname+=centr;
  out1name+=centr;
  out2name+=centr;
  out3name+=centr;
  out4name+=centr;
  out5name+=centr;
  out6name+=centr;
  out7name+=centr;
  out8name+=centr;
  inname+= finDirname.Data();
  out1name+= finDirname.Data();
  out2name+= finDirname.Data();
  out3name+= finDirname.Data();
  out4name+= finDirname.Data();
  out5name+= finDirname.Data();
  out6name+= finDirname.Data();
  out7name+= finDirname.Data();
  out8name+= finDirname.Data();
 
  AliAnalysisTaskSEHFQA* taskQA=new AliAnalysisTaskSEHFQA(Form("QA%s",suffix.Data()),ch,analysiscuts);

  taskQA->SetReadMC(readMC);
  taskQA->SetSimpleMode(simplemode); // set to kTRUE to go faster in PbPb
  taskQA->SetTrackOn(trackon);
  taskQA->SetPIDOn(pidon);
  taskQA->SetCentralityOn(centralityon);
  taskQA->SetEvSelectionOn(eventselon);
  taskQA->SetFlowObsOn(flowobson);
  taskQA->SetFillDistributionsForTrackEffChecks(filldistribforeffcheckson);
  mgr->AddTask(taskQA);

  //
  // Create containers for input/output
  AliAnalysisDataContainer *cinput = mgr->CreateContainer(inname,TChain::Class(), AliAnalysisManager::kInputContainer);
  mgr->ConnectInput(taskQA,0,mgr->GetCommonInputContainer());

  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(out1name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //events analysed
  mgr->ConnectOutput(taskQA,1,coutput1);

  AliAnalysisDataContainer *coutput2 = mgr->CreateContainer(out2name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //PID
  if(pidon) mgr->ConnectOutput(taskQA,2,coutput2);

  AliAnalysisDataContainer *coutput3 = mgr->CreateContainer(out3name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //quality of tracks
  if(trackon) mgr->ConnectOutput(taskQA,3,coutput3);

  AliAnalysisDataContainer *coutput4 = mgr->CreateContainer(out4name,AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //cuts
  mgr->ConnectOutput(taskQA,4,coutput4);

  AliAnalysisDataContainer *coutput5 = mgr->CreateContainer(out5name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //quality of centrality
  if(centralityon) mgr->ConnectOutput(taskQA,5,coutput5);

  AliAnalysisDataContainer *coutput6 = mgr->CreateContainer(out6name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //quality of centrality
  if(centralityon) mgr->ConnectOutput(taskQA,6,coutput6);

  AliAnalysisDataContainer *coutput7 = mgr->CreateContainer(out7name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //event selection
  if(eventselon) mgr->ConnectOutput(taskQA,7,coutput7);

  AliAnalysisDataContainer *coutput8 = mgr->CreateContainer(out8name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //flow observables
  if(flowobson) mgr->ConnectOutput(taskQA,8,coutput8);

 return taskQA;
}

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