]>
Commit | Line | Data |
---|---|---|
90c70b48 | 1 | AliAnalysisTaskSED0Mass *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 | } |