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),
272 fHistoLambdaPtvsDl(0),
273 fHistoLambdaPtvsDlSide(0),
274 fHistoLambdaPtvsDlMCS(0),
275 fHistoLambdaPtvsDR(0),
276 fHistoLambdaPtvsDRSide(0),
277 fHistoLambdaPtvsDRMCS(0),
278 fHistoEleXiPtvsRapidityRS(0),
279 fHistoEleXiPtvsRapidityWS(0),
280 fHistoEleXiPtvsRapidityMCS(0),
281 fHistoResponseElePt(0),
282 fHistoResponseXiPt(0),
283 fHistoResponseEleXiPt(0),
284 fHistoElectronPi0Total(0),
285 fHistoElectronPi0Tag(0),
286 fHistoElectronEtaTotal(0),
287 fHistoElectronEtaTag(0),
289 fHistonEvtvsRunNumber(0),
290 fHistonElevsRunNumber(0),
291 fHistonXivsRunNumber(0),
292 fHistoMCEventType(0),
293 fHistoMCXic0Decays(0),
294 fHistoMCDeltaPhiccbar(0),
296 fGTI(0),fGTIndex(0), fTrackBuffSize(19000),
297 fHistodPhiSdEtaSElectronProtonR125RS(0),
298 fHistodPhiSdEtaSElectronProtonR125WS(0),
299 fHistodPhiSdEtaSElectronProtonR125RSMix(0),
300 fHistodPhiSdEtaSElectronProtonR125WSMix(0),
301 fHistodPhiSdEtaSElectronPionR125RS(0),
302 fHistodPhiSdEtaSElectronPionR125WS(0),
303 fHistodPhiSdEtaSElectronPionR125RSMix(0),
304 fHistodPhiSdEtaSElectronPionR125WSMix(0),
305 fHistodPhiSdEtaSElectronBachelorR125RS(0),
306 fHistodPhiSdEtaSElectronBachelorR125WS(0),
307 fHistodPhiSdEtaSElectronBachelorR125RSMix(0),
308 fHistodPhiSdEtaSElectronBachelorR125WSMix(0),
310 fMixWithoutConversionFlag(kTRUE),
311 fNumberOfEventsForMixing (5),
317 fElectronTracks(0x0),
318 fCascadeTracks1(0x0),
319 fCascadeTracks2(0x0),
320 fElectronCutVarsArray(0x0),
321 fCascadeCutVarsArray1(0x0),
322 fCascadeCutVarsArray2(0x0)
327 for(Int_t i=0;i<23;i++){
332 for(Int_t i=0;i<8;i++){
340 Bool_t writeVariableTree) :
341 AliAnalysisTaskSE(name),
350 fIsEventSelected(kFALSE),
351 fWriteVariableTree(writeVariableTree),
352 fWriteEachVariableTree(kFALSE),
353 fWriteMCVariableTree(kFALSE),
355 fEleVariablesTree(0),
356 fCascVariablesTree(0),
358 fMCEleVariablesTree(0),
359 fMCCascVariablesTree(0),
360 fMCGenPairVariablesTree(0),
361 fCorrelationVariablesTree(0),
362 fReconstructPrimVert(kFALSE),
368 fCandidateVariables(),
369 fCandidateEleVariables(),
370 fCandidateCascVariables(),
371 fCandidateMCVariables(),
372 fCandidateMCEleVariables(),
373 fCandidateMCCascVariables(),
374 fCandidateMCGenPairVariables(),
375 fCorrelationVariables(),
383 fUseCentralityV0M(kFALSE),
386 fMCDoPairAnalysis(kFALSE),
388 fHistoEleXiMassRS(0),
389 fHistoEleXiMassWS(0),
390 fHistoEleXiMassRSMix(0),
391 fHistoEleXiMassWSMix(0),
392 fHistoEleXiMassRSSide(0),
393 fHistoEleXiMassWSSide(0),
394 fHistoEleXiMassRS1(0),
395 fHistoEleXiMassWS1(0),
396 fHistoEleXiMassRSMix1(0),
397 fHistoEleXiMassWSMix1(0),
398 fHistoEleXiMassRSSide1(0),
399 fHistoEleXiMassWSSide1(0),
400 fHistoEleXiMassRS2(0),
401 fHistoEleXiMassWS2(0),
402 fHistoEleXiMassRSMix2(0),
403 fHistoEleXiMassWSMix2(0),
404 fHistoEleXiMassRSSide2(0),
405 fHistoEleXiMassWSSide2(0),
406 fHistoEleXiMassAway(0),
407 fHistoEleXiMassRSAway(0),
408 fHistoEleXiMassWSAway(0),
409 fHistoEleXiMassRSMixAway(0),
410 fHistoEleXiMassWSMixAway(0),
411 fHistoEleXiMassRSSideAway(0),
412 fHistoEleXiMassWSSideAway(0),
413 fHistoEleXiMassRS1Away(0),
414 fHistoEleXiMassWS1Away(0),
415 fHistoEleXiMassRSMix1Away(0),
416 fHistoEleXiMassWSMix1Away(0),
417 fHistoEleXiMassRSSide1Away(0),
418 fHistoEleXiMassWSSide1Away(0),
419 fHistoEleXiMassRS2Away(0),
420 fHistoEleXiMassWS2Away(0),
421 fHistoEleXiMassRSMix2Away(0),
422 fHistoEleXiMassWSMix2Away(0),
423 fHistoEleXiMassRSSide2Away(0),
424 fHistoEleXiMassWSSide2Away(0),
425 fHistoEleXiMassvsElePtRS(0),
426 fHistoEleXiMassvsElePtWS(0),
427 fHistoEleXiMassvsElePtRSMix(0),
428 fHistoEleXiMassvsElePtWSMix(0),
429 fHistoEleXiMassvsElePtRSSide(0),
430 fHistoEleXiMassvsElePtWSSide(0),
431 fHistoEleXiMassvsElePtRS1(0),
432 fHistoEleXiMassvsElePtWS1(0),
433 fHistoEleXiMassvsElePtRSMix1(0),
434 fHistoEleXiMassvsElePtWSMix1(0),
435 fHistoEleXiMassvsElePtRSSide1(0),
436 fHistoEleXiMassvsElePtWSSide1(0),
437 fHistoEleXiMassvsElePtRS2(0),
438 fHistoEleXiMassvsElePtWS2(0),
439 fHistoEleXiMassvsElePtRSMix2(0),
440 fHistoEleXiMassvsElePtWSMix2(0),
441 fHistoEleXiMassvsElePtRSSide2(0),
442 fHistoEleXiMassvsElePtWSSide2(0),
447 fHistoEleXiMassMCS(0),
448 fHistoEleXiMassMCS1(0),
449 fHistoEleXiMassMCS2(0),
450 fHistoEleXiMassXibMCS(0),
451 fHistoEleXiMassXibMCS1(0),
452 fHistoEleXiMassXibMCS2(0),
453 fHistoEleXiMassPromptMCS(0),
454 fHistoEleXiMassPromptMCS1(0),
455 fHistoEleXiMassPromptMCS2(0),
456 fHistoEleXiMassBFeeddownMCS(0),
457 fHistoEleXiMassBFeeddownMCS1(0),
458 fHistoEleXiMassBFeeddownMCS2(0),
459 fHistoEleXiMassMCGen(0),
460 fHistoEleXiMassvsElePtMCS(0),
461 fHistoEleXiMassvsElePtMCGen(0),
462 fHistoEleXiMassvsElePtMCS1(0),
463 fHistoEleXiMassvsElePtMCGen1(0),
464 fHistoEleXiMassvsElePtMCS2(0),
465 fHistoEleXiMassvsElePtMCGen2(0),
468 fHistoElePtvsEtaRS(0),
469 fHistoElePtvsEtaWS(0),
470 fHistoElePtvsEtaRSMix(0),
471 fHistoElePtvsEtaWSMix(0),
472 fHistoElePtvsEtaMCS(0),
473 fHistoElePtvsEtaMCGen(0),
474 fHistoElePtvsXiPtRS(0),
475 fHistoElePtvsXiPtWS(0),
476 fHistoElePtvsXiPtRSMix(0),
477 fHistoElePtvsXiPtWSMix(0),
478 fHistoElePtvsXiPtMCS(0),
479 fHistoElePtvsXiPtvsXicPtMCS(0),
480 fHistoElePtvsXiPtMCGen(0),
481 fHistoElePtvsXiPtvsXicPtMCGen(0),
482 fHistoElePtvsXiPtMCXicGen(0),
483 fHistoElePtvsd0RS(0),
484 fHistoElePtvsd0WS(0),
485 fHistoElePtvsd0RSMix(0),
486 fHistoElePtvsd0WSMix(0),
487 fHistoElePtvsd0MCS(0),
488 fHistoElePtvsd0PromptMCS(0),
489 fHistoElePtvsd0BFeeddownMCS(0),
492 fHistoBachPtMCGen(0),
495 fHistoXiMassvsPtMCS(0),
496 fHistoXiMassvsPtMCGen(0),
497 fHistoOmegaMassvsPt(0),
498 fHistoElectronTPCPID(0),
499 fHistoElectronTOFPID(0),
500 fHistoElectronTPCSelPID(0),
501 fHistoElectronTOFSelPID(0),
502 fHistoElectronTPCPIDSelTOF(0),
503 fHistoElectronTOFPIDSelTPC(0),
504 fHistoElectronTPCPIDSelTOFSmallEta(0),
505 fHistoElectronTPCPIDSelTOFLargeEta(0),
506 fHistoMassConversionsMin(0),
507 fHistoMassConversionsSameSignMin(0),
508 fHistoElectronQovPtvsPhi(0),
509 fHistoXiQovPtvsPhi(0),
516 fHistoXicElectronMCGen(0),
517 fHistoXicElectronMCGen1(0),
518 fHistoXicElectronMCGen2(0),
519 fHistoXicElectronMCS(0),
520 fHistoXicElectronMCS1(0),
521 fHistoXicElectronMCS2(0),
522 fHistoElectronMCGen(0),
524 fHistoLambdaPtvsDl(0),
525 fHistoLambdaPtvsDlSide(0),
526 fHistoLambdaPtvsDlMCS(0),
527 fHistoLambdaPtvsDR(0),
528 fHistoLambdaPtvsDRSide(0),
529 fHistoLambdaPtvsDRMCS(0),
530 fHistoEleXiPtvsRapidityRS(0),
531 fHistoEleXiPtvsRapidityWS(0),
532 fHistoEleXiPtvsRapidityMCS(0),
533 fHistoResponseElePt(0),
534 fHistoResponseXiPt(0),
535 fHistoResponseEleXiPt(0),
536 fHistoElectronPi0Total(0),
537 fHistoElectronPi0Tag(0),
538 fHistoElectronEtaTotal(0),
539 fHistoElectronEtaTag(0),
541 fHistonEvtvsRunNumber(0),
542 fHistonElevsRunNumber(0),
543 fHistonXivsRunNumber(0),
544 fHistoMCEventType(0),
545 fHistoMCXic0Decays(0),
546 fHistoMCDeltaPhiccbar(0),
548 fGTI(0),fGTIndex(0), fTrackBuffSize(19000),
549 fHistodPhiSdEtaSElectronProtonR125RS(0),
550 fHistodPhiSdEtaSElectronProtonR125WS(0),
551 fHistodPhiSdEtaSElectronProtonR125RSMix(0),
552 fHistodPhiSdEtaSElectronProtonR125WSMix(0),
553 fHistodPhiSdEtaSElectronPionR125RS(0),
554 fHistodPhiSdEtaSElectronPionR125WS(0),
555 fHistodPhiSdEtaSElectronPionR125RSMix(0),
556 fHistodPhiSdEtaSElectronPionR125WSMix(0),
557 fHistodPhiSdEtaSElectronBachelorR125RS(0),
558 fHistodPhiSdEtaSElectronBachelorR125WS(0),
559 fHistodPhiSdEtaSElectronBachelorR125RSMix(0),
560 fHistodPhiSdEtaSElectronBachelorR125WSMix(0),
562 fMixWithoutConversionFlag(kTRUE),
563 fNumberOfEventsForMixing (5),
569 fElectronTracks(0x0),
570 fCascadeTracks1(0x0),
571 fCascadeTracks2(0x0),
572 fElectronCutVarsArray(0x0),
573 fCascadeCutVarsArray1(0x0),
574 fCascadeCutVarsArray2(0x0)
579 Info(
"AliAnalysisTaskSEXic2eleXifromAODtracks",
"Calling Constructor");
581 for(Int_t i=0;i<23;i++){
586 for(Int_t i=0;i<8;i++){
590 DefineOutput(1,TList::Class());
591 DefineOutput(2,TList::Class());
592 DefineOutput(3,TList::Class());
593 DefineOutput(4,TTree::Class());
594 DefineOutput(5,TTree::Class());
595 DefineOutput(6,TTree::Class());
596 DefineOutput(7,TTree::Class());
597 DefineOutput(8,AliNormalizationCounter::Class());
598 DefineOutput(9,TTree::Class());
599 DefineOutput(10,TTree::Class());
600 DefineOutput(11,TTree::Class());
601 DefineOutput(12,TTree::Class());
609 Info(
"~AliAnalysisTaskSEXic2eleXifromAODtracks",
"Calling Destructor");
705 if (fDebug > 1) AliInfo(
"Init");
724 AliError(
"NO EVENT FOUND!");
727 AliAODEvent* aodEvent =
dynamic_cast<AliAODEvent*
>(fInputEvent);
735 fBzkG = (Double_t)aodEvent->GetMagneticField();
736 AliKFParticle::SetField(
fBzkG);
737 if (TMath::Abs(
fBzkG)<0.001) {
748 TClonesArray *mcArray = 0;
749 AliAODMCHeader *mcHeader=0;
752 mcArray =
dynamic_cast<TClonesArray*
>(aodEvent->FindListObject(AliAODMCParticle::StdBranchName()));
754 AliError(
"Could not find Monte-Carlo in AOD");
760 mcHeader = (AliAODMCHeader*)aodEvent->GetList()->FindObject(AliAODMCHeader::StdBranchName());
762 AliError(
"AliAnalysisTaskSEXic2eleXifromAODtracks::UserExec: MC header branch not found!\n");
767 Double_t zMCVertex = mcHeader->GetVtxZ();
769 AliDebug(2,Form(
"Event rejected: abs(zVtxMC)=%f > fAnalCuts->GetMaxVtxZ()=%f",zMCVertex,
fAnalCuts->
GetMaxVtxZ()));
783 fVtx1 = (AliAODVertex*)aodEvent->GetPrimaryVertex();
786 Double_t pos[3],cov[6];
788 fVtx1->GetCovarianceMatrix(cov);
789 fV1 =
new AliESDVertex(pos,cov,100.,100,
fVtx1->GetName());
802 fIsMB=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kMB)==(AliVEvent::kMB);
803 fIsSemi=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kSemiCentral)==(AliVEvent::kSemiCentral);
804 fIsCent=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kCentral)==(AliVEvent::kCentral);
805 fIsINT7=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kINT7)==(AliVEvent::kINT7);
806 fIsEMC7=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kEMC7)==(AliVEvent::kEMC7);
820 AliCentrality *cent = aodEvent->GetCentrality();
821 fCentrality = cent->GetCentralityPercentile(
"V0M");
825 if(fCentrality<0.||fCentrality>100.-0.0000001) {
832 Int_t runnumber_offset = 0;
833 Int_t runnumber = aodEvent->GetRunNumber();
834 if(runnumber<=131000&&runnumber>=114000){
835 runnumber_offset = 114000;
836 }
else if(runnumber<=196000&&runnumber>=195000){
837 runnumber_offset = 195000;
838 }
else if(runnumber<=170593&&runnumber>=167902){
839 runnumber_offset = 167902;
884 AliAnalysisTaskSE::Terminate();
886 fOutput =
dynamic_cast<TList*
> (GetOutputData(1));
888 AliError(
"fOutput not available");
892 fOutputAll =
dynamic_cast<TList*
> (GetOutputData(3));
894 AliError(
"fOutputAll not available");
950 TString normName=
"NormalizationCounter";
951 AliAnalysisDataContainer *cont = GetOutputSlot(8)->GetContainer();
952 if(cont)normName=(TString)cont->GetName();
974 fEventBuffer[i]=
new TTree(Form(
"EventBuffer_%d",i),
"Temporary buffer for event mixing");
994 AliAODEvent *aodEvent, TClonesArray *mcArray
1003 if(fDoEventMixing && fElectronTracks) fElectronTracks->Delete();
1004 if(fDoEventMixing && fCascadeTracks1) fCascadeTracks1->Delete();
1005 if(fDoEventMixing && fCascadeTracks2) fCascadeTracks2->Delete();
1006 if(fDoEventMixing && fCascadeCutVarsArray1) fCascadeCutVarsArray1->Delete();
1007 if(fDoEventMixing && fCascadeCutVarsArray2) fCascadeCutVarsArray2->Delete();
1009 ResetGlobalTrackReference();
1011 for (Int_t iTrack=0;iTrack<aodEvent->GetNumberOfTracks();iTrack++){
1013 AliAODTrack *track =
dynamic_cast<AliAODTrack *
>(aodEvent->GetTrack(iTrack));
1014 if (!track)
continue;
1017 StoreGlobalTrackReference(track,iTrack);
1021 Int_t nCascs= aodEvent->GetNumberOfCascades();
1022 Int_t nTracks= aodEvent->GetNumberOfTracks();
1024 Bool_t seleTrkFlags[nTracks];
1026 SelectTrack(aodEvent,nTracks,nSeleTrks,seleTrkFlags,mcArray);
1028 Bool_t seleCascFlags[nCascs];
1030 SelectCascade(aodEvent,nCascs,nSeleCasc,seleCascFlags,mcArray);
1032 Int_t runnumber_offset = 0;
1033 Int_t runnumber = aodEvent->GetRunNumber();
1034 if(runnumber<=131000&&runnumber>=114000){
1035 runnumber_offset = 114000;
1036 }
else if(runnumber<=196000&&runnumber>=195000){
1037 runnumber_offset = 195000;
1038 }
else if(runnumber<=170593&&runnumber>=167902){
1039 runnumber_offset = 167902;
1041 fHistonElevsRunNumber->Fill(runnumber-runnumber_offset,nSeleTrks);
1042 fHistonXivsRunNumber->Fill(runnumber-runnumber_offset,nSeleCasc);
1047 for (Int_t icasc = 0; icasc<nCascs; icasc++) {
1048 if(!seleCascFlags[icasc])
continue;
1049 AliAODcascade *casc = aodEvent->GetCascade(icasc);
1052 AliAODTrack *cptrack = (AliAODTrack*)(casc->GetDaughter(0));
1053 AliAODTrack *cntrack = (AliAODTrack*)(casc->GetDaughter(1));
1054 AliAODTrack *cbtrack = (AliAODTrack*)(casc->GetDecayVertexXi()->GetDaughter(0));
1059 for (Int_t itrk = 0; itrk<nTracks; itrk++) {
1060 if(!seleTrkFlags[itrk])
continue;
1061 AliAODTrack *trk = (AliAODTrack*)aodEvent->GetTrack(itrk);
1069 AliAODTrack *trkpid = 0;
1070 if(fAnalCuts->GetProdAODFilterBit()==7){
1071 trkpid = fGTI[-trk->GetID()-1];
1076 Int_t cpid = cptrack->GetID();
1077 Int_t cnid = cntrack->GetID();
1078 Int_t cbid = cbtrack->GetID();
1079 Int_t lpid = trkpid->GetID();
1080 if((cpid==lpid)||(cnid==lpid)||(cbid==lpid))
continue;
1082 AliAODVertex *secVert = ReconstructSecondaryVertex(casc,trk,aodEvent);
1083 if(!secVert)
continue;
1090 FillROOTObjects(exobj, casc,trk,trkpid,aodEvent,mcArray);
1092 exobj->GetSecondaryVtx()->RemoveDaughters();
1094 delete exobj;exobj=NULL;
1100 fEventInfo->SetString(Form(
"Ev%d_esd%d_E%d_C%d",AliAnalysisManager::GetAnalysisManager()->GetNcalls(),((AliAODHeader*)aodEvent->GetHeader())->GetEventNumberESDFile(),fElectronTracks->GetEntries(),fCascadeTracks1->GetEntries()+fCascadeTracks2->GetEntries()));
1101 Int_t ind=GetPoolIndex(fVtxZ,fCentrality);
1102 if(ind>=0 && ind<fNOfPools){
1103 if(fEventBuffer[ind]->GetEntries() >= fNumberOfEventsForMixing){
1104 DoEventMixingWithPools(ind);
1105 if(fEventBuffer[ind]->GetEntries() >= 20*fNumberOfEventsForMixing){
1109 fEventBuffer[ind]->Fill();
1122 const char* nameoutput = GetOutputSlot(4)->GetContainer()->GetName();
1123 fVariablesTree =
new TTree(nameoutput,
"Candidates variables tree");
1126 TString * fCandidateVariableNames =
new TString[nVar];
1128 fCandidateVariableNames[ 0]=
"Centrality";
1129 fCandidateVariableNames[ 1]=
"InvMassEleXi";
1130 fCandidateVariableNames[ 2]=
"EleXiPt";
1131 fCandidateVariableNames[ 3]=
"EleXiPx";
1132 fCandidateVariableNames[ 4]=
"EleXiPy";
1133 fCandidateVariableNames[ 5]=
"EleXiPz";
1134 fCandidateVariableNames[ 6]=
"ElePx";
1135 fCandidateVariableNames[ 7]=
"ElePy";
1136 fCandidateVariableNames[ 8]=
"ElePz";
1137 fCandidateVariableNames[ 9]=
"XiPx";
1138 fCandidateVariableNames[10]=
"XiPy";
1139 fCandidateVariableNames[11]=
"XiPz";
1140 fCandidateVariableNames[12]=
"XiCharge";
1141 fCandidateVariableNames[13]=
"MassXi";
1142 fCandidateVariableNames[14]=
"MassLambda";
1143 fCandidateVariableNames[15]=
"Eled0";
1144 fCandidateVariableNames[16]=
"Xid0";
1145 fCandidateVariableNames[17]=
"nSigmaTPCele";
1146 fCandidateVariableNames[18]=
"nSigmaTOFele";
1147 fCandidateVariableNames[19]=
"nSigmaTPCpr_etrk";
1148 fCandidateVariableNames[20]=
"nSigmaTOFpr_etrk";
1149 fCandidateVariableNames[21]=
"nSigmaTPCka_etrk";
1150 fCandidateVariableNames[22]=
"nSigmaTOFka_etrk";
1151 fCandidateVariableNames[23]=
"nSigmaTPCv0pr";
1152 fCandidateVariableNames[24]=
"nSigmaTOFv0pr";
1153 fCandidateVariableNames[25]=
"nSigmaTPCv0pi";
1154 fCandidateVariableNames[26]=
"nSigmaTOFv0pi";
1155 fCandidateVariableNames[27]=
"nSigmaTPCbachpi";
1156 fCandidateVariableNames[28]=
"nSigmaTOFbachpi";
1157 fCandidateVariableNames[29]=
"EleCharge";
1158 fCandidateVariableNames[30]=
"Mixing";
1159 fCandidateVariableNames[31]=
"DcaXiDaughters";
1160 fCandidateVariableNames[32]=
"DcaV0Daughters";
1161 fCandidateVariableNames[33]=
"DecayLengthXi";
1162 fCandidateVariableNames[34]=
"CosPointingAngleXi";
1163 fCandidateVariableNames[35]=
"DcaV0toPrimVertex";
1164 fCandidateVariableNames[36]=
"DcaPostoPrimVertex";
1165 fCandidateVariableNames[37]=
"DcaNegtoPrimVertex";
1166 fCandidateVariableNames[38]=
"DcaBachtoPrimVertex";
1167 fCandidateVariableNames[39]=
"DecayLengthV0";
1168 fCandidateVariableNames[40]=
"CosPointingAngleV0";
1170 fCandidateVariableNames[41]=
"mcpdgxic";
1171 fCandidateVariableNames[42]=
"mclabxic";
1172 fCandidateVariableNames[43]=
"mcxicpx";
1173 fCandidateVariableNames[44]=
"mcxicpy";
1174 fCandidateVariableNames[45]=
"mcxicpz";
1175 fCandidateVariableNames[46]=
"mcelepx";
1176 fCandidateVariableNames[47]=
"mcelepy";
1177 fCandidateVariableNames[48]=
"mcelepz";
1178 fCandidateVariableNames[49]=
"mccascpx";
1179 fCandidateVariableNames[50]=
"mccascpy";
1180 fCandidateVariableNames[51]=
"mccascpz";
1182 fCandidateVariableNames[52]=
"mcpdgele";
1183 fCandidateVariableNames[53]=
"mcpdgcasc";
1184 fCandidateVariableNames[54]=
"mcpdgmomele";
1185 fCandidateVariableNames[55]=
"mcpdgmomcasc";
1186 fCandidateVariableNames[56]=
"mcpdggrmomele";
1187 fCandidateVariableNames[57]=
"mcpdggrmomcasc";
1188 fCandidateVariableNames[58]=
"mcngenele";
1189 fCandidateVariableNames[59]=
"mcngencasc";
1191 fCandidateVariableNames[60]=
"nSigmaTPCpi_etrk";
1192 fCandidateVariableNames[61]=
"nSigmaTOFpi_etrk";
1194 fCandidateVariableNames[62]=
"V0PosPx";
1195 fCandidateVariableNames[63]=
"V0PosPy";
1196 fCandidateVariableNames[64]=
"V0PosPz";
1197 fCandidateVariableNames[65]=
"V0NegPx";
1198 fCandidateVariableNames[66]=
"V0NegPy";
1199 fCandidateVariableNames[67]=
"V0NegPz";
1200 fCandidateVariableNames[68]=
"V0VertX";
1201 fCandidateVariableNames[69]=
"V0VertY";
1202 fCandidateVariableNames[70]=
"V0VertZ";
1203 fCandidateVariableNames[71]=
"BachPx";
1204 fCandidateVariableNames[72]=
"BachPy";
1205 fCandidateVariableNames[73]=
"BachPz";
1206 fCandidateVariableNames[74]=
"XiVertX";
1207 fCandidateVariableNames[75]=
"XiVertY";
1208 fCandidateVariableNames[76]=
"XiVertZ";
1209 fCandidateVariableNames[77]=
"PrimVertX";
1210 fCandidateVariableNames[78]=
"PrimVertY";
1211 fCandidateVariableNames[79]=
"PrimVertZ";
1213 fCandidateVariableNames[80]=
"MassOmega";
1215 fCandidateVariableNames[81]=
"EleITSMatch";
1216 fCandidateVariableNames[82]=
"BachITSMatch";
1217 fCandidateVariableNames[83]=
"V0PosITSMatch";
1218 fCandidateVariableNames[84]=
"V0NegITSMatch";
1220 fCandidateVariableNames[85]=
"TPCNclsF";
1221 fCandidateVariableNames[86]=
"TPCNcls";
1222 fCandidateVariableNames[87]=
"TPCNclsS";
1223 fCandidateVariableNames[88]=
"IsXiPeakReagion";
1226 fCandidateVariableNames[89]=
"MagneticField";
1227 fCandidateVariableNames[90]=
"EvNumber";
1228 fCandidateVariableNames[91]=
"RunNumber";
1230 for (Int_t ivar=0; ivar<nVar; ivar++) {
1247 for(Int_t i=0;i<92;i++){
1252 AliAODTrack *cptrack = (AliAODTrack*)(casc->GetDaughter(0));
1253 AliAODTrack *cntrack = (AliAODTrack*)(casc->GetDaughter(1));
1254 AliAODTrack *cbtrack = (AliAODTrack*)(casc->GetDecayVertexXi()->GetDaughter(0));
1264 Double_t pxe = exobj->PxProng(0);
1265 Double_t pye = exobj->PyProng(0);
1266 Double_t pze = exobj->PzProng(0);
1267 Double_t mome = sqrt(pxe*pxe+pye*pye+pze*pze);
1268 Double_t Ee = sqrt(mome*mome+0.000510998928*0.000510998928);
1269 Double_t pxv = exobj->PxProng(1);
1270 Double_t pyv = exobj->PyProng(1);
1271 Double_t pzv = exobj->PzProng(1);
1272 Double_t momv = sqrt(pxv*pxv+pyv*pyv+pzv*pzv);
1273 Double_t Ev = sqrt(momv*momv+1.32171*1.32171);
1274 Double_t cosoa = (pxe*pxv+pye*pyv+pze*pzv)/mome/momv;
1275 Double_t Esum = Ee + Ev;
1277 Double_t uxe = pxe/mome;
1278 Double_t uye = pye/mome;
1279 Double_t uze = pze/mome;
1280 Double_t lf = -2.*(pxv*uxe+pyv*uye+pzv*uze);
1281 Double_t pxv_flip = pxv + lf * uxe;
1282 Double_t pyv_flip = pyv + lf * uye;
1283 Double_t pzv_flip = pzv + lf * uze;
1284 Double_t pxsum_flip = pxe + pxv_flip;
1285 Double_t pysum_flip = pye + pyv_flip;
1286 Double_t pzsum_flip = pze + pzv_flip;
1287 Double_t mexi_flip = sqrt(Esum*Esum-pxsum_flip*pxsum_flip-pysum_flip*pysum_flip-pzsum_flip*pzsum_flip);
1288 Double_t ptexi_flip = sqrt(pxsum_flip*pxsum_flip+pysum_flip*pysum_flip);
1290 Double_t minmass_ee = 9999.;
1292 Double_t minmasslike_ee = 9999.;
1296 Double_t posVtx[3] = {0.,0.,0.};
1297 fVtx1->GetXYZ(posVtx);
1300 UInt_t pdgdg[2]={11,3312};
1314 if(casc->ChargeXi()<0)
1321 Double_t nSigmaTPCele = -9999.;
1322 Double_t nSigmaTOFele = -9999.;
1344 Double_t nSigmaTPCv0pr=-9999.;
1345 Double_t nSigmaTOFv0pr=-9999.;
1346 Double_t nSigmaTPCv0pi=-9999.;
1347 Double_t nSigmaTOFv0pi=-9999.;
1348 Double_t nSigmaTPCbachpi=-9999.;
1349 Double_t nSigmaTOFbachpi=-9999.;
1352 if(casc->ChargeXi()>0){
1387 AliAODMCParticle *mcxic = 0;
1388 AliAODMCParticle *mcele = 0;
1389 AliAODMCParticle *mccasc = 0;
1391 Int_t mcpdgele_array[100];
1392 Int_t mcpdgcasc_array[100];
1393 Int_t mclabelele_array[100];
1394 Int_t mclabelcasc_array[100];
1395 Int_t mcngen_ele = -9999;
1396 Int_t mcngen_casc = -9999;
1399 mclabxic =
MatchToMC(exobj,mcArray,mcpdgele_array, mcpdgcasc_array,mclabelele_array,mclabelcasc_array,mcngen_ele,mcngen_casc);
1402 mcxic = (AliAODMCParticle*) mcArray->At(mclabxic);
1403 if(mclabelele_array[0]>=0)
1404 mcele = (AliAODMCParticle*) mcArray->At(mclabelele_array[0]);
1405 if(mclabelcasc_array[0]>=0)
1406 mccasc = (AliAODMCParticle*) mcArray->At(mclabelcasc_array[0]);
1473 Double_t dphis_ele_pr, detas_ele_pr,dphis_ele_pi, detas_ele_pi, dphis_ele_bach, detas_ele_bach;
1474 dphis_ele_pr = 9999.;detas_ele_pr = 9999.;dphis_ele_pi = 9999.;detas_ele_pi = 9999.;dphis_ele_bach=9999.;detas_ele_bach=9999.;
1479 cont[0] = exobj->InvMass(2,pdgdg);
1480 cont[1] = exobj->Pt();
1481 cont[2] = exobj->Getd0Prong(0)*trk->Charge();
1485 Double_t cont_flip[4];
1486 cont_flip[0] = mexi_flip;
1487 cont_flip[1] = ptexi_flip;
1492 cont2[0] = exobj->InvMass(2,pdgdg);
1493 cont2[1] = trk->Pt();
1496 Double_t cont_eleptvseta[3];
1497 cont_eleptvseta[0] = trk->Pt();
1498 cont_eleptvseta[1] = trk->Eta();
1501 Double_t cont_eleptvsxipt[3];
1502 cont_eleptvsxipt[0] = trk->Pt();
1503 cont_eleptvsxipt[1] = sqrt(casc->MomXiX()*casc->MomXiX()+casc->MomXiY()*casc->MomXiY());
1506 Double_t cont_eleptvsd0[3];
1507 cont_eleptvsd0[0] = trk->Pt();
1508 cont_eleptvsd0[1] = exobj->Getd0Prong(0)*trk->Charge();
1511 Double_t exobj_mass = exobj->InvMass(2,pdgdg);
1512 Double_t exobj_px = exobj->Px();
1513 Double_t exobj_py = exobj->Py();
1514 Double_t exobj_pz = exobj->Pz();
1515 Double_t exobj_E = sqrt(exobj_mass*exobj_mass+exobj_px*exobj_px+exobj_py*exobj_py+exobj_pz*exobj_pz);
1516 Double_t exobj_rap = 0.5*log((exobj_E+exobj_pz)/(exobj_E-exobj_pz));
1523 if(trk->Charge()*casc->ChargeXi()<0){
1536 for(Int_t ih=0;ih<23;ih++){
1537 Double_t cont_eleptvscutvars[3];
1538 cont_eleptvscutvars[0] = exobj->Pt();
1542 cont_eleptvscutvars[1] = trk->GetTPCNcls();
1544 cont_eleptvscutvars[1] = trk->GetTPCsignalN();
1546 cont_eleptvscutvars[1] = nSigmaTPCele;
1548 cont_eleptvscutvars[1] = nSigmaTOFele;
1550 cont_eleptvscutvars[1] = trk->Eta();
1552 cont_eleptvscutvars[1] = trk->GetITSNcls();
1554 if(casc->ChargeXi()<0)
1555 cont_eleptvscutvars[1] = casc->MassLambda();
1557 cont_eleptvscutvars[1] = casc->MassAntiLambda();
1559 cont_eleptvscutvars[1] = casc->MassXi();
1562 lPosV0[0] = casc->DecayVertexV0X();
1563 lPosV0[1] = casc->DecayVertexV0Y();
1564 lPosV0[2] = casc->DecayVertexV0Z();
1565 cont_eleptvscutvars[1] = TMath::Sqrt(lPosV0[0]*lPosV0[0]+lPosV0[1]*lPosV0[1]);
1568 lPosXi[0] = casc->DecayVertexXiX();
1569 lPosXi[1] = casc->DecayVertexXiY();
1570 lPosXi[2] = casc->DecayVertexXiZ();
1571 cont_eleptvscutvars[1] = TMath::Sqrt(lPosXi[0]*lPosXi[0]+lPosXi[1]*lPosXi[1]);
1573 cont_eleptvscutvars[1] = casc->DcaV0Daughters();
1575 cont_eleptvscutvars[1] = casc->DcaXiDaughters();
1577 cont_eleptvscutvars[1] = casc->DcaBachToPrimVertex();
1579 if(casc->ChargeXi()<0.)
1580 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1582 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1584 if(casc->ChargeXi()>0.)
1585 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1587 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1589 cont_eleptvscutvars[1] = casc->CosPointingAngle(casc->GetDecayVertexXi());
1591 cont_eleptvscutvars[1] = casc->CosPointingAngleXi(posVtx[0],posVtx[1],posVtx[2]);
1593 cont_eleptvscutvars[1] = nSigmaTPCv0pr;
1595 cont_eleptvscutvars[1] = nSigmaTPCv0pi;
1597 cont_eleptvscutvars[1] = nSigmaTPCbachpi;
1599 cont_eleptvscutvars[1] = casc->Eta();
1601 cont_eleptvscutvars[1] = 0.5*TMath::Log((sqrt(casc->Ptot2Xi())+casc->MomXiZ())/(sqrt(casc->Ptot2Xi())-casc->MomXiZ()));
1603 Double_t xipx = exobj->PxProng(1);
1604 Double_t xipy = exobj->PyProng(1);
1605 Double_t xipz = exobj->PzProng(1);
1606 Double_t epx = exobj->PxProng(0);
1607 Double_t epy = exobj->PyProng(0);
1608 Double_t epz = exobj->PzProng(0);
1609 cont_eleptvscutvars[1] = acos((xipx*epx+xipy*epy+xipz*epz)/sqrt(xipx*xipx+xipy*xipy+xipz*xipz)/sqrt(epx*epx+epy*epy+epz*epz));
1611 cont_eleptvscutvars[1] = -9999.;
1619 Int_t pdgcode = mcxic->GetPdgCode();
1620 cont2[1] = mcele->Pt();
1621 if(abs(pdgcode)==4132 && abs(mcpdgele_array[1])==4132 && abs(mcpdgcasc_array[1])==4132){
1622 Int_t labmotherxic = mcxic->GetMother();
1623 Bool_t isbottomfd = kFALSE;
1626 AliAODMCParticle *motherxic = (AliAODMCParticle*)mcArray->At(labmotherxic);
1627 Int_t pdgmotherxic = motherxic->GetPdgCode();
1628 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){
1657 Double_t cont_xic[3];
1658 cont_xic[0] = mcxic->Pt();
1659 cont_xic[1] = mcxic->Y();
1665 Double_t cont_mcele[3];
1666 cont_mcele[0] = mcele->Pt();
1667 cont_mcele[1] = mcele->Eta();
1674 fHistoResponseXiPt->Fill(mcxic->Pt(),sqrt(pow(casc->MomXiX(),2)+pow(casc->MomXiY(),2)));
1677 Double_t cont_eleptvsxiptvsxicpt[4];
1678 cont_eleptvsxiptvsxicpt[0] = cont_eleptvsxipt[0];
1679 cont_eleptvsxiptvsxicpt[1] = cont_eleptvsxipt[1];
1680 cont_eleptvsxiptvsxicpt[2] = mcxic->Pt();
1681 cont_eleptvsxiptvsxicpt[3] = cont_eleptvsxipt[2];
1690 for(Int_t ih=0;ih<23;ih++){
1691 Double_t cont_eleptvscutvars[3];
1692 cont_eleptvscutvars[0] = exobj->Pt();
1696 cont_eleptvscutvars[1] = trk->GetTPCNcls();
1698 cont_eleptvscutvars[1] = trk->GetTPCsignalN();
1700 cont_eleptvscutvars[1] = nSigmaTPCele;
1702 cont_eleptvscutvars[1] = nSigmaTOFele;
1704 cont_eleptvscutvars[1] = trk->Eta();
1706 cont_eleptvscutvars[1] = trk->GetITSNcls();
1708 if(casc->ChargeXi()<0)
1709 cont_eleptvscutvars[1] = casc->MassLambda();
1711 cont_eleptvscutvars[1] = casc->MassAntiLambda();
1713 cont_eleptvscutvars[1] = casc->MassXi();
1716 lPosV0[0] = casc->DecayVertexV0X();
1717 lPosV0[1] = casc->DecayVertexV0Y();
1718 lPosV0[2] = casc->DecayVertexV0Z();
1719 cont_eleptvscutvars[1] = TMath::Sqrt(lPosV0[0]*lPosV0[0]+lPosV0[1]*lPosV0[1]);
1722 lPosXi[0] = casc->DecayVertexXiX();
1723 lPosXi[1] = casc->DecayVertexXiY();
1724 lPosXi[2] = casc->DecayVertexXiZ();
1725 cont_eleptvscutvars[1] = TMath::Sqrt(lPosXi[0]*lPosXi[0]+lPosXi[1]*lPosXi[1]);
1727 cont_eleptvscutvars[1] = casc->DcaV0Daughters();
1729 cont_eleptvscutvars[1] = casc->DcaXiDaughters();
1731 cont_eleptvscutvars[1] = casc->DcaBachToPrimVertex();
1733 if(casc->ChargeXi()<0.)
1734 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1736 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1738 if(casc->ChargeXi()>0.)
1739 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1741 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1743 cont_eleptvscutvars[1] = casc->CosPointingAngle(casc->GetDecayVertexXi());
1745 cont_eleptvscutvars[1] = casc->CosPointingAngleXi(posVtx[0],posVtx[1],posVtx[2]);
1747 cont_eleptvscutvars[1] = nSigmaTPCv0pr;
1749 cont_eleptvscutvars[1] = nSigmaTPCv0pi;
1751 cont_eleptvscutvars[1] = nSigmaTPCbachpi;
1753 cont_eleptvscutvars[1] = casc->Eta();
1755 cont_eleptvscutvars[1] = 0.5*TMath::Log((sqrt(casc->Ptot2Xi())+casc->MomXiZ())/(sqrt(casc->Ptot2Xi())-casc->MomXiZ()));
1757 Double_t xipx = exobj->PxProng(1);
1758 Double_t xipy = exobj->PyProng(1);
1759 Double_t xipz = exobj->PzProng(1);
1760 Double_t epx = exobj->PxProng(0);
1761 Double_t epy = exobj->PyProng(0);
1762 Double_t epz = exobj->PzProng(0);
1763 cont_eleptvscutvars[1] = acos((xipx*epx+xipy*epy+xipz*epz)/sqrt(xipx*xipx+xipy*xipy+xipz*xipz)/sqrt(epx*epx+epy*epy+epz*epz));
1765 cont_eleptvscutvars[1] = -9999.;
1791 for(Int_t ih=0;ih<23;ih++){
1792 Double_t cont_eleptvscutvars[3];
1793 cont_eleptvscutvars[0] = exobj->Pt();
1797 cont_eleptvscutvars[1] = trk->GetTPCNcls();
1799 cont_eleptvscutvars[1] = trk->GetTPCsignalN();
1801 cont_eleptvscutvars[1] = nSigmaTPCele;
1803 cont_eleptvscutvars[1] = nSigmaTOFele;
1805 cont_eleptvscutvars[1] = trk->Eta();
1807 cont_eleptvscutvars[1] = trk->GetITSNcls();
1809 if(casc->ChargeXi()<0)
1810 cont_eleptvscutvars[1] = casc->MassLambda();
1812 cont_eleptvscutvars[1] = casc->MassAntiLambda();
1814 cont_eleptvscutvars[1] = casc->MassXi();
1817 lPosV0[0] = casc->DecayVertexV0X();
1818 lPosV0[1] = casc->DecayVertexV0Y();
1819 lPosV0[2] = casc->DecayVertexV0Z();
1820 cont_eleptvscutvars[1] = TMath::Sqrt(lPosV0[0]*lPosV0[0]+lPosV0[1]*lPosV0[1]);
1823 lPosXi[0] = casc->DecayVertexXiX();
1824 lPosXi[1] = casc->DecayVertexXiY();
1825 lPosXi[2] = casc->DecayVertexXiZ();
1826 cont_eleptvscutvars[1] = TMath::Sqrt(lPosXi[0]*lPosXi[0]+lPosXi[1]*lPosXi[1]);
1828 cont_eleptvscutvars[1] = casc->DcaV0Daughters();
1830 cont_eleptvscutvars[1] = casc->DcaXiDaughters();
1832 cont_eleptvscutvars[1] = casc->DcaBachToPrimVertex();
1834 if(casc->ChargeXi()<0.)
1835 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1837 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1839 if(casc->ChargeXi()>0.)
1840 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1842 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1844 cont_eleptvscutvars[1] = casc->CosPointingAngle(casc->GetDecayVertexXi());
1846 cont_eleptvscutvars[1] = casc->CosPointingAngleXi(posVtx[0],posVtx[1],posVtx[2]);
1848 cont_eleptvscutvars[1] = nSigmaTPCv0pr;
1850 cont_eleptvscutvars[1] = nSigmaTPCv0pi;
1852 cont_eleptvscutvars[1] = nSigmaTPCbachpi;
1854 cont_eleptvscutvars[1] = casc->Eta();
1856 cont_eleptvscutvars[1] = 0.5*TMath::Log((sqrt(casc->Ptot2Xi())+casc->MomXiZ())/(sqrt(casc->Ptot2Xi())-casc->MomXiZ()));
1858 Double_t xipx = exobj->PxProng(1);
1859 Double_t xipy = exobj->PyProng(1);
1860 Double_t xipz = exobj->PzProng(1);
1861 Double_t epx = exobj->PxProng(0);
1862 Double_t epy = exobj->PyProng(0);
1863 Double_t epz = exobj->PzProng(0);
1864 cont_eleptvscutvars[1] = acos((xipx*epx+xipy*epy+xipz*epz)/sqrt(xipx*xipx+xipy*xipy+xipz*xipz)/sqrt(epx*epx+epy*epy+epz*epz));
1866 cont_eleptvscutvars[1] = -9999.;
1874 Int_t pdgcode = mcxic->GetPdgCode();
1875 if(abs(pdgcode)==5132 && abs(mcpdgele_array[1])==5132 && abs(mcpdgcasc_array[1])==4132 && abs(mcpdgcasc_array[2])==5132){
1880 if(abs(pdgcode)==5132 && abs(mcpdgele_array[1])==5132 && abs(mcpdgcasc_array[1])==4232 && abs(mcpdgcasc_array[2])==5132){
1885 if(abs(pdgcode)==5232 && abs(mcpdgele_array[1])==5232 && abs(mcpdgcasc_array[1])==4132 && abs(mcpdgcasc_array[2])==5232){
1890 if(abs(pdgcode)==5232 && abs(mcpdgele_array[1])==5232 && abs(mcpdgcasc_array[1])==4232 && abs(mcpdgcasc_array[2])==5232){
1905 if( mexi_flip <10. && cosoa < 0. && fAnalCuts->IsPeakRegion(casc))
1907 if(trk->Charge()*casc->ChargeXi()<0){
1920 if(trk->Charge()*casc->ChargeXi()<0){
1938 if( mexi_flip< 10. && cosoa < 0. && fAnalCuts->IsSideBand(casc))
1940 if(trk->Charge()*casc->ChargeXi()<0){
1954 for(Int_t iv=0;iv<11;iv++){
1965 if(trk->Charge()>0){
1968 }
else if(trk->Charge()<0){
1977 Int_t pdgcode = mcxic->GetPdgCode();
1978 if(abs(pdgcode)==4132 && abs(mcpdgele_array[1])==4132 && abs(mcpdgcasc_array[1])==4132){
1981 if(abs(pdgcode)==5132 && abs(mcpdgele_array[1])==5132 && abs(mcpdgcasc_array[1])==4132 && abs(mcpdgcasc_array[2])==5132){
1984 if(abs(pdgcode)==5132 && abs(mcpdgele_array[1])==5132 && abs(mcpdgcasc_array[1])==4232 && abs(mcpdgcasc_array[2])==5132){
1987 if(abs(pdgcode)==5232 && abs(mcpdgele_array[1])==5232 && abs(mcpdgcasc_array[1])==4132 && abs(mcpdgcasc_array[2])==5232){
1990 if(abs(pdgcode)==5232 && abs(mcpdgele_array[1])==5232 && abs(mcpdgcasc_array[1])==4232 && abs(mcpdgcasc_array[2])==5232){
2028 for(Int_t i=0;i<90;i++){
2032 Double_t pxe = trke->Px();
2033 Double_t pye = trke->Py();
2034 Double_t pze = trke->Pz();
2035 Double_t mome = sqrt(pxe*pxe+pye*pye+pze*pze);
2036 Double_t Ee = sqrt(mome*mome+0.000510998928*0.000510998928);
2038 Double_t pxv = casc->Px();
2039 Double_t pyv = casc->Py();
2040 Double_t pzv = casc->Pz();
2041 Double_t momv = sqrt(pxv*pxv+pyv*pyv+pzv*pzv);
2042 Double_t Ev = sqrt(momv*momv+1.32171*1.32171);
2044 Double_t cosoa = (pxe*pxv+pye*pyv+pze*pzv)/mome/momv;
2046 Double_t pxsum = pxe + pxv;
2047 Double_t pysum = pye + pyv;
2048 Double_t pzsum = pze + pzv;
2049 Double_t Esum = Ee + Ev;
2050 Double_t mexi = sqrt(Esum*Esum-pxsum*pxsum-pysum*pysum-pzsum*pzsum);
2052 Double_t uxe = pxe/mome;
2053 Double_t uye = pye/mome;
2054 Double_t uze = pze/mome;
2055 Double_t lf = -2.*(pxv*uxe+pyv*uye+pzv*uze);
2056 Double_t pxv_flip = pxv + lf * uxe;
2057 Double_t pyv_flip = pyv + lf * uye;
2058 Double_t pzv_flip = pzv + lf * uze;
2059 Double_t pxsum_flip = pxe + pxv_flip;
2060 Double_t pysum_flip = pye + pyv_flip;
2061 Double_t pzsum_flip = pze + pzv_flip;
2062 Double_t mexi_flip = sqrt(Esum*Esum-pxsum_flip*pxsum_flip-pysum_flip*pysum_flip-pzsum_flip*pzsum_flip);
2063 Double_t ptexi_flip = sqrt(pxsum_flip*pxsum_flip+pysum_flip*pysum_flip);
2065 Double_t posVtx[3] = {0.,0.,0.};
2066 fVtx1->GetXYZ(posVtx);
2069 UInt_t pdgdg[2]={11,3312};
2095 cont[1] = sqrt(pxsum*pxsum+pysum*pysum);
2099 Double_t cont_flip[4];
2100 cont_flip[0] = mexi_flip;
2101 cont_flip[1] = ptexi_flip;
2107 cont2[1] = sqrt(pxe*pxe+pye*pye);
2110 Double_t cont_eleptvseta[3];
2111 cont_eleptvseta[0] = trke->Pt();
2112 cont_eleptvseta[1] = trke->Eta();
2115 Double_t cont_eleptvsxipt[3];
2116 cont_eleptvsxipt[0] = trke->Pt();
2117 cont_eleptvsxipt[1] = casc->Pt();
2120 Double_t cont_eleptvsd0[3];
2121 cont_eleptvsd0[0] = trke->Pt();
2122 cont_eleptvsd0[1] = 0.;
2125 Double_t xyzR125_ele[3], xyzR125_pr[3], xyzR125_pi[3], xyzR125_bach[3];
2126 xyzR125_ele[0] = (*elevars)[0];
2127 xyzR125_ele[1] = (*elevars)[1];
2128 xyzR125_ele[2] = (*elevars)[2];
2129 xyzR125_pr[0] = (*cascvars)[0];
2130 xyzR125_pr[1] = (*cascvars)[1];
2131 xyzR125_pr[2] = (*cascvars)[2];
2132 xyzR125_pi[0] = (*cascvars)[3];
2133 xyzR125_pi[1] = (*cascvars)[4];
2134 xyzR125_pi[2] = (*cascvars)[5];
2135 xyzR125_bach[0] = (*cascvars)[6];
2136 xyzR125_bach[1] = (*cascvars)[7];
2137 xyzR125_bach[2] = (*cascvars)[8];
2139 Double_t rdhfcutvars[12];
2140 rdhfcutvars[0] = xyzR125_ele[0];
2141 rdhfcutvars[1] = xyzR125_ele[1];
2142 rdhfcutvars[2] = xyzR125_ele[2];
2143 rdhfcutvars[3] = xyzR125_pr[0];
2144 rdhfcutvars[4] = xyzR125_pr[1];
2145 rdhfcutvars[5] = xyzR125_pr[2];
2146 rdhfcutvars[6] = xyzR125_pi[0];
2147 rdhfcutvars[7] = xyzR125_pi[1];
2148 rdhfcutvars[8] = xyzR125_pi[2];
2149 rdhfcutvars[9] = xyzR125_bach[0];
2150 rdhfcutvars[10] = xyzR125_bach[1];
2151 rdhfcutvars[11] = xyzR125_bach[2];
2163 if(((
int)trke->T())*chargexi<0){
2199 if(mexi_flip < 10. && cosoa<0. && fAnalCuts->IsPeakRegion(casc))
2201 if(((
int)trke->T())*chargexi<0){
2215 for(Int_t iv=0;iv<11;iv++){
2223 fCorrelationVariables[5] = (*elevars)[5];
2224 fCorrelationVariables[6] = 2;
2226 if(chargexi<0) fCorrelationVariables[7] = 0;
2227 else fCorrelationVariables[7] = 2;
2228 }
else if(trke->T()<0){
2229 if(chargexi<0) fCorrelationVariables[7] = 1;
2230 else fCorrelationVariables[7] = 3;
2250 const char* nameoutput = GetOutputSlot(5)->GetContainer()->GetName();
2254 TString * fCandidateVariableNames =
new TString[nVar];
2256 fCandidateVariableNames[ 0]=
"ElePx";
2257 fCandidateVariableNames[ 1]=
"ElePy";
2258 fCandidateVariableNames[ 2]=
"ElePz";
2259 fCandidateVariableNames[ 3]=
"TPCChi2overNDF";
2260 fCandidateVariableNames[ 4]=
"ITSNcls";
2261 fCandidateVariableNames[ 5]=
"TPCNcls";
2262 fCandidateVariableNames[ 6]=
"TPCNclsPID";
2263 fCandidateVariableNames[ 7]=
"TPCNclsRatio";
2264 fCandidateVariableNames[ 8]=
"d0R";
2265 fCandidateVariableNames[ 9]=
"d0Z";
2266 fCandidateVariableNames[10]=
"ITSClusterMap";
2267 fCandidateVariableNames[11]=
"nSigmaTPCele";
2268 fCandidateVariableNames[12]=
"nSigmaTOFele";
2269 fCandidateVariableNames[13]=
"nSigmaTPCpi";
2270 fCandidateVariableNames[14]=
"nSigmaTPCka";
2271 fCandidateVariableNames[15]=
"nSigmaTPCpr";
2272 fCandidateVariableNames[16]=
"EvNumber";
2273 fCandidateVariableNames[17]=
"EleCharge";
2274 fCandidateVariableNames[18]=
"ElePdgCode";
2275 fCandidateVariableNames[19]=
"EleMotherPdgCode";
2276 fCandidateVariableNames[20]=
"mcelepx";
2277 fCandidateVariableNames[21]=
"mcelepy";
2278 fCandidateVariableNames[22]=
"mcelepz";
2279 fCandidateVariableNames[23]=
"Centrality";
2280 fCandidateVariableNames[24]=
"PrimVertZ";
2281 fCandidateVariableNames[25]=
"RunNumber";
2283 for (Int_t ivar=0; ivar<nVar; ivar++) {
2301 Double_t d0z0[2],covd0z0[3];
2302 trk->PropagateToDCA(
fVtx1,
fBzkG,kVeryBig,d0z0,covd0z0);
2306 pv[0] =
fVtx1->GetX();
2307 pv[1] =
fVtx1->GetY();
2308 pv[2] =
fVtx1->GetZ();
2309 Double_t xyzR125[3] = {9999.,9999.,9999.};
2311 TVector *varvec =
new TVector(6);
2312 (*varvec)[0] = xyzR125[0];
2313 (*varvec)[1] = xyzR125[1];
2314 (*varvec)[2] = xyzR125[2];
2317 (*varvec)[5] = d0z0[0];
2318 fElectronTracks->AddLast(
new TLorentzVector(trk->Px(),trk->Py(),trk->Pz(),trk->Charge()));
2323 Int_t pdgEle = -9999;
2324 Int_t pdgEleMother = -9999;
2325 Float_t mcepx = -9999;
2326 Float_t mcepy = -9999;
2327 Float_t mcepz = -9999;
2330 Int_t labEle = trk->GetLabel();
2331 if(labEle<0)
return;
2332 AliAODMCParticle *mcetrk = (AliAODMCParticle*)mcArray->At(labEle);
2334 pdgEle = mcetrk->GetPdgCode();
2335 mcepx = mcetrk->Px();
2336 mcepy = mcetrk->Py();
2337 mcepz = mcetrk->Pz();
2344 for(Int_t i=0;i<26;i++){
2355 if(trk->GetTPCNclsF()>0)
2360 Int_t itsmap = trk->GetITSClusterMap();
2363 Bool_t spdfirst = (itsmap & bit1) == bit1;
2364 Bool_t spdsecond = (itsmap & bit2) == bit2;
2402 const char* nameoutput = GetOutputSlot(6)->GetContainer()->GetName();
2406 TString * fCandidateVariableNames =
new TString[nVar];
2408 fCandidateVariableNames[ 0]=
"Centrality";
2409 fCandidateVariableNames[ 1]=
"InvMassXi";
2410 fCandidateVariableNames[ 2]=
"XiPx";
2411 fCandidateVariableNames[ 3]=
"XiPy";
2412 fCandidateVariableNames[ 4]=
"XiPz";
2413 fCandidateVariableNames[ 5]=
"InvMassLambda";
2414 fCandidateVariableNames[ 6]=
"DcaXiDaughters";
2415 fCandidateVariableNames[ 7]=
"DcaV0Daughters";
2416 fCandidateVariableNames[ 8]=
"DecayLengthXi";
2417 fCandidateVariableNames[ 9]=
"CosPointingAngleXi";
2418 fCandidateVariableNames[10]=
"DcaV0toPrimVertex";
2419 fCandidateVariableNames[11]=
"DcaPostoPrimVertex";
2420 fCandidateVariableNames[12]=
"DcaNegtoPrimVertex";
2421 fCandidateVariableNames[13]=
"DcaBachtoPrimVertex";
2422 fCandidateVariableNames[14]=
"DecayLengthV0";
2423 fCandidateVariableNames[15]=
"CosPointingAngleV0";
2424 fCandidateVariableNames[16]=
"XiCharge";
2425 fCandidateVariableNames[17]=
"XiPdgCode";
2426 fCandidateVariableNames[18]=
"XiMotherPdgCode";
2427 fCandidateVariableNames[19]=
"mcxipx";
2428 fCandidateVariableNames[20]=
"mcxipy";
2429 fCandidateVariableNames[21]=
"mcxipz";
2430 fCandidateVariableNames[22]=
"labcasc";
2431 fCandidateVariableNames[23]=
"RunNumber";
2432 fCandidateVariableNames[24]=
"PrimVertZ";
2433 fCandidateVariableNames[25]=
"EvNumber";
2435 for (Int_t ivar=0; ivar<nVar; ivar++) {
2449 AliAODTrack *cptrack = (AliAODTrack*)(casc->GetDaughter(0));
2450 AliAODTrack *cntrack = (AliAODTrack*)(casc->GetDaughter(1));
2451 AliAODTrack *cbtrack = (AliAODTrack*)(casc->GetDecayVertexXi()->GetDaughter(0));
2452 if(!cptrack)
return;
2453 if(!cntrack)
return;
2454 if(!cbtrack)
return;
2456 fHistoXiMassvsPt->Fill(casc->MassXi(),sqrt(casc->MomXiX()*casc->MomXiX()+casc->MomXiY()*casc->MomXiY()));
2457 fHistoOmegaMassvsPt->Fill(casc->MassOmega(),sqrt(casc->MomXiX()*casc->MomXiX()+casc->MomXiY()*casc->MomXiY()));
2458 Double_t momxix = casc->MomXiX();
2459 Double_t momxiy = casc->MomXiY();
2460 Double_t phi_alice = atan2(momxiy,momxix);
2461 if(phi_alice<0.) phi_alice += 2 * M_PI;
2462 fHistoXiQovPtvsPhi->Fill(phi_alice,(Double_t)casc->ChargeXi()/sqrt(momxix*momxix+momxiy*momxiy));
2464 Double_t mlamPDG = TDatabasePDG::Instance()->GetParticle(3122)->Mass();
2465 Double_t posVtx[3] = {0.,0.,0.};
2466 fVtx1->GetXYZ(posVtx);
2467 Double_t ptotlam = TMath::Sqrt(pow(casc->Px(),2)+pow(casc->Py(),2)+pow(casc->Pz(),2));
2468 Double_t dl = sqrt(pow(casc->DecayVertexV0X()-posVtx[0],2)+pow(casc->DecayVertexV0Y()-posVtx[1],2)+pow(casc->DecayVertexV0Z()-posVtx[2],2));
2469 Double_t v0propdl = dl*mlamPDG/ptotlam;
2479 Int_t xipdgcode = -9999;
2480 Int_t ximotherpdgcode = -9999;
2481 Float_t mcxipx = -9999.;
2482 Float_t mcxipy = -9999.;
2483 Float_t mcxipz = -9999.;
2484 Int_t labcasc = -9999.;
2486 Int_t pdgDgcasc[2]={211,3122};
2487 Int_t pdgDgv0[2]={2212,211};
2489 if(labcasc<0)
return;
2491 fHistoXiMassvsPtMCS->Fill(casc->MassXi(),sqrt(casc->MomXiX()*casc->MomXiX()+casc->MomXiY()*casc->MomXiY()));
2493 AliAODMCParticle *mccasctrk = (AliAODMCParticle*)mcArray->At(labcasc);
2494 if(!mccasctrk)
return;
2499 Bool_t hfxi_flag = kFALSE;
2500 xipdgcode = mccasctrk->GetPdgCode();
2501 Int_t labcascmother = mccasctrk->GetMother();
2502 if(labcascmother>=0){
2503 AliAODMCParticle *mothercasc = (AliAODMCParticle*)mcArray->At(labcascmother);
2505 ximotherpdgcode = mothercasc->GetPdgCode();
2506 if(abs(ximotherpdgcode)>4000&&abs(ximotherpdgcode)<4400){
2511 if(!hfxi_flag)
return;
2512 mcxipx = mccasctrk->Px();
2513 mcxipy = mccasctrk->Py();
2514 mcxipz = mccasctrk->Pz();
2518 Double_t xyz[3], pxpypz[3], cv[21]; Short_t sign;
2519 xyz[0]=casc->DecayVertexXiX();
2520 xyz[1]=casc->DecayVertexXiY();
2521 xyz[2]=casc->DecayVertexXiZ();
2522 pxpypz[0]=casc->MomXiX();
2523 pxpypz[1]=casc->MomXiY();
2524 pxpypz[2]=casc->MomXiZ();
2525 casc->GetCovarianceXYZPxPyPz(cv);
2526 sign=casc->ChargeXi();
2527 AliExternalTrackParam *trackCasc =
new AliExternalTrackParam(xyz,pxpypz,cv,sign);
2528 trackCasc->PropagateToDCA(
fVtx1,
fBzkG,kVeryBig);
2529 Double_t momcasc_new[3]={-9999,-9999,-9999.};
2530 trackCasc->GetPxPyPz(momcasc_new);
2533 TLorentzVector *lv =
new TLorentzVector();
2534 lv->SetXYZM(momcasc_new[0],momcasc_new[1],momcasc_new[2],casc->MassXi());
2535 Double_t xyzR125pr[3]={9999.,9999.,9999.};
2536 Double_t xyzR125pi[3]={9999.,9999.,9999.};
2537 Double_t xyzR125bach[3]={9999.,9999.,9999.};
2538 if(casc->ChargeXi()>0){
2545 TVector *varvec =
new TVector(9);
2546 (*varvec)[0] = xyzR125pr[0];
2547 (*varvec)[1] = xyzR125pr[1];
2548 (*varvec)[2] = xyzR125pr[2];
2549 (*varvec)[3] = xyzR125pi[0];
2550 (*varvec)[4] = xyzR125pi[1];
2551 (*varvec)[5] = xyzR125pi[2];
2552 (*varvec)[6] = xyzR125bach[0];
2553 (*varvec)[7] = xyzR125bach[1];
2554 (*varvec)[8] = xyzR125bach[2];
2563 TVector *varvec =
new TVector(9);
2564 (*varvec)[0] = xyzR125pr[0];
2565 (*varvec)[1] = xyzR125pr[1];
2566 (*varvec)[2] = xyzR125pr[2];
2567 (*varvec)[3] = xyzR125pi[0];
2568 (*varvec)[4] = xyzR125pi[1];
2569 (*varvec)[5] = xyzR125pi[2];
2570 (*varvec)[6] = xyzR125bach[0];
2571 (*varvec)[7] = xyzR125bach[1];
2572 (*varvec)[8] = xyzR125bach[2];
2579 for(Int_t i=0;i<26;i++){
2588 if(casc->ChargeXi()<0)
2624 const char* nameoutput = GetOutputSlot(7)->GetContainer()->GetName();
2628 TString * fCandidateVariableNames =
new TString[nVar];
2630 fCandidateVariableNames[ 0]=
"Centrality";
2631 fCandidateVariableNames[ 1]=
"DecayType";
2632 fCandidateVariableNames[ 2]=
"XicPx";
2633 fCandidateVariableNames[ 3]=
"XicPy";
2634 fCandidateVariableNames[ 4]=
"XicPz";
2635 fCandidateVariableNames[ 5]=
"ElePx";
2636 fCandidateVariableNames[ 6]=
"ElePy";
2637 fCandidateVariableNames[ 7]=
"ElePz";
2638 fCandidateVariableNames[ 8]=
"CascPx";
2639 fCandidateVariableNames[ 9]=
"CascPy";
2640 fCandidateVariableNames[10]=
"CascPz";
2641 fCandidateVariableNames[11]=
"PdgCode";
2642 fCandidateVariableNames[12]=
"ElePdgCode";
2643 fCandidateVariableNames[13]=
"CascPdgCode";
2644 fCandidateVariableNames[14]=
"RunNumber";
2645 fCandidateVariableNames[15]=
"EvNumber";
2647 for (Int_t ivar=0; ivar<nVar; ivar++) {
2659 if(!mcepart)
return;
2660 if(!mccascpart)
return;
2662 for(Int_t i=0;i<14;i++){
2683 Double_t epx = mcepart->Px();
2684 Double_t epy = mcepart->Py();
2685 Double_t epz = mcepart->Pz();
2686 Double_t eE = sqrt(epx*epx+epy*epy+epz*epz+0.000511*0.000511);
2687 Double_t cascpx = mccascpart->Px();
2688 Double_t cascpy = mccascpart->Py();
2689 Double_t cascpz = mccascpart->Pz();
2690 Double_t cascE = sqrt(cascpx*cascpx+cascpy*cascpy+cascpz*cascpz+1.32171*1.32171);
2692 Double_t InvMassEleXi = sqrt(pow(eE+cascE,2)-pow(epx+cascpx,2)-pow(epy+cascpy,2)-pow(epz+cascpz,2));
2695 cont[0] = InvMassEleXi;
2696 cont[1] = mcpart->Pt();
2700 cont2[0] = InvMassEleXi;
2701 cont2[1] = mcepart->Pt();
2703 Double_t cont_eleptvseta[3];
2704 cont_eleptvseta[0] = mcepart->Pt();
2705 cont_eleptvseta[1] = mcepart->Eta();
2707 Double_t cont_eleptvsxipt[3];
2708 cont_eleptvsxipt[0] = mcepart->Pt();
2709 cont_eleptvsxipt[1] = mccascpart->Pt();
2711 Double_t cont_eleptvsxiptvsxicpt[4];
2712 cont_eleptvsxiptvsxicpt[0] = mcepart->Pt();
2713 cont_eleptvsxiptvsxicpt[1] = mccascpart->Pt();
2714 cont_eleptvsxiptvsxicpt[2] = mcpart->Pt();
2718 contmc[0] = mcpart->Pt();
2719 contmc[1] = mcpart->Y();
2721 Double_t contmcele[3];
2722 contmcele[0] = mcepart->Pt();
2723 contmcele[1] = mcepart->Eta();
2729 esdcuts->GetEtaRange(etamin,etamax);
2739 if(fabs(mcepart->Eta())<etamax){
2743 if(InvMassEleXi<2.5){
2749 if(fabs(mcpart->Y())<0.7){
2750 if(InvMassEleXi<2.5){
2767 const char* nameoutput = GetOutputSlot(9)->GetContainer()->GetName();
2771 TString * fCandidateVariableNames =
new TString[nVar];
2773 fCandidateVariableNames[ 0]=
"Centrality";
2774 fCandidateVariableNames[ 1]=
"ElePx";
2775 fCandidateVariableNames[ 2]=
"ElePy";
2776 fCandidateVariableNames[ 3]=
"ElePz";
2777 fCandidateVariableNames[ 4]=
"ElePdgCode";
2778 fCandidateVariableNames[ 5]=
"EleMotherPdgCode";
2779 fCandidateVariableNames[ 6]=
"RunNumber";
2780 fCandidateVariableNames[ 7]=
"EvNumber";
2782 for (Int_t ivar=0; ivar<nVar; ivar++) {
2793 if(!mcepart)
return;
2796 Bool_t hfe_flag = kFALSE;
2797 Int_t labemother = mcepart->GetMother();
2798 Int_t pdgmotherele = -9999;
2800 AliAODMCParticle *motherele = (AliAODMCParticle*)mcArray->At(labemother);
2801 pdgmotherele = motherele->GetPdgCode();
2802 if(abs(pdgmotherele)>4000&&abs(pdgmotherele)<4400){
2806 if(!hfe_flag)
return;
2809 contmc[0] = mcepart->Pt();
2810 contmc[1] = mcepart->Eta();
2814 for(Int_t i=0;i<8;i++){
2838 const char* nameoutput = GetOutputSlot(10)->GetContainer()->GetName();
2842 TString * fCandidateVariableNames =
new TString[nVar];
2844 fCandidateVariableNames[ 0]=
"Centrality";
2845 fCandidateVariableNames[ 1]=
"CascPx";
2846 fCandidateVariableNames[ 2]=
"CascPy";
2847 fCandidateVariableNames[ 3]=
"CascPz";
2848 fCandidateVariableNames[ 4]=
"CascPdgCode";
2849 fCandidateVariableNames[ 5]=
"CascMotherPdgCode";
2850 fCandidateVariableNames[ 6]=
"RunNumber";
2851 fCandidateVariableNames[ 7]=
"EvNumber";
2853 for (Int_t ivar=0; ivar<nVar; ivar++) {
2864 if(!mccascpart)
return;
2866 for(Int_t i=0;i<8;i++){
2870 Bool_t hfxi_flag = kFALSE;
2871 Int_t labcascmother = mccascpart->GetMother();
2872 Int_t pdgmothercasc = -9999;
2873 if(labcascmother>=0){
2874 AliAODMCParticle *mothercasc = (AliAODMCParticle*)mcArray->At(labcascmother);
2876 pdgmothercasc = mothercasc->GetPdgCode();
2877 if(abs(pdgmothercasc)>4000&&abs(pdgmothercasc)<4400){
2882 if(!hfxi_flag)
return;
2885 contmc[0] = mccascpart->Pt();
2886 contmc[1] = mccascpart->Eta();
2910 fCEvents =
new TH1F(
"fCEvents",
"conter",18,-0.5,17.5);
2912 fCEvents->GetXaxis()->SetBinLabel(1,
"X1");
2913 fCEvents->GetXaxis()->SetBinLabel(2,
"Analyzed events");
2914 fCEvents->GetXaxis()->SetBinLabel(3,
"AliAODVertex exists");
2915 fCEvents->GetXaxis()->SetBinLabel(4,
"TriggerOK");
2916 fCEvents->GetXaxis()->SetBinLabel(5,
"IsEventSelected");
2917 fCEvents->GetXaxis()->SetBinLabel(6,
"CascadesHF exists");
2918 fCEvents->GetXaxis()->SetBinLabel(7,
"MCarray exists");
2919 fCEvents->GetXaxis()->SetBinLabel(8,
"MCheader exists");
2920 fCEvents->GetXaxis()->SetBinLabel(9,
"triggerClass!=CINT1");
2921 fCEvents->GetXaxis()->SetBinLabel(10,
"triggerMask!=kAnyINT");
2922 fCEvents->GetXaxis()->SetBinLabel(11,
"triggerMask!=kAny");
2923 fCEvents->GetXaxis()->SetBinLabel(12,
"vtxTitle.Contains(Z)");
2924 fCEvents->GetXaxis()->SetBinLabel(13,
"vtxTitle.Contains(3D)");
2925 fCEvents->GetXaxis()->SetBinLabel(14,
"vtxTitle.Doesn'tContain(Z-3D)");
2927 fCEvents->GetXaxis()->SetBinLabel(16,
"!IsEventSelected");
2928 fCEvents->GetXaxis()->SetBinLabel(17,
"triggerMask!=kAnyINT || triggerClass!=CINT1");
2931 fCEvents->GetYaxis()->SetTitle(
"counts");
2933 fHTrigger =
new TH1F(
"fHTrigger",
"counter",18,-0.5,17.5);
2935 fHTrigger->GetXaxis()->SetBinLabel(1,
"X1");
2936 fHTrigger->GetXaxis()->SetBinLabel(2,
"kMB");
2937 fHTrigger->GetXaxis()->SetBinLabel(3,
"kSemiCentral");
2938 fHTrigger->GetXaxis()->SetBinLabel(4,
"kCentral");
2939 fHTrigger->GetXaxis()->SetBinLabel(5,
"kINT7");
2940 fHTrigger->GetXaxis()->SetBinLabel(6,
"kEMC7");
2942 fHTrigger->GetXaxis()->SetBinLabel(8,
"kMB|kSemiCentral|kCentral");
2943 fHTrigger->GetXaxis()->SetBinLabel(9,
"kINT7|kEMC7");
2944 fHTrigger->GetXaxis()->SetBinLabel(11,
"kMB&kSemiCentral");
2945 fHTrigger->GetXaxis()->SetBinLabel(12,
"kMB&kCentral");
2946 fHTrigger->GetXaxis()->SetBinLabel(13,
"kINT7&kEMC7");
2948 fHCentrality =
new TH1F(
"fHCentrality",
"conter",100,0.,100.);
2967 Int_t bins_base[4]= {22 ,100 , 100 ,10};
2968 Double_t xmin_base[4]={1.3,0 , -0.5 ,0.00};
2969 Double_t xmax_base[4]={5.7,20. , 0.5 ,100};
2971 fHistoEleXiMass =
new THnSparseF(
"fHistoEleXiMass",
"",4,bins_base,xmin_base,xmax_base);
2973 fHistoEleXiMassRS =
new THnSparseF(
"fHistoEleXiMassRS",
"",4,bins_base,xmin_base,xmax_base);
2975 fHistoEleXiMassWS =
new THnSparseF(
"fHistoEleXiMassWS",
"",4,bins_base,xmin_base,xmax_base);
2977 fHistoEleXiMassRSMix =
new THnSparseF(
"fHistoEleXiMassRSMix",
"",4,bins_base,xmin_base,xmax_base);
2979 fHistoEleXiMassWSMix =
new THnSparseF(
"fHistoEleXiMassWSMix",
"",4,bins_base,xmin_base,xmax_base);
2985 fHistoEleXiMassRS1 =
new THnSparseF(
"fHistoEleXiMassRS1",
"",4,bins_base,xmin_base,xmax_base);
2987 fHistoEleXiMassWS1 =
new THnSparseF(
"fHistoEleXiMassWS1",
"",4,bins_base,xmin_base,xmax_base);
2997 fHistoEleXiMassRS2 =
new THnSparseF(
"fHistoEleXiMassRS2",
"",4,bins_base,xmin_base,xmax_base);
2999 fHistoEleXiMassWS2 =
new THnSparseF(
"fHistoEleXiMassWS2",
"",4,bins_base,xmin_base,xmax_base);
3047 Int_t bins_base_elept[3]= {10 ,100 ,10};
3048 Double_t xmin_base_elept[3]={1.3,0 ,0.00};
3049 Double_t xmax_base_elept[3]={3.3,10. ,100};
3051 fHistoEleXiMassvsElePtRS =
new THnSparseF(
"fHistoEleXiMassvsElePtRS",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
3053 fHistoEleXiMassvsElePtWS =
new THnSparseF(
"fHistoEleXiMassvsElePtWS",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
3063 fHistoEleXiMassvsElePtRS1 =
new THnSparseF(
"fHistoEleXiMassvsElePtRS1",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
3065 fHistoEleXiMassvsElePtWS1 =
new THnSparseF(
"fHistoEleXiMassvsElePtWS1",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
3075 fHistoEleXiMassvsElePtRS2 =
new THnSparseF(
"fHistoEleXiMassvsElePtRS2",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
3077 fHistoEleXiMassvsElePtWS2 =
new THnSparseF(
"fHistoEleXiMassvsElePtWS2",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
3088 fHistoElePtRS=
new TH2F(
"fHistoElePtRS",
"Right-sign e pt",100,0.,10.,10,0.,100.);
3090 fHistoElePtWS=
new TH2F(
"fHistoElePtWS",
"Wrong-sign e pt",100,0.,10.,10,0.,100.);
3092 fHistoElePtRSMix=
new TH2F(
"fHistoElePtRSMix",
"Right-sign e pt",100,0.,10.,10,0.,100.);
3094 fHistoElePtWSMix=
new TH2F(
"fHistoElePtWSMix",
"Wrong-sign e pt",100,0.,10.,10,0.,100.);
3097 fHistoEleXiMassMCS =
new THnSparseF(
"fHistoEleXiMassMCS",
"",4,bins_base,xmin_base,xmax_base);
3099 fHistoEleXiMassMCS1 =
new THnSparseF(
"fHistoEleXiMassMCS1",
"",4,bins_base,xmin_base,xmax_base);
3101 fHistoEleXiMassMCS2 =
new THnSparseF(
"fHistoEleXiMassMCS2",
"",4,bins_base,xmin_base,xmax_base);
3121 fHistoEleXiMassMCGen =
new THnSparseF(
"fHistoEleXiMassMCGen",
"",4,bins_base,xmin_base,xmax_base);
3123 fHistoEleXiMassvsElePtMCS =
new THnSparseF(
"fHistoEleXiMassvsElePtMCS",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
3127 fHistoEleXiMassvsElePtMCS1 =
new THnSparseF(
"fHistoEleXiMassvsElePtMCS1",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
3131 fHistoEleXiMassvsElePtMCS2 =
new THnSparseF(
"fHistoEleXiMassvsElePtMCS2",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
3135 fHistoElePtMCS=
new TH2F(
"fHistoElePtMCS",
"MC S e pt",100,0.,10.,10,0.,100.);
3137 fHistoElePtMCGen=
new TH2F(
"fHistoElePtMCGen",
"MC Gen e pt",100,0.,10.,10,0.,100.);
3140 Int_t bins_eleptvseta[3]= {50,20 ,10};
3141 Double_t xmin_eleptvseta[3]={0.,-1. ,0.0};
3142 Double_t xmax_eleptvseta[3]={5.,1. ,100};
3144 fHistoElePtvsEtaRS =
new THnSparseF(
"fHistoElePtvsEtaRS",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
3146 fHistoElePtvsEtaWS =
new THnSparseF(
"fHistoElePtvsEtaWS",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
3148 fHistoElePtvsEtaRSMix =
new THnSparseF(
"fHistoElePtvsEtaRSMix",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
3150 fHistoElePtvsEtaWSMix =
new THnSparseF(
"fHistoElePtvsEtaWSMix",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
3152 fHistoElePtvsEtaMCS =
new THnSparseF(
"fHistoElePtvsEtaMCS",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
3154 fHistoElePtvsEtaMCGen =
new THnSparseF(
"fHistoElePtvsEtaMCGen",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
3157 Int_t bins_eleptvsxipt[3]= {50,20 ,10};
3158 Double_t xmin_eleptvsxipt[3]={0.,0. ,0.0};
3159 Double_t xmax_eleptvsxipt[3]={5.,5. ,100};
3161 fHistoElePtvsXiPtRS =
new THnSparseF(
"fHistoElePtvsXiPtRS",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
3163 fHistoElePtvsXiPtWS =
new THnSparseF(
"fHistoElePtvsXiPtWS",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
3165 fHistoElePtvsXiPtRSMix =
new THnSparseF(
"fHistoElePtvsXiPtRSMix",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
3167 fHistoElePtvsXiPtWSMix =
new THnSparseF(
"fHistoElePtvsXiPtWSMix",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
3169 fHistoElePtvsXiPtMCS =
new THnSparseF(
"fHistoElePtvsXiPtMCS",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
3171 fHistoElePtvsXiPtMCGen =
new THnSparseF(
"fHistoElePtvsXiPtMCGen",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
3173 fHistoElePtvsXiPtMCXicGen =
new THnSparseF(
"fHistoElePtvsXiPtMCXicGen",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
3176 Int_t bins_eleptvsxiptvsxicpt[4]= {50,20,10,10};
3177 Double_t xmin_eleptvsxiptvsxicpt[4]={0.,0.,0.,0.0};
3178 Double_t xmax_eleptvsxiptvsxicpt[4]={5.,5.,10.,100};
3179 fHistoElePtvsXiPtvsXicPtMCS =
new THnSparseF(
"fHistoElePtvsXiPtvsXicPtMCS",
"",4,bins_eleptvsxiptvsxicpt,xmin_eleptvsxiptvsxicpt,xmax_eleptvsxiptvsxicpt);
3181 fHistoElePtvsXiPtvsXicPtMCGen =
new THnSparseF(
"fHistoElePtvsXiPtvsXicPtMCGen",
"",4,bins_eleptvsxiptvsxicpt,xmin_eleptvsxiptvsxicpt,xmax_eleptvsxiptvsxicpt);
3184 Int_t bins_eleptvsd0[3]= {50 ,50 ,10};
3185 Double_t xmin_eleptvsd0[3]={0.,-0.2 ,0.0};
3186 Double_t xmax_eleptvsd0[3]={5.,0.2 ,100};
3188 fHistoElePtvsd0RS =
new THnSparseF(
"fHistoElePtvsd0RS",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
3190 fHistoElePtvsd0WS =
new THnSparseF(
"fHistoElePtvsd0WS",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
3192 fHistoElePtvsd0RSMix =
new THnSparseF(
"fHistoElePtvsd0RSMix",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
3194 fHistoElePtvsd0WSMix =
new THnSparseF(
"fHistoElePtvsd0WSMix",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
3196 fHistoElePtvsd0MCS =
new THnSparseF(
"fHistoElePtvsd0MCS",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
3198 fHistoElePtvsd0PromptMCS =
new THnSparseF(
"fHistoElePtvsd0PromptMCS",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
3206 fHistoBachPt =
new TH1F(
"fHistoBachPt",
"Bachelor p_{T}",100,0.0,5.0);
3208 fHistoBachPtMCS =
new TH1F(
"fHistoBachPtMCS",
"Bachelor p_{T}",100,0.0,5.0);
3212 fHistod0Bach =
new TH1F(
"fHistod0Bach",
"Bachelor d_{0}",100,-0.5,0.5);
3214 fHistoXiMassvsPt=
new TH2F(
"fHistoXiMassvsPt",
"Xi mass",100,1.32-0.05,1.32+0.05,20,0.,10.);
3216 fHistoXiMassvsPtMCS=
new TH2F(
"fHistoXiMassvsPtMCS",
"Xi mass",100,1.32-0.05,1.32+0.05,20,0.,10.);
3218 fHistoXiMassvsPtMCGen=
new TH2F(
"fHistoXiMassvsPtMCGen",
"Xi mass",100,1.32-0.05,1.32+0.05,20,0.,10.);
3220 fHistoOmegaMassvsPt=
new TH2F(
"fHistoOmegaMassvsPt",
"Omega mass",100,1.67-0.05,1.67+0.05,20,0.,10.);
3244 for(Int_t i=0;i<8;i++){
3254 Int_t bins_xicmcgen[3]= {100 ,20 ,10};
3255 Double_t xmin_xicmcgen[3]={0.,-1.0 ,0.0};
3256 Double_t xmax_xicmcgen[3]={20.,1.0 ,100};
3257 fHistoXicMCGen =
new THnSparseF(
"fHistoXicMCGen",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
3259 fHistoXicMCGen1 =
new THnSparseF(
"fHistoXicMCGen1",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
3261 fHistoXicMCGen2 =
new THnSparseF(
"fHistoXicMCGen2",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
3263 fHistoXicMCS =
new THnSparseF(
"fHistoXicMCS",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
3265 fHistoXicMCS1 =
new THnSparseF(
"fHistoXicMCS1",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
3267 fHistoXicMCS2 =
new THnSparseF(
"fHistoXicMCS2",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
3270 Int_t bins_elemcgen[3]= {100 ,20 ,10};
3271 Double_t xmin_elemcgen[3]={0.,-1.0 ,0.0};
3272 Double_t xmax_elemcgen[3]={10.,1.0 ,100};
3273 fHistoElectronMCGen =
new THnSparseF(
"fHistoElectronMCGen",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
3275 fHistoXicElectronMCGen =
new THnSparseF(
"fHistoXicElectronMCGen",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
3277 fHistoXicElectronMCGen1 =
new THnSparseF(
"fHistoXicElectronMCGen1",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
3279 fHistoXicElectronMCGen2 =
new THnSparseF(
"fHistoXicElectronMCGen2",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
3281 fHistoXicElectronMCS =
new THnSparseF(
"fHistoXicElectronMCS",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
3283 fHistoXicElectronMCS1 =
new THnSparseF(
"fHistoXicElectronMCS1",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
3285 fHistoXicElectronMCS2 =
new THnSparseF(
"fHistoXicElectronMCS2",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
3288 Int_t bins_ximcgen[3]= {50 ,20 ,10};
3289 Double_t xmin_ximcgen[3]={0.,-1.0 ,0.0};
3290 Double_t xmax_ximcgen[3]={10.,1.0 ,100};
3291 fHistoXiMCGen =
new THnSparseF(
"fHistoXiMCGen",
"",3,bins_ximcgen,xmin_ximcgen,xmax_ximcgen);
3294 fHistoLambdaPtvsDl=
new TH2F(
"fHistoLambdaPtvsDl",
"Lambda pt vs dl",20,0.,10.,20,0.,40.);
3300 fHistoLambdaPtvsDR=
new TH2F(
"fHistoLambdaPtvsDR",
"Lambda pt vs dl",20,0.,10.,80,0.,160.);
3362 for(Int_t ih=0;ih<23;ih++){
3363 Int_t bins_eleptvscutvars[3];
3364 Double_t xmin_eleptvscutvars[3];
3365 Double_t xmax_eleptvscutvars[3];
3367 bins_eleptvscutvars[0] = 20;
3368 xmin_eleptvscutvars[0] = 0.;
3369 xmax_eleptvscutvars[0] = 20.;
3370 bins_eleptvscutvars[2] = 10;
3371 xmin_eleptvscutvars[2] = 0.;
3372 xmax_eleptvscutvars[2] = 100.;
3376 bins_eleptvscutvars[1] = 40;
3377 xmin_eleptvscutvars[1] = 0.;
3378 xmax_eleptvscutvars[1] = 160.;
3379 }
else if(ih==2 || ih==3){
3381 bins_eleptvscutvars[1] = 20;
3382 xmin_eleptvscutvars[1] = -5.;
3383 xmax_eleptvscutvars[1] = 5.;
3386 bins_eleptvscutvars[1] = 30;
3387 xmin_eleptvscutvars[1] = -1.5;
3388 xmax_eleptvscutvars[1] = 1.5;
3391 bins_eleptvscutvars[1] = 7;
3392 xmin_eleptvscutvars[1] = -0.5;
3393 xmax_eleptvscutvars[1] = 6.5;
3396 bins_eleptvscutvars[1] = 50;
3397 xmin_eleptvscutvars[1] = 1.1156-0.03;
3398 xmax_eleptvscutvars[1] = 1.1156+0.03;
3401 bins_eleptvscutvars[1] = 50;
3402 xmin_eleptvscutvars[1] = 1.32-0.03;
3403 xmax_eleptvscutvars[1] = 1.32+0.03;
3404 }
else if(ih==8 || ih==9){
3406 bins_eleptvscutvars[1] = 20;
3407 xmin_eleptvscutvars[1] = 0.;
3408 xmax_eleptvscutvars[1] = 5.;
3409 }
else if(ih==10 || ih==11){
3411 bins_eleptvscutvars[1] = 20;
3412 xmin_eleptvscutvars[1] = 0.;
3413 xmax_eleptvscutvars[1] = 2.;
3414 }
else if(ih==12 || ih==13 || ih==14){
3416 bins_eleptvscutvars[1] = 20;
3417 xmin_eleptvscutvars[1] = 0.;
3418 xmax_eleptvscutvars[1] = 0.5;
3419 }
else if(ih==15 || ih==16){
3421 bins_eleptvscutvars[1] = 20;
3422 xmin_eleptvscutvars[1] = 0.95;
3423 xmax_eleptvscutvars[1] = 1.0;
3424 }
else if(ih==17 || ih==18 || ih==19){
3426 bins_eleptvscutvars[1] = 20;
3427 xmin_eleptvscutvars[1] = -5.;
3428 xmax_eleptvscutvars[1] = 5.;
3429 }
else if(ih==20 || ih==21){
3431 bins_eleptvscutvars[1] = 30;
3432 xmin_eleptvscutvars[1] = -1.5;
3433 xmax_eleptvscutvars[1] = 1.5;
3436 bins_eleptvscutvars[1] = 20;
3437 xmin_eleptvscutvars[1] = 0.;
3438 xmax_eleptvscutvars[1] = 3.141592/2;
3441 fHistoElePtvsCutVarsRS[ih] =
new THnSparseF(Form(
"fHistoElePtvsCutVarsRS[%d]",ih),
"",3,bins_eleptvscutvars,xmin_eleptvscutvars,xmax_eleptvscutvars);
3443 fHistoElePtvsCutVarsWS[ih] =
new THnSparseF(Form(
"fHistoElePtvsCutVarsWS[%d]",ih),
"",3,bins_eleptvscutvars,xmin_eleptvscutvars,xmax_eleptvscutvars);
3445 fHistoElePtvsCutVarsMCS[ih] =
new THnSparseF(Form(
"fHistoElePtvsCutVarsMCS[%d]",ih),
"",3,bins_eleptvscutvars,xmin_eleptvscutvars,xmax_eleptvscutvars);
3449 Int_t bins_eletag[3]= {20 ,40 ,10};
3450 Double_t xmin_eletag[3]={0.,0. ,0.0};
3451 Double_t xmax_eletag[3]={10.,20 ,100};
3452 fHistoElectronPi0Total =
new THnSparseF(
"fHistoElectronPi0Total",
"",3,bins_eletag,xmin_eletag,xmax_eletag);
3454 fHistoElectronPi0Tag =
new THnSparseF(
"fHistoElectronPi0Tag",
"",3,bins_eletag,xmin_eletag,xmax_eletag);
3456 fHistoElectronEtaTotal =
new THnSparseF(
"fHistoElectronEtaTotal",
"",3,bins_eletag,xmin_eletag,xmax_eletag);
3458 fHistoElectronEtaTag =
new THnSparseF(
"fHistoElectronEtaTag",
"",3,bins_eletag,xmin_eletag,xmax_eletag);
3472 if(!casc)
return 0x0;
3473 if(!part)
return 0x0;
3474 if(!aod)
return 0x0;
3479 AliAODVertex *primVertexAOD;
3480 Bool_t unsetvtx = kFALSE;
3484 primVertexAOD =
fVtx1;
3489 primVertexAOD =
fVtx1;
3491 if(!primVertexAOD)
return 0x0;
3492 Double_t posprim[3]; primVertexAOD->GetXYZ(posprim);
3497 AliESDtrack *esdtrack =
new AliESDtrack((AliVTrack*)partpid);
3499 Double_t xyz[3], pxpypz[3], cv[21]; Short_t sign;
3500 xyz[0]=casc->DecayVertexXiX();
3501 xyz[1]=casc->DecayVertexXiY();
3502 xyz[2]=casc->DecayVertexXiZ();
3503 pxpypz[0]=casc->MomXiX();
3504 pxpypz[1]=casc->MomXiY();
3505 pxpypz[2]=casc->MomXiZ();
3506 casc->GetCovarianceXYZPxPyPz(cv);
3507 sign=casc->ChargeXi();
3508 AliExternalTrackParam *trackCasc =
new AliExternalTrackParam(xyz,pxpypz,cv,sign);
3510 Double_t xdummy, ydummy;
3511 Double_t dca = esdtrack->GetDCA(trackCasc,
fBzkG,xdummy,ydummy);
3518 Double_t d0z0bach[2],covd0z0bach[3];
3519 if(sqrt(pow(secVert->GetX(),2)+pow(secVert->GetY(),2))<1.){
3520 part->PropagateToDCA(secVert,
fBzkG,kVeryBig,d0z0bach,covd0z0bach);
3521 trackCasc->PropagateToDCA(secVert,
fBzkG,kVeryBig);
3523 part->PropagateToDCA(primVertexAOD,
fBzkG,kVeryBig,d0z0bach,covd0z0bach);
3524 trackCasc->PropagateToDCA(primVertexAOD,
fBzkG,kVeryBig);
3526 Double_t momcasc_new[3]={-9999,-9999,-9999.};
3527 trackCasc->GetPxPyPz(momcasc_new);
3529 Double_t px[2],py[2],pz[2];
3530 px[0] = part->Px(); py[0] = part->Py(); pz[0] = part->Pz();
3531 px[1] = momcasc_new[0]; py[1] = momcasc_new[1]; pz[1] = momcasc_new[2];
3536 Double_t d0[3],d0err[3];
3538 part->PropagateToDCA(primVertexAOD,
fBzkG,kVeryBig,d0z0bach,covd0z0bach);
3540 d0err[0] = TMath::Sqrt(covd0z0bach[0]);
3542 Double_t d0z0casc[2],covd0z0casc[3];
3543 trackCasc->PropagateToDCA(primVertexAOD,
fBzkG,kVeryBig,d0z0casc,covd0z0casc);
3545 d0err[1] = TMath::Sqrt(covd0z0casc[0]);
3550 Short_t
charge = part->Charge();
3554 if(unsetvtx)
delete primVertexAOD; primVertexAOD=NULL;
3555 if(esdtrack)
delete esdtrack;
3556 if(trackCasc)
delete trackCasc;
3560 UShort_t
id[2]={(UShort_t)part->GetID(),(UShort_t)trackCasc->GetID()};
3563 theCascade->GetSecondaryVtx()->AddDaughter(part);
3564 theCascade->GetSecondaryVtx()->AddDaughter(casc);
3565 if(unsetvtx)
delete primVertexAOD; primVertexAOD=NULL;
3566 if(esdtrack)
delete esdtrack;
3567 if(trackCasc)
delete trackCasc;
3580 TObjArray *TrackArray =
new TObjArray(3);
3582 AliESDtrack *cptrk1 =
new AliESDtrack((AliVTrack*)trk);
3583 TrackArray->AddAt(cptrk1,0);
3585 AliESDtrack *cascptrack =
new AliESDtrack((AliVTrack*)casc->GetDaughter(0));
3586 TrackArray->AddAt(cascptrack,1);
3587 AliESDtrack *cascntrack =
new AliESDtrack((AliVTrack*)casc->GetDaughter(1));
3588 TrackArray->AddAt(cascntrack,2);
3589 AliESDtrack *cascbtrack =
new AliESDtrack((AliVTrack*)casc->GetDecayVertexXi()->GetDaughter(0));
3590 TrackArray->AddAt(cascbtrack,3);
3594 for(Int_t i=0;i<4;i++)
3596 AliESDtrack *tesd = (AliESDtrack*)TrackArray->UncheckedAt(i);
3599 TrackArray->Clear();
3614 Bool_t fRecoPrimVtxSkippingTrks = kTRUE;
3615 Bool_t fRmTrksFromPrimVtx = kFALSE;
3617 AliESDVertex *vertexESD = 0;
3618 AliAODVertex *vertexAOD = 0;
3623 if(!fRecoPrimVtxSkippingTrks && !fRmTrksFromPrimVtx) {
3626 vertexESD =
new AliESDVertex(*
fV1);
3631 Int_t nTrks = trkArray->GetEntriesFast();
3632 AliVertexerTracks *vertexer =
new AliVertexerTracks(event->GetMagneticField());
3634 if(fRecoPrimVtxSkippingTrks) {
3637 if(strstr(
fV1->GetTitle(),
"VertexerTracksWithConstraint")) {
3638 Float_t diamondcovxy[3];
3639 event->GetDiamondCovXY(diamondcovxy);
3640 Double_t pos[3]={
event->GetDiamondX(),
event->GetDiamondY(),0.};
3641 Double_t cov[6]={diamondcovxy[0],diamondcovxy[1],diamondcovxy[2],0.,0.,10.*10.};
3642 AliESDVertex *diamond =
new AliESDVertex(pos,cov,1.,1);
3643 vertexer->SetVtxStart(diamond);
3644 delete diamond; diamond=NULL;
3645 if(strstr(
fV1->GetTitle(),
"VertexerTracksWithConstraintOnlyFitter"))
3646 vertexer->SetOnlyFitter();
3648 Int_t skipped[1000];
3649 Int_t nTrksToSkip=0,id;
3650 AliExternalTrackParam *t = 0;
3651 for(Int_t i=0; i<nTrks; i++) {
3652 t = (AliExternalTrackParam*)trkArray->UncheckedAt(i);
3653 id = (Int_t)t->GetID();
3655 skipped[nTrksToSkip++] = id;
3659 Double_t covtest[21];
3660 for(Int_t j=0; j<
event->GetNumberOfTracks(); j++) {
3661 AliVTrack *vtrack = (AliVTrack*)event->GetTrack(j);
3662 if(!vtrack->GetCovarianceXYZPxPyPz(covtest)) {
3663 id = (Int_t)vtrack->GetID();
3665 skipped[nTrksToSkip++] = id;
3668 for(Int_t ijk=nTrksToSkip; ijk<1000; ijk++) skipped[ijk]=-1;
3670 vertexer->SetSkipTracks(nTrksToSkip,skipped);
3671 vertexESD = (AliESDVertex*)vertexer->FindPrimaryVertex(event);
3673 }
else if(fRmTrksFromPrimVtx && nTrks>0) {
3676 TObjArray rmArray(nTrks);
3677 UShort_t *rmId =
new UShort_t[nTrks];
3678 AliESDtrack *esdTrack = 0;
3680 for(Int_t i=0; i<nTrks; i++) {
3681 t = (AliESDtrack*)trkArray->UncheckedAt(i);
3682 esdTrack =
new AliESDtrack(*t);
3683 rmArray.AddLast(esdTrack);
3684 if(esdTrack->GetID()>=0) {
3685 rmId[i]=(UShort_t)esdTrack->GetID();
3690 Float_t diamondxy[2]={
static_cast<Float_t
>(
event->GetDiamondX()),static_cast<Float_t>(event->GetDiamondY())};
3691 vertexESD = vertexer->RemoveTracksFromVertex(
fV1,&rmArray,rmId,diamondxy);
3692 delete [] rmId; rmId=NULL;
3697 delete vertexer; vertexer=NULL;
3698 if(!vertexESD)
return vertexAOD;
3699 if(vertexESD->GetNContributors()<=0) {
3701 delete vertexESD; vertexESD=NULL;
3709 Double_t pos[3],cov[6],chi2perNDF;
3710 vertexESD->GetXYZ(pos);
3711 vertexESD->GetCovMatrix(cov);
3712 chi2perNDF = vertexESD->GetChi2toNDF();
3713 delete vertexESD; vertexESD=NULL;
3715 vertexAOD =
new AliAODVertex(pos,cov,chi2perNDF);
3727 AliAODVertex *primVertexAOD;
3728 Bool_t unsetvtx = kFALSE;
3732 primVertexAOD =
fVtx1;
3737 primVertexAOD =
fVtx1;
3739 if(!primVertexAOD)
return 0x0;
3741 AliESDVertex * vertexESD =
new AliESDVertex(*
fV1);
3743 Double_t pos[3],cov[6],chi2perNDF;
3744 vertexESD->GetXYZ(pos);
3745 vertexESD->GetCovMatrix(cov);
3746 chi2perNDF = vertexESD->GetChi2toNDF();
3747 delete vertexESD; vertexESD=NULL;
3749 AliAODVertex *secVert =
new AliAODVertex(pos,cov,chi2perNDF);
3759 for(Int_t i=0;i<100;i++){
3760 pdgarray_ele[i] = -9999;
3761 labelarray_ele[i] = -9999;
3762 pdgarray_casc[i] = -9999;
3763 labelarray_casc[i] = -9999;
3768 AliVTrack *trk =
dynamic_cast<AliVTrack*
>(exobj->
GetBachelor());
3770 Int_t labEle = trk->GetLabel();
3771 if(labEle<0)
return -1;
3772 AliAODMCParticle *mcetrk = (AliAODMCParticle*)mcArray->At(labEle);
3773 if(!mcetrk)
return -1;
3774 labelarray_ele[0] = labEle;
3775 pdgarray_ele[0] = mcetrk->GetPdgCode();
3778 AliAODMCParticle *mcprimele=0;
3780 while(mcprimele->GetMother()>=0) {
3781 Int_t labprim_ele=mcprimele->GetMother();
3782 AliAODMCParticle *tmcprimele = (AliAODMCParticle*)mcArray->At(labprim_ele);
3787 mcprimele = tmcprimele;
3788 pdgarray_ele[ngen_ele] = mcprimele->GetPdgCode();
3789 labelarray_ele[ngen_ele] = labprim_ele;
3791 if(ngen_ele==100)
break;
3794 AliAODcascade *theCascade =
dynamic_cast<AliAODcascade*
>(exobj->
GetCascade());
3795 if(!theCascade)
return -1;
3797 Int_t pdgDgcasc[2]={211,3122};
3798 Int_t pdgDgv0[2]={2212,211};
3799 Int_t labcasc =
MatchToMCCascade(theCascade,3312,pdgDgcasc,pdgDgv0,mcArray);
3800 if(labcasc<0)
return -1;
3802 AliAODMCParticle *mccasc = (AliAODMCParticle*)mcArray->At(labcasc);
3803 if(!mccasc)
return -1;
3804 labelarray_casc[0] = labcasc;
3805 pdgarray_casc[0] = mccasc->GetPdgCode();
3808 AliAODMCParticle *mcprimcasc=0;
3809 mcprimcasc = mccasc;
3810 while(mcprimcasc->GetMother()>=0) {
3811 Int_t labprim_casc=mcprimcasc->GetMother();
3812 AliAODMCParticle *tmcprimcasc = (AliAODMCParticle*)mcArray->At(labprim_casc);
3817 mcprimcasc = tmcprimcasc;
3818 pdgarray_casc[ngen_casc] = mcprimcasc->GetPdgCode();
3819 labelarray_casc[ngen_casc] = labprim_casc;
3821 if(ngen_casc==100)
break;
3824 Bool_t same_flag = kFALSE;
3825 Int_t matchedlabel=-9999;
3826 for(Int_t iemc=0;iemc<ngen_ele;iemc++){
3827 for(Int_t ivmc=0;ivmc<ngen_casc;ivmc++){
3828 if(labelarray_ele[iemc]==labelarray_casc[ivmc]){
3830 matchedlabel = labelarray_ele[iemc];
3834 if(same_flag)
break;
3837 return matchedlabel;
3847 AliAODTrack *cptrack = (AliAODTrack*) theCascade->GetDaughter(0);
3848 if(!cptrack)
return -1;
3849 Int_t label_p = TMath::Abs(cptrack->GetLabel());
3850 if(label_p<0)
return -1;
3851 AliAODTrack *cntrack = (AliAODTrack*) theCascade->GetDaughter(1);
3852 if(!cntrack)
return -1;
3853 Int_t label_n = TMath::Abs(cntrack->GetLabel());
3854 if(label_n<0)
return -1;
3855 Int_t labv0 = theCascade->MatchToMC(pdgDgcasc[1],mcArray,2,pdgDgv0);
3856 if(labv0<0)
return -1;
3857 AliAODMCParticle *mcpartv0= (AliAODMCParticle*) mcArray->At(labv0);
3859 AliAODTrack *cbtrack = (AliAODTrack*) theCascade->GetDecayVertexXi()->GetDaughter(0);
3860 if(!cbtrack)
return -1;
3862 Int_t label_b = TMath::Abs(cbtrack->GetLabel());
3863 if(label_b<0)
return -1;
3865 AliAODMCParticle *mcpartb= (AliAODMCParticle*) mcArray->At(label_b);
3866 Int_t pdgb = TMath::Abs(mcpartb->GetPdgCode());
3867 if(pdgb!=pdgDgcasc[0])
return -1;
3869 AliAODMCParticle *mcmotherv0=mcpartv0;
3870 Bool_t isFromXiv0 = kFALSE;
3871 Int_t labxiv0 = mcmotherv0->GetMother();
3872 if(labxiv0<0)
return -1;
3873 mcmotherv0 = (AliAODMCParticle*) mcArray->At(labxiv0);
3875 Int_t
pdg = TMath::Abs(mcmotherv0 ->GetPdgCode());
3876 if(pdg==pdgabscasc){
3880 if(!isFromXiv0)
return -1;
3882 AliAODMCParticle *mcmotherb=mcpartb;
3883 Bool_t isFromXib = kFALSE;
3884 Int_t labxib = mcmotherb->GetMother();
3885 if(labxib<0)
return -1;
3886 mcmotherb = (AliAODMCParticle*) mcArray->At(labxib);
3888 Int_t
pdg = TMath::Abs(mcmotherb ->GetPdgCode());
3889 if(pdg==pdgabscasc){
3893 if(!isFromXib)
return -1;
3895 if(labxiv0!=labxib)
return -1;
3907 if(trkEntries==0)
return;
3910 for(Int_t i=0; i<trkEntries; i++) {
3911 seleFlags[i] = kFALSE;
3914 track = (AliVTrack*)event->GetTrack(i);
3917 Double_t covtest[21];
3918 if(!track->GetCovarianceXYZPxPyPz(covtest))
continue;
3922 AliAODTrack *aodt = (AliAODTrack*)track;
3927 if(!aodt->TestFilterBit(BIT(filterbit)))
continue;
3929 if(!aodt->TestFilterMask(BIT(filterbit)))
continue;
3933 AliAODTrack *aodtpid = 0;
3935 aodtpid =
fGTI[-aodt->GetID()-1];
3940 Double_t nsigma_tpcele = -9999;
3941 Double_t nsigma_tofele = -9999;
3950 if(fabs(nsigma_tofele)<3.){
3952 Double_t eleeta = aodt->Eta();
3953 if(fabs(eleeta)<0.6)
3955 if(fabs(eleeta)>0.6 && fabs(eleeta)<0.8)
3957 if(eleeta>-0.8 && eleeta<-0.6){
3959 }
else if(eleeta>-0.6&&eleeta<-0.4){
3961 }
else if(eleeta>-0.4&&eleeta<-0.2){
3963 }
else if(eleeta>-0.2&&eleeta<0.0){
3965 }
else if(eleeta>0.0&&eleeta<0.2){
3967 }
else if(eleeta>0.2&&eleeta<0.4){
3969 }
else if(eleeta>0.4&&eleeta<0.6){
3971 }
else if(eleeta>0.6&&eleeta<0.8){
3975 if(nsigma_tpcele>-0.5&&nsigma_tpcele<3.){
3985 Double_t minmass_ee = 9999.;
3990 Int_t labEle = aodt->GetLabel();
3992 seleFlags[i]=kFALSE;
3995 AliAODMCParticle *mcetrk = (AliAODMCParticle*)mcArray->At(labEle);
3997 seleFlags[i]=kFALSE;
4000 Int_t pdgEle = mcetrk->GetPdgCode();
4001 if(abs(pdgEle)!=11){
4002 seleFlags[i]=kFALSE;
4006 Int_t pdgarray_ele[100], labelarray_ele[100], ngen_ele;
4009 Bool_t hfe_flag = kFALSE;
4010 Bool_t gamma_flag = kFALSE;
4011 Bool_t pi0_flag = kFALSE;
4012 Bool_t eta_flag = kFALSE;
4013 Double_t pt_pi0 = -9999.;
4014 Double_t pt_eta = -9999.;
4015 if(abs(pdgarray_ele[0])>400&&abs(pdgarray_ele[0])<440){
4018 if(abs(pdgarray_ele[0])>4000&&abs(pdgarray_ele[0])<4400){
4021 if(abs(pdgarray_ele[0])>500&&abs(pdgarray_ele[0])<540){
4024 if(abs(pdgarray_ele[0])>5000&&abs(pdgarray_ele[0])<5400){
4027 if(abs(pdgarray_ele[0])==22){
4033 if((abs(pdgarray_ele[0])==22) && (abs(pdgarray_ele[1])==111)){
4035 AliAODMCParticle *mctrkm = (AliAODMCParticle*)mcArray->At(labelarray_ele[1]);
4036 pt_pi0 = mctrkm->Pt();
4038 if(abs(pdgarray_ele[0])==111){
4040 AliAODMCParticle *mctrkm = (AliAODMCParticle*)mcArray->At(labelarray_ele[0]);
4041 pt_pi0 = mctrkm->Pt();
4043 if((abs(pdgarray_ele[0])==22) && (abs(pdgarray_ele[1])==221)){
4045 AliAODMCParticle *mctrkm = (AliAODMCParticle*)mcArray->At(labelarray_ele[1]);
4046 pt_eta = mctrkm->Pt();
4048 if(abs(pdgarray_ele[0])==221){
4050 AliAODMCParticle *mctrkm = (AliAODMCParticle*)mcArray->At(labelarray_ele[0]);
4051 pt_eta = mctrkm->Pt();
4055 Double_t cont_pi0[3];
4056 cont_pi0[0] = aodt->Pt();
4057 cont_pi0[1] = pt_pi0;
4064 Double_t cont_eta[3];
4065 cont_eta[0] = aodt->Pt();
4066 cont_eta[1] = pt_eta;
4073 seleFlags[i]=kFALSE;
4109 Double_t primVtx[3];
4110 fVtx1->GetXYZ(primVtx);
4113 for(Int_t icasc=0;icasc<nCascs;icasc++)
4115 seleCascFlags[icasc] = kFALSE;
4116 AliAODcascade *casc = ((AliAODEvent*)event)->GetCascade(icasc);
4120 seleCascFlags[icasc] = kTRUE;
4134 if(theBinZ<0 || theBinZ>=
fNzVtxBins)
return -1;
4136 if(theBinM<0 || theBinM>=
fNCentBins)
return -1;
4144 if(poolIndex<0 || poolIndex>=
fNOfPools)
return;
4146 fEventBuffer[poolIndex]=
new TTree(Form(
"EventBuffer_%d",poolIndex),
"Temporary buffer for event mixing");
4171 TObjArray* c1array=0x0;
4172 TObjArray* c2array=0x0;
4173 TObjArray* c1varsarray=0x0;
4174 TObjArray* c2varsarray=0x0;
4175 Float_t zVertex,cent;
4176 TObjString* eventInfo=0x0;
4177 fEventBuffer[poolIndex]->SetBranchAddress(
"zVertex", &zVertex);
4178 fEventBuffer[poolIndex]->SetBranchAddress(
"eventInfo",&eventInfo);
4179 fEventBuffer[poolIndex]->SetBranchAddress(
"centrality", ¢);
4180 fEventBuffer[poolIndex]->SetBranchAddress(
"c1array", &c1array);
4181 fEventBuffer[poolIndex]->SetBranchAddress(
"c2array", &c2array);
4182 fEventBuffer[poolIndex]->SetBranchAddress(
"c1varsarray", &c1varsarray);
4183 fEventBuffer[poolIndex]->SetBranchAddress(
"c2varsarray", &c2varsarray);
4184 for (Int_t i=0; i<nEle; i++)
4191 fEventBuffer[poolIndex]->GetEvent(iEv + nEvents - fNumberOfEventsForMixing);
4193 Int_t nCascs1=c1array->GetEntries();
4204 for(Int_t iTr1=0; iTr1<nCascs1; iTr1++){
4205 TLorentzVector* casc1=(TLorentzVector*) c1array->At(iTr1);
4206 if(!casc1)
continue;
4207 TVector *cascvarsarray = (TVector*) c1varsarray->At(iTr1);
4212 Int_t nCascs2=c2array->GetEntries();
4213 for(Int_t iTr2=0; iTr2<nCascs2; iTr2++){
4214 TLorentzVector* casc2=(TLorentzVector*) c2array->At(iTr2);
4215 if(!casc2)
continue;
4216 TVector *cascvarsarray = (TVector*) c2varsarray->At(iTr2);
4232 Int_t nmcpart = mcArray->GetEntriesFast();
4234 Int_t mcevttype = 0;
4236 Bool_t sigmaevent = kFALSE;
4243 Int_t ncbarquark = 0;
4244 Double_t phi_c = -9999.;
4245 Double_t phi_cbar = -9999.;
4246 for(Int_t i=0;i<nmcpart;i++)
4248 AliAODMCParticle *mcpart = (AliAODMCParticle*) mcArray->At(i);
4249 if(TMath::Abs(mcpart->GetPdgCode())==4){
4250 if(fabs(mcpart->Y())<1.5){
4251 if(mcpart->GetPdgCode()==4){
4252 phi_c = mcpart->Phi();
4255 if(mcpart->GetPdgCode()==-4){
4256 phi_cbar = mcpart->Phi();
4261 }
else if(mcevttype==1){
4263 }
else if(mcevttype==2){
4265 }
else if(mcevttype==3){
4271 if(TMath::Abs(mcpart->GetPdgCode())==5){
4272 if(!mcpart->IsPhysicalPrimary())
continue;
4273 if(fabs(mcpart->Y())<1.5){
4276 }
else if(mcevttype==1){
4278 }
else if(mcevttype==2){
4280 }
else if(mcevttype==3){
4288 if((mcevttype==2)||(mcevttype==0)||(mcevttype==3))
return kFALSE;
4290 if((mcevttype==1)||(mcevttype==0)||(mcevttype==3))
return kFALSE;
4294 if(ncquark!=1)
return kFALSE;
4295 if(ncbarquark!=1)
return kFALSE;
4296 Double_t dphi = fabs(phi_c - phi_cbar);
4297 if(dphi>2*M_PI) dphi -= 2*M_PI;
4298 if(dphi>M_PI) dphi = 2*M_PI-dphi;
4308 for(Int_t i=0;i<nmcpart;i++)
4310 AliAODMCParticle *mcpart = (AliAODMCParticle*) mcArray->At(i);
4311 if(TMath::Abs(mcpart->GetPdgCode())==4132){
4312 Bool_t e_flag = kFALSE;
4313 Bool_t xi_flag = kFALSE;
4314 AliAODMCParticle *mcepart = 0;
4315 AliAODMCParticle *mccascpart = 0;
4316 for(Int_t idau=mcpart->GetFirstDaughter();idau<mcpart->GetLastDaughter()+1;idau++)
4319 AliAODMCParticle *mcdau = (AliAODMCParticle*) mcArray->At(idau);
4320 if(!mcdau)
continue;
4321 if(TMath::Abs(mcdau->GetPdgCode())==11){
4325 if(TMath::Abs(mcdau->GetPdgCode())==3312){
4331 Int_t decaytype = -9999;
4332 if(e_flag && xi_flag) decaytype = 0;
4336 if(!e_flag&&xi_flag)
4338 if(e_flag&&!xi_flag)
4340 if(!e_flag&&!xi_flag)
4345 if(TMath::Abs(mcpart->GetPdgCode())==11 && mcpart->GetStatus()==1){
4348 esdcuts->GetEtaRange(etamin,etamax);
4349 if(fabs(mcpart->Eta())<etamax){
4350 Bool_t gamma_flag = kFALSE;
4351 Int_t labmother = mcpart->GetMother();
4353 AliAODMCParticle *mcmother = (AliAODMCParticle*) mcArray->At(labmother);
4354 Int_t pdgmother = mcmother->GetPdgCode();
4355 if(TMath::Abs(pdgmother)==22) gamma_flag = kTRUE;
4361 if(TMath::Abs(mcpart->GetPdgCode())==3312){
4366 if((fabs(mcpart->Y())<rapmax) && (fabs(mcpart->Eta())<etamax)){
4375 for(Int_t i=0;i<nmcpart;i++)
4377 AliAODMCParticle *mcparte = (AliAODMCParticle*) mcArray->At(i);
4378 if(!mcparte)
continue;
4379 if(TMath::Abs(mcparte->GetPdgCode())!=11)
continue;
4380 if(mcparte->GetStatus()!=1)
continue;
4381 if(mcparte->Pt()<0.4)
continue;
4382 if(fabs(mcparte->Eta())>0.8)
continue;
4383 for(Int_t j=0;j<nmcpart;j++)
4385 AliAODMCParticle *mcpartv = (AliAODMCParticle*) mcArray->At(j);
4386 if(!mcpartv)
continue;
4387 if(TMath::Abs(mcpartv->GetPdgCode())!=3312)
continue;
4388 if(mcpartv->Pt()<0.4)
continue;
4389 if(fabs(mcpartv->Eta())>0.8)
continue;
4390 if(mcpartv->GetNDaughters()!=2)
continue;
4408 const char* nameoutput = GetOutputSlot(11)->GetContainer()->GetName();
4412 TString * fCandidateVariableNames =
new TString[nVar];
4414 fCandidateVariableNames[ 0] =
"InvMassEleXi";
4415 fCandidateVariableNames[ 1] =
"EleXiPx";
4416 fCandidateVariableNames[ 2] =
"EleXiPy";
4417 fCandidateVariableNames[ 3] =
"EleXiPz";
4418 fCandidateVariableNames[ 4] =
"ElePdgCode";
4419 fCandidateVariableNames[ 5] =
"ElePx";
4420 fCandidateVariableNames[ 6] =
"ElePy";
4421 fCandidateVariableNames[ 7] =
"ElePz";
4422 fCandidateVariableNames[ 8] =
"XiPdgCode";
4423 fCandidateVariableNames[ 9] =
"XiPx";
4424 fCandidateVariableNames[10] =
"XiPy";
4425 fCandidateVariableNames[11] =
"XiPz";
4426 fCandidateVariableNames[12] =
"SameFlag";
4427 fCandidateVariableNames[13] =
"EleNGeneration";
4428 fCandidateVariableNames[14] =
"EleGen1PDG";
4429 fCandidateVariableNames[15] =
"EleGen2PDG";
4430 fCandidateVariableNames[16] =
"EleGen3PDG";
4431 fCandidateVariableNames[17] =
"EleGen4PDG";
4432 fCandidateVariableNames[18] =
"EleGen5PDG";
4433 fCandidateVariableNames[19] =
"EleGen6PDG";
4434 fCandidateVariableNames[20] =
"EleGen7PDG";
4435 fCandidateVariableNames[21] =
"EleGen8PDG";
4436 fCandidateVariableNames[22] =
"EleGen9PDG";
4437 fCandidateVariableNames[23] =
"EleGen10PDG";
4438 fCandidateVariableNames[24] =
"ElePrimPDG";
4439 fCandidateVariableNames[25] =
"XiNGeneration";
4440 fCandidateVariableNames[26] =
"XiGen1PDG";
4441 fCandidateVariableNames[27] =
"XiGen2PDG";
4442 fCandidateVariableNames[28] =
"XiGen3PDG";
4443 fCandidateVariableNames[29] =
"XiGen4PDG";
4444 fCandidateVariableNames[30] =
"XiGen5PDG";
4445 fCandidateVariableNames[31] =
"XiGen6PDG";
4446 fCandidateVariableNames[32] =
"XiGen7PDG";
4447 fCandidateVariableNames[33] =
"XiGen8PDG";
4448 fCandidateVariableNames[34] =
"XiGen9PDG";
4449 fCandidateVariableNames[35] =
"XiGen10PDG";
4450 fCandidateVariableNames[36] =
"XiPrimPDG";
4451 fCandidateVariableNames[37] =
"MatchedPDG";
4453 for (Int_t ivar=0; ivar<nVar; ivar++) {
4465 for(Int_t i=0;i<38;i++){
4469 TLorentzVector vele, vxi, vexi;
4470 vele.SetXYZM(mcparte->Px(),mcparte->Py(),mcparte->Pz(),0.000510998928);
4471 vxi.SetXYZM(mcpartv->Px(),mcpartv->Py(),mcpartv->Pz(),1.32171);
4474 Int_t pdgarray_ele[100], labelarray_ele[100], ngen_ele;
4475 Int_t pdgarray_xi[100], labelarray_xi[100], ngen_xi;
4479 Bool_t same_flag = kFALSE;
4480 Int_t matched_pdg = -999999;
4481 for(Int_t iemc=0;iemc<ngen_ele;iemc++){
4482 for(Int_t ivmc=0;ivmc<ngen_xi;ivmc++){
4483 if(labelarray_ele[iemc]==labelarray_xi[ivmc]){
4485 matched_pdg = pdgarray_ele[iemc];
4489 if(same_flag)
break;
4491 Int_t pdgprim_ele = pdgarray_ele[ngen_ele-1];
4492 Int_t pdgprim_xi = pdgarray_xi[ngen_xi-1];
4543 const char* nameoutput = GetOutputSlot(12)->GetContainer()->GetName();
4547 TString * fCandidateVariableNames =
new TString[nVar];
4549 fCandidateVariableNames[0] =
"XiPt";
4550 fCandidateVariableNames[1] =
"ElePt";
4551 fCandidateVariableNames[2] =
"DeltaPhi";
4552 fCandidateVariableNames[3] =
"DeltaEta";
4553 fCandidateVariableNames[4] =
"V0ProperDecayLength";
4554 fCandidateVariableNames[5] =
"Eled0";
4555 fCandidateVariableNames[6] =
"FGMixMC";
4556 fCandidateVariableNames[7] =
"SignType";
4557 fCandidateVariableNames[8] =
"Convtype";
4558 fCandidateVariableNames[9] =
"MCType";
4559 fCandidateVariableNames[10] =
"Centrality";
4562 for (Int_t ivar=0; ivar<nVar; ivar++) {
4575 for(Int_t i=0;i<100;i++){
4576 pdgarray[i] = -9999;
4577 labelarray[i] = -9999;
4581 AliAODMCParticle *mcprim = mcpart;
4582 while(mcprim->GetMother()>=0) {
4583 Int_t lab_prim=mcprim->GetMother();
4585 AliAODMCParticle *tmcprim = (AliAODMCParticle*)mcArray->At(lab_prim);
4589 if((TMath::Abs(tmcprim->GetPdgCode())<10) || (TMath::Abs(tmcprim->GetPdgCode())==21))
break;
4593 pdgarray[ngen] = mcprim->GetPdgCode();
4594 labelarray[ngen] = lab_prim;
4597 if(ngen == 100)
break;
4608 if(track->GetID()<0){
4615 printf(
"Warning: track ID too big for buffer: ID: %d, buffer %d\n"
4621 if(
fGTI[track->GetID()]){
4624 if( (!track->GetFilterMap()) &&
4625 (!track->GetTPCNcls()) )
4633 if(
fGTI[track->GetID()]->GetFilterMap() ||
4634 fGTI[track->GetID()]->GetTPCNcls() ){
4636 printf(
"Warning! global track info already there!");
4637 printf(
" TPCNcls track1 %u track2 %u",
4638 (
fGTI[track->GetID()])->GetTPCNcls(),track->GetTPCNcls());
4639 printf(
" FilterMap track1 %u track2 %u\n",
4640 (
fGTI[track->GetID()])->GetFilterMap(),track->GetFilterMap());
4652 (
fGTI[track->GetID()]) = track;
4653 (
fGTIndex[track->GetID()]) = index;
4669 if(abs(history[1])==411)
return 1;
4670 if(abs(history[1])==421)
return 1;
4671 if(abs(history[1])==431)
return 1;
4672 if(abs(history[1])==4122)
return 1;
4673 if(abs(history[1])==4132)
return 1;
4674 if(abs(history[1])==4232)
return 1;
4675 if(abs(history[1])==4332)
return 1;
4677 if(abs(history[1])==511)
return 2;
4678 if(abs(history[1])==521)
return 2;
4679 if(abs(history[1])==531)
return 2;
4680 if(abs(history[1])==5122)
return 2;
4681 if(abs(history[1])==5132)
return 2;
4682 if(abs(history[1])==5232)
return 2;
4683 if(abs(history[1])==5332)
return 2;
4692 for(Int_t ih=0;ih<10;ih++){
4693 if(abs(history[ih])==411)
return kTRUE;
4694 if(abs(history[ih])==421)
return kTRUE;
4695 if(abs(history[ih])==431)
return kTRUE;
4696 if(abs(history[ih])==4122)
return kTRUE;
4697 if(abs(history[ih])==4132)
return kTRUE;
4698 if(abs(history[ih])==4232)
return kTRUE;
4699 if(abs(history[ih])==4332)
return kTRUE;
4708 for(Int_t ih=0;ih<10;ih++){
4709 if(abs(history[ih])==511)
return kTRUE;
4710 if(abs(history[ih])==521)
return kTRUE;
4711 if(abs(history[ih])==531)
return kTRUE;
4712 if(abs(history[ih])==5122)
return kTRUE;
4713 if(abs(history[ih])==5132)
return kTRUE;
4714 if(abs(history[ih])==5232)
return kTRUE;
4715 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
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)
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
THnSparse * fHistoEleXiMassvsElePtWSMix
! e-Xi mass-ept spectra (wrong-sign)
TObjArray * fElectronCutVarsArray
array of xi-compatible tracks
TH2D * fHistodPhiSdEtaSElectronProtonR125WS
! dPhiS vs dEtaS R125 WS
THnSparse * fHistoEleXiMassRS1Away
! e-Xi mass spectra (right-sign)
THnSparse * fHistoEleXiMassMCS1
! e-Xi mass spectra (Efficiency numerator)
Bool_t fIsMB
Reconstruct primary vertex excluding candidate tracks.
THnSparse * fHistoEleXiMassRSMix2Away
! e-Xi mass spectra (right-sign)
THnSparse * fHistoEleXiMassWS1Away
! e-Xi mass spectra (wrong-sign)