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){
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);
105 if(!analysiscuts && filecutsname!="none"){
106 cout<<"Specific AliRDHFCuts not found"<<endl;
110 centr=Form("%.0f%.0f",analysiscuts->GetMinCentrality(),analysiscuts->GetMaxCentrality());
120 inname+= finDirname.Data();
121 out1name+= finDirname.Data();
122 out2name+= finDirname.Data();
123 out3name+= finDirname.Data();
124 out4name+= finDirname.Data();
125 out5name+= finDirname.Data();
126 out6name+= finDirname.Data();
127 out7name+= finDirname.Data();
128 out8name+= finDirname.Data();
131 AliAnalysisTaskSEHFQA* taskQA=new AliAnalysisTaskSEHFQA(Form("QA%s",suffix.Data()),ch,analysiscuts);
133 taskQA->SetReadMC(readMC);
134 taskQA->SetSimpleMode(simplemode); // set to kTRUE to go faster in PbPb
135 taskQA->SetTrackOn(trackon);
136 taskQA->SetPIDOn(pidon);
137 taskQA->SetCentralityOn(centralityon);
138 taskQA->SetEvSelectionOn(eventselon);
139 taskQA->SetFlowObsOn(flowobson);
140 mgr->AddTask(taskQA);
143 // Create containers for input/output
144 AliAnalysisDataContainer *cinput = mgr->CreateContainer(inname,TChain::Class(), AliAnalysisManager::kInputContainer);
145 mgr->ConnectInput(taskQA,0,mgr->GetCommonInputContainer());
147 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(out1name,TH1F::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //events analysed
148 mgr->ConnectOutput(taskQA,1,coutput1);
150 AliAnalysisDataContainer *coutput2 = mgr->CreateContainer(out2name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //PID
151 if(pidon) mgr->ConnectOutput(taskQA,2,coutput2);
153 AliAnalysisDataContainer *coutput3 = mgr->CreateContainer(out3name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //quality of tracks
154 if(trackon) mgr->ConnectOutput(taskQA,3,coutput3);
156 AliAnalysisDataContainer *coutput4 = mgr->CreateContainer(out4name,AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //cuts
157 mgr->ConnectOutput(taskQA,4,coutput4);
159 AliAnalysisDataContainer *coutput5 = mgr->CreateContainer(out5name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //quality of centrality
160 if(centralityon) mgr->ConnectOutput(taskQA,5,coutput5);
162 AliAnalysisDataContainer *coutput6 = mgr->CreateContainer(out6name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //quality of centrality
163 if(centralityon) mgr->ConnectOutput(taskQA,6,coutput6);
165 AliAnalysisDataContainer *coutput7 = mgr->CreateContainer(out7name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //event selection
166 if(eventselon) mgr->ConnectOutput(taskQA,7,coutput7);
168 AliAnalysisDataContainer *coutput8 = mgr->CreateContainer(out8name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //flow observables
169 if(flowobson) mgr->ConnectOutput(taskQA,8,coutput8);