1 AliAnalysisTaskCharmFraction* AddTaskCharmFraction(
2 const char* fileout="d0D0.root",
3 Bool_t sideband=kFALSE,
4 Bool_t setD0usecuts=kTRUE,
5 Bool_t setcheckMC=kTRUE,
6 Bool_t setcheckMC_prompt=kTRUE,
7 Bool_t setcheckMC_fromB=kFALSE,
8 Bool_t setcheckMC_D0=kTRUE,
9 Bool_t setcheckMC_2prongs=kTRUE,
10 Bool_t setSkipD0star=kFALSE,
11 Bool_t setStudyPureBack=kFALSE)
14 // Configuration macro for the task to analyze the fraction of prompt charm
15 // using the D0 impact parameter
16 // andrea.rossi@ts.infn.it
18 //==========================================================================
19 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
21 ::Error("AddTaskCharmFraction", "No analysis manager to connect to.");
25 TString str=fileout,containername;
26 str.ReplaceAll(".root","");
29 AliAnalysisTaskCharmFraction *hfTask;
31 hfTask = new AliAnalysisTaskCharmFraction("CharmFraction",10);
33 hfTask= new AliAnalysisTaskCharmFraction("CharmFractionSideB",10);
34 hfTask->SetSideBands(-2.);
37 hfTask->SetUseCuts(setD0usecuts);
38 hfTask->SetCheckMC(setcheckMC);
39 hfTask->SetCheckMC_D0(setcheckMC_D0);
40 hfTask->SetCheckMC_2prongs(setcheckMC_2prongs);
41 hfTask->SetCheckMC_prompt(setcheckMC_prompt);
42 hfTask->SetCheckMC_fromB(setcheckMC_fromB);
43 hfTask->SetCheckMC_fromDstar(setSkipD0star);
44 hfTask->SetStudyPureBackground(setStudyPureBack);
45 // hfTask->SetSideBands(0);
46 // hfTask->SetDebugLevel(2);
49 //Now the same for sidebands
50 /*AliAnalysisTaskCharmFraction *hfTaskSideB
53 hfTaskSideB->SetUseCuts(fD0usecuts);
54 hfTaskSideB->SetCheckMC(fcheckMC);
55 hfTaskSideB->SetCheckMC_D0(fcheckMC_D0);
56 hfTaskSideB->SetCheckMC_2prongs(fcheckMC_2prongs);
57 hfTaskSideB->SetCheckMC_prompt(fcheckMC_prompt);
58 hfTaskSideB->SetCheckMC_fromB(fcheckMC_fromB);
59 hfTaskSideB->SetCheckMC_fromDstar(fSkipD0star);
60 hfTaskSideB->SetStudyPureBackground(fStudyPureBack);
62 // hfTaskSideB->SetDebugLevel(2);
63 mgr->AddTask(hfTaskSideB);
67 // Create containers for input/output
68 AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();//mgr->CreateContainer("cinput",TChain::Class(),AliAnalysisManager::kInputContainer);
69 mgr->ConnectInput(hfTask,0,cinput);
70 // mgr->ConnectInput(hfTaskSideB,0,cinput);
72 //Now container for general properties histograms
73 containername="coutputCptd0d0";
74 containername.Append(str.Data());
75 AliAnalysisDataContainer *coutputCptd0d0 = mgr->CreateContainer(containername.Data(),TH2::Class(),
76 AliAnalysisManager::kOutputContainer,
78 mgr->ConnectOutput(hfTask,0,coutputCptd0d0);
80 containername="coutputSecVtxXY";
81 containername.Append(str.Data());
82 AliAnalysisDataContainer *coutputSecVtxXY = mgr->CreateContainer(containername.Data(),TH2::Class(),
83 AliAnalysisManager::kOutputContainer,
85 mgr->ConnectOutput(hfTask,1,coutputSecVtxXY);
88 containername="coutputd0d0";
89 containername.Append(str.Data());
90 AliAnalysisDataContainer *coutputd0d0 = mgr->CreateContainer(containername.Data(),TH1::Class(),
91 AliAnalysisManager::kOutputContainer,
93 mgr->ConnectOutput(hfTask,2,coutputd0d0);
95 containername="coutputCpt";
96 containername.Append(str.Data());
97 AliAnalysisDataContainer *coutputCpt = mgr->CreateContainer(containername.Data(),TH1::Class(),
98 AliAnalysisManager::kOutputContainer,
100 mgr->ConnectOutput(hfTask,3,coutputCpt);
102 containername="coutputSecVtxZ";
103 containername.Append(str.Data());
104 AliAnalysisDataContainer *coutputSecVtxZ = mgr->CreateContainer(containername.Data(),TH1::Class(),
105 AliAnalysisManager::kOutputContainer,
107 mgr->ConnectOutput(hfTask,4,coutputSecVtxZ);
109 containername="coutputSecVtxX";
110 containername.Append(str.Data());
111 AliAnalysisDataContainer *coutputSecVtxX = mgr->CreateContainer(containername.Data(),TH1::Class(),
112 AliAnalysisManager::kOutputContainer,
114 mgr->ConnectOutput(hfTask,5,coutputSecVtxX);
116 containername="coutputSecVtxY";
117 containername.Append(str.Data());
118 AliAnalysisDataContainer *coutputSecVtxY = mgr->CreateContainer(containername.Data(),TH1::Class(),
119 AliAnalysisManager::kOutputContainer,
121 mgr->ConnectOutput(hfTask,6,coutputSecVtxY);
123 containername="coutputSecVtxPhi";
124 containername.Append(str.Data());
125 AliAnalysisDataContainer *coutputSecVtxPhi = mgr->CreateContainer(containername.Data(),TH1::Class(),
126 AliAnalysisManager::kOutputContainer,
128 mgr->ConnectOutput(hfTask,7,coutputSecVtxPhi);
131 //Now container for d0D0
132 AliAnalysisDataContainer **coutput=new AliAnalysisDataContainer*[10];
133 containername="coutputAll";
134 containername.Append(str.Data());
135 AliAnalysisDataContainer *coutputAll = mgr->CreateContainer(containername.Data(),TH1::Class(),
136 AliAnalysisManager::kOutputContainer,
140 TString name="coutput";
141 for(Int_t j=0;j<10;j++){
144 containername.Append(str.Data());
145 coutput[j] = mgr->CreateContainer(containername.Data(),TH1::Class(),
146 AliAnalysisManager::kOutputContainer,
149 mgr->ConnectOutput(hfTask,j+8,coutput[j]);
151 mgr->ConnectOutput(hfTask,18,coutputAll);
152 //Now container for MC d0D0
153 AliAnalysisDataContainer **coutputMC=new AliAnalysisDataContainer*[10];
154 containername="coutputAllMC";
155 containername.Append(str.Data());
156 AliAnalysisDataContainer *coutputAllMC = mgr->CreateContainer(containername.Data(),TH1::Class(),
157 AliAnalysisManager::kOutputContainer,
162 for(Int_t j=0;j<10;j++){
165 containername.Append(str.Data());
166 coutputMC[j] = mgr->CreateContainer(containername.Data(),TH1::Class(),
167 AliAnalysisManager::kOutputContainer,
170 mgr->ConnectOutput(hfTask,j+19,coutputMC[j]);
172 mgr->ConnectOutput(hfTask,29,coutputAllMC);
174 //Now container for histo with d0 with respect to True Vtx
175 AliAnalysisDataContainer **coutputd0VtxTrue=new AliAnalysisDataContainer*[10];
176 containername="coutputd0VtxTrueAll";
177 containername.Append(str.Data());
178 AliAnalysisDataContainer *coutputd0VtxTrueAll = mgr->CreateContainer(containername.Data(),TH1::Class(),
179 AliAnalysisManager::kOutputContainer,
183 name="coutputd0VtxTrue";
184 for(Int_t j=0;j<10;j++){
187 containername.Append(str.Data());
188 coutputd0VtxTrue[j] = mgr->CreateContainer(containername.Data(),TH1::Class(),
189 AliAnalysisManager::kOutputContainer,
192 mgr->ConnectOutput(hfTask,j+30,coutputd0VtxTrue[j]);
194 mgr->ConnectOutput(hfTask,40,coutputd0VtxTrueAll);
196 containername="coutputD0InvMassAll";
197 containername.Append(str.Data());
198 AliAnalysisDataContainer *coutputD0InvMassAll = mgr->CreateContainer(containername.Data(),TH1::Class(),
199 AliAnalysisManager::kOutputContainer,
201 mgr->ConnectOutput(hfTask,41,coutputD0InvMassAll);
202 containername="coutputD0MCInvMassAll";
203 containername.Append(str.Data());
204 AliAnalysisDataContainer *coutputD0MCInvMassAll = mgr->CreateContainer(containername.Data(),TH1::Class(),
205 AliAnalysisManager::kOutputContainer,
207 mgr->ConnectOutput(hfTask,42,coutputD0MCInvMassAll);
210 //NOW THE SAME FOR SIDE BANDS
212 //Now container for general properties histograms
214 AliAnalysisDataContainer *coutputSBCptd0d0 = mgr->CreateContainer("coutputSBCptd0d0",TH2::Class(),
215 AliAnalysisManager::kOutputContainer,
217 mgr->ConnectOutput(hfTaskSideB,0,coutputSBCptd0d0);
219 AliAnalysisDataContainer *coutputSBSecVtxXY = mgr->CreateContainer("coutputSBSecVtxXY",TH2::Class(),
220 AliAnalysisManager::kOutputContainer,
222 mgr->ConnectOutput(hfTaskSideB,1,coutputSBSecVtxXY);
225 AliAnalysisDataContainer *coutputSBd0d0 = mgr->CreateContainer("coutputSBd0d0",TH1::Class(),
226 AliAnalysisManager::kOutputContainer,
228 mgr->ConnectOutput(hfTaskSideB,2,coutputSBd0d0);
230 AliAnalysisDataContainer *coutputSBCpt = mgr->CreateContainer("coutputSBCpt",TH1::Class(),
231 AliAnalysisManager::kOutputContainer,
233 mgr->ConnectOutput(hfTaskSideB,3,coutputSBCpt);
235 AliAnalysisDataContainer *coutputSBSecVtxZ = mgr->CreateContainer("coutputSBSecVtxZ",TH1::Class(),
236 AliAnalysisManager::kOutputContainer,
238 mgr->ConnectOutput(hfTaskSideB,4,coutputSBSecVtxZ);
240 AliAnalysisDataContainer *coutputSBSecVtxX = mgr->CreateContainer("coutputSBSecVtxX",TH1::Class(),
241 AliAnalysisManager::kOutputContainer,
243 mgr->ConnectOutput(hfTaskSideB,5,coutputSBSecVtxX);
245 AliAnalysisDataContainer *coutputSBSecVtxY = mgr->CreateContainer("coutputSBSecVtxY",TH1::Class(),
246 AliAnalysisManager::kOutputContainer,
248 mgr->ConnectOutput(hfTaskSideB,6,coutputSBSecVtxY);
250 AliAnalysisDataContainer *coutputSBSecVtxPhi = mgr->CreateContainer("coutputSBSecVtxPhi",TH1::Class(),
251 AliAnalysisManager::kOutputContainer,
253 mgr->ConnectOutput(hfTaskSideB,7,coutputSBSecVtxPhi);
256 //Now container for d0D0SideB
257 AliAnalysisDataContainer **coutputSB=new AliAnalysisDataContainer*[10];
258 AliAnalysisDataContainer *coutputSBAll = mgr->CreateContainer("coutputSBAll",TH1::Class(),
259 AliAnalysisManager::kOutputContainer,
263 TString name="coutputSB",strname;
264 for(Int_t j=0;j<10;j++){
267 coutputSB[j] = mgr->CreateContainer(strname.Data(),TH1::Class(),
268 AliAnalysisManager::kOutputContainer,
271 mgr->ConnectOutput(hfTaskSideB,j+8,coutputSB[j]);
273 mgr->ConnectOutput(hfTaskSideB,18,coutputSBAll);
274 //Now container for MC d0D0SideB
275 AliAnalysisDataContainer **coutputSBMC=new AliAnalysisDataContainer*[10];
276 AliAnalysisDataContainer *coutputSBAllMC = mgr->CreateContainer("coutputSBAllMC",TH1::Class(),
277 AliAnalysisManager::kOutputContainer,
282 for(Int_t j=0;j<10;j++){
285 coutputSBMC[j] = mgr->CreateContainer(strname.Data(),TH1::Class(),
286 AliAnalysisManager::kOutputContainer,
289 mgr->ConnectOutput(hfTaskSideB,j+19,coutputSBMC[j]);
291 mgr->ConnectOutput(hfTaskSideB,29,coutputSBAllMC);
293 //Now container for histo with d0 with respect to True Vtx
294 AliAnalysisDataContainer **coutputSBd0VtxTrue=new AliAnalysisDataContainer*[10];
295 AliAnalysisDataContainer *coutputSBd0VtxTrueAll = mgr->CreateContainer("coutputSBd0VtxTrueAll",TH1::Class(),
296 AliAnalysisManager::kOutputContainer,
300 name="coutputSBd0VtxTrue";
301 for(Int_t j=0;j<10;j++){
304 coutputSBd0VtxTrue[j] = mgr->CreateContainer(strname.Data(),TH1::Class(),
305 AliAnalysisManager::kOutputContainer,
308 mgr->ConnectOutput(hfTaskSideB,j+30,coutputSBd0VtxTrue[j]);
310 mgr->ConnectOutput(hfTaskSideB,40,coutputSBd0VtxTrueAll);
313 AliAnalysisDataContainer *coutputSBD0InvMassAll = mgr->CreateContainer("coutputSBD0InvMassAll",TH1::Class(),
314 AliAnalysisManager::kOutputContainer,
316 mgr->ConnectOutput(hfTaskSideB,41,coutputSBD0InvMassAll);
318 AliAnalysisDataContainer *coutputSBD0MCInvMassAll = mgr->CreateContainer("coutputSBD0MCInvMassAll",TH1::Class(),
319 AliAnalysisManager::kOutputContainer,
321 mgr->ConnectOutput(hfTaskSideB,42,coutputSBD0MCInvMassAll);