]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGHF/vertexingHF/macros/AddTaskCombinHF.C
Updated PID for D0 at low pt (Christian Mohler, Andrea Rossi)
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / macros / AddTaskCombinHF.C
CommitLineData
f2221737 1AliAnalysisTaskCombinHF *AddTaskCombinHF(Int_t meson = 0,
2 Bool_t readMC = kTRUE,
3 TString containerStr = "",
4 TString cutObjFile = "",
5 TString cutObjNam = "",
6 Int_t filterMask = 1,
7 Double_t ptcut = 0.3,
8 Double_t etacut = 0.9,
9 Int_t pidStrategy = 0,
10 Int_t casePID = 2,
11 Double_t bayesThresKaon = 0.4,
12 Double_t bayesThresPion = 0.4,
13 Double_t minMass = 1.6,
14 Double_t maxMass = 2.15,
15 Double_t maxPt = 20.)
811e9cbd 16{
17
18 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
19 if (!mgr) {
20 ::Error("AddTaskCombinHF", "No analysis manager to connect to.");
21 }
22
23 //Analysis Task
24
ebc460de 25
26 AliRDHFCuts* analysiscuts=0x0;
27 AliAODPidHF* pid=0x0;
28 if(!cutObjFile.IsNull()){
29 TFile *f=TFile::Open(cutObjFile.Data(),"READ");
30 if(f){
31 analysiscuts=(AliRDHFCuts*)f->Get(cutObjNam.Data());
a25d1750 32 AliESDtrackCuts *esdc=analysiscuts->GetTrackCuts();
ebc460de 33 pid=analysiscuts->GetPidHF();
34 }
35 }
36 else {
37 if(meson==0) analysiscuts=new AliRDHFCutsD0toKpi();
38 else analysiscuts=new AliRDHFCutsDplustoKpipi();
39 analysiscuts->SetStandardCutsPP2010();
40 pid=new AliAODPidHF();
41 pid->SetMatch(5);
42 pid->SetTPCnSigmaRangeForPions(-3.,3.);
43 pid->SetTPCnSigmaRangeForKaons(-2.,3.);
44 pid->SetTPCnSigmaRangeForProtons(-3.,3.);
45 pid->SetTOFnSigmaRangeForPions(-3.,3.);
46 pid->SetTOFnSigmaRangeForKaons(-2.,2.);
47 pid->SetTOFnSigmaRangeForProtons(-3.,3.);
48
49 }
50 if(!analysiscuts){
51 Printf("Wrong file or cut object name set");
52 return 0x0;
53 }
54
811e9cbd 55 AliAnalysisTaskCombinHF *dTask = new AliAnalysisTaskCombinHF(meson,analysiscuts);
a25d1750 56 if(!cutObjFile.IsNull()){
57 dTask->SetKaonTrackCuts(esdc);
58 dTask->SetPionTrackCuts(esdc);
59 dTask->SetTrackCuts(esdc);
60 }
811e9cbd 61 dTask->SetReadMC(readMC);
62 dTask->SetDebugLevel(0);
f2221737 63
64 dTask->SetFilterMask(filterMask);
65 dTask->SetPtAccCut(ptcut);
66 dTask->SetEtaAccCut(etacut);
67
68 // mass and pt range for histograms
69 dTask->SetMassWindow(minMass, maxMass);
70 dTask->SetMaxPt(maxPt);
71
72 // PID settings
811e9cbd 73 dTask->SetPIDHF(pid);
f2221737 74 dTask->SetPIDstrategy(pidStrategy);
75 dTask->SetPIDselCaseZero(casePID);
76 dTask->SetBayesThres(bayesThresKaon, bayesThresPion);
77
ebc460de 78
811e9cbd 79 mgr->AddTask(dTask);
f2221737 80
811e9cbd 81
82 // Create containers for input/output
83
84 TString mesname="Dzero";
85 if(meson==1) mesname="Dplus";
f2221737 86 TString inname = Form("cinput%s%s",mesname.Data(),containerStr.Data());
ebc460de 87 TString outname = Form("coutput%s%s",mesname.Data(),containerStr.Data());
88 TString normname = Form("coutput%sNorm%s",mesname.Data(),containerStr.Data());
811e9cbd 89
90 AliAnalysisDataContainer *cinput = mgr->CreateContainer(inname,TChain::Class(),
91 AliAnalysisManager::kInputContainer);
92 TString outputfile = AliAnalysisManager::GetCommonFileName();
ebc460de 93 outputfile += Form(":PWG3_D2H_InvMass%sLowPt%s",mesname.Data(),containerStr.Data());
811e9cbd 94
95
96 AliAnalysisDataContainer *coutput = mgr->CreateContainer(outname,TList::Class(),
97 AliAnalysisManager::kOutputContainer,
98 outputfile.Data());
99 AliAnalysisDataContainer *coutputNorm = mgr->CreateContainer(normname,AliNormalizationCounter::Class(),
100 AliAnalysisManager::kOutputContainer,
101 outputfile.Data());
102
103 mgr->ConnectInput(dTask,0,mgr->GetCommonInputContainer());
104
105 mgr->ConnectOutput(dTask,1,coutput);
106
107 mgr->ConnectOutput(dTask,2,coutputNorm);
108
109 return dTask;
110}