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*/){
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;
13 TFile* filecuts=new TFile(filecutsname.Data());
14 if(!filecuts->IsOpen()){
15 cout<<"Input file not found: using std cut object"<<endl;
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;
22 AliRDHFCuts *analysiscuts=0x0;
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";
30 cutsobjname="AnalysisCuts";
32 analysiscuts = new AliRDHFCutsDplustoKpipi();
33 if (system == 0) analysiscuts->SetStandardCutsPP2010();
34 else analysiscuts->SetStandardCutsPbPb2010();
36 else analysiscuts = (AliRDHFCutsDplustoKpipi*)filecuts->Get(cutsobjname);
40 cutsobjname="D0toKpiCuts";
42 analysiscuts = new AliRDHFCutsD0toKpi();
43 if (system == 0) analysiscuts->SetStandardCutsPP2010();
44 else analysiscuts->SetStandardCutsPbPb2010();
46 else analysiscuts = (AliRDHFCutsD0toKpi*)filecuts->Get(cutsobjname);
50 cutsobjname="DStartoKpipiCuts";
52 analysiscuts = new AliRDHFCutsDStartoKpipi();
53 if (system == 0) analysiscuts->SetStandardCutsPP2010();
54 else analysiscuts->SetStandardCutsPbPb2010();
56 else analysiscuts = (AliRDHFCutsDstartoKpipi*)filecuts->Get(cutsobjname);
60 cutsobjname="DstoKKpiCuts";
62 analysiscuts = new AliRDHFCutsDstoKKpi();
63 if (system == 0) analysiscuts->SetStandardCutsPP2010();
64 else analysiscuts->SetStandardCutsPbPb2010();
66 else analysiscuts = (AliRDHFCutsDstoKKpi*)filecuts->Get(cutsobjname);
70 cutsobjname="D0toKpipipiCuts";
72 analysiscuts = new AliRDHFCutsD0toKpipipi();
73 if (system == 0) analysiscuts->SetStandardCutsPP2010();
74 else analysiscuts->SetStandardCutsPbPb2010();
76 else analysiscuts = (AliRDHFCutsD0toKpipipi*)filecuts->Get(cutsobjname);
80 cutsobjname="LctopKpiAnalysisCuts";
82 analysiscuts = new AliRDHFCutsLctopKpi();
83 if (system == 0) analysiscuts->SetStandardCutsPP2010();
84 else analysiscuts->SetStandardCutsPbPb2010();
86 else analysiscuts = (AliRDHFCutsLctopKpi*)filecuts->Get(cutsobjname);
100 if(!analysiscuts && filecutsname!="none"){
101 cout<<"Specific AliRDHFCuts not found"<<endl;
105 centr=Form("%.0f%.0f",analysiscuts->GetMinCentrality(),analysiscuts->GetMaxCentrality());
116 AliAnalysisTaskSEHFQA* taskQA=new AliAnalysisTaskSEHFQA(Form("QA%s",suffix.Data()),ch,analysiscuts);
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);
127 // Create containers for input/output
128 AliAnalysisDataContainer *cinput = mgr->CreateContainer(inname,TChain::Class(), AliAnalysisManager::kInputContainer);
129 mgr->ConnectInput(taskQA,0,mgr->GetCommonInputContainer());
131 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(out1name,TH1F::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //events analysed
132 mgr->ConnectOutput(taskQA,1,coutput1);
134 AliAnalysisDataContainer *coutput2 = mgr->CreateContainer(out2name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //PID
135 if(onoff[1]) mgr->ConnectOutput(taskQA,2,coutput2);
137 AliAnalysisDataContainer *coutput3 = mgr->CreateContainer(out3name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //quality of tracks
138 if(onoff[0]) mgr->ConnectOutput(taskQA,3,coutput3);
140 AliAnalysisDataContainer *coutput4 = mgr->CreateContainer(out4name,AliRDHFCuts::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //cuts
141 mgr->ConnectOutput(taskQA,4,coutput4);
143 AliAnalysisDataContainer *coutput5 = mgr->CreateContainer(out5name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //quality of centrality
144 if(onoff[2]) mgr->ConnectOutput(taskQA,5,coutput5);
146 AliAnalysisDataContainer *coutput6 = mgr->CreateContainer(out6name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //quality of centrality
147 if(onoff[2]) mgr->ConnectOutput(taskQA,6,coutput6);
149 AliAnalysisDataContainer *coutput7 = mgr->CreateContainer(out7name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //event selection
150 if(onoff[3]) mgr->ConnectOutput(taskQA,7,coutput7);