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),
264 fHistoXicElectronMCGen(0),
265 fHistoXicElectronMCGen1(0),
266 fHistoXicElectronMCGen2(0),
267 fHistoXicElectronMCS(0),
268 fHistoXicElectronMCS1(0),
269 fHistoXicElectronMCS2(0),
270 fHistoElectronMCGen(0),
271 fHistoBottomElectronMCGen(0),
272 fHistoCharmElectronMCGen(0),
274 fHistoLambdaPtvsDl(0),
275 fHistoLambdaPtvsDlSide(0),
276 fHistoLambdaPtvsDlMCS(0),
277 fHistoLambdaPtvsDR(0),
278 fHistoLambdaPtvsDRSide(0),
279 fHistoLambdaPtvsDRMCS(0),
280 fHistoEleXiPtvsRapidityRS(0),
281 fHistoEleXiPtvsRapidityWS(0),
282 fHistoEleXiPtvsRapidityMCS(0),
283 fHistoResponseElePt(0),
284 fHistoResponseXiPt(0),
285 fHistoResponseEleXiPt(0),
286 fHistoElectronPi0Total(0),
287 fHistoElectronPi0Tag(0),
288 fHistoElectronEtaTotal(0),
289 fHistoElectronEtaTag(0),
291 fHistonEvtvsRunNumber(0),
292 fHistonElevsRunNumber(0),
293 fHistonXivsRunNumber(0),
294 fHistoMCEventType(0),
295 fHistoMCXic0Decays(0),
296 fHistoMCDeltaPhiccbar(0),
298 fGTI(0),fGTIndex(0), fTrackBuffSize(19000),
299 fHistodPhiSdEtaSElectronProtonR125RS(0),
300 fHistodPhiSdEtaSElectronProtonR125WS(0),
301 fHistodPhiSdEtaSElectronProtonR125RSMix(0),
302 fHistodPhiSdEtaSElectronProtonR125WSMix(0),
303 fHistodPhiSdEtaSElectronPionR125RS(0),
304 fHistodPhiSdEtaSElectronPionR125WS(0),
305 fHistodPhiSdEtaSElectronPionR125RSMix(0),
306 fHistodPhiSdEtaSElectronPionR125WSMix(0),
307 fHistodPhiSdEtaSElectronBachelorR125RS(0),
308 fHistodPhiSdEtaSElectronBachelorR125WS(0),
309 fHistodPhiSdEtaSElectronBachelorR125RSMix(0),
310 fHistodPhiSdEtaSElectronBachelorR125WSMix(0),
312 fMixWithoutConversionFlag(kTRUE),
313 fNumberOfEventsForMixing (5),
319 fElectronTracks(0x0),
320 fCascadeTracks1(0x0),
321 fCascadeTracks2(0x0),
322 fElectronCutVarsArray(0x0),
323 fCascadeCutVarsArray1(0x0),
324 fCascadeCutVarsArray2(0x0)
329 for(Int_t i=0;i<23;i++){
334 for(Int_t i=0;i<8;i++){
342 Bool_t writeVariableTree) :
343 AliAnalysisTaskSE(name),
352 fIsEventSelected(kFALSE),
353 fWriteVariableTree(writeVariableTree),
354 fWriteEachVariableTree(kFALSE),
355 fWriteMCVariableTree(kFALSE),
357 fEleVariablesTree(0),
358 fCascVariablesTree(0),
360 fMCEleVariablesTree(0),
361 fMCCascVariablesTree(0),
362 fMCGenPairVariablesTree(0),
363 fCorrelationVariablesTree(0),
364 fReconstructPrimVert(kFALSE),
370 fCandidateVariables(),
371 fCandidateEleVariables(),
372 fCandidateCascVariables(),
373 fCandidateMCVariables(),
374 fCandidateMCEleVariables(),
375 fCandidateMCCascVariables(),
376 fCandidateMCGenPairVariables(),
377 fCorrelationVariables(),
385 fUseCentralityV0M(kFALSE),
388 fMCDoPairAnalysis(kFALSE),
390 fHistoEleXiMassRS(0),
391 fHistoEleXiMassWS(0),
392 fHistoEleXiMassRSMix(0),
393 fHistoEleXiMassWSMix(0),
394 fHistoEleXiMassRSSide(0),
395 fHistoEleXiMassWSSide(0),
396 fHistoEleXiMassRS1(0),
397 fHistoEleXiMassWS1(0),
398 fHistoEleXiMassRSMix1(0),
399 fHistoEleXiMassWSMix1(0),
400 fHistoEleXiMassRSSide1(0),
401 fHistoEleXiMassWSSide1(0),
402 fHistoEleXiMassRS2(0),
403 fHistoEleXiMassWS2(0),
404 fHistoEleXiMassRSMix2(0),
405 fHistoEleXiMassWSMix2(0),
406 fHistoEleXiMassRSSide2(0),
407 fHistoEleXiMassWSSide2(0),
408 fHistoEleXiMassAway(0),
409 fHistoEleXiMassRSAway(0),
410 fHistoEleXiMassWSAway(0),
411 fHistoEleXiMassRSMixAway(0),
412 fHistoEleXiMassWSMixAway(0),
413 fHistoEleXiMassRSSideAway(0),
414 fHistoEleXiMassWSSideAway(0),
415 fHistoEleXiMassRS1Away(0),
416 fHistoEleXiMassWS1Away(0),
417 fHistoEleXiMassRSMix1Away(0),
418 fHistoEleXiMassWSMix1Away(0),
419 fHistoEleXiMassRSSide1Away(0),
420 fHistoEleXiMassWSSide1Away(0),
421 fHistoEleXiMassRS2Away(0),
422 fHistoEleXiMassWS2Away(0),
423 fHistoEleXiMassRSMix2Away(0),
424 fHistoEleXiMassWSMix2Away(0),
425 fHistoEleXiMassRSSide2Away(0),
426 fHistoEleXiMassWSSide2Away(0),
427 fHistoEleXiMassvsElePtRS(0),
428 fHistoEleXiMassvsElePtWS(0),
429 fHistoEleXiMassvsElePtRSMix(0),
430 fHistoEleXiMassvsElePtWSMix(0),
431 fHistoEleXiMassvsElePtRSSide(0),
432 fHistoEleXiMassvsElePtWSSide(0),
433 fHistoEleXiMassvsElePtRS1(0),
434 fHistoEleXiMassvsElePtWS1(0),
435 fHistoEleXiMassvsElePtRSMix1(0),
436 fHistoEleXiMassvsElePtWSMix1(0),
437 fHistoEleXiMassvsElePtRSSide1(0),
438 fHistoEleXiMassvsElePtWSSide1(0),
439 fHistoEleXiMassvsElePtRS2(0),
440 fHistoEleXiMassvsElePtWS2(0),
441 fHistoEleXiMassvsElePtRSMix2(0),
442 fHistoEleXiMassvsElePtWSMix2(0),
443 fHistoEleXiMassvsElePtRSSide2(0),
444 fHistoEleXiMassvsElePtWSSide2(0),
449 fHistoEleXiMassMCS(0),
450 fHistoEleXiMassMCS1(0),
451 fHistoEleXiMassMCS2(0),
452 fHistoEleXiMassXibMCS(0),
453 fHistoEleXiMassXibMCS1(0),
454 fHistoEleXiMassXibMCS2(0),
455 fHistoEleXiMassPromptMCS(0),
456 fHistoEleXiMassPromptMCS1(0),
457 fHistoEleXiMassPromptMCS2(0),
458 fHistoEleXiMassBFeeddownMCS(0),
459 fHistoEleXiMassBFeeddownMCS1(0),
460 fHistoEleXiMassBFeeddownMCS2(0),
461 fHistoEleXiMassMCGen(0),
462 fHistoEleXiMassvsElePtMCS(0),
463 fHistoEleXiMassvsElePtMCGen(0),
464 fHistoEleXiMassvsElePtMCS1(0),
465 fHistoEleXiMassvsElePtMCGen1(0),
466 fHistoEleXiMassvsElePtMCS2(0),
467 fHistoEleXiMassvsElePtMCGen2(0),
470 fHistoElePtvsEtaRS(0),
471 fHistoElePtvsEtaWS(0),
472 fHistoElePtvsEtaRSMix(0),
473 fHistoElePtvsEtaWSMix(0),
474 fHistoElePtvsEtaMCS(0),
475 fHistoElePtvsEtaMCGen(0),
476 fHistoElePtvsXiPtRS(0),
477 fHistoElePtvsXiPtWS(0),
478 fHistoElePtvsXiPtRSMix(0),
479 fHistoElePtvsXiPtWSMix(0),
480 fHistoElePtvsXiPtMCS(0),
481 fHistoElePtvsXiPtvsXicPtMCS(0),
482 fHistoElePtvsXiPtMCGen(0),
483 fHistoElePtvsXiPtvsXicPtMCGen(0),
484 fHistoElePtvsXiPtMCXicGen(0),
485 fHistoElePtvsd0RS(0),
486 fHistoElePtvsd0WS(0),
487 fHistoElePtvsd0RSMix(0),
488 fHistoElePtvsd0WSMix(0),
489 fHistoElePtvsd0MCS(0),
490 fHistoElePtvsd0PromptMCS(0),
491 fHistoElePtvsd0BFeeddownMCS(0),
494 fHistoBachPtMCGen(0),
497 fHistoXiMassvsPtMCS(0),
498 fHistoXiMassvsPtMCGen(0),
499 fHistoOmegaMassvsPt(0),
500 fHistoElectronTPCPID(0),
501 fHistoElectronTOFPID(0),
502 fHistoElectronTPCSelPID(0),
503 fHistoElectronTOFSelPID(0),
504 fHistoElectronTPCPIDSelTOF(0),
505 fHistoElectronTOFPIDSelTPC(0),
506 fHistoElectronTPCPIDSelTOFSmallEta(0),
507 fHistoElectronTPCPIDSelTOFLargeEta(0),
508 fHistoMassConversionsMin(0),
509 fHistoMassConversionsSameSignMin(0),
510 fHistoElectronQovPtvsPhi(0),
511 fHistoXiQovPtvsPhi(0),
518 fHistoXicElectronMCGen(0),
519 fHistoXicElectronMCGen1(0),
520 fHistoXicElectronMCGen2(0),
521 fHistoXicElectronMCS(0),
522 fHistoXicElectronMCS1(0),
523 fHistoXicElectronMCS2(0),
524 fHistoElectronMCGen(0),
525 fHistoBottomElectronMCGen(0),
526 fHistoCharmElectronMCGen(0),
528 fHistoLambdaPtvsDl(0),
529 fHistoLambdaPtvsDlSide(0),
530 fHistoLambdaPtvsDlMCS(0),
531 fHistoLambdaPtvsDR(0),
532 fHistoLambdaPtvsDRSide(0),
533 fHistoLambdaPtvsDRMCS(0),
534 fHistoEleXiPtvsRapidityRS(0),
535 fHistoEleXiPtvsRapidityWS(0),
536 fHistoEleXiPtvsRapidityMCS(0),
537 fHistoResponseElePt(0),
538 fHistoResponseXiPt(0),
539 fHistoResponseEleXiPt(0),
540 fHistoElectronPi0Total(0),
541 fHistoElectronPi0Tag(0),
542 fHistoElectronEtaTotal(0),
543 fHistoElectronEtaTag(0),
545 fHistonEvtvsRunNumber(0),
546 fHistonElevsRunNumber(0),
547 fHistonXivsRunNumber(0),
548 fHistoMCEventType(0),
549 fHistoMCXic0Decays(0),
550 fHistoMCDeltaPhiccbar(0),
552 fGTI(0),fGTIndex(0), fTrackBuffSize(19000),
553 fHistodPhiSdEtaSElectronProtonR125RS(0),
554 fHistodPhiSdEtaSElectronProtonR125WS(0),
555 fHistodPhiSdEtaSElectronProtonR125RSMix(0),
556 fHistodPhiSdEtaSElectronProtonR125WSMix(0),
557 fHistodPhiSdEtaSElectronPionR125RS(0),
558 fHistodPhiSdEtaSElectronPionR125WS(0),
559 fHistodPhiSdEtaSElectronPionR125RSMix(0),
560 fHistodPhiSdEtaSElectronPionR125WSMix(0),
561 fHistodPhiSdEtaSElectronBachelorR125RS(0),
562 fHistodPhiSdEtaSElectronBachelorR125WS(0),
563 fHistodPhiSdEtaSElectronBachelorR125RSMix(0),
564 fHistodPhiSdEtaSElectronBachelorR125WSMix(0),
566 fMixWithoutConversionFlag(kTRUE),
567 fNumberOfEventsForMixing (5),
573 fElectronTracks(0x0),
574 fCascadeTracks1(0x0),
575 fCascadeTracks2(0x0),
576 fElectronCutVarsArray(0x0),
577 fCascadeCutVarsArray1(0x0),
578 fCascadeCutVarsArray2(0x0)
583 Info(
"AliAnalysisTaskSEXic2eleXifromAODtracks",
"Calling Constructor");
585 for(Int_t i=0;i<23;i++){
590 for(Int_t i=0;i<8;i++){
594 DefineOutput(1,TList::Class());
595 DefineOutput(2,TList::Class());
596 DefineOutput(3,TList::Class());
597 DefineOutput(4,TTree::Class());
598 DefineOutput(5,TTree::Class());
599 DefineOutput(6,TTree::Class());
600 DefineOutput(7,TTree::Class());
601 DefineOutput(8,AliNormalizationCounter::Class());
602 DefineOutput(9,TTree::Class());
603 DefineOutput(10,TTree::Class());
604 DefineOutput(11,TTree::Class());
605 DefineOutput(12,TTree::Class());
613 Info(
"~AliAnalysisTaskSEXic2eleXifromAODtracks",
"Calling Destructor");
709 if (fDebug > 1) AliInfo(
"Init");
728 AliError(
"NO EVENT FOUND!");
731 AliAODEvent* aodEvent =
dynamic_cast<AliAODEvent*
>(fInputEvent);
739 fBzkG = (Double_t)aodEvent->GetMagneticField();
740 AliKFParticle::SetField(
fBzkG);
741 if (TMath::Abs(
fBzkG)<0.001) {
752 TClonesArray *mcArray = 0;
753 AliAODMCHeader *mcHeader=0;
756 mcArray =
dynamic_cast<TClonesArray*
>(aodEvent->FindListObject(AliAODMCParticle::StdBranchName()));
758 AliError(
"Could not find Monte-Carlo in AOD");
764 mcHeader = (AliAODMCHeader*)aodEvent->GetList()->FindObject(AliAODMCHeader::StdBranchName());
766 AliError(
"AliAnalysisTaskSEXic2eleXifromAODtracks::UserExec: MC header branch not found!\n");
771 Double_t zMCVertex = mcHeader->GetVtxZ();
773 AliDebug(2,Form(
"Event rejected: abs(zVtxMC)=%f > fAnalCuts->GetMaxVtxZ()=%f",zMCVertex,
fAnalCuts->
GetMaxVtxZ()));
787 fVtx1 = (AliAODVertex*)aodEvent->GetPrimaryVertex();
790 Double_t pos[3],cov[6];
792 fVtx1->GetCovarianceMatrix(cov);
793 fV1 =
new AliESDVertex(pos,cov,100.,100,
fVtx1->GetName());
806 fIsMB=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kMB)==(AliVEvent::kMB);
807 fIsSemi=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kSemiCentral)==(AliVEvent::kSemiCentral);
808 fIsCent=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kCentral)==(AliVEvent::kCentral);
809 fIsINT7=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kINT7)==(AliVEvent::kINT7);
810 fIsEMC7=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kEMC7)==(AliVEvent::kEMC7);
824 AliCentrality *cent = aodEvent->GetCentrality();
825 fCentrality = cent->GetCentralityPercentile(
"V0M");
829 if(fCentrality<0.||fCentrality>100.-0.0000001) {
836 Int_t runnumber_offset = 0;
837 Int_t runnumber = aodEvent->GetRunNumber();
838 if(runnumber<=131000&&runnumber>=114000){
839 runnumber_offset = 114000;
840 }
else if(runnumber<=196000&&runnumber>=195000){
841 runnumber_offset = 195000;
842 }
else if(runnumber<=170593&&runnumber>=167902){
843 runnumber_offset = 167902;
888 AliAnalysisTaskSE::Terminate();
890 fOutput =
dynamic_cast<TList*
> (GetOutputData(1));
892 AliError(
"fOutput not available");
896 fOutputAll =
dynamic_cast<TList*
> (GetOutputData(3));
898 AliError(
"fOutputAll not available");
954 TString normName=
"NormalizationCounter";
955 AliAnalysisDataContainer *cont = GetOutputSlot(8)->GetContainer();
956 if(cont)normName=(TString)cont->GetName();
978 fEventBuffer[i]=
new TTree(Form(
"EventBuffer_%d",i),
"Temporary buffer for event mixing");
998 AliAODEvent *aodEvent, TClonesArray *mcArray
1007 if(fDoEventMixing && fElectronTracks) fElectronTracks->Delete();
1008 if(fDoEventMixing && fCascadeTracks1) fCascadeTracks1->Delete();
1009 if(fDoEventMixing && fCascadeTracks2) fCascadeTracks2->Delete();
1010 if(fDoEventMixing && fCascadeCutVarsArray1) fCascadeCutVarsArray1->Delete();
1011 if(fDoEventMixing && fCascadeCutVarsArray2) fCascadeCutVarsArray2->Delete();
1013 ResetGlobalTrackReference();
1015 for (Int_t iTrack=0;iTrack<aodEvent->GetNumberOfTracks();iTrack++){
1017 AliAODTrack *track =
dynamic_cast<AliAODTrack *
>(aodEvent->GetTrack(iTrack));
1018 if (!track)
continue;
1021 StoreGlobalTrackReference(track,iTrack);
1025 Int_t nCascs= aodEvent->GetNumberOfCascades();
1026 Int_t nTracks= aodEvent->GetNumberOfTracks();
1028 Bool_t seleTrkFlags[nTracks];
1030 SelectTrack(aodEvent,nTracks,nSeleTrks,seleTrkFlags,mcArray);
1032 Bool_t seleCascFlags[nCascs];
1034 SelectCascade(aodEvent,nCascs,nSeleCasc,seleCascFlags,mcArray);
1036 Int_t runnumber_offset = 0;
1037 Int_t runnumber = aodEvent->GetRunNumber();
1038 if(runnumber<=131000&&runnumber>=114000){
1039 runnumber_offset = 114000;
1040 }
else if(runnumber<=196000&&runnumber>=195000){
1041 runnumber_offset = 195000;
1042 }
else if(runnumber<=170593&&runnumber>=167902){
1043 runnumber_offset = 167902;
1045 fHistonElevsRunNumber->Fill(runnumber-runnumber_offset,nSeleTrks);
1046 fHistonXivsRunNumber->Fill(runnumber-runnumber_offset,nSeleCasc);
1051 for (Int_t icasc = 0; icasc<nCascs; icasc++) {
1052 if(!seleCascFlags[icasc])
continue;
1053 AliAODcascade *casc = aodEvent->GetCascade(icasc);
1056 AliAODTrack *cptrack = (AliAODTrack*)(casc->GetDaughter(0));
1057 AliAODTrack *cntrack = (AliAODTrack*)(casc->GetDaughter(1));
1058 AliAODTrack *cbtrack = (AliAODTrack*)(casc->GetDecayVertexXi()->GetDaughter(0));
1063 for (Int_t itrk = 0; itrk<nTracks; itrk++) {
1064 if(!seleTrkFlags[itrk])
continue;
1065 AliAODTrack *trk = (AliAODTrack*)aodEvent->GetTrack(itrk);
1073 AliAODTrack *trkpid = 0;
1074 if(fAnalCuts->GetProdAODFilterBit()==7){
1075 trkpid = fGTI[-trk->GetID()-1];
1080 Int_t cpid = cptrack->GetID();
1081 Int_t cnid = cntrack->GetID();
1082 Int_t cbid = cbtrack->GetID();
1083 Int_t lpid = trkpid->GetID();
1084 if((cpid==lpid)||(cnid==lpid)||(cbid==lpid))
continue;
1086 AliAODVertex *secVert = ReconstructSecondaryVertex(casc,trk,aodEvent);
1087 if(!secVert)
continue;
1094 FillROOTObjects(exobj, casc,trk,trkpid,aodEvent,mcArray);
1096 exobj->GetSecondaryVtx()->RemoveDaughters();
1098 delete exobj;exobj=NULL;
1104 fEventInfo->SetString(Form(
"Ev%d_esd%d_E%d_C%d",AliAnalysisManager::GetAnalysisManager()->GetNcalls(),((AliAODHeader*)aodEvent->GetHeader())->GetEventNumberESDFile(),fElectronTracks->GetEntries(),fCascadeTracks1->GetEntries()+fCascadeTracks2->GetEntries()));
1105 Int_t ind=GetPoolIndex(fVtxZ,fCentrality);
1106 if(ind>=0 && ind<fNOfPools){
1107 if(fEventBuffer[ind]->GetEntries() >= fNumberOfEventsForMixing){
1108 DoEventMixingWithPools(ind);
1109 if(fEventBuffer[ind]->GetEntries() >= 20*fNumberOfEventsForMixing){
1113 fEventBuffer[ind]->Fill();
1126 const char* nameoutput = GetOutputSlot(4)->GetContainer()->GetName();
1127 fVariablesTree =
new TTree(nameoutput,
"Candidates variables tree");
1130 TString * fCandidateVariableNames =
new TString[nVar];
1132 fCandidateVariableNames[ 0]=
"Centrality";
1133 fCandidateVariableNames[ 1]=
"InvMassEleXi";
1134 fCandidateVariableNames[ 2]=
"EleXiPt";
1135 fCandidateVariableNames[ 3]=
"EleXiPx";
1136 fCandidateVariableNames[ 4]=
"EleXiPy";
1137 fCandidateVariableNames[ 5]=
"EleXiPz";
1138 fCandidateVariableNames[ 6]=
"ElePx";
1139 fCandidateVariableNames[ 7]=
"ElePy";
1140 fCandidateVariableNames[ 8]=
"ElePz";
1141 fCandidateVariableNames[ 9]=
"XiPx";
1142 fCandidateVariableNames[10]=
"XiPy";
1143 fCandidateVariableNames[11]=
"XiPz";
1144 fCandidateVariableNames[12]=
"XiCharge";
1145 fCandidateVariableNames[13]=
"MassXi";
1146 fCandidateVariableNames[14]=
"MassLambda";
1147 fCandidateVariableNames[15]=
"Eled0";
1148 fCandidateVariableNames[16]=
"Xid0";
1149 fCandidateVariableNames[17]=
"nSigmaTPCele";
1150 fCandidateVariableNames[18]=
"nSigmaTOFele";
1151 fCandidateVariableNames[19]=
"nSigmaTPCpr_etrk";
1152 fCandidateVariableNames[20]=
"nSigmaTOFpr_etrk";
1153 fCandidateVariableNames[21]=
"nSigmaTPCka_etrk";
1154 fCandidateVariableNames[22]=
"nSigmaTOFka_etrk";
1155 fCandidateVariableNames[23]=
"nSigmaTPCv0pr";
1156 fCandidateVariableNames[24]=
"nSigmaTOFv0pr";
1157 fCandidateVariableNames[25]=
"nSigmaTPCv0pi";
1158 fCandidateVariableNames[26]=
"nSigmaTOFv0pi";
1159 fCandidateVariableNames[27]=
"nSigmaTPCbachpi";
1160 fCandidateVariableNames[28]=
"nSigmaTOFbachpi";
1161 fCandidateVariableNames[29]=
"EleCharge";
1162 fCandidateVariableNames[30]=
"Mixing";
1163 fCandidateVariableNames[31]=
"DcaXiDaughters";
1164 fCandidateVariableNames[32]=
"DcaV0Daughters";
1165 fCandidateVariableNames[33]=
"DecayLengthXi";
1166 fCandidateVariableNames[34]=
"CosPointingAngleXi";
1167 fCandidateVariableNames[35]=
"DcaV0toPrimVertex";
1168 fCandidateVariableNames[36]=
"DcaPostoPrimVertex";
1169 fCandidateVariableNames[37]=
"DcaNegtoPrimVertex";
1170 fCandidateVariableNames[38]=
"DcaBachtoPrimVertex";
1171 fCandidateVariableNames[39]=
"DecayLengthV0";
1172 fCandidateVariableNames[40]=
"CosPointingAngleV0";
1174 fCandidateVariableNames[41]=
"mcpdgxic";
1175 fCandidateVariableNames[42]=
"mclabxic";
1176 fCandidateVariableNames[43]=
"mcxicpx";
1177 fCandidateVariableNames[44]=
"mcxicpy";
1178 fCandidateVariableNames[45]=
"mcxicpz";
1179 fCandidateVariableNames[46]=
"mcelepx";
1180 fCandidateVariableNames[47]=
"mcelepy";
1181 fCandidateVariableNames[48]=
"mcelepz";
1182 fCandidateVariableNames[49]=
"mccascpx";
1183 fCandidateVariableNames[50]=
"mccascpy";
1184 fCandidateVariableNames[51]=
"mccascpz";
1186 fCandidateVariableNames[52]=
"mcpdgele";
1187 fCandidateVariableNames[53]=
"mcpdgcasc";
1188 fCandidateVariableNames[54]=
"mcpdgmomele";
1189 fCandidateVariableNames[55]=
"mcpdgmomcasc";
1190 fCandidateVariableNames[56]=
"mcpdggrmomele";
1191 fCandidateVariableNames[57]=
"mcpdggrmomcasc";
1192 fCandidateVariableNames[58]=
"mcngenele";
1193 fCandidateVariableNames[59]=
"mcngencasc";
1195 fCandidateVariableNames[60]=
"nSigmaTPCpi_etrk";
1196 fCandidateVariableNames[61]=
"nSigmaTOFpi_etrk";
1198 fCandidateVariableNames[62]=
"V0PosPx";
1199 fCandidateVariableNames[63]=
"V0PosPy";
1200 fCandidateVariableNames[64]=
"V0PosPz";
1201 fCandidateVariableNames[65]=
"V0NegPx";
1202 fCandidateVariableNames[66]=
"V0NegPy";
1203 fCandidateVariableNames[67]=
"V0NegPz";
1204 fCandidateVariableNames[68]=
"V0VertX";
1205 fCandidateVariableNames[69]=
"V0VertY";
1206 fCandidateVariableNames[70]=
"V0VertZ";
1207 fCandidateVariableNames[71]=
"BachPx";
1208 fCandidateVariableNames[72]=
"BachPy";
1209 fCandidateVariableNames[73]=
"BachPz";
1210 fCandidateVariableNames[74]=
"XiVertX";
1211 fCandidateVariableNames[75]=
"XiVertY";
1212 fCandidateVariableNames[76]=
"XiVertZ";
1213 fCandidateVariableNames[77]=
"PrimVertX";
1214 fCandidateVariableNames[78]=
"PrimVertY";
1215 fCandidateVariableNames[79]=
"PrimVertZ";
1217 fCandidateVariableNames[80]=
"MassOmega";
1219 fCandidateVariableNames[81]=
"EleITSMatch";
1220 fCandidateVariableNames[82]=
"BachITSMatch";
1221 fCandidateVariableNames[83]=
"V0PosITSMatch";
1222 fCandidateVariableNames[84]=
"V0NegITSMatch";
1224 fCandidateVariableNames[85]=
"TPCNclsF";
1225 fCandidateVariableNames[86]=
"TPCNcls";
1226 fCandidateVariableNames[87]=
"TPCNclsS";
1227 fCandidateVariableNames[88]=
"IsXiPeakReagion";
1230 fCandidateVariableNames[89]=
"MagneticField";
1231 fCandidateVariableNames[90]=
"EvNumber";
1232 fCandidateVariableNames[91]=
"RunNumber";
1234 for (Int_t ivar=0; ivar<nVar; ivar++) {
1251 for(Int_t i=0;i<92;i++){
1256 AliAODTrack *cptrack = (AliAODTrack*)(casc->GetDaughter(0));
1257 AliAODTrack *cntrack = (AliAODTrack*)(casc->GetDaughter(1));
1258 AliAODTrack *cbtrack = (AliAODTrack*)(casc->GetDecayVertexXi()->GetDaughter(0));
1268 Double_t pxe = exobj->PxProng(0);
1269 Double_t pye = exobj->PyProng(0);
1270 Double_t pze = exobj->PzProng(0);
1271 Double_t mome = sqrt(pxe*pxe+pye*pye+pze*pze);
1272 Double_t Ee = sqrt(mome*mome+0.000510998928*0.000510998928);
1273 Double_t pxv = exobj->PxProng(1);
1274 Double_t pyv = exobj->PyProng(1);
1275 Double_t pzv = exobj->PzProng(1);
1276 Double_t momv = sqrt(pxv*pxv+pyv*pyv+pzv*pzv);
1277 Double_t Ev = sqrt(momv*momv+1.32171*1.32171);
1278 Double_t cosoa = (pxe*pxv+pye*pyv+pze*pzv)/mome/momv;
1279 Double_t Esum = Ee + Ev;
1281 Double_t uxe = pxe/mome;
1282 Double_t uye = pye/mome;
1283 Double_t uze = pze/mome;
1284 Double_t lf = -2.*(pxv*uxe+pyv*uye+pzv*uze);
1285 Double_t pxv_flip = pxv + lf * uxe;
1286 Double_t pyv_flip = pyv + lf * uye;
1287 Double_t pzv_flip = pzv + lf * uze;
1288 Double_t pxsum_flip = pxe + pxv_flip;
1289 Double_t pysum_flip = pye + pyv_flip;
1290 Double_t pzsum_flip = pze + pzv_flip;
1291 Double_t mexi_flip = sqrt(Esum*Esum-pxsum_flip*pxsum_flip-pysum_flip*pysum_flip-pzsum_flip*pzsum_flip);
1292 Double_t ptexi_flip = sqrt(pxsum_flip*pxsum_flip+pysum_flip*pysum_flip);
1294 Double_t minmass_ee = 9999.;
1296 Double_t minmasslike_ee = 9999.;
1300 Double_t posVtx[3] = {0.,0.,0.};
1301 fVtx1->GetXYZ(posVtx);
1304 UInt_t pdgdg[2]={11,3312};
1318 if(casc->ChargeXi()<0)
1325 Double_t nSigmaTPCele = -9999.;
1326 Double_t nSigmaTOFele = -9999.;
1348 Double_t nSigmaTPCv0pr=-9999.;
1349 Double_t nSigmaTOFv0pr=-9999.;
1350 Double_t nSigmaTPCv0pi=-9999.;
1351 Double_t nSigmaTOFv0pi=-9999.;
1352 Double_t nSigmaTPCbachpi=-9999.;
1353 Double_t nSigmaTOFbachpi=-9999.;
1356 if(casc->ChargeXi()>0){
1391 AliAODMCParticle *mcxic = 0;
1392 AliAODMCParticle *mcele = 0;
1393 AliAODMCParticle *mccasc = 0;
1395 Int_t mcpdgele_array[100];
1396 Int_t mcpdgcasc_array[100];
1397 Int_t mclabelele_array[100];
1398 Int_t mclabelcasc_array[100];
1399 Int_t mcngen_ele = -9999;
1400 Int_t mcngen_casc = -9999;
1403 mclabxic =
MatchToMC(exobj,mcArray,mcpdgele_array, mcpdgcasc_array,mclabelele_array,mclabelcasc_array,mcngen_ele,mcngen_casc);
1406 mcxic = (AliAODMCParticle*) mcArray->At(mclabxic);
1407 if(mclabelele_array[0]>=0)
1408 mcele = (AliAODMCParticle*) mcArray->At(mclabelele_array[0]);
1409 if(mclabelcasc_array[0]>=0)
1410 mccasc = (AliAODMCParticle*) mcArray->At(mclabelcasc_array[0]);
1477 Double_t dphis_ele_pr, detas_ele_pr,dphis_ele_pi, detas_ele_pi, dphis_ele_bach, detas_ele_bach;
1478 dphis_ele_pr = 9999.;detas_ele_pr = 9999.;dphis_ele_pi = 9999.;detas_ele_pi = 9999.;dphis_ele_bach=9999.;detas_ele_bach=9999.;
1483 cont[0] = exobj->InvMass(2,pdgdg);
1484 cont[1] = exobj->Pt();
1485 cont[2] = exobj->Getd0Prong(0)*trk->Charge();
1489 Double_t cont_flip[4];
1490 cont_flip[0] = mexi_flip;
1491 cont_flip[1] = ptexi_flip;
1496 cont2[0] = exobj->InvMass(2,pdgdg);
1497 cont2[1] = trk->Pt();
1500 Double_t cont_eleptvseta[3];
1501 cont_eleptvseta[0] = trk->Pt();
1502 cont_eleptvseta[1] = trk->Eta();
1505 Double_t cont_eleptvsxipt[3];
1506 cont_eleptvsxipt[0] = trk->Pt();
1507 cont_eleptvsxipt[1] = sqrt(casc->MomXiX()*casc->MomXiX()+casc->MomXiY()*casc->MomXiY());
1510 Double_t cont_eleptvsd0[3];
1511 cont_eleptvsd0[0] = trk->Pt();
1512 cont_eleptvsd0[1] = exobj->Getd0Prong(0)*trk->Charge();
1515 Double_t exobj_mass = exobj->InvMass(2,pdgdg);
1516 Double_t exobj_px = exobj->Px();
1517 Double_t exobj_py = exobj->Py();
1518 Double_t exobj_pz = exobj->Pz();
1519 Double_t exobj_E = sqrt(exobj_mass*exobj_mass+exobj_px*exobj_px+exobj_py*exobj_py+exobj_pz*exobj_pz);
1520 Double_t exobj_rap = 0.5*log((exobj_E+exobj_pz)/(exobj_E-exobj_pz));
1527 if(trk->Charge()*casc->ChargeXi()<0){
1540 for(Int_t ih=0;ih<23;ih++){
1541 Double_t cont_eleptvscutvars[3];
1542 cont_eleptvscutvars[0] = exobj->Pt();
1546 cont_eleptvscutvars[1] = trk->GetTPCNcls();
1548 cont_eleptvscutvars[1] = trk->GetTPCsignalN();
1550 cont_eleptvscutvars[1] = nSigmaTPCele;
1552 cont_eleptvscutvars[1] = nSigmaTOFele;
1554 cont_eleptvscutvars[1] = trk->Eta();
1556 cont_eleptvscutvars[1] = trk->GetITSNcls();
1558 if(casc->ChargeXi()<0)
1559 cont_eleptvscutvars[1] = casc->MassLambda();
1561 cont_eleptvscutvars[1] = casc->MassAntiLambda();
1563 cont_eleptvscutvars[1] = casc->MassXi();
1566 lPosV0[0] = casc->DecayVertexV0X();
1567 lPosV0[1] = casc->DecayVertexV0Y();
1568 lPosV0[2] = casc->DecayVertexV0Z();
1569 cont_eleptvscutvars[1] = TMath::Sqrt(lPosV0[0]*lPosV0[0]+lPosV0[1]*lPosV0[1]);
1572 lPosXi[0] = casc->DecayVertexXiX();
1573 lPosXi[1] = casc->DecayVertexXiY();
1574 lPosXi[2] = casc->DecayVertexXiZ();
1575 cont_eleptvscutvars[1] = TMath::Sqrt(lPosXi[0]*lPosXi[0]+lPosXi[1]*lPosXi[1]);
1577 cont_eleptvscutvars[1] = casc->DcaV0Daughters();
1579 cont_eleptvscutvars[1] = casc->DcaXiDaughters();
1581 cont_eleptvscutvars[1] = casc->DcaBachToPrimVertex();
1583 if(casc->ChargeXi()<0.)
1584 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1586 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1588 if(casc->ChargeXi()>0.)
1589 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1591 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1593 cont_eleptvscutvars[1] = casc->CosPointingAngle(casc->GetDecayVertexXi());
1595 cont_eleptvscutvars[1] = casc->CosPointingAngleXi(posVtx[0],posVtx[1],posVtx[2]);
1597 cont_eleptvscutvars[1] = nSigmaTPCv0pr;
1599 cont_eleptvscutvars[1] = nSigmaTPCv0pi;
1601 cont_eleptvscutvars[1] = nSigmaTPCbachpi;
1603 cont_eleptvscutvars[1] = casc->Eta();
1605 cont_eleptvscutvars[1] = 0.5*TMath::Log((sqrt(casc->Ptot2Xi())+casc->MomXiZ())/(sqrt(casc->Ptot2Xi())-casc->MomXiZ()));
1607 Double_t xipx = exobj->PxProng(1);
1608 Double_t xipy = exobj->PyProng(1);
1609 Double_t xipz = exobj->PzProng(1);
1610 Double_t epx = exobj->PxProng(0);
1611 Double_t epy = exobj->PyProng(0);
1612 Double_t epz = exobj->PzProng(0);
1613 cont_eleptvscutvars[1] = acos((xipx*epx+xipy*epy+xipz*epz)/sqrt(xipx*xipx+xipy*xipy+xipz*xipz)/sqrt(epx*epx+epy*epy+epz*epz));
1615 cont_eleptvscutvars[1] = -9999.;
1623 Int_t pdgcode = mcxic->GetPdgCode();
1624 cont2[1] = mcele->Pt();
1625 if(abs(pdgcode)==4132 && abs(mcpdgele_array[1])==4132 && abs(mcpdgcasc_array[1])==4132){
1626 Int_t labmotherxic = mcxic->GetMother();
1627 Bool_t isbottomfd = kFALSE;
1630 AliAODMCParticle *motherxic = (AliAODMCParticle*)mcArray->At(labmotherxic);
1631 Int_t pdgmotherxic = motherxic->GetPdgCode();
1632 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){
1661 Double_t cont_xic[3];
1662 cont_xic[0] = mcxic->Pt();
1663 cont_xic[1] = mcxic->Y();
1669 Double_t cont_mcele[3];
1670 cont_mcele[0] = mcele->Pt();
1671 cont_mcele[1] = mcele->Eta();
1678 fHistoResponseXiPt->Fill(mcxic->Pt(),sqrt(pow(casc->MomXiX(),2)+pow(casc->MomXiY(),2)));
1681 Double_t cont_eleptvsxiptvsxicpt[4];
1682 cont_eleptvsxiptvsxicpt[0] = cont_eleptvsxipt[0];
1683 cont_eleptvsxiptvsxicpt[1] = cont_eleptvsxipt[1];
1684 cont_eleptvsxiptvsxicpt[2] = mcxic->Pt();
1685 cont_eleptvsxiptvsxicpt[3] = cont_eleptvsxipt[2];
1694 for(Int_t ih=0;ih<23;ih++){
1695 Double_t cont_eleptvscutvars[3];
1696 cont_eleptvscutvars[0] = exobj->Pt();
1700 cont_eleptvscutvars[1] = trk->GetTPCNcls();
1702 cont_eleptvscutvars[1] = trk->GetTPCsignalN();
1704 cont_eleptvscutvars[1] = nSigmaTPCele;
1706 cont_eleptvscutvars[1] = nSigmaTOFele;
1708 cont_eleptvscutvars[1] = trk->Eta();
1710 cont_eleptvscutvars[1] = trk->GetITSNcls();
1712 if(casc->ChargeXi()<0)
1713 cont_eleptvscutvars[1] = casc->MassLambda();
1715 cont_eleptvscutvars[1] = casc->MassAntiLambda();
1717 cont_eleptvscutvars[1] = casc->MassXi();
1720 lPosV0[0] = casc->DecayVertexV0X();
1721 lPosV0[1] = casc->DecayVertexV0Y();
1722 lPosV0[2] = casc->DecayVertexV0Z();
1723 cont_eleptvscutvars[1] = TMath::Sqrt(lPosV0[0]*lPosV0[0]+lPosV0[1]*lPosV0[1]);
1726 lPosXi[0] = casc->DecayVertexXiX();
1727 lPosXi[1] = casc->DecayVertexXiY();
1728 lPosXi[2] = casc->DecayVertexXiZ();
1729 cont_eleptvscutvars[1] = TMath::Sqrt(lPosXi[0]*lPosXi[0]+lPosXi[1]*lPosXi[1]);
1731 cont_eleptvscutvars[1] = casc->DcaV0Daughters();
1733 cont_eleptvscutvars[1] = casc->DcaXiDaughters();
1735 cont_eleptvscutvars[1] = casc->DcaBachToPrimVertex();
1737 if(casc->ChargeXi()<0.)
1738 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1740 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1742 if(casc->ChargeXi()>0.)
1743 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1745 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1747 cont_eleptvscutvars[1] = casc->CosPointingAngle(casc->GetDecayVertexXi());
1749 cont_eleptvscutvars[1] = casc->CosPointingAngleXi(posVtx[0],posVtx[1],posVtx[2]);
1751 cont_eleptvscutvars[1] = nSigmaTPCv0pr;
1753 cont_eleptvscutvars[1] = nSigmaTPCv0pi;
1755 cont_eleptvscutvars[1] = nSigmaTPCbachpi;
1757 cont_eleptvscutvars[1] = casc->Eta();
1759 cont_eleptvscutvars[1] = 0.5*TMath::Log((sqrt(casc->Ptot2Xi())+casc->MomXiZ())/(sqrt(casc->Ptot2Xi())-casc->MomXiZ()));
1761 Double_t xipx = exobj->PxProng(1);
1762 Double_t xipy = exobj->PyProng(1);
1763 Double_t xipz = exobj->PzProng(1);
1764 Double_t epx = exobj->PxProng(0);
1765 Double_t epy = exobj->PyProng(0);
1766 Double_t epz = exobj->PzProng(0);
1767 cont_eleptvscutvars[1] = acos((xipx*epx+xipy*epy+xipz*epz)/sqrt(xipx*xipx+xipy*xipy+xipz*xipz)/sqrt(epx*epx+epy*epy+epz*epz));
1769 cont_eleptvscutvars[1] = -9999.;
1795 for(Int_t ih=0;ih<23;ih++){
1796 Double_t cont_eleptvscutvars[3];
1797 cont_eleptvscutvars[0] = exobj->Pt();
1801 cont_eleptvscutvars[1] = trk->GetTPCNcls();
1803 cont_eleptvscutvars[1] = trk->GetTPCsignalN();
1805 cont_eleptvscutvars[1] = nSigmaTPCele;
1807 cont_eleptvscutvars[1] = nSigmaTOFele;
1809 cont_eleptvscutvars[1] = trk->Eta();
1811 cont_eleptvscutvars[1] = trk->GetITSNcls();
1813 if(casc->ChargeXi()<0)
1814 cont_eleptvscutvars[1] = casc->MassLambda();
1816 cont_eleptvscutvars[1] = casc->MassAntiLambda();
1818 cont_eleptvscutvars[1] = casc->MassXi();
1821 lPosV0[0] = casc->DecayVertexV0X();
1822 lPosV0[1] = casc->DecayVertexV0Y();
1823 lPosV0[2] = casc->DecayVertexV0Z();
1824 cont_eleptvscutvars[1] = TMath::Sqrt(lPosV0[0]*lPosV0[0]+lPosV0[1]*lPosV0[1]);
1827 lPosXi[0] = casc->DecayVertexXiX();
1828 lPosXi[1] = casc->DecayVertexXiY();
1829 lPosXi[2] = casc->DecayVertexXiZ();
1830 cont_eleptvscutvars[1] = TMath::Sqrt(lPosXi[0]*lPosXi[0]+lPosXi[1]*lPosXi[1]);
1832 cont_eleptvscutvars[1] = casc->DcaV0Daughters();
1834 cont_eleptvscutvars[1] = casc->DcaXiDaughters();
1836 cont_eleptvscutvars[1] = casc->DcaBachToPrimVertex();
1838 if(casc->ChargeXi()<0.)
1839 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1841 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1843 if(casc->ChargeXi()>0.)
1844 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1846 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1848 cont_eleptvscutvars[1] = casc->CosPointingAngle(casc->GetDecayVertexXi());
1850 cont_eleptvscutvars[1] = casc->CosPointingAngleXi(posVtx[0],posVtx[1],posVtx[2]);
1852 cont_eleptvscutvars[1] = nSigmaTPCv0pr;
1854 cont_eleptvscutvars[1] = nSigmaTPCv0pi;
1856 cont_eleptvscutvars[1] = nSigmaTPCbachpi;
1858 cont_eleptvscutvars[1] = casc->Eta();
1860 cont_eleptvscutvars[1] = 0.5*TMath::Log((sqrt(casc->Ptot2Xi())+casc->MomXiZ())/(sqrt(casc->Ptot2Xi())-casc->MomXiZ()));
1862 Double_t xipx = exobj->PxProng(1);
1863 Double_t xipy = exobj->PyProng(1);
1864 Double_t xipz = exobj->PzProng(1);
1865 Double_t epx = exobj->PxProng(0);
1866 Double_t epy = exobj->PyProng(0);
1867 Double_t epz = exobj->PzProng(0);
1868 cont_eleptvscutvars[1] = acos((xipx*epx+xipy*epy+xipz*epz)/sqrt(xipx*xipx+xipy*xipy+xipz*xipz)/sqrt(epx*epx+epy*epy+epz*epz));
1870 cont_eleptvscutvars[1] = -9999.;
1878 Int_t pdgcode = mcxic->GetPdgCode();
1879 if(abs(pdgcode)==5132 && abs(mcpdgele_array[1])==5132 && abs(mcpdgcasc_array[1])==4132 && abs(mcpdgcasc_array[2])==5132){
1884 if(abs(pdgcode)==5132 && abs(mcpdgele_array[1])==5132 && abs(mcpdgcasc_array[1])==4232 && abs(mcpdgcasc_array[2])==5132){
1889 if(abs(pdgcode)==5232 && abs(mcpdgele_array[1])==5232 && abs(mcpdgcasc_array[1])==4132 && abs(mcpdgcasc_array[2])==5232){
1894 if(abs(pdgcode)==5232 && abs(mcpdgele_array[1])==5232 && abs(mcpdgcasc_array[1])==4232 && abs(mcpdgcasc_array[2])==5232){
1909 if( mexi_flip <10. && cosoa < 0. && fAnalCuts->IsPeakRegion(casc))
1911 if(trk->Charge()*casc->ChargeXi()<0){
1924 if(trk->Charge()*casc->ChargeXi()<0){
1942 if( mexi_flip< 10. && cosoa < 0. && fAnalCuts->IsSideBand(casc))
1944 if(trk->Charge()*casc->ChargeXi()<0){
1958 for(Int_t iv=0;iv<11;iv++){
1969 if(trk->Charge()>0){
1972 }
else if(trk->Charge()<0){
1981 Int_t pdgcode = mcxic->GetPdgCode();
1982 if(abs(pdgcode)==4132 && abs(mcpdgele_array[1])==4132 && abs(mcpdgcasc_array[1])==4132){
1985 if(abs(pdgcode)==5132 && abs(mcpdgele_array[1])==5132 && abs(mcpdgcasc_array[1])==4132 && abs(mcpdgcasc_array[2])==5132){
1988 if(abs(pdgcode)==5132 && abs(mcpdgele_array[1])==5132 && abs(mcpdgcasc_array[1])==4232 && abs(mcpdgcasc_array[2])==5132){
1991 if(abs(pdgcode)==5232 && abs(mcpdgele_array[1])==5232 && abs(mcpdgcasc_array[1])==4132 && abs(mcpdgcasc_array[2])==5232){
1994 if(abs(pdgcode)==5232 && abs(mcpdgele_array[1])==5232 && abs(mcpdgcasc_array[1])==4232 && abs(mcpdgcasc_array[2])==5232){
2032 for(Int_t i=0;i<90;i++){
2036 Double_t pxe = trke->Px();
2037 Double_t pye = trke->Py();
2038 Double_t pze = trke->Pz();
2039 Double_t mome = sqrt(pxe*pxe+pye*pye+pze*pze);
2040 Double_t Ee = sqrt(mome*mome+0.000510998928*0.000510998928);
2042 Double_t pxv = casc->Px();
2043 Double_t pyv = casc->Py();
2044 Double_t pzv = casc->Pz();
2045 Double_t momv = sqrt(pxv*pxv+pyv*pyv+pzv*pzv);
2046 Double_t Ev = sqrt(momv*momv+1.32171*1.32171);
2048 Double_t cosoa = (pxe*pxv+pye*pyv+pze*pzv)/mome/momv;
2050 Double_t pxsum = pxe + pxv;
2051 Double_t pysum = pye + pyv;
2052 Double_t pzsum = pze + pzv;
2053 Double_t Esum = Ee + Ev;
2054 Double_t mexi = sqrt(Esum*Esum-pxsum*pxsum-pysum*pysum-pzsum*pzsum);
2056 Double_t uxe = pxe/mome;
2057 Double_t uye = pye/mome;
2058 Double_t uze = pze/mome;
2059 Double_t lf = -2.*(pxv*uxe+pyv*uye+pzv*uze);
2060 Double_t pxv_flip = pxv + lf * uxe;
2061 Double_t pyv_flip = pyv + lf * uye;
2062 Double_t pzv_flip = pzv + lf * uze;
2063 Double_t pxsum_flip = pxe + pxv_flip;
2064 Double_t pysum_flip = pye + pyv_flip;
2065 Double_t pzsum_flip = pze + pzv_flip;
2066 Double_t mexi_flip = sqrt(Esum*Esum-pxsum_flip*pxsum_flip-pysum_flip*pysum_flip-pzsum_flip*pzsum_flip);
2067 Double_t ptexi_flip = sqrt(pxsum_flip*pxsum_flip+pysum_flip*pysum_flip);
2069 Double_t posVtx[3] = {0.,0.,0.};
2070 fVtx1->GetXYZ(posVtx);
2073 UInt_t pdgdg[2]={11,3312};
2099 cont[1] = sqrt(pxsum*pxsum+pysum*pysum);
2103 Double_t cont_flip[4];
2104 cont_flip[0] = mexi_flip;
2105 cont_flip[1] = ptexi_flip;
2111 cont2[1] = sqrt(pxe*pxe+pye*pye);
2114 Double_t cont_eleptvseta[3];
2115 cont_eleptvseta[0] = trke->Pt();
2116 cont_eleptvseta[1] = trke->Eta();
2119 Double_t cont_eleptvsxipt[3];
2120 cont_eleptvsxipt[0] = trke->Pt();
2121 cont_eleptvsxipt[1] = casc->Pt();
2124 Double_t cont_eleptvsd0[3];
2125 cont_eleptvsd0[0] = trke->Pt();
2126 cont_eleptvsd0[1] = 0.;
2129 Double_t xyzR125_ele[3], xyzR125_pr[3], xyzR125_pi[3], xyzR125_bach[3];
2130 xyzR125_ele[0] = (*elevars)[0];
2131 xyzR125_ele[1] = (*elevars)[1];
2132 xyzR125_ele[2] = (*elevars)[2];
2133 xyzR125_pr[0] = (*cascvars)[0];
2134 xyzR125_pr[1] = (*cascvars)[1];
2135 xyzR125_pr[2] = (*cascvars)[2];
2136 xyzR125_pi[0] = (*cascvars)[3];
2137 xyzR125_pi[1] = (*cascvars)[4];
2138 xyzR125_pi[2] = (*cascvars)[5];
2139 xyzR125_bach[0] = (*cascvars)[6];
2140 xyzR125_bach[1] = (*cascvars)[7];
2141 xyzR125_bach[2] = (*cascvars)[8];
2143 Double_t rdhfcutvars[12];
2144 rdhfcutvars[0] = xyzR125_ele[0];
2145 rdhfcutvars[1] = xyzR125_ele[1];
2146 rdhfcutvars[2] = xyzR125_ele[2];
2147 rdhfcutvars[3] = xyzR125_pr[0];
2148 rdhfcutvars[4] = xyzR125_pr[1];
2149 rdhfcutvars[5] = xyzR125_pr[2];
2150 rdhfcutvars[6] = xyzR125_pi[0];
2151 rdhfcutvars[7] = xyzR125_pi[1];
2152 rdhfcutvars[8] = xyzR125_pi[2];
2153 rdhfcutvars[9] = xyzR125_bach[0];
2154 rdhfcutvars[10] = xyzR125_bach[1];
2155 rdhfcutvars[11] = xyzR125_bach[2];
2167 if(((
int)trke->T())*chargexi<0){
2203 if(mexi_flip < 10. && cosoa<0. && fAnalCuts->IsPeakRegion(casc))
2205 if(((
int)trke->T())*chargexi<0){
2219 for(Int_t iv=0;iv<11;iv++){
2227 fCorrelationVariables[5] = (*elevars)[5];
2228 fCorrelationVariables[6] = 2;
2230 if(chargexi<0) fCorrelationVariables[7] = 0;
2231 else fCorrelationVariables[7] = 2;
2232 }
else if(trke->T()<0){
2233 if(chargexi<0) fCorrelationVariables[7] = 1;
2234 else fCorrelationVariables[7] = 3;
2254 const char* nameoutput = GetOutputSlot(5)->GetContainer()->GetName();
2258 TString * fCandidateVariableNames =
new TString[nVar];
2260 fCandidateVariableNames[ 0]=
"ElePx";
2261 fCandidateVariableNames[ 1]=
"ElePy";
2262 fCandidateVariableNames[ 2]=
"ElePz";
2263 fCandidateVariableNames[ 3]=
"TPCChi2overNDF";
2264 fCandidateVariableNames[ 4]=
"ITSNcls";
2265 fCandidateVariableNames[ 5]=
"TPCNcls";
2266 fCandidateVariableNames[ 6]=
"TPCNclsPID";
2267 fCandidateVariableNames[ 7]=
"TPCNclsRatio";
2268 fCandidateVariableNames[ 8]=
"d0R";
2269 fCandidateVariableNames[ 9]=
"d0Z";
2270 fCandidateVariableNames[10]=
"ITSClusterMap";
2271 fCandidateVariableNames[11]=
"nSigmaTPCele";
2272 fCandidateVariableNames[12]=
"nSigmaTOFele";
2273 fCandidateVariableNames[13]=
"nSigmaTPCpi";
2274 fCandidateVariableNames[14]=
"nSigmaTPCka";
2275 fCandidateVariableNames[15]=
"nSigmaTPCpr";
2276 fCandidateVariableNames[16]=
"EvNumber";
2277 fCandidateVariableNames[17]=
"EleCharge";
2278 fCandidateVariableNames[18]=
"ElePdgCode";
2279 fCandidateVariableNames[19]=
"EleMotherPdgCode";
2280 fCandidateVariableNames[20]=
"mcelepx";
2281 fCandidateVariableNames[21]=
"mcelepy";
2282 fCandidateVariableNames[22]=
"mcelepz";
2283 fCandidateVariableNames[23]=
"Centrality";
2284 fCandidateVariableNames[24]=
"PrimVertZ";
2285 fCandidateVariableNames[25]=
"RunNumber";
2287 for (Int_t ivar=0; ivar<nVar; ivar++) {
2305 Double_t d0z0[2],covd0z0[3];
2306 trk->PropagateToDCA(
fVtx1,
fBzkG,kVeryBig,d0z0,covd0z0);
2310 pv[0] =
fVtx1->GetX();
2311 pv[1] =
fVtx1->GetY();
2312 pv[2] =
fVtx1->GetZ();
2313 Double_t xyzR125[3] = {9999.,9999.,9999.};
2315 TVector *varvec =
new TVector(6);
2316 (*varvec)[0] = xyzR125[0];
2317 (*varvec)[1] = xyzR125[1];
2318 (*varvec)[2] = xyzR125[2];
2321 (*varvec)[5] = d0z0[0];
2322 fElectronTracks->AddLast(
new TLorentzVector(trk->Px(),trk->Py(),trk->Pz(),trk->Charge()));
2327 Int_t pdgEle = -9999;
2328 Int_t pdgEleMother = -9999;
2329 Float_t mcepx = -9999;
2330 Float_t mcepy = -9999;
2331 Float_t mcepz = -9999;
2334 Int_t labEle = trk->GetLabel();
2335 if(labEle<0)
return;
2336 AliAODMCParticle *mcetrk = (AliAODMCParticle*)mcArray->At(labEle);
2338 pdgEle = mcetrk->GetPdgCode();
2339 mcepx = mcetrk->Px();
2340 mcepy = mcetrk->Py();
2341 mcepz = mcetrk->Pz();
2348 for(Int_t i=0;i<26;i++){
2359 if(trk->GetTPCNclsF()>0)
2364 Int_t itsmap = trk->GetITSClusterMap();
2367 Bool_t spdfirst = (itsmap & bit1) == bit1;
2368 Bool_t spdsecond = (itsmap & bit2) == bit2;
2406 const char* nameoutput = GetOutputSlot(6)->GetContainer()->GetName();
2410 TString * fCandidateVariableNames =
new TString[nVar];
2412 fCandidateVariableNames[ 0]=
"Centrality";
2413 fCandidateVariableNames[ 1]=
"InvMassXi";
2414 fCandidateVariableNames[ 2]=
"XiPx";
2415 fCandidateVariableNames[ 3]=
"XiPy";
2416 fCandidateVariableNames[ 4]=
"XiPz";
2417 fCandidateVariableNames[ 5]=
"InvMassLambda";
2418 fCandidateVariableNames[ 6]=
"DcaXiDaughters";
2419 fCandidateVariableNames[ 7]=
"DcaV0Daughters";
2420 fCandidateVariableNames[ 8]=
"DecayLengthXi";
2421 fCandidateVariableNames[ 9]=
"CosPointingAngleXi";
2422 fCandidateVariableNames[10]=
"DcaV0toPrimVertex";
2423 fCandidateVariableNames[11]=
"DcaPostoPrimVertex";
2424 fCandidateVariableNames[12]=
"DcaNegtoPrimVertex";
2425 fCandidateVariableNames[13]=
"DcaBachtoPrimVertex";
2426 fCandidateVariableNames[14]=
"DecayLengthV0";
2427 fCandidateVariableNames[15]=
"CosPointingAngleV0";
2428 fCandidateVariableNames[16]=
"XiCharge";
2429 fCandidateVariableNames[17]=
"XiPdgCode";
2430 fCandidateVariableNames[18]=
"XiMotherPdgCode";
2431 fCandidateVariableNames[19]=
"mcxipx";
2432 fCandidateVariableNames[20]=
"mcxipy";
2433 fCandidateVariableNames[21]=
"mcxipz";
2434 fCandidateVariableNames[22]=
"labcasc";
2435 fCandidateVariableNames[23]=
"RunNumber";
2436 fCandidateVariableNames[24]=
"PrimVertZ";
2437 fCandidateVariableNames[25]=
"EvNumber";
2439 for (Int_t ivar=0; ivar<nVar; ivar++) {
2453 AliAODTrack *cptrack = (AliAODTrack*)(casc->GetDaughter(0));
2454 AliAODTrack *cntrack = (AliAODTrack*)(casc->GetDaughter(1));
2455 AliAODTrack *cbtrack = (AliAODTrack*)(casc->GetDecayVertexXi()->GetDaughter(0));
2456 if(!cptrack)
return;
2457 if(!cntrack)
return;
2458 if(!cbtrack)
return;
2460 fHistoXiMassvsPt->Fill(casc->MassXi(),sqrt(casc->MomXiX()*casc->MomXiX()+casc->MomXiY()*casc->MomXiY()));
2461 fHistoOmegaMassvsPt->Fill(casc->MassOmega(),sqrt(casc->MomXiX()*casc->MomXiX()+casc->MomXiY()*casc->MomXiY()));
2462 Double_t momxix = casc->MomXiX();
2463 Double_t momxiy = casc->MomXiY();
2464 Double_t phi_alice = atan2(momxiy,momxix);
2465 if(phi_alice<0.) phi_alice += 2 * M_PI;
2466 fHistoXiQovPtvsPhi->Fill(phi_alice,(Double_t)casc->ChargeXi()/sqrt(momxix*momxix+momxiy*momxiy));
2468 Double_t mlamPDG = TDatabasePDG::Instance()->GetParticle(3122)->Mass();
2469 Double_t posVtx[3] = {0.,0.,0.};
2470 fVtx1->GetXYZ(posVtx);
2471 Double_t ptotlam = TMath::Sqrt(pow(casc->Px(),2)+pow(casc->Py(),2)+pow(casc->Pz(),2));
2472 Double_t dl = sqrt(pow(casc->DecayVertexV0X()-posVtx[0],2)+pow(casc->DecayVertexV0Y()-posVtx[1],2)+pow(casc->DecayVertexV0Z()-posVtx[2],2));
2473 Double_t v0propdl = dl*mlamPDG/ptotlam;
2483 Int_t xipdgcode = -9999;
2484 Int_t ximotherpdgcode = -9999;
2485 Float_t mcxipx = -9999.;
2486 Float_t mcxipy = -9999.;
2487 Float_t mcxipz = -9999.;
2488 Int_t labcasc = -9999.;
2490 Int_t pdgDgcasc[2]={211,3122};
2491 Int_t pdgDgv0[2]={2212,211};
2493 if(labcasc<0)
return;
2495 fHistoXiMassvsPtMCS->Fill(casc->MassXi(),sqrt(casc->MomXiX()*casc->MomXiX()+casc->MomXiY()*casc->MomXiY()));
2497 AliAODMCParticle *mccasctrk = (AliAODMCParticle*)mcArray->At(labcasc);
2498 if(!mccasctrk)
return;
2503 Bool_t hfxi_flag = kFALSE;
2504 xipdgcode = mccasctrk->GetPdgCode();
2505 Int_t labcascmother = mccasctrk->GetMother();
2506 if(labcascmother>=0){
2507 AliAODMCParticle *mothercasc = (AliAODMCParticle*)mcArray->At(labcascmother);
2509 ximotherpdgcode = mothercasc->GetPdgCode();
2510 if(abs(ximotherpdgcode)>4000&&abs(ximotherpdgcode)<4400){
2515 if(!hfxi_flag)
return;
2516 mcxipx = mccasctrk->Px();
2517 mcxipy = mccasctrk->Py();
2518 mcxipz = mccasctrk->Pz();
2522 Double_t xyz[3], pxpypz[3], cv[21]; Short_t sign;
2523 xyz[0]=casc->DecayVertexXiX();
2524 xyz[1]=casc->DecayVertexXiY();
2525 xyz[2]=casc->DecayVertexXiZ();
2526 pxpypz[0]=casc->MomXiX();
2527 pxpypz[1]=casc->MomXiY();
2528 pxpypz[2]=casc->MomXiZ();
2529 casc->GetCovarianceXYZPxPyPz(cv);
2530 sign=casc->ChargeXi();
2531 AliExternalTrackParam *trackCasc =
new AliExternalTrackParam(xyz,pxpypz,cv,sign);
2532 trackCasc->PropagateToDCA(
fVtx1,
fBzkG,kVeryBig);
2533 Double_t momcasc_new[3]={-9999,-9999,-9999.};
2534 trackCasc->GetPxPyPz(momcasc_new);
2537 TLorentzVector *lv =
new TLorentzVector();
2538 lv->SetXYZM(momcasc_new[0],momcasc_new[1],momcasc_new[2],casc->MassXi());
2539 Double_t xyzR125pr[3]={9999.,9999.,9999.};
2540 Double_t xyzR125pi[3]={9999.,9999.,9999.};
2541 Double_t xyzR125bach[3]={9999.,9999.,9999.};
2542 if(casc->ChargeXi()>0){
2549 TVector *varvec =
new TVector(9);
2550 (*varvec)[0] = xyzR125pr[0];
2551 (*varvec)[1] = xyzR125pr[1];
2552 (*varvec)[2] = xyzR125pr[2];
2553 (*varvec)[3] = xyzR125pi[0];
2554 (*varvec)[4] = xyzR125pi[1];
2555 (*varvec)[5] = xyzR125pi[2];
2556 (*varvec)[6] = xyzR125bach[0];
2557 (*varvec)[7] = xyzR125bach[1];
2558 (*varvec)[8] = xyzR125bach[2];
2567 TVector *varvec =
new TVector(9);
2568 (*varvec)[0] = xyzR125pr[0];
2569 (*varvec)[1] = xyzR125pr[1];
2570 (*varvec)[2] = xyzR125pr[2];
2571 (*varvec)[3] = xyzR125pi[0];
2572 (*varvec)[4] = xyzR125pi[1];
2573 (*varvec)[5] = xyzR125pi[2];
2574 (*varvec)[6] = xyzR125bach[0];
2575 (*varvec)[7] = xyzR125bach[1];
2576 (*varvec)[8] = xyzR125bach[2];
2583 for(Int_t i=0;i<26;i++){
2592 if(casc->ChargeXi()<0)
2628 const char* nameoutput = GetOutputSlot(7)->GetContainer()->GetName();
2632 TString * fCandidateVariableNames =
new TString[nVar];
2634 fCandidateVariableNames[ 0]=
"Centrality";
2635 fCandidateVariableNames[ 1]=
"DecayType";
2636 fCandidateVariableNames[ 2]=
"XicPx";
2637 fCandidateVariableNames[ 3]=
"XicPy";
2638 fCandidateVariableNames[ 4]=
"XicPz";
2639 fCandidateVariableNames[ 5]=
"ElePx";
2640 fCandidateVariableNames[ 6]=
"ElePy";
2641 fCandidateVariableNames[ 7]=
"ElePz";
2642 fCandidateVariableNames[ 8]=
"CascPx";
2643 fCandidateVariableNames[ 9]=
"CascPy";
2644 fCandidateVariableNames[10]=
"CascPz";
2645 fCandidateVariableNames[11]=
"PdgCode";
2646 fCandidateVariableNames[12]=
"ElePdgCode";
2647 fCandidateVariableNames[13]=
"CascPdgCode";
2648 fCandidateVariableNames[14]=
"RunNumber";
2649 fCandidateVariableNames[15]=
"EvNumber";
2651 for (Int_t ivar=0; ivar<nVar; ivar++) {
2663 if(!mcepart)
return;
2664 if(!mccascpart)
return;
2666 for(Int_t i=0;i<14;i++){
2687 Double_t epx = mcepart->Px();
2688 Double_t epy = mcepart->Py();
2689 Double_t epz = mcepart->Pz();
2690 Double_t eE = sqrt(epx*epx+epy*epy+epz*epz+0.000511*0.000511);
2691 Double_t cascpx = mccascpart->Px();
2692 Double_t cascpy = mccascpart->Py();
2693 Double_t cascpz = mccascpart->Pz();
2694 Double_t cascE = sqrt(cascpx*cascpx+cascpy*cascpy+cascpz*cascpz+1.32171*1.32171);
2696 Double_t InvMassEleXi = sqrt(pow(eE+cascE,2)-pow(epx+cascpx,2)-pow(epy+cascpy,2)-pow(epz+cascpz,2));
2699 cont[0] = InvMassEleXi;
2700 cont[1] = mcpart->Pt();
2704 cont2[0] = InvMassEleXi;
2705 cont2[1] = mcepart->Pt();
2707 Double_t cont_eleptvseta[3];
2708 cont_eleptvseta[0] = mcepart->Pt();
2709 cont_eleptvseta[1] = mcepart->Eta();
2711 Double_t cont_eleptvsxipt[3];
2712 cont_eleptvsxipt[0] = mcepart->Pt();
2713 cont_eleptvsxipt[1] = mccascpart->Pt();
2715 Double_t cont_eleptvsxiptvsxicpt[4];
2716 cont_eleptvsxiptvsxicpt[0] = mcepart->Pt();
2717 cont_eleptvsxiptvsxicpt[1] = mccascpart->Pt();
2718 cont_eleptvsxiptvsxicpt[2] = mcpart->Pt();
2722 contmc[0] = mcpart->Pt();
2723 contmc[1] = mcpart->Y();
2725 Double_t contmcele[3];
2726 contmcele[0] = mcepart->Pt();
2727 contmcele[1] = mcepart->Eta();
2733 esdcuts->GetEtaRange(etamin,etamax);
2743 if(fabs(mcepart->Eta())<etamax){
2747 if(InvMassEleXi<2.5){
2753 if(fabs(mcpart->Y())<0.7){
2754 if(InvMassEleXi<2.5){
2771 const char* nameoutput = GetOutputSlot(9)->GetContainer()->GetName();
2775 TString * fCandidateVariableNames =
new TString[nVar];
2777 fCandidateVariableNames[ 0]=
"Centrality";
2778 fCandidateVariableNames[ 1]=
"ElePx";
2779 fCandidateVariableNames[ 2]=
"ElePy";
2780 fCandidateVariableNames[ 3]=
"ElePz";
2781 fCandidateVariableNames[ 4]=
"ElePdgCode";
2782 fCandidateVariableNames[ 5]=
"EleMotherPdgCode";
2783 fCandidateVariableNames[ 6]=
"RunNumber";
2784 fCandidateVariableNames[ 7]=
"EvNumber";
2786 for (Int_t ivar=0; ivar<nVar; ivar++) {
2797 if(!mcepart)
return;
2799 Int_t pdgarray_ele[100], labelarray_ele[100], ngen_ele;
2805 contmc[0] = mcepart->Pt();
2806 contmc[1] = mcepart->Eta();
2809 if(ele_from_bottom){
2811 }
else if(ele_from_charm){
2816 Bool_t hfe_flag = kFALSE;
2817 Int_t labemother = mcepart->GetMother();
2818 Int_t pdgmotherele = -9999;
2820 AliAODMCParticle *motherele = (AliAODMCParticle*)mcArray->At(labemother);
2821 pdgmotherele = motherele->GetPdgCode();
2822 if(abs(pdgmotherele)>4000&&abs(pdgmotherele)<4400){
2826 if(!hfe_flag)
return;
2830 for(Int_t i=0;i<8;i++){
2854 const char* nameoutput = GetOutputSlot(10)->GetContainer()->GetName();
2858 TString * fCandidateVariableNames =
new TString[nVar];
2860 fCandidateVariableNames[ 0]=
"Centrality";
2861 fCandidateVariableNames[ 1]=
"CascPx";
2862 fCandidateVariableNames[ 2]=
"CascPy";
2863 fCandidateVariableNames[ 3]=
"CascPz";
2864 fCandidateVariableNames[ 4]=
"CascPdgCode";
2865 fCandidateVariableNames[ 5]=
"CascMotherPdgCode";
2866 fCandidateVariableNames[ 6]=
"RunNumber";
2867 fCandidateVariableNames[ 7]=
"EvNumber";
2869 for (Int_t ivar=0; ivar<nVar; ivar++) {
2880 if(!mccascpart)
return;
2882 for(Int_t i=0;i<8;i++){
2886 Bool_t hfxi_flag = kFALSE;
2887 Int_t labcascmother = mccascpart->GetMother();
2888 Int_t pdgmothercasc = -9999;
2889 if(labcascmother>=0){
2890 AliAODMCParticle *mothercasc = (AliAODMCParticle*)mcArray->At(labcascmother);
2892 pdgmothercasc = mothercasc->GetPdgCode();
2893 if(abs(pdgmothercasc)>4000&&abs(pdgmothercasc)<4400){
2898 if(!hfxi_flag)
return;
2901 contmc[0] = mccascpart->Pt();
2902 contmc[1] = mccascpart->Eta();
2926 fCEvents =
new TH1F(
"fCEvents",
"conter",18,-0.5,17.5);
2928 fCEvents->GetXaxis()->SetBinLabel(1,
"X1");
2929 fCEvents->GetXaxis()->SetBinLabel(2,
"Analyzed events");
2930 fCEvents->GetXaxis()->SetBinLabel(3,
"AliAODVertex exists");
2931 fCEvents->GetXaxis()->SetBinLabel(4,
"TriggerOK");
2932 fCEvents->GetXaxis()->SetBinLabel(5,
"IsEventSelected");
2933 fCEvents->GetXaxis()->SetBinLabel(6,
"CascadesHF exists");
2934 fCEvents->GetXaxis()->SetBinLabel(7,
"MCarray exists");
2935 fCEvents->GetXaxis()->SetBinLabel(8,
"MCheader exists");
2936 fCEvents->GetXaxis()->SetBinLabel(9,
"triggerClass!=CINT1");
2937 fCEvents->GetXaxis()->SetBinLabel(10,
"triggerMask!=kAnyINT");
2938 fCEvents->GetXaxis()->SetBinLabel(11,
"triggerMask!=kAny");
2939 fCEvents->GetXaxis()->SetBinLabel(12,
"vtxTitle.Contains(Z)");
2940 fCEvents->GetXaxis()->SetBinLabel(13,
"vtxTitle.Contains(3D)");
2941 fCEvents->GetXaxis()->SetBinLabel(14,
"vtxTitle.Doesn'tContain(Z-3D)");
2943 fCEvents->GetXaxis()->SetBinLabel(16,
"!IsEventSelected");
2944 fCEvents->GetXaxis()->SetBinLabel(17,
"triggerMask!=kAnyINT || triggerClass!=CINT1");
2947 fCEvents->GetYaxis()->SetTitle(
"counts");
2949 fHTrigger =
new TH1F(
"fHTrigger",
"counter",18,-0.5,17.5);
2951 fHTrigger->GetXaxis()->SetBinLabel(1,
"X1");
2952 fHTrigger->GetXaxis()->SetBinLabel(2,
"kMB");
2953 fHTrigger->GetXaxis()->SetBinLabel(3,
"kSemiCentral");
2954 fHTrigger->GetXaxis()->SetBinLabel(4,
"kCentral");
2955 fHTrigger->GetXaxis()->SetBinLabel(5,
"kINT7");
2956 fHTrigger->GetXaxis()->SetBinLabel(6,
"kEMC7");
2958 fHTrigger->GetXaxis()->SetBinLabel(8,
"kMB|kSemiCentral|kCentral");
2959 fHTrigger->GetXaxis()->SetBinLabel(9,
"kINT7|kEMC7");
2960 fHTrigger->GetXaxis()->SetBinLabel(11,
"kMB&kSemiCentral");
2961 fHTrigger->GetXaxis()->SetBinLabel(12,
"kMB&kCentral");
2962 fHTrigger->GetXaxis()->SetBinLabel(13,
"kINT7&kEMC7");
2964 fHCentrality =
new TH1F(
"fHCentrality",
"conter",100,0.,100.);
2983 Int_t bins_base[4]= {22 ,100 , 100 ,10};
2984 Double_t xmin_base[4]={1.3,0 , -0.5 ,0.00};
2985 Double_t xmax_base[4]={5.7,20. , 0.5 ,100};
2987 fHistoEleXiMass =
new THnSparseF(
"fHistoEleXiMass",
"",4,bins_base,xmin_base,xmax_base);
2989 fHistoEleXiMassRS =
new THnSparseF(
"fHistoEleXiMassRS",
"",4,bins_base,xmin_base,xmax_base);
2991 fHistoEleXiMassWS =
new THnSparseF(
"fHistoEleXiMassWS",
"",4,bins_base,xmin_base,xmax_base);
2993 fHistoEleXiMassRSMix =
new THnSparseF(
"fHistoEleXiMassRSMix",
"",4,bins_base,xmin_base,xmax_base);
2995 fHistoEleXiMassWSMix =
new THnSparseF(
"fHistoEleXiMassWSMix",
"",4,bins_base,xmin_base,xmax_base);
3001 fHistoEleXiMassRS1 =
new THnSparseF(
"fHistoEleXiMassRS1",
"",4,bins_base,xmin_base,xmax_base);
3003 fHistoEleXiMassWS1 =
new THnSparseF(
"fHistoEleXiMassWS1",
"",4,bins_base,xmin_base,xmax_base);
3013 fHistoEleXiMassRS2 =
new THnSparseF(
"fHistoEleXiMassRS2",
"",4,bins_base,xmin_base,xmax_base);
3015 fHistoEleXiMassWS2 =
new THnSparseF(
"fHistoEleXiMassWS2",
"",4,bins_base,xmin_base,xmax_base);
3063 Int_t bins_base_elept[3]= {10 ,100 ,10};
3064 Double_t xmin_base_elept[3]={1.3,0 ,0.00};
3065 Double_t xmax_base_elept[3]={3.3,10. ,100};
3067 fHistoEleXiMassvsElePtRS =
new THnSparseF(
"fHistoEleXiMassvsElePtRS",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
3069 fHistoEleXiMassvsElePtWS =
new THnSparseF(
"fHistoEleXiMassvsElePtWS",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
3079 fHistoEleXiMassvsElePtRS1 =
new THnSparseF(
"fHistoEleXiMassvsElePtRS1",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
3081 fHistoEleXiMassvsElePtWS1 =
new THnSparseF(
"fHistoEleXiMassvsElePtWS1",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
3091 fHistoEleXiMassvsElePtRS2 =
new THnSparseF(
"fHistoEleXiMassvsElePtRS2",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
3093 fHistoEleXiMassvsElePtWS2 =
new THnSparseF(
"fHistoEleXiMassvsElePtWS2",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
3104 fHistoElePtRS=
new TH2F(
"fHistoElePtRS",
"Right-sign e pt",100,0.,10.,10,0.,100.);
3106 fHistoElePtWS=
new TH2F(
"fHistoElePtWS",
"Wrong-sign e pt",100,0.,10.,10,0.,100.);
3108 fHistoElePtRSMix=
new TH2F(
"fHistoElePtRSMix",
"Right-sign e pt",100,0.,10.,10,0.,100.);
3110 fHistoElePtWSMix=
new TH2F(
"fHistoElePtWSMix",
"Wrong-sign e pt",100,0.,10.,10,0.,100.);
3113 fHistoEleXiMassMCS =
new THnSparseF(
"fHistoEleXiMassMCS",
"",4,bins_base,xmin_base,xmax_base);
3115 fHistoEleXiMassMCS1 =
new THnSparseF(
"fHistoEleXiMassMCS1",
"",4,bins_base,xmin_base,xmax_base);
3117 fHistoEleXiMassMCS2 =
new THnSparseF(
"fHistoEleXiMassMCS2",
"",4,bins_base,xmin_base,xmax_base);
3137 fHistoEleXiMassMCGen =
new THnSparseF(
"fHistoEleXiMassMCGen",
"",4,bins_base,xmin_base,xmax_base);
3139 fHistoEleXiMassvsElePtMCS =
new THnSparseF(
"fHistoEleXiMassvsElePtMCS",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
3143 fHistoEleXiMassvsElePtMCS1 =
new THnSparseF(
"fHistoEleXiMassvsElePtMCS1",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
3147 fHistoEleXiMassvsElePtMCS2 =
new THnSparseF(
"fHistoEleXiMassvsElePtMCS2",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
3151 fHistoElePtMCS=
new TH2F(
"fHistoElePtMCS",
"MC S e pt",100,0.,10.,10,0.,100.);
3153 fHistoElePtMCGen=
new TH2F(
"fHistoElePtMCGen",
"MC Gen e pt",100,0.,10.,10,0.,100.);
3156 Int_t bins_eleptvseta[3]= {50,20 ,10};
3157 Double_t xmin_eleptvseta[3]={0.,-1. ,0.0};
3158 Double_t xmax_eleptvseta[3]={5.,1. ,100};
3160 fHistoElePtvsEtaRS =
new THnSparseF(
"fHistoElePtvsEtaRS",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
3162 fHistoElePtvsEtaWS =
new THnSparseF(
"fHistoElePtvsEtaWS",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
3164 fHistoElePtvsEtaRSMix =
new THnSparseF(
"fHistoElePtvsEtaRSMix",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
3166 fHistoElePtvsEtaWSMix =
new THnSparseF(
"fHistoElePtvsEtaWSMix",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
3168 fHistoElePtvsEtaMCS =
new THnSparseF(
"fHistoElePtvsEtaMCS",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
3170 fHistoElePtvsEtaMCGen =
new THnSparseF(
"fHistoElePtvsEtaMCGen",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
3173 Int_t bins_eleptvsxipt[3]= {50,20 ,10};
3174 Double_t xmin_eleptvsxipt[3]={0.,0. ,0.0};
3175 Double_t xmax_eleptvsxipt[3]={5.,5. ,100};
3177 fHistoElePtvsXiPtRS =
new THnSparseF(
"fHistoElePtvsXiPtRS",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
3179 fHistoElePtvsXiPtWS =
new THnSparseF(
"fHistoElePtvsXiPtWS",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
3181 fHistoElePtvsXiPtRSMix =
new THnSparseF(
"fHistoElePtvsXiPtRSMix",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
3183 fHistoElePtvsXiPtWSMix =
new THnSparseF(
"fHistoElePtvsXiPtWSMix",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
3185 fHistoElePtvsXiPtMCS =
new THnSparseF(
"fHistoElePtvsXiPtMCS",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
3187 fHistoElePtvsXiPtMCGen =
new THnSparseF(
"fHistoElePtvsXiPtMCGen",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
3189 fHistoElePtvsXiPtMCXicGen =
new THnSparseF(
"fHistoElePtvsXiPtMCXicGen",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
3192 Int_t bins_eleptvsxiptvsxicpt[4]= {50,20,10,10};
3193 Double_t xmin_eleptvsxiptvsxicpt[4]={0.,0.,0.,0.0};
3194 Double_t xmax_eleptvsxiptvsxicpt[4]={5.,5.,10.,100};
3195 fHistoElePtvsXiPtvsXicPtMCS =
new THnSparseF(
"fHistoElePtvsXiPtvsXicPtMCS",
"",4,bins_eleptvsxiptvsxicpt,xmin_eleptvsxiptvsxicpt,xmax_eleptvsxiptvsxicpt);
3197 fHistoElePtvsXiPtvsXicPtMCGen =
new THnSparseF(
"fHistoElePtvsXiPtvsXicPtMCGen",
"",4,bins_eleptvsxiptvsxicpt,xmin_eleptvsxiptvsxicpt,xmax_eleptvsxiptvsxicpt);
3200 Int_t bins_eleptvsd0[3]= {50 ,50 ,10};
3201 Double_t xmin_eleptvsd0[3]={0.,-0.2 ,0.0};
3202 Double_t xmax_eleptvsd0[3]={5.,0.2 ,100};
3204 fHistoElePtvsd0RS =
new THnSparseF(
"fHistoElePtvsd0RS",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
3206 fHistoElePtvsd0WS =
new THnSparseF(
"fHistoElePtvsd0WS",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
3208 fHistoElePtvsd0RSMix =
new THnSparseF(
"fHistoElePtvsd0RSMix",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
3210 fHistoElePtvsd0WSMix =
new THnSparseF(
"fHistoElePtvsd0WSMix",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
3212 fHistoElePtvsd0MCS =
new THnSparseF(
"fHistoElePtvsd0MCS",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
3214 fHistoElePtvsd0PromptMCS =
new THnSparseF(
"fHistoElePtvsd0PromptMCS",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
3222 fHistoBachPt =
new TH1F(
"fHistoBachPt",
"Bachelor p_{T}",100,0.0,5.0);
3224 fHistoBachPtMCS =
new TH1F(
"fHistoBachPtMCS",
"Bachelor p_{T}",100,0.0,5.0);
3228 fHistod0Bach =
new TH1F(
"fHistod0Bach",
"Bachelor d_{0}",100,-0.5,0.5);
3230 fHistoXiMassvsPt=
new TH2F(
"fHistoXiMassvsPt",
"Xi mass",100,1.32-0.05,1.32+0.05,20,0.,10.);
3232 fHistoXiMassvsPtMCS=
new TH2F(
"fHistoXiMassvsPtMCS",
"Xi mass",100,1.32-0.05,1.32+0.05,20,0.,10.);
3234 fHistoXiMassvsPtMCGen=
new TH2F(
"fHistoXiMassvsPtMCGen",
"Xi mass",100,1.32-0.05,1.32+0.05,20,0.,10.);
3236 fHistoOmegaMassvsPt=
new TH2F(
"fHistoOmegaMassvsPt",
"Omega mass",100,1.67-0.05,1.67+0.05,20,0.,10.);
3260 for(Int_t i=0;i<8;i++){
3270 Int_t bins_xicmcgen[3]= {100 ,20 ,10};
3271 Double_t xmin_xicmcgen[3]={0.,-1.0 ,0.0};
3272 Double_t xmax_xicmcgen[3]={20.,1.0 ,100};
3273 fHistoXicMCGen =
new THnSparseF(
"fHistoXicMCGen",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
3275 fHistoXicMCGen1 =
new THnSparseF(
"fHistoXicMCGen1",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
3277 fHistoXicMCGen2 =
new THnSparseF(
"fHistoXicMCGen2",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
3279 fHistoXicMCS =
new THnSparseF(
"fHistoXicMCS",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
3281 fHistoXicMCS1 =
new THnSparseF(
"fHistoXicMCS1",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
3283 fHistoXicMCS2 =
new THnSparseF(
"fHistoXicMCS2",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
3286 Int_t bins_elemcgen[3]= {100 ,20 ,10};
3287 Double_t xmin_elemcgen[3]={0.,-1.0 ,0.0};
3288 Double_t xmax_elemcgen[3]={10.,1.0 ,100};
3289 fHistoElectronMCGen =
new THnSparseF(
"fHistoElectronMCGen",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
3293 fHistoCharmElectronMCGen =
new THnSparseF(
"fHistoCharmElectronMCGen",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
3295 fHistoXicElectronMCGen =
new THnSparseF(
"fHistoXicElectronMCGen",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
3297 fHistoXicElectronMCGen1 =
new THnSparseF(
"fHistoXicElectronMCGen1",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
3299 fHistoXicElectronMCGen2 =
new THnSparseF(
"fHistoXicElectronMCGen2",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
3301 fHistoXicElectronMCS =
new THnSparseF(
"fHistoXicElectronMCS",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
3303 fHistoXicElectronMCS1 =
new THnSparseF(
"fHistoXicElectronMCS1",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
3305 fHistoXicElectronMCS2 =
new THnSparseF(
"fHistoXicElectronMCS2",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
3308 Int_t bins_ximcgen[3]= {50 ,20 ,10};
3309 Double_t xmin_ximcgen[3]={0.,-1.0 ,0.0};
3310 Double_t xmax_ximcgen[3]={10.,1.0 ,100};
3311 fHistoXiMCGen =
new THnSparseF(
"fHistoXiMCGen",
"",3,bins_ximcgen,xmin_ximcgen,xmax_ximcgen);
3314 fHistoLambdaPtvsDl=
new TH2F(
"fHistoLambdaPtvsDl",
"Lambda pt vs dl",20,0.,10.,20,0.,40.);
3320 fHistoLambdaPtvsDR=
new TH2F(
"fHistoLambdaPtvsDR",
"Lambda pt vs dl",20,0.,10.,80,0.,160.);
3382 for(Int_t ih=0;ih<23;ih++){
3383 Int_t bins_eleptvscutvars[3];
3384 Double_t xmin_eleptvscutvars[3];
3385 Double_t xmax_eleptvscutvars[3];
3387 bins_eleptvscutvars[0] = 20;
3388 xmin_eleptvscutvars[0] = 0.;
3389 xmax_eleptvscutvars[0] = 20.;
3390 bins_eleptvscutvars[2] = 10;
3391 xmin_eleptvscutvars[2] = 0.;
3392 xmax_eleptvscutvars[2] = 100.;
3396 bins_eleptvscutvars[1] = 40;
3397 xmin_eleptvscutvars[1] = 0.;
3398 xmax_eleptvscutvars[1] = 160.;
3399 }
else if(ih==2 || ih==3){
3401 bins_eleptvscutvars[1] = 20;
3402 xmin_eleptvscutvars[1] = -5.;
3403 xmax_eleptvscutvars[1] = 5.;
3406 bins_eleptvscutvars[1] = 30;
3407 xmin_eleptvscutvars[1] = -1.5;
3408 xmax_eleptvscutvars[1] = 1.5;
3411 bins_eleptvscutvars[1] = 7;
3412 xmin_eleptvscutvars[1] = -0.5;
3413 xmax_eleptvscutvars[1] = 6.5;
3416 bins_eleptvscutvars[1] = 50;
3417 xmin_eleptvscutvars[1] = 1.1156-0.03;
3418 xmax_eleptvscutvars[1] = 1.1156+0.03;
3421 bins_eleptvscutvars[1] = 50;
3422 xmin_eleptvscutvars[1] = 1.32-0.03;
3423 xmax_eleptvscutvars[1] = 1.32+0.03;
3424 }
else if(ih==8 || ih==9){
3426 bins_eleptvscutvars[1] = 20;
3427 xmin_eleptvscutvars[1] = 0.;
3428 xmax_eleptvscutvars[1] = 5.;
3429 }
else if(ih==10 || ih==11){
3431 bins_eleptvscutvars[1] = 20;
3432 xmin_eleptvscutvars[1] = 0.;
3433 xmax_eleptvscutvars[1] = 2.;
3434 }
else if(ih==12 || ih==13 || ih==14){
3436 bins_eleptvscutvars[1] = 20;
3437 xmin_eleptvscutvars[1] = 0.;
3438 xmax_eleptvscutvars[1] = 0.5;
3439 }
else if(ih==15 || ih==16){
3441 bins_eleptvscutvars[1] = 20;
3442 xmin_eleptvscutvars[1] = 0.95;
3443 xmax_eleptvscutvars[1] = 1.0;
3444 }
else if(ih==17 || ih==18 || ih==19){
3446 bins_eleptvscutvars[1] = 20;
3447 xmin_eleptvscutvars[1] = -5.;
3448 xmax_eleptvscutvars[1] = 5.;
3449 }
else if(ih==20 || ih==21){
3451 bins_eleptvscutvars[1] = 30;
3452 xmin_eleptvscutvars[1] = -1.5;
3453 xmax_eleptvscutvars[1] = 1.5;
3456 bins_eleptvscutvars[1] = 20;
3457 xmin_eleptvscutvars[1] = 0.;
3458 xmax_eleptvscutvars[1] = 3.141592/2;
3461 fHistoElePtvsCutVarsRS[ih] =
new THnSparseF(Form(
"fHistoElePtvsCutVarsRS[%d]",ih),
"",3,bins_eleptvscutvars,xmin_eleptvscutvars,xmax_eleptvscutvars);
3463 fHistoElePtvsCutVarsWS[ih] =
new THnSparseF(Form(
"fHistoElePtvsCutVarsWS[%d]",ih),
"",3,bins_eleptvscutvars,xmin_eleptvscutvars,xmax_eleptvscutvars);
3465 fHistoElePtvsCutVarsMCS[ih] =
new THnSparseF(Form(
"fHistoElePtvsCutVarsMCS[%d]",ih),
"",3,bins_eleptvscutvars,xmin_eleptvscutvars,xmax_eleptvscutvars);
3469 Int_t bins_eletag[3]= {20 ,40 ,10};
3470 Double_t xmin_eletag[3]={0.,0. ,0.0};
3471 Double_t xmax_eletag[3]={10.,20 ,100};
3472 fHistoElectronPi0Total =
new THnSparseF(
"fHistoElectronPi0Total",
"",3,bins_eletag,xmin_eletag,xmax_eletag);
3474 fHistoElectronPi0Tag =
new THnSparseF(
"fHistoElectronPi0Tag",
"",3,bins_eletag,xmin_eletag,xmax_eletag);
3476 fHistoElectronEtaTotal =
new THnSparseF(
"fHistoElectronEtaTotal",
"",3,bins_eletag,xmin_eletag,xmax_eletag);
3478 fHistoElectronEtaTag =
new THnSparseF(
"fHistoElectronEtaTag",
"",3,bins_eletag,xmin_eletag,xmax_eletag);
3492 if(!casc)
return 0x0;
3493 if(!part)
return 0x0;
3494 if(!aod)
return 0x0;
3499 AliAODVertex *primVertexAOD;
3500 Bool_t unsetvtx = kFALSE;
3504 primVertexAOD =
fVtx1;
3509 primVertexAOD =
fVtx1;
3511 if(!primVertexAOD)
return 0x0;
3512 Double_t posprim[3]; primVertexAOD->GetXYZ(posprim);
3517 AliESDtrack *esdtrack =
new AliESDtrack((AliVTrack*)partpid);
3519 Double_t xyz[3], pxpypz[3], cv[21]; Short_t sign;
3520 xyz[0]=casc->DecayVertexXiX();
3521 xyz[1]=casc->DecayVertexXiY();
3522 xyz[2]=casc->DecayVertexXiZ();
3523 pxpypz[0]=casc->MomXiX();
3524 pxpypz[1]=casc->MomXiY();
3525 pxpypz[2]=casc->MomXiZ();
3526 casc->GetCovarianceXYZPxPyPz(cv);
3527 sign=casc->ChargeXi();
3528 AliExternalTrackParam *trackCasc =
new AliExternalTrackParam(xyz,pxpypz,cv,sign);
3530 Double_t xdummy, ydummy;
3531 Double_t dca = esdtrack->GetDCA(trackCasc,
fBzkG,xdummy,ydummy);
3538 Double_t d0z0bach[2],covd0z0bach[3];
3539 if(sqrt(pow(secVert->GetX(),2)+pow(secVert->GetY(),2))<1.){
3540 part->PropagateToDCA(secVert,
fBzkG,kVeryBig,d0z0bach,covd0z0bach);
3541 trackCasc->PropagateToDCA(secVert,
fBzkG,kVeryBig);
3543 part->PropagateToDCA(primVertexAOD,
fBzkG,kVeryBig,d0z0bach,covd0z0bach);
3544 trackCasc->PropagateToDCA(primVertexAOD,
fBzkG,kVeryBig);
3546 Double_t momcasc_new[3]={-9999,-9999,-9999.};
3547 trackCasc->GetPxPyPz(momcasc_new);
3549 Double_t px[2],py[2],pz[2];
3550 px[0] = part->Px(); py[0] = part->Py(); pz[0] = part->Pz();
3551 px[1] = momcasc_new[0]; py[1] = momcasc_new[1]; pz[1] = momcasc_new[2];
3556 Double_t d0[3],d0err[3];
3558 part->PropagateToDCA(primVertexAOD,
fBzkG,kVeryBig,d0z0bach,covd0z0bach);
3560 d0err[0] = TMath::Sqrt(covd0z0bach[0]);
3562 Double_t d0z0casc[2],covd0z0casc[3];
3563 trackCasc->PropagateToDCA(primVertexAOD,
fBzkG,kVeryBig,d0z0casc,covd0z0casc);
3565 d0err[1] = TMath::Sqrt(covd0z0casc[0]);
3570 Short_t
charge = part->Charge();
3574 if(unsetvtx)
delete primVertexAOD; primVertexAOD=NULL;
3575 if(esdtrack)
delete esdtrack;
3576 if(trackCasc)
delete trackCasc;
3580 UShort_t
id[2]={(UShort_t)part->GetID(),(UShort_t)trackCasc->GetID()};
3583 theCascade->GetSecondaryVtx()->AddDaughter(part);
3584 theCascade->GetSecondaryVtx()->AddDaughter(casc);
3585 if(unsetvtx)
delete primVertexAOD; primVertexAOD=NULL;
3586 if(esdtrack)
delete esdtrack;
3587 if(trackCasc)
delete trackCasc;
3600 TObjArray *TrackArray =
new TObjArray(3);
3602 AliESDtrack *cptrk1 =
new AliESDtrack((AliVTrack*)trk);
3603 TrackArray->AddAt(cptrk1,0);
3605 AliESDtrack *cascptrack =
new AliESDtrack((AliVTrack*)casc->GetDaughter(0));
3606 TrackArray->AddAt(cascptrack,1);
3607 AliESDtrack *cascntrack =
new AliESDtrack((AliVTrack*)casc->GetDaughter(1));
3608 TrackArray->AddAt(cascntrack,2);
3609 AliESDtrack *cascbtrack =
new AliESDtrack((AliVTrack*)casc->GetDecayVertexXi()->GetDaughter(0));
3610 TrackArray->AddAt(cascbtrack,3);
3614 for(Int_t i=0;i<4;i++)
3616 AliESDtrack *tesd = (AliESDtrack*)TrackArray->UncheckedAt(i);
3619 TrackArray->Clear();
3634 Bool_t fRecoPrimVtxSkippingTrks = kTRUE;
3635 Bool_t fRmTrksFromPrimVtx = kFALSE;
3637 AliESDVertex *vertexESD = 0;
3638 AliAODVertex *vertexAOD = 0;
3643 if(!fRecoPrimVtxSkippingTrks && !fRmTrksFromPrimVtx) {
3646 vertexESD =
new AliESDVertex(*
fV1);
3651 Int_t nTrks = trkArray->GetEntriesFast();
3652 AliVertexerTracks *vertexer =
new AliVertexerTracks(event->GetMagneticField());
3654 if(fRecoPrimVtxSkippingTrks) {
3657 if(strstr(
fV1->GetTitle(),
"VertexerTracksWithConstraint")) {
3658 Float_t diamondcovxy[3];
3659 event->GetDiamondCovXY(diamondcovxy);
3660 Double_t pos[3]={
event->GetDiamondX(),
event->GetDiamondY(),0.};
3661 Double_t cov[6]={diamondcovxy[0],diamondcovxy[1],diamondcovxy[2],0.,0.,10.*10.};
3662 AliESDVertex *diamond =
new AliESDVertex(pos,cov,1.,1);
3663 vertexer->SetVtxStart(diamond);
3664 delete diamond; diamond=NULL;
3665 if(strstr(
fV1->GetTitle(),
"VertexerTracksWithConstraintOnlyFitter"))
3666 vertexer->SetOnlyFitter();
3668 Int_t skipped[1000];
3669 Int_t nTrksToSkip=0,id;
3670 AliExternalTrackParam *t = 0;
3671 for(Int_t i=0; i<nTrks; i++) {
3672 t = (AliExternalTrackParam*)trkArray->UncheckedAt(i);
3673 id = (Int_t)t->GetID();
3675 skipped[nTrksToSkip++] = id;
3679 Double_t covtest[21];
3680 for(Int_t j=0; j<
event->GetNumberOfTracks(); j++) {
3681 AliVTrack *vtrack = (AliVTrack*)event->GetTrack(j);
3682 if(!vtrack->GetCovarianceXYZPxPyPz(covtest)) {
3683 id = (Int_t)vtrack->GetID();
3685 skipped[nTrksToSkip++] = id;
3688 for(Int_t ijk=nTrksToSkip; ijk<1000; ijk++) skipped[ijk]=-1;
3690 vertexer->SetSkipTracks(nTrksToSkip,skipped);
3691 vertexESD = (AliESDVertex*)vertexer->FindPrimaryVertex(event);
3693 }
else if(fRmTrksFromPrimVtx && nTrks>0) {
3696 TObjArray rmArray(nTrks);
3697 UShort_t *rmId =
new UShort_t[nTrks];
3698 AliESDtrack *esdTrack = 0;
3700 for(Int_t i=0; i<nTrks; i++) {
3701 t = (AliESDtrack*)trkArray->UncheckedAt(i);
3702 esdTrack =
new AliESDtrack(*t);
3703 rmArray.AddLast(esdTrack);
3704 if(esdTrack->GetID()>=0) {
3705 rmId[i]=(UShort_t)esdTrack->GetID();
3710 Float_t diamondxy[2]={
static_cast<Float_t
>(
event->GetDiamondX()),static_cast<Float_t>(event->GetDiamondY())};
3711 vertexESD = vertexer->RemoveTracksFromVertex(
fV1,&rmArray,rmId,diamondxy);
3712 delete [] rmId; rmId=NULL;
3717 delete vertexer; vertexer=NULL;
3718 if(!vertexESD)
return vertexAOD;
3719 if(vertexESD->GetNContributors()<=0) {
3721 delete vertexESD; vertexESD=NULL;
3729 Double_t pos[3],cov[6],chi2perNDF;
3730 vertexESD->GetXYZ(pos);
3731 vertexESD->GetCovMatrix(cov);
3732 chi2perNDF = vertexESD->GetChi2toNDF();
3733 delete vertexESD; vertexESD=NULL;
3735 vertexAOD =
new AliAODVertex(pos,cov,chi2perNDF);
3747 AliAODVertex *primVertexAOD;
3748 Bool_t unsetvtx = kFALSE;
3752 primVertexAOD =
fVtx1;
3757 primVertexAOD =
fVtx1;
3759 if(!primVertexAOD)
return 0x0;
3761 AliESDVertex * vertexESD =
new AliESDVertex(*
fV1);
3763 Double_t pos[3],cov[6],chi2perNDF;
3764 vertexESD->GetXYZ(pos);
3765 vertexESD->GetCovMatrix(cov);
3766 chi2perNDF = vertexESD->GetChi2toNDF();
3767 delete vertexESD; vertexESD=NULL;
3769 AliAODVertex *secVert =
new AliAODVertex(pos,cov,chi2perNDF);
3779 for(Int_t i=0;i<100;i++){
3780 pdgarray_ele[i] = -9999;
3781 labelarray_ele[i] = -9999;
3782 pdgarray_casc[i] = -9999;
3783 labelarray_casc[i] = -9999;
3788 AliVTrack *trk =
dynamic_cast<AliVTrack*
>(exobj->
GetBachelor());
3790 Int_t labEle = trk->GetLabel();
3791 if(labEle<0)
return -1;
3792 AliAODMCParticle *mcetrk = (AliAODMCParticle*)mcArray->At(labEle);
3793 if(!mcetrk)
return -1;
3794 labelarray_ele[0] = labEle;
3795 pdgarray_ele[0] = mcetrk->GetPdgCode();
3798 AliAODMCParticle *mcprimele=0;
3800 while(mcprimele->GetMother()>=0) {
3801 Int_t labprim_ele=mcprimele->GetMother();
3802 AliAODMCParticle *tmcprimele = (AliAODMCParticle*)mcArray->At(labprim_ele);
3807 mcprimele = tmcprimele;
3808 pdgarray_ele[ngen_ele] = mcprimele->GetPdgCode();
3809 labelarray_ele[ngen_ele] = labprim_ele;
3811 if(ngen_ele==100)
break;
3814 AliAODcascade *theCascade =
dynamic_cast<AliAODcascade*
>(exobj->
GetCascade());
3815 if(!theCascade)
return -1;
3817 Int_t pdgDgcasc[2]={211,3122};
3818 Int_t pdgDgv0[2]={2212,211};
3819 Int_t labcasc =
MatchToMCCascade(theCascade,3312,pdgDgcasc,pdgDgv0,mcArray);
3820 if(labcasc<0)
return -1;
3822 AliAODMCParticle *mccasc = (AliAODMCParticle*)mcArray->At(labcasc);
3823 if(!mccasc)
return -1;
3824 labelarray_casc[0] = labcasc;
3825 pdgarray_casc[0] = mccasc->GetPdgCode();
3828 AliAODMCParticle *mcprimcasc=0;
3829 mcprimcasc = mccasc;
3830 while(mcprimcasc->GetMother()>=0) {
3831 Int_t labprim_casc=mcprimcasc->GetMother();
3832 AliAODMCParticle *tmcprimcasc = (AliAODMCParticle*)mcArray->At(labprim_casc);
3837 mcprimcasc = tmcprimcasc;
3838 pdgarray_casc[ngen_casc] = mcprimcasc->GetPdgCode();
3839 labelarray_casc[ngen_casc] = labprim_casc;
3841 if(ngen_casc==100)
break;
3844 Bool_t same_flag = kFALSE;
3845 Int_t matchedlabel=-9999;
3846 for(Int_t iemc=0;iemc<ngen_ele;iemc++){
3847 for(Int_t ivmc=0;ivmc<ngen_casc;ivmc++){
3848 if(labelarray_ele[iemc]==labelarray_casc[ivmc]){
3850 matchedlabel = labelarray_ele[iemc];
3854 if(same_flag)
break;
3857 return matchedlabel;
3867 AliAODTrack *cptrack = (AliAODTrack*) theCascade->GetDaughter(0);
3868 if(!cptrack)
return -1;
3869 Int_t label_p = TMath::Abs(cptrack->GetLabel());
3870 if(label_p<0)
return -1;
3871 AliAODTrack *cntrack = (AliAODTrack*) theCascade->GetDaughter(1);
3872 if(!cntrack)
return -1;
3873 Int_t label_n = TMath::Abs(cntrack->GetLabel());
3874 if(label_n<0)
return -1;
3875 Int_t labv0 = theCascade->MatchToMC(pdgDgcasc[1],mcArray,2,pdgDgv0);
3876 if(labv0<0)
return -1;
3877 AliAODMCParticle *mcpartv0= (AliAODMCParticle*) mcArray->At(labv0);
3879 AliAODTrack *cbtrack = (AliAODTrack*) theCascade->GetDecayVertexXi()->GetDaughter(0);
3880 if(!cbtrack)
return -1;
3882 Int_t label_b = TMath::Abs(cbtrack->GetLabel());
3883 if(label_b<0)
return -1;
3885 AliAODMCParticle *mcpartb= (AliAODMCParticle*) mcArray->At(label_b);
3886 Int_t pdgb = TMath::Abs(mcpartb->GetPdgCode());
3887 if(pdgb!=pdgDgcasc[0])
return -1;
3889 AliAODMCParticle *mcmotherv0=mcpartv0;
3890 Bool_t isFromXiv0 = kFALSE;
3891 Int_t labxiv0 = mcmotherv0->GetMother();
3892 if(labxiv0<0)
return -1;
3893 mcmotherv0 = (AliAODMCParticle*) mcArray->At(labxiv0);
3895 Int_t
pdg = TMath::Abs(mcmotherv0 ->GetPdgCode());
3896 if(pdg==pdgabscasc){
3900 if(!isFromXiv0)
return -1;
3902 AliAODMCParticle *mcmotherb=mcpartb;
3903 Bool_t isFromXib = kFALSE;
3904 Int_t labxib = mcmotherb->GetMother();
3905 if(labxib<0)
return -1;
3906 mcmotherb = (AliAODMCParticle*) mcArray->At(labxib);
3908 Int_t
pdg = TMath::Abs(mcmotherb ->GetPdgCode());
3909 if(pdg==pdgabscasc){
3913 if(!isFromXib)
return -1;
3915 if(labxiv0!=labxib)
return -1;
3927 if(trkEntries==0)
return;
3930 for(Int_t i=0; i<trkEntries; i++) {
3931 seleFlags[i] = kFALSE;
3934 track = (AliVTrack*)event->GetTrack(i);
3937 Double_t covtest[21];
3938 if(!track->GetCovarianceXYZPxPyPz(covtest))
continue;
3942 AliAODTrack *aodt = (AliAODTrack*)track;
3947 if(!aodt->TestFilterBit(BIT(filterbit)))
continue;
3949 if(!aodt->TestFilterMask(BIT(filterbit)))
continue;
3953 AliAODTrack *aodtpid = 0;
3955 aodtpid =
fGTI[-aodt->GetID()-1];
3960 Double_t nsigma_tpcele = -9999;
3961 Double_t nsigma_tofele = -9999;
3970 if(fabs(nsigma_tofele)<3.){
3972 Double_t eleeta = aodt->Eta();
3973 if(fabs(eleeta)<0.6)
3975 if(fabs(eleeta)>0.6 && fabs(eleeta)<0.8)
3977 if(eleeta>-0.8 && eleeta<-0.6){
3979 }
else if(eleeta>-0.6&&eleeta<-0.4){
3981 }
else if(eleeta>-0.4&&eleeta<-0.2){
3983 }
else if(eleeta>-0.2&&eleeta<0.0){
3985 }
else if(eleeta>0.0&&eleeta<0.2){
3987 }
else if(eleeta>0.2&&eleeta<0.4){
3989 }
else if(eleeta>0.4&&eleeta<0.6){
3991 }
else if(eleeta>0.6&&eleeta<0.8){
3995 if(nsigma_tpcele>-0.5&&nsigma_tpcele<3.){
4005 Double_t minmass_ee = 9999.;
4010 Int_t labEle = aodt->GetLabel();
4012 seleFlags[i]=kFALSE;
4015 AliAODMCParticle *mcetrk = (AliAODMCParticle*)mcArray->At(labEle);
4017 seleFlags[i]=kFALSE;
4020 Int_t pdgEle = mcetrk->GetPdgCode();
4021 if(abs(pdgEle)!=11){
4022 seleFlags[i]=kFALSE;
4026 Int_t pdgarray_ele[100], labelarray_ele[100], ngen_ele;
4029 Bool_t hfe_flag = kFALSE;
4030 Bool_t gamma_flag = kFALSE;
4031 Bool_t pi0_flag = kFALSE;
4032 Bool_t eta_flag = kFALSE;
4033 Double_t pt_pi0 = -9999.;
4034 Double_t pt_eta = -9999.;
4035 if(abs(pdgarray_ele[0])>400&&abs(pdgarray_ele[0])<440){
4038 if(abs(pdgarray_ele[0])>4000&&abs(pdgarray_ele[0])<4400){
4041 if(abs(pdgarray_ele[0])>500&&abs(pdgarray_ele[0])<540){
4044 if(abs(pdgarray_ele[0])>5000&&abs(pdgarray_ele[0])<5400){
4047 if(abs(pdgarray_ele[0])==22){
4053 if((abs(pdgarray_ele[0])==22) && (abs(pdgarray_ele[1])==111)){
4055 AliAODMCParticle *mctrkm = (AliAODMCParticle*)mcArray->At(labelarray_ele[1]);
4056 pt_pi0 = mctrkm->Pt();
4058 if(abs(pdgarray_ele[0])==111){
4060 AliAODMCParticle *mctrkm = (AliAODMCParticle*)mcArray->At(labelarray_ele[0]);
4061 pt_pi0 = mctrkm->Pt();
4063 if((abs(pdgarray_ele[0])==22) && (abs(pdgarray_ele[1])==221)){
4065 AliAODMCParticle *mctrkm = (AliAODMCParticle*)mcArray->At(labelarray_ele[1]);
4066 pt_eta = mctrkm->Pt();
4068 if(abs(pdgarray_ele[0])==221){
4070 AliAODMCParticle *mctrkm = (AliAODMCParticle*)mcArray->At(labelarray_ele[0]);
4071 pt_eta = mctrkm->Pt();
4075 Double_t cont_pi0[3];
4076 cont_pi0[0] = aodt->Pt();
4077 cont_pi0[1] = pt_pi0;
4084 Double_t cont_eta[3];
4085 cont_eta[0] = aodt->Pt();
4086 cont_eta[1] = pt_eta;
4093 seleFlags[i]=kFALSE;
4129 Double_t primVtx[3];
4130 fVtx1->GetXYZ(primVtx);
4133 for(Int_t icasc=0;icasc<nCascs;icasc++)
4135 seleCascFlags[icasc] = kFALSE;
4136 AliAODcascade *casc = ((AliAODEvent*)event)->GetCascade(icasc);
4140 seleCascFlags[icasc] = kTRUE;
4154 if(theBinZ<0 || theBinZ>=
fNzVtxBins)
return -1;
4156 if(theBinM<0 || theBinM>=
fNCentBins)
return -1;
4164 if(poolIndex<0 || poolIndex>=
fNOfPools)
return;
4166 fEventBuffer[poolIndex]=
new TTree(Form(
"EventBuffer_%d",poolIndex),
"Temporary buffer for event mixing");
4191 TObjArray* c1array=0x0;
4192 TObjArray* c2array=0x0;
4193 TObjArray* c1varsarray=0x0;
4194 TObjArray* c2varsarray=0x0;
4195 Float_t zVertex,cent;
4196 TObjString* eventInfo=0x0;
4197 fEventBuffer[poolIndex]->SetBranchAddress(
"zVertex", &zVertex);
4198 fEventBuffer[poolIndex]->SetBranchAddress(
"eventInfo",&eventInfo);
4199 fEventBuffer[poolIndex]->SetBranchAddress(
"centrality", ¢);
4200 fEventBuffer[poolIndex]->SetBranchAddress(
"c1array", &c1array);
4201 fEventBuffer[poolIndex]->SetBranchAddress(
"c2array", &c2array);
4202 fEventBuffer[poolIndex]->SetBranchAddress(
"c1varsarray", &c1varsarray);
4203 fEventBuffer[poolIndex]->SetBranchAddress(
"c2varsarray", &c2varsarray);
4204 for (Int_t i=0; i<nEle; i++)
4211 fEventBuffer[poolIndex]->GetEvent(iEv + nEvents - fNumberOfEventsForMixing);
4213 Int_t nCascs1=c1array->GetEntries();
4224 for(Int_t iTr1=0; iTr1<nCascs1; iTr1++){
4225 TLorentzVector* casc1=(TLorentzVector*) c1array->At(iTr1);
4226 if(!casc1)
continue;
4227 TVector *cascvarsarray = (TVector*) c1varsarray->At(iTr1);
4232 Int_t nCascs2=c2array->GetEntries();
4233 for(Int_t iTr2=0; iTr2<nCascs2; iTr2++){
4234 TLorentzVector* casc2=(TLorentzVector*) c2array->At(iTr2);
4235 if(!casc2)
continue;
4236 TVector *cascvarsarray = (TVector*) c2varsarray->At(iTr2);
4252 Int_t nmcpart = mcArray->GetEntriesFast();
4254 Int_t mcevttype = 0;
4256 Bool_t sigmaevent = kFALSE;
4263 Int_t ncbarquark = 0;
4264 Double_t phi_c = -9999.;
4265 Double_t phi_cbar = -9999.;
4266 for(Int_t i=0;i<nmcpart;i++)
4268 AliAODMCParticle *mcpart = (AliAODMCParticle*) mcArray->At(i);
4269 if(TMath::Abs(mcpart->GetPdgCode())==4){
4270 if(fabs(mcpart->Y())<1.5){
4271 if(mcpart->GetPdgCode()==4){
4272 phi_c = mcpart->Phi();
4275 if(mcpart->GetPdgCode()==-4){
4276 phi_cbar = mcpart->Phi();
4281 }
else if(mcevttype==1){
4283 }
else if(mcevttype==2){
4285 }
else if(mcevttype==3){
4291 if(TMath::Abs(mcpart->GetPdgCode())==5){
4292 if(!mcpart->IsPhysicalPrimary())
continue;
4293 if(fabs(mcpart->Y())<1.5){
4296 }
else if(mcevttype==1){
4298 }
else if(mcevttype==2){
4300 }
else if(mcevttype==3){
4308 if((mcevttype==2)||(mcevttype==0)||(mcevttype==3))
return kFALSE;
4310 if((mcevttype==1)||(mcevttype==0)||(mcevttype==3))
return kFALSE;
4314 if(ncquark!=1)
return kFALSE;
4315 if(ncbarquark!=1)
return kFALSE;
4316 Double_t dphi = fabs(phi_c - phi_cbar);
4317 if(dphi>2*M_PI) dphi -= 2*M_PI;
4318 if(dphi>M_PI) dphi = 2*M_PI-dphi;
4328 for(Int_t i=0;i<nmcpart;i++)
4330 AliAODMCParticle *mcpart = (AliAODMCParticle*) mcArray->At(i);
4331 if(TMath::Abs(mcpart->GetPdgCode())==4132){
4332 Bool_t e_flag = kFALSE;
4333 Bool_t xi_flag = kFALSE;
4334 AliAODMCParticle *mcepart = 0;
4335 AliAODMCParticle *mccascpart = 0;
4336 for(Int_t idau=mcpart->GetFirstDaughter();idau<mcpart->GetLastDaughter()+1;idau++)
4339 AliAODMCParticle *mcdau = (AliAODMCParticle*) mcArray->At(idau);
4340 if(!mcdau)
continue;
4341 if(TMath::Abs(mcdau->GetPdgCode())==11){
4345 if(TMath::Abs(mcdau->GetPdgCode())==3312){
4351 Int_t decaytype = -9999;
4352 if(e_flag && xi_flag) decaytype = 0;
4356 if(!e_flag&&xi_flag)
4358 if(e_flag&&!xi_flag)
4360 if(!e_flag&&!xi_flag)
4365 if(TMath::Abs(mcpart->GetPdgCode())==11 && mcpart->GetStatus()==1){
4368 esdcuts->GetEtaRange(etamin,etamax);
4369 if(fabs(mcpart->Eta())<etamax){
4370 Bool_t gamma_flag = kFALSE;
4371 Int_t labmother = mcpart->GetMother();
4373 AliAODMCParticle *mcmother = (AliAODMCParticle*) mcArray->At(labmother);
4374 Int_t pdgmother = mcmother->GetPdgCode();
4375 if(TMath::Abs(pdgmother)==22) gamma_flag = kTRUE;
4381 if(TMath::Abs(mcpart->GetPdgCode())==3312){
4386 if((fabs(mcpart->Y())<rapmax) && (fabs(mcpart->Eta())<etamax)){
4395 for(Int_t i=0;i<nmcpart;i++)
4397 AliAODMCParticle *mcparte = (AliAODMCParticle*) mcArray->At(i);
4398 if(!mcparte)
continue;
4399 if(TMath::Abs(mcparte->GetPdgCode())!=11)
continue;
4400 if(mcparte->GetStatus()!=1)
continue;
4401 if(mcparte->Pt()<0.4)
continue;
4402 if(fabs(mcparte->Eta())>0.8)
continue;
4403 for(Int_t j=0;j<nmcpart;j++)
4405 AliAODMCParticle *mcpartv = (AliAODMCParticle*) mcArray->At(j);
4406 if(!mcpartv)
continue;
4407 if(TMath::Abs(mcpartv->GetPdgCode())!=3312)
continue;
4408 if(mcpartv->Pt()<0.4)
continue;
4409 if(fabs(mcpartv->Eta())>0.8)
continue;
4410 if(mcpartv->GetNDaughters()!=2)
continue;
4428 const char* nameoutput = GetOutputSlot(11)->GetContainer()->GetName();
4432 TString * fCandidateVariableNames =
new TString[nVar];
4434 fCandidateVariableNames[ 0] =
"InvMassEleXi";
4435 fCandidateVariableNames[ 1] =
"EleXiPx";
4436 fCandidateVariableNames[ 2] =
"EleXiPy";
4437 fCandidateVariableNames[ 3] =
"EleXiPz";
4438 fCandidateVariableNames[ 4] =
"ElePdgCode";
4439 fCandidateVariableNames[ 5] =
"ElePx";
4440 fCandidateVariableNames[ 6] =
"ElePy";
4441 fCandidateVariableNames[ 7] =
"ElePz";
4442 fCandidateVariableNames[ 8] =
"XiPdgCode";
4443 fCandidateVariableNames[ 9] =
"XiPx";
4444 fCandidateVariableNames[10] =
"XiPy";
4445 fCandidateVariableNames[11] =
"XiPz";
4446 fCandidateVariableNames[12] =
"SameFlag";
4447 fCandidateVariableNames[13] =
"EleNGeneration";
4448 fCandidateVariableNames[14] =
"EleGen1PDG";
4449 fCandidateVariableNames[15] =
"EleGen2PDG";
4450 fCandidateVariableNames[16] =
"EleGen3PDG";
4451 fCandidateVariableNames[17] =
"EleGen4PDG";
4452 fCandidateVariableNames[18] =
"EleGen5PDG";
4453 fCandidateVariableNames[19] =
"EleGen6PDG";
4454 fCandidateVariableNames[20] =
"EleGen7PDG";
4455 fCandidateVariableNames[21] =
"EleGen8PDG";
4456 fCandidateVariableNames[22] =
"EleGen9PDG";
4457 fCandidateVariableNames[23] =
"EleGen10PDG";
4458 fCandidateVariableNames[24] =
"ElePrimPDG";
4459 fCandidateVariableNames[25] =
"XiNGeneration";
4460 fCandidateVariableNames[26] =
"XiGen1PDG";
4461 fCandidateVariableNames[27] =
"XiGen2PDG";
4462 fCandidateVariableNames[28] =
"XiGen3PDG";
4463 fCandidateVariableNames[29] =
"XiGen4PDG";
4464 fCandidateVariableNames[30] =
"XiGen5PDG";
4465 fCandidateVariableNames[31] =
"XiGen6PDG";
4466 fCandidateVariableNames[32] =
"XiGen7PDG";
4467 fCandidateVariableNames[33] =
"XiGen8PDG";
4468 fCandidateVariableNames[34] =
"XiGen9PDG";
4469 fCandidateVariableNames[35] =
"XiGen10PDG";
4470 fCandidateVariableNames[36] =
"XiPrimPDG";
4471 fCandidateVariableNames[37] =
"MatchedPDG";
4473 for (Int_t ivar=0; ivar<nVar; ivar++) {
4485 for(Int_t i=0;i<38;i++){
4489 TLorentzVector vele, vxi, vexi;
4490 vele.SetXYZM(mcparte->Px(),mcparte->Py(),mcparte->Pz(),0.000510998928);
4491 vxi.SetXYZM(mcpartv->Px(),mcpartv->Py(),mcpartv->Pz(),1.32171);
4494 Int_t pdgarray_ele[100], labelarray_ele[100], ngen_ele;
4495 Int_t pdgarray_xi[100], labelarray_xi[100], ngen_xi;
4499 Bool_t same_flag = kFALSE;
4500 Int_t matched_pdg = -999999;
4501 for(Int_t iemc=0;iemc<ngen_ele;iemc++){
4502 for(Int_t ivmc=0;ivmc<ngen_xi;ivmc++){
4503 if(labelarray_ele[iemc]==labelarray_xi[ivmc]){
4505 matched_pdg = pdgarray_ele[iemc];
4509 if(same_flag)
break;
4511 Int_t pdgprim_ele = pdgarray_ele[ngen_ele-1];
4512 Int_t pdgprim_xi = pdgarray_xi[ngen_xi-1];
4563 const char* nameoutput = GetOutputSlot(12)->GetContainer()->GetName();
4567 TString * fCandidateVariableNames =
new TString[nVar];
4569 fCandidateVariableNames[0] =
"XiPt";
4570 fCandidateVariableNames[1] =
"ElePt";
4571 fCandidateVariableNames[2] =
"DeltaPhi";
4572 fCandidateVariableNames[3] =
"DeltaEta";
4573 fCandidateVariableNames[4] =
"V0ProperDecayLength";
4574 fCandidateVariableNames[5] =
"Eled0";
4575 fCandidateVariableNames[6] =
"FGMixMC";
4576 fCandidateVariableNames[7] =
"SignType";
4577 fCandidateVariableNames[8] =
"Convtype";
4578 fCandidateVariableNames[9] =
"MCType";
4579 fCandidateVariableNames[10] =
"Centrality";
4582 for (Int_t ivar=0; ivar<nVar; ivar++) {
4595 for(Int_t i=0;i<100;i++){
4596 pdgarray[i] = -9999;
4597 labelarray[i] = -9999;
4601 AliAODMCParticle *mcprim = mcpart;
4602 while(mcprim->GetMother()>=0) {
4603 Int_t lab_prim=mcprim->GetMother();
4605 AliAODMCParticle *tmcprim = (AliAODMCParticle*)mcArray->At(lab_prim);
4609 if((TMath::Abs(tmcprim->GetPdgCode())<10) || (TMath::Abs(tmcprim->GetPdgCode())==21))
break;
4613 pdgarray[ngen] = mcprim->GetPdgCode();
4614 labelarray[ngen] = lab_prim;
4617 if(ngen == 100)
break;
4628 if(track->GetID()<0){
4635 printf(
"Warning: track ID too big for buffer: ID: %d, buffer %d\n"
4641 if(
fGTI[track->GetID()]){
4644 if( (!track->GetFilterMap()) &&
4645 (!track->GetTPCNcls()) )
4653 if(
fGTI[track->GetID()]->GetFilterMap() ||
4654 fGTI[track->GetID()]->GetTPCNcls() ){
4656 printf(
"Warning! global track info already there!");
4657 printf(
" TPCNcls track1 %u track2 %u",
4658 (
fGTI[track->GetID()])->GetTPCNcls(),track->GetTPCNcls());
4659 printf(
" FilterMap track1 %u track2 %u\n",
4660 (
fGTI[track->GetID()])->GetFilterMap(),track->GetFilterMap());
4672 (
fGTI[track->GetID()]) = track;
4673 (
fGTIndex[track->GetID()]) = index;
4689 if(abs(history[1])==411)
return 1;
4690 if(abs(history[1])==421)
return 1;
4691 if(abs(history[1])==431)
return 1;
4692 if(abs(history[1])==4122)
return 1;
4693 if(abs(history[1])==4132)
return 1;
4694 if(abs(history[1])==4232)
return 1;
4695 if(abs(history[1])==4332)
return 1;
4697 if(abs(history[1])==511)
return 2;
4698 if(abs(history[1])==521)
return 2;
4699 if(abs(history[1])==531)
return 2;
4700 if(abs(history[1])==5122)
return 2;
4701 if(abs(history[1])==5132)
return 2;
4702 if(abs(history[1])==5232)
return 2;
4703 if(abs(history[1])==5332)
return 2;
4712 for(Int_t ih=0;ih<10;ih++){
4713 if(abs(history[ih])==411)
return kTRUE;
4714 if(abs(history[ih])==421)
return kTRUE;
4715 if(abs(history[ih])==431)
return kTRUE;
4716 if(abs(history[ih])==4122)
return kTRUE;
4717 if(abs(history[ih])==4132)
return kTRUE;
4718 if(abs(history[ih])==4232)
return kTRUE;
4719 if(abs(history[ih])==4332)
return kTRUE;
4728 for(Int_t ih=0;ih<10;ih++){
4729 if(abs(history[ih])==511)
return kTRUE;
4730 if(abs(history[ih])==521)
return kTRUE;
4731 if(abs(history[ih])==531)
return kTRUE;
4732 if(abs(history[ih])==5122)
return kTRUE;
4733 if(abs(history[ih])==5132)
return kTRUE;
4734 if(abs(history[ih])==5232)
return kTRUE;
4735 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)
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.
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
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 * 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)
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)
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)
Int_t fEvNumberCounter
Stores trigger information.
THnSparse * fHistoEleXiMassPromptMCS2
! e-Xi mass spectra (Efficiency numerator)
TH1F * fHistoMassConversionsMin
! electron-any mass
THnSparse * fHistoElePtvsd0WSMix
! e pt-d0 spectra (wrong-sign, mix)
TH2F * fHistoElectronTPCPIDSelTOF
! TPC electron PID after TOF 3 sigma cut
AliESDVertex * fV1
primary vertex
AliPIDResponse * GetPidResponse() const
TH2F * fHistoElectronTOFPID
! TOF electron PID
TObjArray * fCascadeCutVarsArray1
array of RDHF cut information
virtual void Terminate(Option_t *option)
void SetPrimaryVertex(Double_t *a)
THnSparse * fHistoEleXiMassvsElePtWSSide2
! e-Xi mass-ept spectra (wrong-sign)
TH2D * fHistoResponseXiPt
! Response function Lambda pT <- True ept
THnSparse * fHistoXicMCS2
! electron in mcArray
AliNormalizationCounter * fCounter
! Counter for normalization
Int_t FromSemileptonicDecays(Int_t *history)
Int_t fNzVtxBins
maximum number of events to be used in event mixing
THnSparse * fHistoEleXiMassWSAway
! e-Xi mass spectra (wrong-sign)
TObjArray * fCascadeTracks1
array of e-compatible tracks
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
THnSparse * fHistoEleXiMassRSSide
! e-Xi mass spectra (right-sign)
Bool_t IsEventRejectedDuePhysicsSelection() const
THnSparse * fHistoElectronEtaTag
! Number of electrons from eta and have partner
void SetOwnPrimaryVtx(const AliAODVertex *vtx)
AliAODcascade * GetCascade() const
Int_t fNumberOfEventsForMixing
flag for mixing
THnSparse * fHistoEleXiMassXibMCS
! e-Xi mass spectra (Efficiency numerator)
Int_t fMCEventType
EvNumber counter.
TH2F * fHistoElePtMCGen
! e spectra (Efficiency denominator)
THnSparse * fHistoEleXiMassvsElePtMCGen2
! e-Xi mass-ept spectra (Efficiency denominator)
THnSparse * fHistoElePtvsd0RSMix
! e pt-d0 spectra (right-sign, mix)
virtual ~AliAnalysisTaskSEXic2eleXifromAODtracks()
AliRDHFCutsXictoeleXifromAODtracks * fAnalCuts
THnSparse * fHistoEleXiMassRS2
! e-Xi mass spectra (right-sign)
void FillCascROOTObjects(AliAODcascade *casc, TClonesArray *mcArray)
Bool_t fIsSemi
MB trigger event.
Bool_t IsEventSelected(AliVEvent *event)
TTree ** fEventBuffer
number of pools
THnSparse * fHistoEleXiMassWSMix1
! e-Xi mass spectra (wrong-sign)
THnSparse * fHistoElePtvsXiPtWS
! e-Xi spectra (wrong-sign)
void StoreEvent(AliVEvent *, AliRDHFCuts *, Bool_t mc=kFALSE, Int_t multiplicity=-9999, Double_t spherocity=-99.)
AliAODVertex * ReconstructSecondaryVertex(AliAODcascade *casc, AliAODTrack *trk, AliAODEvent *aod)
void DefineTreeVariables()
TH2F * fHistoXiMassvsPtMCS
! Xi mass vs pt histogram
THnSparse * fHistoEleXiMassBFeeddownMCS2
! e-Xi mass spectra (Efficiency numerator)
TH2D * fHistodPhiSdEtaSElectronPionR125WS
! dPhiS vs dEtaS R125 WS
AliAODVertex * CallPrimaryVertex(AliAODcascade *casc, AliAODTrack *trk, AliAODEvent *evt)
THnSparse * fHistoEleXiMassvsElePtWS1
! e-Xi mass spectra (wrong-sign)
TH2F * fHistoElectronTPCPID
! TPC electron PID
TH1F * fHistod0Bach
! Bachelor d0 histogram
void DefineMCCascTreeVariables()
TH2F * fHistoElectronTPCPIDSelTOFLargeEta
! TPC electron PID after TOF 3 sigma cut (0.8>|eta|>0.6)
THnSparse * fHistoElectronPi0Tag
! Number of electrons from pi0 and have partner
Bool_t fReconstructPrimVert