33 #include <TParticle.h>
34 #include <TParticlePDG.h>
38 #include <THnSparse.h>
39 #include <TLorentzVector.h>
42 #include <TDatabasePDG.h>
43 #include <AliAnalysisDataSlot.h>
44 #include <AliAnalysisDataContainer.h>
46 #include "AliMCEvent.h"
47 #include "AliAnalysisManager.h"
48 #include "AliAODMCHeader.h"
49 #include "AliAODHandler.h"
51 #include "AliExternalTrackParam.h"
52 #include "AliAODVertex.h"
53 #include "AliESDVertex.h"
54 #include "AliAODRecoDecay.h"
57 #include "AliESDtrack.h"
58 #include "AliAODTrack.h"
60 #include "AliAODcascade.h"
61 #include "AliAODMCParticle.h"
62 #include "AliAnalysisTaskSE.h"
64 #include "AliPIDResponse.h"
65 #include "AliPIDCombined.h"
66 #include "AliTOFPIDResponse.h"
68 #include "AliInputEventHandler.h"
69 #include "AliESDtrackCuts.h"
70 #include "AliNeutralTrackParam.h"
71 #include "AliKFParticle.h"
72 #include "AliKFVertex.h"
73 #include "AliExternalTrackParam.h"
74 #include "AliESDtrack.h"
75 #include "AliCentrality.h"
76 #include "AliVertexerTracks.h"
77 #include "AliEventPoolManager.h"
98 fIsEventSelected(kFALSE),
99 fWriteVariableTree(kFALSE),
100 fWriteEachVariableTree(kFALSE),
101 fWriteMCVariableTree(kFALSE),
103 fEleVariablesTree(0),
104 fCascVariablesTree(0),
106 fMCEleVariablesTree(0),
107 fMCCascVariablesTree(0),
108 fMCGenPairVariablesTree(0),
109 fCorrelationVariablesTree(0),
110 fReconstructPrimVert(kFALSE),
116 fCandidateVariables(),
117 fCandidateEleVariables(),
118 fCandidateCascVariables(),
119 fCandidateMCVariables(),
120 fCandidateMCEleVariables(),
121 fCandidateMCCascVariables(),
122 fCandidateMCGenPairVariables(),
123 fCorrelationVariables(),
131 fUseCentralityV0M(kFALSE),
134 fMCDoPairAnalysis(kFALSE),
136 fHistoEleXiMassRS(0),
137 fHistoEleXiMassWS(0),
138 fHistoEleXiMassRSMix(0),
139 fHistoEleXiMassWSMix(0),
140 fHistoEleXiMassRSSide(0),
141 fHistoEleXiMassWSSide(0),
142 fHistoEleXiMassRS1(0),
143 fHistoEleXiMassWS1(0),
144 fHistoEleXiMassRSMix1(0),
145 fHistoEleXiMassWSMix1(0),
146 fHistoEleXiMassRSSide1(0),
147 fHistoEleXiMassWSSide1(0),
148 fHistoEleXiMassRS2(0),
149 fHistoEleXiMassWS2(0),
150 fHistoEleXiMassRSMix2(0),
151 fHistoEleXiMassWSMix2(0),
152 fHistoEleXiMassRSSide2(0),
153 fHistoEleXiMassWSSide2(0),
154 fHistoEleXiMassAway(0),
155 fHistoEleXiMassRSAway(0),
156 fHistoEleXiMassWSAway(0),
157 fHistoEleXiMassRSMixAway(0),
158 fHistoEleXiMassWSMixAway(0),
159 fHistoEleXiMassRSSideAway(0),
160 fHistoEleXiMassWSSideAway(0),
161 fHistoEleXiMassRS1Away(0),
162 fHistoEleXiMassWS1Away(0),
163 fHistoEleXiMassRSMix1Away(0),
164 fHistoEleXiMassWSMix1Away(0),
165 fHistoEleXiMassRSSide1Away(0),
166 fHistoEleXiMassWSSide1Away(0),
167 fHistoEleXiMassRS2Away(0),
168 fHistoEleXiMassWS2Away(0),
169 fHistoEleXiMassRSMix2Away(0),
170 fHistoEleXiMassWSMix2Away(0),
171 fHistoEleXiMassRSSide2Away(0),
172 fHistoEleXiMassWSSide2Away(0),
173 fHistoEleXiMassvsElePtRS(0),
174 fHistoEleXiMassvsElePtWS(0),
175 fHistoEleXiMassvsElePtRSMix(0),
176 fHistoEleXiMassvsElePtWSMix(0),
177 fHistoEleXiMassvsElePtRSSide(0),
178 fHistoEleXiMassvsElePtWSSide(0),
179 fHistoEleXiMassvsElePtRS1(0),
180 fHistoEleXiMassvsElePtWS1(0),
181 fHistoEleXiMassvsElePtRSMix1(0),
182 fHistoEleXiMassvsElePtWSMix1(0),
183 fHistoEleXiMassvsElePtRSSide1(0),
184 fHistoEleXiMassvsElePtWSSide1(0),
185 fHistoEleXiMassvsElePtRS2(0),
186 fHistoEleXiMassvsElePtWS2(0),
187 fHistoEleXiMassvsElePtRSMix2(0),
188 fHistoEleXiMassvsElePtWSMix2(0),
189 fHistoEleXiMassvsElePtRSSide2(0),
190 fHistoEleXiMassvsElePtWSSide2(0),
195 fHistoEleXiMassMCS(0),
196 fHistoEleXiMassMCS1(0),
197 fHistoEleXiMassMCS2(0),
198 fHistoEleXiMassXibMCS(0),
199 fHistoEleXiMassXibMCS1(0),
200 fHistoEleXiMassXibMCS2(0),
201 fHistoEleXiMassPromptMCS(0),
202 fHistoEleXiMassPromptMCS1(0),
203 fHistoEleXiMassPromptMCS2(0),
204 fHistoEleXiMassBFeeddownMCS(0),
205 fHistoEleXiMassBFeeddownMCS1(0),
206 fHistoEleXiMassBFeeddownMCS2(0),
207 fHistoEleXiMassMCGen(0),
208 fHistoEleXiMassvsElePtMCS(0),
209 fHistoEleXiMassvsElePtMCGen(0),
210 fHistoEleXiMassvsElePtMCS1(0),
211 fHistoEleXiMassvsElePtMCGen1(0),
212 fHistoEleXiMassvsElePtMCS2(0),
213 fHistoEleXiMassvsElePtMCGen2(0),
216 fHistoElePtvsEtaRS(0),
217 fHistoElePtvsEtaWS(0),
218 fHistoElePtvsEtaRSMix(0),
219 fHistoElePtvsEtaWSMix(0),
220 fHistoElePtvsEtaMCS(0),
221 fHistoElePtvsEtaMCGen(0),
222 fHistoElePtvsXiPtRS(0),
223 fHistoElePtvsXiPtWS(0),
224 fHistoElePtvsXiPtRSMix(0),
225 fHistoElePtvsXiPtWSMix(0),
226 fHistoElePtvsXiPtMCS(0),
227 fHistoElePtvsXiPtvsXicPtMCS(0),
228 fHistoElePtvsXiPtMCGen(0),
229 fHistoElePtvsXiPtvsXicPtMCGen(0),
230 fHistoElePtvsXiPtMCXicGen(0),
231 fHistoElePtvsd0RS(0),
232 fHistoElePtvsd0WS(0),
233 fHistoElePtvsd0RSMix(0),
234 fHistoElePtvsd0WSMix(0),
235 fHistoElePtvsd0MCS(0),
236 fHistoElePtvsd0PromptMCS(0),
237 fHistoElePtvsd0BFeeddownMCS(0),
240 fHistoBachPtMCGen(0),
243 fHistoXiMassvsPtMCS(0),
244 fHistoXiMassvsPtMCGen(0),
245 fHistoOmegaMassvsPt(0),
246 fHistoElectronTPCPID(0),
247 fHistoElectronTOFPID(0),
248 fHistoElectronTPCSelPID(0),
249 fHistoElectronTOFSelPID(0),
250 fHistoElectronTPCPIDSelTOF(0),
251 fHistoElectronTOFPIDSelTPC(0),
252 fHistoElectronTPCPIDSelTOFSmallEta(0),
253 fHistoElectronTPCPIDSelTOFLargeEta(0),
254 fHistoMassConversionsMin(0),
255 fHistoMassConversionsSameSignMin(0),
256 fHistoElectronQovPtvsPhi(0),
257 fHistoXiQovPtvsPhi(0),
265 fHistoXibMCGenWithXic(0),
267 fHistoXicElectronMCGen(0),
268 fHistoXicElectronMCGen1(0),
269 fHistoXicElectronMCGen2(0),
270 fHistoXicElectronMCS(0),
271 fHistoXicElectronMCS1(0),
272 fHistoXicElectronMCS2(0),
273 fHistoElectronMCGen(0),
274 fHistoBottomElectronMCGen(0),
275 fHistoCharmElectronMCGen(0),
277 fHistoLambdaPtvsDl(0),
278 fHistoLambdaPtvsDlSide(0),
279 fHistoLambdaPtvsDlMCS(0),
280 fHistoLambdaPtvsDR(0),
281 fHistoLambdaPtvsDRSide(0),
282 fHistoLambdaPtvsDRMCS(0),
283 fHistoEleXiPtvsRapidityRS(0),
284 fHistoEleXiPtvsRapidityWS(0),
285 fHistoEleXiPtvsRapidityMCS(0),
286 fHistoResponseElePt(0),
287 fHistoResponseXiPt(0),
288 fHistoResponseEleXiPt(0),
289 fHistoResponseXiPtvsEleXiPt(0),
290 fHistoResponseXiPtXib(0),
291 fHistoResponseEleXiPtXib(0),
292 fHistoResponseMcGenXibPtvsXicPt(0),
294 fHistoElectronPi0Total(0),
295 fHistoElectronPi0Tag(0),
297 fHistoElectronEtaTotal(0),
298 fHistoElectronEtaTag(0),
300 fHistonEvtvsRunNumber(0),
301 fHistonElevsRunNumber(0),
302 fHistonXivsRunNumber(0),
303 fHistoMCEventType(0),
304 fHistoMCXic0Decays(0),
305 fHistoMCDeltaPhiccbar(0),
307 fGTI(0),fGTIndex(0), fTrackBuffSize(19000),
308 fHistodPhiSdEtaSElectronProtonR125RS(0),
309 fHistodPhiSdEtaSElectronProtonR125WS(0),
310 fHistodPhiSdEtaSElectronProtonR125RSMix(0),
311 fHistodPhiSdEtaSElectronProtonR125WSMix(0),
312 fHistodPhiSdEtaSElectronPionR125RS(0),
313 fHistodPhiSdEtaSElectronPionR125WS(0),
314 fHistodPhiSdEtaSElectronPionR125RSMix(0),
315 fHistodPhiSdEtaSElectronPionR125WSMix(0),
316 fHistodPhiSdEtaSElectronBachelorR125RS(0),
317 fHistodPhiSdEtaSElectronBachelorR125WS(0),
318 fHistodPhiSdEtaSElectronBachelorR125RSMix(0),
319 fHistodPhiSdEtaSElectronBachelorR125WSMix(0),
321 fMixWithoutConversionFlag(kFALSE),
322 fNumberOfEventsForMixing (5),
328 fElectronTracks(0x0),
329 fCascadeTracks1(0x0),
330 fCascadeTracks2(0x0),
331 fElectronCutVarsArray(0x0),
332 fCascadeCutVarsArray1(0x0),
333 fCascadeCutVarsArray2(0x0)
338 for(Int_t i=0;i<23;i++){
343 for(Int_t i=0;i<8;i++){
351 Bool_t writeVariableTree) :
352 AliAnalysisTaskSE(name),
361 fIsEventSelected(kFALSE),
362 fWriteVariableTree(writeVariableTree),
363 fWriteEachVariableTree(kFALSE),
364 fWriteMCVariableTree(kFALSE),
366 fEleVariablesTree(0),
367 fCascVariablesTree(0),
369 fMCEleVariablesTree(0),
370 fMCCascVariablesTree(0),
371 fMCGenPairVariablesTree(0),
372 fCorrelationVariablesTree(0),
373 fReconstructPrimVert(kFALSE),
379 fCandidateVariables(),
380 fCandidateEleVariables(),
381 fCandidateCascVariables(),
382 fCandidateMCVariables(),
383 fCandidateMCEleVariables(),
384 fCandidateMCCascVariables(),
385 fCandidateMCGenPairVariables(),
386 fCorrelationVariables(),
394 fUseCentralityV0M(kFALSE),
397 fMCDoPairAnalysis(kFALSE),
399 fHistoEleXiMassRS(0),
400 fHistoEleXiMassWS(0),
401 fHistoEleXiMassRSMix(0),
402 fHistoEleXiMassWSMix(0),
403 fHistoEleXiMassRSSide(0),
404 fHistoEleXiMassWSSide(0),
405 fHistoEleXiMassRS1(0),
406 fHistoEleXiMassWS1(0),
407 fHistoEleXiMassRSMix1(0),
408 fHistoEleXiMassWSMix1(0),
409 fHistoEleXiMassRSSide1(0),
410 fHistoEleXiMassWSSide1(0),
411 fHistoEleXiMassRS2(0),
412 fHistoEleXiMassWS2(0),
413 fHistoEleXiMassRSMix2(0),
414 fHistoEleXiMassWSMix2(0),
415 fHistoEleXiMassRSSide2(0),
416 fHistoEleXiMassWSSide2(0),
417 fHistoEleXiMassAway(0),
418 fHistoEleXiMassRSAway(0),
419 fHistoEleXiMassWSAway(0),
420 fHistoEleXiMassRSMixAway(0),
421 fHistoEleXiMassWSMixAway(0),
422 fHistoEleXiMassRSSideAway(0),
423 fHistoEleXiMassWSSideAway(0),
424 fHistoEleXiMassRS1Away(0),
425 fHistoEleXiMassWS1Away(0),
426 fHistoEleXiMassRSMix1Away(0),
427 fHistoEleXiMassWSMix1Away(0),
428 fHistoEleXiMassRSSide1Away(0),
429 fHistoEleXiMassWSSide1Away(0),
430 fHistoEleXiMassRS2Away(0),
431 fHistoEleXiMassWS2Away(0),
432 fHistoEleXiMassRSMix2Away(0),
433 fHistoEleXiMassWSMix2Away(0),
434 fHistoEleXiMassRSSide2Away(0),
435 fHistoEleXiMassWSSide2Away(0),
436 fHistoEleXiMassvsElePtRS(0),
437 fHistoEleXiMassvsElePtWS(0),
438 fHistoEleXiMassvsElePtRSMix(0),
439 fHistoEleXiMassvsElePtWSMix(0),
440 fHistoEleXiMassvsElePtRSSide(0),
441 fHistoEleXiMassvsElePtWSSide(0),
442 fHistoEleXiMassvsElePtRS1(0),
443 fHistoEleXiMassvsElePtWS1(0),
444 fHistoEleXiMassvsElePtRSMix1(0),
445 fHistoEleXiMassvsElePtWSMix1(0),
446 fHistoEleXiMassvsElePtRSSide1(0),
447 fHistoEleXiMassvsElePtWSSide1(0),
448 fHistoEleXiMassvsElePtRS2(0),
449 fHistoEleXiMassvsElePtWS2(0),
450 fHistoEleXiMassvsElePtRSMix2(0),
451 fHistoEleXiMassvsElePtWSMix2(0),
452 fHistoEleXiMassvsElePtRSSide2(0),
453 fHistoEleXiMassvsElePtWSSide2(0),
458 fHistoEleXiMassMCS(0),
459 fHistoEleXiMassMCS1(0),
460 fHistoEleXiMassMCS2(0),
461 fHistoEleXiMassXibMCS(0),
462 fHistoEleXiMassXibMCS1(0),
463 fHistoEleXiMassXibMCS2(0),
464 fHistoEleXiMassPromptMCS(0),
465 fHistoEleXiMassPromptMCS1(0),
466 fHistoEleXiMassPromptMCS2(0),
467 fHistoEleXiMassBFeeddownMCS(0),
468 fHistoEleXiMassBFeeddownMCS1(0),
469 fHistoEleXiMassBFeeddownMCS2(0),
470 fHistoEleXiMassMCGen(0),
471 fHistoEleXiMassvsElePtMCS(0),
472 fHistoEleXiMassvsElePtMCGen(0),
473 fHistoEleXiMassvsElePtMCS1(0),
474 fHistoEleXiMassvsElePtMCGen1(0),
475 fHistoEleXiMassvsElePtMCS2(0),
476 fHistoEleXiMassvsElePtMCGen2(0),
479 fHistoElePtvsEtaRS(0),
480 fHistoElePtvsEtaWS(0),
481 fHistoElePtvsEtaRSMix(0),
482 fHistoElePtvsEtaWSMix(0),
483 fHistoElePtvsEtaMCS(0),
484 fHistoElePtvsEtaMCGen(0),
485 fHistoElePtvsXiPtRS(0),
486 fHistoElePtvsXiPtWS(0),
487 fHistoElePtvsXiPtRSMix(0),
488 fHistoElePtvsXiPtWSMix(0),
489 fHistoElePtvsXiPtMCS(0),
490 fHistoElePtvsXiPtvsXicPtMCS(0),
491 fHistoElePtvsXiPtMCGen(0),
492 fHistoElePtvsXiPtvsXicPtMCGen(0),
493 fHistoElePtvsXiPtMCXicGen(0),
494 fHistoElePtvsd0RS(0),
495 fHistoElePtvsd0WS(0),
496 fHistoElePtvsd0RSMix(0),
497 fHistoElePtvsd0WSMix(0),
498 fHistoElePtvsd0MCS(0),
499 fHistoElePtvsd0PromptMCS(0),
500 fHistoElePtvsd0BFeeddownMCS(0),
503 fHistoBachPtMCGen(0),
506 fHistoXiMassvsPtMCS(0),
507 fHistoXiMassvsPtMCGen(0),
508 fHistoOmegaMassvsPt(0),
509 fHistoElectronTPCPID(0),
510 fHistoElectronTOFPID(0),
511 fHistoElectronTPCSelPID(0),
512 fHistoElectronTOFSelPID(0),
513 fHistoElectronTPCPIDSelTOF(0),
514 fHistoElectronTOFPIDSelTPC(0),
515 fHistoElectronTPCPIDSelTOFSmallEta(0),
516 fHistoElectronTPCPIDSelTOFLargeEta(0),
517 fHistoMassConversionsMin(0),
518 fHistoMassConversionsSameSignMin(0),
519 fHistoElectronQovPtvsPhi(0),
520 fHistoXiQovPtvsPhi(0),
528 fHistoXibMCGenWithXic(0),
530 fHistoXicElectronMCGen(0),
531 fHistoXicElectronMCGen1(0),
532 fHistoXicElectronMCGen2(0),
533 fHistoXicElectronMCS(0),
534 fHistoXicElectronMCS1(0),
535 fHistoXicElectronMCS2(0),
536 fHistoElectronMCGen(0),
537 fHistoBottomElectronMCGen(0),
538 fHistoCharmElectronMCGen(0),
540 fHistoLambdaPtvsDl(0),
541 fHistoLambdaPtvsDlSide(0),
542 fHistoLambdaPtvsDlMCS(0),
543 fHistoLambdaPtvsDR(0),
544 fHistoLambdaPtvsDRSide(0),
545 fHistoLambdaPtvsDRMCS(0),
546 fHistoEleXiPtvsRapidityRS(0),
547 fHistoEleXiPtvsRapidityWS(0),
548 fHistoEleXiPtvsRapidityMCS(0),
549 fHistoResponseElePt(0),
550 fHistoResponseXiPt(0),
551 fHistoResponseEleXiPt(0),
552 fHistoResponseXiPtvsEleXiPt(0),
553 fHistoResponseXiPtXib(0),
554 fHistoResponseEleXiPtXib(0),
555 fHistoResponseMcGenXibPtvsXicPt(0),
557 fHistoElectronPi0Total(0),
558 fHistoElectronPi0Tag(0),
560 fHistoElectronEtaTotal(0),
561 fHistoElectronEtaTag(0),
563 fHistonEvtvsRunNumber(0),
564 fHistonElevsRunNumber(0),
565 fHistonXivsRunNumber(0),
566 fHistoMCEventType(0),
567 fHistoMCXic0Decays(0),
568 fHistoMCDeltaPhiccbar(0),
570 fGTI(0),fGTIndex(0), fTrackBuffSize(19000),
571 fHistodPhiSdEtaSElectronProtonR125RS(0),
572 fHistodPhiSdEtaSElectronProtonR125WS(0),
573 fHistodPhiSdEtaSElectronProtonR125RSMix(0),
574 fHistodPhiSdEtaSElectronProtonR125WSMix(0),
575 fHistodPhiSdEtaSElectronPionR125RS(0),
576 fHistodPhiSdEtaSElectronPionR125WS(0),
577 fHistodPhiSdEtaSElectronPionR125RSMix(0),
578 fHistodPhiSdEtaSElectronPionR125WSMix(0),
579 fHistodPhiSdEtaSElectronBachelorR125RS(0),
580 fHistodPhiSdEtaSElectronBachelorR125WS(0),
581 fHistodPhiSdEtaSElectronBachelorR125RSMix(0),
582 fHistodPhiSdEtaSElectronBachelorR125WSMix(0),
584 fMixWithoutConversionFlag(kFALSE),
585 fNumberOfEventsForMixing (5),
591 fElectronTracks(0x0),
592 fCascadeTracks1(0x0),
593 fCascadeTracks2(0x0),
594 fElectronCutVarsArray(0x0),
595 fCascadeCutVarsArray1(0x0),
596 fCascadeCutVarsArray2(0x0)
601 Info(
"AliAnalysisTaskSEXic2eleXifromAODtracks",
"Calling Constructor");
603 for(Int_t i=0;i<23;i++){
608 for(Int_t i=0;i<8;i++){
612 DefineOutput(1,TList::Class());
613 DefineOutput(2,TList::Class());
614 DefineOutput(3,TList::Class());
615 DefineOutput(4,TTree::Class());
616 DefineOutput(5,TTree::Class());
617 DefineOutput(6,TTree::Class());
618 DefineOutput(7,TTree::Class());
619 DefineOutput(8,AliNormalizationCounter::Class());
620 DefineOutput(9,TTree::Class());
621 DefineOutput(10,TTree::Class());
622 DefineOutput(11,TTree::Class());
623 DefineOutput(12,TTree::Class());
631 Info(
"~AliAnalysisTaskSEXic2eleXifromAODtracks",
"Calling Destructor");
727 if (fDebug > 1) AliInfo(
"Init");
746 AliError(
"NO EVENT FOUND!");
749 AliAODEvent* aodEvent =
dynamic_cast<AliAODEvent*
>(fInputEvent);
757 fBzkG = (Double_t)aodEvent->GetMagneticField();
758 AliKFParticle::SetField(
fBzkG);
759 if (TMath::Abs(
fBzkG)<0.001) {
770 TClonesArray *mcArray = 0;
771 AliAODMCHeader *mcHeader=0;
774 mcArray =
dynamic_cast<TClonesArray*
>(aodEvent->FindListObject(AliAODMCParticle::StdBranchName()));
776 AliError(
"Could not find Monte-Carlo in AOD");
782 mcHeader = (AliAODMCHeader*)aodEvent->GetList()->FindObject(AliAODMCHeader::StdBranchName());
784 AliError(
"AliAnalysisTaskSEXic2eleXifromAODtracks::UserExec: MC header branch not found!\n");
789 Double_t zMCVertex = mcHeader->GetVtxZ();
791 AliDebug(2,Form(
"Event rejected: abs(zVtxMC)=%f > fAnalCuts->GetMaxVtxZ()=%f",zMCVertex,
fAnalCuts->
GetMaxVtxZ()));
805 fVtx1 = (AliAODVertex*)aodEvent->GetPrimaryVertex();
808 Double_t pos[3],cov[6];
810 fVtx1->GetCovarianceMatrix(cov);
811 fV1 =
new AliESDVertex(pos,cov,100.,100,
fVtx1->GetName());
824 fIsMB=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kMB)==(AliVEvent::kMB);
825 fIsSemi=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kSemiCentral)==(AliVEvent::kSemiCentral);
826 fIsCent=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kCentral)==(AliVEvent::kCentral);
827 fIsINT7=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kINT7)==(AliVEvent::kINT7);
828 fIsEMC7=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kEMC7)==(AliVEvent::kEMC7);
842 AliCentrality *cent = aodEvent->GetCentrality();
843 fCentrality = cent->GetCentralityPercentile(
"V0M");
847 if(fCentrality<0.||fCentrality>100.-0.0000001) {
854 Int_t runnumber_offset = 0;
855 Int_t runnumber = aodEvent->GetRunNumber();
856 if(runnumber<=131000&&runnumber>=114000){
857 runnumber_offset = 114000;
858 }
else if(runnumber<=196000&&runnumber>=195000){
859 runnumber_offset = 195000;
860 }
else if(runnumber<=170593&&runnumber>=167902){
861 runnumber_offset = 167902;
906 AliAnalysisTaskSE::Terminate();
908 fOutput =
dynamic_cast<TList*
> (GetOutputData(1));
910 AliError(
"fOutput not available");
914 fOutputAll =
dynamic_cast<TList*
> (GetOutputData(3));
916 AliError(
"fOutputAll not available");
972 TString normName=
"NormalizationCounter";
973 AliAnalysisDataContainer *cont = GetOutputSlot(8)->GetContainer();
974 if(cont)normName=(TString)cont->GetName();
996 fEventBuffer[i]=
new TTree(Form(
"EventBuffer_%d",i),
"Temporary buffer for event mixing");
1016 AliAODEvent *aodEvent, TClonesArray *mcArray
1025 if(fDoEventMixing && fElectronTracks) fElectronTracks->Delete();
1026 if(fDoEventMixing && fCascadeTracks1) fCascadeTracks1->Delete();
1027 if(fDoEventMixing && fCascadeTracks2) fCascadeTracks2->Delete();
1028 if(fDoEventMixing && fCascadeCutVarsArray1) fCascadeCutVarsArray1->Delete();
1029 if(fDoEventMixing && fCascadeCutVarsArray2) fCascadeCutVarsArray2->Delete();
1031 ResetGlobalTrackReference();
1033 for (Int_t iTrack=0;iTrack<aodEvent->GetNumberOfTracks();iTrack++){
1035 AliAODTrack *track =
dynamic_cast<AliAODTrack *
>(aodEvent->GetTrack(iTrack));
1036 if (!track)
continue;
1039 StoreGlobalTrackReference(track,iTrack);
1043 Int_t nCascs= aodEvent->GetNumberOfCascades();
1044 Int_t nTracks= aodEvent->GetNumberOfTracks();
1046 Bool_t seleTrkFlags[nTracks];
1048 SelectTrack(aodEvent,nTracks,nSeleTrks,seleTrkFlags,mcArray);
1050 Bool_t seleCascFlags[nCascs];
1052 SelectCascade(aodEvent,nCascs,nSeleCasc,seleCascFlags,mcArray);
1054 Int_t runnumber_offset = 0;
1055 Int_t runnumber = aodEvent->GetRunNumber();
1056 if(runnumber<=131000&&runnumber>=114000){
1057 runnumber_offset = 114000;
1058 }
else if(runnumber<=196000&&runnumber>=195000){
1059 runnumber_offset = 195000;
1060 }
else if(runnumber<=170593&&runnumber>=167902){
1061 runnumber_offset = 167902;
1063 fHistonElevsRunNumber->Fill(runnumber-runnumber_offset,nSeleTrks);
1064 fHistonXivsRunNumber->Fill(runnumber-runnumber_offset,nSeleCasc);
1069 for (Int_t icasc = 0; icasc<nCascs; icasc++) {
1070 if(!seleCascFlags[icasc])
continue;
1071 AliAODcascade *casc = aodEvent->GetCascade(icasc);
1074 AliAODTrack *cptrack = (AliAODTrack*)(casc->GetDaughter(0));
1075 AliAODTrack *cntrack = (AliAODTrack*)(casc->GetDaughter(1));
1076 AliAODTrack *cbtrack = (AliAODTrack*)(casc->GetDecayVertexXi()->GetDaughter(0));
1081 for (Int_t itrk = 0; itrk<nTracks; itrk++) {
1082 if(!seleTrkFlags[itrk])
continue;
1083 AliAODTrack *trk = (AliAODTrack*)aodEvent->GetTrack(itrk);
1091 AliAODTrack *trkpid = 0;
1092 if(fAnalCuts->GetProdAODFilterBit()==7){
1093 trkpid = fGTI[-trk->GetID()-1];
1098 Int_t cpid = cptrack->GetID();
1099 Int_t cnid = cntrack->GetID();
1100 Int_t cbid = cbtrack->GetID();
1101 Int_t lpid = trkpid->GetID();
1102 if((cpid==lpid)||(cnid==lpid)||(cbid==lpid))
continue;
1104 AliAODVertex *secVert = ReconstructSecondaryVertex(casc,trk,aodEvent);
1105 if(!secVert)
continue;
1112 FillROOTObjects(exobj, casc,trk,trkpid,aodEvent,mcArray);
1114 exobj->GetSecondaryVtx()->RemoveDaughters();
1116 delete exobj;exobj=NULL;
1122 fEventInfo->SetString(Form(
"Ev%d_esd%d_E%d_C%d",AliAnalysisManager::GetAnalysisManager()->GetNcalls(),((AliAODHeader*)aodEvent->GetHeader())->GetEventNumberESDFile(),fElectronTracks->GetEntries(),fCascadeTracks1->GetEntries()+fCascadeTracks2->GetEntries()));
1123 Int_t ind=GetPoolIndex(fVtxZ,fCentrality);
1124 if(ind>=0 && ind<fNOfPools){
1125 if(fEventBuffer[ind]->GetEntries() >= fNumberOfEventsForMixing){
1126 DoEventMixingWithPools(ind);
1127 if(fEventBuffer[ind]->GetEntries() >= 20*fNumberOfEventsForMixing){
1131 fEventBuffer[ind]->Fill();
1144 const char* nameoutput = GetOutputSlot(4)->GetContainer()->GetName();
1145 fVariablesTree =
new TTree(nameoutput,
"Candidates variables tree");
1148 TString * fCandidateVariableNames =
new TString[nVar];
1150 fCandidateVariableNames[ 0]=
"Centrality";
1151 fCandidateVariableNames[ 1]=
"InvMassEleXi";
1152 fCandidateVariableNames[ 2]=
"EleXiPt";
1153 fCandidateVariableNames[ 3]=
"EleXiPx";
1154 fCandidateVariableNames[ 4]=
"EleXiPy";
1155 fCandidateVariableNames[ 5]=
"EleXiPz";
1156 fCandidateVariableNames[ 6]=
"ElePx";
1157 fCandidateVariableNames[ 7]=
"ElePy";
1158 fCandidateVariableNames[ 8]=
"ElePz";
1159 fCandidateVariableNames[ 9]=
"XiPx";
1160 fCandidateVariableNames[10]=
"XiPy";
1161 fCandidateVariableNames[11]=
"XiPz";
1162 fCandidateVariableNames[12]=
"XiCharge";
1163 fCandidateVariableNames[13]=
"MassXi";
1164 fCandidateVariableNames[14]=
"MassLambda";
1165 fCandidateVariableNames[15]=
"Eled0";
1166 fCandidateVariableNames[16]=
"Xid0";
1167 fCandidateVariableNames[17]=
"nSigmaTPCele";
1168 fCandidateVariableNames[18]=
"nSigmaTOFele";
1169 fCandidateVariableNames[19]=
"nSigmaTPCpr_etrk";
1170 fCandidateVariableNames[20]=
"nSigmaTOFpr_etrk";
1171 fCandidateVariableNames[21]=
"nSigmaTPCka_etrk";
1172 fCandidateVariableNames[22]=
"nSigmaTOFka_etrk";
1173 fCandidateVariableNames[23]=
"nSigmaTPCv0pr";
1174 fCandidateVariableNames[24]=
"nSigmaTOFv0pr";
1175 fCandidateVariableNames[25]=
"nSigmaTPCv0pi";
1176 fCandidateVariableNames[26]=
"nSigmaTOFv0pi";
1177 fCandidateVariableNames[27]=
"nSigmaTPCbachpi";
1178 fCandidateVariableNames[28]=
"nSigmaTOFbachpi";
1179 fCandidateVariableNames[29]=
"EleCharge";
1180 fCandidateVariableNames[30]=
"Mixing";
1181 fCandidateVariableNames[31]=
"DcaXiDaughters";
1182 fCandidateVariableNames[32]=
"DcaV0Daughters";
1183 fCandidateVariableNames[33]=
"DecayLengthXi";
1184 fCandidateVariableNames[34]=
"CosPointingAngleXi";
1185 fCandidateVariableNames[35]=
"DcaV0toPrimVertex";
1186 fCandidateVariableNames[36]=
"DcaPostoPrimVertex";
1187 fCandidateVariableNames[37]=
"DcaNegtoPrimVertex";
1188 fCandidateVariableNames[38]=
"DcaBachtoPrimVertex";
1189 fCandidateVariableNames[39]=
"DecayLengthV0";
1190 fCandidateVariableNames[40]=
"CosPointingAngleV0";
1192 fCandidateVariableNames[41]=
"mcpdgxic";
1193 fCandidateVariableNames[42]=
"mclabxic";
1194 fCandidateVariableNames[43]=
"mcxicpx";
1195 fCandidateVariableNames[44]=
"mcxicpy";
1196 fCandidateVariableNames[45]=
"mcxicpz";
1197 fCandidateVariableNames[46]=
"mcelepx";
1198 fCandidateVariableNames[47]=
"mcelepy";
1199 fCandidateVariableNames[48]=
"mcelepz";
1200 fCandidateVariableNames[49]=
"mccascpx";
1201 fCandidateVariableNames[50]=
"mccascpy";
1202 fCandidateVariableNames[51]=
"mccascpz";
1204 fCandidateVariableNames[52]=
"mcpdgele";
1205 fCandidateVariableNames[53]=
"mcpdgcasc";
1206 fCandidateVariableNames[54]=
"mcpdgmomele";
1207 fCandidateVariableNames[55]=
"mcpdgmomcasc";
1208 fCandidateVariableNames[56]=
"mcpdggrmomele";
1209 fCandidateVariableNames[57]=
"mcpdggrmomcasc";
1210 fCandidateVariableNames[58]=
"mcngenele";
1211 fCandidateVariableNames[59]=
"mcngencasc";
1213 fCandidateVariableNames[60]=
"nSigmaTPCpi_etrk";
1214 fCandidateVariableNames[61]=
"nSigmaTOFpi_etrk";
1216 fCandidateVariableNames[62]=
"V0PosPx";
1217 fCandidateVariableNames[63]=
"V0PosPy";
1218 fCandidateVariableNames[64]=
"V0PosPz";
1219 fCandidateVariableNames[65]=
"V0NegPx";
1220 fCandidateVariableNames[66]=
"V0NegPy";
1221 fCandidateVariableNames[67]=
"V0NegPz";
1222 fCandidateVariableNames[68]=
"V0VertX";
1223 fCandidateVariableNames[69]=
"V0VertY";
1224 fCandidateVariableNames[70]=
"V0VertZ";
1225 fCandidateVariableNames[71]=
"BachPx";
1226 fCandidateVariableNames[72]=
"BachPy";
1227 fCandidateVariableNames[73]=
"BachPz";
1228 fCandidateVariableNames[74]=
"XiVertX";
1229 fCandidateVariableNames[75]=
"XiVertY";
1230 fCandidateVariableNames[76]=
"XiVertZ";
1231 fCandidateVariableNames[77]=
"PrimVertX";
1232 fCandidateVariableNames[78]=
"PrimVertY";
1233 fCandidateVariableNames[79]=
"PrimVertZ";
1235 fCandidateVariableNames[80]=
"MassOmega";
1237 fCandidateVariableNames[81]=
"EleITSMatch";
1238 fCandidateVariableNames[82]=
"BachITSMatch";
1239 fCandidateVariableNames[83]=
"V0PosITSMatch";
1240 fCandidateVariableNames[84]=
"V0NegITSMatch";
1242 fCandidateVariableNames[85]=
"TPCNclsF";
1243 fCandidateVariableNames[86]=
"TPCNcls";
1244 fCandidateVariableNames[87]=
"TPCNclsS";
1245 fCandidateVariableNames[88]=
"IsXiPeakReagion";
1248 fCandidateVariableNames[89]=
"MagneticField";
1249 fCandidateVariableNames[90]=
"EvNumber";
1250 fCandidateVariableNames[91]=
"RunNumber";
1252 for (Int_t ivar=0; ivar<nVar; ivar++) {
1269 for(Int_t i=0;i<92;i++){
1274 AliAODTrack *cptrack = (AliAODTrack*)(casc->GetDaughter(0));
1275 AliAODTrack *cntrack = (AliAODTrack*)(casc->GetDaughter(1));
1276 AliAODTrack *cbtrack = (AliAODTrack*)(casc->GetDecayVertexXi()->GetDaughter(0));
1286 Double_t pxe = exobj->PxProng(0);
1287 Double_t pye = exobj->PyProng(0);
1288 Double_t pze = exobj->PzProng(0);
1289 Double_t mome = sqrt(pxe*pxe+pye*pye+pze*pze);
1290 Double_t Ee = sqrt(mome*mome+0.000510998928*0.000510998928);
1291 Double_t pxv = exobj->PxProng(1);
1292 Double_t pyv = exobj->PyProng(1);
1293 Double_t pzv = exobj->PzProng(1);
1294 Double_t momv = sqrt(pxv*pxv+pyv*pyv+pzv*pzv);
1295 Double_t Ev = sqrt(momv*momv+1.32171*1.32171);
1296 Double_t cosoa = (pxe*pxv+pye*pyv+pze*pzv)/mome/momv;
1297 Double_t Esum = Ee + Ev;
1299 Double_t uxe = pxe/mome;
1300 Double_t uye = pye/mome;
1301 Double_t uze = pze/mome;
1302 Double_t lf = -2.*(pxv*uxe+pyv*uye+pzv*uze);
1303 Double_t pxv_flip = pxv + lf * uxe;
1304 Double_t pyv_flip = pyv + lf * uye;
1305 Double_t pzv_flip = pzv + lf * uze;
1306 Double_t pxsum_flip = pxe + pxv_flip;
1307 Double_t pysum_flip = pye + pyv_flip;
1308 Double_t pzsum_flip = pze + pzv_flip;
1309 Double_t mexi_flip = sqrt(Esum*Esum-pxsum_flip*pxsum_flip-pysum_flip*pysum_flip-pzsum_flip*pzsum_flip);
1310 Double_t ptexi_flip = sqrt(pxsum_flip*pxsum_flip+pysum_flip*pysum_flip);
1312 Double_t minmass_ee = 9999.;
1314 Double_t minmasslike_ee = 9999.;
1318 Double_t posVtx[3] = {0.,0.,0.};
1319 fVtx1->GetXYZ(posVtx);
1322 UInt_t pdgdg[2]={11,3312};
1336 if(casc->ChargeXi()<0)
1343 Double_t nSigmaTPCele = -9999.;
1344 Double_t nSigmaTOFele = -9999.;
1366 Double_t nSigmaTPCv0pr=-9999.;
1367 Double_t nSigmaTOFv0pr=-9999.;
1368 Double_t nSigmaTPCv0pi=-9999.;
1369 Double_t nSigmaTOFv0pi=-9999.;
1370 Double_t nSigmaTPCbachpi=-9999.;
1371 Double_t nSigmaTOFbachpi=-9999.;
1374 if(casc->ChargeXi()>0){
1409 AliAODMCParticle *mcxic = 0;
1410 AliAODMCParticle *mcele = 0;
1411 AliAODMCParticle *mccasc = 0;
1413 Int_t mcpdgele_array[100];
1414 Int_t mcpdgcasc_array[100];
1415 Int_t mclabelele_array[100];
1416 Int_t mclabelcasc_array[100];
1417 Int_t mcngen_ele = -9999;
1418 Int_t mcngen_casc = -9999;
1421 mclabxic =
MatchToMC(exobj,mcArray,mcpdgele_array, mcpdgcasc_array,mclabelele_array,mclabelcasc_array,mcngen_ele,mcngen_casc);
1424 mcxic = (AliAODMCParticle*) mcArray->At(mclabxic);
1425 if(mclabelele_array[0]>=0)
1426 mcele = (AliAODMCParticle*) mcArray->At(mclabelele_array[0]);
1427 if(mclabelcasc_array[0]>=0)
1428 mccasc = (AliAODMCParticle*) mcArray->At(mclabelcasc_array[0]);
1495 Double_t dphis_ele_pr, detas_ele_pr,dphis_ele_pi, detas_ele_pi, dphis_ele_bach, detas_ele_bach;
1496 dphis_ele_pr = 9999.;detas_ele_pr = 9999.;dphis_ele_pi = 9999.;detas_ele_pi = 9999.;dphis_ele_bach=9999.;detas_ele_bach=9999.;
1501 cont[0] = exobj->InvMass(2,pdgdg);
1502 cont[1] = exobj->Pt();
1503 cont[2] = exobj->Getd0Prong(0)*trk->Charge();
1507 Double_t cont_flip[4];
1508 cont_flip[0] = mexi_flip;
1509 cont_flip[1] = ptexi_flip;
1514 cont2[0] = exobj->InvMass(2,pdgdg);
1515 cont2[1] = trk->Pt();
1518 Double_t cont_eleptvseta[3];
1519 cont_eleptvseta[0] = trk->Pt();
1520 cont_eleptvseta[1] = trk->Eta();
1523 Double_t cont_eleptvsxipt[3];
1524 cont_eleptvsxipt[0] = trk->Pt();
1525 cont_eleptvsxipt[1] = sqrt(casc->MomXiX()*casc->MomXiX()+casc->MomXiY()*casc->MomXiY());
1528 Double_t cont_eleptvsd0[3];
1529 cont_eleptvsd0[0] = trk->Pt();
1530 cont_eleptvsd0[1] = exobj->Getd0Prong(0)*trk->Charge();
1533 Double_t exobj_mass = exobj->InvMass(2,pdgdg);
1534 Double_t exobj_px = exobj->Px();
1535 Double_t exobj_py = exobj->Py();
1536 Double_t exobj_pz = exobj->Pz();
1537 Double_t exobj_E = sqrt(exobj_mass*exobj_mass+exobj_px*exobj_px+exobj_py*exobj_py+exobj_pz*exobj_pz);
1538 Double_t exobj_rap = 0.5*log((exobj_E+exobj_pz)/(exobj_E-exobj_pz));
1545 if(trk->Charge()*casc->ChargeXi()<0){
1558 for(Int_t ih=0;ih<23;ih++){
1559 Double_t cont_eleptvscutvars[3];
1560 cont_eleptvscutvars[0] = exobj->Pt();
1564 cont_eleptvscutvars[1] = trk->GetTPCNcls();
1566 cont_eleptvscutvars[1] = trk->GetTPCsignalN();
1568 cont_eleptvscutvars[1] = nSigmaTPCele;
1570 cont_eleptvscutvars[1] = nSigmaTOFele;
1572 cont_eleptvscutvars[1] = trk->Eta();
1574 cont_eleptvscutvars[1] = trk->GetITSNcls();
1576 if(casc->ChargeXi()<0)
1577 cont_eleptvscutvars[1] = casc->MassLambda();
1579 cont_eleptvscutvars[1] = casc->MassAntiLambda();
1581 cont_eleptvscutvars[1] = casc->MassXi();
1584 lPosV0[0] = casc->DecayVertexV0X();
1585 lPosV0[1] = casc->DecayVertexV0Y();
1586 lPosV0[2] = casc->DecayVertexV0Z();
1587 cont_eleptvscutvars[1] = TMath::Sqrt(lPosV0[0]*lPosV0[0]+lPosV0[1]*lPosV0[1]);
1590 lPosXi[0] = casc->DecayVertexXiX();
1591 lPosXi[1] = casc->DecayVertexXiY();
1592 lPosXi[2] = casc->DecayVertexXiZ();
1593 cont_eleptvscutvars[1] = TMath::Sqrt(lPosXi[0]*lPosXi[0]+lPosXi[1]*lPosXi[1]);
1595 cont_eleptvscutvars[1] = casc->DcaV0Daughters();
1597 cont_eleptvscutvars[1] = casc->DcaXiDaughters();
1599 cont_eleptvscutvars[1] = casc->DcaBachToPrimVertex();
1601 if(casc->ChargeXi()<0.)
1602 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1604 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1606 if(casc->ChargeXi()>0.)
1607 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1609 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1611 cont_eleptvscutvars[1] = casc->CosPointingAngle(casc->GetDecayVertexXi());
1613 cont_eleptvscutvars[1] = casc->CosPointingAngleXi(posVtx[0],posVtx[1],posVtx[2]);
1615 cont_eleptvscutvars[1] = nSigmaTPCv0pr;
1617 cont_eleptvscutvars[1] = nSigmaTPCv0pi;
1619 cont_eleptvscutvars[1] = nSigmaTPCbachpi;
1621 cont_eleptvscutvars[1] = casc->Eta();
1623 cont_eleptvscutvars[1] = 0.5*TMath::Log((sqrt(casc->Ptot2Xi())+casc->MomXiZ())/(sqrt(casc->Ptot2Xi())-casc->MomXiZ()));
1625 Double_t xipx = exobj->PxProng(1);
1626 Double_t xipy = exobj->PyProng(1);
1627 Double_t xipz = exobj->PzProng(1);
1628 Double_t epx = exobj->PxProng(0);
1629 Double_t epy = exobj->PyProng(0);
1630 Double_t epz = exobj->PzProng(0);
1631 cont_eleptvscutvars[1] = acos((xipx*epx+xipy*epy+xipz*epz)/sqrt(xipx*xipx+xipy*xipy+xipz*xipz)/sqrt(epx*epx+epy*epy+epz*epz));
1633 cont_eleptvscutvars[1] = -9999.;
1641 Int_t pdgcode = mcxic->GetPdgCode();
1642 cont2[1] = mcele->Pt();
1643 if(abs(pdgcode)==4132 && abs(mcpdgele_array[1])==4132 && abs(mcpdgcasc_array[1])==4132){
1644 Int_t labmotherxic = mcxic->GetMother();
1645 Bool_t isbottomfd = kFALSE;
1648 AliAODMCParticle *motherxic = (AliAODMCParticle*)mcArray->At(labmotherxic);
1649 Int_t pdgmotherxic = motherxic->GetPdgCode();
1650 if(TMath::Abs(pdgmotherxic)==511||TMath::Abs(pdgmotherxic)==521||TMath::Abs(pdgmotherxic)==5122||TMath::Abs(pdgmotherxic)==5132||TMath::Abs(pdgmotherxic)==5232||TMath::Abs(pdgmotherxic)==5332){
1679 Double_t cont_xic[3];
1680 cont_xic[0] = mcxic->Pt();
1681 cont_xic[1] = mcxic->Y();
1687 Double_t cont_mcele[3];
1688 cont_mcele[0] = mcele->Pt();
1689 cont_mcele[1] = mcele->Eta();
1696 fHistoResponseXiPt->Fill(mcxic->Pt(),sqrt(pow(casc->MomXiX(),2)+pow(casc->MomXiY(),2)));
1700 Double_t cont_eleptvsxiptvsxicpt[4];
1701 cont_eleptvsxiptvsxicpt[0] = cont_eleptvsxipt[0];
1702 cont_eleptvsxiptvsxicpt[1] = cont_eleptvsxipt[1];
1703 cont_eleptvsxiptvsxicpt[2] = mcxic->Pt();
1704 cont_eleptvsxiptvsxicpt[3] = cont_eleptvsxipt[2];
1713 for(Int_t ih=0;ih<23;ih++){
1714 Double_t cont_eleptvscutvars[3];
1715 cont_eleptvscutvars[0] = exobj->Pt();
1719 cont_eleptvscutvars[1] = trk->GetTPCNcls();
1721 cont_eleptvscutvars[1] = trk->GetTPCsignalN();
1723 cont_eleptvscutvars[1] = nSigmaTPCele;
1725 cont_eleptvscutvars[1] = nSigmaTOFele;
1727 cont_eleptvscutvars[1] = trk->Eta();
1729 cont_eleptvscutvars[1] = trk->GetITSNcls();
1731 if(casc->ChargeXi()<0)
1732 cont_eleptvscutvars[1] = casc->MassLambda();
1734 cont_eleptvscutvars[1] = casc->MassAntiLambda();
1736 cont_eleptvscutvars[1] = casc->MassXi();
1739 lPosV0[0] = casc->DecayVertexV0X();
1740 lPosV0[1] = casc->DecayVertexV0Y();
1741 lPosV0[2] = casc->DecayVertexV0Z();
1742 cont_eleptvscutvars[1] = TMath::Sqrt(lPosV0[0]*lPosV0[0]+lPosV0[1]*lPosV0[1]);
1745 lPosXi[0] = casc->DecayVertexXiX();
1746 lPosXi[1] = casc->DecayVertexXiY();
1747 lPosXi[2] = casc->DecayVertexXiZ();
1748 cont_eleptvscutvars[1] = TMath::Sqrt(lPosXi[0]*lPosXi[0]+lPosXi[1]*lPosXi[1]);
1750 cont_eleptvscutvars[1] = casc->DcaV0Daughters();
1752 cont_eleptvscutvars[1] = casc->DcaXiDaughters();
1754 cont_eleptvscutvars[1] = casc->DcaBachToPrimVertex();
1756 if(casc->ChargeXi()<0.)
1757 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1759 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1761 if(casc->ChargeXi()>0.)
1762 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1764 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1766 cont_eleptvscutvars[1] = casc->CosPointingAngle(casc->GetDecayVertexXi());
1768 cont_eleptvscutvars[1] = casc->CosPointingAngleXi(posVtx[0],posVtx[1],posVtx[2]);
1770 cont_eleptvscutvars[1] = nSigmaTPCv0pr;
1772 cont_eleptvscutvars[1] = nSigmaTPCv0pi;
1774 cont_eleptvscutvars[1] = nSigmaTPCbachpi;
1776 cont_eleptvscutvars[1] = casc->Eta();
1778 cont_eleptvscutvars[1] = 0.5*TMath::Log((sqrt(casc->Ptot2Xi())+casc->MomXiZ())/(sqrt(casc->Ptot2Xi())-casc->MomXiZ()));
1780 Double_t xipx = exobj->PxProng(1);
1781 Double_t xipy = exobj->PyProng(1);
1782 Double_t xipz = exobj->PzProng(1);
1783 Double_t epx = exobj->PxProng(0);
1784 Double_t epy = exobj->PyProng(0);
1785 Double_t epz = exobj->PzProng(0);
1786 cont_eleptvscutvars[1] = acos((xipx*epx+xipy*epy+xipz*epz)/sqrt(xipx*xipx+xipy*xipy+xipz*xipz)/sqrt(epx*epx+epy*epy+epz*epz));
1788 cont_eleptvscutvars[1] = -9999.;
1814 for(Int_t ih=0;ih<23;ih++){
1815 Double_t cont_eleptvscutvars[3];
1816 cont_eleptvscutvars[0] = exobj->Pt();
1820 cont_eleptvscutvars[1] = trk->GetTPCNcls();
1822 cont_eleptvscutvars[1] = trk->GetTPCsignalN();
1824 cont_eleptvscutvars[1] = nSigmaTPCele;
1826 cont_eleptvscutvars[1] = nSigmaTOFele;
1828 cont_eleptvscutvars[1] = trk->Eta();
1830 cont_eleptvscutvars[1] = trk->GetITSNcls();
1832 if(casc->ChargeXi()<0)
1833 cont_eleptvscutvars[1] = casc->MassLambda();
1835 cont_eleptvscutvars[1] = casc->MassAntiLambda();
1837 cont_eleptvscutvars[1] = casc->MassXi();
1840 lPosV0[0] = casc->DecayVertexV0X();
1841 lPosV0[1] = casc->DecayVertexV0Y();
1842 lPosV0[2] = casc->DecayVertexV0Z();
1843 cont_eleptvscutvars[1] = TMath::Sqrt(lPosV0[0]*lPosV0[0]+lPosV0[1]*lPosV0[1]);
1846 lPosXi[0] = casc->DecayVertexXiX();
1847 lPosXi[1] = casc->DecayVertexXiY();
1848 lPosXi[2] = casc->DecayVertexXiZ();
1849 cont_eleptvscutvars[1] = TMath::Sqrt(lPosXi[0]*lPosXi[0]+lPosXi[1]*lPosXi[1]);
1851 cont_eleptvscutvars[1] = casc->DcaV0Daughters();
1853 cont_eleptvscutvars[1] = casc->DcaXiDaughters();
1855 cont_eleptvscutvars[1] = casc->DcaBachToPrimVertex();
1857 if(casc->ChargeXi()<0.)
1858 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1860 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1862 if(casc->ChargeXi()>0.)
1863 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1865 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1867 cont_eleptvscutvars[1] = casc->CosPointingAngle(casc->GetDecayVertexXi());
1869 cont_eleptvscutvars[1] = casc->CosPointingAngleXi(posVtx[0],posVtx[1],posVtx[2]);
1871 cont_eleptvscutvars[1] = nSigmaTPCv0pr;
1873 cont_eleptvscutvars[1] = nSigmaTPCv0pi;
1875 cont_eleptvscutvars[1] = nSigmaTPCbachpi;
1877 cont_eleptvscutvars[1] = casc->Eta();
1879 cont_eleptvscutvars[1] = 0.5*TMath::Log((sqrt(casc->Ptot2Xi())+casc->MomXiZ())/(sqrt(casc->Ptot2Xi())-casc->MomXiZ()));
1881 Double_t xipx = exobj->PxProng(1);
1882 Double_t xipy = exobj->PyProng(1);
1883 Double_t xipz = exobj->PzProng(1);
1884 Double_t epx = exobj->PxProng(0);
1885 Double_t epy = exobj->PyProng(0);
1886 Double_t epz = exobj->PzProng(0);
1887 cont_eleptvscutvars[1] = acos((xipx*epx+xipy*epy+xipz*epz)/sqrt(xipx*xipx+xipy*xipy+xipz*xipz)/sqrt(epx*epx+epy*epy+epz*epz));
1889 cont_eleptvscutvars[1] = -9999.;
1897 Int_t pdgcode = mcxic->GetPdgCode();
1898 Double_t cont_xib[3];
1899 cont_xib[0] = mcxic->Pt();
1900 cont_xib[1] = mcxic->Y();
1903 if(abs(pdgcode)==5132 && abs(mcpdgele_array[1])==5132 && abs(mcpdgcasc_array[1])==4132 && abs(mcpdgcasc_array[2])==5132){
1911 if(abs(pdgcode)==5132 && abs(mcpdgele_array[1])==5132 && abs(mcpdgcasc_array[1])==4232 && abs(mcpdgcasc_array[2])==5132){
1919 if(abs(pdgcode)==5232 && abs(mcpdgele_array[1])==5232 && abs(mcpdgcasc_array[1])==4132 && abs(mcpdgcasc_array[2])==5232){
1927 if(abs(pdgcode)==5232 && abs(mcpdgele_array[1])==5232 && abs(mcpdgcasc_array[1])==4232 && abs(mcpdgcasc_array[2])==5232){
1945 if( mexi_flip <10. && cosoa < 0. && fAnalCuts->IsPeakRegion(casc))
1947 if(trk->Charge()*casc->ChargeXi()<0){
1960 if(trk->Charge()*casc->ChargeXi()<0){
1978 if( mexi_flip< 10. && cosoa < 0. && fAnalCuts->IsSideBand(casc))
1980 if(trk->Charge()*casc->ChargeXi()<0){
1994 for(Int_t iv=0;iv<13;iv++){
2005 if(trk->Charge()>0){
2008 }
else if(trk->Charge()<0){
2019 Int_t pdgcode = mcxic->GetPdgCode();
2020 if(abs(pdgcode)==4132 && abs(mcpdgele_array[1])==4132 && abs(mcpdgcasc_array[1])==4132){
2023 if(abs(pdgcode)==5132 && abs(mcpdgele_array[1])==5132 && abs(mcpdgcasc_array[1])==4132 && abs(mcpdgcasc_array[2])==5132){
2026 if(abs(pdgcode)==5132 && abs(mcpdgele_array[1])==5132 && abs(mcpdgcasc_array[1])==4232 && abs(mcpdgcasc_array[2])==5132){
2029 if(abs(pdgcode)==5232 && abs(mcpdgele_array[1])==5232 && abs(mcpdgcasc_array[1])==4132 && abs(mcpdgcasc_array[2])==5232){
2032 if(abs(pdgcode)==5232 && abs(mcpdgele_array[1])==5232 && abs(mcpdgcasc_array[1])==4232 && abs(mcpdgcasc_array[2])==5232){
2076 for(Int_t i=0;i<90;i++){
2080 Double_t pxe = trke->Px();
2081 Double_t pye = trke->Py();
2082 Double_t pze = trke->Pz();
2083 Double_t mome = sqrt(pxe*pxe+pye*pye+pze*pze);
2084 Double_t Ee = sqrt(mome*mome+0.000510998928*0.000510998928);
2086 Double_t pxv = casc->Px();
2087 Double_t pyv = casc->Py();
2088 Double_t pzv = casc->Pz();
2089 Double_t momv = sqrt(pxv*pxv+pyv*pyv+pzv*pzv);
2090 Double_t Ev = sqrt(momv*momv+1.32171*1.32171);
2092 Double_t cosoa = (pxe*pxv+pye*pyv+pze*pzv)/mome/momv;
2094 Double_t pxsum = pxe + pxv;
2095 Double_t pysum = pye + pyv;
2096 Double_t pzsum = pze + pzv;
2097 Double_t Esum = Ee + Ev;
2098 Double_t mexi = sqrt(Esum*Esum-pxsum*pxsum-pysum*pysum-pzsum*pzsum);
2100 Double_t uxe = pxe/mome;
2101 Double_t uye = pye/mome;
2102 Double_t uze = pze/mome;
2103 Double_t lf = -2.*(pxv*uxe+pyv*uye+pzv*uze);
2104 Double_t pxv_flip = pxv + lf * uxe;
2105 Double_t pyv_flip = pyv + lf * uye;
2106 Double_t pzv_flip = pzv + lf * uze;
2107 Double_t pxsum_flip = pxe + pxv_flip;
2108 Double_t pysum_flip = pye + pyv_flip;
2109 Double_t pzsum_flip = pze + pzv_flip;
2110 Double_t mexi_flip = sqrt(Esum*Esum-pxsum_flip*pxsum_flip-pysum_flip*pysum_flip-pzsum_flip*pzsum_flip);
2111 Double_t ptexi_flip = sqrt(pxsum_flip*pxsum_flip+pysum_flip*pysum_flip);
2113 Double_t posVtx[3] = {0.,0.,0.};
2114 fVtx1->GetXYZ(posVtx);
2117 UInt_t pdgdg[2]={11,3312};
2143 cont[1] = sqrt(pxsum*pxsum+pysum*pysum);
2147 Double_t cont_flip[4];
2148 cont_flip[0] = mexi_flip;
2149 cont_flip[1] = ptexi_flip;
2155 cont2[1] = sqrt(pxe*pxe+pye*pye);
2158 Double_t cont_eleptvseta[3];
2159 cont_eleptvseta[0] = trke->Pt();
2160 cont_eleptvseta[1] = trke->Eta();
2163 Double_t cont_eleptvsxipt[3];
2164 cont_eleptvsxipt[0] = trke->Pt();
2165 cont_eleptvsxipt[1] = casc->Pt();
2168 Double_t cont_eleptvsd0[3];
2169 cont_eleptvsd0[0] = trke->Pt();
2170 cont_eleptvsd0[1] = 0.;
2173 Double_t xyzR125_ele[3], xyzR125_pr[3], xyzR125_pi[3], xyzR125_bach[3];
2174 xyzR125_ele[0] = (*elevars)[0];
2175 xyzR125_ele[1] = (*elevars)[1];
2176 xyzR125_ele[2] = (*elevars)[2];
2177 xyzR125_pr[0] = (*cascvars)[0];
2178 xyzR125_pr[1] = (*cascvars)[1];
2179 xyzR125_pr[2] = (*cascvars)[2];
2180 xyzR125_pi[0] = (*cascvars)[3];
2181 xyzR125_pi[1] = (*cascvars)[4];
2182 xyzR125_pi[2] = (*cascvars)[5];
2183 xyzR125_bach[0] = (*cascvars)[6];
2184 xyzR125_bach[1] = (*cascvars)[7];
2185 xyzR125_bach[2] = (*cascvars)[8];
2187 Double_t rdhfcutvars[12];
2188 rdhfcutvars[0] = xyzR125_ele[0];
2189 rdhfcutvars[1] = xyzR125_ele[1];
2190 rdhfcutvars[2] = xyzR125_ele[2];
2191 rdhfcutvars[3] = xyzR125_pr[0];
2192 rdhfcutvars[4] = xyzR125_pr[1];
2193 rdhfcutvars[5] = xyzR125_pr[2];
2194 rdhfcutvars[6] = xyzR125_pi[0];
2195 rdhfcutvars[7] = xyzR125_pi[1];
2196 rdhfcutvars[8] = xyzR125_pi[2];
2197 rdhfcutvars[9] = xyzR125_bach[0];
2198 rdhfcutvars[10] = xyzR125_bach[1];
2199 rdhfcutvars[11] = xyzR125_bach[2];
2211 if(((
int)trke->T())*chargexi<0){
2247 if(mexi_flip < 10. && cosoa<0. && fAnalCuts->IsPeakRegion(casc))
2249 if(((
int)trke->T())*chargexi<0){
2263 for(Int_t iv=0;iv<13;iv++){
2271 fCorrelationVariables[5] = (*elevars)[5];
2272 fCorrelationVariables[6] = 2;
2274 if(chargexi<0) fCorrelationVariables[7] = 0;
2275 else fCorrelationVariables[7] = 2;
2276 }
else if(trke->T()<0){
2277 if(chargexi<0) fCorrelationVariables[7] = 1;
2278 else fCorrelationVariables[7] = 3;
2280 fCorrelationVariables[8] = (*elevars)[6];
2281 fCorrelationVariables[9] = (*elevars)[7];
2283 fCorrelationVariables[11] = sqrt(pxsum*pxsum+pysum*pysum);
2284 fCorrelationVariables[12] = mexi;
2302 const char* nameoutput = GetOutputSlot(5)->GetContainer()->GetName();
2306 TString * fCandidateVariableNames =
new TString[nVar];
2308 fCandidateVariableNames[ 0]=
"ElePx";
2309 fCandidateVariableNames[ 1]=
"ElePy";
2310 fCandidateVariableNames[ 2]=
"ElePz";
2311 fCandidateVariableNames[ 3]=
"TPCChi2overNDF";
2312 fCandidateVariableNames[ 4]=
"ITSNcls";
2313 fCandidateVariableNames[ 5]=
"TPCNcls";
2314 fCandidateVariableNames[ 6]=
"TPCNclsPID";
2315 fCandidateVariableNames[ 7]=
"TPCNclsRatio";
2316 fCandidateVariableNames[ 8]=
"d0R";
2317 fCandidateVariableNames[ 9]=
"d0Z";
2318 fCandidateVariableNames[10]=
"ITSClusterMap";
2319 fCandidateVariableNames[11]=
"nSigmaTPCele";
2320 fCandidateVariableNames[12]=
"nSigmaTOFele";
2321 fCandidateVariableNames[13]=
"nSigmaTPCpi";
2322 fCandidateVariableNames[14]=
"nSigmaTPCka";
2323 fCandidateVariableNames[15]=
"nSigmaTPCpr";
2324 fCandidateVariableNames[16]=
"EvNumber";
2325 fCandidateVariableNames[17]=
"EleCharge";
2326 fCandidateVariableNames[18]=
"ElePdgCode";
2327 fCandidateVariableNames[19]=
"EleMotherPdgCode";
2328 fCandidateVariableNames[20]=
"mcelepx";
2329 fCandidateVariableNames[21]=
"mcelepy";
2330 fCandidateVariableNames[22]=
"mcelepz";
2331 fCandidateVariableNames[23]=
"Centrality";
2332 fCandidateVariableNames[24]=
"PrimVertZ";
2333 fCandidateVariableNames[25]=
"RunNumber";
2335 for (Int_t ivar=0; ivar<nVar; ivar++) {
2353 Double_t d0z0[2],covd0z0[3];
2354 trk->PropagateToDCA(
fVtx1,
fBzkG,kVeryBig,d0z0,covd0z0);
2358 pv[0] =
fVtx1->GetX();
2359 pv[1] =
fVtx1->GetY();
2360 pv[2] =
fVtx1->GetZ();
2361 Double_t xyzR125[3] = {9999.,9999.,9999.};
2363 TVector *varvec =
new TVector(8);
2364 (*varvec)[0] = xyzR125[0];
2365 (*varvec)[1] = xyzR125[1];
2366 (*varvec)[2] = xyzR125[2];
2369 (*varvec)[5] = d0z0[0];
2370 (*varvec)[6] = convtype;
2371 (*varvec)[7] = mcetype;
2372 fElectronTracks->AddLast(
new TLorentzVector(trk->Px(),trk->Py(),trk->Pz(),trk->Charge()));
2377 Int_t pdgEle = -9999;
2378 Int_t pdgEleMother = -9999;
2379 Float_t mcepx = -9999;
2380 Float_t mcepy = -9999;
2381 Float_t mcepz = -9999;
2384 Int_t labEle = trk->GetLabel();
2385 if(labEle<0)
return;
2386 AliAODMCParticle *mcetrk = (AliAODMCParticle*)mcArray->At(labEle);
2388 pdgEle = mcetrk->GetPdgCode();
2389 mcepx = mcetrk->Px();
2390 mcepy = mcetrk->Py();
2391 mcepz = mcetrk->Pz();
2398 for(Int_t i=0;i<26;i++){
2409 if(trk->GetTPCNclsF()>0)
2414 Int_t itsmap = trk->GetITSClusterMap();
2417 Bool_t spdfirst = (itsmap & bit1) == bit1;
2418 Bool_t spdsecond = (itsmap & bit2) == bit2;
2456 const char* nameoutput = GetOutputSlot(6)->GetContainer()->GetName();
2460 TString * fCandidateVariableNames =
new TString[nVar];
2462 fCandidateVariableNames[ 0]=
"Centrality";
2463 fCandidateVariableNames[ 1]=
"InvMassXi";
2464 fCandidateVariableNames[ 2]=
"XiPx";
2465 fCandidateVariableNames[ 3]=
"XiPy";
2466 fCandidateVariableNames[ 4]=
"XiPz";
2467 fCandidateVariableNames[ 5]=
"InvMassLambda";
2468 fCandidateVariableNames[ 6]=
"DcaXiDaughters";
2469 fCandidateVariableNames[ 7]=
"DcaV0Daughters";
2470 fCandidateVariableNames[ 8]=
"DecayLengthXi";
2471 fCandidateVariableNames[ 9]=
"CosPointingAngleXi";
2472 fCandidateVariableNames[10]=
"DcaV0toPrimVertex";
2473 fCandidateVariableNames[11]=
"DcaPostoPrimVertex";
2474 fCandidateVariableNames[12]=
"DcaNegtoPrimVertex";
2475 fCandidateVariableNames[13]=
"DcaBachtoPrimVertex";
2476 fCandidateVariableNames[14]=
"DecayLengthV0";
2477 fCandidateVariableNames[15]=
"CosPointingAngleV0";
2478 fCandidateVariableNames[16]=
"XiCharge";
2479 fCandidateVariableNames[17]=
"XiPdgCode";
2480 fCandidateVariableNames[18]=
"XiMotherPdgCode";
2481 fCandidateVariableNames[19]=
"mcxipx";
2482 fCandidateVariableNames[20]=
"mcxipy";
2483 fCandidateVariableNames[21]=
"mcxipz";
2484 fCandidateVariableNames[22]=
"labcasc";
2485 fCandidateVariableNames[23]=
"RunNumber";
2486 fCandidateVariableNames[24]=
"PrimVertZ";
2487 fCandidateVariableNames[25]=
"EvNumber";
2489 for (Int_t ivar=0; ivar<nVar; ivar++) {
2503 AliAODTrack *cptrack = (AliAODTrack*)(casc->GetDaughter(0));
2504 AliAODTrack *cntrack = (AliAODTrack*)(casc->GetDaughter(1));
2505 AliAODTrack *cbtrack = (AliAODTrack*)(casc->GetDecayVertexXi()->GetDaughter(0));
2506 if(!cptrack)
return;
2507 if(!cntrack)
return;
2508 if(!cbtrack)
return;
2510 fHistoXiMassvsPt->Fill(casc->MassXi(),sqrt(casc->MomXiX()*casc->MomXiX()+casc->MomXiY()*casc->MomXiY()));
2511 fHistoOmegaMassvsPt->Fill(casc->MassOmega(),sqrt(casc->MomXiX()*casc->MomXiX()+casc->MomXiY()*casc->MomXiY()));
2512 Double_t momxix = casc->MomXiX();
2513 Double_t momxiy = casc->MomXiY();
2514 Double_t phi_alice = atan2(momxiy,momxix);
2515 if(phi_alice<0.) phi_alice += 2 * M_PI;
2516 fHistoXiQovPtvsPhi->Fill(phi_alice,(Double_t)casc->ChargeXi()/sqrt(momxix*momxix+momxiy*momxiy));
2518 Double_t mlamPDG = TDatabasePDG::Instance()->GetParticle(3122)->Mass();
2519 Double_t posVtx[3] = {0.,0.,0.};
2520 fVtx1->GetXYZ(posVtx);
2521 Double_t ptotlam = TMath::Sqrt(pow(casc->Px(),2)+pow(casc->Py(),2)+pow(casc->Pz(),2));
2522 Double_t dl = sqrt(pow(casc->DecayVertexV0X()-posVtx[0],2)+pow(casc->DecayVertexV0Y()-posVtx[1],2)+pow(casc->DecayVertexV0Z()-posVtx[2],2));
2523 Double_t v0propdl = dl*mlamPDG/ptotlam;
2533 Int_t xipdgcode = -9999;
2534 Int_t ximotherpdgcode = -9999;
2535 Float_t mcxipx = -9999.;
2536 Float_t mcxipy = -9999.;
2537 Float_t mcxipz = -9999.;
2538 Int_t labcasc = -9999.;
2540 Int_t pdgDgcasc[2]={211,3122};
2541 Int_t pdgDgv0[2]={2212,211};
2543 if(labcasc<0)
return;
2545 fHistoXiMassvsPtMCS->Fill(casc->MassXi(),sqrt(casc->MomXiX()*casc->MomXiX()+casc->MomXiY()*casc->MomXiY()));
2547 AliAODMCParticle *mccasctrk = (AliAODMCParticle*)mcArray->At(labcasc);
2548 if(!mccasctrk)
return;
2553 Bool_t hfxi_flag = kFALSE;
2554 xipdgcode = mccasctrk->GetPdgCode();
2555 Int_t labcascmother = mccasctrk->GetMother();
2556 if(labcascmother>=0){
2557 AliAODMCParticle *mothercasc = (AliAODMCParticle*)mcArray->At(labcascmother);
2559 ximotherpdgcode = mothercasc->GetPdgCode();
2560 if(abs(ximotherpdgcode)>4000&&abs(ximotherpdgcode)<4400){
2565 if(!hfxi_flag)
return;
2566 mcxipx = mccasctrk->Px();
2567 mcxipy = mccasctrk->Py();
2568 mcxipz = mccasctrk->Pz();
2572 Double_t xyz[3], pxpypz[3], cv[21]; Short_t sign;
2573 xyz[0]=casc->DecayVertexXiX();
2574 xyz[1]=casc->DecayVertexXiY();
2575 xyz[2]=casc->DecayVertexXiZ();
2576 pxpypz[0]=casc->MomXiX();
2577 pxpypz[1]=casc->MomXiY();
2578 pxpypz[2]=casc->MomXiZ();
2579 casc->GetCovarianceXYZPxPyPz(cv);
2580 sign=casc->ChargeXi();
2581 AliExternalTrackParam *trackCasc =
new AliExternalTrackParam(xyz,pxpypz,cv,sign);
2582 trackCasc->PropagateToDCA(
fVtx1,
fBzkG,kVeryBig);
2583 Double_t momcasc_new[3]={-9999,-9999,-9999.};
2584 trackCasc->GetPxPyPz(momcasc_new);
2587 TLorentzVector *lv =
new TLorentzVector();
2588 lv->SetXYZM(momcasc_new[0],momcasc_new[1],momcasc_new[2],casc->MassXi());
2589 Double_t xyzR125pr[3]={9999.,9999.,9999.};
2590 Double_t xyzR125pi[3]={9999.,9999.,9999.};
2591 Double_t xyzR125bach[3]={9999.,9999.,9999.};
2592 if(casc->ChargeXi()>0){
2599 TVector *varvec =
new TVector(9);
2600 (*varvec)[0] = xyzR125pr[0];
2601 (*varvec)[1] = xyzR125pr[1];
2602 (*varvec)[2] = xyzR125pr[2];
2603 (*varvec)[3] = xyzR125pi[0];
2604 (*varvec)[4] = xyzR125pi[1];
2605 (*varvec)[5] = xyzR125pi[2];
2606 (*varvec)[6] = xyzR125bach[0];
2607 (*varvec)[7] = xyzR125bach[1];
2608 (*varvec)[8] = xyzR125bach[2];
2617 TVector *varvec =
new TVector(9);
2618 (*varvec)[0] = xyzR125pr[0];
2619 (*varvec)[1] = xyzR125pr[1];
2620 (*varvec)[2] = xyzR125pr[2];
2621 (*varvec)[3] = xyzR125pi[0];
2622 (*varvec)[4] = xyzR125pi[1];
2623 (*varvec)[5] = xyzR125pi[2];
2624 (*varvec)[6] = xyzR125bach[0];
2625 (*varvec)[7] = xyzR125bach[1];
2626 (*varvec)[8] = xyzR125bach[2];
2633 for(Int_t i=0;i<26;i++){
2642 if(casc->ChargeXi()<0)
2678 const char* nameoutput = GetOutputSlot(7)->GetContainer()->GetName();
2682 TString * fCandidateVariableNames =
new TString[nVar];
2684 fCandidateVariableNames[ 0]=
"Centrality";
2685 fCandidateVariableNames[ 1]=
"DecayType";
2686 fCandidateVariableNames[ 2]=
"XicPx";
2687 fCandidateVariableNames[ 3]=
"XicPy";
2688 fCandidateVariableNames[ 4]=
"XicPz";
2689 fCandidateVariableNames[ 5]=
"ElePx";
2690 fCandidateVariableNames[ 6]=
"ElePy";
2691 fCandidateVariableNames[ 7]=
"ElePz";
2692 fCandidateVariableNames[ 8]=
"CascPx";
2693 fCandidateVariableNames[ 9]=
"CascPy";
2694 fCandidateVariableNames[10]=
"CascPz";
2695 fCandidateVariableNames[11]=
"PdgCode";
2696 fCandidateVariableNames[12]=
"ElePdgCode";
2697 fCandidateVariableNames[13]=
"CascPdgCode";
2698 fCandidateVariableNames[14]=
"RunNumber";
2699 fCandidateVariableNames[15]=
"EvNumber";
2701 for (Int_t ivar=0; ivar<nVar; ivar++) {
2713 if(!mcepart)
return;
2714 if(!mccascpart)
return;
2716 for(Int_t i=0;i<14;i++){
2737 Double_t epx = mcepart->Px();
2738 Double_t epy = mcepart->Py();
2739 Double_t epz = mcepart->Pz();
2740 Double_t eE = sqrt(epx*epx+epy*epy+epz*epz+0.000511*0.000511);
2741 Double_t cascpx = mccascpart->Px();
2742 Double_t cascpy = mccascpart->Py();
2743 Double_t cascpz = mccascpart->Pz();
2744 Double_t cascE = sqrt(cascpx*cascpx+cascpy*cascpy+cascpz*cascpz+1.32171*1.32171);
2746 Double_t InvMassEleXi = sqrt(pow(eE+cascE,2)-pow(epx+cascpx,2)-pow(epy+cascpy,2)-pow(epz+cascpz,2));
2749 cont[0] = InvMassEleXi;
2750 cont[1] = mcpart->Pt();
2754 cont2[0] = InvMassEleXi;
2755 cont2[1] = mcepart->Pt();
2757 Double_t cont_eleptvseta[3];
2758 cont_eleptvseta[0] = mcepart->Pt();
2759 cont_eleptvseta[1] = mcepart->Eta();
2761 Double_t cont_eleptvsxipt[3];
2762 cont_eleptvsxipt[0] = mcepart->Pt();
2763 cont_eleptvsxipt[1] = mccascpart->Pt();
2765 Double_t cont_eleptvsxiptvsxicpt[4];
2766 cont_eleptvsxiptvsxicpt[0] = mcepart->Pt();
2767 cont_eleptvsxiptvsxicpt[1] = mccascpart->Pt();
2768 cont_eleptvsxiptvsxicpt[2] = mcpart->Pt();
2772 contmc[0] = mcpart->Pt();
2773 contmc[1] = mcpart->Y();
2775 Double_t contmcele[3];
2776 contmcele[0] = mcepart->Pt();
2777 contmcele[1] = mcepart->Eta();
2783 esdcuts->GetEtaRange(etamin,etamax);
2793 if(fabs(mcepart->Eta())<etamax){
2797 if(InvMassEleXi<2.5){
2803 if(fabs(mcpart->Y())<0.7){
2804 if(InvMassEleXi<2.5){
2809 }
else if(decaytype==10){
2823 const char* nameoutput = GetOutputSlot(9)->GetContainer()->GetName();
2827 TString * fCandidateVariableNames =
new TString[nVar];
2829 fCandidateVariableNames[ 0]=
"Centrality";
2830 fCandidateVariableNames[ 1]=
"ElePx";
2831 fCandidateVariableNames[ 2]=
"ElePy";
2832 fCandidateVariableNames[ 3]=
"ElePz";
2833 fCandidateVariableNames[ 4]=
"ElePdgCode";
2834 fCandidateVariableNames[ 5]=
"EleMotherPdgCode";
2835 fCandidateVariableNames[ 6]=
"RunNumber";
2836 fCandidateVariableNames[ 7]=
"EvNumber";
2838 for (Int_t ivar=0; ivar<nVar; ivar++) {
2849 if(!mcepart)
return;
2851 Int_t pdgarray_ele[100], labelarray_ele[100], ngen_ele;
2858 contmc[0] = mcepart->Pt();
2859 contmc[1] = mcepart->Eta();
2862 if(semi_flag==1 && !ele_from_bottom){
2865 if(semi_flag==1 && ele_from_bottom){
2873 Bool_t hfe_flag = kFALSE;
2874 Int_t labemother = mcepart->GetMother();
2875 Int_t pdgmotherele = -9999;
2877 AliAODMCParticle *motherele = (AliAODMCParticle*)mcArray->At(labemother);
2878 pdgmotherele = motherele->GetPdgCode();
2879 if(abs(pdgmotherele)>4000&&abs(pdgmotherele)<4400){
2883 if(!hfe_flag)
return;
2887 for(Int_t i=0;i<8;i++){
2911 const char* nameoutput = GetOutputSlot(10)->GetContainer()->GetName();
2915 TString * fCandidateVariableNames =
new TString[nVar];
2917 fCandidateVariableNames[ 0]=
"Centrality";
2918 fCandidateVariableNames[ 1]=
"CascPx";
2919 fCandidateVariableNames[ 2]=
"CascPy";
2920 fCandidateVariableNames[ 3]=
"CascPz";
2921 fCandidateVariableNames[ 4]=
"CascPdgCode";
2922 fCandidateVariableNames[ 5]=
"CascMotherPdgCode";
2923 fCandidateVariableNames[ 6]=
"RunNumber";
2924 fCandidateVariableNames[ 7]=
"EvNumber";
2926 for (Int_t ivar=0; ivar<nVar; ivar++) {
2937 if(!mccascpart)
return;
2939 for(Int_t i=0;i<8;i++){
2943 Bool_t hfxi_flag = kFALSE;
2944 Int_t labcascmother = mccascpart->GetMother();
2945 Int_t pdgmothercasc = -9999;
2946 if(labcascmother>=0){
2947 AliAODMCParticle *mothercasc = (AliAODMCParticle*)mcArray->At(labcascmother);
2949 pdgmothercasc = mothercasc->GetPdgCode();
2950 if(abs(pdgmothercasc)>4000&&abs(pdgmothercasc)<4400){
2955 if(!hfxi_flag)
return;
2958 contmc[0] = mccascpart->Pt();
2959 contmc[1] = mccascpart->Eta();
2983 fCEvents =
new TH1F(
"fCEvents",
"conter",18,-0.5,17.5);
2985 fCEvents->GetXaxis()->SetBinLabel(1,
"X1");
2986 fCEvents->GetXaxis()->SetBinLabel(2,
"Analyzed events");
2987 fCEvents->GetXaxis()->SetBinLabel(3,
"AliAODVertex exists");
2988 fCEvents->GetXaxis()->SetBinLabel(4,
"TriggerOK");
2989 fCEvents->GetXaxis()->SetBinLabel(5,
"IsEventSelected");
2990 fCEvents->GetXaxis()->SetBinLabel(6,
"CascadesHF exists");
2991 fCEvents->GetXaxis()->SetBinLabel(7,
"MCarray exists");
2992 fCEvents->GetXaxis()->SetBinLabel(8,
"MCheader exists");
2993 fCEvents->GetXaxis()->SetBinLabel(9,
"triggerClass!=CINT1");
2994 fCEvents->GetXaxis()->SetBinLabel(10,
"triggerMask!=kAnyINT");
2995 fCEvents->GetXaxis()->SetBinLabel(11,
"triggerMask!=kAny");
2996 fCEvents->GetXaxis()->SetBinLabel(12,
"vtxTitle.Contains(Z)");
2997 fCEvents->GetXaxis()->SetBinLabel(13,
"vtxTitle.Contains(3D)");
2998 fCEvents->GetXaxis()->SetBinLabel(14,
"vtxTitle.Doesn'tContain(Z-3D)");
3000 fCEvents->GetXaxis()->SetBinLabel(16,
"!IsEventSelected");
3001 fCEvents->GetXaxis()->SetBinLabel(17,
"triggerMask!=kAnyINT || triggerClass!=CINT1");
3004 fCEvents->GetYaxis()->SetTitle(
"counts");
3006 fHTrigger =
new TH1F(
"fHTrigger",
"counter",18,-0.5,17.5);
3008 fHTrigger->GetXaxis()->SetBinLabel(1,
"X1");
3009 fHTrigger->GetXaxis()->SetBinLabel(2,
"kMB");
3010 fHTrigger->GetXaxis()->SetBinLabel(3,
"kSemiCentral");
3011 fHTrigger->GetXaxis()->SetBinLabel(4,
"kCentral");
3012 fHTrigger->GetXaxis()->SetBinLabel(5,
"kINT7");
3013 fHTrigger->GetXaxis()->SetBinLabel(6,
"kEMC7");
3015 fHTrigger->GetXaxis()->SetBinLabel(8,
"kMB|kSemiCentral|kCentral");
3016 fHTrigger->GetXaxis()->SetBinLabel(9,
"kINT7|kEMC7");
3017 fHTrigger->GetXaxis()->SetBinLabel(11,
"kMB&kSemiCentral");
3018 fHTrigger->GetXaxis()->SetBinLabel(12,
"kMB&kCentral");
3019 fHTrigger->GetXaxis()->SetBinLabel(13,
"kINT7&kEMC7");
3021 fHCentrality =
new TH1F(
"fHCentrality",
"conter",100,0.,100.);
3040 Int_t bins_base[4]= {22 ,100 , 100 ,10};
3041 Double_t xmin_base[4]={1.3,0 , -0.5 ,0.00};
3042 Double_t xmax_base[4]={5.7,20. , 0.5 ,100};
3044 fHistoEleXiMass =
new THnSparseF(
"fHistoEleXiMass",
"",4,bins_base,xmin_base,xmax_base);
3046 fHistoEleXiMassRS =
new THnSparseF(
"fHistoEleXiMassRS",
"",4,bins_base,xmin_base,xmax_base);
3048 fHistoEleXiMassWS =
new THnSparseF(
"fHistoEleXiMassWS",
"",4,bins_base,xmin_base,xmax_base);
3050 fHistoEleXiMassRSMix =
new THnSparseF(
"fHistoEleXiMassRSMix",
"",4,bins_base,xmin_base,xmax_base);
3052 fHistoEleXiMassWSMix =
new THnSparseF(
"fHistoEleXiMassWSMix",
"",4,bins_base,xmin_base,xmax_base);
3058 fHistoEleXiMassRS1 =
new THnSparseF(
"fHistoEleXiMassRS1",
"",4,bins_base,xmin_base,xmax_base);
3060 fHistoEleXiMassWS1 =
new THnSparseF(
"fHistoEleXiMassWS1",
"",4,bins_base,xmin_base,xmax_base);
3070 fHistoEleXiMassRS2 =
new THnSparseF(
"fHistoEleXiMassRS2",
"",4,bins_base,xmin_base,xmax_base);
3072 fHistoEleXiMassWS2 =
new THnSparseF(
"fHistoEleXiMassWS2",
"",4,bins_base,xmin_base,xmax_base);
3120 Int_t bins_base_elept[3]= {10 ,100 ,10};
3121 Double_t xmin_base_elept[3]={1.3,0 ,0.00};
3122 Double_t xmax_base_elept[3]={3.3,10. ,100};
3124 fHistoEleXiMassvsElePtRS =
new THnSparseF(
"fHistoEleXiMassvsElePtRS",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
3126 fHistoEleXiMassvsElePtWS =
new THnSparseF(
"fHistoEleXiMassvsElePtWS",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
3136 fHistoEleXiMassvsElePtRS1 =
new THnSparseF(
"fHistoEleXiMassvsElePtRS1",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
3138 fHistoEleXiMassvsElePtWS1 =
new THnSparseF(
"fHistoEleXiMassvsElePtWS1",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
3148 fHistoEleXiMassvsElePtRS2 =
new THnSparseF(
"fHistoEleXiMassvsElePtRS2",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
3150 fHistoEleXiMassvsElePtWS2 =
new THnSparseF(
"fHistoEleXiMassvsElePtWS2",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
3161 fHistoElePtRS=
new TH2F(
"fHistoElePtRS",
"Right-sign e pt",100,0.,10.,10,0.,100.);
3163 fHistoElePtWS=
new TH2F(
"fHistoElePtWS",
"Wrong-sign e pt",100,0.,10.,10,0.,100.);
3165 fHistoElePtRSMix=
new TH2F(
"fHistoElePtRSMix",
"Right-sign e pt",100,0.,10.,10,0.,100.);
3167 fHistoElePtWSMix=
new TH2F(
"fHistoElePtWSMix",
"Wrong-sign e pt",100,0.,10.,10,0.,100.);
3170 fHistoEleXiMassMCS =
new THnSparseF(
"fHistoEleXiMassMCS",
"",4,bins_base,xmin_base,xmax_base);
3172 fHistoEleXiMassMCS1 =
new THnSparseF(
"fHistoEleXiMassMCS1",
"",4,bins_base,xmin_base,xmax_base);
3174 fHistoEleXiMassMCS2 =
new THnSparseF(
"fHistoEleXiMassMCS2",
"",4,bins_base,xmin_base,xmax_base);
3194 fHistoEleXiMassMCGen =
new THnSparseF(
"fHistoEleXiMassMCGen",
"",4,bins_base,xmin_base,xmax_base);
3196 fHistoEleXiMassvsElePtMCS =
new THnSparseF(
"fHistoEleXiMassvsElePtMCS",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
3200 fHistoEleXiMassvsElePtMCS1 =
new THnSparseF(
"fHistoEleXiMassvsElePtMCS1",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
3204 fHistoEleXiMassvsElePtMCS2 =
new THnSparseF(
"fHistoEleXiMassvsElePtMCS2",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
3208 fHistoElePtMCS=
new TH2F(
"fHistoElePtMCS",
"MC S e pt",100,0.,10.,10,0.,100.);
3210 fHistoElePtMCGen=
new TH2F(
"fHistoElePtMCGen",
"MC Gen e pt",100,0.,10.,10,0.,100.);
3213 Int_t bins_eleptvseta[3]= {50,20 ,10};
3214 Double_t xmin_eleptvseta[3]={0.,-1. ,0.0};
3215 Double_t xmax_eleptvseta[3]={5.,1. ,100};
3217 fHistoElePtvsEtaRS =
new THnSparseF(
"fHistoElePtvsEtaRS",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
3219 fHistoElePtvsEtaWS =
new THnSparseF(
"fHistoElePtvsEtaWS",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
3221 fHistoElePtvsEtaRSMix =
new THnSparseF(
"fHistoElePtvsEtaRSMix",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
3223 fHistoElePtvsEtaWSMix =
new THnSparseF(
"fHistoElePtvsEtaWSMix",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
3225 fHistoElePtvsEtaMCS =
new THnSparseF(
"fHistoElePtvsEtaMCS",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
3227 fHistoElePtvsEtaMCGen =
new THnSparseF(
"fHistoElePtvsEtaMCGen",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
3230 Int_t bins_eleptvsxipt[3]= {50,20 ,10};
3231 Double_t xmin_eleptvsxipt[3]={0.,0. ,0.0};
3232 Double_t xmax_eleptvsxipt[3]={5.,5. ,100};
3234 fHistoElePtvsXiPtRS =
new THnSparseF(
"fHistoElePtvsXiPtRS",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
3236 fHistoElePtvsXiPtWS =
new THnSparseF(
"fHistoElePtvsXiPtWS",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
3238 fHistoElePtvsXiPtRSMix =
new THnSparseF(
"fHistoElePtvsXiPtRSMix",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
3240 fHistoElePtvsXiPtWSMix =
new THnSparseF(
"fHistoElePtvsXiPtWSMix",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
3242 fHistoElePtvsXiPtMCS =
new THnSparseF(
"fHistoElePtvsXiPtMCS",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
3244 fHistoElePtvsXiPtMCGen =
new THnSparseF(
"fHistoElePtvsXiPtMCGen",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
3246 fHistoElePtvsXiPtMCXicGen =
new THnSparseF(
"fHistoElePtvsXiPtMCXicGen",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
3249 Int_t bins_eleptvsxiptvsxicpt[4]= {50,20,10,10};
3250 Double_t xmin_eleptvsxiptvsxicpt[4]={0.,0.,0.,0.0};
3251 Double_t xmax_eleptvsxiptvsxicpt[4]={5.,5.,10.,100};
3252 fHistoElePtvsXiPtvsXicPtMCS =
new THnSparseF(
"fHistoElePtvsXiPtvsXicPtMCS",
"",4,bins_eleptvsxiptvsxicpt,xmin_eleptvsxiptvsxicpt,xmax_eleptvsxiptvsxicpt);
3254 fHistoElePtvsXiPtvsXicPtMCGen =
new THnSparseF(
"fHistoElePtvsXiPtvsXicPtMCGen",
"",4,bins_eleptvsxiptvsxicpt,xmin_eleptvsxiptvsxicpt,xmax_eleptvsxiptvsxicpt);
3257 Int_t bins_eleptvsd0[3]= {50 ,50 ,10};
3258 Double_t xmin_eleptvsd0[3]={0.,-0.2 ,0.0};
3259 Double_t xmax_eleptvsd0[3]={5.,0.2 ,100};
3261 fHistoElePtvsd0RS =
new THnSparseF(
"fHistoElePtvsd0RS",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
3263 fHistoElePtvsd0WS =
new THnSparseF(
"fHistoElePtvsd0WS",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
3265 fHistoElePtvsd0RSMix =
new THnSparseF(
"fHistoElePtvsd0RSMix",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
3267 fHistoElePtvsd0WSMix =
new THnSparseF(
"fHistoElePtvsd0WSMix",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
3269 fHistoElePtvsd0MCS =
new THnSparseF(
"fHistoElePtvsd0MCS",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
3271 fHistoElePtvsd0PromptMCS =
new THnSparseF(
"fHistoElePtvsd0PromptMCS",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
3279 fHistoBachPt =
new TH1F(
"fHistoBachPt",
"Bachelor p_{T}",100,0.0,5.0);
3281 fHistoBachPtMCS =
new TH1F(
"fHistoBachPtMCS",
"Bachelor p_{T}",100,0.0,5.0);
3285 fHistod0Bach =
new TH1F(
"fHistod0Bach",
"Bachelor d_{0}",100,-0.5,0.5);
3287 fHistoXiMassvsPt=
new TH2F(
"fHistoXiMassvsPt",
"Xi mass",100,1.32-0.05,1.32+0.05,20,0.,10.);
3289 fHistoXiMassvsPtMCS=
new TH2F(
"fHistoXiMassvsPtMCS",
"Xi mass",100,1.32-0.05,1.32+0.05,20,0.,10.);
3291 fHistoXiMassvsPtMCGen=
new TH2F(
"fHistoXiMassvsPtMCGen",
"Xi mass",100,1.32-0.05,1.32+0.05,20,0.,10.);
3293 fHistoOmegaMassvsPt=
new TH2F(
"fHistoOmegaMassvsPt",
"Omega mass",100,1.67-0.05,1.67+0.05,20,0.,10.);
3317 for(Int_t i=0;i<8;i++){
3327 Int_t bins_xicmcgen[3]= {100 ,20 ,10};
3328 Double_t xmin_xicmcgen[3]={0.,-1.0 ,0.0};
3329 Double_t xmax_xicmcgen[3]={20.,1.0 ,100};
3330 fHistoXicMCGen =
new THnSparseF(
"fHistoXicMCGen",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
3332 fHistoXicMCGen1 =
new THnSparseF(
"fHistoXicMCGen1",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
3334 fHistoXicMCGen2 =
new THnSparseF(
"fHistoXicMCGen2",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
3336 fHistoXicMCS =
new THnSparseF(
"fHistoXicMCS",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
3338 fHistoXicMCS1 =
new THnSparseF(
"fHistoXicMCS1",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
3340 fHistoXicMCS2 =
new THnSparseF(
"fHistoXicMCS2",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
3343 Int_t bins_xibmcgen[3]= {100 ,20 ,10};
3344 Double_t xmin_xibmcgen[3]={0.,-1.0 ,0.0};
3345 Double_t xmax_xibmcgen[3]={50.,1.0 ,100};
3346 fHistoXibMCGen =
new THnSparseF(
"fHistoXibMCGen",
"",3,bins_xibmcgen,xmin_xibmcgen,xmax_xibmcgen);
3348 fHistoXibMCS =
new THnSparseF(
"fHistoXibMCS",
"",3,bins_xibmcgen,xmin_xibmcgen,xmax_xibmcgen);
3351 Int_t bins_xibmcgen_withxic[3]= {50 ,100 ,100};
3352 Double_t xmin_xibmcgen_withxic[3]={0.,-5.,-5.};
3353 Double_t xmax_xibmcgen_withxic[3]={50.,5.,5.};
3354 fHistoXibMCGenWithXic =
new THnSparseF(
"fHistoXibMCGenWithXic",
"",3,bins_xibmcgen_withxic,xmin_xibmcgen_withxic,xmax_xibmcgen_withxic);
3357 Int_t bins_elemcgen[3]= {100 ,20 ,10};
3358 Double_t xmin_elemcgen[3]={0.,-1.0 ,0.0};
3359 Double_t xmax_elemcgen[3]={10.,1.0 ,100};
3360 fHistoElectronMCGen =
new THnSparseF(
"fHistoElectronMCGen",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
3364 fHistoCharmElectronMCGen =
new THnSparseF(
"fHistoCharmElectronMCGen",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
3366 fHistoXicElectronMCGen =
new THnSparseF(
"fHistoXicElectronMCGen",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
3368 fHistoXicElectronMCGen1 =
new THnSparseF(
"fHistoXicElectronMCGen1",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
3370 fHistoXicElectronMCGen2 =
new THnSparseF(
"fHistoXicElectronMCGen2",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
3372 fHistoXicElectronMCS =
new THnSparseF(
"fHistoXicElectronMCS",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
3374 fHistoXicElectronMCS1 =
new THnSparseF(
"fHistoXicElectronMCS1",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
3376 fHistoXicElectronMCS2 =
new THnSparseF(
"fHistoXicElectronMCS2",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
3379 Int_t bins_ximcgen[3]= {50 ,20 ,10};
3380 Double_t xmin_ximcgen[3]={0.,-1.0 ,0.0};
3381 Double_t xmax_ximcgen[3]={10.,1.0 ,100};
3382 fHistoXiMCGen =
new THnSparseF(
"fHistoXiMCGen",
"",3,bins_ximcgen,xmin_ximcgen,xmax_ximcgen);
3385 fHistoLambdaPtvsDl=
new TH2F(
"fHistoLambdaPtvsDl",
"Lambda pt vs dl",20,0.,10.,20,0.,40.);
3391 fHistoLambdaPtvsDR=
new TH2F(
"fHistoLambdaPtvsDR",
"Lambda pt vs dl",20,0.,10.,80,0.,160.);
3461 for(Int_t ih=0;ih<23;ih++){
3462 Int_t bins_eleptvscutvars[3];
3463 Double_t xmin_eleptvscutvars[3];
3464 Double_t xmax_eleptvscutvars[3];
3466 bins_eleptvscutvars[0] = 20;
3467 xmin_eleptvscutvars[0] = 0.;
3468 xmax_eleptvscutvars[0] = 20.;
3469 bins_eleptvscutvars[2] = 10;
3470 xmin_eleptvscutvars[2] = 0.;
3471 xmax_eleptvscutvars[2] = 100.;
3475 bins_eleptvscutvars[1] = 40;
3476 xmin_eleptvscutvars[1] = 0.;
3477 xmax_eleptvscutvars[1] = 160.;
3478 }
else if(ih==2 || ih==3){
3480 bins_eleptvscutvars[1] = 20;
3481 xmin_eleptvscutvars[1] = -5.;
3482 xmax_eleptvscutvars[1] = 5.;
3485 bins_eleptvscutvars[1] = 30;
3486 xmin_eleptvscutvars[1] = -1.5;
3487 xmax_eleptvscutvars[1] = 1.5;
3490 bins_eleptvscutvars[1] = 7;
3491 xmin_eleptvscutvars[1] = -0.5;
3492 xmax_eleptvscutvars[1] = 6.5;
3495 bins_eleptvscutvars[1] = 50;
3496 xmin_eleptvscutvars[1] = 1.1156-0.03;
3497 xmax_eleptvscutvars[1] = 1.1156+0.03;
3500 bins_eleptvscutvars[1] = 50;
3501 xmin_eleptvscutvars[1] = 1.32-0.03;
3502 xmax_eleptvscutvars[1] = 1.32+0.03;
3503 }
else if(ih==8 || ih==9){
3505 bins_eleptvscutvars[1] = 20;
3506 xmin_eleptvscutvars[1] = 0.;
3507 xmax_eleptvscutvars[1] = 5.;
3508 }
else if(ih==10 || ih==11){
3510 bins_eleptvscutvars[1] = 20;
3511 xmin_eleptvscutvars[1] = 0.;
3512 xmax_eleptvscutvars[1] = 2.;
3513 }
else if(ih==12 || ih==13 || ih==14){
3515 bins_eleptvscutvars[1] = 20;
3516 xmin_eleptvscutvars[1] = 0.;
3517 xmax_eleptvscutvars[1] = 0.5;
3518 }
else if(ih==15 || ih==16){
3520 bins_eleptvscutvars[1] = 20;
3521 xmin_eleptvscutvars[1] = 0.95;
3522 xmax_eleptvscutvars[1] = 1.0;
3523 }
else if(ih==17 || ih==18 || ih==19){
3525 bins_eleptvscutvars[1] = 20;
3526 xmin_eleptvscutvars[1] = -5.;
3527 xmax_eleptvscutvars[1] = 5.;
3528 }
else if(ih==20 || ih==21){
3530 bins_eleptvscutvars[1] = 30;
3531 xmin_eleptvscutvars[1] = -1.5;
3532 xmax_eleptvscutvars[1] = 1.5;
3535 bins_eleptvscutvars[1] = 20;
3536 xmin_eleptvscutvars[1] = 0.;
3537 xmax_eleptvscutvars[1] = 3.141592/2;
3540 fHistoElePtvsCutVarsRS[ih] =
new THnSparseF(Form(
"fHistoElePtvsCutVarsRS[%d]",ih),
"",3,bins_eleptvscutvars,xmin_eleptvscutvars,xmax_eleptvscutvars);
3542 fHistoElePtvsCutVarsWS[ih] =
new THnSparseF(Form(
"fHistoElePtvsCutVarsWS[%d]",ih),
"",3,bins_eleptvscutvars,xmin_eleptvscutvars,xmax_eleptvscutvars);
3544 fHistoElePtvsCutVarsMCS[ih] =
new THnSparseF(Form(
"fHistoElePtvsCutVarsMCS[%d]",ih),
"",3,bins_eleptvscutvars,xmin_eleptvscutvars,xmax_eleptvscutvars);
3548 Int_t bins_eletag[3]= {20 ,40 ,10};
3549 Double_t xmin_eletag[3]={0.,0. ,0.0};
3550 Double_t xmax_eletag[3]={10.,20 ,100};
3551 fHistoElectronPi0Total =
new THnSparseF(
"fHistoElectronPi0Total",
"",3,bins_eletag,xmin_eletag,xmax_eletag);
3553 fHistoElectronPi0Tag =
new THnSparseF(
"fHistoElectronPi0Tag",
"",3,bins_eletag,xmin_eletag,xmax_eletag);
3555 fHistoElectronEtaTotal =
new THnSparseF(
"fHistoElectronEtaTotal",
"",3,bins_eletag,xmin_eletag,xmax_eletag);
3557 fHistoElectronEtaTag =
new THnSparseF(
"fHistoElectronEtaTag",
"",3,bins_eletag,xmin_eletag,xmax_eletag);
3575 if(!casc)
return 0x0;
3576 if(!part)
return 0x0;
3577 if(!aod)
return 0x0;
3582 AliAODVertex *primVertexAOD;
3583 Bool_t unsetvtx = kFALSE;
3587 primVertexAOD =
fVtx1;
3592 primVertexAOD =
fVtx1;
3594 if(!primVertexAOD)
return 0x0;
3595 Double_t posprim[3]; primVertexAOD->GetXYZ(posprim);
3600 AliESDtrack *esdtrack =
new AliESDtrack((AliVTrack*)partpid);
3602 Double_t xyz[3], pxpypz[3], cv[21]; Short_t sign;
3603 xyz[0]=casc->DecayVertexXiX();
3604 xyz[1]=casc->DecayVertexXiY();
3605 xyz[2]=casc->DecayVertexXiZ();
3606 pxpypz[0]=casc->MomXiX();
3607 pxpypz[1]=casc->MomXiY();
3608 pxpypz[2]=casc->MomXiZ();
3609 casc->GetCovarianceXYZPxPyPz(cv);
3610 sign=casc->ChargeXi();
3611 AliExternalTrackParam *trackCasc =
new AliExternalTrackParam(xyz,pxpypz,cv,sign);
3613 Double_t xdummy, ydummy;
3614 Double_t dca = esdtrack->GetDCA(trackCasc,
fBzkG,xdummy,ydummy);
3621 Double_t d0z0bach[2],covd0z0bach[3];
3622 if(sqrt(pow(secVert->GetX(),2)+pow(secVert->GetY(),2))<1.){
3623 part->PropagateToDCA(secVert,
fBzkG,kVeryBig,d0z0bach,covd0z0bach);
3624 trackCasc->PropagateToDCA(secVert,
fBzkG,kVeryBig);
3626 part->PropagateToDCA(primVertexAOD,
fBzkG,kVeryBig,d0z0bach,covd0z0bach);
3627 trackCasc->PropagateToDCA(primVertexAOD,
fBzkG,kVeryBig);
3629 Double_t momcasc_new[3]={-9999,-9999,-9999.};
3630 trackCasc->GetPxPyPz(momcasc_new);
3632 Double_t px[2],py[2],pz[2];
3633 px[0] = part->Px(); py[0] = part->Py(); pz[0] = part->Pz();
3634 px[1] = momcasc_new[0]; py[1] = momcasc_new[1]; pz[1] = momcasc_new[2];
3639 Double_t d0[3],d0err[3];
3641 part->PropagateToDCA(primVertexAOD,
fBzkG,kVeryBig,d0z0bach,covd0z0bach);
3643 d0err[0] = TMath::Sqrt(covd0z0bach[0]);
3645 Double_t d0z0casc[2],covd0z0casc[3];
3646 trackCasc->PropagateToDCA(primVertexAOD,
fBzkG,kVeryBig,d0z0casc,covd0z0casc);
3648 d0err[1] = TMath::Sqrt(covd0z0casc[0]);
3653 Short_t
charge = part->Charge();
3657 if(unsetvtx)
delete primVertexAOD; primVertexAOD=NULL;
3658 if(esdtrack)
delete esdtrack;
3659 if(trackCasc)
delete trackCasc;
3663 UShort_t
id[2]={(UShort_t)part->GetID(),(UShort_t)trackCasc->GetID()};
3666 theCascade->GetSecondaryVtx()->AddDaughter(part);
3667 theCascade->GetSecondaryVtx()->AddDaughter(casc);
3668 if(unsetvtx)
delete primVertexAOD; primVertexAOD=NULL;
3669 if(esdtrack)
delete esdtrack;
3670 if(trackCasc)
delete trackCasc;
3683 TObjArray *TrackArray =
new TObjArray(3);
3685 AliESDtrack *cptrk1 =
new AliESDtrack((AliVTrack*)trk);
3686 TrackArray->AddAt(cptrk1,0);
3688 AliESDtrack *cascptrack =
new AliESDtrack((AliVTrack*)casc->GetDaughter(0));
3689 TrackArray->AddAt(cascptrack,1);
3690 AliESDtrack *cascntrack =
new AliESDtrack((AliVTrack*)casc->GetDaughter(1));
3691 TrackArray->AddAt(cascntrack,2);
3692 AliESDtrack *cascbtrack =
new AliESDtrack((AliVTrack*)casc->GetDecayVertexXi()->GetDaughter(0));
3693 TrackArray->AddAt(cascbtrack,3);
3697 for(Int_t i=0;i<4;i++)
3699 AliESDtrack *tesd = (AliESDtrack*)TrackArray->UncheckedAt(i);
3702 TrackArray->Clear();
3717 Bool_t fRecoPrimVtxSkippingTrks = kTRUE;
3718 Bool_t fRmTrksFromPrimVtx = kFALSE;
3720 AliESDVertex *vertexESD = 0;
3721 AliAODVertex *vertexAOD = 0;
3726 if(!fRecoPrimVtxSkippingTrks && !fRmTrksFromPrimVtx) {
3729 vertexESD =
new AliESDVertex(*
fV1);
3734 Int_t nTrks = trkArray->GetEntriesFast();
3735 AliVertexerTracks *vertexer =
new AliVertexerTracks(event->GetMagneticField());
3737 if(fRecoPrimVtxSkippingTrks) {
3740 if(strstr(
fV1->GetTitle(),
"VertexerTracksWithConstraint")) {
3741 Float_t diamondcovxy[3];
3742 event->GetDiamondCovXY(diamondcovxy);
3743 Double_t pos[3]={
event->GetDiamondX(),
event->GetDiamondY(),0.};
3744 Double_t cov[6]={diamondcovxy[0],diamondcovxy[1],diamondcovxy[2],0.,0.,10.*10.};
3745 AliESDVertex *diamond =
new AliESDVertex(pos,cov,1.,1);
3746 vertexer->SetVtxStart(diamond);
3747 delete diamond; diamond=NULL;
3748 if(strstr(
fV1->GetTitle(),
"VertexerTracksWithConstraintOnlyFitter"))
3749 vertexer->SetOnlyFitter();
3751 Int_t skipped[1000];
3752 Int_t nTrksToSkip=0,id;
3753 AliExternalTrackParam *t = 0;
3754 for(Int_t i=0; i<nTrks; i++) {
3755 t = (AliExternalTrackParam*)trkArray->UncheckedAt(i);
3756 id = (Int_t)t->GetID();
3758 skipped[nTrksToSkip++] = id;
3762 Double_t covtest[21];
3763 for(Int_t j=0; j<
event->GetNumberOfTracks(); j++) {
3764 AliVTrack *vtrack = (AliVTrack*)event->GetTrack(j);
3765 if(!vtrack->GetCovarianceXYZPxPyPz(covtest)) {
3766 id = (Int_t)vtrack->GetID();
3768 skipped[nTrksToSkip++] = id;
3771 for(Int_t ijk=nTrksToSkip; ijk<1000; ijk++) skipped[ijk]=-1;
3773 vertexer->SetSkipTracks(nTrksToSkip,skipped);
3774 vertexESD = (AliESDVertex*)vertexer->FindPrimaryVertex(event);
3776 }
else if(fRmTrksFromPrimVtx && nTrks>0) {
3779 TObjArray rmArray(nTrks);
3780 UShort_t *rmId =
new UShort_t[nTrks];
3781 AliESDtrack *esdTrack = 0;
3783 for(Int_t i=0; i<nTrks; i++) {
3784 t = (AliESDtrack*)trkArray->UncheckedAt(i);
3785 esdTrack =
new AliESDtrack(*t);
3786 rmArray.AddLast(esdTrack);
3787 if(esdTrack->GetID()>=0) {
3788 rmId[i]=(UShort_t)esdTrack->GetID();
3793 Float_t diamondxy[2]={
static_cast<Float_t
>(
event->GetDiamondX()),static_cast<Float_t>(event->GetDiamondY())};
3794 vertexESD = vertexer->RemoveTracksFromVertex(
fV1,&rmArray,rmId,diamondxy);
3795 delete [] rmId; rmId=NULL;
3800 delete vertexer; vertexer=NULL;
3801 if(!vertexESD)
return vertexAOD;
3802 if(vertexESD->GetNContributors()<=0) {
3804 delete vertexESD; vertexESD=NULL;
3812 Double_t pos[3],cov[6],chi2perNDF;
3813 vertexESD->GetXYZ(pos);
3814 vertexESD->GetCovMatrix(cov);
3815 chi2perNDF = vertexESD->GetChi2toNDF();
3816 delete vertexESD; vertexESD=NULL;
3818 vertexAOD =
new AliAODVertex(pos,cov,chi2perNDF);
3830 AliAODVertex *primVertexAOD;
3831 Bool_t unsetvtx = kFALSE;
3835 primVertexAOD =
fVtx1;
3840 primVertexAOD =
fVtx1;
3842 if(!primVertexAOD)
return 0x0;
3844 AliESDVertex * vertexESD =
new AliESDVertex(*
fV1);
3846 Double_t pos[3],cov[6],chi2perNDF;
3847 vertexESD->GetXYZ(pos);
3848 vertexESD->GetCovMatrix(cov);
3849 chi2perNDF = vertexESD->GetChi2toNDF();
3850 delete vertexESD; vertexESD=NULL;
3852 AliAODVertex *secVert =
new AliAODVertex(pos,cov,chi2perNDF);
3862 for(Int_t i=0;i<100;i++){
3863 pdgarray_ele[i] = -9999;
3864 labelarray_ele[i] = -9999;
3865 pdgarray_casc[i] = -9999;
3866 labelarray_casc[i] = -9999;
3871 AliVTrack *trk =
dynamic_cast<AliVTrack*
>(exobj->
GetBachelor());
3873 Int_t labEle = trk->GetLabel();
3874 if(labEle<0)
return -1;
3875 AliAODMCParticle *mcetrk = (AliAODMCParticle*)mcArray->At(labEle);
3876 if(!mcetrk)
return -1;
3877 labelarray_ele[0] = labEle;
3878 pdgarray_ele[0] = mcetrk->GetPdgCode();
3881 AliAODMCParticle *mcprimele=0;
3883 while(mcprimele->GetMother()>=0) {
3884 Int_t labprim_ele=mcprimele->GetMother();
3885 AliAODMCParticle *tmcprimele = (AliAODMCParticle*)mcArray->At(labprim_ele);
3890 mcprimele = tmcprimele;
3891 pdgarray_ele[ngen_ele] = mcprimele->GetPdgCode();
3892 labelarray_ele[ngen_ele] = labprim_ele;
3894 if(ngen_ele==100)
break;
3897 AliAODcascade *theCascade =
dynamic_cast<AliAODcascade*
>(exobj->
GetCascade());
3898 if(!theCascade)
return -1;
3900 Int_t pdgDgcasc[2]={211,3122};
3901 Int_t pdgDgv0[2]={2212,211};
3902 Int_t labcasc =
MatchToMCCascade(theCascade,3312,pdgDgcasc,pdgDgv0,mcArray);
3903 if(labcasc<0)
return -1;
3905 AliAODMCParticle *mccasc = (AliAODMCParticle*)mcArray->At(labcasc);
3906 if(!mccasc)
return -1;
3907 labelarray_casc[0] = labcasc;
3908 pdgarray_casc[0] = mccasc->GetPdgCode();
3911 AliAODMCParticle *mcprimcasc=0;
3912 mcprimcasc = mccasc;
3913 while(mcprimcasc->GetMother()>=0) {
3914 Int_t labprim_casc=mcprimcasc->GetMother();
3915 AliAODMCParticle *tmcprimcasc = (AliAODMCParticle*)mcArray->At(labprim_casc);
3920 mcprimcasc = tmcprimcasc;
3921 pdgarray_casc[ngen_casc] = mcprimcasc->GetPdgCode();
3922 labelarray_casc[ngen_casc] = labprim_casc;
3924 if(ngen_casc==100)
break;
3927 Bool_t same_flag = kFALSE;
3928 Int_t matchedlabel=-9999;
3929 for(Int_t iemc=0;iemc<ngen_ele;iemc++){
3930 for(Int_t ivmc=0;ivmc<ngen_casc;ivmc++){
3931 if(labelarray_ele[iemc]==labelarray_casc[ivmc]){
3933 matchedlabel = labelarray_ele[iemc];
3937 if(same_flag)
break;
3940 return matchedlabel;
3950 AliAODTrack *cptrack = (AliAODTrack*) theCascade->GetDaughter(0);
3951 if(!cptrack)
return -1;
3952 Int_t label_p = TMath::Abs(cptrack->GetLabel());
3953 if(label_p<0)
return -1;
3954 AliAODTrack *cntrack = (AliAODTrack*) theCascade->GetDaughter(1);
3955 if(!cntrack)
return -1;
3956 Int_t label_n = TMath::Abs(cntrack->GetLabel());
3957 if(label_n<0)
return -1;
3958 Int_t labv0 = theCascade->MatchToMC(pdgDgcasc[1],mcArray,2,pdgDgv0);
3959 if(labv0<0)
return -1;
3960 AliAODMCParticle *mcpartv0= (AliAODMCParticle*) mcArray->At(labv0);
3962 AliAODTrack *cbtrack = (AliAODTrack*) theCascade->GetDecayVertexXi()->GetDaughter(0);
3963 if(!cbtrack)
return -1;
3965 Int_t label_b = TMath::Abs(cbtrack->GetLabel());
3966 if(label_b<0)
return -1;
3968 AliAODMCParticle *mcpartb= (AliAODMCParticle*) mcArray->At(label_b);
3969 Int_t pdgb = TMath::Abs(mcpartb->GetPdgCode());
3970 if(pdgb!=pdgDgcasc[0])
return -1;
3972 AliAODMCParticle *mcmotherv0=mcpartv0;
3973 Bool_t isFromXiv0 = kFALSE;
3974 Int_t labxiv0 = mcmotherv0->GetMother();
3975 if(labxiv0<0)
return -1;
3976 mcmotherv0 = (AliAODMCParticle*) mcArray->At(labxiv0);
3978 Int_t
pdg = TMath::Abs(mcmotherv0 ->GetPdgCode());
3979 if(pdg==pdgabscasc){
3983 if(!isFromXiv0)
return -1;
3985 AliAODMCParticle *mcmotherb=mcpartb;
3986 Bool_t isFromXib = kFALSE;
3987 Int_t labxib = mcmotherb->GetMother();
3988 if(labxib<0)
return -1;
3989 mcmotherb = (AliAODMCParticle*) mcArray->At(labxib);
3991 Int_t
pdg = TMath::Abs(mcmotherb ->GetPdgCode());
3992 if(pdg==pdgabscasc){
3996 if(!isFromXib)
return -1;
3998 if(labxiv0!=labxib)
return -1;
4010 if(trkEntries==0)
return;
4013 for(Int_t i=0; i<trkEntries; i++) {
4014 seleFlags[i] = kFALSE;
4017 track = (AliVTrack*)event->GetTrack(i);
4020 Double_t covtest[21];
4021 if(!track->GetCovarianceXYZPxPyPz(covtest))
continue;
4025 AliAODTrack *aodt = (AliAODTrack*)track;
4030 if(!aodt->TestFilterBit(BIT(filterbit)))
continue;
4032 if(!aodt->TestFilterMask(BIT(filterbit)))
continue;
4036 AliAODTrack *aodtpid = 0;
4038 aodtpid =
fGTI[-aodt->GetID()-1];
4043 Double_t nsigma_tpcele = -9999;
4044 Double_t nsigma_tofele = -9999;
4053 if(fabs(nsigma_tofele)<3.){
4055 Double_t eleeta = aodt->Eta();
4056 if(fabs(eleeta)<0.6)
4058 if(fabs(eleeta)>0.6 && fabs(eleeta)<0.8)
4060 if(eleeta>-0.8 && eleeta<-0.6){
4062 }
else if(eleeta>-0.6&&eleeta<-0.4){
4064 }
else if(eleeta>-0.4&&eleeta<-0.2){
4066 }
else if(eleeta>-0.2&&eleeta<0.0){
4068 }
else if(eleeta>0.0&&eleeta<0.2){
4070 }
else if(eleeta>0.2&&eleeta<0.4){
4072 }
else if(eleeta>0.4&&eleeta<0.6){
4074 }
else if(eleeta>0.6&&eleeta<0.8){
4078 if(nsigma_tpcele>-0.5&&nsigma_tpcele<3.){
4088 Double_t minmass_ee = 9999.;
4089 Double_t minmasslike_ee = 9999.;
4092 Int_t mcetype = -9999;
4096 Int_t labEle = aodt->GetLabel();
4098 seleFlags[i]=kFALSE;
4101 AliAODMCParticle *mcetrk = (AliAODMCParticle*)mcArray->At(labEle);
4103 seleFlags[i]=kFALSE;
4106 Int_t pdgEle = mcetrk->GetPdgCode();
4107 if(abs(pdgEle)!=11){
4108 seleFlags[i]=kFALSE;
4112 Int_t pdgarray_ele[100], labelarray_ele[100], ngen_ele;
4116 Bool_t gamma_flag = kFALSE;
4117 Bool_t pi0_flag = kFALSE;
4118 Bool_t eta_flag = kFALSE;
4119 Double_t pt_pi0 = -9999.;
4120 Double_t pt_eta = -9999.;
4121 if(abs(pdgarray_ele[0])>400&&abs(pdgarray_ele[0])<440){
4124 if(abs(pdgarray_ele[0])>4000&&abs(pdgarray_ele[0])<4400){
4127 if(abs(pdgarray_ele[0])>500&&abs(pdgarray_ele[0])<540){
4130 if(abs(pdgarray_ele[0])>5000&&abs(pdgarray_ele[0])<5400){
4133 if(abs(pdgarray_ele[0])==22){
4139 if((abs(pdgarray_ele[0])==22) && (abs(pdgarray_ele[1])==111)){
4141 AliAODMCParticle *mctrkm = (AliAODMCParticle*)mcArray->At(labelarray_ele[1]);
4142 pt_pi0 = mctrkm->Pt();
4144 if(abs(pdgarray_ele[0])==111){
4146 AliAODMCParticle *mctrkm = (AliAODMCParticle*)mcArray->At(labelarray_ele[0]);
4147 pt_pi0 = mctrkm->Pt();
4149 if((abs(pdgarray_ele[0])==22) && (abs(pdgarray_ele[1])==221)){
4151 AliAODMCParticle *mctrkm = (AliAODMCParticle*)mcArray->At(labelarray_ele[1]);
4152 pt_eta = mctrkm->Pt();
4154 if(abs(pdgarray_ele[0])==221){
4156 AliAODMCParticle *mctrkm = (AliAODMCParticle*)mcArray->At(labelarray_ele[0]);
4157 pt_eta = mctrkm->Pt();
4161 Double_t cont_pi0[3];
4162 cont_pi0[0] = aodt->Pt();
4163 cont_pi0[1] = pt_pi0;
4170 Double_t cont_eta[3];
4171 cont_eta[0] = aodt->Pt();
4172 cont_eta[1] = pt_eta;
4179 seleFlags[i]=kFALSE;
4199 FillElectronROOTObjects(aodt,aodtpid,(Int_t)isconv + 2 * (Int_t)isconv_like,mcetype,(AliAODEvent*)event,mcArray);
4225 Double_t primVtx[3];
4226 fVtx1->GetXYZ(primVtx);
4229 for(Int_t icasc=0;icasc<nCascs;icasc++)
4231 seleCascFlags[icasc] = kFALSE;
4232 AliAODcascade *casc = ((AliAODEvent*)event)->GetCascade(icasc);
4236 seleCascFlags[icasc] = kTRUE;
4250 if(theBinZ<0 || theBinZ>=
fNzVtxBins)
return -1;
4252 if(theBinM<0 || theBinM>=
fNCentBins)
return -1;
4260 if(poolIndex<0 || poolIndex>=
fNOfPools)
return;
4262 fEventBuffer[poolIndex]=
new TTree(Form(
"EventBuffer_%d",poolIndex),
"Temporary buffer for event mixing");
4287 TObjArray* c1array=0x0;
4288 TObjArray* c2array=0x0;
4289 TObjArray* c1varsarray=0x0;
4290 TObjArray* c2varsarray=0x0;
4291 Float_t zVertex,cent;
4292 TObjString* eventInfo=0x0;
4293 fEventBuffer[poolIndex]->SetBranchAddress(
"zVertex", &zVertex);
4294 fEventBuffer[poolIndex]->SetBranchAddress(
"eventInfo",&eventInfo);
4295 fEventBuffer[poolIndex]->SetBranchAddress(
"centrality", ¢);
4296 fEventBuffer[poolIndex]->SetBranchAddress(
"c1array", &c1array);
4297 fEventBuffer[poolIndex]->SetBranchAddress(
"c2array", &c2array);
4298 fEventBuffer[poolIndex]->SetBranchAddress(
"c1varsarray", &c1varsarray);
4299 fEventBuffer[poolIndex]->SetBranchAddress(
"c2varsarray", &c2varsarray);
4300 for (Int_t i=0; i<nEle; i++)
4307 fEventBuffer[poolIndex]->GetEvent(iEv + nEvents - fNumberOfEventsForMixing);
4309 Int_t nCascs1=c1array->GetEntries();
4320 for(Int_t iTr1=0; iTr1<nCascs1; iTr1++){
4321 TLorentzVector* casc1=(TLorentzVector*) c1array->At(iTr1);
4322 if(!casc1)
continue;
4323 TVector *cascvarsarray = (TVector*) c1varsarray->At(iTr1);
4328 Int_t nCascs2=c2array->GetEntries();
4329 for(Int_t iTr2=0; iTr2<nCascs2; iTr2++){
4330 TLorentzVector* casc2=(TLorentzVector*) c2array->At(iTr2);
4331 if(!casc2)
continue;
4332 TVector *cascvarsarray = (TVector*) c2varsarray->At(iTr2);
4348 Int_t nmcpart = mcArray->GetEntriesFast();
4350 Int_t mcevttype = 0;
4352 Bool_t sigmaevent = kFALSE;
4359 Int_t ncbarquark = 0;
4360 Double_t phi_c = -9999.;
4361 Double_t phi_cbar = -9999.;
4362 for(Int_t i=0;i<nmcpart;i++)
4364 AliAODMCParticle *mcpart = (AliAODMCParticle*) mcArray->At(i);
4365 if(TMath::Abs(mcpart->GetPdgCode())==4){
4366 if(fabs(mcpart->Y())<1.5){
4367 if(mcpart->GetPdgCode()==4){
4368 phi_c = mcpart->Phi();
4371 if(mcpart->GetPdgCode()==-4){
4372 phi_cbar = mcpart->Phi();
4377 }
else if(mcevttype==1){
4379 }
else if(mcevttype==2){
4381 }
else if(mcevttype==3){
4387 if(TMath::Abs(mcpart->GetPdgCode())==5){
4388 if(!mcpart->IsPhysicalPrimary())
continue;
4389 if(fabs(mcpart->Y())<1.5){
4392 }
else if(mcevttype==1){
4394 }
else if(mcevttype==2){
4396 }
else if(mcevttype==3){
4404 if((mcevttype==2)||(mcevttype==0)||(mcevttype==3))
return kFALSE;
4406 if((mcevttype==1)||(mcevttype==0)||(mcevttype==3))
return kFALSE;
4410 if(ncquark!=1)
return kFALSE;
4411 if(ncbarquark!=1)
return kFALSE;
4412 Double_t dphi = fabs(phi_c - phi_cbar);
4413 if(dphi>2*M_PI) dphi -= 2*M_PI;
4414 if(dphi>M_PI) dphi = 2*M_PI-dphi;
4424 for(Int_t i=0;i<nmcpart;i++)
4426 AliAODMCParticle *mcpart = (AliAODMCParticle*) mcArray->At(i);
4427 if(TMath::Abs(mcpart->GetPdgCode())==4132){
4428 Bool_t e_flag = kFALSE;
4429 Bool_t xi_flag = kFALSE;
4430 AliAODMCParticle *mcepart = 0;
4431 AliAODMCParticle *mccascpart = 0;
4432 for(Int_t idau=mcpart->GetFirstDaughter();idau<mcpart->GetLastDaughter()+1;idau++)
4435 AliAODMCParticle *mcdau = (AliAODMCParticle*) mcArray->At(idau);
4436 if(!mcdau)
continue;
4437 if(TMath::Abs(mcdau->GetPdgCode())==11){
4441 if(TMath::Abs(mcdau->GetPdgCode())==3312){
4447 Int_t decaytype = -9999;
4448 if(e_flag && xi_flag) decaytype = 0;
4452 if(!e_flag&&xi_flag)
4454 if(e_flag&&!xi_flag)
4456 if(!e_flag&&!xi_flag)
4461 if(TMath::Abs(mcpart->GetPdgCode())==5132 || TMath::Abs(mcpart->GetPdgCode())==5232){
4462 Bool_t e_flag = kFALSE;
4463 Bool_t xic_flag = kFALSE;
4464 AliAODMCParticle *mcepart = 0;
4465 AliAODMCParticle *mcxicpart = 0;
4466 AliAODMCParticle *mccascpart = 0;
4467 for(Int_t idau=mcpart->GetFirstDaughter();idau<mcpart->GetLastDaughter()+1;idau++)
4470 AliAODMCParticle *mcdau = (AliAODMCParticle*) mcArray->At(idau);
4471 if(!mcdau)
continue;
4472 if(TMath::Abs(mcdau->GetPdgCode())==11){
4476 if(TMath::Abs(mcdau->GetPdgCode())==4132 || TMath::Abs(mcdau->GetPdgCode())==4232 ){
4482 Bool_t xi_flag = kFALSE;
4483 if(e_flag && xic_flag){
4484 for(Int_t idau=mcxicpart->GetFirstDaughter();idau<mcxicpart->GetLastDaughter()+1;idau++)
4487 AliAODMCParticle *mcdau = (AliAODMCParticle*) mcArray->At(idau);
4488 if(!mcdau)
continue;
4489 if(TMath::Abs(mcdau->GetPdgCode())==3312){
4497 Double_t contmc_withxic[3];
4498 contmc_withxic[0] = mcpart->Pt();
4499 contmc_withxic[1] = mcpart->Y();
4500 contmc_withxic[2] = mcxicpart->Y();
4501 if(fabs(mcxicpart->Y())<1.){
4507 Int_t decaytype = -9999;
4508 if(e_flag && xic_flag && xi_flag) decaytype = 10;
4511 if(TMath::Abs(mcpart->GetPdgCode())==11 && mcpart->GetStatus()==1){
4514 esdcuts->GetEtaRange(etamin,etamax);
4515 if(fabs(mcpart->Eta())<etamax){
4516 Bool_t gamma_flag = kFALSE;
4517 Int_t labmother = mcpart->GetMother();
4519 AliAODMCParticle *mcmother = (AliAODMCParticle*) mcArray->At(labmother);
4520 Int_t pdgmother = mcmother->GetPdgCode();
4521 if(TMath::Abs(pdgmother)==22) gamma_flag = kTRUE;
4527 if(TMath::Abs(mcpart->GetPdgCode())==3312){
4532 if((fabs(mcpart->Y())<rapmax) && (fabs(mcpart->Eta())<etamax)){
4538 if(TMath::Abs(mcpart->GetPdgCode())==111){
4539 if(fabs(mcpart->Y())<0.5){
4543 if(TMath::Abs(mcpart->GetPdgCode())==221){
4544 if(fabs(mcpart->Y())<0.5){
4552 for(Int_t i=0;i<nmcpart;i++)
4554 AliAODMCParticle *mcparte = (AliAODMCParticle*) mcArray->At(i);
4555 if(!mcparte)
continue;
4556 if(TMath::Abs(mcparte->GetPdgCode())!=11)
continue;
4557 if(mcparte->GetStatus()!=1)
continue;
4558 if(mcparte->Pt()<0.4)
continue;
4559 if(fabs(mcparte->Eta())>0.8)
continue;
4560 for(Int_t j=0;j<nmcpart;j++)
4562 AliAODMCParticle *mcpartv = (AliAODMCParticle*) mcArray->At(j);
4563 if(!mcpartv)
continue;
4564 if(TMath::Abs(mcpartv->GetPdgCode())!=3312)
continue;
4565 if(mcpartv->Pt()<0.4)
continue;
4566 if(fabs(mcpartv->Eta())>0.8)
continue;
4567 if(mcpartv->GetNDaughters()!=2)
continue;
4585 const char* nameoutput = GetOutputSlot(11)->GetContainer()->GetName();
4589 TString * fCandidateVariableNames =
new TString[nVar];
4591 fCandidateVariableNames[ 0] =
"InvMassEleXi";
4592 fCandidateVariableNames[ 1] =
"EleXiPx";
4593 fCandidateVariableNames[ 2] =
"EleXiPy";
4594 fCandidateVariableNames[ 3] =
"EleXiPz";
4595 fCandidateVariableNames[ 4] =
"ElePdgCode";
4596 fCandidateVariableNames[ 5] =
"ElePx";
4597 fCandidateVariableNames[ 6] =
"ElePy";
4598 fCandidateVariableNames[ 7] =
"ElePz";
4599 fCandidateVariableNames[ 8] =
"XiPdgCode";
4600 fCandidateVariableNames[ 9] =
"XiPx";
4601 fCandidateVariableNames[10] =
"XiPy";
4602 fCandidateVariableNames[11] =
"XiPz";
4603 fCandidateVariableNames[12] =
"SameFlag";
4604 fCandidateVariableNames[13] =
"EleNGeneration";
4605 fCandidateVariableNames[14] =
"EleGen1PDG";
4606 fCandidateVariableNames[15] =
"EleGen2PDG";
4607 fCandidateVariableNames[16] =
"EleGen3PDG";
4608 fCandidateVariableNames[17] =
"EleGen4PDG";
4609 fCandidateVariableNames[18] =
"EleGen5PDG";
4610 fCandidateVariableNames[19] =
"EleGen6PDG";
4611 fCandidateVariableNames[20] =
"EleGen7PDG";
4612 fCandidateVariableNames[21] =
"EleGen8PDG";
4613 fCandidateVariableNames[22] =
"EleGen9PDG";
4614 fCandidateVariableNames[23] =
"EleGen10PDG";
4615 fCandidateVariableNames[24] =
"ElePrimPDG";
4616 fCandidateVariableNames[25] =
"XiNGeneration";
4617 fCandidateVariableNames[26] =
"XiGen1PDG";
4618 fCandidateVariableNames[27] =
"XiGen2PDG";
4619 fCandidateVariableNames[28] =
"XiGen3PDG";
4620 fCandidateVariableNames[29] =
"XiGen4PDG";
4621 fCandidateVariableNames[30] =
"XiGen5PDG";
4622 fCandidateVariableNames[31] =
"XiGen6PDG";
4623 fCandidateVariableNames[32] =
"XiGen7PDG";
4624 fCandidateVariableNames[33] =
"XiGen8PDG";
4625 fCandidateVariableNames[34] =
"XiGen9PDG";
4626 fCandidateVariableNames[35] =
"XiGen10PDG";
4627 fCandidateVariableNames[36] =
"XiPrimPDG";
4628 fCandidateVariableNames[37] =
"MatchedPDG";
4630 for (Int_t ivar=0; ivar<nVar; ivar++) {
4642 for(Int_t i=0;i<38;i++){
4646 TLorentzVector vele, vxi, vexi;
4647 vele.SetXYZM(mcparte->Px(),mcparte->Py(),mcparte->Pz(),0.000510998928);
4648 vxi.SetXYZM(mcpartv->Px(),mcpartv->Py(),mcpartv->Pz(),1.32171);
4651 Int_t pdgarray_ele[100], labelarray_ele[100], ngen_ele;
4652 Int_t pdgarray_xi[100], labelarray_xi[100], ngen_xi;
4656 Bool_t same_flag = kFALSE;
4657 Int_t matched_pdg = -999999;
4658 for(Int_t iemc=0;iemc<ngen_ele;iemc++){
4659 for(Int_t ivmc=0;ivmc<ngen_xi;ivmc++){
4660 if(labelarray_ele[iemc]==labelarray_xi[ivmc]){
4662 matched_pdg = pdgarray_ele[iemc];
4666 if(same_flag)
break;
4668 Int_t pdgprim_ele = pdgarray_ele[ngen_ele-1];
4669 Int_t pdgprim_xi = pdgarray_xi[ngen_xi-1];
4720 const char* nameoutput = GetOutputSlot(12)->GetContainer()->GetName();
4724 TString * fCandidateVariableNames =
new TString[nVar];
4726 fCandidateVariableNames[0] =
"XiPt";
4727 fCandidateVariableNames[1] =
"ElePt";
4728 fCandidateVariableNames[2] =
"DeltaPhi";
4729 fCandidateVariableNames[3] =
"DeltaEta";
4730 fCandidateVariableNames[4] =
"V0ProperDecayLength";
4731 fCandidateVariableNames[5] =
"Eled0";
4732 fCandidateVariableNames[6] =
"FGMixMC";
4733 fCandidateVariableNames[7] =
"SignType";
4734 fCandidateVariableNames[8] =
"Convtype";
4735 fCandidateVariableNames[9] =
"MCType";
4736 fCandidateVariableNames[10] =
"Centrality";
4737 fCandidateVariableNames[11] =
"EleXiPt";
4738 fCandidateVariableNames[12] =
"EleXiMass";
4741 for (Int_t ivar=0; ivar<nVar; ivar++) {
4754 for(Int_t i=0;i<100;i++){
4755 pdgarray[i] = -9999;
4756 labelarray[i] = -9999;
4760 AliAODMCParticle *mcprim = mcpart;
4761 while(mcprim->GetMother()>=0) {
4762 Int_t lab_prim=mcprim->GetMother();
4764 AliAODMCParticle *tmcprim = (AliAODMCParticle*)mcArray->At(lab_prim);
4768 if((TMath::Abs(tmcprim->GetPdgCode())<10) || (TMath::Abs(tmcprim->GetPdgCode())==21))
break;
4772 pdgarray[ngen] = mcprim->GetPdgCode();
4773 labelarray[ngen] = lab_prim;
4776 if(ngen == 100)
break;
4787 if(track->GetID()<0){
4794 printf(
"Warning: track ID too big for buffer: ID: %d, buffer %d\n"
4800 if(
fGTI[track->GetID()]){
4803 if( (!track->GetFilterMap()) &&
4804 (!track->GetTPCNcls()) )
4812 if(
fGTI[track->GetID()]->GetFilterMap() ||
4813 fGTI[track->GetID()]->GetTPCNcls() ){
4815 printf(
"Warning! global track info already there!");
4816 printf(
" TPCNcls track1 %u track2 %u",
4817 (
fGTI[track->GetID()])->GetTPCNcls(),track->GetTPCNcls());
4818 printf(
" FilterMap track1 %u track2 %u\n",
4819 (
fGTI[track->GetID()])->GetFilterMap(),track->GetFilterMap());
4831 (
fGTI[track->GetID()]) = track;
4832 (
fGTIndex[track->GetID()]) = index;
4848 if(abs(history[1])==411)
return 1;
4849 if(abs(history[1])==421)
return 1;
4850 if(abs(history[1])==431)
return 1;
4851 if(abs(history[1])==4122)
return 1;
4852 if(abs(history[1])==4132)
return 1;
4853 if(abs(history[1])==4232)
return 1;
4854 if(abs(history[1])==4332)
return 1;
4856 if(abs(history[1])==511)
return 2;
4857 if(abs(history[1])==521)
return 2;
4858 if(abs(history[1])==531)
return 2;
4859 if(abs(history[1])==5122)
return 2;
4860 if(abs(history[1])==5132)
return 2;
4861 if(abs(history[1])==5232)
return 2;
4862 if(abs(history[1])==5332)
return 2;
4871 for(Int_t ih=0;ih<10;ih++){
4872 if(abs(history[ih])==411)
return kTRUE;
4873 if(abs(history[ih])==421)
return kTRUE;
4874 if(abs(history[ih])==431)
return kTRUE;
4875 if(abs(history[ih])==4122)
return kTRUE;
4876 if(abs(history[ih])==4132)
return kTRUE;
4877 if(abs(history[ih])==4232)
return kTRUE;
4878 if(abs(history[ih])==4332)
return kTRUE;
4887 for(Int_t ih=0;ih<10;ih++){
4888 if(abs(history[ih])==511)
return kTRUE;
4889 if(abs(history[ih])==521)
return kTRUE;
4890 if(abs(history[ih])==531)
return kTRUE;
4891 if(abs(history[ih])==5122)
return kTRUE;
4892 if(abs(history[ih])==5132)
return kTRUE;
4893 if(abs(history[ih])==5232)
return kTRUE;
4894 if(abs(history[ih])==5332)
return kTRUE;
Float_t fVtxZ
primary vertex
THnSparse * fHistoEleXiMassvsElePtWS2
! e-Xi mass spectra (wrong-sign)
AliAnalysisTaskSEXic2eleXifromAODtracks()
THnSparse * fHistoElePtvsEtaRS
! e spectra (right-sign)
Bool_t fWriteVariableTree
flag for event selected
TH2F * fHistoElectronQovPtvsPhi
! Electron phi distribution
ClassImp(AliAnalysisTaskTriggerRates) AliAnalysisTaskTriggerRates
THnSparse * fHistoXicMCS
! electron in mcArray
TH2F * fHistoLambdaPtvsDl
! Lambda proper life time distribution
Double_t fCentBins[100]
number of centrality bins
THnSparse * fHistoElePtvsXiPtMCGen
! e-Xi spectra efficiency denominator
THnSparse * fHistoXicMCGen2
! electron in mcArray
THnSparse * fHistoEleXiMassBFeeddownMCS1
! e-Xi mass spectra (Efficiency numerator)
Bool_t IsEventRejectedDueToNotRecoVertex() const
Bool_t SingleCascadeCuts(AliAODcascade *casc, Double_t *vert)
THnSparse * fHistoEleXiMassRSMixAway
! e-Xi mass spectra (right-sign)
Bool_t fMCDoPairAnalysis
MC eventtype to analyze 1: ccbar 2: bbbar.
Double_t dEtaSR125(Double_t *postrack1, Double_t *postrack2)
TH1F * fHistoBachPtMCGen
! Bachelor pT histogram (efficiency denominator)
TH2D * fHistoResponseEleXiPt
! Response function e-Xi pT <- XicPt
THnSparse * fHistoElePtvsd0RS
! e pt-d0 spectra (right-sign)
THnSparse * fHistoEleXiMassWSMix2
! e-Xi mass spectra (wrong-sign)
TH2F * fHistoElectronTPCPIDSelTOFEtaDep[8]
! TPC electron PID after TOF 3 sigma cut Eta dep
Float_t * fCorrelationVariables
! Correlation variables to be written to the tree
TH2F * fHistoEleXiPtvsRapidityRS
! e-Xi pT vs y
void ResetPool(Int_t poolIndex)
THnSparse * fHistoEleXiMassWSSideAway
! e-Xi mass spectra (wrong-sign)
THnSparse * fHistoEleXiMassRSMix1
! e-Xi mass spectra (right-sign)
Bool_t fWriteMCVariableTree
flag to decide whether to write the candidate variables on a tree variables
Int_t MatchToMCCascade(AliAODcascade *theCascade, Int_t pdgabscasc, Int_t *pdgDgcasc, Int_t *pdgDgv0, TClonesArray *mcArray) const
Float_t * fCandidateCascVariables
! variables to be written to the tree
THnSparse * fHistoEleXiMassvsElePtRSSide1
! e-Xi mass-ept spectra (right-sign)
void GetProdCascEtaRange(Double_t &a, Double_t &b)
TH2D * fHistoResponseEleXiPtXib
! Response function Xi pT <- True ept
void DefineMCTreeVariables()
THnSparse * fHistoEleXiMassRSAway
! e-Xi mass spectra (right-sign)
THnSparse * fHistoElePtvsEtaWS
! e spectra (wrong-sign)
TH2F * fHistoLambdaPtvsDR
! Lambda decay length distribution
void DefineMCEleTreeVariables()
Bool_t HaveBottomInHistory(Int_t *history)
THnSparse * fHistoEleXiMassRSMix2
! e-Xi mass spectra (right-sign)
THnSparse * fHistoElePtvsXiPtRSMix
! e-Xi spectra (right-sign, mix)
THnSparse * fHistoEleXiMassMCS2
! e-Xi mass spectra (Efficiency numerator)
THnSparse * fHistoXicElectronMCGen1
! electron in mcArray
Bool_t fIsINT7
Central trigger event.
TH1F * fHistoPi0MCGen
! Number of electrons from pi0
TH2F * fHistoXiQovPtvsPhi
! Xi phi distribution
Bool_t fMixWithoutConversionFlag
flag for event mixing
void UnsetOwnPrimaryVtx()
TH2D * fHistodPhiSdEtaSElectronProtonR125RSMix
! dPhiS vs dEtaS R125 RS Mix
THnSparse * fHistoXicElectronMCGen
! electron in mcArray
Float_t * fCandidateMCVariables
! variables to be written to the tree
TH2D * fHistoResponseXiPtXib
! Response function Xi pT <- True ept
THnSparse * fHistoCharmElectronMCGen
! electron in mcArray (only from charmed baryon)
void SelectTrack(const AliVEvent *event, Int_t trkEntries, Int_t &nSeleTrks, Bool_t *seleFlags, TClonesArray *mcArray)
Bool_t fIsEMC7
INT7 trigger event.
THnSparse * fHistoElePtvsCutVarsRS[23]
! e pt- cut variables (Right-sign)
TH1F * fHistoBachPt
! Bachelor pT histogram
THnSparse * fHistoEleXiMassRSSideAway
! e-Xi mass spectra (right-sign)
THnSparse * fHistoXicElectronMCGen2
! electron in mcArray
void FillMCEleROOTObjects(AliAODMCParticle *mcepart, TClonesArray *mcArray)
TList * fOutputAll
! User Output slot 3 //analysis histograms
THnSparse * fHistoXibMCGen
! electron in mcArray
THnSparse * fHistoElePtvsd0MCS
! e pt-d0 spectra (right-sign)
THnSparse * fHistoXicElectronMCS
! electron in mcArray
TH2F * fHistoLambdaPtvsDRMCS
! Lambda decay length distribution (mc)
THnSparse * fHistoEleXiMassvsElePtRS2
! e-Xi mass spectra (right-sign)
THnSparse * fHistoElePtvsd0PromptMCS
! e pt-d0 spectra (right-sign)
TH2D * fHistodPhiSdEtaSElectronBachelorR125WSMix
! dPhiS vs dEtaS R125 WS Mix
THnSparse * fHistoElePtvsXiPtvsXicPtMCS
! e-Xi spectra efficiency numerator
THnSparse * fHistoEleXiMassWSSide
! e-Xi mass spectra (wrong-sign)
AliAODPidHF * GetPidCascPr() const
TTree * fMCCascVariablesTree
! tree of the candidate variables after track selection on output slot 4
const Float_t * GetCuts() const
void FillROOTObjects(AliAODRecoCascadeHF *elobj, AliAODcascade *casc, AliAODTrack *trk, AliAODTrack *trkpid, AliAODEvent *event, TClonesArray *mcArray)
THnSparse * fHistoEleXiMassWSMixAway
! e-Xi mass spectra (wrong-sign)
THnSparse * fHistoEleXiMassvsElePtMCGen
! e-Xi mass-ept spectra (Efficiency denominator)
THnSparse * fHistoElectronMCGen
! electron in mcArray (only from charmed baryon)
THnSparse * fHistoEleXiMassvsElePtRS
! e-Xi mass spectra (right-sign)
THnSparse * fHistoEleXiMassvsElePtMCS1
! e-Xi mass-ept spectra (Efficiency numerator)
TH2D * fHistodPhiSdEtaSElectronPionR125RSMix
! dPhiS vs dEtaS R125 RS Mix
THnSparse * fHistoEleXiMassRS
! e-Xi mass spectra (right-sign)
THnSparse * fHistoElePtvsEtaWSMix
! e spectra (wrong-sign, mix)
TH1F * fHistoMCDeltaPhiccbar
! MC Event Type
Bool_t TagConversionsSameSign(AliAODTrack *etrk, Int_t *id2index, AliAODEvent *evt, Int_t ntrk, Double_t &minmass)
TH1F * fHistoMCEventType
! MC Event Type
THnSparse * fHistoEleXiMassvsElePtRSMix2
! e-Xi mass-ept spectra (right-sign)
TH2D * fHistodPhiSdEtaSElectronBachelorR125RS
! dPhiS vs dEtaS R125 RS
Int_t MatchToMC(AliAODRecoCascadeHF *elobj, TClonesArray *mcArray, Int_t *pdgarray_ele, Int_t *pdgarray_casc, Int_t *labelarray_ele, Int_t *labelarray_casc, Int_t &ngen_ele, Int_t &ngen_casc)
THnSparse * fHistoElePtvsXiPtWSMix
! e-Xi spectra (wrong-sign, mix)
TTree * fCascVariablesTree
! tree of the candidate variables after track selection on output slot 4
THnSparse * fHistoEleXiMassvsElePtWSMix2
! e-Xi mass-ept spectra (wrong-sign)
virtual void UserCreateOutputObjects()
Implementation of interface methods.
Float_t fTriggerCheck
Run Number.
THnSparse * fHistoXicElectronMCS2
! electron in mcArray
THnSparse * fHistoElectronEtaTotal
! Number of electrons from eta
THnSparse * fHistoElePtvsd0WS
! e pt-d0 spectra (wrong-sign)
Float_t * fCandidateEleVariables
! variables to be written to the tree
Bool_t TagConversions(AliAODTrack *etrk, Int_t *id2index, AliAODEvent *evt, Int_t ntrk, Double_t &minmass)
THnSparse * fHistoXibMCGenWithXic
! electron in mcArray
void DefineGeneralHistograms()
TTree * fMCEleVariablesTree
! tree of the candidate variables after track selection on output slot 4
void GetProdCascRapRange(Double_t &a, Double_t &b)
Double_t GetMaxVtxZ() const
THnSparse * fHistoElectronPi0Total
! Number of electrons from pi0
THnSparse * fHistoEleXiMassvsElePtWSSide
! e-Xi mass-ept spectra (wrong-sign)
TObjArray * fCascadeCutVarsArray2
array of RDHF cut information
TH1F * fHCentrality
! Histogram to check Centrality
void FillMCROOTObjects(AliAODMCParticle *part, AliAODMCParticle *mcepart, AliAODMCParticle *mcv0part, Int_t decaytype)
THnSparse * fHistoEleXiMassPromptMCS1
! e-Xi mass spectra (Efficiency numerator)
TH2F * fHistoElePtWS
! e spectra (wrong-sign)
THnSparse * fHistoElePtvsEtaMCGen
! e spectra efficiency denominator
THnSparse * fHistoEleXiMassMCGen
! e-Xi mass spectra (Efficiency denominator)
TH2F * fHistoElePtRS
! e spectra (right-sign)
AliAODPidHF * GetPidHF() const
THnSparse * fHistoElePtvsEtaMCS
! e spectra efficiency numerator
TTree * fMCVariablesTree
! tree of the candidate variables after track selection on output slot 4
TH2F * fHistoXiMassvsPtMCGen
! Xi mass vs pt histogram
THnSparse * fHistoEleXiMassWS
! e-Xi mass spectra (wrong-sign)
THnSparse * fHistoElePtvsXiPtMCS
! e-Xi spectra efficiency numerator
TH2F * fHistoElectronTOFPIDSelTPC
! TOF electron PID after TPC cut
THnSparse * fHistoElePtvsCutVarsWS[23]
! e pt- cut variables (Wrong-sign)
THnSparse * fHistoEleXiMassXibMCS2
! e-Xi mass spectra (Efficiency numerator)
TH2D * fHistodPhiSdEtaSElectronProtonR125WSMix
! dPhiS vs dEtaS R125 WS Mix
THnSparse * fHistoEleXiMassPromptMCS
! e-Xi mass spectra (Efficiency numerator)
TH1F * fHistoBachPtMCS
! Bachelor pT histogram (efficiency numerator)
void MakeAnalysis(AliAODEvent *aod, TClonesArray *mcArray)
AliAODVertex * PrimaryVertex(const TObjArray *trkArray, AliVEvent *event)
THnSparse * fHistoEleXiMassRSSide2
! e-Xi mass spectra (right-sign)
TH1F * fHistoMassConversionsSameSignMin
! electron-any mass
TH2F * fHistoLambdaPtvsDlMCS
! Lambda proper life time distribution (mc)
THnSparse * fHistoEleXiMassvsElePtMCS
! e-Xi mass-ept spectra (Efficiency numerator)
THnSparse * fHistoEleXiMassvsElePtMCS2
! e-Xi mass-ept spectra (Efficiency numerator)
void DefineCascTreeVariables()
void FillMCCascROOTObjects(AliAODMCParticle *mccpart, TClonesArray *mcArray)
void FillMCGenPairROOTObjects(AliAODMCParticle *mcparte, AliAODMCParticle *mcpartv, TClonesArray *mcArray)
Bool_t fUseCentralityV0M
Stores trigger information.
THnSparse * fHistoElePtvsCutVarsMCS[23]
! e pt- cut variables (MCS)
TH2F * fHistoOmegaMassvsPt
! Omega mass vs pt histogram
THnSparse * fHistoXiMCGen
! Xi in mcArray (only from charmed baryon)
Bool_t IsSideBand(AliAODcascade *c)
THnSparse * fHistoBottomElectronMCGen
! electron in mcArray (only from charmed baryon)
TH2F * fHistoEleXiPtvsRapidityMCS
! e-Xi pT vs y
TH1F * fHistoMCNccbar
! MC Event Type
Bool_t IsPeakRegion(AliAODcascade *c)
THnSparse * fHistoElePtvsXiPtRS
! e-Xi spectra (right-sign)
TH1F * fHTrigger
! Histogram to check Trigger
const UShort_t fTrackBuffSize
Array of integers to keep the index of tpc only track.
Int_t GetPoolIndex(Double_t zvert, Double_t mult)
THnSparse * fHistoXicMCGen
! electron in mcArray
THnSparse * fHistoEleXiMassvsElePtRSMix1
! e-Xi mass-ept spectra (right-sign)
THnSparse * fHistoEleXiMassvsElePtWSMix1
! e-Xi mass-ept spectra (wrong-sign)
THnSparse * fHistoXicMCGen1
! electron in mcArray
TH1F * fHistonEvtvsRunNumber
! evt vs runnumber
void DoEventMixingWithPools(Int_t index)
THnSparse * fHistoXibMCS
! electron in mcArray
void DefineAnalysisHistograms()
THnSparse * fHistoEleXiMassvsElePtMCGen1
! e-Xi mass-ept spectra (Efficiency denominator)
TH2F * fHistoEleXiPtvsRapidityWS
! e-Xi pT vs y
TH2F * fHistoElePtMCS
! e spectra (Efficiency numerator)
THnSparse * fHistoEleXiMassWSMix1Away
! e-Xi mass spectra (wrong-sign)
void SetSftPosR125(AliAODTrack *track, Double_t bfield, Double_t priVtx[3], Double_t *XSftR125)
virtual Int_t IsSelected(TObject *obj, Int_t selectionLevel)
TH2F * fHistoElectronTOFSelPID
! TOF electron PID after selection
Float_t * fCandidateMCCascVariables
! variables to be written to the tree
Bool_t MakeMCAnalysis(TClonesArray *mcArray)
Float_t * fCandidateMCGenPairVariables
! variables to be written to the tree
AliAODTrack * GetBachelor() const
void StoreGlobalTrackReference(AliAODTrack *track, Int_t id)
Float_t * fCandidateMCEleVariables
! variables to be written to the tree
TH1F * fHistonElevsRunNumber
! nele vs runnumber
THnSparse * fHistoEleXiMassMCS
! e-Xi mass spectra (Efficiency numerator)
TList * fOutput
Use MC info.
TObjArray * fCascadeTracks2
array of xi+compatible tracks
TTree * fEleVariablesTree
flag to decide whether to write the candidate variables on a tree variables
void DefineMCGenPairTreeVariables()
AliESDtrackCuts * GetTrackCuts() const
TObjArray * fElectronTracks
unique event id for mixed event check
TH1F * fCEvents
! Histogram to check selected events
void SetProngIDs(Int_t nIDs, UShort_t *id)
void DefineEleTreeVariables()
TH2F * fHistoElectronTPCPIDSelTOFSmallEta
! TPC electron PID after TOF 3 sigma cut (|eta|<0.6)