1 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){
3 // Test macro for the AliAnalysisTaskSE for HF mesons quality assurance
4 //Author: C.Bianchin chiara.bianchin@pd.infn.it
6 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
8 ::Error("AddTaskHFQA", "No analysis manager to connect to.");
12 Bool_t stdcuts=kFALSE;
14 if( filecutsname.EqualTo("") ) {
17 filecuts=TFile::Open(filecutsname.Data());
18 if(!filecuts ||(filecuts&& !filecuts->IsOpen())){
19 AliFatal("Input file not found : check your cut object");
23 if(system==0) centralityon=kFALSE;
25 AliRDHFCuts *analysiscuts=0x0;
27 TString filename="",out1name="nEntriesQA",out2name="outputPid",out3name="outputTrack",out4name="cuts",out5name="countersCentrality",out6name="outputCentrCheck",out7name="outputEvSel",out8name="outputFlowObs",inname="input",suffix="",cutsobjname="",centr="";
28 filename = AliAnalysisManager::GetCommonFileName();
29 filename += ":PWG3_D2H_QA";
30 filename += finDirname.Data();
34 cutsobjname="AnalysisCuts";
36 analysiscuts = new AliRDHFCutsDplustoKpipi();
37 if (system == 0) analysiscuts->SetStandardCutsPP2010();
38 else analysiscuts->SetStandardCutsPbPb2011();
40 else analysiscuts = (AliRDHFCutsDplustoKpipi*)filecuts->Get(cutsobjname);
44 cutsobjname="D0toKpiCuts";
46 analysiscuts = new AliRDHFCutsD0toKpi();
47 if (system == 0) analysiscuts->SetStandardCutsPP2010();
48 else analysiscuts->SetStandardCutsPbPb2011();
50 else analysiscuts = (AliRDHFCutsD0toKpi*)filecuts->Get(cutsobjname);
54 cutsobjname="DStartoKpipiCuts";
56 analysiscuts = new AliRDHFCutsDStartoKpipi();
57 if (system == 0) analysiscuts->SetStandardCutsPP2010();
58 else analysiscuts->SetStandardCutsPbPb2011();
60 else analysiscuts = (AliRDHFCutsDstartoKpipi*)filecuts->Get(cutsobjname);
64 cutsobjname="DstoKKpiCuts";
66 analysiscuts = new AliRDHFCutsDstoKKpi();
67 if (system == 0) analysiscuts->SetStandardCutsPP2010();
68 else analysiscuts->SetStandardCutsPbPb2010();
70 else analysiscuts = (AliRDHFCutsDstoKKpi*)filecuts->Get(cutsobjname);
74 cutsobjname="D0toKpipipiCuts";
76 analysiscuts = new AliRDHFCutsD0toKpipipi();
77 if (system == 0) analysiscuts->SetStandardCutsPP2010();
78 else analysiscuts->SetStandardCutsPbPb2010();
80 else analysiscuts = (AliRDHFCutsD0toKpipipi*)filecuts->Get(cutsobjname);
84 cutsobjname="LctopKpiAnalysisCuts";
86 analysiscuts = new AliRDHFCutsLctopKpi();
87 if (system == 0) analysiscuts->SetStandardCutsPP2010();
88 else analysiscuts->SetStandardCutsPbPb2010();
90 else analysiscuts = (AliRDHFCutsLctopKpi*)filecuts->Get(cutsobjname);
94 cutsobjname="LctoV0AnalysisCuts";
96 analysiscuts = new AliRDHFCutsLctoV0bachelor();
97 if (system == 0) analysiscuts->SetStandardCutsPP2010();
98 else analysiscuts->SetStandardCutsPbPb2010();
100 else analysiscuts = (AliRDHFCutsLctoV0*)filecuts->Get(cutsobjname);
109 out4name=cutsobjname;
116 if(!analysiscuts && filecutsname!="none"){
117 cout<<"Specific AliRDHFCuts not found"<<endl;
121 centr=Form("%.0f%.0f",analysiscuts->GetMinCentrality(),analysiscuts->GetMaxCentrality());
131 inname+= finDirname.Data();
132 out1name+= finDirname.Data();
133 out2name+= finDirname.Data();
134 out3name+= finDirname.Data();
135 out4name+= finDirname.Data();
136 out5name+= finDirname.Data();
137 out6name+= finDirname.Data();
138 out7name+= finDirname.Data();
139 out8name+= finDirname.Data();
141 AliAnalysisTaskSEHFQA* taskQA=new AliAnalysisTaskSEHFQA(Form("QA%s",suffix.Data()),ch,analysiscuts);
143 taskQA->SetReadMC(readMC);
144 taskQA->SetSimpleMode(simplemode); // set to kTRUE to go faster in PbPb
145 taskQA->SetTrackOn(trackon);
146 taskQA->SetPIDOn(pidon);
147 taskQA->SetCentralityOn(centralityon);
148 taskQA->SetEvSelectionOn(eventselon);
149 taskQA->SetFlowObsOn(flowobson);
150 taskQA->SetFillDistributionsForTrackEffChecks(filldistribforeffcheckson);
151 mgr->AddTask(taskQA);
154 // Create containers for input/output
155 AliAnalysisDataContainer *cinput = mgr->CreateContainer(inname,TChain::Class(), AliAnalysisManager::kInputContainer);
156 mgr->ConnectInput(taskQA,0,mgr->GetCommonInputContainer());
158 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(out1name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //events analysed
159 mgr->ConnectOutput(taskQA,1,coutput1);
161 AliAnalysisDataContainer *coutput2 = mgr->CreateContainer(out2name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //PID
162 if(pidon) mgr->ConnectOutput(taskQA,2,coutput2);
164 AliAnalysisDataContainer *coutput3 = mgr->CreateContainer(out3name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //quality of tracks
165 if(trackon) mgr->ConnectOutput(taskQA,3,coutput3);
167 AliAnalysisDataContainer *coutput4 = mgr->CreateContainer(out4name,AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //cuts
168 mgr->ConnectOutput(taskQA,4,coutput4);
170 AliAnalysisDataContainer *coutput5 = mgr->CreateContainer(out5name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //quality of centrality
171 if(centralityon) mgr->ConnectOutput(taskQA,5,coutput5);
173 AliAnalysisDataContainer *coutput6 = mgr->CreateContainer(out6name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //quality of centrality
174 if(centralityon) mgr->ConnectOutput(taskQA,6,coutput6);
176 AliAnalysisDataContainer *coutput7 = mgr->CreateContainer(out7name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //event selection
177 if(eventselon) mgr->ConnectOutput(taskQA,7,coutput7);
179 AliAnalysisDataContainer *coutput8 = mgr->CreateContainer(out8name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //flow observables
180 if(flowobson) mgr->ConnectOutput(taskQA,8,coutput8);