]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGHF/vertexingHF/AliAnalysisTaskSELambdac.cxx
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / AliAnalysisTaskSELambdac.cxx
CommitLineData
7eb0cc73 1/**************************************************************************
2 * Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
c44b3d56 16/* $Id: AliAnalysisTaskSELambdac.cxx 63644 2013-07-23 09:04:11Z zconesa $ */
27de2dfb 17
7eb0cc73 18/////////////////////////////////////////////////////////////
19//
4c7fd068 20// AliAnalysisTaskSE for the extraction of signal(e.g Lambdac) of heavy flavor
7eb0cc73 21// decay candidates with the MC truth.
4c7fd068 22// Authors: r.romita@gsi.de
7eb0cc73 23/////////////////////////////////////////////////////////////
24
25#include <TClonesArray.h>
26#include <TNtuple.h>
27#include <TCanvas.h>
28#include <TList.h>
29#include <TString.h>
30#include <TH1F.h>
31#include <TH2F.h>
32#include <TDatabasePDG.h>
33
029ed93a 34#include <AliAnalysisDataSlot.h>
35#include <AliAnalysisDataContainer.h>
7eb0cc73 36#include "AliAnalysisManager.h"
37#include "AliAODHandler.h"
38#include "AliAODEvent.h"
39#include "AliAODVertex.h"
40#include "AliAODTrack.h"
41#include "AliAODMCHeader.h"
42#include "AliAODMCParticle.h"
43#include "AliAODRecoDecayHF3Prong.h"
44#include "AliAnalysisVertexingHF.h"
45#include "AliAnalysisTaskSE.h"
46#include "AliAnalysisTaskSELambdac.h"
47#include "AliKFParticle.h"
48#include "AliAODPidHF.h"
49#include "AliRDHFCutsLctopKpi.h"
50#include "AliRDHFCuts.h"
7ad4b782 51#include "AliKFVertex.h"
52#include "AliESDVertex.h"
60eac73d 53//#include "AliAODpidUtil.h"
029ed93a 54#include "AliAODPid.h"
55#include "AliInputEventHandler.h"
60eac73d 56#include "AliPID.h"
c1234468 57#include "AliNormalizationCounter.h"
862f4ac0 58#include "AliVertexingHFUtils.h"
7eb0cc73 59ClassImp(AliAnalysisTaskSELambdac)
60
61
62//________________________________________________________________________
862f4ac0 63AliAnalysisTaskSELambdac::AliAnalysisTaskSELambdac():
64AliAnalysisTaskSE(),
65 fOutput(0),
66 fHistNEvents(0),
67 fhChi2(0),
68 fhMassPtGreater3(0),
69 fhMassPtGreater3TC(0),
70 fhMassPtGreater3Kp(0),
71 fhMassPtGreater3KpTC(0),
72 fhMassPtGreater3Lpi(0),
73 fhMassPtGreater3LpiTC(0),
74 fhMassPtGreater3Dk(0),
75 fhMassPtGreater3DkTC(0),
76 fhMassPtGreater33Pr(0),
77 fhMassPtGreater33PrTC(0),
78 fhMassPtGreater2(0),
79 fhMassPtGreater2TC(0),
80 fhMassPtGreater2Kp(0),
81 fhMassPtGreater2KpTC(0),
82 fhMassPtGreater2Lpi(0),
83 fhMassPtGreater2LpiTC(0),
84 fhMassPtGreater2Dk(0),
85 fhMassPtGreater2DkTC(0),
86 fhMassPtGreater23Pr(0),
87 fhMassPtGreater23PrTC(0),
88 fhEta3Prong(0),
89 fhEta3ProngAcc(0),
90 fhEta3ProngProd(0),
91 fhEta3ProngAn(0),
92 fhRap3Prong(0),
93 fhRap3ProngAcc(0),
94 fhRap3ProngProd(0),
95 fhRap3ProngAn(0),
96 fhSelectBit(0),
8b834152 97 fhProtonPtProngLcPt(0),
862f4ac0 98 fhBProtonPtProngLcPt(0),
99 fhProtond0ProngLcPt(0),
100 fhBProtond0ProngLcPt(0),
101 fhKaonPtProngLcPt(0),
102 fhBKaonPtProngLcPt(0),
103 fhKaond0ProngLcPt(0),
104 fhBKaond0ProngLcPt(0),
105 fhPionPtProngLcPt(0),
106 fhBPionPtProngLcPt(0),
107 fhPiond0ProngLcPt(0),
108 fhBPiond0ProngLcPt(0),
109 fhDist12PrimLcPt(0),
110 fhBDist12PrimLcPt(0),
111 fhSigmaVertLcPt(0),
112 fhBSigmaVertLcPt(0),
113 fhdcasLcPt(0),
114 fhBdcasLcPt(0),
115 fhCosPointingAngleLcPt(0),
116 fhBCosPointingAngleLcPt(0),
117 fhDecayLengthLcPt(0),
118 fhBDecayLengthLcPt(0),
119 fhSum2LcPt(0),
120 fhBSum2LcPt(0),
121 fhPtMaxLcPt(0),
122 fhBPtMaxLcPt(0),
123 fNtupleLambdac(0),
124 fUpmasslimit(2.486),
125 fLowmasslimit(2.086),
126 fNPtBins(0),
127 fRDCutsAnalysis(0),
128 fRDCutsProduction(0),
129 fListCuts(0),
8b834152 130 fFillNtuple(kFALSE),
862f4ac0 131 fReadMC(kFALSE),
132 fMCPid(kFALSE),
133 fRealPid(kFALSE),
134 fResPid(kTRUE),
135 fUseKF(kFALSE),
136 fAnalysis(kFALSE),
137 fVHF(0),
138 fFillVarHists(kFALSE),
139 fMultiplicityHists(kFALSE),
140 fPriorsHists(kFALSE),
141 fLcCut(kFALSE),
142 fLcPIDCut(kFALSE),
143 fNentries(0),
144 fOutputMC(0),
145 fAPriori(0),
146 fMultiplicity(0),
147//fUtilPid(0),
148 fPIDResponse(0),
149 fCounter(0)
7eb0cc73 150{
60eac73d 151 // Default constructor
c0d01d9d 152 Float_t ptlims[7]={0.,2.,4.,6.,8.,12.,24.};
153 SetPtBinLimit(7,ptlims);
c1234468 154 for(Int_t icut=0; icut<2; icut++) fCutsKF[icut]=0.;
155 for(Int_t j=0; j<3*kMaxPtBins; j++){
dc818294 156 fMassHist[j]=0x0;
157 fMassHistTC[j]=0x0;
158 fMassHistLpi[j]=0x0;
159 fMassHistLpiTC[j]=0x0;
160 fMassHistKp[j]=0x0;
161 fMassHistKpTC[j]=0x0;
c1234468 162 fMassHistDk[j]=0x0;
163 fMassHistDkTC[j]=0x0;
164 fMassHist3Pr[j]=0x0;
165 fMassHist3PrTC[j]=0x0;
166 }
7eb0cc73 167}
168
169//________________________________________________________________________
170AliAnalysisTaskSELambdac::AliAnalysisTaskSELambdac(const char *name,Bool_t fillNtuple,AliRDHFCutsLctopKpi *lccutsana,AliRDHFCutsLctopKpi *lccutsprod):
60eac73d 171 AliAnalysisTaskSE(name),
172 fOutput(0),
173 fHistNEvents(0),
174 fhChi2(0),
175 fhMassPtGreater3(0),
176 fhMassPtGreater3TC(0),
177 fhMassPtGreater3Kp(0),
178 fhMassPtGreater3KpTC(0),
179 fhMassPtGreater3Lpi(0),
180 fhMassPtGreater3LpiTC(0),
c1234468 181 fhMassPtGreater3Dk(0),
182 fhMassPtGreater3DkTC(0),
183 fhMassPtGreater33Pr(0),
184 fhMassPtGreater33PrTC(0),
60eac73d 185 fhMassPtGreater2(0),
186 fhMassPtGreater2TC(0),
187 fhMassPtGreater2Kp(0),
188 fhMassPtGreater2KpTC(0),
189 fhMassPtGreater2Lpi(0),
190 fhMassPtGreater2LpiTC(0),
c1234468 191 fhMassPtGreater2Dk(0),
192 fhMassPtGreater2DkTC(0),
193 fhMassPtGreater23Pr(0),
194 fhMassPtGreater23PrTC(0),
862f4ac0 195 fhEta3Prong(0),
196 fhEta3ProngAcc(0),
197 fhEta3ProngProd(0),
198 fhEta3ProngAn(0),
199 fhRap3Prong(0),
200 fhRap3ProngAcc(0),
201 fhRap3ProngProd(0),
202 fhRap3ProngAn(0),
203 fhSelectBit(0),
8b834152 204 fhProtonPtProngLcPt(0),
862f4ac0 205 fhBProtonPtProngLcPt(0),
206 fhProtond0ProngLcPt(0),
207 fhBProtond0ProngLcPt(0),
208 fhKaonPtProngLcPt(0),
209 fhBKaonPtProngLcPt(0),
210 fhKaond0ProngLcPt(0),
211 fhBKaond0ProngLcPt(0),
212 fhPionPtProngLcPt(0),
213 fhBPionPtProngLcPt(0),
214 fhPiond0ProngLcPt(0),
215 fhBPiond0ProngLcPt(0),
216 fhDist12PrimLcPt(0),
217 fhBDist12PrimLcPt(0),
218 fhSigmaVertLcPt(0),
219 fhBSigmaVertLcPt(0),
220 fhdcasLcPt(0),
221 fhBdcasLcPt(0),
222 fhCosPointingAngleLcPt(0),
223 fhBCosPointingAngleLcPt(0),
224 fhDecayLengthLcPt(0),
225 fhBDecayLengthLcPt(0),
226 fhSum2LcPt(0),
227 fhBSum2LcPt(0),
228 fhPtMaxLcPt(0),
229 fhBPtMaxLcPt(0),
60eac73d 230 fNtupleLambdac(0),
231 fUpmasslimit(2.486),
232 fLowmasslimit(2.086),
233 fNPtBins(0),
234 fRDCutsAnalysis(lccutsana),
235 fRDCutsProduction(lccutsprod),
236 fListCuts(0),
237 fFillNtuple(fillNtuple),
238 fReadMC(kFALSE),
239 fMCPid(kFALSE),
240 fRealPid(kTRUE),
241 fResPid(kFALSE),
242 fUseKF(kFALSE),
243 fAnalysis(kFALSE),
244 fVHF(0),
245 fFillVarHists(kFALSE),
246 fMultiplicityHists(kFALSE),
247 fPriorsHists(kFALSE),
862f4ac0 248 fLcCut(kFALSE),
249 fLcPIDCut(kFALSE),
60eac73d 250 fNentries(0),
251 fOutputMC(0),
252 fAPriori(0),
253 fMultiplicity(0),
254 //fUtilPid(0),
c1234468 255 fPIDResponse(0),
256 fCounter(0)
7eb0cc73 257{
60eac73d 258 SetPtBinLimit(fRDCutsAnalysis->GetNPtBins()+1,
259 fRDCutsAnalysis->GetPtBinLimits());
c1234468 260 for(Int_t icut=0; icut<2; icut++) fCutsKF[icut]=0.;
261 for(Int_t j=0; j<3*kMaxPtBins; j++){
dc818294 262 fMassHist[j]=0x0;
263 fMassHistTC[j]=0x0;
264 fMassHistLpi[j]=0x0;
265 fMassHistLpiTC[j]=0x0;
266 fMassHistKp[j]=0x0;
267 fMassHistKpTC[j]=0x0;
c1234468 268 fMassHistDk[j]=0x0;
269 fMassHistDkTC[j]=0x0;
270 fMassHist3Pr[j]=0x0;
271 fMassHist3PrTC[j]=0x0;
272 }
273 // Default constructor
60eac73d 274 // Output slot #1 writes into a TList container
7eb0cc73 275 DefineOutput(1,TList::Class()); //My private output
276 DefineOutput(2,TList::Class());
029ed93a 277 DefineOutput(3,TList::Class());
278 DefineOutput(4,TH1F::Class());
60eac73d 279 DefineOutput(5,TList::Class());
280 DefineOutput(6,TList::Class());
c1234468 281 DefineOutput(7,AliNormalizationCounter::Class());
60eac73d 282 if (fFillNtuple) {
7eb0cc73 283 // Output slot #2 writes into a TNtuple container
c1234468 284 DefineOutput(8,TNtuple::Class()); //My private output
7eb0cc73 285 }
286}
287
288//________________________________________________________________________
289AliAnalysisTaskSELambdac::~AliAnalysisTaskSELambdac()
290{
291 // Destructor
292 if (fOutput) {
293 delete fOutput;
294 fOutput = 0;
295 }
029ed93a 296 if (fOutputMC) {
297 delete fOutputMC;
298 fOutputMC = 0;
299 }
60eac73d 300 if (fAPriori) {
301 delete fAPriori;
302 fAPriori = 0;
303 }
304 if (fMultiplicity) {
305 delete fMultiplicity;
306 fMultiplicity = 0;
307 }
029ed93a 308
7eb0cc73 309 if (fVHF) {
310 delete fVHF;
311 fVHF = 0;
312 }
313
60eac73d 314 if(fRDCutsAnalysis){
7eb0cc73 315 delete fRDCutsAnalysis;
316 fRDCutsAnalysis = 0;
60eac73d 317 }
318 if(fRDCutsProduction){
7eb0cc73 319 delete fRDCutsProduction;
320 fRDCutsProduction = 0;
60eac73d 321 }
322
323 if (fListCuts) {
324 delete fListCuts;
325 fListCuts = 0;
326 }
327 if (fNentries){
328 delete fNentries;
329 fNentries = 0;
330 }
331 /*
332 if (fUtilPid){
333 delete fUtilPid;
334 fUtilPid = 0;
335 }
336 */
337 if (fPIDResponse) {
338 delete fPIDResponse;
339 }
c1234468 340 if(fCounter){
341 delete fCounter;
342 fCounter = 0;
343 }
60eac73d 344
7eb0cc73 345}
346//_________________________________________________________________
347void AliAnalysisTaskSELambdac::SetMassLimits(Float_t range){
348 fUpmasslimit = 2.286+range;
349 fLowmasslimit = 2.286-range;
350}
351//_________________________________________________________________
352void AliAnalysisTaskSELambdac::SetMassLimits(Float_t lowlimit, Float_t uplimit){
353 if(uplimit>lowlimit)
354 {
355 fUpmasslimit = lowlimit;
356 fLowmasslimit = uplimit;
357 }
358}
359
360
361//________________________________________________________________________
362void AliAnalysisTaskSELambdac::SetPtBinLimit(Int_t n, Float_t* lim){
363 // define pt bins for analysis
364 if(n>kMaxPtBins){
365 printf("Max. number of Pt bins = %d\n",kMaxPtBins);
366 fNPtBins=kMaxPtBins;
367 fArrayBinLimits[0]=0.;
368 fArrayBinLimits[1]=2.;
369 fArrayBinLimits[2]=3.;
7ad4b782 370 fArrayBinLimits[3]=4.;
7eb0cc73 371 for(Int_t i=4; i<kMaxPtBins+1; i++) fArrayBinLimits[i]=99999999.;
372 }else{
373 fNPtBins=n-1;
374 fArrayBinLimits[0]=lim[0];
375 for(Int_t i=1; i<fNPtBins+1; i++)
376 if(lim[i]>fArrayBinLimits[i-1]){
377 fArrayBinLimits[i]=lim[i];
378 }
379 else {
380 fArrayBinLimits[i]=fArrayBinLimits[i-1];
381 }
382 for(Int_t i=fNPtBins; i<kMaxPtBins+1; i++) fArrayBinLimits[i]=99999999.;
383 }
384 if(fDebug > 1){
385 printf("Number of Pt bins = %d\n",fNPtBins);
e11ae259 386 for(Int_t i=0; i<fNPtBins; i++) printf(" Bin%d = %8.2f-%8.2f\n",i,fArrayBinLimits[i],fArrayBinLimits[i+1]);
7eb0cc73 387 }
388}
389//_________________________________________________________________
4c7fd068 390Double_t AliAnalysisTaskSELambdac::GetPtBinLimit(Int_t ibin) const{
7eb0cc73 391 if(ibin>fNPtBins)return -1;
392 return fArrayBinLimits[ibin];
393}
394
395//_________________________________________________________________
396void AliAnalysisTaskSELambdac::Init()
397{
398 // Initialization
399
60eac73d 400 if (fDebug > 1) printf("AnalysisTaskSELambdac::Init() \n");
7eb0cc73 401
402 fListCuts=new TList();
029ed93a 403 fListCuts->SetOwner();
7eb0cc73 404
dc222f77 405 fListCuts->Add(new AliRDHFCutsLctopKpi(*fRDCutsAnalysis));
406 fListCuts->Add(new AliRDHFCutsLctopKpi(*fRDCutsProduction));
407 PostData(2,fListCuts);
7eb0cc73 408 return;
409}
410
411//________________________________________________________________________
412void AliAnalysisTaskSELambdac::UserCreateOutputObjects()
413{
414 // Create the output container
415 //
60eac73d 416 if (fDebug > 1) printf("AnalysisTaskSELambdac::UserCreateOutputObjects() \n");
7eb0cc73 417
418 // Several histograms are more conveniently managed in a TList
419 fOutput = new TList();
420 fOutput->SetOwner();
421 fOutput->SetName("OutputHistos");
422
423 TString hisname;
424 Int_t index=0;
b44d42ae 425 // Int_t indexLS=0;
7eb0cc73 426 for(Int_t i=0;i<fNPtBins;i++){
427
428 index=GetHistoIndex(i);
b44d42ae 429 // indexLS=GetLSHistoIndex(i);
7eb0cc73 430
431 hisname.Form("hMassPt%d",i);
7d020878 432 fMassHist[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
7eb0cc73 433 fMassHist[index]->Sumw2();
7eb0cc73 434 hisname.Form("hMassPt%dTC",i);
7d020878 435 fMassHistTC[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
7eb0cc73 436 fMassHistTC[index]->Sumw2();
437
029ed93a 438 hisname.Form("hMassPtLpi%d",i);
7d020878 439 fMassHistLpi[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
029ed93a 440 fMassHistLpi[index]->Sumw2();
441 hisname.Form("hMassPtLpi%dTC",i);
7d020878 442 fMassHistLpiTC[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
029ed93a 443 fMassHistLpiTC[index]->Sumw2();
444
445 hisname.Form("hMassPtKp%d",i);
7d020878 446 fMassHistKp[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
029ed93a 447 fMassHistKp[index]->Sumw2();
448 hisname.Form("hMassPtKp%dTC",i);
7d020878 449 fMassHistKpTC[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
029ed93a 450 fMassHistKpTC[index]->Sumw2();
c1234468 451 hisname.Form("hMassPtDk%d",i);
7d020878 452 fMassHistDk[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
c1234468 453 fMassHistDk[index]->Sumw2();
454 hisname.Form("hMassPtDk%dTC",i);
7d020878 455 fMassHistDkTC[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
c1234468 456 fMassHistDkTC[index]->Sumw2();
457
458 hisname.Form("hMassPt3Pr%d",i);
7d020878 459 fMassHist3Pr[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
c1234468 460 fMassHist3Pr[index]->Sumw2();
461 hisname.Form("hMassPt3Pr%dTC",i);
7d020878 462 fMassHist3PrTC[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
c1234468 463 fMassHist3PrTC[index]->Sumw2();
464 //signal
7eb0cc73 465 index=GetSignalHistoIndex(i);
7eb0cc73 466 hisname.Form("hSigPt%d",i);
7d020878 467 fMassHist[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
7eb0cc73 468 fMassHist[index]->Sumw2();
7eb0cc73 469 hisname.Form("hSigPt%dTC",i);
7d020878 470 fMassHistTC[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
7eb0cc73 471 fMassHistTC[index]->Sumw2();
029ed93a 472 hisname.Form("hSigPtLpi%d",i);
7d020878 473 fMassHistLpi[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
029ed93a 474 fMassHistLpi[index]->Sumw2();
475 hisname.Form("hSigPtLpi%dTC",i);
7d020878 476 fMassHistLpiTC[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
029ed93a 477 fMassHistLpiTC[index]->Sumw2();
478
479 hisname.Form("hSigPtKp%d",i);
7d020878 480 fMassHistKp[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
029ed93a 481 fMassHistKp[index]->Sumw2();
482 hisname.Form("hSigPtKp%dTC",i);
7d020878 483 fMassHistKpTC[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
029ed93a 484 fMassHistKpTC[index]->Sumw2();
7eb0cc73 485
c1234468 486 hisname.Form("hSigPtDk%d",i);
7d020878 487 fMassHistDk[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
c1234468 488 fMassHistDk[index]->Sumw2();
489 hisname.Form("hSigPtDk%dTC",i);
7d020878 490 fMassHistDkTC[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
c1234468 491 fMassHistDkTC[index]->Sumw2();
492
493 hisname.Form("hSigPt3Pr%d",i);
7d020878 494 fMassHist3Pr[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
c1234468 495 fMassHist3Pr[index]->Sumw2();
496 hisname.Form("hSigPt3Pr%dTC",i);
7d020878 497 fMassHist3PrTC[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
c1234468 498 fMassHist3PrTC[index]->Sumw2();
499
32db66b5 500 index=GetLbHistoIndex(i);
501 hisname.Form("hSigLbPt%d",i);
502 fMassHist[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
503 fMassHist[index]->Sumw2();
504 hisname.Form("hSigLbPt%dTC",i);
505 fMassHistTC[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
506 fMassHistTC[index]->Sumw2();
507
508 index=GetcOnlyHistoIndex(i);
509 hisname.Form("hSigcOnlyPt%d",i);
510 fMassHist[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
511 fMassHist[index]->Sumw2();
512 hisname.Form("hSigcOnlyPt%dTC",i);
513 fMassHistTC[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
514 fMassHistTC[index]->Sumw2();
515
516 index=GetNoQuarkHistoIndex(i);
517 hisname.Form("hSigNoQuarkPt%d",i);
518 fMassHist[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
519 fMassHist[index]->Sumw2();
520 hisname.Form("hSigNoQuarkPt%dTC",i);
521 fMassHistTC[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
522 fMassHistTC[index]->Sumw2();
523
7eb0cc73 524 index=GetBackgroundHistoIndex(i);
7eb0cc73 525 hisname.Form("hBkgPt%d",i);
7d020878 526 fMassHist[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
7eb0cc73 527 fMassHist[index]->Sumw2();
7eb0cc73 528 hisname.Form("hBkgPt%dTC",i);
7d020878 529 fMassHistTC[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
7eb0cc73 530 fMassHistTC[index]->Sumw2();
029ed93a 531 hisname.Form("hBkgPtLpi%d",i);
7d020878 532 fMassHistLpi[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
029ed93a 533 fMassHistLpi[index]->Sumw2();
534 hisname.Form("hBkgPtLpi%dTC",i);
7d020878 535 fMassHistLpiTC[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
029ed93a 536 fMassHistLpiTC[index]->Sumw2();
537
538 hisname.Form("hBkgPtKp%d",i);
7d020878 539 fMassHistKp[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
029ed93a 540 fMassHistKp[index]->Sumw2();
541 hisname.Form("hBkgPtKp%dTC",i);
7d020878 542 fMassHistKpTC[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
029ed93a 543 fMassHistKpTC[index]->Sumw2();
c1234468 544
545 hisname.Form("hBkgPtDk%d",i);
7d020878 546 fMassHistDk[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
c1234468 547 fMassHistDk[index]->Sumw2();
548 hisname.Form("hBkgPtDk%dTC",i);
7d020878 549 fMassHistDkTC[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
c1234468 550 fMassHistDkTC[index]->Sumw2();
551
552 hisname.Form("hBkgPt3Pr%d",i);
7d020878 553 fMassHist3Pr[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
c1234468 554 fMassHist3Pr[index]->Sumw2();
555 hisname.Form("hBkgPt3Pr%dTC",i);
7d020878 556 fMassHist3PrTC[index]=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
c1234468 557 fMassHist3PrTC[index]->Sumw2();
60eac73d 558 }
7eb0cc73 559
32db66b5 560 for(Int_t ii=0; ii<6*fNPtBins; ii++){
561 fOutput->Add(fMassHist[ii]);
562 fOutput->Add(fMassHistTC[ii]);
563 }
7eb0cc73 564 for(Int_t i=0; i<3*fNPtBins; i++){
029ed93a 565 fOutput->Add(fMassHistLpi[i]);
566 fOutput->Add(fMassHistLpiTC[i]);
567 fOutput->Add(fMassHistKp[i]);
568 fOutput->Add(fMassHistKpTC[i]);
c1234468 569 fOutput->Add(fMassHistDk[i]);
570 fOutput->Add(fMassHistDkTC[i]);
571 fOutput->Add(fMassHist3Pr[i]);
572 fOutput->Add(fMassHist3PrTC[i]);
7eb0cc73 573 }
862f4ac0 574 fhEta3Prong = new TH2F("hEta3Prong","hEta3Prong;3-Prong p_{T} GeV/c;3-Prong #eta",75,0.,15.,50,-2.0,2.0);
575 fhEta3ProngAcc = new TH2F("hEta3ProngAcc","hEta3ProngAcc;3-Prong p_{T} GeV/c;3-Prong #eta",75,0.,15.,50,-2.0,2.0);
576 fhEta3ProngProd = new TH2F("hEta3ProngProd","hEta3ProngProd;3-Prong p_{T} GeV/c;3-Prong #eta",75,0.,15.,50,-2.0,2.0);
577 fhEta3ProngAn = new TH2F("hEta3ProngAn","hEta3ProngAn;3-Prong p_{T} GeV/c;3-Prong #eta",75,0.,15.,50,-2.0,2.0);
578 fhRap3Prong = new TH2F("hRap3Prong","hRap3Prong;3-Prong p_{T} GeV/c;3-Prong y",75,0.,15.,50,-2.0,2.0);
579 fhRap3ProngAcc = new TH2F("hRap3ProngAcc","hRap3ProngAcc;3-Prong p_{T} GeV/c;3-Prong y",75,0.,15.,50,-2.0,2.0);
580 fhRap3ProngProd = new TH2F("hRap3ProngProd","hRap3ProngProd;3-Prong p_{T} GeV/c;3-Prong y",75,0.,15.,50,-2.0,2.0);
581 fhRap3ProngAn = new TH2F("hRap3ProngAn","hRap3ProngAn;3-Prong p_{T} GeV/c;3-Prong y",75,0.,15.,50,-2.0,2.0);
582
583 fhSelectBit = new TH1F("hSelectBit","hSelectBit",5,-0.5,5.5);
584 fhSelectBit->GetXaxis()->SetBinLabel(2,"All");
585 fhSelectBit->GetXaxis()->SetBinLabel(3,"SelectionMap");
586 fhSelectBit->GetXaxis()->SetBinLabel(4,"!LcCut");
587 fhSelectBit->GetXaxis()->SetBinLabel(5,"!LcPID");
588
589 fOutput->Add(fhEta3Prong);
590 fOutput->Add(fhEta3ProngAcc);
591 fOutput->Add(fhEta3ProngProd);
592 fOutput->Add(fhEta3ProngAn);
593 fOutput->Add(fhRap3Prong);
594 fOutput->Add(fhRap3ProngAcc);
595 fOutput->Add(fhRap3ProngProd);
596 fOutput->Add(fhRap3ProngAn);
597 fOutput->Add(fhSelectBit);
598
7eb0cc73 599 fHistNEvents = new TH1F("fHistNEvents", "Number of processed events; ; Events",3,-1.5,1.5);
600 fHistNEvents->Sumw2();
601 fHistNEvents->SetMinimum(0);
602 fOutput->Add(fHistNEvents);
7ad4b782 603
604 fhChi2 = new TH1F("fhChi2", "Chi2",100,0.,10.);
605 fhChi2->Sumw2();
606 fOutput->Add(fhChi2);
607
7d020878 608 fhMassPtGreater3=new TH1F("fhMassPtGreater3","Pt > 3 GeV/c",200,fLowmasslimit,fUpmasslimit);
7ad4b782 609 fhMassPtGreater3->Sumw2();
610 fOutput->Add(fhMassPtGreater3);
7d020878 611 fhMassPtGreater3TC=new TH1F("fhMassPtGreater3TC","Pt > 3 GeV/c",200,fLowmasslimit,fUpmasslimit);
7ad4b782 612 fhMassPtGreater3TC->Sumw2();
613 fOutput->Add(fhMassPtGreater3TC);
7d020878 614 fhMassPtGreater3Kp=new TH1F("fhMassPtGreater3Kp","Pt > 3 GeV/c",200,fLowmasslimit,fUpmasslimit);
029ed93a 615 fhMassPtGreater3Kp->Sumw2();
616 fOutput->Add(fhMassPtGreater3Kp);
7d020878 617 fhMassPtGreater3KpTC=new TH1F("fhMassPtGreater3KpTC","Pt > 3 GeV/c",200,fLowmasslimit,fUpmasslimit);
029ed93a 618 fhMassPtGreater3KpTC->Sumw2();
619 fOutput->Add(fhMassPtGreater3KpTC);
7d020878 620 fhMassPtGreater3Lpi=new TH1F("fhMassPtGreater3Lpi","Pt > 3 GeV/c",200,fLowmasslimit,fUpmasslimit);
029ed93a 621 fhMassPtGreater3Lpi->Sumw2();
622 fOutput->Add(fhMassPtGreater3Lpi);
7d020878 623 fhMassPtGreater3LpiTC=new TH1F("fhMassPtGreater3LpiTC","Pt > 3 GeV/c",200,fLowmasslimit,fUpmasslimit);
029ed93a 624 fhMassPtGreater3LpiTC->Sumw2();
625 fOutput->Add(fhMassPtGreater3LpiTC);
7d020878 626 fhMassPtGreater3Dk=new TH1F("fhMassPtGreater3Dk","Pt > 3 GeV/c",200,fLowmasslimit,fUpmasslimit);
c1234468 627 fhMassPtGreater3Dk->Sumw2();
628 fOutput->Add(fhMassPtGreater3Dk);
7d020878 629 fhMassPtGreater3DkTC=new TH1F("fhMassPtGreater3DkTC","Pt > 3 GeV/c",200,fLowmasslimit,fUpmasslimit);
c1234468 630 fhMassPtGreater3DkTC->Sumw2();
631 fOutput->Add(fhMassPtGreater3DkTC);
632
7d020878 633 fhMassPtGreater33Pr=new TH1F("fhMassPtGreater33Pr","Pt > 3 GeV/c",200,fLowmasslimit,fUpmasslimit);
c1234468 634 fhMassPtGreater33Pr->Sumw2();
635 fOutput->Add(fhMassPtGreater33Pr);
7d020878 636 fhMassPtGreater33PrTC=new TH1F("fhMassPtGreater33PrTC","Pt > 3 GeV/c",200,fLowmasslimit,fUpmasslimit);
c1234468 637 fhMassPtGreater33PrTC->Sumw2();
638 fOutput->Add(fhMassPtGreater33PrTC);
639
640
7d020878 641 fhMassPtGreater2=new TH1F("fhMassPtGreater2","Pt > 2 GeV/c",200,fLowmasslimit,fUpmasslimit);
029ed93a 642 fhMassPtGreater2->Sumw2();
643 fOutput->Add(fhMassPtGreater2);
7d020878 644 fhMassPtGreater2TC=new TH1F("fhMassPtGreater2TC","Pt > 2 GeV/c",200,fLowmasslimit,fUpmasslimit);
029ed93a 645 fhMassPtGreater2TC->Sumw2();
646 fOutput->Add(fhMassPtGreater2TC);
7d020878 647 fhMassPtGreater2Kp=new TH1F("fhMassPtGreater2Kp","Pt > 2 GeV/c",200,fLowmasslimit,fUpmasslimit);
029ed93a 648 fhMassPtGreater2Kp->Sumw2();
649 fOutput->Add(fhMassPtGreater2Kp);
7d020878 650 fhMassPtGreater2KpTC=new TH1F("fhMassPtGreater2KpTC","Pt > 2 GeV/c",200,fLowmasslimit,fUpmasslimit);
029ed93a 651 fhMassPtGreater2KpTC->Sumw2();
652 fOutput->Add(fhMassPtGreater2KpTC);
7d020878 653 fhMassPtGreater2Lpi=new TH1F("fhMassPtGreater2Lpi","Pt > 2 GeV/c",200,fLowmasslimit,fUpmasslimit);
029ed93a 654 fhMassPtGreater2Lpi->Sumw2();
655 fOutput->Add(fhMassPtGreater2Lpi);
7d020878 656 fhMassPtGreater2LpiTC=new TH1F("fhMassPtGreater2LpiTC","Pt > 2 GeV/c",200,fLowmasslimit,fUpmasslimit);
029ed93a 657 fhMassPtGreater2LpiTC->Sumw2();
658 fOutput->Add(fhMassPtGreater2LpiTC);
7d020878 659 fhMassPtGreater2Dk=new TH1F("fhMassPtGreater2Dk","Pt > 2 GeV/c",200,fLowmasslimit,fUpmasslimit);
c1234468 660 fhMassPtGreater2Dk->Sumw2();
661 fOutput->Add(fhMassPtGreater2Dk);
7d020878 662 fhMassPtGreater2DkTC=new TH1F("fhMassPtGreater2DkTC","Pt > 2 GeV/c",200,fLowmasslimit,fUpmasslimit);
c1234468 663 fhMassPtGreater2DkTC->Sumw2();
664 fOutput->Add(fhMassPtGreater2DkTC);
7d020878 665 fhMassPtGreater23Pr=new TH1F("fhMassPtGreater23Pr","Pt > 2 GeV/c",200,fLowmasslimit,fUpmasslimit);
c1234468 666 fhMassPtGreater23Pr->Sumw2();
667 fOutput->Add(fhMassPtGreater23Pr);
7d020878 668 fhMassPtGreater23PrTC=new TH1F("fhMassPtGreater23PrTC","Pt > 2 GeV/c",200,fLowmasslimit,fUpmasslimit);
c1234468 669 fhMassPtGreater23PrTC->Sumw2();
670 fOutput->Add(fhMassPtGreater23PrTC);
029ed93a 671
672 fOutputMC = new TList();
673 fOutputMC->SetOwner();
674 fOutputMC->SetName("QAMCHistos");
675
60eac73d 676 // const char* nameoutput=GetOutputSlot(4)->GetContainer()->GetName();
029ed93a 677
678 fNentries=new TH1F("fNentries", "Integral(1,2) = number of AODs *** Integral(2,3) = number of candidates selected with cuts *** Integral(3,4) = number of Lc selected with cuts *** Integral(4,5) = events with good vertex *** Integral(5,6) = pt out of bounds", 11,-0.5,10.5);
679
680 //ROS: qui il bin assignment e' modellato su D0 ma sicuramente iv arie
681 fNentries->GetXaxis()->SetBinLabel(1,"nEventsAnal");
682 fNentries->GetXaxis()->SetBinLabel(2,"nCandSel(Cuts)");
683 fNentries->GetXaxis()->SetBinLabel(3,"nLcSelected");
684 fNentries->GetXaxis()->SetBinLabel(4,"nEventsGoodVtxS");
685 fNentries->GetXaxis()->SetBinLabel(5,"ptbin = -1");
686 fNentries->GetXaxis()->SetBinLabel(6,"no daughter");
687 fNentries->GetXaxis()->SetBinLabel(7,"nCandSel(Tr)");
688 fNentries->GetXaxis()->SetBinLabel(8,"PID=0");
689 fNentries->GetXaxis()->SetBinLabel(9,"PID=1");
690 fNentries->GetXaxis()->SetBinLabel(10,"PID=2");
691 fNentries->GetXaxis()->SetBinLabel(11,"PID=3");
692 fNentries->GetXaxis()->SetNdivisions(1,kFALSE);
693
694 hisname.Form("hMass");
7d020878 695 TH1F *hMassInv=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
029ed93a 696 fOutputMC->Add(hMassInv);
697 hisname.Form("hbMass");
7d020878 698 TH1F *hBMassInv=new TH1F(hisname.Data(),hisname.Data(),200,fLowmasslimit,fUpmasslimit);
029ed93a 699 fOutputMC->Add(hBMassInv);
700
701 // proton specific
702 hisname.Form("hpTOFSignal");
703 TH1F *hProtonTOFSignal=new TH1F(hisname.Data(),hisname.Data(),100,12000.,50000.0);
704 fOutputMC->Add(hProtonTOFSignal);
705 hisname.Form("hbpTOFSignal");
706 TH1F *hBProtonTOFSignal=new TH1F(hisname.Data(),hisname.Data(),100,12000.,50000.0);
707 fOutputMC->Add(hBProtonTOFSignal);
708
709 hisname.Form("hpTPCSignal");
710 TH1F *hProtonTPCSignal=new TH1F(hisname.Data(),hisname.Data(),150,0.,150.0);
711 fOutputMC->Add(hProtonTPCSignal);
712 hisname.Form("hbpTPCSignal");
713 TH1F *hBProtonTPCSignal=new TH1F(hisname.Data(),hisname.Data(),150,0.,150.0);
714 fOutputMC->Add(hBProtonTPCSignal);
7eb0cc73 715
029ed93a 716 hisname.Form("hpptProng");
717 TH1F *hProtonPtProng=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.0);
718 fOutputMC->Add(hProtonPtProng);
719 hisname.Form("hbpptProng");
720 TH1F *hBProtonPtProng=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.0);
721 fOutputMC->Add(hBProtonPtProng);
722
723 hisname.Form("hpRealTot");
724 TH1F *hProtonRealTot=new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
725 fOutputMC->Add(hProtonRealTot);
726 hisname.Form("hbpRealTot");
727 TH1F *hBProtonRealTot=new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
728 fOutputMC->Add(hBProtonRealTot);
729 hisname.Form("hpIDTot");
730 TH1F *hProtonIDTot=new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
731 fOutputMC->Add(hProtonIDTot);
732 hisname.Form("hpIDGood");
733 TH1F *hProtonIDGood=new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
734 fOutputMC->Add(hProtonIDGood);
735 hisname.Form("hbpIDGood");
736 TH1F *hBProtonIDGood=new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
737 fOutputMC->Add(hBProtonIDGood);
738 hisname.Form("hbpIDTot");
739 TH1F *hBProtonIDTot=new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
740 fOutputMC->Add(hBProtonIDTot);
60eac73d 741 hisname.Form("hnopIDp");
742 TH1F *hnoProtonIDpTot=new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
743 fOutputMC->Add(hnoProtonIDpTot);
744 hisname.Form("hbnopIDp");
745 TH1F *hBnoProtonIDpTot=new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
746 fOutputMC->Add(hBnoProtonIDpTot);
029ed93a 747
748 hisname.Form("hpd0Prong");
749 TH1F *hProtond0Prong=new TH1F(hisname.Data(),hisname.Data(),100,-0.1,0.1);
750 fOutputMC->Add(hProtond0Prong);
751 hisname.Form("hbpd0Prong");
752 TH1F *hBProtond0Prong=new TH1F(hisname.Data(),hisname.Data(),100,-0.1,0.1);
753 fOutputMC->Add(hBProtond0Prong);
754 hisname.Form("hbpSignalVspTOF");
755 TH2F *hBpSignalVspTOF=new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,12000.,50000.0);
756 fOutputMC->Add(hBpSignalVspTOF);
757 hisname.Form("hbpSignalVspTPC");
758 TH2F *hBpSignalVspTPC=new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,150,0.,150.0);
759 fOutputMC->Add(hBpSignalVspTPC);
760 hisname.Form("hpSignalVspTOF");
761 TH2F *hpSignalVspTOF=new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,12000.,50000.0);
762 fOutputMC->Add(hpSignalVspTOF);
763 hisname.Form("hpSignalVspTPC");
764 TH2F *hpSignalVspTPC=new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,150,0.,150.0);
765 fOutputMC->Add(hpSignalVspTPC);
766
767 hisname.Form("hpSigmaVspTOF");
768 TH2F *hpSigmaVspTOF=new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,-10.0,10.0);
769 fOutputMC->Add(hpSigmaVspTOF);
770 hisname.Form("hpSigmaVspTPC");
771 TH2F *hpSigmaVspTPC=new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,-10.0,10.0);
772 fOutputMC->Add(hpSigmaVspTPC);
773 hisname.Form("hbpSigmaVspTOF");
774 TH2F *hBpSigmaVspTOF=new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,-10.0,10.0);
775 fOutputMC->Add(hBpSigmaVspTOF);
776 hisname.Form("hbpSigmaVspTPC");
777 TH2F *hBpSigmaVspTPC=new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,-10.0,10.0);
778 fOutputMC->Add(hBpSigmaVspTPC);
779
029ed93a 780
60eac73d 781 //kaon specific
029ed93a 782 hisname.Form("hKTOFSignal");
783 TH1F *hKaonTOFSignal=new TH1F(hisname.Data(),hisname.Data(),100,12000.,50000.0);
784 fOutputMC->Add(hKaonTOFSignal);
785 hisname.Form("hbKTOFSignal");
786 TH1F *hBKaonTOFSignal=new TH1F(hisname.Data(),hisname.Data(),100,12000.,50000.0);
787 fOutputMC->Add(hBKaonTOFSignal);
029ed93a 788 hisname.Form("hKTPCSignal");
789 TH1F *hKaonTPCSignal=new TH1F(hisname.Data(),hisname.Data(),150,0.,150.0);
790 fOutputMC->Add(hKaonTPCSignal);
791 hisname.Form("hbKTPCSignal");
792 TH1F *hBKaonTPCSignal=new TH1F(hisname.Data(),hisname.Data(),150,0.,150.0);
793 fOutputMC->Add(hBKaonTPCSignal);
794
795 hisname.Form("hKptProng");
796 TH1F *hKaonPtProng=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.0);
797 fOutputMC->Add(hKaonPtProng);
798 hisname.Form("hbKptProng");
799 TH1F *hBKaonPtProng=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.0);
800 fOutputMC->Add(hBKaonPtProng);
029ed93a 801 hisname.Form("hKRealTot");
802 TH1F *hKaonRealTot=new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
803 fOutputMC->Add(hKaonRealTot);
804 hisname.Form("hbKRealTot");
805 TH1F *hBKaonRealTot=new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
806 fOutputMC->Add(hBKaonRealTot);
807 hisname.Form("hKIDGood");
808 TH1F *hKaonIDGood=new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
809 fOutputMC->Add(hKaonIDGood);
810 hisname.Form("hKIDTot");
811 TH1F *hKaonIDTot=new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
812 fOutputMC->Add(hKaonIDTot);
813 hisname.Form("hbKIDGood");
814 TH1F *hBKaonIDGood=new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
815 fOutputMC->Add(hBKaonIDGood);
816 hisname.Form("hbKIDTot");
817 TH1F *hBKaonIDTot=new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
818 fOutputMC->Add(hBKaonIDTot);
60eac73d 819 hisname.Form("hnokIDk");
820 TH1F *hnoKaonIDkTot=new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
821 fOutputMC->Add(hnoKaonIDkTot);
822 hisname.Form("hbnokIDk");
823 TH1F *hBnoKaonIDkTot=new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
824 fOutputMC->Add(hBnoKaonIDkTot);
029ed93a 825
826
827 hisname.Form("hKd0Prong");
828 TH1F *hKaond0Prong=new TH1F(hisname.Data(),hisname.Data(),100,-0.1,0.1);
829 fOutputMC->Add(hKaond0Prong);
830 hisname.Form("hbKd0Prong");
831 TH1F *hBKaond0Prong=new TH1F(hisname.Data(),hisname.Data(),100,-0.1,0.1);
832 fOutputMC->Add(hBKaond0Prong);
833 hisname.Form("hbKSignalVspTOF");
834 TH2F *hbKSignalVspTOF=new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,12000.,50000.0);
835 fOutputMC->Add(hbKSignalVspTOF);
836 hisname.Form("hbKSignalVspTPC");
837 TH2F *hbKSignalVspTPC=new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,150,0.,150.0);
838 fOutputMC->Add(hbKSignalVspTPC);
839 hisname.Form("hKSignalVspTOF");
840 TH2F *hKSignalVspTOF=new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,12000.,50000.0);
841 fOutputMC->Add(hKSignalVspTOF);
842 hisname.Form("hKSignalVspTPC");
843 TH2F *hKSignalVspTPC=new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,150,0.,150.0);
844 fOutputMC->Add(hKSignalVspTPC);
029ed93a 845 hisname.Form("hKSigmaVspTOF");
846 TH2F *hKSigmaVspTOF=new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,-10.0,10.0);
847 fOutputMC->Add(hKSigmaVspTOF);
029ed93a 848 hisname.Form("hKSigmaVspTPC");
849 TH2F *hKSigmaVspTPC=new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,-10.0,10.0);
850 fOutputMC->Add(hKSigmaVspTPC);
029ed93a 851 hisname.Form("hbKSigmaVspTOF");
852 TH2F *hBKSigmaVspTOF=new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,-10.0,10.0);
853 fOutputMC->Add(hBKSigmaVspTOF);
854 hisname.Form("hbKSigmaVspTPC");
855 TH2F *hBKSigmaVspTPC=new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,-10.0,10.0);
856 fOutputMC->Add(hBKSigmaVspTPC);
857
60eac73d 858
029ed93a 859 // pion specific
860 hisname.Form("hpiTOFSignal");
861 TH1F *hPionTOFSignal=new TH1F(hisname.Data(),hisname.Data(),100,12000.,50000.0);
862 fOutputMC->Add(hPionTOFSignal);
863 hisname.Form("hbpiTOFSignal");
864 TH1F *hBPionTOFSignal=new TH1F(hisname.Data(),hisname.Data(),100,12000.,50000.0);
865 fOutputMC->Add(hBPionTOFSignal);
029ed93a 866 hisname.Form("hpiTPCSignal");
867 TH1F *hPionTPCSignal=new TH1F(hisname.Data(),hisname.Data(),100,30.,100.0);
868 fOutputMC->Add(hPionTPCSignal);
869 hisname.Form("hbpiTPCSignal");
870 TH1F *hBPionTPCSignal=new TH1F(hisname.Data(),hisname.Data(),100,30.,100.0);
871 fOutputMC->Add(hBPionTPCSignal);
7eb0cc73 872
029ed93a 873 hisname.Form("hpiptProng");
874 TH1F *hPionPtProng=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.0);
875 fOutputMC->Add(hPionPtProng);
876 hisname.Form("hbpiptProng");
877 TH1F *hBPionPtProng=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.0);
878 fOutputMC->Add(hBPionPtProng);
879
880 hisname.Form("hpiRealTot");
881 TH1F *hPionRealTot=new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
882 fOutputMC->Add(hPionRealTot);
883 hisname.Form("hbpiRealTot");
884 TH1F *hBPionRealTot=new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
885 fOutputMC->Add(hBPionRealTot);
886 hisname.Form("hpiIDGood");
887 TH1F *hPionIDGood=new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
888 fOutputMC->Add(hPionIDGood);
889 hisname.Form("hpiIDTot");
890 TH1F *hPionIDTot=new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
891 fOutputMC->Add(hPionIDTot);
892 hisname.Form("hbpiIDTot");
893 TH1F *hBPionIDTot=new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
894 fOutputMC->Add(hBPionIDTot);
895 hisname.Form("hbpiIDGood");
896 TH1F *hBPionIDGood=new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
897 fOutputMC->Add(hBPionIDGood);
60eac73d 898 hisname.Form("hnopiIDpi");
899 TH1F *hnoPionIDpiTot=new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
900 fOutputMC->Add(hnoPionIDpiTot);
901 hisname.Form("hbnopiIDpi");
902 TH1F *hBnoPionIDpiTot=new TH1F(hisname.Data(),hisname.Data(),100,0.,10.0);
903 fOutputMC->Add(hBnoPionIDpiTot);
029ed93a 904
905 hisname.Form("hpid0Prong");
906 TH1F *hPiond0Prong=new TH1F(hisname.Data(),hisname.Data(),100,-0.1,-0.1);
907 fOutputMC->Add(hPiond0Prong);
908 hisname.Form("hbpid0Prong");
909 TH1F *hBPiond0Prong=new TH1F(hisname.Data(),hisname.Data(),100,-0.1,0.1);
910 fOutputMC->Add(hBPiond0Prong);
029ed93a 911
912 hisname.Form("hpiSignalVspTOF");
913 TH2F *hpiSignalVspTOF=new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,12000.,50000.0);
914 fOutputMC->Add(hpiSignalVspTOF);
915 hisname.Form("hpiSignalVspTPC");
916 TH2F *hpiSignalVspTPC=new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,150,0.,150.0);
917 fOutputMC->Add(hpiSignalVspTPC);
60eac73d 918 hisname.Form("hbpiSignalVspTOF");
919 TH2F *hbpiSignalVspTOF=new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,12000.,50000.0);
920 fOutputMC->Add(hbpiSignalVspTOF);
921 hisname.Form("hbpiSignalVspTPC");
922 TH2F *hbpiSignalVspTPC=new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,150,0.,150.0);
923 fOutputMC->Add(hbpiSignalVspTPC);
029ed93a 924 hisname.Form("hpiSigmaVspTOF");
925 TH2F *hpiSigmaVspTOF=new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,-10.0,10.0);
926 fOutputMC->Add(hpiSigmaVspTOF);
029ed93a 927 hisname.Form("hpiSigmaVspTPC");
928 TH2F *hpiSigmaVspTPC=new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,-10.0,10.0);
929 fOutputMC->Add(hpiSigmaVspTPC);
60eac73d 930 hisname.Form("hbpiSigmaVspTOF");
931 TH2F *hBpiSigmaVspTOF=new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,-10.0,10.0);
932 fOutputMC->Add(hBpiSigmaVspTOF);
933 hisname.Form("hbpiSigmaVspTPC");
934 TH2F *hBpiSigmaVspTPC=new TH2F(hisname.Data(),hisname.Data(),100,0.,5.0,100,-10.0,10.0);
935 fOutputMC->Add(hBpiSigmaVspTPC);
029ed93a 936
862f4ac0 937 //Jaime Lc specific
938 hisname.Form("hLcRealTot");
939 TH1F *hLambdaRealTot=new TH1F(hisname.Data(),hisname.Data(),100,0.,15.0);
940 fOutputMC->Add(hLambdaRealTot);
941 hisname.Form("hbLcRealTot");
942 TH1F *hbLambdaRealTot=new TH1F(hisname.Data(),hisname.Data(),100,0.,15.0);
943 fOutputMC->Add(hbLambdaRealTot);
944 hisname.Form("hLcIDTot");
945 TH1F *hLambdaIDTot=new TH1F(hisname.Data(),hisname.Data(),100,0.,15.0);
946 fOutputMC->Add(hLambdaIDTot);
947 hisname.Form("hbLcIDTot");
948 TH1F *hbLambdaIDTot=new TH1F(hisname.Data(),hisname.Data(),100,0.,15.0);
949 fOutputMC->Add(hbLambdaIDTot);
950 hisname.Form("hLcIDGood");
951 TH1F *hLambdaIDGood=new TH1F(hisname.Data(),hisname.Data(),100,0.,15.0);
952 fOutputMC->Add(hLambdaIDGood);
953 hisname.Form("hbLcIDGood");
954 TH1F *hbLambdaIDGood=new TH1F(hisname.Data(),hisname.Data(),100,0.,15.0);
955 fOutputMC->Add(hbLambdaIDGood);
956 hisname.Form("hLcnoID");
957 TH1F *hLambdanoID=new TH1F(hisname.Data(),hisname.Data(),100,0.,15.0);
958 fOutputMC->Add(hLambdanoID);
959 hisname.Form("hbLcnoID");
960 TH1F *hbLambdanoID=new TH1F(hisname.Data(),hisname.Data(),100,0.,15.0);
961 fOutputMC->Add(hbLambdanoID);
962
029ed93a 963 // other generic
964 hisname.Form("hLcpt");
965 TH1F *hLcPt=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.0);
966 fOutputMC->Add(hLcPt);
967 hisname.Form("hbLcpt");
968 TH1F *hBLcPt=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.0);
969 fOutputMC->Add(hBLcPt);
970 hisname.Form("hDist12toPrim");
971 TH1F *hDist12Prim=new TH1F(hisname.Data(),hisname.Data(),100,0.,1.0);
972 fOutputMC->Add(hDist12Prim);
973 hisname.Form("hbDist12toPrim");
974 TH1F *hBDist12Prim=new TH1F(hisname.Data(),hisname.Data(),100,0.,1.0);
975 fOutputMC->Add(hBDist12Prim);
976
977 hisname.Form("hSigmaVert");
978 TH1F *hSigmaVert=new TH1F(hisname.Data(),hisname.Data(),60,0.,0.06);
979 fOutputMC->Add(hSigmaVert);
980 hisname.Form("hbSigmaVert");
981 TH1F *hBSigmaVert=new TH1F(hisname.Data(),hisname.Data(),60,0.,0.06);
982 fOutputMC->Add(hBSigmaVert);
983
984 hisname.Form("hDCAs");
985 TH1F *hdcas=new TH1F(hisname.Data(),hisname.Data(),200,0.,0.1);
986 fOutputMC->Add(hdcas);
987 hisname.Form("hbDCAs");
988 TH1F *hBdcas=new TH1F(hisname.Data(),hisname.Data(),200,0.,0.1);
989 fOutputMC->Add(hBdcas);
990
991 hisname.Form("hCosPointingAngle");
992 TH1F *hCosPointingAngle=new TH1F(hisname.Data(),hisname.Data(),40,0.,1.);
993 fOutputMC->Add(hCosPointingAngle);
994 hisname.Form("hbCosPointingAngle");
995 TH1F *hBCosPointingAngle=new TH1F(hisname.Data(),hisname.Data(),40,0.,1.);
996 fOutputMC->Add(hBCosPointingAngle);
997
998 hisname.Form("hDecayLength");
999 TH1F *hDecayLength=new TH1F(hisname.Data(),hisname.Data(),100,0.,0.1);
1000 fOutputMC->Add(hDecayLength);
1001 hisname.Form("hbDecayLength");
1002 TH1F *hBDecayLength=new TH1F(hisname.Data(),hisname.Data(),100,0.,0.1);
1003 fOutputMC->Add(hBDecayLength);
1004
1005 hisname.Form("hSum2");
1006 TH1F *hSum2=new TH1F(hisname.Data(),hisname.Data(),100,0.,0.1);
1007 fOutputMC->Add(hSum2);
1008 hisname.Form("hbSum2");
1009 TH1F *hBSum2=new TH1F(hisname.Data(),hisname.Data(),100,0.,0.1);
1010 fOutputMC->Add(hBSum2);
1011
1012 hisname.Form("hptmax");
1013 TH1F *hPtMax=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1014 fOutputMC->Add(hPtMax);
1015 hisname.Form("hbptmax");
1016 TH1F *hBPtMax=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1017 fOutputMC->Add(hBPtMax);
1018
862f4ac0 1019//2D Var x Lc Pt
1020 hisname.Form("hpptProngLcPt");
1021 fhProtonPtProngLcPt=new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,100,0.,5.0);
1022 fOutputMC->Add(fhProtonPtProngLcPt);
1023 hisname.Form("hbpptProngLcPt");
1024 fhBProtonPtProngLcPt=new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,100,0.,5.0);
1025 fOutputMC->Add(fhBProtonPtProngLcPt);
1026
1027 hisname.Form("hpd0ProngLcPt");
1028 fhProtond0ProngLcPt=new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,100,-0.1,0.1);
1029 fOutputMC->Add(fhProtond0ProngLcPt);
1030 hisname.Form("hbpd0ProngLcPt");
1031 fhBProtond0ProngLcPt=new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,100,-0.1,0.1);
1032 fOutputMC->Add(fhBProtond0ProngLcPt);
1033
1034 hisname.Form("hKptProngLcPt");
1035 fhKaonPtProngLcPt=new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,100,0.,5.0);
1036 fOutputMC->Add(fhKaonPtProngLcPt);
1037 hisname.Form("hbKptProngLcPt");
1038 fhBKaonPtProngLcPt=new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,100,0.,5.0);
1039 fOutputMC->Add(fhBKaonPtProngLcPt);
1040
1041 hisname.Form("hKd0ProngLcPt");
1042 fhKaond0ProngLcPt=new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,100,-0.1,0.1);
1043 fOutputMC->Add(fhKaond0ProngLcPt);
1044 hisname.Form("hbKd0ProngLcPt");
1045 fhBKaond0ProngLcPt=new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,100,-0.1,0.1);
1046 fOutputMC->Add(fhBKaond0ProngLcPt);
1047
1048 hisname.Form("hpiptProngLcPt");
1049 fhPionPtProngLcPt=new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,100,0.,5.0);
1050 fOutputMC->Add(fhPionPtProngLcPt);
1051 hisname.Form("hbpiptProngLcPt");
1052 fhBPionPtProngLcPt=new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,100,0.,5.0);
1053 fOutputMC->Add(fhBPionPtProngLcPt);
1054
1055 hisname.Form("hpid0ProngLcPt");
1056 fhPiond0ProngLcPt=new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,100,-0.1,-0.1);
1057 fOutputMC->Add(fhPiond0ProngLcPt);
1058 hisname.Form("hbpid0ProngLcPt");
1059 fhBPiond0ProngLcPt=new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,100,-0.1,0.1);
1060 fOutputMC->Add(fhBPiond0ProngLcPt);
1061
1062 hisname.Form("hDist12toPrimLcPt");
1063 fhDist12PrimLcPt = new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,100,0.,1.0);
1064 fOutputMC->Add(fhDist12PrimLcPt);
1065 hisname.Form("hbDist12toPrimLcPt");
1066 fhBDist12PrimLcPt = new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,100,0.,1.0);
1067 fOutputMC->Add(fhBDist12PrimLcPt);
1068
1069 hisname.Form("hSigmaVertLcPt");
1070 fhSigmaVertLcPt=new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,60,0.,0.06);
1071 fOutputMC->Add(fhSigmaVertLcPt);
1072 hisname.Form("hbSigmaVertLcPt");
1073 fhBSigmaVertLcPt=new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,60,0.,0.06);
1074 fOutputMC->Add(fhBSigmaVertLcPt);
1075
1076 hisname.Form("hDCAsLcPt");
1077 fhdcasLcPt=new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,200,0.,0.1);
1078 fOutputMC->Add(fhdcasLcPt);
1079 hisname.Form("hbDCAsLcPt");
1080 fhBdcasLcPt=new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,200,0.,0.1);
1081 fOutputMC->Add(fhBdcasLcPt);
1082
1083 hisname.Form("hCosPointingAngleLcPt");
1084 fhCosPointingAngleLcPt = new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,40,0.,1.);
1085 fOutputMC->Add(fhCosPointingAngleLcPt);
1086 hisname.Form("hbCosPointingAngleLcPt");
1087 fhBCosPointingAngleLcPt = new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,40,0.,1.);
1088 fOutputMC->Add(fhBCosPointingAngleLcPt);
1089
1090 hisname.Form("hDecayLengthLcPt");
1091 fhDecayLengthLcPt = new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,100,0.,0.1);
1092 fOutputMC->Add(fhDecayLengthLcPt);
1093 hisname.Form("hbDecayLengthLcPt");
1094 fhBDecayLengthLcPt=new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,100,0.,0.1);
1095 fOutputMC->Add(fhBDecayLengthLcPt);
1096
1097 hisname.Form("hSum2LcPt");
1098 fhSum2LcPt=new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,100,0.,0.1);
1099 fOutputMC->Add(fhSum2LcPt);
1100 hisname.Form("hbSum2LcPt");
1101 fhBSum2LcPt=new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,100,0.,0.1);
1102 fOutputMC->Add(fhBSum2LcPt);
1103
1104 hisname.Form("hptmaxLcPt");
1105 fhPtMaxLcPt=new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,100,0.,5.);
1106 fOutputMC->Add(fhPtMaxLcPt);
1107 hisname.Form("hbptmaxLcPt");
1108 fhBPtMaxLcPt=new TH2F(hisname.Data(),hisname.Data(),75,0.,15.,100,0.,5.);
1109 fOutputMC->Add(fhBPtMaxLcPt);
029ed93a 1110
60eac73d 1111 fAPriori = new TList(); // AdC
1112 fAPriori->SetOwner(); // AdC
1113 fAPriori->SetName("APrioriMCHistos"); // AdC
1114
1115 hisname.Form("hElIn3Prong");
1116 TH1F *hElIn3Prong=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1117 fAPriori->Add(hElIn3Prong);
1118 hisname.Form("hMuIn3Prong");
1119 TH1F *hMuIn3Prong=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1120 fAPriori->Add(hMuIn3Prong);
1121 hisname.Form("hPiIn3Prong");
1122 TH1F *hPiIn3Prong=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1123 fAPriori->Add(hPiIn3Prong);
1124 hisname.Form("hKaIn3Prong");
1125 TH1F *hKaIn3Prong=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1126 fAPriori->Add(hKaIn3Prong);
1127 hisname.Form("hPrIn3Prong");
1128 TH1F *hPrIn3Prong=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1129 fAPriori->Add(hPrIn3Prong);
1130
1131 hisname.Form("hElIn3Prong1");
1132 TH1F *hElIn3Prong1=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1133 fAPriori->Add(hElIn3Prong1);
1134 hisname.Form("hMuIn3Prong1");
1135 TH1F *hMuIn3Prong1=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1136 fAPriori->Add(hMuIn3Prong1);
1137 hisname.Form("hPiIn3Prong1");
1138 TH1F *hPiIn3Prong1=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1139 fAPriori->Add(hPiIn3Prong1);
1140 hisname.Form("hKaIn3Prong1");
1141 TH1F *hKaIn3Prong1=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1142 fAPriori->Add(hKaIn3Prong1);
1143 hisname.Form("hPrIn3Prong1");
1144 TH1F *hPrIn3Prong1=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1145 fAPriori->Add(hPrIn3Prong1);
1146
1147 hisname.Form("hElIn3Prong2");
1148 TH1F *hElIn3Prong2=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1149 fAPriori->Add(hElIn3Prong2);
1150 hisname.Form("hMuIn3Prong2");
1151 TH1F *hMuIn3Prong2=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1152 fAPriori->Add(hMuIn3Prong2);
1153 hisname.Form("hPiIn3Prong2");
1154 TH1F *hPiIn3Prong2=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1155 fAPriori->Add(hPiIn3Prong2);
1156 hisname.Form("hKaIn3Prong2");
1157 TH1F *hKaIn3Prong2=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1158 fAPriori->Add(hKaIn3Prong2);
1159 hisname.Form("hPrIn3Prong2");
1160 TH1F *hPrIn3Prong2=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1161 fAPriori->Add(hPrIn3Prong2);
1162
1163 hisname.Form("hElIn3Prong3");
1164 TH1F *hElIn3Prong3=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1165 fAPriori->Add(hElIn3Prong3);
1166 hisname.Form("hMuIn3Prong3");
1167 TH1F *hMuIn3Prong3=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1168 fAPriori->Add(hMuIn3Prong3);
1169 hisname.Form("hPiIn3Prong3");
1170 TH1F *hPiIn3Prong3=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1171 fAPriori->Add(hPiIn3Prong3);
1172 hisname.Form("hKaIn3Prong3");
1173 TH1F *hKaIn3Prong3=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1174 fAPriori->Add(hKaIn3Prong3);
1175 hisname.Form("hPrIn3Prong3");
1176 TH1F *hPrIn3Prong3=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1177 fAPriori->Add(hPrIn3Prong3);
1178
1179 hisname.Form("hElIn3Prong4");
1180 TH1F *hElIn3Prong4=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1181 fAPriori->Add(hElIn3Prong4);
1182 hisname.Form("hMuIn3Prong4");
1183 TH1F *hMuIn3Prong4=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1184 fAPriori->Add(hMuIn3Prong4);
1185 hisname.Form("hPiIn3Prong4");
1186 TH1F *hPiIn3Prong4=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1187 fAPriori->Add(hPiIn3Prong4);
1188 hisname.Form("hKaIn3Prong4");
1189 TH1F *hKaIn3Prong4=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1190 fAPriori->Add(hKaIn3Prong4);
1191 hisname.Form("hPrIn3Prong4");
1192 TH1F *hPrIn3Prong4=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1193 fAPriori->Add(hPrIn3Prong4);
1194
1195 hisname.Form("hElIn3Prong5");
1196 TH1F *hElIn3Prong5=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1197 fAPriori->Add(hElIn3Prong5);
1198 hisname.Form("hMuIn3Prong5");
1199 TH1F *hMuIn3Prong5=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1200 fAPriori->Add(hMuIn3Prong5);
1201 hisname.Form("hPiIn3Prong5");
1202 TH1F *hPiIn3Prong5=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1203 fAPriori->Add(hPiIn3Prong5);
1204 hisname.Form("hKaIn3Prong5");
1205 TH1F *hKaIn3Prong5=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1206 fAPriori->Add(hKaIn3Prong5);
1207 hisname.Form("hPrIn3Prong5");
1208 TH1F *hPrIn3Prong5=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1209 fAPriori->Add(hPrIn3Prong5);
1210
1211 hisname.Form("hElIn3Prong6");
1212 TH1F *hElIn3Prong6=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1213 fAPriori->Add(hElIn3Prong6);
1214 hisname.Form("hMuIn3Prong6");
1215 TH1F *hMuIn3Prong6=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1216 fAPriori->Add(hMuIn3Prong6);
1217 hisname.Form("hPiIn3Prong6");
1218 TH1F *hPiIn3Prong6=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1219 fAPriori->Add(hPiIn3Prong6);
1220 hisname.Form("hKaIn3Prong6");
1221 TH1F *hKaIn3Prong6=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1222 fAPriori->Add(hKaIn3Prong6);
1223 hisname.Form("hPrIn3Prong6");
1224 TH1F *hPrIn3Prong6=new TH1F(hisname.Data(),hisname.Data(),100,0.,5.);
1225 fAPriori->Add(hPrIn3Prong6);
1226
1227
1228 fMultiplicity = new TList(); // AdC
1229 fMultiplicity->SetOwner(); // AdC
1230 fMultiplicity->SetName("MultiplicityMCHistos"); // AdC
1231
1232 hisname.Form("hLcinEvent");
1233 TH1I*hLcinEvent=new TH1I(hisname.Data(),hisname.Data(),3,-1,2);
1234 fMultiplicity->Add(hLcinEvent);
1235
1236 hisname.Form("hPrimariesvsAOD");
1237 TH2I *hPrimariesvsAOD=new TH2I(hisname.Data(),hisname.Data(),300,0,300,300,0,300);
1238 fMultiplicity->Add(hPrimariesvsAOD);
1239
1240 hisname.Form("hMultiplicityInLcEvent");
1241 TH1I *hMultiplicityInLcEvent=new TH1I(hisname.Data(),hisname.Data(),300,0,300);
1242 fMultiplicity->Add(hMultiplicityInLcEvent);
1243 hisname.Form("h2MultiplicityInLcEvent");
1244 TH1I *h2MultiplicityInLcEvent=new TH1I(hisname.Data(),hisname.Data(),300,0,300);
1245 fMultiplicity->Add(h2MultiplicityInLcEvent);
1246 hisname.Form("hAll2MultiplicityInEvent");
1247 TH1I *hAll2MultiplicityInEvent=new TH1I(hisname.Data(),hisname.Data(),300,0,300);
1248 fMultiplicity->Add(hAll2MultiplicityInEvent);
1249 hisname.Form("hAllMultiplicityInEvent");
1250 TH1I *hAllMultiplicityInEvent=new TH1I(hisname.Data(),hisname.Data(),300,0,300);
1251 fMultiplicity->Add(hAllMultiplicityInEvent);
1252 hisname.Form("hAllMultiplicityPrimaryInEvent");
1253 TH1I *hAllMultiplicityPrimaryInEvent=new TH1I(hisname.Data(),hisname.Data(),300,0,300);
1254 fMultiplicity->Add(hAllMultiplicityPrimaryInEvent);
1255 hisname.Form("hAll2MultiplicityPrimaryInEvent");
1256 TH1I *hAll2MultiplicityPrimaryInEvent=new TH1I(hisname.Data(),hisname.Data(),300,0,300);
1257 fMultiplicity->Add(hAll2MultiplicityPrimaryInEvent);
1258 hisname.Form("hMultiplicityInEvent");
1259 TH1I *hMultiplicityInEvent=new TH1I(hisname.Data(),hisname.Data(),300,0.,300);
1260 fMultiplicity->Add(hMultiplicityInEvent);
1261 hisname.Form("hMultiplicityIn3ProngLC");
1262 TH1I *hMultiplicityIn3ProngLC=new TH1I(hisname.Data(),hisname.Data(),300,0,300);
1263 fMultiplicity->Add(hMultiplicityIn3ProngLC);
1264 hisname.Form("hMultiplicityInLCpid");
1265 TH1I *hMultiplicityInLCpid=new TH1I(hisname.Data(),hisname.Data(),300,0,300);
1266 fMultiplicity->Add(hMultiplicityInLCpid);
1267 hisname.Form("hMultiplicityInLCmc");
1268 TH1I *hMultiplicityInLCmc=new TH1I(hisname.Data(),hisname.Data(),300,0,300);
1269 fMultiplicity->Add(hMultiplicityInLCmc);
1270 hisname.Form("hMultiplicityInLCNomc");
1271 TH1I *hMultiplicityInLCNomc=new TH1I(hisname.Data(),hisname.Data(),300,0,300);
1272 fMultiplicity->Add(hMultiplicityInLCNomc);
1273 hisname.Form("hMultiplicityYesC");
1274 TH1I *hMultiplicityYesC=new TH1I(hisname.Data(),hisname.Data(),300,0,300);
1275 fMultiplicity->Add(hMultiplicityYesC);
1276 hisname.Form("hMultiplicityYesB");
1277 TH1I *hMultiplicityYesB=new TH1I(hisname.Data(),hisname.Data(),300,0,300);
1278 fMultiplicity->Add(hMultiplicityYesB);
1279 hisname.Form("hMultiplicityJPsi");
1280 TH1I *hMultiplicityJPsi=new TH1I(hisname.Data(),hisname.Data(),300,0,300);
1281 fMultiplicity->Add(hMultiplicityJPsi);
1282
1283
1284 AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
1285 AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
1286 fPIDResponse = inputHandler->GetPIDResponse();
1287
029ed93a 1288 if(fRDCutsProduction->GetIsUsePID()){
60eac73d 1289 fRDCutsProduction->GetPidHF()->SetPidResponse(fPIDResponse);
1290 fRDCutsProduction->GetPidpion()->SetPidResponse(fPIDResponse);
1291 fRDCutsProduction->GetPidprot()->SetPidResponse(fPIDResponse);
1292 //fUtilPid=new AliAODpidUtil(fPIDResponse);
1293 fRDCutsProduction->GetPidHF()->SetOldPid(kFALSE);
1294 fRDCutsProduction->GetPidpion()->SetOldPid(kFALSE);
1295 fRDCutsProduction->GetPidprot()->SetOldPid(kFALSE);
1296 }
029ed93a 1297 if(fRDCutsAnalysis->GetIsUsePID()){
60eac73d 1298 fRDCutsAnalysis->GetPidHF()->SetPidResponse(fPIDResponse);
1299 fRDCutsAnalysis->GetPidpion()->SetPidResponse(fPIDResponse);
1300 fRDCutsAnalysis->GetPidprot()->SetPidResponse(fPIDResponse);
1301 fRDCutsAnalysis->GetPidHF()->SetOldPid(kFALSE);
1302 fRDCutsAnalysis->GetPidpion()->SetOldPid(kFALSE);
1303 fRDCutsAnalysis->GetPidprot()->SetOldPid(kFALSE);
029ed93a 1304 }
1305
029ed93a 1306 PostData(1,fOutput);
60eac73d 1307 if (fFillVarHists) PostData(3,fOutputMC);
029ed93a 1308 PostData(4,fNentries);
60eac73d 1309 if (fPriorsHists) PostData(5,fAPriori);
1310 if (fMultiplicityHists) PostData(6,fMultiplicity);
7d020878 1311 TString normName="NormalizationCounter";
1312 AliAnalysisDataContainer *cont = GetOutputSlot(7)->GetContainer();
1313 if(cont)normName=(TString)cont->GetName();
1314 fCounter = new AliNormalizationCounter(normName.Data());
c1234468 1315 fCounter->Init();
1316 PostData(7,fCounter);
60eac73d 1317 if (fFillNtuple) {
7eb0cc73 1318 //OpenFile(3); // 2 is the slot number of the ntuple
60eac73d 1319 fNtupleLambdac = new TNtuple("fNtupleLambdac","D +",
1320 "pdg:Px:Py:Pz:PtTrue:VxTrue:VyTrue:VzTrue:Ptpi:PtK:Ptpi2:PtRec:PointingAngle:DecLeng:VxRec:VyRec:VzRec:InvMass:sigvert:d0Pi:d0K:d0Pi2:dca:d0square");
c1234468 1321 PostData(8,fNtupleLambdac);
7eb0cc73 1322 }
60eac73d 1323
7eb0cc73 1324 return;
1325}
1326
1327//________________________________________________________________________
1328void AliAnalysisTaskSELambdac::UserExec(Option_t */*option*/)
1329{
1330 // Execute analysis for current event:
1331 // heavy flavor candidates association to MC truth
1332
60eac73d 1333 AliAODEvent *aod = dynamic_cast<AliAODEvent*> (InputEvent());
1334 //tmp
1335 fHistNEvents->Fill(0); // count event
7ad4b782 1336 // Post the data already here
7eb0cc73 1337
1338 TClonesArray *array3Prong = 0;
1339 TClonesArray *arrayLikeSign =0;
1340 if(!aod && AODEvent() && IsStandardAOD()) {
1341 // In case there is an AOD handler writing a standard AOD, use the AOD
1342 // event in memory rather than the input (ESD) event.
1343 aod = dynamic_cast<AliAODEvent*> (AODEvent());
1344 // in this case the braches in the deltaAOD (AliAOD.VertexingHF.root)
1345 // have to taken from the AOD event hold by the AliAODExtension
1346 AliAODHandler* aodHandler = (AliAODHandler*)
1347 ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
1348 if(aodHandler->GetExtensions()) {
1349 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject("AliAOD.VertexingHF.root");
1350 AliAODEvent *aodFromExt = ext->GetAOD();
1351 array3Prong=(TClonesArray*)aodFromExt->GetList()->FindObject("Charm3Prong");
1352 arrayLikeSign=(TClonesArray*)aodFromExt->GetList()->FindObject("LikeSign3Prong");
1353 }
dc222f77 1354 } else if(aod) {
7eb0cc73 1355 array3Prong=(TClonesArray*)aod->GetList()->FindObject("Charm3Prong");
1356 arrayLikeSign=(TClonesArray*)aod->GetList()->FindObject("LikeSign3Prong");
1357 }
1358
60eac73d 1359 if(!aod) return;
7eb0cc73 1360
7eb0cc73 1361 TClonesArray *arrayMC=0;
1362 AliAODMCHeader *mcHeader=0;
1363
7eb0cc73 1364 // load MC particles
1365 if(fReadMC){
1366
1367 arrayMC = (TClonesArray*)aod->GetList()->FindObject(AliAODMCParticle::StdBranchName());
1368 if(!arrayMC) {
b739af08 1369 AliError("AliAnalysisTaskSELambdac::UserExec: MC particles branch not found!\n");
7eb0cc73 1370 return;
1371 }
60eac73d 1372
1373
1374 // load MC header
7eb0cc73 1375 mcHeader = (AliAODMCHeader*)aod->GetList()->FindObject(AliAODMCHeader::StdBranchName());
1376 if(!mcHeader) {
b739af08 1377 AliError("AliAnalysisTaskSELambdac::UserExec: MC header branch not found!\n");
60eac73d 1378 return;
7eb0cc73 1379 }
1380 }
60eac73d 1381
1382 TString fillthis="";
1383 Int_t numberOfPrimaries= NumberPrimaries(aod);
1384
1385 if (fMultiplicityHists && fReadMC) {
1386 fillthis="hPrimariesvsAOD";
4640c275 1387 ((TH1I*)fMultiplicity->FindObject(fillthis))->Fill(aod->GetNumberOfTracks(),numberOfPrimaries);
60eac73d 1388
1389 fillthis="hAll2MultiplicityInEvent";
4640c275 1390 ((TH1I*)fMultiplicity->FindObject(fillthis))->Fill(aod->GetNumberOfTracks());
60eac73d 1391
1392 fillthis="hAll2MultiplicityPrimaryInEvent";
1393 ((TH1I*)fMultiplicity->FindObject(fillthis))->Fill(numberOfPrimaries);
1394
1395 if (IsThereAGeneratedLc(arrayMC)) {
1396 fillthis="h2MultiplicityInLcEvent";
1397 ((TH1I*)fMultiplicity->FindObject(fillthis))->Fill(numberOfPrimaries);
1398 }
1399
1400 }
1401
1402 if(!array3Prong || !aod) {
b739af08 1403 AliError("AliAnalysisTaskSELambdac::UserExec: Charm3Prong branch not found!\n");
60eac73d 1404 return;
1405 }
1406 if(!arrayLikeSign) {
b739af08 1407 AliDebug(2,"AliAnalysisTaskSELambdac::UserExec: LikeSign3Prong branch not found!\n");
60eac73d 1408 // return;
1409 }
1410
c44b3d56 1411 // fix for temporary bug in ESDfilter
1412 // the AODs with null vertex pointer didn't pass the PhysSel
1413 AliAODVertex *vtx1 = (AliAODVertex*)aod->GetPrimaryVertex();
1414 if(!vtx1 || TMath::Abs(aod->GetMagneticField())<0.001) return;
1415
60eac73d 1416 fNentries->Fill(0);
c1234468 1417 fCounter->StoreEvent(aod,fRDCutsProduction,fReadMC);
60eac73d 1418 TString trigclass=aod->GetFiredTriggerClasses();
1419 if(trigclass.Contains("C0SMH-B-NOPF-ALLNOTRD") || trigclass.Contains("C0SMH-B-NOPF-ALL")) fNentries->Fill(14);
b44d42ae 1420 Bool_t isEvSelProdCuts=fRDCutsProduction->IsEventSelected(aod);
56bf7244 1421 Bool_t isEvSelAnCuts=fRDCutsAnalysis->IsEventSelected(aod);
1422 if(!isEvSelProdCuts || !isEvSelAnCuts){
60eac73d 1423 if(fRDCutsProduction->GetWhyRejection()==1) // rejected for pileup
1424 fNentries->Fill(13);
1425 return;
1426 }
1427
60eac73d 1428 Bool_t isThereA3prongWithGoodTracks = kFALSE;
1429 Bool_t isThereA3ProngLcKine = kFALSE;
1430 Bool_t isThereA3ProngLcKineANDpid = kFALSE;
1431 Bool_t isThereA3ProngLcMC = kFALSE;
1432 Bool_t isThereA3ProngCyes = kFALSE;
1433 Bool_t isThereA3ProngByes = kFALSE;
1434 Bool_t isThereA3ProngJPsi = kFALSE;
1435
7eb0cc73 1436 Int_t n3Prong = array3Prong->GetEntriesFast();
c1234468 1437 Int_t nSelectedloose[1]={0};
1438 Int_t nSelectedtight[1]={0};
1439
7eb0cc73 1440 for (Int_t i3Prong = 0; i3Prong < n3Prong; i3Prong++) {
1441 AliAODRecoDecayHF3Prong *d = (AliAODRecoDecayHF3Prong*)array3Prong->UncheckedAt(i3Prong);
60eac73d 1442
7eb0cc73 1443 Bool_t unsetvtx=kFALSE;
1444 if(!d->GetOwnPrimaryVtx()){
1445 d->SetOwnPrimaryVtx(vtx1);
1446 unsetvtx=kTRUE;
1447 }
1448
862f4ac0 1449 //Filter bit selection and QA:
1450 fhSelectBit->Fill(1);
1451 if(d->GetSelectionMap()){
1452 fhSelectBit->Fill(2);
1453 if(!d->HasSelectionBit(AliRDHFCuts::kLcCuts)) fhSelectBit->Fill(3);
1454 if(!d->HasSelectionBit(AliRDHFCuts::kLcPID)) fhSelectBit->Fill(4);
1455 if(fLcCut&&!d->HasSelectionBit(AliRDHFCuts::kLcCuts)) continue;
1456 if(fLcPIDCut&&!d->HasSelectionBit(AliRDHFCuts::kLcPID)) continue;
1457 }
7eb0cc73 1458
029ed93a 1459 Int_t isSelectedTracks = fRDCutsProduction->IsSelected(d,AliRDHFCuts::kTracks,aod);
1460 if(!isSelectedTracks) continue;
862f4ac0 1461 fhEta3Prong->Fill(d->Pt(),d->Eta());
1462 fhRap3Prong->Fill(d->Pt(),d->Y(4122));
1463
60eac73d 1464 isThereA3prongWithGoodTracks=kTRUE;
1465
7d020878 1466 if (fRDCutsProduction->IsInFiducialAcceptance(d->Pt(),d->Y(4122))) {fNentries->Fill(6);}else{continue;}
862f4ac0 1467 fhEta3ProngAcc->Fill(d->Pt(),d->Eta());
1468 fhRap3ProngAcc->Fill(d->Pt(),d->Y(4122));
1469
029ed93a 1470 Int_t ptbin=fRDCutsProduction->PtBin(d->Pt());
1471 if(ptbin==-1) {fNentries->Fill(4); continue;} //out of bounds
7eb0cc73 1472
c1234468 1473 FillMassHists(aod,d,arrayMC,fRDCutsProduction,nSelectedloose,nSelectedtight);
60eac73d 1474 if(fFillVarHists) FillVarHists(d,arrayMC,fRDCutsProduction,/*fOutputMC,*/aod);
1475
1476 if (fPriorsHists && fReadMC)
1477 FillAPrioriConcentrations(d, fRDCutsProduction, aod, arrayMC);
1478 if (fMultiplicityHists && fReadMC)
1479 MultiplicityStudies(d, fRDCutsProduction, aod, arrayMC,
1480 isThereA3ProngLcKine,isThereA3ProngLcKineANDpid,isThereA3ProngLcMC,
1481 isThereA3ProngCyes,isThereA3ProngByes,isThereA3ProngJPsi);
1482
1483 /*
1484 //start OS analysis
1485 if(labDp<0)fHistOSbkg->Fill(d->InvMassDplus());
1486 fHistOS->Fill(d->InvMassDplus());
1487 */
029ed93a 1488
7eb0cc73 1489 if(unsetvtx) d->UnsetOwnPrimaryVtx();
1490 }
c1234468 1491 fCounter->StoreCandidates(aod,nSelectedloose[0],kTRUE);
1492 fCounter->StoreCandidates(aod,nSelectedtight[0],kFALSE);
029ed93a 1493
60eac73d 1494 if (fMultiplicityHists && fReadMC) {
1495 fillthis="hAllMultiplicityInEvent";
4640c275 1496 ((TH1I*)fMultiplicity->FindObject(fillthis))->Fill(aod->GetNumberOfTracks());
60eac73d 1497
1498 fillthis="hAllMultiplicityPrimaryInEvent";
1499 ((TH1I*)fMultiplicity->FindObject(fillthis))->Fill(numberOfPrimaries);
1500
1501 if (IsThereAGeneratedLc(arrayMC)) {
1502 fillthis="hMultiplicityInLcEvent";
1503 ((TH1I*)fMultiplicity->FindObject(fillthis))->Fill(numberOfPrimaries);
1504 }
1505
1506 if (isThereA3prongWithGoodTracks) {
1507 fillthis="hMultiplicityInEvent";
1508 ((TH1I*)fMultiplicity->FindObject(fillthis))->Fill(numberOfPrimaries);
1509 }
1510 if (isThereA3ProngLcKine) {
1511 fillthis="hMultiplicityIn3ProngLC";
1512 ((TH1I*)fMultiplicity->FindObject(fillthis))->Fill(numberOfPrimaries);
1513 }
1514 if (isThereA3ProngLcKineANDpid) {
1515 fillthis="hMultiplicityInLCpid";
1516 ((TH1I*)fMultiplicity->FindObject(fillthis))->Fill(numberOfPrimaries);
1517 }
1518 if (isThereA3ProngLcMC) {
1519 fillthis="hMultiplicityInLCmc";
1520 ((TH1I*)fMultiplicity->FindObject(fillthis))->Fill(numberOfPrimaries);
1521 }
1522 if (isThereA3ProngLcKine && !isThereA3ProngLcMC) {
1523 fillthis="hMultiplicityInLCNomc";
1524 ((TH1I*)fMultiplicity->FindObject(fillthis))->Fill(numberOfPrimaries);
1525 }
1526
1527 if (isThereA3ProngCyes) {
1528 fillthis="hMultiplicityYesC";
1529 ((TH1I*)fMultiplicity->FindObject(fillthis))->Fill(numberOfPrimaries);
1530 }
1531 if (isThereA3ProngByes) {
1532 fillthis="hMultiplicityYesB";
1533 ((TH1I*)fMultiplicity->FindObject(fillthis))->Fill(numberOfPrimaries);
1534 }
1535 if (isThereA3ProngJPsi) {
1536 fillthis="hMultiplicityJPsi";
1537 ((TH1I*)fMultiplicity->FindObject(fillthis))->Fill(numberOfPrimaries);
1538 }
1539
1540 }
1541
c1234468 1542
029ed93a 1543 PostData(1,fOutput);
60eac73d 1544 if (fFillVarHists) PostData(3,fOutputMC);
1545 if (fPriorsHists) PostData(5,fAPriori);
1546 if (fMultiplicityHists) PostData(6,fMultiplicity);
1547
029ed93a 1548 PostData(4,fNentries);
c1234468 1549 PostData(7,fCounter);
029ed93a 1550
7eb0cc73 1551 return;
1552}
1553
1554
1555
1556//________________________________________________________________________
1557void AliAnalysisTaskSELambdac::Terminate(Option_t */*option*/)
1558{
1559 // Terminate analysis
1560 //
60eac73d 1561 if (fDebug > 1) printf("AnalysisTaskSELambdac: Terminate() \n");
7eb0cc73 1562
1563 fOutput = dynamic_cast<TList*> (GetOutputData(1));
1564 if (!fOutput) {
b739af08 1565 AliError("ERROR: fOutput not available\n");
7eb0cc73 1566 return;
1567 }
60eac73d 1568 //fHistNEvents = dynamic_cast<TH1F*>(fOutput->FindObject("fHistNEvents"));
7eb0cc73 1569
7eb0cc73 1570 if(fFillNtuple){
1571 fNtupleLambdac = dynamic_cast<TNtuple*>(GetOutputData(3));
1572 }
1573
7eb0cc73 1574
60eac73d 1575 return;
7eb0cc73 1576}
1577
1578//________________________________________________________________________
4c7fd068 1579Int_t AliAnalysisTaskSELambdac::MatchToMCLambdac(AliAODRecoDecayHF3Prong *d,TClonesArray *arrayMC) const{
1580 // check if the candidate is a Lambdac decaying in pKpi or in the resonant channels
7eb0cc73 1581 Int_t lambdacLab[3]={0,0,0};
b44d42ae 1582 // Int_t pdgs[3]={0,0,0};
7eb0cc73 1583 for(Int_t i=0;i<3;i++){
60eac73d 1584 AliAODTrack *daugh=(AliAODTrack*)d->GetDaughter(i);
1585 Int_t lab=daugh->GetLabel();
1586 if(lab<0) return 0;
1587 AliAODMCParticle *part= (AliAODMCParticle*)arrayMC->At(lab);
1588 if(!part) continue;
b44d42ae 1589 // pdgs[i]=part->GetPdgCode();
60eac73d 1590 Int_t partPdgcode = TMath::Abs(part->GetPdgCode());
1591 if(partPdgcode==211 || partPdgcode==321 || partPdgcode==2212){
1592 Int_t motherLabel=part->GetMother();
1593 if(motherLabel<0) return 0;
1594 AliAODMCParticle *motherPart = (AliAODMCParticle*)arrayMC->At(motherLabel);
1595 if(!motherPart) continue;
1596 Int_t motherPdg = TMath::Abs(motherPart->GetPdgCode());
1597 if(motherPdg==4122) {
7eb0cc73 1598 if(GetLambdacDaugh(motherPart,arrayMC)){lambdacLab[i]=motherLabel;continue;}
60eac73d 1599 }
1600 if(motherPdg==313 || motherPdg==2224 || motherPdg==3124){
5d836c02 1601 Int_t granMotherLabel=motherPart->GetMother();
1602 if(granMotherLabel<0) return 0;
1603 AliAODMCParticle *granMotherPart = (AliAODMCParticle*)arrayMC->At(granMotherLabel);
1604 if(!granMotherPart) continue;
c1234468 1605 Int_t granMotherPdg = TMath::Abs(granMotherPart->GetPdgCode());
1606 if(granMotherPdg ==4122) {
5d836c02 1607 if(GetLambdacDaugh(granMotherPart,arrayMC)) {lambdacLab[i]=granMotherLabel;continue;}
7eb0cc73 1608 }
60eac73d 1609 }
1610 }
7eb0cc73 1611 }
1612
60eac73d 1613 if(lambdacLab[0]==lambdacLab[1] && lambdacLab[1]==lambdacLab[2]) {return lambdacLab[0];}
1614 return 0;
7eb0cc73 1615
1616}
1617//------------------------
4c7fd068 1618Bool_t AliAnalysisTaskSELambdac::GetLambdacDaugh(AliAODMCParticle *part,TClonesArray *arrayMC) const{
60eac73d 1619 // check if the particle is a lambdac and if its decay mode is the correct one
1620 Int_t numberOfLambdac=0;
1621 if(TMath::Abs(part->GetPdgCode())!=4122) return kFALSE;
b44d42ae 1622 // Int_t daughTmp[2];
1623 // daughTmp[0]=part->GetDaughter(0);
1624 // daughTmp[1]=part->GetDaughter(1);
60eac73d 1625 Int_t nDaugh = (Int_t)part->GetNDaughters();
1626 if(nDaugh<2) return kFALSE;
1627 if(nDaugh>3) return kFALSE;
1628 AliAODMCParticle* pdaugh1 = (AliAODMCParticle*)arrayMC->At(part->GetDaughter(0));
1629 if(!pdaugh1) {return kFALSE;}
1630 Int_t number1 = TMath::Abs(pdaugh1->GetPdgCode());
1631 AliAODMCParticle* pdaugh2 = (AliAODMCParticle*)arrayMC->At(part->GetDaughter(1));
1632 if(!pdaugh2) {return kFALSE;}
7eb0cc73 1633 Int_t number2 = TMath::Abs(pdaugh2->GetPdgCode());
1634
1635 if(nDaugh==3){
60eac73d 1636 Int_t thirdDaugh=part->GetDaughter(1)-1;
1637 AliAODMCParticle* pdaugh3 = (AliAODMCParticle*)arrayMC->At(thirdDaugh);
1638 Int_t number3 = TMath::Abs(pdaugh3->GetPdgCode());
1639 if((number1==321 && number2==211 && number3==2212) ||
1640 (number1==211 && number2==321 && number3==2212) ||
1641 (number1==211 && number2==2212 && number3==321) ||
1642 (number1==321 && number2==2212 && number3==211) ||
1643 (number1==2212 && number2==321 && number3==211) ||
1644 (number1==2212 && number2==211 && number3==321)) {
1645 numberOfLambdac++;
1646 }
7eb0cc73 1647 }
1648
60eac73d 1649 if(nDaugh==2){
7eb0cc73 1650
60eac73d 1651 //Lambda resonant
7eb0cc73 1652
60eac73d 1653 //Lambda -> p K*0
1654 //
1655 Int_t nfiglieK=0;
1656
1657 if((number1==2212 && number2==313)){
1658 nfiglieK=pdaugh2->GetNDaughters();
1659 if(nfiglieK!=2) return kFALSE;
1660 AliAODMCParticle* pdaughK1 = (AliAODMCParticle*)arrayMC->At(pdaugh2->GetDaughter(0));
1661 AliAODMCParticle* pdaughK2 = (AliAODMCParticle*)arrayMC->At(pdaugh2->GetDaughter(1));
1662 if(!pdaughK1) return kFALSE;
1663 if(!pdaughK2) return kFALSE;
1664 if((TMath::Abs(pdaughK1->GetPdgCode())==211 && TMath::Abs(pdaughK2->GetPdgCode())==321) || (TMath::Abs(pdaughK1->GetPdgCode())==321 && TMath::Abs(pdaughK2->GetPdgCode())==211)) numberOfLambdac++;
1665 }
1666
1667 if((number1==313 && number2==2212)){
1668 nfiglieK=pdaugh1->GetNDaughters();
1669 if(nfiglieK!=2) return kFALSE;
1670 AliAODMCParticle* pdaughK1 = (AliAODMCParticle*)arrayMC->At(pdaugh1->GetDaughter(0));
1671 AliAODMCParticle* pdaughK2 = (AliAODMCParticle*)arrayMC->At(pdaugh1->GetDaughter(1));
1672 if(!pdaughK1) return kFALSE;
1673 if(!pdaughK2) return kFALSE;
1674 if((TMath::Abs(pdaughK1->GetPdgCode())==211 && TMath::Abs(pdaughK2->GetPdgCode())==321) || (TMath::Abs(pdaughK1->GetPdgCode())==321 && TMath::Abs(pdaughK2->GetPdgCode())==211)) numberOfLambdac++;
7eb0cc73 1675 }
1676
60eac73d 1677 //Lambda -> Delta++ k
1678 Int_t nfiglieDelta=0;
1679 if(number1==321 && number2==2224){
1680 nfiglieDelta=pdaugh2->GetNDaughters();
1681 if(nfiglieDelta!=2) return kFALSE;
1682 AliAODMCParticle *pdaughD1=(AliAODMCParticle*)arrayMC->At(pdaugh2->GetDaughter(0));
1683 AliAODMCParticle *pdaughD2=(AliAODMCParticle*)arrayMC->At(pdaugh2->GetDaughter(1));
1684 if(!pdaughD1) return kFALSE;
1685 if(!pdaughD2) return kFALSE;
1686 if((TMath::Abs(pdaughD1->GetPdgCode())==211 && TMath::Abs(pdaughD2->GetPdgCode())==2212) || (TMath::Abs(pdaughD1->GetPdgCode())==2212 && TMath::Abs(pdaughD2->GetPdgCode())==211)) numberOfLambdac++;
1687 }
1688 if(number1==2224 && number2==321){
1689 nfiglieDelta=pdaugh1->GetNDaughters();
1690 if(nfiglieDelta!=2) return kFALSE;
1691 AliAODMCParticle* pdaughD1 = (AliAODMCParticle*)arrayMC->At(pdaugh1->GetDaughter(0));
1692 AliAODMCParticle* pdaughD2 = (AliAODMCParticle*)arrayMC->At(pdaugh1->GetDaughter(1));
1693 if(!pdaughD1) return kFALSE;
1694 if(!pdaughD2) return kFALSE;
1695 if((TMath::Abs(pdaughD1->GetPdgCode())==211 && TMath::Abs(pdaughD2->GetPdgCode())==2212) || (TMath::Abs(pdaughD1->GetPdgCode())==2212 && TMath::Abs(pdaughD2->GetPdgCode())==211)) numberOfLambdac++;
1696 }
7eb0cc73 1697
1698
60eac73d 1699 //Lambdac -> Lambda(1520) pi
1700 Int_t nfiglieLa=0;
1701 if(number1==3124 && number2==211){
1702 nfiglieLa=pdaugh1->GetNDaughters();
1703 if(nfiglieLa!=2) return kFALSE;
1704 AliAODMCParticle *pdaughL1=(AliAODMCParticle*)arrayMC->At(pdaugh1->GetDaughter(0));
1705 AliAODMCParticle *pdaughL2=(AliAODMCParticle*)arrayMC->At(pdaugh1->GetDaughter(1));
1706 if(!pdaughL1) return kFALSE;
1707 if(!pdaughL2) return kFALSE;
1708 if((TMath::Abs(pdaughL1->GetPdgCode())==321 && TMath::Abs(pdaughL2->GetPdgCode())==2212) || (TMath::Abs(pdaughL1->GetPdgCode())==2212 && TMath::Abs(pdaughL2->GetPdgCode())==321)) numberOfLambdac++;
1709 }
1710 if(number1==211 && number2==3124){
1711 nfiglieLa=pdaugh2->GetNDaughters();
1712 if(nfiglieLa!=2) return kFALSE;
1713 AliAODMCParticle *pdaughL1=(AliAODMCParticle*)arrayMC->At(pdaugh2->GetDaughter(0));
1714 AliAODMCParticle *pdaughL2=(AliAODMCParticle*)arrayMC->At(pdaugh2->GetDaughter(1));
1715 if(!pdaughL1) return kFALSE;
1716 if(!pdaughL2) return kFALSE;
1717 if((TMath::Abs(pdaughL1->GetPdgCode())==321 && TMath::Abs(pdaughL2->GetPdgCode())==2212) || (TMath::Abs(pdaughL1->GetPdgCode())==2212 && TMath::Abs(pdaughL2->GetPdgCode())==321)) numberOfLambdac++;
7eb0cc73 1718
60eac73d 1719 }
1720 }
7eb0cc73 1721
60eac73d 1722 if(numberOfLambdac>0) {return kTRUE;}
1723 return kFALSE;
7eb0cc73 1724}
1725//-----------------------------
7ad4b782 1726Bool_t AliAnalysisTaskSELambdac::IspKpiMC(AliAODRecoDecayHF3Prong *d,TClonesArray *arrayMC) const{
4c7fd068 1727 // Apply MC PID
60eac73d 1728 Int_t lab[3]={0,0,0},pdgs[3]={0,0,0};
1729 for(Int_t i=0;i<3;i++){
7eb0cc73 1730 AliAODTrack *daugh=(AliAODTrack*)d->GetDaughter(i);
1731 lab[i]=daugh->GetLabel();
1732 if(lab[i]<0) return kFALSE;
1733 AliAODMCParticle *part= (AliAODMCParticle*)arrayMC->At(lab[i]);
1734 if(!part) return kFALSE;
1735 pdgs[i]=TMath::Abs(part->GetPdgCode());
60eac73d 1736 }
7eb0cc73 1737
60eac73d 1738 if(pdgs[0]==2212 && pdgs[1]==321 && pdgs[2]==211) return kTRUE;
7eb0cc73 1739
60eac73d 1740 return kFALSE;
7eb0cc73 1741}
1742//-----------------------------
4c7fd068 1743Bool_t AliAnalysisTaskSELambdac::IspiKpMC(AliAODRecoDecayHF3Prong *d,TClonesArray *arrayMC) const{
7eb0cc73 1744
4c7fd068 1745 // Apply MC PID
60eac73d 1746 Int_t lab[3]={0,0,0},pdgs[3]={0,0,0};
1747 for(Int_t i=0;i<3;i++){
7eb0cc73 1748 AliAODTrack *daugh=(AliAODTrack*)d->GetDaughter(i);
1749 lab[i]=daugh->GetLabel();
1750 if(lab[i]<0) return kFALSE;
1751 AliAODMCParticle *part= (AliAODMCParticle*)arrayMC->At(lab[i]);
1752 if(!part) return kFALSE;
1753 pdgs[i]=TMath::Abs(part->GetPdgCode());
60eac73d 1754 }
7eb0cc73 1755
60eac73d 1756 if(pdgs[2]==2212 && pdgs[1]==321 && pdgs[0]==211) {return kTRUE;}
7eb0cc73 1757
60eac73d 1758 return kFALSE;
7eb0cc73 1759}
1760//--------------------------------------
4c7fd068 1761Bool_t AliAnalysisTaskSELambdac::VertexingKF(AliAODRecoDecayHF3Prong *d,Int_t *pdgs,Double_t field) const{
60eac73d 1762 // apply vertexing KF
1763 Int_t iprongs[3]={0,1,2};
1764 Double_t mass[2]={0.,0.};
c1234468 1765 Bool_t constraint=kFALSE;
1766 if(fCutsKF[0]>0.)constraint=kTRUE;
60eac73d 1767 //topological constr
c1234468 1768 AliKFParticle *lambdac=d->ApplyVertexingKF(iprongs,3,pdgs,constraint,field,mass);
60eac73d 1769 if(!lambdac) return kFALSE;
c1234468 1770 if(lambdac->GetChi2()/lambdac->GetNDF()>fCutsKF[1]) return kFALSE;
60eac73d 1771 return kTRUE;
7eb0cc73 1772}
1773//-------------------------------------
c1234468 1774void AliAnalysisTaskSELambdac::IspiKpResonant(AliAODRecoDecayHF3Prong *d,Double_t field,Int_t *resNumber) const{
7eb0cc73 1775
60eac73d 1776 // apply PID using the resonant channels
1777 //if lambda* -> pk
1778 Double_t mass[2]={1.520,0.005};
1779 Int_t ipRes[2]={1,2};
1780 Int_t pdgres[2]={321,2212};
1781 AliKFParticle *lambda1520=d->ApplyVertexingKF(ipRes,2,pdgres,kFALSE,field,mass);
1782 Double_t probLa=TMath::Prob(lambda1520->GetChi2(),lambda1520->GetNDF());
c1234468 1783 if(probLa>0.1) resNumber[0]=1;
60eac73d 1784 //K* -> kpi
1785 mass[0]=0.8961;mass[1]=0.03;
1786 ipRes[0]=0;ipRes[1]=1;
1787 pdgres[0]=211;pdgres[1]=321;
1788 AliKFParticle *kstar=d->ApplyVertexingKF(ipRes,2,pdgres,kFALSE,field,mass);
1789 Double_t probKa=TMath::Prob(kstar->GetChi2(),kstar->GetNDF());
c1234468 1790 if(probKa>0.1) resNumber[1]=1;
60eac73d 1791
c1234468 1792 // Delta++
1793 mass[0]=1.232;mass[1]=0.15;
1794 ipRes[0]=0;ipRes[1]=2;
1795 pdgres[0]=211;pdgres[1]=2122;
1796 AliKFParticle *delta=d->ApplyVertexingKF(ipRes,2,pdgres,kFALSE,field,mass);
1797 Double_t probDe=TMath::Prob(delta->GetChi2(),delta->GetNDF());
1798 if(probDe>0.1) resNumber[2]=1;
1799
1800 return ;
7eb0cc73 1801
1802}
1803//-------------------------------------
c1234468 1804void AliAnalysisTaskSELambdac::IspKpiResonant(AliAODRecoDecayHF3Prong *d,Double_t field,Int_t *resNumber) const{
4c7fd068 1805
60eac73d 1806 // apply PID using the resonant channels
1807 //if lambda* -> pk
1808 Double_t mass[2]={1.520,0.005};
1809 Int_t ipRes[2]={0,1};
1810 Int_t pdgres[2]={2212,321};
1811 AliKFParticle *lambda1520=d->ApplyVertexingKF(ipRes,2,pdgres,kFALSE,field,mass);
1812 Double_t probLa=TMath::Prob(lambda1520->GetChi2(),lambda1520->GetNDF());
c1234468 1813 if(probLa>0.1) resNumber[0]=1;
60eac73d 1814 //K* -> kpi
1815 mass[0]=0.8961;mass[1]=0.03;
1816 ipRes[0]=1;ipRes[1]=2;
1817 pdgres[1]=211;pdgres[0]=321;
1818 AliKFParticle *kstar=d->ApplyVertexingKF(ipRes,2,pdgres,kFALSE,field,mass);
1819 Double_t probKa=TMath::Prob(kstar->GetChi2(),kstar->GetNDF());
c1234468 1820 if(probKa>0.1) resNumber[1]=1;
60eac73d 1821
c1234468 1822 // Delta++
1823 mass[0]=1.232;mass[1]=0.15;
1824 ipRes[0]=0;ipRes[1]=2;
1825 pdgres[0]=2122;pdgres[1]=211;
1826 AliKFParticle *delta=d->ApplyVertexingKF(ipRes,2,pdgres,kFALSE,field,mass);
1827 Double_t probDe=TMath::Prob(delta->GetChi2(),delta->GetNDF());
1828 if(probDe>0.1) resNumber[2]=1;
1829
1830 return ;
029ed93a 1831
1832}
1833//---------------------------
60eac73d 1834void AliAnalysisTaskSELambdac::FillMassHists(AliAODEvent *aod,AliAODRecoDecayHF3Prong *part,
c1234468 1835 TClonesArray *arrayMC, AliRDHFCutsLctopKpi *cuts,Int_t *nSelectedloose,Int_t *nSelectedtight)
60eac73d 1836{
029ed93a 1837
60eac73d 1838 //if MC PID or no PID, unset PID
862f4ac0 1839 //if(!fRealPid) cuts->SetUsePID(kFALSE);
60eac73d 1840 Int_t selection=cuts->IsSelected(part,AliRDHFCuts::kCandidate,aod);
1841 if(selection>0){
c1234468 1842 nSelectedloose[0]=nSelectedloose[0]+1;
60eac73d 1843 Int_t iPtBin = -1;
1844 Double_t ptCand = part->Pt();
1845 Int_t index=0;
1846
1847 for(Int_t ibin=0;ibin<fNPtBins&&iPtBin<0&&ptCand>fArrayBinLimits[0]&&ptCand<fArrayBinLimits[fNPtBins];ibin++){
1848 if(ptCand<fArrayBinLimits[ibin+1])iPtBin=ibin;
029ed93a 1849 }
60eac73d 1850
1851 Float_t pdgCode=-2;
1852 Float_t pdgCode1=-1;
1853 Float_t pdgCode2=-1;
1854 Int_t labDp=-1;
1855 Float_t deltaPx=0.;
1856 Float_t deltaPy=0.;
1857 Float_t deltaPz=0.;
1858 Float_t truePt=0.;
1859 Float_t xDecay=0.;
1860 Float_t yDecay=0.;
1861 Float_t zDecay=0.;
273fb9a5 1862 // Bool_t IsInjected = -1;
32db66b5 1863 Bool_t IsLc = 0;
862f4ac0 1864 Bool_t IsLcfromLb = 0;
32db66b5 1865 Bool_t IsLcfromc = 0;
1866 Bool_t IsLcFromq = 0;
60eac73d 1867
1868 if(fReadMC){
273fb9a5 1869 // AliAODMCHeader *mcHeader2 = (AliAODMCHeader*)aod->GetList()->FindObject(AliAODMCHeader::StdBranchName());
862f4ac0 1870 AliVertexingHFUtils *util = new AliVertexingHFUtils();
273fb9a5 1871 // IsInjected = util->IsCandidateInjected(part,mcHeader2,arrayMC)?1:0;
32db66b5 1872
60eac73d 1873 labDp = MatchToMCLambdac(part,arrayMC);
1874 if(labDp>0){
862f4ac0 1875 IsLc = 1;
60eac73d 1876 AliAODMCParticle *partDp = (AliAODMCParticle*)arrayMC->At(labDp);
1877 AliAODMCParticle *dg0 = (AliAODMCParticle*)arrayMC->At(partDp->GetDaughter(0));
1878 AliAODMCParticle *dg1 = (AliAODMCParticle*)arrayMC->At(partDp->GetDaughter(1));
1879 deltaPx=partDp->Px()-part->Px();
1880 deltaPy=partDp->Py()-part->Py();
1881 deltaPz=partDp->Pz()-part->Pz();
1882 truePt=partDp->Pt();
1883 xDecay=dg0->Xv();
1884 yDecay=dg0->Yv();
1885 zDecay=dg0->Zv();
1886 pdgCode=TMath::Abs(partDp->GetPdgCode());
1887 pdgCode1=TMath::Abs(dg0->GetPdgCode());
1888 pdgCode2=TMath::Abs(dg1->GetPdgCode());
32db66b5 1889 Int_t pdgMom=util->CheckOrigin(arrayMC,partDp,kFALSE);
1890 if(pdgMom == 5) IsLcfromLb =1;
1891 if(pdgMom == 4) IsLcfromc =1;
1892 Int_t isThereaQuark=util->CheckOrigin(arrayMC,partDp,kTRUE);
1893 if(isThereaQuark>0) IsLcFromq = 1;
1894
1895
60eac73d 1896 }else{
1897 pdgCode=-1;
1898 }
32db66b5 1899 delete util;
029ed93a 1900 }
60eac73d 1901
1902 Double_t invMasspKpi=-1.;
1903 Double_t invMasspiKp=-1.;
1904 Double_t invMasspKpiLpi=-1.;
1905 Double_t invMasspiKpLpi=-1.;
1906 Double_t invMasspKpiKp=-1.;
1907 Double_t invMasspiKpKp=-1.;
c1234468 1908 Double_t invMasspiKpDk=-1.;
1909 Double_t invMasspKpiDk=-1.;
1910 Double_t invMasspiKp3Pr=-1.;
1911 Double_t invMasspKpi3Pr=-1.;
60eac73d 1912 Double_t field=aod->GetMagneticField();
1913 //apply MC PID
1914 if(fReadMC && fMCPid){
c1234468 1915 if(IspKpiMC(part,arrayMC)) invMasspKpi=part->InvMassLcpKpi();
1916 if(IspiKpMC(part,arrayMC)) invMasspiKp=part->InvMassLcpiKp();
029ed93a 1917 }
60eac73d 1918
1919 // apply realistic PID
1920 if(fRealPid){
c1234468 1921 if(selection==1 || selection==3) invMasspKpi=part->InvMassLcpKpi();
1922 if(selection>=2) invMasspiKp=part->InvMassLcpiKp();
1923 }
60eac73d 1924 //apply PID using resonances
1925 if (fResPid && fRealPid) {
c1234468 1926 Int_t ispKpi[3]={0,0,0};
1927 IspKpiResonant(part,field,ispKpi);
1928 Int_t ispiKp[3]={0,0,0};
1929 IspiKpResonant(part,field,ispiKp);
60eac73d 1930 if (selection==3 || selection==1) {
c1234468 1931 if(ispKpi[0]==1){
1932 invMasspKpiLpi=part->InvMassLcpKpi();
1933 }
1934 if(ispKpi[1]==1){
1935 invMasspKpiKp=part->InvMassLcpKpi();
1936 }
1937 if(ispKpi[2]==1){
1938 invMasspKpiDk=part->InvMassLcpKpi();
1939 }
1940 if(ispKpi[2]==0 && ispKpi[1]==0 && ispKpi[0]==0){
1941 invMasspKpi3Pr=part->InvMassLcpKpi();
1942 }
60eac73d 1943 }
1944 if(selection>=2) {
c1234468 1945 if(ispiKp[0]==1){
1946 invMasspiKpLpi=part->InvMassLcpiKp();
1947 }
1948 if(ispiKp[1]==1){
1949 invMasspiKpKp=part->InvMassLcpiKp();
1950 }
1951 if(ispiKp[2]==1){
1952 invMasspiKpDk=part->InvMassLcpiKp();
1953 }
1954 if(ispiKp[2]==0 && ispiKp[1]==0 && ispiKp[0]==0){
1955 invMasspiKp3Pr=part->InvMassLcpiKp();
1956 }
60eac73d 1957 }
c1234468 1958
1959 }
029ed93a 1960
029ed93a 1961
60eac73d 1962 if(invMasspiKp<0. && invMasspKpi<0.) return;
029ed93a 1963
60eac73d 1964 Int_t passTightCuts=0;
c1234468 1965 if(fAnalysis) {
862f4ac0 1966 passTightCuts=fRDCutsAnalysis->IsSelected(part,AliRDHFCuts::kCandidate,aod);
1967 if(fUseKF){
1968 Int_t pdgs[3]={0,0,0};
1969 if(invMasspKpi>0.){
1970 pdgs[0]=2212;pdgs[1]=321;pdgs[2]=211;
1971 if(!VertexingKF(part,pdgs,field)) {
1972 invMasspKpi=-1.;
1973 invMasspKpi3Pr=-1.;
1974 invMasspKpiDk=-1.;
1975 invMasspKpiLpi=-1.;
1976 invMasspKpiKp=-1.;
1977 }
1978 }
1979 if(invMasspiKp>0.){
1980 pdgs[0]=211;pdgs[1]=321;pdgs[2]=2212;
1981 if(!VertexingKF(part,pdgs,field)) {
1982 invMasspiKp=-1.;
1983 invMasspiKp3Pr=-1.;
1984 invMasspiKpDk=-1.;
1985 invMasspiKpLpi=-1.;
1986 invMasspiKpKp=-1.;
1987 }
1988 }
c1234468 1989 }
862f4ac0 1990 if(passTightCuts>0) nSelectedtight[0]=nSelectedtight[0]+1;
1991 }
1992 // Eta and y plots:
1993 fhEta3ProngProd->Fill(part->Pt(),part->Eta());
1994 fhRap3ProngProd->Fill(part->Pt(),part->Y(4122));
1995 if(passTightCuts>0){
1996 fhEta3ProngAn->Fill(part->Pt(),part->Eta());
1997 fhRap3ProngAn->Fill(part->Pt(),part->Y(4122));
1998 }
60eac73d 1999 Float_t tmp[24];
2000 if (fFillNtuple) {
2001 tmp[0]=pdgCode;
2002 tmp[1]=deltaPx;
2003 tmp[2]=deltaPy;
2004 tmp[3]=deltaPz;
2005 tmp[4]=truePt;
2006 tmp[5]=xDecay;
2007 tmp[6]=yDecay;
2008 tmp[7]=zDecay;
2009 if(pdgCode1==2212) {tmp[8]=part->PtProng(0);}else{tmp[8]=0.;}
2010 if(pdgCode1==211) {tmp[10]=part->PtProng(0);}else{tmp[10]=0.;}
2011 tmp[9]=part->PtProng(1);
2012 if(pdgCode2==211) {tmp[10]=part->PtProng(2);}else{tmp[10]=0.;}
2013 tmp[11]=part->Pt();
2014 tmp[12]=part->CosPointingAngle();
2015 tmp[13]=part->DecayLength();
2016 tmp[14]=part->Xv();
2017 tmp[15]=part->Yv();
2018 tmp[16]=part->Zv();
2019 if(invMasspiKp>0.) tmp[17]=invMasspiKp;
2020 if(invMasspKpi>0.) tmp[17]=invMasspKpi;
2021 tmp[18]=part->GetSigmaVert();
2022 tmp[19]=part->Getd0Prong(0);
2023 tmp[20]=part->Getd0Prong(1);
2024 tmp[21]=part->Getd0Prong(2);
2025 tmp[22]=part->GetDCA();
2026 tmp[23]=part->Prodd0d0();
2027 fNtupleLambdac->Fill(tmp);
2028 PostData(7,fNtupleLambdac);
2029 }
029ed93a 2030
c1234468 2031 if(part->Pt()>3.&& part->Pt()<=6.){
029ed93a 2032 if(invMasspiKp>0. && invMasspKpi>0.){
60eac73d 2033 if(invMasspiKp>0.) fhMassPtGreater3->Fill(invMasspiKp,0.5);
2034 if(invMasspKpi>0.) fhMassPtGreater3->Fill(invMasspKpi,0.5);
2035 }else{
2036 if(invMasspiKp>0.) fhMassPtGreater3->Fill(invMasspiKp);
2037 if(invMasspKpi>0.) fhMassPtGreater3->Fill(invMasspKpi);
2038 }
2039 if(invMasspiKpLpi>0. && invMasspKpiLpi>0.){
2040 if(invMasspiKpLpi>0.) fhMassPtGreater3Lpi->Fill(invMasspiKpLpi,0.5);
2041 if(invMasspKpiLpi>0.) fhMassPtGreater3Lpi->Fill(invMasspKpiLpi,0.5);
2042 }else{
2043 if(invMasspiKpLpi>0.) fhMassPtGreater3Lpi->Fill(invMasspiKpLpi);
2044 if(invMasspKpiLpi>0.) fhMassPtGreater3Lpi->Fill(invMasspKpiLpi);
2045 }
2046 if(invMasspiKpKp>0. && invMasspKpiKp>0.){
2047 if(invMasspiKpKp>0.) fhMassPtGreater3Kp->Fill(invMasspiKpKp,0.5);
2048 if(invMasspKpiKp>0.) fhMassPtGreater3Kp->Fill(invMasspKpiKp,0.5);
029ed93a 2049 }else{
60eac73d 2050 if(invMasspiKpKp>0.) fhMassPtGreater3Kp->Fill(invMasspiKpKp);
2051 if(invMasspKpiKp>0.) fhMassPtGreater3Kp->Fill(invMasspKpiKp);
2052 }
c1234468 2053 if(invMasspiKpDk>0. && invMasspKpiDk>0.){
2054 if(invMasspiKpDk>0.) fhMassPtGreater3Dk->Fill(invMasspiKpDk,0.5);
2055 if(invMasspKpiDk>0.) fhMassPtGreater3Dk->Fill(invMasspKpiDk,0.5);
2056 }else{
2057 if(invMasspiKpDk>0.) fhMassPtGreater3Dk->Fill(invMasspiKpDk);
2058 if(invMasspKpiDk>0.) fhMassPtGreater3Dk->Fill(invMasspKpiDk);
2059 }
2060 if(invMasspiKp3Pr>0. && invMasspKpi3Pr>0.){
2061 if(invMasspiKp3Pr>0.) fhMassPtGreater33Pr->Fill(invMasspiKp3Pr,0.5);
2062 if(invMasspKpi3Pr>0.) fhMassPtGreater33Pr->Fill(invMasspKpi3Pr,0.5);
2063 }else{
2064 if(invMasspiKp3Pr>0.) fhMassPtGreater33Pr->Fill(invMasspiKp3Pr);
2065 if(invMasspKpi3Pr>0.) fhMassPtGreater33Pr->Fill(invMasspKpi3Pr);
2066 }
2067
60eac73d 2068 if(passTightCuts>0){
2069 if(invMasspiKp>0. && invMasspKpi>0.){
2070 if(invMasspiKp>0.) fhMassPtGreater3TC->Fill(invMasspiKp,0.5);
2071 if(invMasspKpi>0.) fhMassPtGreater3TC->Fill(invMasspKpi,0.5);
2072 }else{
2073 if(invMasspiKp>0.) fhMassPtGreater3TC->Fill(invMasspiKp);
2074 if(invMasspKpi>0.) fhMassPtGreater3TC->Fill(invMasspKpi);
2075 }
2076 if(invMasspiKpLpi>0. && invMasspKpiLpi>0.){
2077 if(invMasspiKpLpi>0.) fhMassPtGreater3LpiTC->Fill(invMasspiKpLpi,0.5);
2078 if(invMasspKpiLpi>0.) fhMassPtGreater3LpiTC->Fill(invMasspKpiLpi,0.5);
2079 }else{
2080 if(invMasspiKpLpi>0.) fhMassPtGreater3LpiTC->Fill(invMasspiKpLpi);
2081 if(invMasspKpiLpi>0.) fhMassPtGreater3LpiTC->Fill(invMasspKpiLpi);
2082 }
2083 if(invMasspiKpKp>0. && invMasspKpiKp>0.){
2084 if(invMasspiKpKp>0.) fhMassPtGreater3KpTC->Fill(invMasspiKpKp,0.5);
2085 if(invMasspKpiKp>0.) fhMassPtGreater3KpTC->Fill(invMasspKpiKp,0.5);
2086 }else{
2087 if(invMasspiKpKp>0.) fhMassPtGreater3KpTC->Fill(invMasspiKpKp);
2088 if(invMasspKpiKp>0.) fhMassPtGreater3KpTC->Fill(invMasspKpiKp);
2089 }
c1234468 2090
2091 if(invMasspiKpDk>0. && invMasspKpiDk>0.){
2092 if(invMasspiKpDk>0.) fhMassPtGreater3DkTC->Fill(invMasspiKpDk,0.5);
2093 if(invMasspKpiDk>0.) fhMassPtGreater3DkTC->Fill(invMasspKpiDk,0.5);
2094 }else{
2095 if(invMasspiKpDk>0.) fhMassPtGreater3DkTC->Fill(invMasspiKpDk);
2096 if(invMasspKpiDk>0.) fhMassPtGreater3DkTC->Fill(invMasspKpiDk);
2097 }
2098 if(invMasspiKp3Pr>0. && invMasspKpi3Pr>0.){
2099 if(invMasspiKp3Pr>0.) fhMassPtGreater33PrTC->Fill(invMasspiKp3Pr,0.5);
2100 if(invMasspKpi3Pr>0.) fhMassPtGreater33PrTC->Fill(invMasspKpi3Pr,0.5);
2101 }else{
2102 if(invMasspiKp3Pr>0.) fhMassPtGreater33PrTC->Fill(invMasspiKp3Pr);
2103 if(invMasspKpi3Pr>0.) fhMassPtGreater33PrTC->Fill(invMasspKpi3Pr);
029ed93a 2104 }
c1234468 2105
2106 }
029ed93a 2107 }
c1234468 2108 if(part->Pt()>2.&& part->Pt()<=6.){
029ed93a 2109 if(invMasspiKp>0. && invMasspKpi>0.){
60eac73d 2110 if(invMasspiKp>0.) fhMassPtGreater2->Fill(invMasspiKp,0.5);
2111 if(invMasspKpi>0.) fhMassPtGreater2->Fill(invMasspKpi,0.5);
2112 }else{
2113 if(invMasspiKp>0.) fhMassPtGreater2->Fill(invMasspiKp);
2114 if(invMasspKpi>0.) fhMassPtGreater2->Fill(invMasspKpi);
2115 }
2116 if(invMasspiKpLpi>0. && invMasspKpiLpi>0.){
2117 if(invMasspiKpLpi>0.) fhMassPtGreater2Lpi->Fill(invMasspiKpLpi,0.5);
2118 if(invMasspKpiLpi>0.) fhMassPtGreater2Lpi->Fill(invMasspKpiLpi,0.5);
2119 }else{
2120 if(invMasspiKpLpi>0.) fhMassPtGreater2Lpi->Fill(invMasspiKpLpi);
2121 if(invMasspKpiLpi>0.) fhMassPtGreater2Lpi->Fill(invMasspKpiLpi);
2122 }
2123 if(invMasspiKpKp>0. && invMasspKpiKp>0.){
2124 if(invMasspiKpKp>0.) fhMassPtGreater2Kp->Fill(invMasspiKpKp,0.5);
2125 if(invMasspKpiKp>0.) fhMassPtGreater2Kp->Fill(invMasspKpiKp,0.5);
029ed93a 2126 }else{
60eac73d 2127 if(invMasspiKpKp>0.) fhMassPtGreater2Kp->Fill(invMasspiKpKp);
2128 if(invMasspKpiKp>0.) fhMassPtGreater2Kp->Fill(invMasspKpiKp);
2129 }
c1234468 2130 if(invMasspiKpDk>0. && invMasspKpiDk>0.){
2131 if(invMasspiKpDk>0.) fhMassPtGreater2Dk->Fill(invMasspiKpDk,0.5);
2132 if(invMasspKpiDk>0.) fhMassPtGreater2Dk->Fill(invMasspKpiDk,0.5);
2133 }else{
2134 if(invMasspiKpDk>0.) fhMassPtGreater2Dk->Fill(invMasspiKpDk);
2135 if(invMasspKpiDk>0.) fhMassPtGreater2Dk->Fill(invMasspKpiDk);
2136 }
2137 if(invMasspiKp3Pr>0. && invMasspKpi3Pr>0.){
2138 if(invMasspiKp3Pr>0.) fhMassPtGreater23Pr->Fill(invMasspiKp3Pr,0.5);
2139 if(invMasspKpi3Pr>0.) fhMassPtGreater23Pr->Fill(invMasspKpi3Pr,0.5);
2140 }else{
2141 if(invMasspiKp3Pr>0.) fhMassPtGreater23Pr->Fill(invMasspiKp3Pr);
2142 if(invMasspKpi3Pr>0.) fhMassPtGreater23Pr->Fill(invMasspKpi3Pr);
2143 }
2144
60eac73d 2145 if(passTightCuts>0){
2146 if(invMasspiKp>0. && invMasspKpi>0.){
2147 if(invMasspiKp>0.) fhMassPtGreater2TC->Fill(invMasspiKp,0.5);
2148 if(invMasspKpi>0.) fhMassPtGreater2TC->Fill(invMasspKpi,0.5);
2149 }else{
2150 if(invMasspiKp>0.) fhMassPtGreater2TC->Fill(invMasspiKp);
2151 if(invMasspKpi>0.) fhMassPtGreater2TC->Fill(invMasspKpi);
2152 }
2153 if(invMasspiKpLpi>0. && invMasspKpiLpi>0.){
2154 if(invMasspiKpLpi>0.) fhMassPtGreater2LpiTC->Fill(invMasspiKpLpi,0.5);
2155 if(invMasspKpiLpi>0.) fhMassPtGreater2LpiTC->Fill(invMasspKpiLpi,0.5);
2156 }else{
2157 if(invMasspiKpLpi>0.) fhMassPtGreater2LpiTC->Fill(invMasspiKpLpi);
2158 if(invMasspKpiLpi>0.) fhMassPtGreater2LpiTC->Fill(invMasspKpiLpi);
2159 }
2160 if(invMasspiKpKp>0. && invMasspKpiKp>0.){
2161 if(invMasspiKpKp>0.) fhMassPtGreater2KpTC->Fill(invMasspiKpKp,0.5);
2162 if(invMasspKpiKp>0.) fhMassPtGreater2KpTC->Fill(invMasspKpiKp,0.5);
2163 }else{
2164 if(invMasspiKpKp>0.) fhMassPtGreater2KpTC->Fill(invMasspiKpKp);
2165 if(invMasspKpiKp>0.) fhMassPtGreater2KpTC->Fill(invMasspKpiKp);
2166 }
c1234468 2167 if(invMasspiKpDk>0. && invMasspKpiDk>0.){
2168 if(invMasspiKpDk>0.) fhMassPtGreater2DkTC->Fill(invMasspiKpDk,0.5);
2169 if(invMasspKpiDk>0.) fhMassPtGreater2DkTC->Fill(invMasspKpiDk,0.5);
2170 }else{
2171 if(invMasspiKpDk>0.) fhMassPtGreater2DkTC->Fill(invMasspiKpDk);
2172 if(invMasspKpiDk>0.) fhMassPtGreater2DkTC->Fill(invMasspKpiDk);
2173 }
2174 if(invMasspiKp3Pr>0. && invMasspKpi3Pr>0.){
2175 if(invMasspiKp3Pr>0.) fhMassPtGreater23PrTC->Fill(invMasspiKp3Pr,0.5);
2176 if(invMasspKpi3Pr>0.) fhMassPtGreater23PrTC->Fill(invMasspKpi3Pr,0.5);
2177 }else{
2178 if(invMasspiKp3Pr>0.) fhMassPtGreater23PrTC->Fill(invMasspiKp3Pr);
2179 if(invMasspKpi3Pr>0.) fhMassPtGreater23PrTC->Fill(invMasspKpi3Pr);
029ed93a 2180 }
c1234468 2181
029ed93a 2182 }
c1234468 2183 }
029ed93a 2184
60eac73d 2185 if(iPtBin>=0){
2186 index=GetHistoIndex(iPtBin);
2187 if(invMasspiKp>0. && invMasspKpi>0.){
2188 if(invMasspiKp>0.) fMassHist[index]->Fill(invMasspiKp,0.5);
2189 if(invMasspKpi>0.) fMassHist[index]->Fill(invMasspKpi,0.5);
029ed93a 2190 }else{
60eac73d 2191 if(invMasspiKp>0.) fMassHist[index]->Fill(invMasspiKp);
2192 if(invMasspKpi>0.) fMassHist[index]->Fill(invMasspKpi);
029ed93a 2193 }
60eac73d 2194 if(invMasspiKpLpi>0. && invMasspKpiLpi>0.){
2195 if(invMasspiKpLpi>0.) fMassHistLpi[index]->Fill(invMasspiKpLpi,0.5);
2196 if(invMasspKpiLpi>0.) fMassHistLpi[index]->Fill(invMasspKpiLpi,0.5);
2197 }else{
2198 if(invMasspiKpLpi>0.) fMassHistLpi[index]->Fill(invMasspiKpLpi);
2199 if(invMasspKpiLpi>0.) fMassHistLpi[index]->Fill(invMasspKpiLpi);
2200 }
2201 if(invMasspiKpKp>0. && invMasspKpiKp>0.){
2202 if(invMasspiKpKp>0.) fMassHistKp[index]->Fill(invMasspiKpKp,0.5);
2203 if(invMasspKpiKp>0.) fMassHistKp[index]->Fill(invMasspKpiKp,0.5);
2204 }else{
2205 if(invMasspiKpKp>0.) fMassHistKp[index]->Fill(invMasspiKpKp);
2206 if(invMasspKpiKp>0.) fMassHistKp[index]->Fill(invMasspKpiKp);
2207 }
c1234468 2208 if(invMasspiKpDk>0. && invMasspKpiDk>0.){
2209 if(invMasspiKpDk>0.) fMassHistDk[index]->Fill(invMasspiKpDk,0.5);
2210 if(invMasspKpiDk>0.) fMassHistDk[index]->Fill(invMasspKpiDk,0.5);
2211 }else{
2212 if(invMasspiKpDk>0.) fMassHistDk[index]->Fill(invMasspiKpDk);
2213 if(invMasspKpiDk>0.) fMassHistDk[index]->Fill(invMasspKpiDk);
2214 }
2215 if(invMasspiKp3Pr>0. && invMasspKpi3Pr>0.){
2216 if(invMasspiKp3Pr>0.) fMassHist3Pr[index]->Fill(invMasspiKp3Pr,0.5);
2217 if(invMasspKpi3Pr>0.) fMassHist3Pr[index]->Fill(invMasspKpi3Pr,0.5);
2218 }else{
2219 if(invMasspiKp3Pr>0.) fMassHist3Pr[index]->Fill(invMasspiKp3Pr);
2220 if(invMasspKpi3Pr>0.) fMassHist3Pr[index]->Fill(invMasspKpi3Pr);
2221 }
2222
60eac73d 2223 if(passTightCuts>0){
2224 if(invMasspiKp>0. && invMasspKpi>0. && passTightCuts==3){
2225 if(invMasspiKp>0.) fMassHistTC[index]->Fill(invMasspiKp,0.5);
2226 if(invMasspKpi>0.) fMassHistTC[index]->Fill(invMasspKpi,0.5);
2227 }else{
2228 if(invMasspiKp>0. && passTightCuts==2) fMassHistTC[index]->Fill(invMasspiKp);
2229 if(invMasspKpi>0. && passTightCuts==1) fMassHistTC[index]->Fill(invMasspKpi);
2230 }
2231 if(invMasspiKpLpi>0. && invMasspKpiLpi>0. && passTightCuts==3){
2232 if(invMasspiKpLpi>0.) fMassHistLpiTC[index]->Fill(invMasspiKpLpi,0.5);
2233 if(invMasspKpiLpi>0.) fMassHistLpiTC[index]->Fill(invMasspKpiLpi,0.5);
2234 }else{
2235 if(invMasspiKpLpi>0. && passTightCuts==2) fMassHistLpiTC[index]->Fill(invMasspiKpLpi);
2236 if(invMasspKpiLpi>0.&& passTightCuts==1) fMassHistLpiTC[index]->Fill(invMasspKpiLpi);
2237 }
2238 if(invMasspiKpKp>0. && invMasspKpiKp>0. && passTightCuts==3){
2239 if(invMasspiKpKp>0.) fMassHistKpTC[index]->Fill(invMasspiKpKp,0.5);
2240 if(invMasspKpiKp>0.) fMassHistKpTC[index]->Fill(invMasspKpiKp,0.5);
2241 }else{
2242 if(invMasspiKpKp>0. && passTightCuts==2) fMassHistKpTC[index]->Fill(invMasspiKpKp);
2243 if(invMasspKpiKp>0.&& passTightCuts==1) fMassHistKpTC[index]->Fill(invMasspKpiKp);
2244 }
c1234468 2245 if(invMasspiKpDk>0. && invMasspKpiDk>0. && passTightCuts==3){
2246 if(invMasspiKpDk>0.) fMassHistDkTC[index]->Fill(invMasspiKpDk,0.5);
2247 if(invMasspKpiDk>0.) fMassHistDkTC[index]->Fill(invMasspKpiDk,0.5);
2248 }else{
2249 if(invMasspiKpDk>0. && passTightCuts==2) fMassHistDkTC[index]->Fill(invMasspiKpDk);
2250 if(invMasspKpiDk>0.&& passTightCuts==1) fMassHistDkTC[index]->Fill(invMasspKpiDk);
2251 }
2252 if(invMasspiKp3Pr>0. && invMasspKpi3Pr>0. && passTightCuts==3){
2253 if(invMasspiKp3Pr>0.) fMassHist3PrTC[index]->Fill(invMasspiKp3Pr,0.5);
2254 if(invMasspKpi3Pr>0.) fMassHist3PrTC[index]->Fill(invMasspKpi3Pr,0.5);
2255 }else{
2256 if(invMasspiKp3Pr>0. && passTightCuts==2) fMassHist3PrTC[index]->Fill(invMasspiKp3Pr);
2257 if(invMasspKpi3Pr>0.&& passTightCuts==1) fMassHist3PrTC[index]->Fill(invMasspKpi3Pr);
2258 }
2259
60eac73d 2260 }
c1234468 2261
60eac73d 2262 if(fReadMC){
2263 if(labDp>0) {
2264 index=GetSignalHistoIndex(iPtBin);
2265 if(invMasspiKp>0. && invMasspKpi>0.){
2266 if(invMasspiKp>0.) fMassHist[index]->Fill(invMasspiKp,0.5);
2267 if(invMasspKpi>0.) fMassHist[index]->Fill(invMasspKpi,0.5);
2268 }else{
2269 if(invMasspiKp>0.) fMassHist[index]->Fill(invMasspiKp);
2270 if(invMasspKpi>0.) fMassHist[index]->Fill(invMasspKpi);
2271 }
2272 if(invMasspiKpLpi>0. && invMasspKpiLpi>0.){
2273 if(invMasspiKpLpi>0.) fMassHistLpi[index]->Fill(invMasspiKpLpi,0.5);
2274 if(invMasspKpiLpi>0.) fMassHistLpi[index]->Fill(invMasspKpiLpi,0.5);
2275 }else{
2276 if(invMasspiKpLpi>0.) fMassHistLpi[index]->Fill(invMasspiKpLpi);
2277 if(invMasspKpiLpi>0.) fMassHistLpi[index]->Fill(invMasspKpiLpi);
2278 }
2279 if(invMasspiKpKp>0. && invMasspKpiKp>0.){
2280 if(invMasspiKpKp>0.) fMassHistKp[index]->Fill(invMasspiKpKp,0.5);
2281 if(invMasspKpiKp>0.) fMassHistKp[index]->Fill(invMasspKpiKp,0.5);
2282 }else{
2283 if(invMasspiKpKp>0.) fMassHistKp[index]->Fill(invMasspiKpKp);
2284 if(invMasspKpiKp>0.) fMassHistKp[index]->Fill(invMasspKpiKp);
2285 }
c1234468 2286 if(invMasspiKpDk>0. && invMasspKpiDk>0.){
2287 if(invMasspiKpDk>0.) fMassHistDk[index]->Fill(invMasspiKpDk,0.5);
2288 if(invMasspKpiDk>0.) fMassHistDk[index]->Fill(invMasspKpiDk,0.5);
2289 }else{
2290 if(invMasspiKpDk>0.) fMassHistDk[index]->Fill(invMasspiKpDk);
2291 if(invMasspKpiDk>0.) fMassHistDk[index]->Fill(invMasspKpiDk);
2292 }
2293 if(invMasspiKp3Pr>0. && invMasspKpi3Pr>0.){
2294 if(invMasspiKp3Pr>0.) fMassHist3Pr[index]->Fill(invMasspiKp3Pr,0.5);
2295 if(invMasspKpi3Pr>0.) fMassHist3Pr[index]->Fill(invMasspKpi3Pr,0.5);
2296 }else{
2297 if(invMasspiKp3Pr>0.) fMassHist3Pr[index]->Fill(invMasspiKp3Pr);
2298 if(invMasspKpi3Pr>0.) fMassHistDk[index]->Fill(invMasspKpi3Pr);
2299 }
2300
60eac73d 2301 if(passTightCuts>0){
2302 if(invMasspiKp>0. && invMasspKpi>0. && passTightCuts==3){
2303 if(invMasspiKp>0.) fMassHistTC[index]->Fill(invMasspiKp,0.5);
2304 if(invMasspKpi>0.) fMassHistTC[index]->Fill(invMasspKpi,0.5);
2305 }else{
2306 if(invMasspiKp>0. && passTightCuts==2) fMassHistTC[index]->Fill(invMasspiKp);
2307 if(invMasspKpi>0.&& passTightCuts==1) fMassHistTC[index]->Fill(invMasspKpi);
2308 }
2309 if(invMasspiKpLpi>0. && invMasspKpiLpi>0. && passTightCuts==3){
2310 if(invMasspiKpLpi>0.) fMassHistLpiTC[index]->Fill(invMasspiKpLpi,0.5);
2311 if(invMasspKpiLpi>0.) fMassHistLpiTC[index]->Fill(invMasspKpiLpi,0.5);
2312 }else{
2313 if(invMasspiKpLpi>0. && passTightCuts==2) fMassHistLpiTC[index]->Fill(invMasspiKpLpi);
2314 if(invMasspKpiLpi>0.&& passTightCuts==1) fMassHistLpiTC[index]->Fill(invMasspKpiLpi);
2315 }
2316 if(invMasspiKpKp>0. && invMasspKpiKp>0. && passTightCuts==3){
2317 if(invMasspiKpKp>0.) fMassHistKpTC[index]->Fill(invMasspiKpKp,0.5);
2318 if(invMasspKpiKp>0.) fMassHistKpTC[index]->Fill(invMasspKpiKp,0.5);
2319 }else{
2320 if(invMasspiKpKp>0. && passTightCuts==2) fMassHistKpTC[index]->Fill(invMasspiKpKp);
2321 if(invMasspKpiKp>0.&& passTightCuts==1) fMassHistKpTC[index]->Fill(invMasspKpiKp);
2322 }
c1234468 2323 if(invMasspiKpDk>0. && invMasspKpiDk>0. && passTightCuts==3){
2324 if(invMasspiKpDk>0.) fMassHistDkTC[index]->Fill(invMasspiKpDk,0.5);
2325 if(invMasspKpiDk>0.) fMassHistDkTC[index]->Fill(invMasspKpiDk,0.5);
2326 }else{
2327 if(invMasspiKpDk>0. && passTightCuts==2) fMassHistDkTC[index]->Fill(invMasspiKpDk);
2328 if(invMasspKpiDk>0.&& passTightCuts==1) fMassHistDkTC[index]->Fill(invMasspKpiDk);
2329 }
2330 if(invMasspiKp3Pr>0. && invMasspKpi3Pr>0. && passTightCuts==3){
2331 if(invMasspiKp3Pr>0.) fMassHist3PrTC[index]->Fill(invMasspiKp3Pr,0.5);
2332 if(invMasspKpi3Pr>0.) fMassHist3PrTC[index]->Fill(invMasspKpi3Pr,0.5);
2333 }else{
2334 if(invMasspiKp3Pr>0. && passTightCuts==2) fMassHist3PrTC[index]->Fill(invMasspiKp3Pr);
2335 if(invMasspKpi3Pr>0.&& passTightCuts==1) fMassHist3PrTC[index]->Fill(invMasspKpi3Pr);
2336 }
60eac73d 2337 }
32db66b5 2338
2339 if(IsLc && IsLcfromLb){
2340 index=GetLbHistoIndex(iPtBin);
2341 if(invMasspiKp>0. && invMasspKpi>0.){
2342 if(invMasspiKp>0.) fMassHist[index]->Fill(invMasspiKp,0.5);
2343 if(invMasspKpi>0.) fMassHist[index]->Fill(invMasspKpi,0.5);
2344 }else{
2345 if(invMasspiKp>0.) fMassHist[index]->Fill(invMasspiKp);
2346 if(invMasspKpi>0.) fMassHist[index]->Fill(invMasspKpi);
2347 }
2348 if(passTightCuts>0){
2349 if(invMasspiKp>0. && invMasspKpi>0. && passTightCuts==3){
2350 if(invMasspiKp>0.) fMassHistTC[index]->Fill(invMasspiKp,0.5);
2351 if(invMasspKpi>0.) fMassHistTC[index]->Fill(invMasspKpi,0.5);
2352 }else{
2353 if(invMasspiKp>0. && passTightCuts==2) fMassHistTC[index]->Fill(invMasspiKp);
2354 if(invMasspKpi>0.&& passTightCuts==1) fMassHistTC[index]->Fill(invMasspKpi);
2355 }
2356 }
2357 }
2358 if(IsLc && !IsLcfromLb && IsLcfromc) {
2359 index=GetcOnlyHistoIndex(iPtBin);
2360 if(invMasspiKp>0. && invMasspKpi>0.){
2361 if(invMasspiKp>0.) fMassHist[index]->Fill(invMasspiKp,0.5);
2362 if(invMasspKpi>0.) fMassHist[index]->Fill(invMasspKpi,0.5);
2363 }else{
2364 if(invMasspiKp>0.) fMassHist[index]->Fill(invMasspiKp);
2365 if(invMasspKpi>0.) fMassHist[index]->Fill(invMasspKpi);
2366 }
2367 if(passTightCuts>0){
2368 if(invMasspiKp>0. && invMasspKpi>0. && passTightCuts==3){
2369 if(invMasspiKp>0.) fMassHistTC[index]->Fill(invMasspiKp,0.5);
2370 if(invMasspKpi>0.) fMassHistTC[index]->Fill(invMasspKpi,0.5);
2371 }else{
2372 if(invMasspiKp>0. && passTightCuts==2) fMassHistTC[index]->Fill(invMasspiKp);
2373 if(invMasspKpi>0.&& passTightCuts==1) fMassHistTC[index]->Fill(invMasspKpi);
2374 }
2375 }
2376
2377 }
2378
2379 if(IsLc && !IsLcFromq) {
2380 index=GetNoQuarkHistoIndex(iPtBin);
2381 if(invMasspiKp>0. && invMasspKpi>0.){
2382 if(invMasspiKp>0.) fMassHist[index]->Fill(invMasspiKp,0.5);
2383 if(invMasspKpi>0.) fMassHist[index]->Fill(invMasspKpi,0.5);
2384 }else{
2385 if(invMasspiKp>0.) fMassHist[index]->Fill(invMasspiKp);
2386 if(invMasspKpi>0.) fMassHist[index]->Fill(invMasspKpi);
2387 }
2388 if(passTightCuts>0){
2389 if(invMasspiKp>0. && invMasspKpi>0. && passTightCuts==3){
2390 if(invMasspiKp>0.) fMassHistTC[index]->Fill(invMasspiKp,0.5);
2391 if(invMasspKpi>0.) fMassHistTC[index]->Fill(invMasspKpi,0.5);
2392 }else{
2393 if(invMasspiKp>0. && passTightCuts==2) fMassHistTC[index]->Fill(invMasspiKp);
2394 if(invMasspKpi>0.&& passTightCuts==1) fMassHistTC[index]->Fill(invMasspKpi);
2395 }
2396 }
2397
2398 }
029ed93a 2399
60eac73d 2400 }else{
2401 index=GetBackgroundHistoIndex(iPtBin);
2402 if(invMasspiKp>0. && invMasspKpi>0.){
2403 fMassHist[index]->Fill(invMasspiKp,0.5);
2404 fMassHist[index]->Fill(invMasspKpi,0.5);
2405 }else{
2406 if(invMasspiKp>0.) fMassHist[index]->Fill(invMasspiKp);
2407 if(invMasspKpi>0.) fMassHist[index]->Fill(invMasspKpi);
2408 }
2409 if(invMasspiKpLpi>0. && invMasspKpiLpi>0.){
2410 if(invMasspiKpLpi>0.) fMassHistLpi[index]->Fill(invMasspiKpLpi,0.5);
2411 if(invMasspKpiLpi>0.) fMassHistLpi[index]->Fill(invMasspKpiLpi,0.5);
2412 }else{
2413 if(invMasspiKpLpi>0.) fMassHistLpi[index]->Fill(invMasspiKpLpi);
2414 if(invMasspKpiLpi>0.) fMassHistLpi[index]->Fill(invMasspKpiLpi);
2415 }
2416 if(invMasspiKpKp>0. && invMasspKpiKp>0.){
2417 if(invMasspiKpKp>0.) fMassHistKp[index]->Fill(invMasspiKpKp,0.5);
2418 if(invMasspKpiKp>0.) fMassHistKp[index]->Fill(invMasspKpiKp,0.5);
2419 }else{
2420 if(invMasspiKpKp>0.) fMassHistKp[index]->Fill(invMasspiKpKp);
2421 if(invMasspKpiKp>0.) fMassHistKp[index]->Fill(invMasspKpiKp);
2422 }
c1234468 2423 if(invMasspiKpDk>0. && invMasspKpiDk>0.){
2424 if(invMasspiKpDk>0.) fMassHistDk[index]->Fill(invMasspiKpDk,0.5);
2425 if(invMasspKpiDk>0.) fMassHistDk[index]->Fill(invMasspKpiDk,0.5);
2426 }else{
2427 if(invMasspiKpDk>0.) fMassHistDk[index]->Fill(invMasspiKpDk);
2428 if(invMasspKpiDk>0.) fMassHistDk[index]->Fill(invMasspKpiDk);
2429 }
2430 if(invMasspiKp3Pr>0. && invMasspKpi3Pr>0.){
2431 if(invMasspiKp3Pr>0.) fMassHist3Pr[index]->Fill(invMasspiKp3Pr,0.5);
2432 if(invMasspKpi3Pr>0.) fMassHist3Pr[index]->Fill(invMasspKpi3Pr,0.5);
2433 }else{
2434 if(invMasspiKp3Pr>0.) fMassHist3Pr[index]->Fill(invMasspiKp3Pr);
2435 if(invMasspKpi3Pr>0.) fMassHistDk[index]->Fill(invMasspKpi3Pr);
2436 }
60eac73d 2437 if(invMasspiKp>0. && invMasspKpi>0. && passTightCuts==3){
2438 fMassHistTC[index]->Fill(invMasspiKp,0.5);
2439 fMassHistTC[index]->Fill(invMasspKpi,0.5);
2440 }else{
2441 if(invMasspiKp>0. && passTightCuts==2) fMassHistTC[index]->Fill(invMasspiKp);
2442 if(invMasspKpi>0. && passTightCuts==1) fMassHistTC[index]->Fill(invMasspKpi);
2443 }
2444 if(invMasspiKpLpi>0. && invMasspKpiLpi>0. && passTightCuts==3){
2445 if(invMasspiKpLpi>0.) fMassHistLpiTC[index]->Fill(invMasspiKpLpi,0.5);
2446 if(invMasspKpiLpi>0.) fMassHistLpiTC[index]->Fill(invMasspKpiLpi,0.5);
2447 }else{
2448 if(invMasspiKpLpi>0. && passTightCuts==2) fMassHistLpiTC[index]->Fill(invMasspiKpLpi);
2449 if(invMasspKpiLpi>0.&& passTightCuts==1) fMassHistLpiTC[index]->Fill(invMasspKpiLpi);
2450 }
2451 if(invMasspiKpKp>0. && invMasspKpiKp>0. && passTightCuts==3){
2452 if(invMasspiKpKp>0.) fMassHistKpTC[index]->Fill(invMasspiKpKp,0.5);
2453 if(invMasspKpiKp>0.) fMassHistKpTC[index]->Fill(invMasspKpiKp,0.5);
2454 }else{
2455 if(invMasspiKpKp>0. && passTightCuts==2) fMassHistKpTC[index]->Fill(invMasspiKpKp);
2456 if(invMasspKpiKp>0.&& passTightCuts==1) fMassHistKpTC[index]->Fill(invMasspKpiKp);
2457 }
c1234468 2458 if(invMasspiKpDk>0. && invMasspKpiDk>0. && passTightCuts==3){
2459 if(invMasspiKpDk>0.) fMassHistDkTC[index]->Fill(invMasspiKpDk,0.5);
2460 if(invMasspKpiDk>0.) fMassHistDkTC[index]->Fill(invMasspKpiDk,0.5);
2461 }else{
2462 if(invMasspiKpDk>0. && passTightCuts==2) fMassHistDkTC[index]->Fill(invMasspiKpDk);
2463 if(invMasspKpiDk>0.&& passTightCuts==1) fMassHistDkTC[index]->Fill(invMasspKpiDk);
2464 }
2465 if(invMasspiKp3Pr>0. && invMasspKpi3Pr>0. && passTightCuts==3){
2466 if(invMasspiKp3Pr>0.) fMassHist3PrTC[index]->Fill(invMasspiKp3Pr,0.5);
2467 if(invMasspKpi3Pr>0.) fMassHist3PrTC[index]->Fill(invMasspKpi3Pr,0.5);
2468 }else{
2469 if(invMasspiKp3Pr>0. && passTightCuts==2) fMassHist3PrTC[index]->Fill(invMasspiKp3Pr);
2470 if(invMasspKpi3Pr>0.&& passTightCuts==1) fMassHist3PrTC[index]->Fill(invMasspKpi3Pr);
2471 }
60eac73d 2472 }
2473
2474 }
029ed93a 2475 }
029ed93a 2476 }
60eac73d 2477 return;
029ed93a 2478}
2479//-----------------------
60eac73d 2480void AliAnalysisTaskSELambdac::FillVarHists(AliAODRecoDecayHF3Prong *part,
2481 TClonesArray *arrMC,
2482 AliRDHFCutsLctopKpi *cuts,
2483 /* TList *listout,*/
2484 AliAODEvent* aod) {
029ed93a 2485 //
2486 // function used in UserExec to fill variable histograms analysing MC
2487 //
2488
60eac73d 2489 TString fillthis="";
2490
2491 Double_t mPDG=TDatabasePDG::Instance()->GetParticle(4122)->Mass();
2492 Double_t invmasscut=0.05;
029ed93a 2493
2494 Int_t pdgDgLctopKpi[3]={2212,321,211};
2495 Int_t lab=-9999;
273fb9a5 2496 // Bool_t IsLcfromLb=0;
32db66b5 2497 Bool_t IsLcfromc=0;
2498 if(fReadMC){
60eac73d 2499 lab=part->MatchToMC(4122,arrMC,3,pdgDgLctopKpi); //return MC particle label if the array corresponds to a Lc, -1 if not (cf. AliAODRecoDecay.cxx)
32db66b5 2500 if(lab>0){
2501 AliAODMCParticle *partDp = (AliAODMCParticle*)arrMC->At(lab);
2502 AliVertexingHFUtils *util = new AliVertexingHFUtils();
2503 Int_t pdgMom=util->CheckOrigin(arrMC,partDp,kFALSE);
273fb9a5 2504 // if(pdgMom == 5) IsLcfromLb =1;
32db66b5 2505 if(pdgMom == 4) IsLcfromc =1;
2506 delete util;
2507 }
2508 }
862f4ac0 2509 // Int_t isSelectedPID=cuts->IsSelectedPID(part); // 0 rejected, 1 Lc -> p K- pi+ (K at center because different sign is there),
2510 // 2 Lc -> pi+ K- p (K at center because different sign is there),
2511 // 3 both (it should never happen...)
2512 Int_t isSelectedPID=cuts->IsSelected(part,AliRDHFCuts::kPID,aod); // 0 rejected, 1 Lc -> p K- pi+ (K at center because different sign is there),
60eac73d 2513 // 2 Lc -> pi+ K- p (K at center because different sign is there),
2514 // 3 both (it should never happen...)
029ed93a 2515
2516 if (isSelectedPID==0)fNentries->Fill(7);
2517 if (isSelectedPID==1)fNentries->Fill(8);
2518 if (isSelectedPID==2)fNentries->Fill(9);
2519 if (isSelectedPID==3)fNentries->Fill(10);
2520
029ed93a 2521 AliAODTrack *prong0=(AliAODTrack*)part->GetDaughter(0);
2522 AliAODTrack *prong1=(AliAODTrack*)part->GetDaughter(1);
2523 AliAODTrack *prong2=(AliAODTrack*)part->GetDaughter(2);
2524 if (!prong0 || !prong1 || !prong2) {
2525 fNentries->Fill(5);
2526 return;
2527 }
2528
60eac73d 2529 Double_t minvLcpKpi = part->InvMassLcpKpi();
2530 Double_t minvLcpiKp = part->InvMassLcpiKp();
2531
32db66b5 2532
029ed93a 2533 //check pdg of the prongs
60eac73d 2534 Int_t labprong[3]={-1,-1,-1};
029ed93a 2535 if(fReadMC){
2536 labprong[0]=prong0->GetLabel();
2537 labprong[1]=prong1->GetLabel();
2538 labprong[2]=prong2->GetLabel();
2539 }
029ed93a 2540
60eac73d 2541 AliAODMCParticle *mcprong=0;
2542 Int_t pdgProngMC[3]={-1,-1,-1};
2543 if(fReadMC) {
2544 for (Int_t iprong=0;iprong<3;iprong++){
029ed93a 2545 if(labprong[iprong]<0) continue;
60eac73d 2546 mcprong = (AliAODMCParticle*)arrMC->At(labprong[iprong]);
2547 pdgProngMC[iprong]=TMath::Abs(mcprong->GetPdgCode());
2548 }
2549 }
2550
2551 Int_t pdgProngPID[3]={-1,-1,-1};
2552 if(isSelectedPID>0){
2553 pdgProngPID[1]=321;
2554 if(isSelectedPID==1) {pdgProngPID[0]=2212;pdgProngPID[2]=211;}
2555 if(isSelectedPID==2) {pdgProngPID[0]=211;pdgProngPID[2]=2212;}
2556 }
2557
2558 //fill hRealTot ---> PID efficiency denominators
862f4ac0 2559 //cuts->SetUsePID(kFALSE); //PAOLA
2560 Int_t selectionTrack = cuts->IsSelected(part,AliRDHFCuts::kTracks,aod);
2561
2562 //IsInjected check
2563 Bool_t IsInjected = 0;
2564 if(fReadMC){
2565 AliAODMCHeader *mcHeader2 = (AliAODMCHeader*)aod->GetList()->FindObject(AliAODMCHeader::StdBranchName());
2566 AliVertexingHFUtils *util = new AliVertexingHFUtils();
2567 IsInjected = util->IsCandidateInjected(part,mcHeader2,arrMC)?1:0;
2568 delete util;
2569 }
2570 if(fReadMC && selectionTrack>0) { // 3prongs candidate x Lc (only track selection) Jaime
2571 Int_t isReal=0;
32db66b5 2572 if(lab>0 && IsLcfromc){ // Signal
60eac73d 2573 for (Int_t iprong=0; iprong<3; iprong++) {
2574 switch (pdgProngMC[iprong]) {
2575 case 2212:
2576 fillthis="hpRealTot";
2577 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
862f4ac0 2578 isReal++;
60eac73d 2579 break;
2580 case 321:
2581 fillthis="hKRealTot";
2582 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
862f4ac0 2583 isReal++;
60eac73d 2584 break;
2585 case 211:
2586 fillthis="hpiRealTot";
2587 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
862f4ac0 2588 isReal++;
60eac73d 2589 break;
2590 default:
2591 break;
2592 }
2593 }
862f4ac0 2594 fillthis="hLcRealTot";
2595 if(isReal==3) ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt());
2596 //Marcel: Should we zero isReal
2597 } else if(!IsInjected) { // bkg // bkg
60eac73d 2598 for (Int_t iprong=0; iprong<3; iprong++) {
2599 switch (pdgProngMC[iprong]) {
2600 case 2212:
2601 fillthis="hbpRealTot";
2602 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
862f4ac0 2603 isReal++;
60eac73d 2604 break;
2605 case 321:
2606 fillthis="hbKRealTot";
2607 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
862f4ac0 2608 isReal++;
60eac73d 2609 break;
2610 case 211:
2611 fillthis="hbpiRealTot";
2612 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
862f4ac0 2613 isReal++;
60eac73d 2614 break;
2615 default:
2616 break;
2617 }
029ed93a 2618 }
862f4ac0 2619 fillthis="hbLcRealTot";
2620 if(isReal==3) ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt());
029ed93a 2621 }
60eac73d 2622 }
029ed93a 2623
029ed93a 2624
862f4ac0 2625 //cuts->SetUsePID(kTRUE); //PAOLA
60eac73d 2626 Int_t selection=cuts->IsSelected(part,AliRDHFCuts::kCandidate,aod);
029ed93a 2627
32db66b5 2628 if ( (lab>0 && fReadMC && IsLcfromc) || // signal X MC
60eac73d 2629 (isSelectedPID>0 && !fReadMC) ) { // signal+bkg X real data
029ed93a 2630
60eac73d 2631 fillthis="hMass";
2632 if ( (fReadMC && ((AliAODMCParticle*)arrMC->At(lab))->GetPdgCode() == 4122) ||
2633 (!fReadMC && (isSelectedPID>0 && part->Charge()>0)) ) { // Lc
2634 if ( (pdgProngPID[0]==2212) && (pdgProngPID[1]==321) && (pdgProngPID[2]==211) )
2635 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(minvLcpKpi); // signal+bkg X MC and real data
2636 else if ( (pdgProngPID[0]==211) && (pdgProngPID[1]==321) && (pdgProngPID[2]==2212) )
2637 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(minvLcpiKp); // signal+bkg X MC and real data
029ed93a 2638 }
60eac73d 2639 else if ( (fReadMC && ((AliAODMCParticle*)arrMC->At(lab))->GetPdgCode() == -4122) ||
2640 (!fReadMC && (isSelectedPID>0 && part->Charge()<0)) ) { // anti-Lc
2641 if ( (pdgProngPID[0]==2212) && (pdgProngPID[1]==321) && (pdgProngPID[2]==211) )
2642 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(minvLcpKpi); // signal+bkg X MC and real data
2643 else if ( (pdgProngPID[0]==211) && (pdgProngPID[1]==321) && (pdgProngPID[2]==2212) )
2644 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(minvLcpiKp); // signal+bkg X MC and real data
029ed93a 2645 }
7eb0cc73 2646
60eac73d 2647 if (selection>0) { // 3prongs candidate x Lc (yes PID)
029ed93a 2648
2649 Double_t ptmax=0.;
862f4ac0 2650 Int_t isID=0;
2651 Int_t isCorrect=0;
029ed93a 2652 for (Int_t iprong=0; iprong<3; iprong++) {
60eac73d 2653 if (part->PtProng(iprong)>ptmax) ptmax=part->PtProng(iprong);
2654
2655 AliAODTrack *prong = (AliAODTrack*)part->GetDaughter(iprong);
2656 AliAODPid *pidObjtrk = (AliAODPid*)prong->GetDetPid();
2657 AliAODPidHF *pidObj = (AliAODPidHF*)cuts->GetPidHF();
029ed93a 2658 Bool_t hasTOF=pidObj->CheckStatus(prong,"TOF");
2659 Bool_t hasTPC=pidObj->CheckStatus(prong,"TPC");
029ed93a 2660 Double_t tofSignal=0.;
2661 Double_t dedxTPC=0.;
2662 Double_t momTOF=0.;
2663 Double_t momTPC=0.;
2664 if(hasTOF) {
60eac73d 2665 momTOF = prong->P();
2666 tofSignal=pidObjtrk->GetTOFsignal();
029ed93a 2667 }
2668 if(hasTPC) {
60eac73d 2669 momTPC = pidObjtrk->GetTPCmomentum();
2670 dedxTPC=pidObjtrk->GetTPCsignal();
029ed93a 2671 }
60eac73d 2672 switch (pdgProngPID[iprong]) {
029ed93a 2673 case 2212:
60eac73d 2674 fillthis="hpTOFSignal";
2675 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(tofSignal);
2676 fillthis="hpTPCSignal";
2677 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(dedxTPC);
2678 fillthis="hpptProng";
2679 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
32db66b5 2680 fillthis="hpptProngLcPt";
2681 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt(),part->PtProng(iprong));
60eac73d 2682 fillthis="hpd0Prong";
2683 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Getd0Prong(iprong));
32db66b5 2684 fillthis="hpd0ProngLcPt";
2685 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt(),part->Getd0Prong(iprong));
60eac73d 2686 fillthis="hpSignalVspTPC";
2687 ((TH2F*)fOutputMC->FindObject(fillthis))->Fill(momTPC,dedxTPC);
2688 fillthis="hpSignalVspTOF";
2689 ((TH2F*)fOutputMC->FindObject(fillthis))->Fill(momTOF,tofSignal);
2690 AliPID::EParticleType typep;
2691 typep=AliPID::EParticleType(4);
2692 if(hasTPC) {
2693 //Double_t nsigmap = fUtilPid->NumberOfSigmasTPC(prong,typep);
2694 Double_t nsigmap = fPIDResponse->NumberOfSigmasTPC(prong,typep);
2695 fillthis="hpSigmaVspTPC";
2696 ((TH2F*)fOutputMC->FindObject(fillthis))->Fill(momTPC,nsigmap);
2697 }
2698 if(hasTOF){
2699 //Double_t nsigma=fUtilPid->NumberOfSigmasTOF(prong,typep);
2700 Double_t nsigma=fPIDResponse->NumberOfSigmasTOF(prong,typep);
2701 fillthis="hpSigmaVspTOF";
2702 ((TH2F*)fOutputMC->FindObject(fillthis))->Fill(momTOF,nsigma);
2703 }
2704
2705 if (fReadMC) { // fill hpIDTot ---> PID contamination denominator
2706 // hIDGood, hnoID ---> PID numerators
2707 fillthis="hpIDTot";
2708 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
862f4ac0 2709 isID++;
60eac73d 2710 if(pdgProngMC[iprong]==2212) { // id protons
2711 fillthis="hpIDGood";
2712 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
862f4ac0 2713 isCorrect++;
029ed93a 2714 }
60eac73d 2715 else { // misidentified electrons, muons, pions and kaons
2716 fillthis="hnopIDp";
2717 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
029ed93a 2718 }
60eac73d 2719 }
2720 break;
029ed93a 2721
029ed93a 2722 case 321:
60eac73d 2723 fillthis="hKTOFSignal";
2724 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(tofSignal);
2725 fillthis="hKTPCSignal";
2726 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(dedxTPC);
2727 fillthis="hKptProng";
2728 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
32db66b5 2729 fillthis="hKptProngLcPt";
2730 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt(),part->PtProng(iprong));
60eac73d 2731 fillthis="hKd0Prong";
2732 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Getd0Prong(iprong));
32db66b5 2733 fillthis="hKd0ProngLcPt";
2734 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt(),part->Getd0Prong(iprong));
60eac73d 2735 fillthis="hKSignalVspTPC";
2736 ((TH2F*)fOutputMC->FindObject(fillthis))->Fill(momTPC,dedxTPC);
2737 fillthis="hKSignalVspTOF";
2738 ((TH2F*)fOutputMC->FindObject(fillthis))->Fill(momTOF,tofSignal);
2739 AliPID::EParticleType typek;
2740 typek=AliPID::EParticleType(3);
2741 if(hasTPC) {
2742 //Double_t nsigmap = fUtilPid->NumberOfSigmasTPC(prong,typek);
2743 Double_t nsigmap = fPIDResponse->NumberOfSigmasTPC(prong,typek);
2744 fillthis="hKSigmaVspTPC";
2745 ((TH2F*)fOutputMC->FindObject(fillthis))->Fill(momTPC,nsigmap);
2746 }
2747 if(hasTOF){
2748 //Double_t nsigma = fUtilPid->NumberOfSigmasTOF(prong,typek);
2749 Double_t nsigma=fPIDResponse->NumberOfSigmasTOF(prong,typek); // protection against 'old' AODs...
2750 fillthis="hKSigmaVspTOF";
2751 ((TH2F*)fOutputMC->FindObject(fillthis))->Fill(momTOF,nsigma);
2752 }
2753
2754 if (fReadMC) { // fill hKIDTot ---> PID contamination denominator
2755 // hIDGood, hnoID ---> PID numerators
2756 fillthis="hKIDTot";
2757 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
862f4ac0 2758 isID++;
60eac73d 2759 if(pdgProngMC[iprong]==321) { // id kaons
2760 fillthis="hKIDGood";
2761 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
862f4ac0 2762 isCorrect++;
029ed93a 2763 }
60eac73d 2764 else { // misidentified electrons, muons, pions and protons
2765 fillthis="hnokIDk";
2766 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
029ed93a 2767 }
60eac73d 2768 }
2769 break;
029ed93a 2770
029ed93a 2771 case 211:
60eac73d 2772 fillthis="hpiTOFSignal";
2773 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(tofSignal);
2774 fillthis="hpiTPCSignal";
2775 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(dedxTPC);
2776 fillthis="hpiptProng";
2777 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
32db66b5 2778 fillthis="hpiptProngLcPt";
2779 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt(),part->PtProng(iprong));
60eac73d 2780 fillthis="hpid0Prong";
2781 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Getd0Prong(iprong));
32db66b5 2782 fillthis="hpid0ProngLcPt";
2783 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt(),part->Getd0Prong(iprong));
2784
60eac73d 2785 fillthis="hpiSignalVspTPC";
2786 ((TH2F*)fOutputMC->FindObject(fillthis))->Fill(momTPC,dedxTPC);
2787 fillthis="hpiSignalVspTOF";
2788 ((TH2F*)fOutputMC->FindObject(fillthis))->Fill(momTOF,tofSignal);
2789 AliPID::EParticleType typepi;
2790 typepi=AliPID::EParticleType(2);
2791 if(hasTPC) {
2792 //Double_t nsigmap = fUtilPid->NumberOfSigmasTPC(prong,typepi);
2793 Double_t nsigmap = fPIDResponse->NumberOfSigmasTPC(prong,typepi);
029ed93a 2794 fillthis="hpiSigmaVspTPC";
60eac73d 2795 ((TH2F*)fOutputMC->FindObject(fillthis))->Fill(momTPC,nsigmap);
2796 }
2797 if(hasTOF){
2798 //Double_t nsigma = fUtilPid->NumberOfSigmasTOF(prong,typepi);
2799 Double_t nsigma=fPIDResponse->NumberOfSigmasTOF(prong,typepi); // protection against 'old' AODs...
2800 fillthis="hpiSigmaVspTOF";
2801 ((TH2F*)fOutputMC->FindObject(fillthis))->Fill(momTOF,nsigma);
2802 }
2803
2804 if (fReadMC) { // fill hpiIDTot ---> PID contamination denominator
2805 // hIDGood, hnoID ---> PID numerators
2806 fillthis="hpiIDTot";
2807 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
862f4ac0 2808 isID++;
60eac73d 2809 if(pdgProngMC[iprong]==211) { // id pions
2810 fillthis="hpiIDGood";
2811 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
862f4ac0 2812 isCorrect++;
029ed93a 2813 }
60eac73d 2814 else { // misidentified electrons, muons, kaons and protons
2815 fillthis="hnopiIDpi";
2816 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
029ed93a 2817 }
60eac73d 2818 }
2819 break;
029ed93a 2820
2821 default:
2822 break;
2823 }
029ed93a 2824
32db66b5 2825 }//end loop on prongs
60eac73d 2826
862f4ac0 2827 //Jaime Lc checks
2828 fillthis="hLcIDTot";
2829 if(isID==3) ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt());
2830 fillthis="hLcIDGood";
2831 if(isCorrect==3) ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt());
2832 fillthis="hLcnoID";
2833 if(isCorrect<3) ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt());
2834
60eac73d 2835 //now histograms where we don't need to check identity
862f4ac0 2836 fillthis="hLcpt";
2837 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt());
029ed93a 2838 fillthis = "hDist12toPrim";
60eac73d 2839 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->GetDist12toPrim());
2840 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->GetDist23toPrim());
862f4ac0 2841 fillthis = "hDist12toPrimLcPt";
2842 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt(),part->GetDist12toPrim());
2843 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt(),part->GetDist23toPrim());
029ed93a 2844 fillthis = "hSigmaVert";
60eac73d 2845 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->GetSigmaVert());
862f4ac0 2846 fillthis = "hSigmaVertLcPt";
2847 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt(),part->GetSigmaVert());
029ed93a 2848 fillthis = "hDCAs";
2849 Double_t dcas[3];
2850 part->GetDCAs(dcas);
60eac73d 2851 for (Int_t idca=0;idca<3;idca++) ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(dcas[idca]);
862f4ac0 2852 fillthis = "hDCAsLcPt";
2853 for (Int_t idca=0;idca<3;idca++) ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt(),dcas[idca]);
029ed93a 2854 fillthis = "hCosPointingAngle";
60eac73d 2855 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->CosPointingAngle());
862f4ac0 2856 fillthis = "hCosPointingAngleLcPt";
2857 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt(),part->CosPointingAngle());
029ed93a 2858 fillthis = "hDecayLength";
60eac73d 2859 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->DecayLength());
862f4ac0 2860 fillthis = "hDecayLengthLcPt";
2861 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt(),part->DecayLength());
60eac73d 2862 Double_t sum2=part->Getd0Prong(0)*part->Getd0Prong(0)+
2863 part->Getd0Prong(1)*part->Getd0Prong(1)+
2864 part->Getd0Prong(2)*part->Getd0Prong(2);
029ed93a 2865 fillthis = "hSum2";
60eac73d 2866 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(sum2);
862f4ac0 2867 fillthis = "hSum2LcPt";
2868 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt(),sum2);
029ed93a 2869 fillthis = "hptmax";
60eac73d 2870 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(ptmax);
862f4ac0 2871 fillthis = "hptmaxLcPt";
2872 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt(),ptmax);
2873
029ed93a 2874
60eac73d 2875 } // end if (selection)
029ed93a 2876
862f4ac0 2877 }else if( lab<=0 && fReadMC && !IsInjected ) { // bkg x MC
029ed93a 2878
2879 fillthis="hbMass";
2880
60eac73d 2881 if (part->Charge()>0) { //Lc background
2882 if ( (pdgProngPID[0]==2212) && (pdgProngPID[1]==321) && (pdgProngPID[2]==211) )
2883 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(minvLcpKpi); // bkg X MC
2884 else if ( (pdgProngPID[0]==211) && (pdgProngPID[1]==321) && (pdgProngPID[2]==2212) )
2885 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(minvLcpiKp); // bkg X MC
2886 }
2887 else if (part->Charge()<0){ //anti-Lc background
2888 if ( (pdgProngPID[0]==2212) && (pdgProngPID[1]==321) && (pdgProngPID[2]==211) )
2889 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(minvLcpKpi); // bkg X MC
2890 else if ( (pdgProngPID[0]==211) && (pdgProngPID[1]==321) && (pdgProngPID[2]==2212) )
2891 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(minvLcpiKp); // bkg X MC
029ed93a 2892 }
2893
2894
2895 //apply cut on invariant mass on the pair
60eac73d 2896 if (TMath::Abs(minvLcpKpi-mPDG)<invmasscut || TMath::Abs(minvLcpiKp-mPDG)<invmasscut) {
2897
2898 if (selection>0) { // 3prongs candidate x Lc (yes PID)
2899
2900 Double_t ptmax=0.;
862f4ac0 2901 Int_t isID=0;
2902 Int_t isCorrect=0;
60eac73d 2903 for (Int_t iprong=0; iprong<3; iprong++) {
2904 if(part->PtProng(iprong)>ptmax)ptmax=part->PtProng(iprong);
2905
2906 AliAODTrack *prong = (AliAODTrack*)part->GetDaughter(iprong);
2907 AliAODPid *pidObjtrk = (AliAODPid*)prong->GetDetPid();
2908 AliAODPidHF *pidObj = (AliAODPidHF*)cuts->GetPidHF();
2909 Bool_t hasTOF=pidObj->CheckStatus(prong,"TOF");
2910 Bool_t hasTPC=pidObj->CheckStatus(prong,"TPC");
2911 Double_t tofSignal=0.;
2912 Double_t dedxTPC=0.;
2913 Double_t momTOF=0.;
2914 Double_t momTPC=0.;
2915 if(hasTOF) {
2916 momTOF = prong->P();
2917 tofSignal=pidObjtrk->GetTOFsignal();
2918 }
2919 if(hasTPC) {
2920 momTPC = pidObjtrk->GetTPCmomentum();
2921 dedxTPC=pidObjtrk->GetTPCsignal();
2922 }
2923
2924 switch (pdgProngPID[iprong]) {
2925 case 2212:
029ed93a 2926 fillthis="hbpTOFSignal";
60eac73d 2927 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(tofSignal);
029ed93a 2928 fillthis="hbpTPCSignal";
60eac73d 2929 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(dedxTPC);
029ed93a 2930 fillthis="hbpptProng";
60eac73d 2931 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
32db66b5 2932 fillthis="hbpptProngLcPt";
2933 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt(),part->PtProng(iprong));
029ed93a 2934 fillthis="hbpd0Prong";
60eac73d 2935 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Getd0Prong(iprong));
32db66b5 2936 fillthis="hbpd0ProngLcPt";
2937 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt(),part->Getd0Prong(iprong));
029ed93a 2938 fillthis="hbpSignalVspTPC";
60eac73d 2939 ((TH2F*)fOutputMC->FindObject(fillthis))->Fill(momTPC,dedxTPC);
029ed93a 2940 fillthis="hbpSignalVspTOF";
60eac73d 2941 ((TH2F*)fOutputMC->FindObject(fillthis))->Fill(momTOF,tofSignal);
029ed93a 2942 AliPID::EParticleType typep;
2943 typep=AliPID::EParticleType(4);
2944 if(hasTPC) {
60eac73d 2945 //Double_t nsigmap = fUtilPid->NumberOfSigmasTPC(prong,typep);
2946 Double_t nsigmap = fPIDResponse->NumberOfSigmasTPC(prong,typep);
2947 fillthis="hbpSigmaVspTPC";
2948 ((TH2F*)fOutputMC->FindObject(fillthis))->Fill(momTPC,nsigmap);
029ed93a 2949 }
2950 if(hasTOF){
60eac73d 2951 //Double_t nsigma = fUtilPid->NumberOfSigmasTOF(prong,typep);
2952 Double_t nsigma=fPIDResponse->NumberOfSigmasTOF(prong,typep); // protection against 'old' AODs...
2953 fillthis="hbpSigmaVspTOF";
2954 ((TH2F*)fOutputMC->FindObject(fillthis))->Fill(momTOF,nsigma);
029ed93a 2955 }
60eac73d 2956 if(fReadMC){ // fill hbpIDTot ---> PID contamination denominator
2957 // hbIDGood, hbnoID ---> PID numerators
2958 fillthis="hbpIDTot";
2959 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
862f4ac0 2960 isID++;
60eac73d 2961 if(pdgProngMC[iprong]==2212) { // id protons
2962 fillthis="hbpIDGood";
2963 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
862f4ac0 2964 isCorrect++;
029ed93a 2965 }
60eac73d 2966 else { // misidentified electrons, muons, pions and kaons
2967 fillthis="hbnopIDp";
2968 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
029ed93a 2969 }
2970 }
2971 break;
60eac73d 2972
2973 case 321:
029ed93a 2974 fillthis="hbKTOFSignal";
60eac73d 2975 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(tofSignal);
029ed93a 2976 fillthis="hbKTPCSignal";
60eac73d 2977 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(dedxTPC);
029ed93a 2978 fillthis="hbKptProng";
60eac73d 2979 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
32db66b5 2980 fillthis="hbKptProngLcPt";
2981 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt(),part->PtProng(iprong));
029ed93a 2982 fillthis="hbKd0Prong";
60eac73d 2983 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Getd0Prong(iprong));
32db66b5 2984 fillthis="hbKd0ProngLcPt";
2985 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt(),part->Getd0Prong(iprong));
029ed93a 2986 fillthis="hbKSignalVspTPC";
60eac73d 2987 ((TH2F*)fOutputMC->FindObject(fillthis))->Fill(momTPC,dedxTPC);
029ed93a 2988 fillthis="hbKSignalVspTOF";
60eac73d 2989 ((TH2F*)fOutputMC->FindObject(fillthis))->Fill(momTOF,tofSignal);
029ed93a 2990 AliPID::EParticleType typek;
2991 typek=AliPID::EParticleType(3);
2992 if(hasTPC) {
60eac73d 2993 //Double_t nsigmap = fUtilPid->NumberOfSigmasTPC(prong,typek);
2994 Double_t nsigmap = fPIDResponse->NumberOfSigmasTPC(prong,typek);
2995 fillthis="hbKSigmaVspTPC";
2996 ((TH2F*)fOutputMC->FindObject(fillthis))->Fill(momTPC,nsigmap);
029ed93a 2997 }
2998 if(hasTOF){
60eac73d 2999 //Double_t nsigma = fUtilPid->NumberOfSigmasTOF(prong,typek);
3000 Double_t nsigma=fPIDResponse->NumberOfSigmasTOF(prong,typek); // protection against 'old' AODs...
3001 fillthis="hbKSigmaVspTOF";
3002 ((TH2F*)fOutputMC->FindObject(fillthis))->Fill(momTOF,nsigma);
029ed93a 3003 }
60eac73d 3004 if (fReadMC) { // fill hbKIDTot ---> PID contamination denominator
3005 // hIDGood, hnoID ---> PID numerators
3006 fillthis="hbKIDTot";
3007 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
862f4ac0 3008 isID++;
60eac73d 3009 if(pdgProngMC[iprong]==321) { // id kaons
3010 fillthis="hbKIDGood";
3011 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
862f4ac0 3012 isCorrect++;
029ed93a 3013 }
60eac73d 3014 else { // misidentified electrons, muons, pions and protons
3015 fillthis="hbnokIDk";
3016 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
029ed93a 3017 }
3018 }
3019 break;
60eac73d 3020
3021 case 211:
029ed93a 3022 fillthis="hbpiTOFSignal";
60eac73d 3023 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(tofSignal);
029ed93a 3024 fillthis="hbpiTPCSignal";
60eac73d 3025 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(dedxTPC);
029ed93a 3026 fillthis="hbpiptProng";
60eac73d 3027 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
862f4ac0 3028 fillthis="hbpiptProngLcPt";
3029 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
029ed93a 3030 fillthis="hbpid0Prong";
60eac73d 3031 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Getd0Prong(iprong));
32db66b5 3032 fillthis="hbpid0ProngLcPt";
3033 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt(),part->Getd0Prong(iprong));
029ed93a 3034 fillthis="hbpiSignalVspTPC";
60eac73d 3035 ((TH2F*)fOutputMC->FindObject(fillthis))->Fill(momTPC,dedxTPC);
029ed93a 3036 fillthis="hbpiSignalVspTOF";
60eac73d 3037 ((TH2F*)fOutputMC->FindObject(fillthis))->Fill(momTOF,tofSignal);
029ed93a 3038 AliPID::EParticleType typepi;
3039 typepi=AliPID::EParticleType(2);
3040 if(hasTPC) {
60eac73d 3041 //Double_t nsigmap = fUtilPid->NumberOfSigmasTPC(prong,typepi);
3042 Double_t nsigmap = fPIDResponse->NumberOfSigmasTPC(prong,typepi);
3043 fillthis="hbpiSigmaVspTPC";
3044 ((TH2F*)fOutputMC->FindObject(fillthis))->Fill(momTPC,nsigmap);
029ed93a 3045 }
3046 if(hasTOF){
60eac73d 3047 //Double_t nsigma = fUtilPid->NumberOfSigmasTOF(prong,typepi);
3048 Double_t nsigma=fPIDResponse->NumberOfSigmasTOF(prong,typepi); // protection against 'old' AODs...
3049 fillthis="hbpiSigmaVspTOF";
3050 ((TH2F*)fOutputMC->FindObject(fillthis))->Fill(momTOF,nsigma);
029ed93a 3051 }
60eac73d 3052 if (fReadMC) { // fill hbpiIDTot ---> PID contamination denominator
3053 // hIDGood, hnonIDTot ---> PID numerators
3054 fillthis="hbpiIDTot";
3055 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
862f4ac0 3056 isID++;
60eac73d 3057 if(pdgProngMC[iprong]==211) { // id pions
3058 fillthis="hbpiIDGood";
3059 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
862f4ac0 3060 isCorrect++;
029ed93a 3061 }
60eac73d 3062 else { // misidentified electrons, muons, kaons and protons
3063 fillthis="hbnopiIDpi";
3064 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->PtProng(iprong));
029ed93a 3065 }
3066 }
3067 break;
029ed93a 3068
60eac73d 3069 default:
3070 break;
3071 }
3072
3073 } //end loop on prongs
862f4ac0 3074
3075 fillthis="hbLcIDTot";
3076 if(isID==3) ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt());
3077 fillthis="hbLcIDGood";
3078 if(isCorrect==3) ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt());
3079 fillthis="hbLcnoID";
3080 if(isCorrect<3) ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt());
60eac73d 3081
029ed93a 3082 //now histograms where we don't need to check identity
3083 fillthis="hbLcpt";
60eac73d 3084 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt());
862f4ac0 3085
029ed93a 3086 fillthis = "hbDist12toPrim";
60eac73d 3087 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->GetDist12toPrim());
3088 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->GetDist23toPrim());
862f4ac0 3089 fillthis = "hbDist12toPrimLcPt";
3090 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt(),part->GetDist12toPrim());
3091 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt(),part->GetDist23toPrim());
029ed93a 3092 fillthis = "hbSigmaVert";
60eac73d 3093 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->GetSigmaVert());
862f4ac0 3094 fillthis = "hbSigmaVertLcPt";
3095 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt(),part->GetSigmaVert());
029ed93a 3096 fillthis = "hbDCAs";
3097 Double_t dcas[3];
3098 part->GetDCAs(dcas);
862f4ac0 3099 for (Int_t idca=0;idca<3;idca++) ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(dcas[idca]);
3100 fillthis = "hbDCAsLcPt";
3101 for (Int_t idca=0;idca<3;idca++) ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt(),dcas[idca]);
029ed93a 3102 fillthis = "hbCosPointingAngle";
60eac73d 3103 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->CosPointingAngle());
862f4ac0 3104 fillthis = "hbCosPointingAngleLcPt";
3105 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt(),part->CosPointingAngle());
029ed93a 3106 fillthis = "hbDecayLength";
60eac73d 3107 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->DecayLength());
862f4ac0 3108 fillthis = "hbDecayLengthLcPt";
3109 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt(),part->DecayLength());
60eac73d 3110 Double_t sum2=part->Getd0Prong(0)*part->Getd0Prong(0)+
862f4ac0 3111 part->Getd0Prong(1)*part->Getd0Prong(1)+
3112 part->Getd0Prong(2)*part->Getd0Prong(2);
60eac73d 3113 fillthis = "hbSum2";
3114 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(sum2);
862f4ac0 3115 fillthis = "hbSum2LcPt";
3116 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt(),sum2);
60eac73d 3117 fillthis = "hbptmax";
3118 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(ptmax);
862f4ac0 3119 fillthis = "hbptmaxLcPt";
3120 ((TH1F*)fOutputMC->FindObject(fillthis))->Fill(part->Pt(),ptmax);
029ed93a 3121
60eac73d 3122 } // end if (selection)
029ed93a 3123
60eac73d 3124 } // end mass cut
029ed93a 3125
3126 } // end background case
60eac73d 3127
029ed93a 3128 return;
60eac73d 3129
3130}
3131
3132//-------------------------
3133void AliAnalysisTaskSELambdac::FillAPrioriConcentrations(AliAODRecoDecayHF3Prong *part,
3134 AliRDHFCutsLctopKpi *cuts,
3135 AliAODEvent* aod,
3136 TClonesArray *arrMC)
3137{
3138
c1234468 3139 // FillAPrioriConcentrations
862f4ac0 3140 //cuts->SetUsePID(kFALSE); //Annalisa
60eac73d 3141 Int_t isSelected3ProngByLc=cuts->IsSelected(part,AliRDHFCuts::kCandidate,aod);
3142
3143 TString fillthis="";
3144
3145 if(isSelected3ProngByLc>0 && fReadMC) {
3146
3147 for (Int_t ii=0; ii<3; ii++) {
3148 AliAODTrack *prongTest=(AliAODTrack*)part->GetDaughter(ii);
3149 if (!prongTest) continue;
3150 Int_t labprongTest = prongTest->GetLabel();
3151 if(labprongTest<0) continue;
3152 AliAODMCParticle *mcprongTest = (AliAODMCParticle*)arrMC->At(labprongTest);
3153
3154 switch (TMath::Abs(mcprongTest->GetPdgCode())) {
3155 case 11:
3156 fillthis="hElIn3Prong";
3157 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3158 break;
3159 case 13:
3160 fillthis="hMuIn3Prong";
3161 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3162 break;
3163 case 211:
3164 fillthis="hPiIn3Prong";
3165 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3166 break;
3167 case 321:
3168 fillthis="hKaIn3Prong";
3169 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3170 break;
3171 case 2212:
3172 fillthis="hPrIn3Prong";
3173 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3174 break;
3175 default:
3176 break;
3177 }
3178 }
3179 }
3180
862f4ac0 3181 //cuts->SetUsePID(kTRUE); //Annalisa
60eac73d 3182
3183}
3184
3185//-----------------------
3186Bool_t AliAnalysisTaskSELambdac::Is3ProngFromPDG(AliAODRecoDecayHF3Prong *d,
3187 TClonesArray *arrayMC,
3188 Int_t pdgToBeCompared)
3189{
3190 //
3191 // Returs kTRUE if at least one of tracks in the current 3prong
3192 // cames from particle with pdgCode=pdgToBeCompared
3193 //
3194
3195 Bool_t localFlag = kFALSE;
3196
3197 for (Int_t ii=0;ii<3;ii++) {
3198 AliAODTrack *daugh = (AliAODTrack*)d->GetDaughter(ii);
3199
3200 Int_t lab = daugh->GetLabel();
3201 if(lab<0) continue;
3202 AliAODMCParticle *part= (AliAODMCParticle*)arrayMC->At(lab);
3203 //Int_t partPdg = part->GetPdgCode();
3204 //printf(" -------------------------------------- partLab=%d partPdg=%d ---\n", lab, partPdg);
3205
3206 Int_t motherLabel = part->GetMother();
3207 if(motherLabel<0) continue;
3208
3209 AliAODMCParticle *motherPart = 0;
3210 Int_t motherPdg = 0;
3211 while (!localFlag && motherLabel>=0) {
3212 motherPart = (AliAODMCParticle*)arrayMC->At(motherLabel);
3213 motherPdg = motherPart->GetPdgCode();
3214 //printf(" ------------- motherLab=%d motherPdg=%d ---\n", motherLabel, motherPdg);
3215 if (TMath::Abs(motherPdg)==pdgToBeCompared) {
3216 //printf("-------------------------- trovato quark c/cbar\n");
3217 localFlag = kTRUE;
3218 }
3219 else {
3220 motherLabel = motherPart->GetMother();
3221 }
3222 }
3223
3224 }
3225
3226 return localFlag;
3227
3228}
3229
3230//-----------------------
5d836c02 3231Bool_t AliAnalysisTaskSELambdac::IsTrackFromPDG(const AliAODTrack *daugh,
60eac73d 3232 TClonesArray *arrayMC,
3233 Int_t pdgToBeCompared)
3234{
3235 //
3236 // Returs kTRUE if at the tracks comes
3237 // from particle with pdgCode=pdgToBeCompared
3238 //
3239
3240 Bool_t localFlag = kFALSE;
3241
3242 Int_t lab = daugh->GetLabel();
3243 if(lab<0) return localFlag;
3244 AliAODMCParticle *part= (AliAODMCParticle*)arrayMC->At(lab);
3245 //Int_t partPdg = part->GetPdgCode();
3246 //printf(" -------------------------------------- partLab=%d partPdg=%d ---\n", lab, partPdg);
3247
3248 Int_t motherLabel = part->GetMother();
3249 if(motherLabel<0) return localFlag;
3250
3251 AliAODMCParticle *motherPart = 0;
3252 Int_t motherPdg = 0;
3253 while (!localFlag && motherLabel>=0) {
3254 motherPart = (AliAODMCParticle*)arrayMC->At(motherLabel);
3255 motherPdg = motherPart->GetPdgCode();
3256 //printf(" ------------- motherLab=%d motherPdg=%d ---\n", motherLabel, motherPdg);
3257 if (TMath::Abs(motherPdg)==pdgToBeCompared) {
3258 //printf("-------------------------- trovato quark c/cbar\n");
3259 localFlag = kTRUE;
3260 }
3261 else {
3262 motherLabel = motherPart->GetMother();
3263 }
3264 }
3265
3266 return localFlag;
3267
7eb0cc73 3268}
7ad4b782 3269
60eac73d 3270
3271
3272
3273//-----------------------
3274Bool_t AliAnalysisTaskSELambdac::IsThereAGeneratedLc(TClonesArray *arrayMC)
3275{
3276 //
3277 // Returs kTRUE if there is a lepton related to the LambdaC
3278 //
3279
3280 Bool_t localFlag = kFALSE;
3281
3282 AliAODMCParticle *searchLc;
3283
3284 for (Int_t iii=0; iii<arrayMC->GetEntries(); iii++) {
3285 searchLc = (AliAODMCParticle*)arrayMC->At(iii);
3286 Int_t searchLcpdg = searchLc->GetPdgCode();
3287 if (TMath::Abs(searchLcpdg) == 4122){
3288 localFlag = kTRUE;
3289 break;
3290 }
3291 }
3292
3293
3294 return localFlag;
3295
3296}
3297//_________________________________
5d836c02 3298Int_t AliAnalysisTaskSELambdac::NumberPrimaries(const AliAODEvent *aods)
60eac73d 3299{
c1234468 3300///////////////estimate primaries
60eac73d 3301 Int_t counter=0;
3302
3303
3304 TClonesArray *aodtracks=(TClonesArray *)aods->GetTracks();
3305
4640c275 3306 // for(Int_t ji=0;ji<aods->GetNumberOfTracks();ji++)
60eac73d 3307 for(Int_t ji=0;ji<aodtracks->GetEntriesFast();ji++)
3308 {
3309 AliAODTrack*aodTrack=(AliAODTrack*)aodtracks->UncheckedAt(ji);
3310 if(aodTrack->IsPrimaryCandidate()) counter++;
3311 }
3312 return counter;
3313
3314}
3315//_________________________________
3316
3317void AliAnalysisTaskSELambdac::MultiplicityStudies(AliAODRecoDecayHF3Prong *part,
3318 AliRDHFCutsLctopKpi *cuts,
3319 AliAODEvent* aod,
3320 TClonesArray *arrMC,
3321 Bool_t &flag1,Bool_t &flag2,Bool_t &flag3,
3322 Bool_t &flag4, Bool_t &flag5, Bool_t &flag6)
3323{
c1234468 3324
3325
3326// Multiplicity studies
60eac73d 3327
3328 TString fillthis="";
3329
3330 Int_t pdgDgLctopKpi[3]={2212,321,211};
3331 Int_t lab=-9999;
3332 if(fReadMC)
3333 lab=part->MatchToMC(4122,arrMC,3,pdgDgLctopKpi); //return MC particle label if the array corresponds to a Lc, -1 if not (cf. AliAODRecoDecay.cxx)
3334
862f4ac0 3335 //cuts->SetUsePID(kFALSE); //Annalisa
60eac73d 3336 Int_t isSelected3ProngByLc=cuts->IsSelected(part,AliRDHFCuts::kCandidate,aod);
3337
3338 if(isSelected3ProngByLc>0 && fReadMC) {
3339 flag1 = kTRUE;
3340 if (lab>0) {
3341 flag3 = kTRUE;
3342 }
3343
3344 Bool_t is3ProngFromJPsi = Is3ProngFromPDG(part,arrMC,443);
3345 if (is3ProngFromJPsi) flag6=is3ProngFromJPsi;
3346
3347 Bool_t is3ProngFromC = Is3ProngFromPDG(part,arrMC,4);
3348 if (is3ProngFromC) flag4=is3ProngFromC;
3349
3350 Bool_t is3ProngFromB = Is3ProngFromPDG(part,arrMC,5);
3351 if (is3ProngFromB) flag5=is3ProngFromB;
3352
3353 for (Int_t ii=0; ii<3; ii++) {
3354 AliAODTrack *prongTest=(AliAODTrack*)part->GetDaughter(ii);
3355 if (!prongTest) continue;
3356 Int_t labprongTest = prongTest->GetLabel();
3357 if(labprongTest<0) continue;
3358 AliAODMCParticle *mcprongTest = (AliAODMCParticle*)arrMC->At(labprongTest);
3359
3360 switch (TMath::Abs(mcprongTest->GetPdgCode())) {
3361 case 11:
3362 fillthis="hElIn3Prong";
3363 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3364 if (IsTrackFromPDG(prongTest,arrMC,443)) {
3365 fillthis="hElIn3Prong6";
3366 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3367 }
3368 break;
3369 case 13:
3370 fillthis="hMuIn3Prong";
3371 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3372 if (IsTrackFromPDG(prongTest,arrMC,443)) {
3373 fillthis="hMuIn3Prong6";
3374 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3375 }
3376 break;
3377 case 211:
3378 fillthis="hPiIn3Prong";
3379 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3380 if (IsTrackFromPDG(prongTest,arrMC,443)) {
3381 fillthis="hPiIn3Prong6";
3382 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3383 }
3384 break;
3385 case 321:
3386 fillthis="hKaIn3Prong";
3387 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3388 if (IsTrackFromPDG(prongTest,arrMC,443)) {
3389 fillthis="hKaIn3Prong6";
3390 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3391 }
3392 break;
3393 case 2212:
3394 fillthis="hPrIn3Prong";
3395 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3396 if (IsTrackFromPDG(prongTest,arrMC,443)) {
3397 fillthis="hPrIn3Prong6";
3398 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3399 }
3400 break;
3401 default:
3402 break;
3403 }
3404
3405 if (lab>0) {
3406 switch (TMath::Abs(mcprongTest->GetPdgCode())) {
3407 case 11:
3408 fillthis="hElIn3Prong1";
3409 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3410 break;
3411 case 13:
3412 fillthis="hMuIn3Prong1";
3413 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3414 break;
3415 case 211:
3416 fillthis="hPiIn3Prong1";
3417 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3418 break;
3419 case 321:
3420 fillthis="hKaIn3Prong1";
3421 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3422 break;
3423 case 2212:
3424 fillthis="hPrIn3Prong1";
3425 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3426 break;
3427 default:
3428 break;
3429 }
3430 } else {
3431 switch (TMath::Abs(mcprongTest->GetPdgCode())) {
3432 case 11:
3433 fillthis="hElIn3Prong2";
3434 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3435 if (IsTrackFromPDG(prongTest,arrMC,4)) {
3436 fillthis="hElIn3Prong3";
3437 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3438 }
3439 if (IsTrackFromPDG(prongTest,arrMC,5)) {
3440 fillthis="hElIn3Prong4";
3441 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3442 }
3443 if (!IsTrackFromPDG(prongTest,arrMC,4) && !IsTrackFromPDG(prongTest,arrMC,5)) {
3444 fillthis="hElIn3Prong5";
3445 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3446 }
3447 break;
3448 case 13:
3449 fillthis="hMuIn3Prong2";
3450 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3451 if (IsTrackFromPDG(prongTest,arrMC,4)) {
3452 fillthis="hMuIn3Prong3";
3453 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3454 }
3455 if (IsTrackFromPDG(prongTest,arrMC,5)) {
3456 fillthis="hMuIn3Prong4";
3457 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3458 }
3459 if (!IsTrackFromPDG(prongTest,arrMC,4) && !IsTrackFromPDG(prongTest,arrMC,5)) {
3460 fillthis="hMuIn3Prong5";
3461 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3462 }
3463 break;
3464 case 211:
3465 fillthis="hPiIn3Prong2";
3466 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3467 if (IsTrackFromPDG(prongTest,arrMC,4)) {
3468 fillthis="hPiIn3Prong3";
3469 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3470 }
3471 if (IsTrackFromPDG(prongTest,arrMC,5)) {
3472 fillthis="hPiIn3Prong4";
3473 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3474 }
3475 if (!IsTrackFromPDG(prongTest,arrMC,4) && !IsTrackFromPDG(prongTest,arrMC,5)) {
3476 fillthis="hPiIn3Prong5";
3477 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3478 }
3479 break;
3480 case 321:
3481 fillthis="hKaIn3Prong2";
3482 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3483 if (IsTrackFromPDG(prongTest,arrMC,4)) {
3484 fillthis="hKaIn3Prong3";
3485 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3486 }
3487 if (IsTrackFromPDG(prongTest,arrMC,5)) {
3488 fillthis="hKaIn3Prong4";
3489 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3490 }
3491 if (!IsTrackFromPDG(prongTest,arrMC,4) && !IsTrackFromPDG(prongTest,arrMC,5)) {
3492 fillthis="hKaIn3Prong5";
3493 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3494 }
3495 break;
3496 case 2212:
3497 fillthis="hPrIn3Prong2";
3498 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3499 if (IsTrackFromPDG(prongTest,arrMC,4)) {
3500 fillthis="hPrIn3Prong3";
3501 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3502 }
3503 if (IsTrackFromPDG(prongTest,arrMC,5)) {
3504 fillthis="hPrIn3Prong4";
3505 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3506 }
3507 if (!IsTrackFromPDG(prongTest,arrMC,4) && !IsTrackFromPDG(prongTest,arrMC,5)) {
3508 fillthis="hPrIn3Prong5";
3509 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3510 }
3511 break;
3512 default:
3513 break;
3514 }
3515 }
3516 /*
3517 if (is3ProngFromC) {
3518 switch (TMath::Abs(mcprongTest->GetPdgCode())) {
3519 case 11:
3520 fillthis="hElIn3Prong3";
3521 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3522 break;
3523 case 13:
3524 fillthis="hMuIn3Prong3";
3525 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3526 break;
3527 case 211:
3528 fillthis="hPiIn3Prong3";
3529 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3530 break;
3531 case 321:
3532 fillthis="hKaIn3Prong3";
3533 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3534 break;
3535 case 2212:
3536 fillthis="hPrIn3Prong3";
3537 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3538 break;
3539 default:
3540 break;
3541 }
3542 } else { // !is3ProngFromC
3543 if (is3ProngFromB) {
3544 switch (TMath::Abs(mcprongTest->GetPdgCode())) {
3545 case 11:
3546 fillthis="hElIn3Prong4";
3547 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3548 break;
3549 case 13:
3550 fillthis="hMuIn3Prong4";
3551 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3552 break;
3553 case 211:
3554 fillthis="hPiIn3Prong4";
3555 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3556 break;
3557 case 321:
3558 fillthis="hKaIn3Prong4";
3559 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3560 break;
3561 case 2212:
3562 fillthis="hPrIn3Prong4";
3563 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3564 break;
3565 default:
3566 break;
3567 }
3568 } else {//!is3ProngFromB
3569 switch (TMath::Abs(mcprongTest->GetPdgCode())) {
3570 case 11:
3571 fillthis="hElIn3Prong5";
3572 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3573 break;
3574 case 13:
3575 fillthis="hMuIn3Prong5";
3576 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3577 break;
3578 case 211:
3579 fillthis="hPiIn3Prong5";
3580 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3581 break;
3582 case 321:
3583 fillthis="hKaIn3Prong5";
3584 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3585 break;
3586 case 2212:
3587 fillthis="hPrIn3Prong5";
3588 ((TH1F*)fAPriori->FindObject(fillthis))->Fill(part->PtProng(ii));
3589 break;
3590 default:
3591 break;
3592 }
3593 }
3594 }
3595 */
3596 }
3597 }
3598
3599 Double_t mPDG=TDatabasePDG::Instance()->GetParticle(4122)->Mass();
3600 Double_t invmasscut=0.05;
3601
3602 Double_t minvLcpKpi = part->InvMassLcpKpi();
3603 Double_t minvLcpiKp = part->InvMassLcpiKp();
3604
862f4ac0 3605 //cuts->SetUsePID(kTRUE); //Annalisa
60eac73d 3606 Int_t isSelected3ProngByLcPID=cuts->IsSelected(part,AliRDHFCuts::kCandidate,aod);
3607 if (isSelected3ProngByLcPID>0) {
3608 if (TMath::Abs(minvLcpKpi-mPDG)<invmasscut || TMath::Abs(minvLcpiKp-mPDG)<invmasscut) {
3609 flag2 = kTRUE;
3610 }
3611 }
3612
3613
3614}