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