]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGHF/vertexingHF/macros/AddTaskD0Mass.C
Transition PWG3 --> PWGHF
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / macros / AddTaskD0Mass.C
CommitLineData
90c70b48 1AliAnalysisTaskSED0Mass *AddTaskD0Mass(Int_t flag=0/*0 = D0,1 = LS*/,Bool_t readMC=kFALSE,
2 Bool_t filldistr=kFALSE,Bool_t cutOnDistr=kFALSE,
3 Int_t system=0/*0=pp,1=PbPb*/,Int_t flagD0D0bar=0,
4 Float_t minC=0, Float_t maxC=0,
5 TString finDirname="Loose",
6 TString finname="D0toKpiCuts.root",TString finObjname="D0toKpiCuts", Bool_t flagAOD049=kFALSE,
7 Bool_t FillMassPt=false, Bool_t FillImpPar=false)
95e5b6b5 8{
9 //
10 // AddTask for the AliAnalysisTaskSE for D0 candidates
11 // invariant mass histogram and association with MC truth
12 // (using MC info in AOD) and cut variables distributions
13 // C.Bianchin chiara.bianchin@pd.infn.it
14 //
15
16
17 // Get the pointer to the existing analysis manager via the static access method.
18 //==============================================================================
19 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
20 if (!mgr) {
21 ::Error("AddTaskD0Distr", "No analysis manager to connect to.");
22 return NULL;
23 }
24
90c70b48 25 TString filename="",out1name="",out2name="",out3name="",out4name="",out5name="",out6name="",out7name="",inname="";
95e5b6b5 26 filename = AliAnalysisManager::GetCommonFileName();
27 filename += ":PWG3_D2H_";
28 if(flag==0){
29 filename+="D0InvMass";
30 if(cutOnDistr) filename+="C";
449b1302 31 if(flagD0D0bar==1)filename+="D0";
32 if(flagD0D0bar==2)filename+="D0bar";
95e5b6b5 33 //list mass
449b1302 34 out1name="coutputmassD0Mass";
95e5b6b5 35 if(cutOnDistr) out1name+="C";
449b1302 36 if(flagD0D0bar==1)out1name+="D0";
37 if(flagD0D0bar==2)out1name+="D0bar";
95e5b6b5 38 //list distr
449b1302 39 out2name="coutputmassD0distr";
95e5b6b5 40 if(cutOnDistr) out2name+="C";
449b1302 41 if(flagD0D0bar==1)out2name+="D0";
42 if(flagD0D0bar==2)out2name+="D0bar";
43 //hist entries
44 out3name="nEntriesD0";
95e5b6b5 45 if(cutOnDistr) out3name+="C";
449b1302 46 if(flagD0D0bar==1)out3name+="D0";
47 if(flagD0D0bar==2)out3name+="D0bar";
50027560 48 //cuts object
49 out4name="cutsD0";
95e5b6b5 50 if(cutOnDistr) out4name+="C";
449b1302 51 if(flagD0D0bar==1)out4name+="D0";
52 if(flagD0D0bar==2)out4name+="D0bar";
50027560 53
54 //AliNormalizationCounter
55 out5name="normalizationCounter";
95e5b6b5 56 if(cutOnDistr) out5name+="C";
449b1302 57 if(flagD0D0bar==1)out5name+="D0";
58 if(flagD0D0bar==2)out5name+="D0bar";
95e5b6b5 59
90c70b48 60 // mass, pt, imp param distr
61 out6name="coutputmassD0MassPt";
62 if(cutOnDistr) out6name+="C";
63 if(flagD0D0bar==1)out6name+="D0";
64 if(flagD0D0bar==2)out6name+="D0bar";
65
66 out7name ="coutputVarTree";
67
449b1302 68 inname="cinputmassD0_0";
95e5b6b5 69 if(cutOnDistr) inname+="C";
449b1302 70 if(flagD0D0bar==1)inname+="D0";
71 if(flagD0D0bar==2)inname+="D0bar";
95e5b6b5 72
73 } else {
74 filename+="D0InvMassLikeSign";
75 if(cutOnDistr) filename+="C";
449b1302 76 if(flagD0D0bar==1)filename+="D0";
77 if(flagD0D0bar==2)filename+="D0bar";
95e5b6b5 78 //list mass
449b1302 79 out1name="coutputmassLSMass";
95e5b6b5 80 if(cutOnDistr) out1name+="C";
449b1302 81 if(flagD0D0bar==1)out1name+="D0";
82 if(flagD0D0bar==2)out1name+="D0bar";
95e5b6b5 83 //list distr
449b1302 84 out2name="coutputmassLSdistr";
95e5b6b5 85 if(cutOnDistr) out2name+="C";
449b1302 86 if(flagD0D0bar==1)out2name+="D0";
87 if(flagD0D0bar==2)out2name+="D0bar";
88 //hist entries
89 out3name="nEntriesLS";
95e5b6b5 90 if(cutOnDistr) out3name+="C";
449b1302 91 if(flagD0D0bar==1)out3name+="D0";
92 if(flagD0D0bar==2)out3name+="D0bar";
50027560 93 //cuts object
94 out4name="cutsLS";
95e5b6b5 95 if(cutOnDistr) out4name+="C";
449b1302 96 if(flagD0D0bar==1)out4name+="D0";
97 if(flagD0D0bar==2)out4name+="D0bar";
95e5b6b5 98
449b1302 99 inname="cinputmassD0_1";
95e5b6b5 100 if(cutOnDistr) inname+="C";
449b1302 101 if(flagD0D0bar==1)inname+="D0";
102 if(flagD0D0bar==2)inname+="D0bar";
95e5b6b5 103 }
90c70b48 104 filename += finDirname.Data();
105 out1name += finDirname.Data();
106 out2name += finDirname.Data();
107 out3name += finDirname.Data();
108 out4name += finDirname.Data();
109 out5name += finDirname.Data();
110 out6name += finDirname.Data();
111 out7name += finDirname.Data();
112 inname += finDirname.Data();
95e5b6b5 113
4e61a020 114 //setting my cut values
95e5b6b5 115
4e61a020 116 //cuts order
117 // printf(" |M-MD0| [GeV] < %f\n",fD0toKpiCuts[0]);
118 // printf(" dca [cm] < %f\n",fD0toKpiCuts[1]);
119 // printf(" cosThetaStar < %f\n",fD0toKpiCuts[2]);
120 // printf(" pTK [GeV/c] > %f\n",fD0toKpiCuts[3]);
121 // printf(" pTpi [GeV/c] > %f\n",fD0toKpiCuts[4]);
122 // printf(" |d0K| [cm] < %f\n",fD0toKpiCuts[5]);
123 // printf(" |d0pi| [cm] < %f\n",fD0toKpiCuts[6]);
124 // printf(" d0d0 [cm^2] < %f\n",fD0toKpiCuts[7]);
125 // printf(" cosThetaPoint > %f\n",fD0toKpiCuts[8]);
126
50027560 127 Bool_t stdcuts=kFALSE;
4e61a020 128 TFile* filecuts=new TFile(finname.Data());
129 if(!filecuts->IsOpen()){
50027560 130 cout<<"Input file not found: using std cut object"<<endl;
131 stdcuts=kTRUE;
95e5b6b5 132 }
95e5b6b5 133
4e61a020 134 AliRDHFCutsD0toKpi* RDHFD0toKpi=new AliRDHFCutsD0toKpi();
a220990f 135 if(stdcuts) {
136 if(system==0) RDHFD0toKpi->SetStandardCutsPP2010();
90c70b48 137 else {
138 RDHFD0toKpi->SetStandardCutsPbPb2010();
139 if(minC!=0 && maxC!=0) { //if centrality 0 and 0 leave the values in the cut object
140 RDHFD0toKpi->SetMinCentrality(minC);
141 RDHFD0toKpi->SetMaxCentrality(maxC);
142 }
143 if(flagAOD049)RDHFD0toKpi->SetUseAOD049(kTRUE);
144 RDHFD0toKpi->SetUseCentrality(AliRDHFCuts::kCentV0M);
145 }
a220990f 146 }
90c70b48 147 else {
148 RDHFD0toKpi = (AliRDHFCutsD0toKpi*)filecuts->Get(finObjname.Data());
149 if(!RDHFD0toKpi){
150 cout<<"Specific AliRDHFCuts not found"<<endl;
151 return;
152 }
153 if(flagAOD049)RDHFD0toKpi->SetUseAOD049(kTRUE);
154 if(minC!=0 && maxC!=0) { //if centrality 0 and 0 leave the values in the cut object
155 RDHFD0toKpi->SetMinCentrality(minC);
156 RDHFD0toKpi->SetMaxCentrality(maxC);
157 }
4e61a020 158 }
90c70b48 159 // RDHFD0toKpi->SetName(Form("D0toKpiCuts%d",flag));
95e5b6b5 160
90c70b48 161 TString centr="";
162 if(minC!=0 && maxC!=0) centr = Form("%.0f%.0f",minC,maxC);
163 else centr = Form("%.0f%.0f",RDHFD0toKpi->GetMinCentrality(),RDHFD0toKpi->GetMaxCentrality());
065c884f 164 out1name+=centr;
165 out2name+=centr;
166 out3name+=centr;
167 out4name+=centr;
168 out5name+=centr;
90c70b48 169 out6name+=centr;
170 out7name+=centr;
065c884f 171 inname+=centr;
172
95e5b6b5 173 // Aanalysis task
174 TString taskname="MassAndDistrAnalysis";
175 if (flag==0)taskname.Prepend("D0");
176 else taskname.Prepend("LS");
177 AliAnalysisTaskSED0Mass *massD0Task = new AliAnalysisTaskSED0Mass(taskname.Data(),RDHFD0toKpi);
a8ce111e 178 massD0Task->SetDebugLevel(0);
95e5b6b5 179 massD0Task->SetArray(flag);
180 massD0Task->SetReadMC(readMC);
181 massD0Task->SetCutOnDistr(cutOnDistr);
6b3e3c78 182 massD0Task->SetUsePid4Distr(kFALSE);
449b1302 183 massD0Task->SetFillOnlyD0D0bar(flagD0D0bar);
a220990f 184 massD0Task->SetSystem(system); //0=pp, 1=PbPb
185 massD0Task->SetFillVarHists(filldistr); // default is FALSE if System=PbPb
90c70b48 186
187 massD0Task->SetFillPtHistos(FillMassPt);
188 massD0Task->SetFillImpactParameterHistos(FillImpPar);
189
190 // massD0Task->SetRejectSDDClusters(kTRUE);
191
192 // massD0Task->SetWriteVariableTree(kTRUE);
193
95e5b6b5 194 mgr->AddTask(massD0Task);
195
196 //
197 // Create containers for input/output
198 AliAnalysisDataContainer *cinputmassD0 = mgr->CreateContainer(inname,TChain::Class(),
199 AliAnalysisManager::kInputContainer);
200
201 AliAnalysisDataContainer *coutputmassD01 = mgr->CreateContainer(out1name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //mass
202 AliAnalysisDataContainer *coutputmassD02 = mgr->CreateContainer(out2name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //distr
203 AliAnalysisDataContainer *coutputmassD03 = mgr->CreateContainer(out3name,TH1F::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //nev
50027560 204 AliAnalysisDataContainer *coutputmassD04 = mgr->CreateContainer(out4name,AliRDHFCutsD0toKpi::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //cuts
205 AliAnalysisDataContainer *coutputmassD05 = mgr->CreateContainer(out5name,AliNormalizationCounter::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //counter
90c70b48 206 AliAnalysisDataContainer *coutputmassD06 = mgr->CreateContainer(out6name,TList::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //mass vs pt vs impt par
207 AliAnalysisDataContainer *coutputmassD07 = mgr->CreateContainer(out7name,TTree::Class(),AliAnalysisManager::kOutputContainer, filename.Data()); //mass vs pt vs impt par
4e61a020 208
95e5b6b5 209 mgr->ConnectInput(massD0Task,0,mgr->GetCommonInputContainer());
210
211 mgr->ConnectOutput(massD0Task,1,coutputmassD01);
212 mgr->ConnectOutput(massD0Task,2,coutputmassD02);
213 mgr->ConnectOutput(massD0Task,3,coutputmassD03);
214 mgr->ConnectOutput(massD0Task,4,coutputmassD04);
215 mgr->ConnectOutput(massD0Task,5,coutputmassD05);
90c70b48 216 mgr->ConnectOutput(massD0Task,6,coutputmassD06);
217 mgr->ConnectOutput(massD0Task,7,coutputmassD07);
95e5b6b5 218
219
220 return massD0Task;
221}