]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/vertexingHF/macros/AddTaskHFQA.C
Updates to run with deltas (L. Cunqueiro)
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / macros / AddTaskHFQA.C
1 AliAnalysisTaskSEHFQA* AddTaskHFQA(AliAnalysisTaskSEHFQA::DecChannel ch,TString filecutsname="D0toKpiCuts.root",Bool_t readMC=kFALSE, Bool_t simplemode=kFALSE, Int_t system=1 /*0=pp, 1=PbPb*/){
2   //
3   // Test macro for the AliAnalysisTaskSE for HF mesons quality assurance
4   //Author: C.Bianchin chiara.bianchin@pd.infn.it
5
6   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
7   if (!mgr) {
8     ::Error("AddTaskHFQA", "No analysis manager to connect to.");
9     return NULL;
10   }
11
12   Bool_t stdcuts=kFALSE;
13   TFile* filecuts=new TFile(filecutsname.Data());
14   if(!filecuts->IsOpen()){
15     cout<<"Input file not found: using std cut object"<<endl;
16     stdcuts=kTRUE;
17   }
18
19   Bool_t onoff[4]={kTRUE,kTRUE,kTRUE,kTRUE}; //tracks (0), PID (1), centrality (2), event selection(3) 
20   if(system==0) onoff[2]=kFALSE;
21
22   AliRDHFCuts *analysiscuts=0x0;
23
24   TString filename="",out1name="nEntriesQA",out2name="outputPid",out3name="outputTrack",out4name="cuts",out5name="countersCentrality",out6name="outputCentrCheck",out7name="outputEvSel",inname="input",suffix="",cutsobjname="",centr="";
25   filename = AliAnalysisManager::GetCommonFileName();
26   filename += ":PWG3_D2H_QA";
27
28   switch (ch){
29   case 0:
30     cutsobjname="AnalysisCuts";
31     if(stdcuts) {
32       analysiscuts = new AliRDHFCutsDplustoKpipi();
33       if (system == 0) analysiscuts->SetStandardCutsPP2010();
34       else analysiscuts->SetStandardCutsPbPb2010();
35     }
36     else analysiscuts = (AliRDHFCutsDplustoKpipi*)filecuts->Get(cutsobjname);
37     suffix="Dplus";
38     break;
39   case 1:
40     cutsobjname="D0toKpiCuts";
41     if(stdcuts) {
42       analysiscuts = new AliRDHFCutsD0toKpi();
43       if (system == 0) analysiscuts->SetStandardCutsPP2010();
44       else analysiscuts->SetStandardCutsPbPb2010();
45     }
46     else analysiscuts = (AliRDHFCutsD0toKpi*)filecuts->Get(cutsobjname);
47     suffix="D0";
48     break;
49   case 2:
50     cutsobjname="DStartoKpipiCuts";
51     if(stdcuts) {
52       analysiscuts = new AliRDHFCutsDStartoKpipi();
53       if (system == 0) analysiscuts->SetStandardCutsPP2010();
54       else analysiscuts->SetStandardCutsPbPb2010();
55     }
56     else analysiscuts = (AliRDHFCutsDstartoKpipi*)filecuts->Get(cutsobjname);
57     suffix="Dstar";
58     break;
59   case 3:
60     cutsobjname="DstoKKpiCuts";
61     if(stdcuts) {
62       analysiscuts = new AliRDHFCutsDstoKKpi();
63       if (system == 0) analysiscuts->SetStandardCutsPP2010();
64       else analysiscuts->SetStandardCutsPbPb2010();
65     }
66     else analysiscuts = (AliRDHFCutsDstoKKpi*)filecuts->Get(cutsobjname);
67     suffix="Ds";
68     break;
69   case 4:
70     cutsobjname="D0toKpipipiCuts";
71     if(stdcuts) {
72       analysiscuts = new AliRDHFCutsD0toKpipipi();
73       if (system == 0) analysiscuts->SetStandardCutsPP2010();
74       else analysiscuts->SetStandardCutsPbPb2010();
75     }
76     else analysiscuts = (AliRDHFCutsD0toKpipipi*)filecuts->Get(cutsobjname);
77     suffix="D04";
78     break;
79   case 5:
80     cutsobjname="LctopKpiAnalysisCuts";
81     if(stdcuts) {
82       analysiscuts = new AliRDHFCutsLctopKpi();
83       if (system == 0) analysiscuts->SetStandardCutsPP2010();
84       else analysiscuts->SetStandardCutsPbPb2010();
85     }
86     else analysiscuts = (AliRDHFCutsLctopKpi*)filecuts->Get(cutsobjname);
87     suffix="Lc";
88     break;
89   }
90
91   inname+=suffix;
92   out1name+=suffix;
93   out2name+=suffix;
94   out3name+=suffix;
95   out4name=cutsobjname;
96   out5name+=suffix;
97   out6name+=suffix;
98   out7name+=suffix;
99
100   if(!analysiscuts && filecutsname!="none"){
101     cout<<"Specific AliRDHFCuts not found"<<endl;
102     return;
103   }
104
105   centr=Form("%.0f%.0f",analysiscuts->GetMinCentrality(),analysiscuts->GetMaxCentrality());
106   inname+=centr;
107   out1name+=centr;
108   out2name+=centr;
109   out3name+=centr;
110   out4name+=centr;
111   out5name+=centr;
112   out6name+=centr;
113   out7name+=centr;
114
115  
116   AliAnalysisTaskSEHFQA* taskQA=new AliAnalysisTaskSEHFQA(Form("QA%s",suffix.Data()),ch,analysiscuts);
117
118   taskQA->SetReadMC(readMC);
119   taskQA->SetSimpleMode(simplemode); // set to kTRUE to go faster in PbPb
120   taskQA->SetTrackOn(onoff[0]);
121   taskQA->SetPIDOn(onoff[1]);
122   taskQA->SetCentralityOn(onoff[2]);
123   taskQA->SetEvSelectionOn(onoff[3]);
124   mgr->AddTask(taskQA);
125
126   //
127   // Create containers for input/output
128   AliAnalysisDataContainer *cinput = mgr->CreateContainer(inname,TChain::Class(), AliAnalysisManager::kInputContainer);
129   mgr->ConnectInput(taskQA,0,mgr->GetCommonInputContainer());
130
131   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(out1name,TH1F::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //events analysed
132   mgr->ConnectOutput(taskQA,1,coutput1);
133
134   AliAnalysisDataContainer *coutput2 = mgr->CreateContainer(out2name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //PID
135   if(onoff[1]) mgr->ConnectOutput(taskQA,2,coutput2);
136
137   AliAnalysisDataContainer *coutput3 = mgr->CreateContainer(out3name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //quality of tracks
138   if(onoff[0]) mgr->ConnectOutput(taskQA,3,coutput3);
139
140   AliAnalysisDataContainer *coutput4 = mgr->CreateContainer(out4name,AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //cuts
141   mgr->ConnectOutput(taskQA,4,coutput4);
142
143   AliAnalysisDataContainer *coutput5 = mgr->CreateContainer(out5name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //quality of centrality
144   if(onoff[2]) mgr->ConnectOutput(taskQA,5,coutput5);
145
146   AliAnalysisDataContainer *coutput6 = mgr->CreateContainer(out6name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //quality of centrality
147   if(onoff[2]) mgr->ConnectOutput(taskQA,6,coutput6);
148
149   AliAnalysisDataContainer *coutput7 = mgr->CreateContainer(out7name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //event selection
150   if(onoff[3]) mgr->ConnectOutput(taskQA,7,coutput7);
151
152  return taskQA;
153 }
154