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 fReconstructPrimVert(kFALSE),
115 fCandidateVariables(),
116 fCandidateEleVariables(),
117 fCandidateCascVariables(),
118 fCandidateMCVariables(),
119 fCandidateMCEleVariables(),
120 fCandidateMCCascVariables(),
121 fCandidateMCGenPairVariables(),
129 fUseCentralityV0M(kFALSE),
132 fMCDoPairAnalysis(kFALSE),
134 fHistoEleXiMassRS(0),
135 fHistoEleXiMassWS(0),
136 fHistoEleXiMassRSMix(0),
137 fHistoEleXiMassWSMix(0),
138 fHistoEleXiMassRSSide(0),
139 fHistoEleXiMassWSSide(0),
140 fHistoEleXiMassRS1(0),
141 fHistoEleXiMassWS1(0),
142 fHistoEleXiMassRSMix1(0),
143 fHistoEleXiMassWSMix1(0),
144 fHistoEleXiMassRSSide1(0),
145 fHistoEleXiMassWSSide1(0),
146 fHistoEleXiMassRS2(0),
147 fHistoEleXiMassWS2(0),
148 fHistoEleXiMassRSMix2(0),
149 fHistoEleXiMassWSMix2(0),
150 fHistoEleXiMassRSSide2(0),
151 fHistoEleXiMassWSSide2(0),
152 fHistoEleXiMassAway(0),
153 fHistoEleXiMassRSAway(0),
154 fHistoEleXiMassWSAway(0),
155 fHistoEleXiMassRSMixAway(0),
156 fHistoEleXiMassWSMixAway(0),
157 fHistoEleXiMassRSSideAway(0),
158 fHistoEleXiMassWSSideAway(0),
159 fHistoEleXiMassRS1Away(0),
160 fHistoEleXiMassWS1Away(0),
161 fHistoEleXiMassRSMix1Away(0),
162 fHistoEleXiMassWSMix1Away(0),
163 fHistoEleXiMassRSSide1Away(0),
164 fHistoEleXiMassWSSide1Away(0),
165 fHistoEleXiMassRS2Away(0),
166 fHistoEleXiMassWS2Away(0),
167 fHistoEleXiMassRSMix2Away(0),
168 fHistoEleXiMassWSMix2Away(0),
169 fHistoEleXiMassRSSide2Away(0),
170 fHistoEleXiMassWSSide2Away(0),
171 fHistoEleXiMassvsElePtRS(0),
172 fHistoEleXiMassvsElePtWS(0),
173 fHistoEleXiMassvsElePtRSMix(0),
174 fHistoEleXiMassvsElePtWSMix(0),
175 fHistoEleXiMassvsElePtRSSide(0),
176 fHistoEleXiMassvsElePtWSSide(0),
177 fHistoEleXiMassvsElePtRS1(0),
178 fHistoEleXiMassvsElePtWS1(0),
179 fHistoEleXiMassvsElePtRSMix1(0),
180 fHistoEleXiMassvsElePtWSMix1(0),
181 fHistoEleXiMassvsElePtRSSide1(0),
182 fHistoEleXiMassvsElePtWSSide1(0),
183 fHistoEleXiMassvsElePtRS2(0),
184 fHistoEleXiMassvsElePtWS2(0),
185 fHistoEleXiMassvsElePtRSMix2(0),
186 fHistoEleXiMassvsElePtWSMix2(0),
187 fHistoEleXiMassvsElePtRSSide2(0),
188 fHistoEleXiMassvsElePtWSSide2(0),
193 fHistoEleXiMassMCS(0),
194 fHistoEleXiMassMCS1(0),
195 fHistoEleXiMassMCS2(0),
196 fHistoEleXiMassXibMCS(0),
197 fHistoEleXiMassXibMCS1(0),
198 fHistoEleXiMassXibMCS2(0),
199 fHistoEleXiMassPromptMCS(0),
200 fHistoEleXiMassPromptMCS1(0),
201 fHistoEleXiMassPromptMCS2(0),
202 fHistoEleXiMassBFeeddownMCS(0),
203 fHistoEleXiMassBFeeddownMCS1(0),
204 fHistoEleXiMassBFeeddownMCS2(0),
205 fHistoEleXiMassMCGen(0),
206 fHistoEleXiMassvsElePtMCS(0),
207 fHistoEleXiMassvsElePtMCGen(0),
208 fHistoEleXiMassvsElePtMCS1(0),
209 fHistoEleXiMassvsElePtMCGen1(0),
210 fHistoEleXiMassvsElePtMCS2(0),
211 fHistoEleXiMassvsElePtMCGen2(0),
214 fHistoElePtvsEtaRS(0),
215 fHistoElePtvsEtaWS(0),
216 fHistoElePtvsEtaRSMix(0),
217 fHistoElePtvsEtaWSMix(0),
218 fHistoElePtvsEtaMCS(0),
219 fHistoElePtvsEtaMCGen(0),
220 fHistoElePtvsXiPtRS(0),
221 fHistoElePtvsXiPtWS(0),
222 fHistoElePtvsXiPtRSMix(0),
223 fHistoElePtvsXiPtWSMix(0),
224 fHistoElePtvsXiPtMCS(0),
225 fHistoElePtvsXiPtvsXicPtMCS(0),
226 fHistoElePtvsXiPtMCGen(0),
227 fHistoElePtvsXiPtvsXicPtMCGen(0),
228 fHistoElePtvsXiPtMCXicGen(0),
229 fHistoElePtvsd0RS(0),
230 fHistoElePtvsd0WS(0),
231 fHistoElePtvsd0RSMix(0),
232 fHistoElePtvsd0WSMix(0),
233 fHistoElePtvsd0MCS(0),
234 fHistoElePtvsd0PromptMCS(0),
235 fHistoElePtvsd0BFeeddownMCS(0),
238 fHistoBachPtMCGen(0),
241 fHistoXiMassvsPtMCS(0),
242 fHistoXiMassvsPtMCGen(0),
243 fHistoOmegaMassvsPt(0),
244 fHistoElectronTPCPID(0),
245 fHistoElectronTOFPID(0),
246 fHistoElectronTPCSelPID(0),
247 fHistoElectronTOFSelPID(0),
248 fHistoElectronTPCPIDSelTOF(0),
249 fHistoElectronTOFPIDSelTPC(0),
250 fHistoElectronTPCPIDSelTOFSmallEta(0),
251 fHistoElectronTPCPIDSelTOFLargeEta(0),
252 fHistoMassConversionsMin(0),
253 fHistoMassConversionsSameSignMin(0),
254 fHistoElectronQovPtvsPhi(0),
255 fHistoXiQovPtvsPhi(0),
262 fHistoXicElectronMCGen(0),
263 fHistoXicElectronMCGen1(0),
264 fHistoXicElectronMCGen2(0),
265 fHistoXicElectronMCS(0),
266 fHistoXicElectronMCS1(0),
267 fHistoXicElectronMCS2(0),
268 fHistoElectronMCGen(0),
270 fHistoLambdaPtvsDl(0),
271 fHistoLambdaPtvsDlSide(0),
272 fHistoLambdaPtvsDlMCS(0),
273 fHistoLambdaPtvsDR(0),
274 fHistoLambdaPtvsDRSide(0),
275 fHistoLambdaPtvsDRMCS(0),
276 fHistoEleXiPtvsRapidityRS(0),
277 fHistoEleXiPtvsRapidityWS(0),
278 fHistoEleXiPtvsRapidityMCS(0),
279 fHistoResponseElePt(0),
280 fHistoResponseEleXiPt(0),
282 fHistonEvtvsRunNumber(0),
283 fHistonElevsRunNumber(0),
284 fHistonXivsRunNumber(0),
285 fHistoMCEventType(0),
286 fHistoMCXic0Decays(0),
287 fHistoMCDeltaPhiccbar(0),
289 fGTI(0),fGTIndex(0), fTrackBuffSize(19000),
290 fHistodPhiSdEtaSElectronProtonR125RS(0),
291 fHistodPhiSdEtaSElectronProtonR125WS(0),
292 fHistodPhiSdEtaSElectronProtonR125RSMix(0),
293 fHistodPhiSdEtaSElectronProtonR125WSMix(0),
294 fHistodPhiSdEtaSElectronPionR125RS(0),
295 fHistodPhiSdEtaSElectronPionR125WS(0),
296 fHistodPhiSdEtaSElectronPionR125RSMix(0),
297 fHistodPhiSdEtaSElectronPionR125WSMix(0),
298 fHistodPhiSdEtaSElectronBachelorR125RS(0),
299 fHistodPhiSdEtaSElectronBachelorR125WS(0),
300 fHistodPhiSdEtaSElectronBachelorR125RSMix(0),
301 fHistodPhiSdEtaSElectronBachelorR125WSMix(0),
303 fMixWithoutConversionFlag(kTRUE),
304 fNumberOfEventsForMixing (5),
310 fElectronTracks(0x0),
311 fCascadeTracks1(0x0),
312 fCascadeTracks2(0x0),
313 fElectronCutVarsArray(0x0),
314 fCascadeCutVarsArray1(0x0),
315 fCascadeCutVarsArray2(0x0)
320 for(Int_t i=0;i<23;i++){
325 for(Int_t i=0;i<8;i++){
333 Bool_t writeVariableTree) :
334 AliAnalysisTaskSE(name),
343 fIsEventSelected(kFALSE),
344 fWriteVariableTree(writeVariableTree),
345 fWriteEachVariableTree(kFALSE),
346 fWriteMCVariableTree(kFALSE),
348 fEleVariablesTree(0),
349 fCascVariablesTree(0),
351 fMCEleVariablesTree(0),
352 fMCCascVariablesTree(0),
353 fMCGenPairVariablesTree(0),
354 fReconstructPrimVert(kFALSE),
360 fCandidateVariables(),
361 fCandidateEleVariables(),
362 fCandidateCascVariables(),
363 fCandidateMCVariables(),
364 fCandidateMCEleVariables(),
365 fCandidateMCCascVariables(),
366 fCandidateMCGenPairVariables(),
374 fUseCentralityV0M(kFALSE),
377 fMCDoPairAnalysis(kFALSE),
379 fHistoEleXiMassRS(0),
380 fHistoEleXiMassWS(0),
381 fHistoEleXiMassRSMix(0),
382 fHistoEleXiMassWSMix(0),
383 fHistoEleXiMassRSSide(0),
384 fHistoEleXiMassWSSide(0),
385 fHistoEleXiMassRS1(0),
386 fHistoEleXiMassWS1(0),
387 fHistoEleXiMassRSMix1(0),
388 fHistoEleXiMassWSMix1(0),
389 fHistoEleXiMassRSSide1(0),
390 fHistoEleXiMassWSSide1(0),
391 fHistoEleXiMassRS2(0),
392 fHistoEleXiMassWS2(0),
393 fHistoEleXiMassRSMix2(0),
394 fHistoEleXiMassWSMix2(0),
395 fHistoEleXiMassRSSide2(0),
396 fHistoEleXiMassWSSide2(0),
397 fHistoEleXiMassAway(0),
398 fHistoEleXiMassRSAway(0),
399 fHistoEleXiMassWSAway(0),
400 fHistoEleXiMassRSMixAway(0),
401 fHistoEleXiMassWSMixAway(0),
402 fHistoEleXiMassRSSideAway(0),
403 fHistoEleXiMassWSSideAway(0),
404 fHistoEleXiMassRS1Away(0),
405 fHistoEleXiMassWS1Away(0),
406 fHistoEleXiMassRSMix1Away(0),
407 fHistoEleXiMassWSMix1Away(0),
408 fHistoEleXiMassRSSide1Away(0),
409 fHistoEleXiMassWSSide1Away(0),
410 fHistoEleXiMassRS2Away(0),
411 fHistoEleXiMassWS2Away(0),
412 fHistoEleXiMassRSMix2Away(0),
413 fHistoEleXiMassWSMix2Away(0),
414 fHistoEleXiMassRSSide2Away(0),
415 fHistoEleXiMassWSSide2Away(0),
416 fHistoEleXiMassvsElePtRS(0),
417 fHistoEleXiMassvsElePtWS(0),
418 fHistoEleXiMassvsElePtRSMix(0),
419 fHistoEleXiMassvsElePtWSMix(0),
420 fHistoEleXiMassvsElePtRSSide(0),
421 fHistoEleXiMassvsElePtWSSide(0),
422 fHistoEleXiMassvsElePtRS1(0),
423 fHistoEleXiMassvsElePtWS1(0),
424 fHistoEleXiMassvsElePtRSMix1(0),
425 fHistoEleXiMassvsElePtWSMix1(0),
426 fHistoEleXiMassvsElePtRSSide1(0),
427 fHistoEleXiMassvsElePtWSSide1(0),
428 fHistoEleXiMassvsElePtRS2(0),
429 fHistoEleXiMassvsElePtWS2(0),
430 fHistoEleXiMassvsElePtRSMix2(0),
431 fHistoEleXiMassvsElePtWSMix2(0),
432 fHistoEleXiMassvsElePtRSSide2(0),
433 fHistoEleXiMassvsElePtWSSide2(0),
438 fHistoEleXiMassMCS(0),
439 fHistoEleXiMassMCS1(0),
440 fHistoEleXiMassMCS2(0),
441 fHistoEleXiMassXibMCS(0),
442 fHistoEleXiMassXibMCS1(0),
443 fHistoEleXiMassXibMCS2(0),
444 fHistoEleXiMassPromptMCS(0),
445 fHistoEleXiMassPromptMCS1(0),
446 fHistoEleXiMassPromptMCS2(0),
447 fHistoEleXiMassBFeeddownMCS(0),
448 fHistoEleXiMassBFeeddownMCS1(0),
449 fHistoEleXiMassBFeeddownMCS2(0),
450 fHistoEleXiMassMCGen(0),
451 fHistoEleXiMassvsElePtMCS(0),
452 fHistoEleXiMassvsElePtMCGen(0),
453 fHistoEleXiMassvsElePtMCS1(0),
454 fHistoEleXiMassvsElePtMCGen1(0),
455 fHistoEleXiMassvsElePtMCS2(0),
456 fHistoEleXiMassvsElePtMCGen2(0),
459 fHistoElePtvsEtaRS(0),
460 fHistoElePtvsEtaWS(0),
461 fHistoElePtvsEtaRSMix(0),
462 fHistoElePtvsEtaWSMix(0),
463 fHistoElePtvsEtaMCS(0),
464 fHistoElePtvsEtaMCGen(0),
465 fHistoElePtvsXiPtRS(0),
466 fHistoElePtvsXiPtWS(0),
467 fHistoElePtvsXiPtRSMix(0),
468 fHistoElePtvsXiPtWSMix(0),
469 fHistoElePtvsXiPtMCS(0),
470 fHistoElePtvsXiPtvsXicPtMCS(0),
471 fHistoElePtvsXiPtMCGen(0),
472 fHistoElePtvsXiPtvsXicPtMCGen(0),
473 fHistoElePtvsXiPtMCXicGen(0),
474 fHistoElePtvsd0RS(0),
475 fHistoElePtvsd0WS(0),
476 fHistoElePtvsd0RSMix(0),
477 fHistoElePtvsd0WSMix(0),
478 fHistoElePtvsd0MCS(0),
479 fHistoElePtvsd0PromptMCS(0),
480 fHistoElePtvsd0BFeeddownMCS(0),
483 fHistoBachPtMCGen(0),
486 fHistoXiMassvsPtMCS(0),
487 fHistoXiMassvsPtMCGen(0),
488 fHistoOmegaMassvsPt(0),
489 fHistoElectronTPCPID(0),
490 fHistoElectronTOFPID(0),
491 fHistoElectronTPCSelPID(0),
492 fHistoElectronTOFSelPID(0),
493 fHistoElectronTPCPIDSelTOF(0),
494 fHistoElectronTOFPIDSelTPC(0),
495 fHistoElectronTPCPIDSelTOFSmallEta(0),
496 fHistoElectronTPCPIDSelTOFLargeEta(0),
497 fHistoMassConversionsMin(0),
498 fHistoMassConversionsSameSignMin(0),
499 fHistoElectronQovPtvsPhi(0),
500 fHistoXiQovPtvsPhi(0),
507 fHistoXicElectronMCGen(0),
508 fHistoXicElectronMCGen1(0),
509 fHistoXicElectronMCGen2(0),
510 fHistoXicElectronMCS(0),
511 fHistoXicElectronMCS1(0),
512 fHistoXicElectronMCS2(0),
513 fHistoElectronMCGen(0),
515 fHistoLambdaPtvsDl(0),
516 fHistoLambdaPtvsDlSide(0),
517 fHistoLambdaPtvsDlMCS(0),
518 fHistoLambdaPtvsDR(0),
519 fHistoLambdaPtvsDRSide(0),
520 fHistoLambdaPtvsDRMCS(0),
521 fHistoEleXiPtvsRapidityRS(0),
522 fHistoEleXiPtvsRapidityWS(0),
523 fHistoEleXiPtvsRapidityMCS(0),
524 fHistoResponseElePt(0),
525 fHistoResponseEleXiPt(0),
527 fHistonEvtvsRunNumber(0),
528 fHistonElevsRunNumber(0),
529 fHistonXivsRunNumber(0),
530 fHistoMCEventType(0),
531 fHistoMCXic0Decays(0),
532 fHistoMCDeltaPhiccbar(0),
534 fGTI(0),fGTIndex(0), fTrackBuffSize(19000),
535 fHistodPhiSdEtaSElectronProtonR125RS(0),
536 fHistodPhiSdEtaSElectronProtonR125WS(0),
537 fHistodPhiSdEtaSElectronProtonR125RSMix(0),
538 fHistodPhiSdEtaSElectronProtonR125WSMix(0),
539 fHistodPhiSdEtaSElectronPionR125RS(0),
540 fHistodPhiSdEtaSElectronPionR125WS(0),
541 fHistodPhiSdEtaSElectronPionR125RSMix(0),
542 fHistodPhiSdEtaSElectronPionR125WSMix(0),
543 fHistodPhiSdEtaSElectronBachelorR125RS(0),
544 fHistodPhiSdEtaSElectronBachelorR125WS(0),
545 fHistodPhiSdEtaSElectronBachelorR125RSMix(0),
546 fHistodPhiSdEtaSElectronBachelorR125WSMix(0),
548 fMixWithoutConversionFlag(kTRUE),
549 fNumberOfEventsForMixing (5),
555 fElectronTracks(0x0),
556 fCascadeTracks1(0x0),
557 fCascadeTracks2(0x0),
558 fElectronCutVarsArray(0x0),
559 fCascadeCutVarsArray1(0x0),
560 fCascadeCutVarsArray2(0x0)
565 Info(
"AliAnalysisTaskSEXic2eleXifromAODtracks",
"Calling Constructor");
567 for(Int_t i=0;i<23;i++){
572 for(Int_t i=0;i<8;i++){
576 DefineOutput(1,TList::Class());
577 DefineOutput(2,TList::Class());
578 DefineOutput(3,TList::Class());
579 DefineOutput(4,TTree::Class());
580 DefineOutput(5,TTree::Class());
581 DefineOutput(6,TTree::Class());
582 DefineOutput(7,TTree::Class());
583 DefineOutput(8,AliNormalizationCounter::Class());
584 DefineOutput(9,TTree::Class());
585 DefineOutput(10,TTree::Class());
586 DefineOutput(11,TTree::Class());
594 Info(
"~AliAnalysisTaskSEXic2eleXifromAODtracks",
"Calling Destructor");
686 if (fDebug > 1) AliInfo(
"Init");
705 AliError(
"NO EVENT FOUND!");
708 AliAODEvent* aodEvent =
dynamic_cast<AliAODEvent*
>(fInputEvent);
716 fBzkG = (Double_t)aodEvent->GetMagneticField();
717 AliKFParticle::SetField(
fBzkG);
718 if (TMath::Abs(
fBzkG)<0.001) {
729 TClonesArray *mcArray = 0;
730 AliAODMCHeader *mcHeader=0;
733 mcArray =
dynamic_cast<TClonesArray*
>(aodEvent->FindListObject(AliAODMCParticle::StdBranchName()));
735 AliError(
"Could not find Monte-Carlo in AOD");
741 mcHeader = (AliAODMCHeader*)aodEvent->GetList()->FindObject(AliAODMCHeader::StdBranchName());
743 AliError(
"AliAnalysisTaskSEXic2eleXifromAODtracks::UserExec: MC header branch not found!\n");
748 Double_t zMCVertex = mcHeader->GetVtxZ();
750 AliDebug(2,Form(
"Event rejected: abs(zVtxMC)=%f > fAnalCuts->GetMaxVtxZ()=%f",zMCVertex,
fAnalCuts->
GetMaxVtxZ()));
764 fVtx1 = (AliAODVertex*)aodEvent->GetPrimaryVertex();
767 Double_t pos[3],cov[6];
769 fVtx1->GetCovarianceMatrix(cov);
770 fV1 =
new AliESDVertex(pos,cov,100.,100,
fVtx1->GetName());
783 fIsMB=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kMB)==(AliVEvent::kMB);
784 fIsSemi=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kSemiCentral)==(AliVEvent::kSemiCentral);
785 fIsCent=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kCentral)==(AliVEvent::kCentral);
786 fIsINT7=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kINT7)==(AliVEvent::kINT7);
787 fIsEMC7=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kEMC7)==(AliVEvent::kEMC7);
801 AliCentrality *cent = aodEvent->GetCentrality();
802 fCentrality = cent->GetCentralityPercentile(
"V0M");
806 if(fCentrality<0.||fCentrality>100.-0.0000001) {
813 Int_t runnumber_offset = 0;
814 Int_t runnumber = aodEvent->GetRunNumber();
815 if(runnumber<=131000&&runnumber>=114000){
816 runnumber_offset = 114000;
817 }
else if(runnumber<=196000&&runnumber>=195000){
818 runnumber_offset = 195000;
819 }
else if(runnumber<=170593&&runnumber>=167902){
820 runnumber_offset = 167902;
864 AliAnalysisTaskSE::Terminate();
866 fOutput =
dynamic_cast<TList*
> (GetOutputData(1));
868 AliError(
"fOutput not available");
872 fOutputAll =
dynamic_cast<TList*
> (GetOutputData(3));
874 AliError(
"fOutputAll not available");
926 TString normName=
"NormalizationCounter";
927 AliAnalysisDataContainer *cont = GetOutputSlot(8)->GetContainer();
928 if(cont)normName=(TString)cont->GetName();
950 fEventBuffer[i]=
new TTree(Form(
"EventBuffer_%d",i),
"Temporary buffer for event mixing");
970 AliAODEvent *aodEvent, TClonesArray *mcArray
979 if(fDoEventMixing && fElectronTracks) fElectronTracks->Delete();
980 if(fDoEventMixing && fCascadeTracks1) fCascadeTracks1->Delete();
981 if(fDoEventMixing && fCascadeTracks2) fCascadeTracks2->Delete();
982 if(fDoEventMixing && fCascadeCutVarsArray1) fCascadeCutVarsArray1->Delete();
983 if(fDoEventMixing && fCascadeCutVarsArray2) fCascadeCutVarsArray2->Delete();
985 ResetGlobalTrackReference();
987 for (Int_t iTrack=0;iTrack<aodEvent->GetNumberOfTracks();iTrack++){
989 AliAODTrack *track =
dynamic_cast<AliAODTrack *
>(aodEvent->GetTrack(iTrack));
990 if (!track)
continue;
993 StoreGlobalTrackReference(track,iTrack);
997 Int_t nCascs= aodEvent->GetNumberOfCascades();
998 Int_t nTracks= aodEvent->GetNumberOfTracks();
1000 Bool_t seleTrkFlags[nTracks];
1002 SelectTrack(aodEvent,nTracks,nSeleTrks,seleTrkFlags,mcArray);
1004 Bool_t seleCascFlags[nCascs];
1006 SelectCascade(aodEvent,nCascs,nSeleCasc,seleCascFlags,mcArray);
1008 Int_t runnumber_offset = 0;
1009 Int_t runnumber = aodEvent->GetRunNumber();
1010 if(runnumber<=131000&&runnumber>=114000){
1011 runnumber_offset = 114000;
1012 }
else if(runnumber<=196000&&runnumber>=195000){
1013 runnumber_offset = 195000;
1014 }
else if(runnumber<=170593&&runnumber>=167902){
1015 runnumber_offset = 167902;
1017 fHistonElevsRunNumber->Fill(runnumber-runnumber_offset,nSeleTrks);
1018 fHistonXivsRunNumber->Fill(runnumber-runnumber_offset,nSeleCasc);
1023 for (Int_t icasc = 0; icasc<nCascs; icasc++) {
1024 if(!seleCascFlags[icasc])
continue;
1025 AliAODcascade *casc = aodEvent->GetCascade(icasc);
1028 AliAODTrack *cptrack = (AliAODTrack*)(casc->GetDaughter(0));
1029 AliAODTrack *cntrack = (AliAODTrack*)(casc->GetDaughter(1));
1030 AliAODTrack *cbtrack = (AliAODTrack*)(casc->GetDecayVertexXi()->GetDaughter(0));
1035 for (Int_t itrk = 0; itrk<nTracks; itrk++) {
1036 if(!seleTrkFlags[itrk])
continue;
1037 AliAODTrack *trk = (AliAODTrack*)aodEvent->GetTrack(itrk);
1045 AliAODTrack *trkpid = 0;
1046 if(fAnalCuts->GetProdAODFilterBit()==7){
1047 trkpid = fGTI[-trk->GetID()-1];
1052 Int_t cpid = cptrack->GetID();
1053 Int_t cnid = cntrack->GetID();
1054 Int_t cbid = cbtrack->GetID();
1055 Int_t lpid = trkpid->GetID();
1056 if((cpid==lpid)||(cnid==lpid)||(cbid==lpid))
continue;
1058 AliAODVertex *secVert = ReconstructSecondaryVertex(casc,trk,aodEvent);
1059 if(!secVert)
continue;
1066 FillROOTObjects(exobj, casc,trk,trkpid,mcArray);
1068 exobj->GetSecondaryVtx()->RemoveDaughters();
1070 delete exobj;exobj=NULL;
1076 fEventInfo->SetString(Form(
"Ev%d_esd%d_E%d_C%d",AliAnalysisManager::GetAnalysisManager()->GetNcalls(),((AliAODHeader*)aodEvent->GetHeader())->GetEventNumberESDFile(),fElectronTracks->GetEntries(),fCascadeTracks1->GetEntries()+fCascadeTracks2->GetEntries()));
1077 Int_t ind=GetPoolIndex(fVtxZ,fCentrality);
1078 if(ind>=0 && ind<fNOfPools){
1079 if(fEventBuffer[ind]->GetEntries() >= fNumberOfEventsForMixing){
1080 DoEventMixingWithPools(ind);
1081 if(fEventBuffer[ind]->GetEntries() >= 20*fNumberOfEventsForMixing){
1085 fEventBuffer[ind]->Fill();
1098 const char* nameoutput = GetOutputSlot(4)->GetContainer()->GetName();
1099 fVariablesTree =
new TTree(nameoutput,
"Candidates variables tree");
1102 TString * fCandidateVariableNames =
new TString[nVar];
1104 fCandidateVariableNames[ 0]=
"Centrality";
1105 fCandidateVariableNames[ 1]=
"InvMassEleXi";
1106 fCandidateVariableNames[ 2]=
"EleXiPt";
1107 fCandidateVariableNames[ 3]=
"EleXiPx";
1108 fCandidateVariableNames[ 4]=
"EleXiPy";
1109 fCandidateVariableNames[ 5]=
"EleXiPz";
1110 fCandidateVariableNames[ 6]=
"ElePx";
1111 fCandidateVariableNames[ 7]=
"ElePy";
1112 fCandidateVariableNames[ 8]=
"ElePz";
1113 fCandidateVariableNames[ 9]=
"XiPx";
1114 fCandidateVariableNames[10]=
"XiPy";
1115 fCandidateVariableNames[11]=
"XiPz";
1116 fCandidateVariableNames[12]=
"XiCharge";
1117 fCandidateVariableNames[13]=
"MassXi";
1118 fCandidateVariableNames[14]=
"MassLambda";
1119 fCandidateVariableNames[15]=
"Eled0";
1120 fCandidateVariableNames[16]=
"Xid0";
1121 fCandidateVariableNames[17]=
"nSigmaTPCele";
1122 fCandidateVariableNames[18]=
"nSigmaTOFele";
1123 fCandidateVariableNames[19]=
"nSigmaTPCpr_etrk";
1124 fCandidateVariableNames[20]=
"nSigmaTOFpr_etrk";
1125 fCandidateVariableNames[21]=
"nSigmaTPCka_etrk";
1126 fCandidateVariableNames[22]=
"nSigmaTOFka_etrk";
1127 fCandidateVariableNames[23]=
"nSigmaTPCv0pr";
1128 fCandidateVariableNames[24]=
"nSigmaTOFv0pr";
1129 fCandidateVariableNames[25]=
"nSigmaTPCv0pi";
1130 fCandidateVariableNames[26]=
"nSigmaTOFv0pi";
1131 fCandidateVariableNames[27]=
"nSigmaTPCbachpi";
1132 fCandidateVariableNames[28]=
"nSigmaTOFbachpi";
1133 fCandidateVariableNames[29]=
"EleCharge";
1134 fCandidateVariableNames[30]=
"Mixing";
1135 fCandidateVariableNames[31]=
"DcaXiDaughters";
1136 fCandidateVariableNames[32]=
"DcaV0Daughters";
1137 fCandidateVariableNames[33]=
"DecayLengthXi";
1138 fCandidateVariableNames[34]=
"CosPointingAngleXi";
1139 fCandidateVariableNames[35]=
"DcaV0toPrimVertex";
1140 fCandidateVariableNames[36]=
"DcaPostoPrimVertex";
1141 fCandidateVariableNames[37]=
"DcaNegtoPrimVertex";
1142 fCandidateVariableNames[38]=
"DcaBachtoPrimVertex";
1143 fCandidateVariableNames[39]=
"DecayLengthV0";
1144 fCandidateVariableNames[40]=
"CosPointingAngleV0";
1146 fCandidateVariableNames[41]=
"mcpdgxic";
1147 fCandidateVariableNames[42]=
"mclabxic";
1148 fCandidateVariableNames[43]=
"mcxicpx";
1149 fCandidateVariableNames[44]=
"mcxicpy";
1150 fCandidateVariableNames[45]=
"mcxicpz";
1151 fCandidateVariableNames[46]=
"mcelepx";
1152 fCandidateVariableNames[47]=
"mcelepy";
1153 fCandidateVariableNames[48]=
"mcelepz";
1154 fCandidateVariableNames[49]=
"mccascpx";
1155 fCandidateVariableNames[50]=
"mccascpy";
1156 fCandidateVariableNames[51]=
"mccascpz";
1158 fCandidateVariableNames[52]=
"mcpdgele";
1159 fCandidateVariableNames[53]=
"mcpdgcasc";
1160 fCandidateVariableNames[54]=
"mcpdgmomele";
1161 fCandidateVariableNames[55]=
"mcpdgmomcasc";
1162 fCandidateVariableNames[56]=
"mcpdggrmomele";
1163 fCandidateVariableNames[57]=
"mcpdggrmomcasc";
1164 fCandidateVariableNames[58]=
"mcngenele";
1165 fCandidateVariableNames[59]=
"mcngencasc";
1167 fCandidateVariableNames[60]=
"nSigmaTPCpi_etrk";
1168 fCandidateVariableNames[61]=
"nSigmaTOFpi_etrk";
1170 fCandidateVariableNames[62]=
"V0PosPx";
1171 fCandidateVariableNames[63]=
"V0PosPy";
1172 fCandidateVariableNames[64]=
"V0PosPz";
1173 fCandidateVariableNames[65]=
"V0NegPx";
1174 fCandidateVariableNames[66]=
"V0NegPy";
1175 fCandidateVariableNames[67]=
"V0NegPz";
1176 fCandidateVariableNames[68]=
"V0VertX";
1177 fCandidateVariableNames[69]=
"V0VertY";
1178 fCandidateVariableNames[70]=
"V0VertZ";
1179 fCandidateVariableNames[71]=
"BachPx";
1180 fCandidateVariableNames[72]=
"BachPy";
1181 fCandidateVariableNames[73]=
"BachPz";
1182 fCandidateVariableNames[74]=
"XiVertX";
1183 fCandidateVariableNames[75]=
"XiVertY";
1184 fCandidateVariableNames[76]=
"XiVertZ";
1185 fCandidateVariableNames[77]=
"PrimVertX";
1186 fCandidateVariableNames[78]=
"PrimVertY";
1187 fCandidateVariableNames[79]=
"PrimVertZ";
1189 fCandidateVariableNames[80]=
"MassOmega";
1191 fCandidateVariableNames[81]=
"EleITSMatch";
1192 fCandidateVariableNames[82]=
"BachITSMatch";
1193 fCandidateVariableNames[83]=
"V0PosITSMatch";
1194 fCandidateVariableNames[84]=
"V0NegITSMatch";
1196 fCandidateVariableNames[85]=
"TPCNclsF";
1197 fCandidateVariableNames[86]=
"TPCNcls";
1198 fCandidateVariableNames[87]=
"TPCNclsS";
1199 fCandidateVariableNames[88]=
"IsXiPeakReagion";
1202 fCandidateVariableNames[89]=
"EvNumber";
1204 for (Int_t ivar=0; ivar<nVar; ivar++) {
1221 for(Int_t i=0;i<90;i++){
1226 AliAODTrack *cptrack = (AliAODTrack*)(casc->GetDaughter(0));
1227 AliAODTrack *cntrack = (AliAODTrack*)(casc->GetDaughter(1));
1228 AliAODTrack *cbtrack = (AliAODTrack*)(casc->GetDecayVertexXi()->GetDaughter(0));
1229 if(cptrack->Charge()<0 && cntrack->Charge()>0){
1230 cptrack = (AliAODTrack*)(casc->GetDaughter(1));
1231 cntrack = (AliAODTrack*)(casc->GetDaughter(0));
1238 Double_t pxe = exobj->PxProng(0);
1239 Double_t pye = exobj->PyProng(0);
1240 Double_t pze = exobj->PzProng(0);
1241 Double_t mome = sqrt(pxe*pxe+pye*pye+pze*pze);
1242 Double_t Ee = sqrt(mome*mome+0.000510998928*0.000510998928);
1243 Double_t pxv = exobj->PxProng(1);
1244 Double_t pyv = exobj->PyProng(1);
1245 Double_t pzv = exobj->PzProng(1);
1246 Double_t momv = sqrt(pxv*pxv+pyv*pyv+pzv*pzv);
1247 Double_t Ev = sqrt(momv*momv+1.32171*1.32171);
1248 Double_t cosoa = (pxe*pxv+pye*pyv+pze*pzv)/mome/momv;
1249 Double_t Esum = Ee + Ev;
1251 Double_t uxe = pxe/mome;
1252 Double_t uye = pye/mome;
1253 Double_t uze = pze/mome;
1254 Double_t lf = -2.*(pxv*uxe+pyv*uye+pzv*uze);
1255 Double_t pxv_flip = pxv + lf * uxe;
1256 Double_t pyv_flip = pyv + lf * uye;
1257 Double_t pzv_flip = pzv + lf * uze;
1258 Double_t pxsum_flip = pxe + pxv_flip;
1259 Double_t pysum_flip = pye + pyv_flip;
1260 Double_t pzsum_flip = pze + pzv_flip;
1261 Double_t mexi_flip = sqrt(Esum*Esum-pxsum_flip*pxsum_flip-pysum_flip*pysum_flip-pzsum_flip*pzsum_flip);
1262 Double_t ptexi_flip = sqrt(pxsum_flip*pxsum_flip+pysum_flip*pysum_flip);
1264 Double_t posVtx[3] = {0.,0.,0.};
1265 fVtx1->GetXYZ(posVtx);
1269 UInt_t pdgdg[2]={11,3312};
1283 if(casc->ChargeXi()<0)
1290 Double_t nSigmaTPCele = -9999.;
1291 Double_t nSigmaTOFele = -9999.;
1313 Double_t nSigmaTPCv0pr=-9999.;
1314 Double_t nSigmaTOFv0pr=-9999.;
1315 Double_t nSigmaTPCv0pi=-9999.;
1316 Double_t nSigmaTOFv0pi=-9999.;
1317 Double_t nSigmaTPCbachpi=-9999.;
1318 Double_t nSigmaTOFbachpi=-9999.;
1321 if(casc->ChargeXi()>0){
1356 AliAODMCParticle *mcxic = 0;
1357 AliAODMCParticle *mcele = 0;
1358 AliAODMCParticle *mccasc = 0;
1360 Int_t mcpdgele_array[100];
1361 Int_t mcpdgcasc_array[100];
1362 Int_t mclabelele_array[100];
1363 Int_t mclabelcasc_array[100];
1364 Int_t mcngen_ele = -9999;
1365 Int_t mcngen_casc = -9999;
1369 mclabxic =
MatchToMC(exobj,mcArray,mcpdgele_array, mcpdgcasc_array,mclabelele_array,mclabelcasc_array,mcngen_ele,mcngen_casc);
1372 mcxic = (AliAODMCParticle*) mcArray->At(mclabxic);
1373 if(mclabelele_array[0]>=0)
1374 mcele = (AliAODMCParticle*) mcArray->At(mclabelele_array[0]);
1375 if(mclabelcasc_array[0]>=0)
1376 mccasc = (AliAODMCParticle*) mcArray->At(mclabelcasc_array[0]);
1441 Double_t dphis_ele_pr, detas_ele_pr,dphis_ele_pi, detas_ele_pi, dphis_ele_bach, detas_ele_bach;
1442 dphis_ele_pr = 9999.;detas_ele_pr = 9999.;dphis_ele_pi = 9999.;detas_ele_pi = 9999.;dphis_ele_bach=9999.;detas_ele_bach=9999.;
1447 cont[0] = exobj->InvMass(2,pdgdg);
1448 cont[1] = exobj->Pt();
1449 cont[2] = exobj->Getd0Prong(0)*trk->Charge();
1453 Double_t cont_flip[4];
1454 cont_flip[0] = mexi_flip;
1455 cont_flip[1] = ptexi_flip;
1460 cont2[0] = exobj->InvMass(2,pdgdg);
1461 cont2[1] = trk->Pt();
1464 Double_t cont_eleptvseta[3];
1465 cont_eleptvseta[0] = trk->Pt();
1466 cont_eleptvseta[1] = trk->Eta();
1469 Double_t cont_eleptvsxipt[3];
1470 cont_eleptvsxipt[0] = trk->Pt();
1471 cont_eleptvsxipt[1] = sqrt(casc->MomXiX()*casc->MomXiX()+casc->MomXiY()*casc->MomXiY());
1474 Double_t cont_eleptvsd0[3];
1475 cont_eleptvsd0[0] = trk->Pt();
1476 cont_eleptvsd0[1] = exobj->Getd0Prong(0)*trk->Charge();
1479 Double_t exobj_mass = exobj->InvMass(2,pdgdg);
1480 Double_t exobj_px = exobj->Px();
1481 Double_t exobj_py = exobj->Py();
1482 Double_t exobj_pz = exobj->Pz();
1483 Double_t exobj_E = sqrt(exobj_mass*exobj_mass+exobj_px*exobj_px+exobj_py*exobj_py+exobj_pz*exobj_pz);
1484 Double_t exobj_rap = 0.5*log((exobj_E+exobj_pz)/(exobj_E-exobj_pz));
1488 if(trk->Charge()*casc->ChargeXi()<0){
1501 for(Int_t ih=0;ih<23;ih++){
1502 Double_t cont_eleptvscutvars[3];
1503 cont_eleptvscutvars[0] = exobj->Pt();
1507 cont_eleptvscutvars[1] = trk->GetTPCNcls();
1509 cont_eleptvscutvars[1] = trk->GetTPCsignalN();
1511 cont_eleptvscutvars[1] = nSigmaTPCele;
1513 cont_eleptvscutvars[1] = nSigmaTOFele;
1515 cont_eleptvscutvars[1] = trk->Eta();
1517 cont_eleptvscutvars[1] = trk->GetITSNcls();
1519 if(casc->ChargeXi()<0)
1520 cont_eleptvscutvars[1] = casc->MassLambda();
1522 cont_eleptvscutvars[1] = casc->MassAntiLambda();
1524 cont_eleptvscutvars[1] = casc->MassXi();
1527 lPosV0[0] = casc->DecayVertexV0X();
1528 lPosV0[1] = casc->DecayVertexV0Y();
1529 lPosV0[2] = casc->DecayVertexV0Z();
1530 cont_eleptvscutvars[1] = TMath::Sqrt(lPosV0[0]*lPosV0[0]+lPosV0[1]*lPosV0[1]);
1533 lPosXi[0] = casc->DecayVertexXiX();
1534 lPosXi[1] = casc->DecayVertexXiY();
1535 lPosXi[2] = casc->DecayVertexXiZ();
1536 cont_eleptvscutvars[1] = TMath::Sqrt(lPosXi[0]*lPosXi[0]+lPosXi[1]*lPosXi[1]);
1538 cont_eleptvscutvars[1] = casc->DcaV0Daughters();
1540 cont_eleptvscutvars[1] = casc->DcaXiDaughters();
1542 cont_eleptvscutvars[1] = casc->DcaBachToPrimVertex();
1544 if(casc->ChargeXi()<0.)
1545 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1547 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1549 if(casc->ChargeXi()>0.)
1550 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1552 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1554 cont_eleptvscutvars[1] = casc->CosPointingAngle(casc->GetDecayVertexXi());
1556 cont_eleptvscutvars[1] = casc->CosPointingAngleXi(posVtx[0],posVtx[1],posVtx[2]);
1558 cont_eleptvscutvars[1] = nSigmaTPCv0pr;
1560 cont_eleptvscutvars[1] = nSigmaTPCv0pi;
1562 cont_eleptvscutvars[1] = nSigmaTPCbachpi;
1564 cont_eleptvscutvars[1] = casc->Eta();
1566 cont_eleptvscutvars[1] = 0.5*TMath::Log((sqrt(casc->Ptot2Xi())+casc->MomXiZ())/(sqrt(casc->Ptot2Xi())-casc->MomXiZ()));
1568 Double_t xipx = exobj->PxProng(1);
1569 Double_t xipy = exobj->PyProng(1);
1570 Double_t xipz = exobj->PzProng(1);
1571 Double_t epx = exobj->PxProng(0);
1572 Double_t epy = exobj->PyProng(0);
1573 Double_t epz = exobj->PzProng(0);
1574 cont_eleptvscutvars[1] = acos((xipx*epx+xipy*epy+xipz*epz)/sqrt(xipx*xipx+xipy*xipy+xipz*xipz)/sqrt(epx*epx+epy*epy+epz*epz));
1576 cont_eleptvscutvars[1] = -9999.;
1584 Int_t pdgcode = mcxic->GetPdgCode();
1585 cont2[1] = mcele->Pt();
1586 if(abs(pdgcode)==4132 && abs(mcpdgele_array[1])==4132 && abs(mcpdgcasc_array[1])==4132){
1587 Int_t labmotherxic = mcxic->GetMother();
1588 Bool_t isbottomfd = kFALSE;
1591 AliAODMCParticle *motherxic = (AliAODMCParticle*)mcArray->At(labmotherxic);
1592 Int_t pdgmotherxic = motherxic->GetPdgCode();
1593 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){
1622 Double_t cont_xic[3];
1623 cont_xic[0] = mcxic->Pt();
1624 cont_xic[1] = mcxic->Y();
1630 Double_t cont_mcele[3];
1631 cont_mcele[0] = mcele->Pt();
1632 cont_mcele[1] = mcele->Eta();
1641 Double_t cont_eleptvsxiptvsxicpt[4];
1642 cont_eleptvsxiptvsxicpt[0] = cont_eleptvsxipt[0];
1643 cont_eleptvsxiptvsxicpt[1] = cont_eleptvsxipt[1];
1644 cont_eleptvsxiptvsxicpt[2] = mcxic->Pt();
1645 cont_eleptvsxiptvsxicpt[3] = cont_eleptvsxipt[2];
1654 for(Int_t ih=0;ih<23;ih++){
1655 Double_t cont_eleptvscutvars[3];
1656 cont_eleptvscutvars[0] = exobj->Pt();
1660 cont_eleptvscutvars[1] = trk->GetTPCNcls();
1662 cont_eleptvscutvars[1] = trk->GetTPCsignalN();
1664 cont_eleptvscutvars[1] = nSigmaTPCele;
1666 cont_eleptvscutvars[1] = nSigmaTOFele;
1668 cont_eleptvscutvars[1] = trk->Eta();
1670 cont_eleptvscutvars[1] = trk->GetITSNcls();
1672 if(casc->ChargeXi()<0)
1673 cont_eleptvscutvars[1] = casc->MassLambda();
1675 cont_eleptvscutvars[1] = casc->MassAntiLambda();
1677 cont_eleptvscutvars[1] = casc->MassXi();
1680 lPosV0[0] = casc->DecayVertexV0X();
1681 lPosV0[1] = casc->DecayVertexV0Y();
1682 lPosV0[2] = casc->DecayVertexV0Z();
1683 cont_eleptvscutvars[1] = TMath::Sqrt(lPosV0[0]*lPosV0[0]+lPosV0[1]*lPosV0[1]);
1686 lPosXi[0] = casc->DecayVertexXiX();
1687 lPosXi[1] = casc->DecayVertexXiY();
1688 lPosXi[2] = casc->DecayVertexXiZ();
1689 cont_eleptvscutvars[1] = TMath::Sqrt(lPosXi[0]*lPosXi[0]+lPosXi[1]*lPosXi[1]);
1691 cont_eleptvscutvars[1] = casc->DcaV0Daughters();
1693 cont_eleptvscutvars[1] = casc->DcaXiDaughters();
1695 cont_eleptvscutvars[1] = casc->DcaBachToPrimVertex();
1697 if(casc->ChargeXi()<0.)
1698 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1700 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1702 if(casc->ChargeXi()>0.)
1703 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1705 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1707 cont_eleptvscutvars[1] = casc->CosPointingAngle(casc->GetDecayVertexXi());
1709 cont_eleptvscutvars[1] = casc->CosPointingAngleXi(posVtx[0],posVtx[1],posVtx[2]);
1711 cont_eleptvscutvars[1] = nSigmaTPCv0pr;
1713 cont_eleptvscutvars[1] = nSigmaTPCv0pi;
1715 cont_eleptvscutvars[1] = nSigmaTPCbachpi;
1717 cont_eleptvscutvars[1] = casc->Eta();
1719 cont_eleptvscutvars[1] = 0.5*TMath::Log((sqrt(casc->Ptot2Xi())+casc->MomXiZ())/(sqrt(casc->Ptot2Xi())-casc->MomXiZ()));
1721 Double_t xipx = exobj->PxProng(1);
1722 Double_t xipy = exobj->PyProng(1);
1723 Double_t xipz = exobj->PzProng(1);
1724 Double_t epx = exobj->PxProng(0);
1725 Double_t epy = exobj->PyProng(0);
1726 Double_t epz = exobj->PzProng(0);
1727 cont_eleptvscutvars[1] = acos((xipx*epx+xipy*epy+xipz*epz)/sqrt(xipx*xipx+xipy*xipy+xipz*xipz)/sqrt(epx*epx+epy*epy+epz*epz));
1729 cont_eleptvscutvars[1] = -9999.;
1755 for(Int_t ih=0;ih<23;ih++){
1756 Double_t cont_eleptvscutvars[3];
1757 cont_eleptvscutvars[0] = exobj->Pt();
1761 cont_eleptvscutvars[1] = trk->GetTPCNcls();
1763 cont_eleptvscutvars[1] = trk->GetTPCsignalN();
1765 cont_eleptvscutvars[1] = nSigmaTPCele;
1767 cont_eleptvscutvars[1] = nSigmaTOFele;
1769 cont_eleptvscutvars[1] = trk->Eta();
1771 cont_eleptvscutvars[1] = trk->GetITSNcls();
1773 if(casc->ChargeXi()<0)
1774 cont_eleptvscutvars[1] = casc->MassLambda();
1776 cont_eleptvscutvars[1] = casc->MassAntiLambda();
1778 cont_eleptvscutvars[1] = casc->MassXi();
1781 lPosV0[0] = casc->DecayVertexV0X();
1782 lPosV0[1] = casc->DecayVertexV0Y();
1783 lPosV0[2] = casc->DecayVertexV0Z();
1784 cont_eleptvscutvars[1] = TMath::Sqrt(lPosV0[0]*lPosV0[0]+lPosV0[1]*lPosV0[1]);
1787 lPosXi[0] = casc->DecayVertexXiX();
1788 lPosXi[1] = casc->DecayVertexXiY();
1789 lPosXi[2] = casc->DecayVertexXiZ();
1790 cont_eleptvscutvars[1] = TMath::Sqrt(lPosXi[0]*lPosXi[0]+lPosXi[1]*lPosXi[1]);
1792 cont_eleptvscutvars[1] = casc->DcaV0Daughters();
1794 cont_eleptvscutvars[1] = casc->DcaXiDaughters();
1796 cont_eleptvscutvars[1] = casc->DcaBachToPrimVertex();
1798 if(casc->ChargeXi()<0.)
1799 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1801 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1803 if(casc->ChargeXi()>0.)
1804 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1806 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1808 cont_eleptvscutvars[1] = casc->CosPointingAngle(casc->GetDecayVertexXi());
1810 cont_eleptvscutvars[1] = casc->CosPointingAngleXi(posVtx[0],posVtx[1],posVtx[2]);
1812 cont_eleptvscutvars[1] = nSigmaTPCv0pr;
1814 cont_eleptvscutvars[1] = nSigmaTPCv0pi;
1816 cont_eleptvscutvars[1] = nSigmaTPCbachpi;
1818 cont_eleptvscutvars[1] = casc->Eta();
1820 cont_eleptvscutvars[1] = 0.5*TMath::Log((sqrt(casc->Ptot2Xi())+casc->MomXiZ())/(sqrt(casc->Ptot2Xi())-casc->MomXiZ()));
1822 Double_t xipx = exobj->PxProng(1);
1823 Double_t xipy = exobj->PyProng(1);
1824 Double_t xipz = exobj->PzProng(1);
1825 Double_t epx = exobj->PxProng(0);
1826 Double_t epy = exobj->PyProng(0);
1827 Double_t epz = exobj->PzProng(0);
1828 cont_eleptvscutvars[1] = acos((xipx*epx+xipy*epy+xipz*epz)/sqrt(xipx*xipx+xipy*xipy+xipz*xipz)/sqrt(epx*epx+epy*epy+epz*epz));
1830 cont_eleptvscutvars[1] = -9999.;
1838 Int_t pdgcode = mcxic->GetPdgCode();
1839 if(abs(pdgcode)==5132 && abs(mcpdgele_array[1])==5132 && abs(mcpdgcasc_array[1])==4132 && abs(mcpdgcasc_array[2])==5132){
1844 if(abs(pdgcode)==5132 && abs(mcpdgele_array[1])==5132 && abs(mcpdgcasc_array[1])==4232 && abs(mcpdgcasc_array[2])==5132){
1849 if(abs(pdgcode)==5232 && abs(mcpdgele_array[1])==5232 && abs(mcpdgcasc_array[1])==4132 && abs(mcpdgcasc_array[2])==5232){
1854 if(abs(pdgcode)==5232 && abs(mcpdgele_array[1])==5232 && abs(mcpdgcasc_array[1])==4232 && abs(mcpdgcasc_array[2])==5232){
1869 if( mexi_flip <10. && cosoa < 0. && fAnalCuts->IsPeakRegion(casc))
1871 if(trk->Charge()*casc->ChargeXi()<0){
1884 if(trk->Charge()*casc->ChargeXi()<0){
1902 if( mexi_flip< 10. && cosoa < 0. && fAnalCuts->IsSideBand(casc))
1904 if(trk->Charge()*casc->ChargeXi()<0){
1928 for(Int_t i=0;i<90;i++){
1932 Double_t pxe = trke->Px();
1933 Double_t pye = trke->Py();
1934 Double_t pze = trke->Pz();
1935 Double_t mome = sqrt(pxe*pxe+pye*pye+pze*pze);
1936 Double_t Ee = sqrt(mome*mome+0.000510998928*0.000510998928);
1938 Double_t pxv = casc->Px();
1939 Double_t pyv = casc->Py();
1940 Double_t pzv = casc->Pz();
1941 Double_t momv = sqrt(pxv*pxv+pyv*pyv+pzv*pzv);
1942 Double_t Ev = sqrt(momv*momv+1.32171*1.32171);
1944 Double_t cosoa = (pxe*pxv+pye*pyv+pze*pzv)/mome/momv;
1946 Double_t pxsum = pxe + pxv;
1947 Double_t pysum = pye + pyv;
1948 Double_t pzsum = pze + pzv;
1949 Double_t Esum = Ee + Ev;
1950 Double_t mexi = sqrt(Esum*Esum-pxsum*pxsum-pysum*pysum-pzsum*pzsum);
1952 Double_t uxe = pxe/mome;
1953 Double_t uye = pye/mome;
1954 Double_t uze = pze/mome;
1955 Double_t lf = -2.*(pxv*uxe+pyv*uye+pzv*uze);
1956 Double_t pxv_flip = pxv + lf * uxe;
1957 Double_t pyv_flip = pyv + lf * uye;
1958 Double_t pzv_flip = pzv + lf * uze;
1959 Double_t pxsum_flip = pxe + pxv_flip;
1960 Double_t pysum_flip = pye + pyv_flip;
1961 Double_t pzsum_flip = pze + pzv_flip;
1962 Double_t mexi_flip = sqrt(Esum*Esum-pxsum_flip*pxsum_flip-pysum_flip*pysum_flip-pzsum_flip*pzsum_flip);
1963 Double_t ptexi_flip = sqrt(pxsum_flip*pxsum_flip+pysum_flip*pysum_flip);
1965 Double_t posVtx[3] = {0.,0.,0.};
1966 fVtx1->GetXYZ(posVtx);
1969 UInt_t pdgdg[2]={11,3312};
1995 cont[1] = sqrt(pxsum*pxsum+pysum*pysum);
1999 Double_t cont_flip[4];
2000 cont_flip[0] = mexi_flip;
2001 cont_flip[1] = ptexi_flip;
2007 cont2[1] = sqrt(pxe*pxe+pye*pye);
2010 Double_t cont_eleptvseta[3];
2011 cont_eleptvseta[0] = trke->Pt();
2012 cont_eleptvseta[1] = trke->Eta();
2015 Double_t cont_eleptvsxipt[3];
2016 cont_eleptvsxipt[0] = trke->Pt();
2017 cont_eleptvsxipt[1] = casc->Pt();
2020 Double_t cont_eleptvsd0[3];
2021 cont_eleptvsd0[0] = trke->Pt();
2022 cont_eleptvsd0[1] = 0.;
2025 Double_t xyzR125_ele[3], xyzR125_pr[3], xyzR125_pi[3], xyzR125_bach[3];
2026 xyzR125_ele[0] = (*elevars)[0];
2027 xyzR125_ele[1] = (*elevars)[1];
2028 xyzR125_ele[2] = (*elevars)[2];
2029 xyzR125_pr[0] = (*cascvars)[0];
2030 xyzR125_pr[1] = (*cascvars)[1];
2031 xyzR125_pr[2] = (*cascvars)[2];
2032 xyzR125_pi[0] = (*cascvars)[3];
2033 xyzR125_pi[1] = (*cascvars)[4];
2034 xyzR125_pi[2] = (*cascvars)[5];
2035 xyzR125_bach[0] = (*cascvars)[6];
2036 xyzR125_bach[1] = (*cascvars)[7];
2037 xyzR125_bach[2] = (*cascvars)[8];
2039 Double_t rdhfcutvars[12];
2040 rdhfcutvars[0] = xyzR125_ele[0];
2041 rdhfcutvars[1] = xyzR125_ele[1];
2042 rdhfcutvars[2] = xyzR125_ele[2];
2043 rdhfcutvars[3] = xyzR125_pr[0];
2044 rdhfcutvars[4] = xyzR125_pr[1];
2045 rdhfcutvars[5] = xyzR125_pr[2];
2046 rdhfcutvars[6] = xyzR125_pi[0];
2047 rdhfcutvars[7] = xyzR125_pi[1];
2048 rdhfcutvars[8] = xyzR125_pi[2];
2049 rdhfcutvars[9] = xyzR125_bach[0];
2050 rdhfcutvars[10] = xyzR125_bach[1];
2051 rdhfcutvars[11] = xyzR125_bach[2];
2063 if(((
int)trke->T())*chargexi<0){
2099 if(mexi_flip < 10. && cosoa<0. && fAnalCuts->IsPeakRegion(casc))
2101 if(((
int)trke->T())*chargexi<0){
2122 const char* nameoutput = GetOutputSlot(5)->GetContainer()->GetName();
2126 TString * fCandidateVariableNames =
new TString[nVar];
2128 fCandidateVariableNames[ 0]=
"ElePx";
2129 fCandidateVariableNames[ 1]=
"ElePy";
2130 fCandidateVariableNames[ 2]=
"ElePz";
2131 fCandidateVariableNames[ 3]=
"TPCChi2overNDF";
2132 fCandidateVariableNames[ 4]=
"ITSNcls";
2133 fCandidateVariableNames[ 5]=
"TPCNcls";
2134 fCandidateVariableNames[ 6]=
"TPCNclsPID";
2135 fCandidateVariableNames[ 7]=
"TPCNclsRatio";
2136 fCandidateVariableNames[ 8]=
"d0R";
2137 fCandidateVariableNames[ 9]=
"d0Z";
2138 fCandidateVariableNames[10]=
"ITSClusterMap";
2139 fCandidateVariableNames[11]=
"nSigmaTPCele";
2140 fCandidateVariableNames[12]=
"nSigmaTOFele";
2141 fCandidateVariableNames[13]=
"nSigmaTPCpi";
2142 fCandidateVariableNames[14]=
"nSigmaTPCka";
2143 fCandidateVariableNames[15]=
"nSigmaTPCpr";
2144 fCandidateVariableNames[16]=
"EvNumber";
2145 fCandidateVariableNames[17]=
"EleCharge";
2146 fCandidateVariableNames[18]=
"ElePdgCode";
2147 fCandidateVariableNames[19]=
"EleMotherPdgCode";
2148 fCandidateVariableNames[20]=
"mcelepx";
2149 fCandidateVariableNames[21]=
"mcelepy";
2150 fCandidateVariableNames[22]=
"mcelepz";
2151 fCandidateVariableNames[23]=
"Centrality";
2152 fCandidateVariableNames[24]=
"PrimVertZ";
2153 fCandidateVariableNames[25]=
"RunNumber";
2155 for (Int_t ivar=0; ivar<nVar; ivar++) {
2174 fElectronTracks->AddLast(
new TLorentzVector(trk->Px(),trk->Py(),trk->Pz(),trk->Charge()));
2177 pv[0] =
fVtx1->GetX();
2178 pv[1] =
fVtx1->GetY();
2179 pv[2] =
fVtx1->GetZ();
2180 Double_t xyzR125[3] = {9999.,9999.,9999.};
2182 TVector *varvec =
new TVector(3);
2183 (*varvec)[0] = xyzR125[0];
2184 (*varvec)[1] = xyzR125[1];
2185 (*varvec)[2] = xyzR125[2];
2190 Int_t pdgEle = -9999;
2191 Int_t pdgEleMother = -9999;
2192 Float_t mcepx = -9999;
2193 Float_t mcepy = -9999;
2194 Float_t mcepz = -9999;
2197 Int_t labEle = trk->GetLabel();
2198 if(labEle<0)
return;
2199 AliAODMCParticle *mcetrk = (AliAODMCParticle*)mcArray->At(labEle);
2201 pdgEle = mcetrk->GetPdgCode();
2202 if(abs(pdgEle)!=11)
return;
2204 Bool_t hfe_flag = kFALSE;
2205 Bool_t gamma_flag = kFALSE;
2206 Int_t labemother = mcetrk->GetMother();
2208 AliAODMCParticle *motherele = (AliAODMCParticle*)mcArray->At(labemother);
2209 if(!motherele)
return;
2210 pdgEleMother = motherele->GetPdgCode();
2211 if(abs(pdgEleMother)>4000&&abs(pdgEleMother)<4400){
2214 if(abs(pdgEleMother)==22){
2223 if(!hfe_flag)
return;
2224 mcepx = mcetrk->Px();
2225 mcepy = mcetrk->Py();
2226 mcepz = mcetrk->Pz();
2232 for(Int_t i=0;i<26;i++){
2243 if(trk->GetTPCNclsF()>0)
2246 Double_t d0z0[2],covd0z0[3];
2247 trk->PropagateToDCA(
fVtx1,
fBzkG,kVeryBig,d0z0,covd0z0);
2251 Int_t itsmap = trk->GetITSClusterMap();
2254 Bool_t spdfirst = (itsmap & bit1) == bit1;
2255 Bool_t spdsecond = (itsmap & bit2) == bit2;
2293 const char* nameoutput = GetOutputSlot(6)->GetContainer()->GetName();
2297 TString * fCandidateVariableNames =
new TString[nVar];
2299 fCandidateVariableNames[ 0]=
"Centrality";
2300 fCandidateVariableNames[ 1]=
"InvMassXi";
2301 fCandidateVariableNames[ 2]=
"XiPx";
2302 fCandidateVariableNames[ 3]=
"XiPy";
2303 fCandidateVariableNames[ 4]=
"XiPz";
2304 fCandidateVariableNames[ 5]=
"InvMassLambda";
2305 fCandidateVariableNames[ 6]=
"DcaXiDaughters";
2306 fCandidateVariableNames[ 7]=
"DcaV0Daughters";
2307 fCandidateVariableNames[ 8]=
"DecayLengthXi";
2308 fCandidateVariableNames[ 9]=
"CosPointingAngleXi";
2309 fCandidateVariableNames[10]=
"DcaV0toPrimVertex";
2310 fCandidateVariableNames[11]=
"DcaPostoPrimVertex";
2311 fCandidateVariableNames[12]=
"DcaNegtoPrimVertex";
2312 fCandidateVariableNames[13]=
"DcaBachtoPrimVertex";
2313 fCandidateVariableNames[14]=
"DecayLengthV0";
2314 fCandidateVariableNames[15]=
"CosPointingAngleV0";
2315 fCandidateVariableNames[16]=
"XiCharge";
2316 fCandidateVariableNames[17]=
"XiPdgCode";
2317 fCandidateVariableNames[18]=
"XiMotherPdgCode";
2318 fCandidateVariableNames[19]=
"mcxipx";
2319 fCandidateVariableNames[20]=
"mcxipy";
2320 fCandidateVariableNames[21]=
"mcxipz";
2321 fCandidateVariableNames[22]=
"labcasc";
2322 fCandidateVariableNames[23]=
"RunNumber";
2323 fCandidateVariableNames[24]=
"PrimVertZ";
2324 fCandidateVariableNames[25]=
"EvNumber";
2326 for (Int_t ivar=0; ivar<nVar; ivar++) {
2340 AliAODTrack *cptrack = (AliAODTrack*)(casc->GetDaughter(0));
2341 AliAODTrack *cntrack = (AliAODTrack*)(casc->GetDaughter(1));
2342 AliAODTrack *cbtrack = (AliAODTrack*)(casc->GetDecayVertexXi()->GetDaughter(0));
2343 if(!cptrack)
return;
2344 if(!cntrack)
return;
2345 if(!cbtrack)
return;
2347 fHistoXiMassvsPt->Fill(casc->MassXi(),sqrt(casc->MomXiX()*casc->MomXiX()+casc->MomXiY()*casc->MomXiY()));
2348 fHistoOmegaMassvsPt->Fill(casc->MassOmega(),sqrt(casc->MomXiX()*casc->MomXiX()+casc->MomXiY()*casc->MomXiY()));
2349 Double_t momxix = casc->MomXiX();
2350 Double_t momxiy = casc->MomXiY();
2351 Double_t phi_alice = atan2(momxiy,momxix);
2352 if(phi_alice<0.) phi_alice += 2 * M_PI;
2353 fHistoXiQovPtvsPhi->Fill(phi_alice,(Double_t)casc->ChargeXi()/sqrt(momxix*momxix+momxiy*momxiy));
2355 Double_t mlamPDG = TDatabasePDG::Instance()->GetParticle(3122)->Mass();
2356 Double_t posVtx[3] = {0.,0.,0.};
2357 fVtx1->GetXYZ(posVtx);
2358 Double_t ptotlam = TMath::Sqrt(pow(casc->Px(),2)+pow(casc->Py(),2)+pow(casc->Pz(),2));
2359 Double_t dl = sqrt(pow(casc->DecayVertexV0X()-posVtx[0],2)+pow(casc->DecayVertexV0Y()-posVtx[1],2)+pow(casc->DecayVertexV0Z()-posVtx[2],2));
2360 Double_t v0propdl = dl*mlamPDG/ptotlam;
2370 Int_t xipdgcode = -9999;
2371 Int_t ximotherpdgcode = -9999;
2372 Float_t mcxipx = -9999.;
2373 Float_t mcxipy = -9999.;
2374 Float_t mcxipz = -9999.;
2375 Int_t labcasc = -9999.;
2377 Int_t pdgDgcasc[2]={211,3122};
2378 Int_t pdgDgv0[2]={2212,211};
2380 if(labcasc<0)
return;
2382 fHistoXiMassvsPtMCS->Fill(casc->MassXi(),sqrt(casc->MomXiX()*casc->MomXiX()+casc->MomXiY()*casc->MomXiY()));
2384 AliAODMCParticle *mccasctrk = (AliAODMCParticle*)mcArray->At(labcasc);
2385 if(!mccasctrk)
return;
2390 Bool_t hfxi_flag = kFALSE;
2391 xipdgcode = mccasctrk->GetPdgCode();
2392 Int_t labcascmother = mccasctrk->GetMother();
2393 if(labcascmother>=0){
2394 AliAODMCParticle *mothercasc = (AliAODMCParticle*)mcArray->At(labcascmother);
2396 ximotherpdgcode = mothercasc->GetPdgCode();
2397 if(abs(ximotherpdgcode)>4000&&abs(ximotherpdgcode)<4400){
2402 if(!hfxi_flag)
return;
2403 mcxipx = mccasctrk->Px();
2404 mcxipy = mccasctrk->Py();
2405 mcxipz = mccasctrk->Pz();
2409 Double_t xyz[3], pxpypz[3], cv[21]; Short_t sign;
2410 xyz[0]=casc->DecayVertexXiX();
2411 xyz[1]=casc->DecayVertexXiY();
2412 xyz[2]=casc->DecayVertexXiZ();
2413 pxpypz[0]=casc->MomXiX();
2414 pxpypz[1]=casc->MomXiY();
2415 pxpypz[2]=casc->MomXiZ();
2416 casc->GetCovarianceXYZPxPyPz(cv);
2417 sign=casc->ChargeXi();
2418 AliExternalTrackParam *trackCasc =
new AliExternalTrackParam(xyz,pxpypz,cv,sign);
2419 trackCasc->PropagateToDCA(
fVtx1,
fBzkG,kVeryBig);
2420 Double_t momcasc_new[3]={-9999,-9999,-9999.};
2421 trackCasc->GetPxPyPz(momcasc_new);
2424 TLorentzVector *lv =
new TLorentzVector();
2425 lv->SetXYZM(momcasc_new[0],momcasc_new[1],momcasc_new[2],casc->MassXi());
2426 Double_t xyzR125pr[3]={9999.,9999.,9999.};
2427 Double_t xyzR125pi[3]={9999.,9999.,9999.};
2428 Double_t xyzR125bach[3]={9999.,9999.,9999.};
2429 if(casc->ChargeXi()>0){
2436 TVector *varvec =
new TVector(9);
2437 (*varvec)[0] = xyzR125pr[0];
2438 (*varvec)[1] = xyzR125pr[1];
2439 (*varvec)[2] = xyzR125pr[2];
2440 (*varvec)[3] = xyzR125pi[0];
2441 (*varvec)[4] = xyzR125pi[1];
2442 (*varvec)[5] = xyzR125pi[2];
2443 (*varvec)[6] = xyzR125bach[0];
2444 (*varvec)[7] = xyzR125bach[1];
2445 (*varvec)[8] = xyzR125bach[2];
2454 TVector *varvec =
new TVector(9);
2455 (*varvec)[0] = xyzR125pr[0];
2456 (*varvec)[1] = xyzR125pr[1];
2457 (*varvec)[2] = xyzR125pr[2];
2458 (*varvec)[3] = xyzR125pi[0];
2459 (*varvec)[4] = xyzR125pi[1];
2460 (*varvec)[5] = xyzR125pi[2];
2461 (*varvec)[6] = xyzR125bach[0];
2462 (*varvec)[7] = xyzR125bach[1];
2463 (*varvec)[8] = xyzR125bach[2];
2470 for(Int_t i=0;i<26;i++){
2479 if(casc->ChargeXi()<0)
2515 const char* nameoutput = GetOutputSlot(7)->GetContainer()->GetName();
2519 TString * fCandidateVariableNames =
new TString[nVar];
2521 fCandidateVariableNames[ 0]=
"Centrality";
2522 fCandidateVariableNames[ 1]=
"DecayType";
2523 fCandidateVariableNames[ 2]=
"XicPx";
2524 fCandidateVariableNames[ 3]=
"XicPy";
2525 fCandidateVariableNames[ 4]=
"XicPz";
2526 fCandidateVariableNames[ 5]=
"ElePx";
2527 fCandidateVariableNames[ 6]=
"ElePy";
2528 fCandidateVariableNames[ 7]=
"ElePz";
2529 fCandidateVariableNames[ 8]=
"CascPx";
2530 fCandidateVariableNames[ 9]=
"CascPy";
2531 fCandidateVariableNames[10]=
"CascPz";
2532 fCandidateVariableNames[11]=
"PdgCode";
2533 fCandidateVariableNames[12]=
"ElePdgCode";
2534 fCandidateVariableNames[13]=
"CascPdgCode";
2535 fCandidateVariableNames[14]=
"RunNumber";
2536 fCandidateVariableNames[15]=
"EvNumber";
2538 for (Int_t ivar=0; ivar<nVar; ivar++) {
2550 if(!mcepart)
return;
2551 if(!mccascpart)
return;
2553 for(Int_t i=0;i<14;i++){
2574 Double_t epx = mcepart->Px();
2575 Double_t epy = mcepart->Py();
2576 Double_t epz = mcepart->Pz();
2577 Double_t eE = sqrt(epx*epx+epy*epy+epz*epz+0.000511*0.000511);
2578 Double_t cascpx = mccascpart->Px();
2579 Double_t cascpy = mccascpart->Py();
2580 Double_t cascpz = mccascpart->Pz();
2581 Double_t cascE = sqrt(cascpx*cascpx+cascpy*cascpy+cascpz*cascpz+1.32171*1.32171);
2583 Double_t InvMassEleXi = sqrt(pow(eE+cascE,2)-pow(epx+cascpx,2)-pow(epy+cascpy,2)-pow(epz+cascpz,2));
2586 cont[0] = InvMassEleXi;
2587 cont[1] = mcpart->Pt();
2591 cont2[0] = InvMassEleXi;
2592 cont2[1] = mcepart->Pt();
2594 Double_t cont_eleptvseta[3];
2595 cont_eleptvseta[0] = mcepart->Pt();
2596 cont_eleptvseta[1] = mcepart->Eta();
2598 Double_t cont_eleptvsxipt[3];
2599 cont_eleptvsxipt[0] = mcepart->Pt();
2600 cont_eleptvsxipt[1] = mccascpart->Pt();
2602 Double_t cont_eleptvsxiptvsxicpt[4];
2603 cont_eleptvsxiptvsxicpt[0] = mcepart->Pt();
2604 cont_eleptvsxiptvsxicpt[1] = mccascpart->Pt();
2605 cont_eleptvsxiptvsxicpt[2] = mcpart->Pt();
2609 contmc[0] = mcpart->Pt();
2610 contmc[1] = mcpart->Y();
2612 Double_t contmcele[3];
2613 contmcele[0] = mcepart->Pt();
2614 contmcele[1] = mcepart->Eta();
2620 esdcuts->GetEtaRange(etamin,etamax);
2630 if(fabs(mcepart->Eta())<etamax){
2634 if(InvMassEleXi<2.5){
2640 if(fabs(mcpart->Y())<0.7){
2641 if(InvMassEleXi<2.5){
2658 const char* nameoutput = GetOutputSlot(9)->GetContainer()->GetName();
2662 TString * fCandidateVariableNames =
new TString[nVar];
2664 fCandidateVariableNames[ 0]=
"Centrality";
2665 fCandidateVariableNames[ 1]=
"ElePx";
2666 fCandidateVariableNames[ 2]=
"ElePy";
2667 fCandidateVariableNames[ 3]=
"ElePz";
2668 fCandidateVariableNames[ 4]=
"ElePdgCode";
2669 fCandidateVariableNames[ 5]=
"EleMotherPdgCode";
2670 fCandidateVariableNames[ 6]=
"RunNumber";
2671 fCandidateVariableNames[ 7]=
"EvNumber";
2673 for (Int_t ivar=0; ivar<nVar; ivar++) {
2684 if(!mcepart)
return;
2687 Bool_t hfe_flag = kFALSE;
2688 Int_t labemother = mcepart->GetMother();
2689 Int_t pdgmotherele = -9999;
2691 AliAODMCParticle *motherele = (AliAODMCParticle*)mcArray->At(labemother);
2692 pdgmotherele = motherele->GetPdgCode();
2693 if(abs(pdgmotherele)>4000&&abs(pdgmotherele)<4400){
2697 if(!hfe_flag)
return;
2700 contmc[0] = mcepart->Pt();
2701 contmc[1] = mcepart->Eta();
2705 for(Int_t i=0;i<8;i++){
2729 const char* nameoutput = GetOutputSlot(10)->GetContainer()->GetName();
2733 TString * fCandidateVariableNames =
new TString[nVar];
2735 fCandidateVariableNames[ 0]=
"Centrality";
2736 fCandidateVariableNames[ 1]=
"CascPx";
2737 fCandidateVariableNames[ 2]=
"CascPy";
2738 fCandidateVariableNames[ 3]=
"CascPz";
2739 fCandidateVariableNames[ 4]=
"CascPdgCode";
2740 fCandidateVariableNames[ 5]=
"CascMotherPdgCode";
2741 fCandidateVariableNames[ 6]=
"RunNumber";
2742 fCandidateVariableNames[ 7]=
"EvNumber";
2744 for (Int_t ivar=0; ivar<nVar; ivar++) {
2755 if(!mccascpart)
return;
2757 for(Int_t i=0;i<8;i++){
2761 Bool_t hfxi_flag = kFALSE;
2762 Int_t labcascmother = mccascpart->GetMother();
2763 Int_t pdgmothercasc = -9999;
2764 if(labcascmother>=0){
2765 AliAODMCParticle *mothercasc = (AliAODMCParticle*)mcArray->At(labcascmother);
2767 pdgmothercasc = mothercasc->GetPdgCode();
2768 if(abs(pdgmothercasc)>4000&&abs(pdgmothercasc)<4400){
2773 if(!hfxi_flag)
return;
2776 contmc[0] = mccascpart->Pt();
2777 contmc[1] = mccascpart->Eta();
2801 fCEvents =
new TH1F(
"fCEvents",
"conter",18,-0.5,17.5);
2803 fCEvents->GetXaxis()->SetBinLabel(1,
"X1");
2804 fCEvents->GetXaxis()->SetBinLabel(2,
"Analyzed events");
2805 fCEvents->GetXaxis()->SetBinLabel(3,
"AliAODVertex exists");
2806 fCEvents->GetXaxis()->SetBinLabel(4,
"TriggerOK");
2807 fCEvents->GetXaxis()->SetBinLabel(5,
"IsEventSelected");
2808 fCEvents->GetXaxis()->SetBinLabel(6,
"CascadesHF exists");
2809 fCEvents->GetXaxis()->SetBinLabel(7,
"MCarray exists");
2810 fCEvents->GetXaxis()->SetBinLabel(8,
"MCheader exists");
2811 fCEvents->GetXaxis()->SetBinLabel(9,
"triggerClass!=CINT1");
2812 fCEvents->GetXaxis()->SetBinLabel(10,
"triggerMask!=kAnyINT");
2813 fCEvents->GetXaxis()->SetBinLabel(11,
"triggerMask!=kAny");
2814 fCEvents->GetXaxis()->SetBinLabel(12,
"vtxTitle.Contains(Z)");
2815 fCEvents->GetXaxis()->SetBinLabel(13,
"vtxTitle.Contains(3D)");
2816 fCEvents->GetXaxis()->SetBinLabel(14,
"vtxTitle.Doesn'tContain(Z-3D)");
2818 fCEvents->GetXaxis()->SetBinLabel(16,
"!IsEventSelected");
2819 fCEvents->GetXaxis()->SetBinLabel(17,
"triggerMask!=kAnyINT || triggerClass!=CINT1");
2822 fCEvents->GetYaxis()->SetTitle(
"counts");
2824 fHTrigger =
new TH1F(
"fHTrigger",
"counter",18,-0.5,17.5);
2826 fHTrigger->GetXaxis()->SetBinLabel(1,
"X1");
2827 fHTrigger->GetXaxis()->SetBinLabel(2,
"kMB");
2828 fHTrigger->GetXaxis()->SetBinLabel(3,
"kSemiCentral");
2829 fHTrigger->GetXaxis()->SetBinLabel(4,
"kCentral");
2830 fHTrigger->GetXaxis()->SetBinLabel(5,
"kINT7");
2831 fHTrigger->GetXaxis()->SetBinLabel(6,
"kEMC7");
2833 fHTrigger->GetXaxis()->SetBinLabel(8,
"kMB|kSemiCentral|kCentral");
2834 fHTrigger->GetXaxis()->SetBinLabel(9,
"kINT7|kEMC7");
2835 fHTrigger->GetXaxis()->SetBinLabel(11,
"kMB&kSemiCentral");
2836 fHTrigger->GetXaxis()->SetBinLabel(12,
"kMB&kCentral");
2837 fHTrigger->GetXaxis()->SetBinLabel(13,
"kINT7&kEMC7");
2839 fHCentrality =
new TH1F(
"fHCentrality",
"conter",100,0.,100.);
2858 Int_t bins_base[4]= {22 ,100 , 100 ,10};
2859 Double_t xmin_base[4]={1.3,0 , -0.5 ,0.00};
2860 Double_t xmax_base[4]={5.7,20. , 0.5 ,100};
2862 fHistoEleXiMass =
new THnSparseF(
"fHistoEleXiMass",
"",4,bins_base,xmin_base,xmax_base);
2864 fHistoEleXiMassRS =
new THnSparseF(
"fHistoEleXiMassRS",
"",4,bins_base,xmin_base,xmax_base);
2866 fHistoEleXiMassWS =
new THnSparseF(
"fHistoEleXiMassWS",
"",4,bins_base,xmin_base,xmax_base);
2868 fHistoEleXiMassRSMix =
new THnSparseF(
"fHistoEleXiMassRSMix",
"",4,bins_base,xmin_base,xmax_base);
2870 fHistoEleXiMassWSMix =
new THnSparseF(
"fHistoEleXiMassWSMix",
"",4,bins_base,xmin_base,xmax_base);
2876 fHistoEleXiMassRS1 =
new THnSparseF(
"fHistoEleXiMassRS1",
"",4,bins_base,xmin_base,xmax_base);
2878 fHistoEleXiMassWS1 =
new THnSparseF(
"fHistoEleXiMassWS1",
"",4,bins_base,xmin_base,xmax_base);
2888 fHistoEleXiMassRS2 =
new THnSparseF(
"fHistoEleXiMassRS2",
"",4,bins_base,xmin_base,xmax_base);
2890 fHistoEleXiMassWS2 =
new THnSparseF(
"fHistoEleXiMassWS2",
"",4,bins_base,xmin_base,xmax_base);
2938 Int_t bins_base_elept[3]= {10 ,100 ,10};
2939 Double_t xmin_base_elept[3]={1.3,0 ,0.00};
2940 Double_t xmax_base_elept[3]={3.3,10. ,100};
2942 fHistoEleXiMassvsElePtRS =
new THnSparseF(
"fHistoEleXiMassvsElePtRS",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
2944 fHistoEleXiMassvsElePtWS =
new THnSparseF(
"fHistoEleXiMassvsElePtWS",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
2954 fHistoEleXiMassvsElePtRS1 =
new THnSparseF(
"fHistoEleXiMassvsElePtRS1",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
2956 fHistoEleXiMassvsElePtWS1 =
new THnSparseF(
"fHistoEleXiMassvsElePtWS1",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
2966 fHistoEleXiMassvsElePtRS2 =
new THnSparseF(
"fHistoEleXiMassvsElePtRS2",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
2968 fHistoEleXiMassvsElePtWS2 =
new THnSparseF(
"fHistoEleXiMassvsElePtWS2",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
2979 fHistoElePtRS=
new TH2F(
"fHistoElePtRS",
"Right-sign e pt",100,0.,10.,10,0.,100.);
2981 fHistoElePtWS=
new TH2F(
"fHistoElePtWS",
"Wrong-sign e pt",100,0.,10.,10,0.,100.);
2983 fHistoElePtRSMix=
new TH2F(
"fHistoElePtRSMix",
"Right-sign e pt",100,0.,10.,10,0.,100.);
2985 fHistoElePtWSMix=
new TH2F(
"fHistoElePtWSMix",
"Wrong-sign e pt",100,0.,10.,10,0.,100.);
2988 fHistoEleXiMassMCS =
new THnSparseF(
"fHistoEleXiMassMCS",
"",4,bins_base,xmin_base,xmax_base);
2990 fHistoEleXiMassMCS1 =
new THnSparseF(
"fHistoEleXiMassMCS1",
"",4,bins_base,xmin_base,xmax_base);
2992 fHistoEleXiMassMCS2 =
new THnSparseF(
"fHistoEleXiMassMCS2",
"",4,bins_base,xmin_base,xmax_base);
3012 fHistoEleXiMassMCGen =
new THnSparseF(
"fHistoEleXiMassMCGen",
"",4,bins_base,xmin_base,xmax_base);
3014 fHistoEleXiMassvsElePtMCS =
new THnSparseF(
"fHistoEleXiMassvsElePtMCS",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
3018 fHistoEleXiMassvsElePtMCS1 =
new THnSparseF(
"fHistoEleXiMassvsElePtMCS1",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
3022 fHistoEleXiMassvsElePtMCS2 =
new THnSparseF(
"fHistoEleXiMassvsElePtMCS2",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
3026 fHistoElePtMCS=
new TH2F(
"fHistoElePtMCS",
"MC S e pt",100,0.,10.,10,0.,100.);
3028 fHistoElePtMCGen=
new TH2F(
"fHistoElePtMCGen",
"MC Gen e pt",100,0.,10.,10,0.,100.);
3031 Int_t bins_eleptvseta[3]= {50,20 ,10};
3032 Double_t xmin_eleptvseta[3]={0.,-1. ,0.0};
3033 Double_t xmax_eleptvseta[3]={5.,1. ,100};
3035 fHistoElePtvsEtaRS =
new THnSparseF(
"fHistoElePtvsEtaRS",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
3037 fHistoElePtvsEtaWS =
new THnSparseF(
"fHistoElePtvsEtaWS",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
3039 fHistoElePtvsEtaRSMix =
new THnSparseF(
"fHistoElePtvsEtaRSMix",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
3041 fHistoElePtvsEtaWSMix =
new THnSparseF(
"fHistoElePtvsEtaWSMix",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
3043 fHistoElePtvsEtaMCS =
new THnSparseF(
"fHistoElePtvsEtaMCS",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
3045 fHistoElePtvsEtaMCGen =
new THnSparseF(
"fHistoElePtvsEtaMCGen",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
3048 Int_t bins_eleptvsxipt[3]= {50,20 ,10};
3049 Double_t xmin_eleptvsxipt[3]={0.,0. ,0.0};
3050 Double_t xmax_eleptvsxipt[3]={5.,5. ,100};
3052 fHistoElePtvsXiPtRS =
new THnSparseF(
"fHistoElePtvsXiPtRS",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
3054 fHistoElePtvsXiPtWS =
new THnSparseF(
"fHistoElePtvsXiPtWS",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
3056 fHistoElePtvsXiPtRSMix =
new THnSparseF(
"fHistoElePtvsXiPtRSMix",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
3058 fHistoElePtvsXiPtWSMix =
new THnSparseF(
"fHistoElePtvsXiPtWSMix",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
3060 fHistoElePtvsXiPtMCS =
new THnSparseF(
"fHistoElePtvsXiPtMCS",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
3062 fHistoElePtvsXiPtMCGen =
new THnSparseF(
"fHistoElePtvsXiPtMCGen",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
3064 fHistoElePtvsXiPtMCXicGen =
new THnSparseF(
"fHistoElePtvsXiPtMCXicGen",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
3067 Int_t bins_eleptvsxiptvsxicpt[4]= {50,20,10,10};
3068 Double_t xmin_eleptvsxiptvsxicpt[4]={0.,0.,0.,0.0};
3069 Double_t xmax_eleptvsxiptvsxicpt[4]={5.,5.,10.,100};
3070 fHistoElePtvsXiPtvsXicPtMCS =
new THnSparseF(
"fHistoElePtvsXiPtvsXicPtMCS",
"",4,bins_eleptvsxiptvsxicpt,xmin_eleptvsxiptvsxicpt,xmax_eleptvsxiptvsxicpt);
3072 fHistoElePtvsXiPtvsXicPtMCGen =
new THnSparseF(
"fHistoElePtvsXiPtvsXicPtMCGen",
"",4,bins_eleptvsxiptvsxicpt,xmin_eleptvsxiptvsxicpt,xmax_eleptvsxiptvsxicpt);
3075 Int_t bins_eleptvsd0[3]= {50 ,50 ,10};
3076 Double_t xmin_eleptvsd0[3]={0.,-0.2 ,0.0};
3077 Double_t xmax_eleptvsd0[3]={5.,0.2 ,100};
3079 fHistoElePtvsd0RS =
new THnSparseF(
"fHistoElePtvsd0RS",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
3081 fHistoElePtvsd0WS =
new THnSparseF(
"fHistoElePtvsd0WS",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
3083 fHistoElePtvsd0RSMix =
new THnSparseF(
"fHistoElePtvsd0RSMix",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
3085 fHistoElePtvsd0WSMix =
new THnSparseF(
"fHistoElePtvsd0WSMix",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
3087 fHistoElePtvsd0MCS =
new THnSparseF(
"fHistoElePtvsd0MCS",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
3089 fHistoElePtvsd0PromptMCS =
new THnSparseF(
"fHistoElePtvsd0PromptMCS",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
3097 fHistoBachPt =
new TH1F(
"fHistoBachPt",
"Bachelor p_{T}",100,0.0,5.0);
3099 fHistoBachPtMCS =
new TH1F(
"fHistoBachPtMCS",
"Bachelor p_{T}",100,0.0,5.0);
3103 fHistod0Bach =
new TH1F(
"fHistod0Bach",
"Bachelor d_{0}",100,-0.5,0.5);
3105 fHistoXiMassvsPt=
new TH2F(
"fHistoXiMassvsPt",
"Xi mass",100,1.32-0.05,1.32+0.05,20,0.,10.);
3107 fHistoXiMassvsPtMCS=
new TH2F(
"fHistoXiMassvsPtMCS",
"Xi mass",100,1.32-0.05,1.32+0.05,20,0.,10.);
3109 fHistoXiMassvsPtMCGen=
new TH2F(
"fHistoXiMassvsPtMCGen",
"Xi mass",100,1.32-0.05,1.32+0.05,20,0.,10.);
3111 fHistoOmegaMassvsPt=
new TH2F(
"fHistoOmegaMassvsPt",
"Omega mass",100,1.67-0.05,1.67+0.05,20,0.,10.);
3135 for(Int_t i=0;i<8;i++){
3145 Int_t bins_xicmcgen[3]= {100 ,20 ,10};
3146 Double_t xmin_xicmcgen[3]={0.,-1.0 ,0.0};
3147 Double_t xmax_xicmcgen[3]={20.,1.0 ,100};
3148 fHistoXicMCGen =
new THnSparseF(
"fHistoXicMCGen",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
3150 fHistoXicMCGen1 =
new THnSparseF(
"fHistoXicMCGen1",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
3152 fHistoXicMCGen2 =
new THnSparseF(
"fHistoXicMCGen2",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
3154 fHistoXicMCS =
new THnSparseF(
"fHistoXicMCS",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
3156 fHistoXicMCS1 =
new THnSparseF(
"fHistoXicMCS1",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
3158 fHistoXicMCS2 =
new THnSparseF(
"fHistoXicMCS2",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
3161 Int_t bins_elemcgen[3]= {100 ,20 ,10};
3162 Double_t xmin_elemcgen[3]={0.,-1.0 ,0.0};
3163 Double_t xmax_elemcgen[3]={10.,1.0 ,100};
3164 fHistoElectronMCGen =
new THnSparseF(
"fHistoElectronMCGen",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
3166 fHistoXicElectronMCGen =
new THnSparseF(
"fHistoXicElectronMCGen",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
3168 fHistoXicElectronMCGen1 =
new THnSparseF(
"fHistoXicElectronMCGen1",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
3170 fHistoXicElectronMCGen2 =
new THnSparseF(
"fHistoXicElectronMCGen2",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
3172 fHistoXicElectronMCS =
new THnSparseF(
"fHistoXicElectronMCS",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
3174 fHistoXicElectronMCS1 =
new THnSparseF(
"fHistoXicElectronMCS1",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
3176 fHistoXicElectronMCS2 =
new THnSparseF(
"fHistoXicElectronMCS2",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
3179 Int_t bins_ximcgen[3]= {50 ,20 ,10};
3180 Double_t xmin_ximcgen[3]={0.,-1.0 ,0.0};
3181 Double_t xmax_ximcgen[3]={10.,1.0 ,100};
3182 fHistoXiMCGen =
new THnSparseF(
"fHistoXiMCGen",
"",3,bins_ximcgen,xmin_ximcgen,xmax_ximcgen);
3185 fHistoLambdaPtvsDl=
new TH2F(
"fHistoLambdaPtvsDl",
"Lambda pt vs dl",20,0.,10.,20,0.,40.);
3191 fHistoLambdaPtvsDR=
new TH2F(
"fHistoLambdaPtvsDR",
"Lambda pt vs dl",20,0.,10.,80,0.,160.);
3251 for(Int_t ih=0;ih<23;ih++){
3252 Int_t bins_eleptvscutvars[3];
3253 Double_t xmin_eleptvscutvars[3];
3254 Double_t xmax_eleptvscutvars[3];
3256 bins_eleptvscutvars[0] = 20;
3257 xmin_eleptvscutvars[0] = 0.;
3258 xmax_eleptvscutvars[0] = 20.;
3259 bins_eleptvscutvars[2] = 10;
3260 xmin_eleptvscutvars[2] = 0.;
3261 xmax_eleptvscutvars[2] = 100.;
3265 bins_eleptvscutvars[1] = 40;
3266 xmin_eleptvscutvars[1] = 0.;
3267 xmax_eleptvscutvars[1] = 160.;
3268 }
else if(ih==2 || ih==3){
3270 bins_eleptvscutvars[1] = 20;
3271 xmin_eleptvscutvars[1] = -5.;
3272 xmax_eleptvscutvars[1] = 5.;
3275 bins_eleptvscutvars[1] = 30;
3276 xmin_eleptvscutvars[1] = -1.5;
3277 xmax_eleptvscutvars[1] = 1.5;
3280 bins_eleptvscutvars[1] = 7;
3281 xmin_eleptvscutvars[1] = -0.5;
3282 xmax_eleptvscutvars[1] = 6.5;
3285 bins_eleptvscutvars[1] = 50;
3286 xmin_eleptvscutvars[1] = 1.1156-0.03;
3287 xmax_eleptvscutvars[1] = 1.1156+0.03;
3290 bins_eleptvscutvars[1] = 50;
3291 xmin_eleptvscutvars[1] = 1.32-0.03;
3292 xmax_eleptvscutvars[1] = 1.32+0.03;
3293 }
else if(ih==8 || ih==9){
3295 bins_eleptvscutvars[1] = 20;
3296 xmin_eleptvscutvars[1] = 0.;
3297 xmax_eleptvscutvars[1] = 5.;
3298 }
else if(ih==10 || ih==11){
3300 bins_eleptvscutvars[1] = 20;
3301 xmin_eleptvscutvars[1] = 0.;
3302 xmax_eleptvscutvars[1] = 2.;
3303 }
else if(ih==12 || ih==13 || ih==14){
3305 bins_eleptvscutvars[1] = 20;
3306 xmin_eleptvscutvars[1] = 0.;
3307 xmax_eleptvscutvars[1] = 0.5;
3308 }
else if(ih==15 || ih==16){
3310 bins_eleptvscutvars[1] = 20;
3311 xmin_eleptvscutvars[1] = 0.95;
3312 xmax_eleptvscutvars[1] = 1.0;
3313 }
else if(ih==17 || ih==18 || ih==19){
3315 bins_eleptvscutvars[1] = 20;
3316 xmin_eleptvscutvars[1] = -5.;
3317 xmax_eleptvscutvars[1] = 5.;
3318 }
else if(ih==20 || ih==21){
3320 bins_eleptvscutvars[1] = 30;
3321 xmin_eleptvscutvars[1] = -1.5;
3322 xmax_eleptvscutvars[1] = 1.5;
3325 bins_eleptvscutvars[1] = 20;
3326 xmin_eleptvscutvars[1] = 0.;
3327 xmax_eleptvscutvars[1] = 3.141592/2;
3330 fHistoElePtvsCutVarsRS[ih] =
new THnSparseF(Form(
"fHistoElePtvsCutVarsRS[%d]",ih),
"",3,bins_eleptvscutvars,xmin_eleptvscutvars,xmax_eleptvscutvars);
3332 fHistoElePtvsCutVarsWS[ih] =
new THnSparseF(Form(
"fHistoElePtvsCutVarsWS[%d]",ih),
"",3,bins_eleptvscutvars,xmin_eleptvscutvars,xmax_eleptvscutvars);
3334 fHistoElePtvsCutVarsMCS[ih] =
new THnSparseF(Form(
"fHistoElePtvsCutVarsMCS[%d]",ih),
"",3,bins_eleptvscutvars,xmin_eleptvscutvars,xmax_eleptvscutvars);
3348 if(!casc)
return 0x0;
3349 if(!part)
return 0x0;
3350 if(!aod)
return 0x0;
3355 AliAODVertex *primVertexAOD;
3356 Bool_t unsetvtx = kFALSE;
3360 primVertexAOD =
fVtx1;
3365 primVertexAOD =
fVtx1;
3367 if(!primVertexAOD)
return 0x0;
3368 Double_t posprim[3]; primVertexAOD->GetXYZ(posprim);
3373 AliESDtrack *esdtrack =
new AliESDtrack((AliVTrack*)partpid);
3375 Double_t xyz[3], pxpypz[3], cv[21]; Short_t sign;
3376 xyz[0]=casc->DecayVertexXiX();
3377 xyz[1]=casc->DecayVertexXiY();
3378 xyz[2]=casc->DecayVertexXiZ();
3379 pxpypz[0]=casc->MomXiX();
3380 pxpypz[1]=casc->MomXiY();
3381 pxpypz[2]=casc->MomXiZ();
3382 casc->GetCovarianceXYZPxPyPz(cv);
3383 sign=casc->ChargeXi();
3384 AliExternalTrackParam *trackCasc =
new AliExternalTrackParam(xyz,pxpypz,cv,sign);
3386 Double_t xdummy, ydummy;
3387 Double_t dca = esdtrack->GetDCA(trackCasc,
fBzkG,xdummy,ydummy);
3394 Double_t d0z0bach[2],covd0z0bach[3];
3395 if(sqrt(pow(secVert->GetX(),2)+pow(secVert->GetY(),2))<1.){
3396 part->PropagateToDCA(secVert,
fBzkG,kVeryBig,d0z0bach,covd0z0bach);
3397 trackCasc->PropagateToDCA(secVert,
fBzkG,kVeryBig);
3399 part->PropagateToDCA(primVertexAOD,
fBzkG,kVeryBig,d0z0bach,covd0z0bach);
3400 trackCasc->PropagateToDCA(primVertexAOD,
fBzkG,kVeryBig);
3402 Double_t momcasc_new[3]={-9999,-9999,-9999.};
3403 trackCasc->GetPxPyPz(momcasc_new);
3405 Double_t px[2],py[2],pz[2];
3406 px[0] = part->Px(); py[0] = part->Py(); pz[0] = part->Pz();
3407 px[1] = momcasc_new[0]; py[1] = momcasc_new[1]; pz[1] = momcasc_new[2];
3412 Double_t d0[3],d0err[3];
3414 part->PropagateToDCA(primVertexAOD,
fBzkG,kVeryBig,d0z0bach,covd0z0bach);
3416 d0err[0] = TMath::Sqrt(covd0z0bach[0]);
3418 Double_t d0z0casc[2],covd0z0casc[3];
3419 trackCasc->PropagateToDCA(primVertexAOD,
fBzkG,kVeryBig,d0z0casc,covd0z0casc);
3421 d0err[1] = TMath::Sqrt(covd0z0casc[0]);
3426 Short_t
charge = part->Charge();
3430 if(unsetvtx)
delete primVertexAOD; primVertexAOD=NULL;
3431 if(esdtrack)
delete esdtrack;
3432 if(trackCasc)
delete trackCasc;
3436 UShort_t
id[2]={(UShort_t)part->GetID(),(UShort_t)trackCasc->GetID()};
3439 theCascade->GetSecondaryVtx()->AddDaughter(part);
3440 theCascade->GetSecondaryVtx()->AddDaughter(casc);
3441 if(unsetvtx)
delete primVertexAOD; primVertexAOD=NULL;
3442 if(esdtrack)
delete esdtrack;
3443 if(trackCasc)
delete trackCasc;
3456 TObjArray *TrackArray =
new TObjArray(3);
3458 AliESDtrack *cptrk1 =
new AliESDtrack((AliVTrack*)trk);
3459 TrackArray->AddAt(cptrk1,0);
3461 AliESDtrack *cascptrack =
new AliESDtrack((AliVTrack*)casc->GetDaughter(0));
3462 TrackArray->AddAt(cascptrack,1);
3463 AliESDtrack *cascntrack =
new AliESDtrack((AliVTrack*)casc->GetDaughter(1));
3464 TrackArray->AddAt(cascntrack,2);
3465 AliESDtrack *cascbtrack =
new AliESDtrack((AliVTrack*)casc->GetDecayVertexXi()->GetDaughter(0));
3466 TrackArray->AddAt(cascbtrack,3);
3470 for(Int_t i=0;i<4;i++)
3472 AliESDtrack *tesd = (AliESDtrack*)TrackArray->UncheckedAt(i);
3475 TrackArray->Clear();
3490 Bool_t fRecoPrimVtxSkippingTrks = kTRUE;
3491 Bool_t fRmTrksFromPrimVtx = kFALSE;
3493 AliESDVertex *vertexESD = 0;
3494 AliAODVertex *vertexAOD = 0;
3499 if(!fRecoPrimVtxSkippingTrks && !fRmTrksFromPrimVtx) {
3502 vertexESD =
new AliESDVertex(*
fV1);
3507 Int_t nTrks = trkArray->GetEntriesFast();
3508 AliVertexerTracks *vertexer =
new AliVertexerTracks(event->GetMagneticField());
3510 if(fRecoPrimVtxSkippingTrks) {
3513 if(strstr(
fV1->GetTitle(),
"VertexerTracksWithConstraint")) {
3514 Float_t diamondcovxy[3];
3515 event->GetDiamondCovXY(diamondcovxy);
3516 Double_t pos[3]={
event->GetDiamondX(),
event->GetDiamondY(),0.};
3517 Double_t cov[6]={diamondcovxy[0],diamondcovxy[1],diamondcovxy[2],0.,0.,10.*10.};
3518 AliESDVertex *diamond =
new AliESDVertex(pos,cov,1.,1);
3519 vertexer->SetVtxStart(diamond);
3520 delete diamond; diamond=NULL;
3521 if(strstr(
fV1->GetTitle(),
"VertexerTracksWithConstraintOnlyFitter"))
3522 vertexer->SetOnlyFitter();
3524 Int_t skipped[1000];
3525 Int_t nTrksToSkip=0,id;
3526 AliExternalTrackParam *t = 0;
3527 for(Int_t i=0; i<nTrks; i++) {
3528 t = (AliExternalTrackParam*)trkArray->UncheckedAt(i);
3529 id = (Int_t)t->GetID();
3531 skipped[nTrksToSkip++] = id;
3535 Double_t covtest[21];
3536 for(Int_t j=0; j<
event->GetNumberOfTracks(); j++) {
3537 AliVTrack *vtrack = (AliVTrack*)event->GetTrack(j);
3538 if(!vtrack->GetCovarianceXYZPxPyPz(covtest)) {
3539 id = (Int_t)vtrack->GetID();
3541 skipped[nTrksToSkip++] = id;
3544 for(Int_t ijk=nTrksToSkip; ijk<1000; ijk++) skipped[ijk]=-1;
3546 vertexer->SetSkipTracks(nTrksToSkip,skipped);
3547 vertexESD = (AliESDVertex*)vertexer->FindPrimaryVertex(event);
3549 }
else if(fRmTrksFromPrimVtx && nTrks>0) {
3552 TObjArray rmArray(nTrks);
3553 UShort_t *rmId =
new UShort_t[nTrks];
3554 AliESDtrack *esdTrack = 0;
3556 for(Int_t i=0; i<nTrks; i++) {
3557 t = (AliESDtrack*)trkArray->UncheckedAt(i);
3558 esdTrack =
new AliESDtrack(*t);
3559 rmArray.AddLast(esdTrack);
3560 if(esdTrack->GetID()>=0) {
3561 rmId[i]=(UShort_t)esdTrack->GetID();
3566 Float_t diamondxy[2]={
static_cast<Float_t
>(
event->GetDiamondX()),static_cast<Float_t>(event->GetDiamondY())};
3567 vertexESD = vertexer->RemoveTracksFromVertex(
fV1,&rmArray,rmId,diamondxy);
3568 delete [] rmId; rmId=NULL;
3573 delete vertexer; vertexer=NULL;
3574 if(!vertexESD)
return vertexAOD;
3575 if(vertexESD->GetNContributors()<=0) {
3577 delete vertexESD; vertexESD=NULL;
3585 Double_t pos[3],cov[6],chi2perNDF;
3586 vertexESD->GetXYZ(pos);
3587 vertexESD->GetCovMatrix(cov);
3588 chi2perNDF = vertexESD->GetChi2toNDF();
3589 delete vertexESD; vertexESD=NULL;
3591 vertexAOD =
new AliAODVertex(pos,cov,chi2perNDF);
3603 AliAODVertex *primVertexAOD;
3604 Bool_t unsetvtx = kFALSE;
3608 primVertexAOD =
fVtx1;
3613 primVertexAOD =
fVtx1;
3615 if(!primVertexAOD)
return 0x0;
3617 AliESDVertex * vertexESD =
new AliESDVertex(*
fV1);
3619 Double_t pos[3],cov[6],chi2perNDF;
3620 vertexESD->GetXYZ(pos);
3621 vertexESD->GetCovMatrix(cov);
3622 chi2perNDF = vertexESD->GetChi2toNDF();
3623 delete vertexESD; vertexESD=NULL;
3625 AliAODVertex *secVert =
new AliAODVertex(pos,cov,chi2perNDF);
3635 for(Int_t i=0;i<100;i++){
3636 pdgarray_ele[i] = -9999;
3637 labelarray_ele[i] = -9999;
3638 pdgarray_casc[i] = -9999;
3639 labelarray_casc[i] = -9999;
3644 AliVTrack *trk =
dynamic_cast<AliVTrack*
>(exobj->
GetBachelor());
3646 Int_t labEle = trk->GetLabel();
3647 if(labEle<0)
return -1;
3648 AliAODMCParticle *mcetrk = (AliAODMCParticle*)mcArray->At(labEle);
3649 if(!mcetrk)
return -1;
3650 labelarray_ele[0] = labEle;
3651 pdgarray_ele[0] = mcetrk->GetPdgCode();
3654 AliAODMCParticle *mcprimele=0;
3656 while(mcprimele->GetMother()>=0) {
3657 Int_t labprim_ele=mcprimele->GetMother();
3658 AliAODMCParticle *tmcprimele = (AliAODMCParticle*)mcArray->At(labprim_ele);
3663 mcprimele = tmcprimele;
3664 pdgarray_ele[ngen_ele] = mcprimele->GetPdgCode();
3665 labelarray_ele[ngen_ele] = labprim_ele;
3667 if(ngen_ele==100)
break;
3670 AliAODcascade *theCascade =
dynamic_cast<AliAODcascade*
>(exobj->
GetCascade());
3671 if(!theCascade)
return -1;
3673 Int_t pdgDgcasc[2]={211,3122};
3674 Int_t pdgDgv0[2]={2212,211};
3675 Int_t labcasc =
MatchToMCCascade(theCascade,3312,pdgDgcasc,pdgDgv0,mcArray);
3676 if(labcasc<0)
return -1;
3678 AliAODMCParticle *mccasc = (AliAODMCParticle*)mcArray->At(labcasc);
3679 if(!mccasc)
return -1;
3680 labelarray_casc[0] = labcasc;
3681 pdgarray_casc[0] = mccasc->GetPdgCode();
3684 AliAODMCParticle *mcprimcasc=0;
3685 mcprimcasc = mccasc;
3686 while(mcprimcasc->GetMother()>=0) {
3687 Int_t labprim_casc=mcprimcasc->GetMother();
3688 AliAODMCParticle *tmcprimcasc = (AliAODMCParticle*)mcArray->At(labprim_casc);
3693 mcprimcasc = tmcprimcasc;
3694 pdgarray_casc[ngen_casc] = mcprimcasc->GetPdgCode();
3695 labelarray_casc[ngen_casc] = labprim_casc;
3697 if(ngen_casc==100)
break;
3700 Bool_t same_flag = kFALSE;
3701 Int_t matchedlabel=-9999;
3702 for(Int_t iemc=0;iemc<ngen_ele;iemc++){
3703 for(Int_t ivmc=0;ivmc<ngen_casc;ivmc++){
3704 if(labelarray_ele[iemc]==labelarray_casc[ivmc]){
3706 matchedlabel = labelarray_ele[iemc];
3710 if(same_flag)
break;
3713 return matchedlabel;
3723 AliAODTrack *cptrack = (AliAODTrack*) theCascade->GetDaughter(0);
3724 if(!cptrack)
return -1;
3725 Int_t label_p = TMath::Abs(cptrack->GetLabel());
3726 if(label_p<0)
return -1;
3727 AliAODTrack *cntrack = (AliAODTrack*) theCascade->GetDaughter(1);
3728 if(!cntrack)
return -1;
3729 Int_t label_n = TMath::Abs(cntrack->GetLabel());
3730 if(label_n<0)
return -1;
3731 Int_t labv0 = theCascade->MatchToMC(pdgDgcasc[1],mcArray,2,pdgDgv0);
3732 if(labv0<0)
return -1;
3733 AliAODMCParticle *mcpartv0= (AliAODMCParticle*) mcArray->At(labv0);
3735 AliAODTrack *cbtrack = (AliAODTrack*) theCascade->GetDecayVertexXi()->GetDaughter(0);
3736 if(!cbtrack)
return -1;
3738 Int_t label_b = TMath::Abs(cbtrack->GetLabel());
3739 if(label_b<0)
return -1;
3741 AliAODMCParticle *mcpartb= (AliAODMCParticle*) mcArray->At(label_b);
3742 Int_t pdgb = TMath::Abs(mcpartb->GetPdgCode());
3743 if(pdgb!=pdgDgcasc[0])
return -1;
3745 AliAODMCParticle *mcmotherv0=mcpartv0;
3746 Bool_t isFromXiv0 = kFALSE;
3747 Int_t labxiv0 = mcmotherv0->GetMother();
3748 if(labxiv0<0)
return -1;
3749 mcmotherv0 = (AliAODMCParticle*) mcArray->At(labxiv0);
3751 Int_t
pdg = TMath::Abs(mcmotherv0 ->GetPdgCode());
3752 if(pdg==pdgabscasc){
3756 if(!isFromXiv0)
return -1;
3758 AliAODMCParticle *mcmotherb=mcpartb;
3759 Bool_t isFromXib = kFALSE;
3760 Int_t labxib = mcmotherb->GetMother();
3761 if(labxib<0)
return -1;
3762 mcmotherb = (AliAODMCParticle*) mcArray->At(labxib);
3764 Int_t
pdg = TMath::Abs(mcmotherb ->GetPdgCode());
3765 if(pdg==pdgabscasc){
3769 if(!isFromXib)
return -1;
3771 if(labxiv0!=labxib)
return -1;
3783 if(trkEntries==0)
return;
3786 for(Int_t i=0; i<trkEntries; i++) {
3787 seleFlags[i] = kFALSE;
3790 track = (AliVTrack*)event->GetTrack(i);
3793 Double_t covtest[21];
3794 if(!track->GetCovarianceXYZPxPyPz(covtest))
continue;
3798 AliAODTrack *aodt = (AliAODTrack*)track;
3803 if(!aodt->TestFilterBit(BIT(filterbit)))
continue;
3805 if(!aodt->TestFilterMask(BIT(filterbit)))
continue;
3809 AliAODTrack *aodtpid = 0;
3811 aodtpid =
fGTI[-aodt->GetID()-1];
3816 Double_t nsigma_tpcele = -9999;
3817 Double_t nsigma_tofele = -9999;
3826 if(fabs(nsigma_tofele)<3.){
3828 Double_t eleeta = aodt->Eta();
3829 if(fabs(eleeta)<0.6)
3831 if(fabs(eleeta)>0.6 && fabs(eleeta)<0.8)
3833 if(eleeta>-0.8 && eleeta<-0.6){
3835 }
else if(eleeta>-0.6&&eleeta<-0.4){
3837 }
else if(eleeta>-0.4&&eleeta<-0.2){
3839 }
else if(eleeta>-0.2&&eleeta<0.0){
3841 }
else if(eleeta>0.0&&eleeta<0.2){
3843 }
else if(eleeta>0.2&&eleeta<0.4){
3845 }
else if(eleeta>0.4&&eleeta<0.6){
3847 }
else if(eleeta>0.6&&eleeta<0.8){
3851 if(nsigma_tpcele>-0.5&&nsigma_tpcele<3.){
3861 Double_t minmass = 9999.;
3864 if(isconv) seleFlags[i] = kFALSE;
3872 Double_t minmasslike = 9999.;
3885 Double_t primVtx[3];
3886 fVtx1->GetXYZ(primVtx);
3889 for(Int_t icasc=0;icasc<nCascs;icasc++)
3891 seleCascFlags[icasc] = kFALSE;
3892 AliAODcascade *casc = ((AliAODEvent*)event)->GetCascade(icasc);
3896 seleCascFlags[icasc] = kTRUE;
3910 if(theBinZ<0 || theBinZ>=
fNzVtxBins)
return -1;
3912 if(theBinM<0 || theBinM>=
fNCentBins)
return -1;
3920 if(poolIndex<0 || poolIndex>=
fNOfPools)
return;
3922 fEventBuffer[poolIndex]=
new TTree(Form(
"EventBuffer_%d",poolIndex),
"Temporary buffer for event mixing");
3947 TObjArray* c1array=0x0;
3948 TObjArray* c2array=0x0;
3949 TObjArray* c1varsarray=0x0;
3950 TObjArray* c2varsarray=0x0;
3951 Float_t zVertex,cent;
3952 TObjString* eventInfo=0x0;
3953 fEventBuffer[poolIndex]->SetBranchAddress(
"zVertex", &zVertex);
3954 fEventBuffer[poolIndex]->SetBranchAddress(
"eventInfo",&eventInfo);
3955 fEventBuffer[poolIndex]->SetBranchAddress(
"centrality", ¢);
3956 fEventBuffer[poolIndex]->SetBranchAddress(
"c1array", &c1array);
3957 fEventBuffer[poolIndex]->SetBranchAddress(
"c2array", &c2array);
3958 fEventBuffer[poolIndex]->SetBranchAddress(
"c1varsarray", &c1varsarray);
3959 fEventBuffer[poolIndex]->SetBranchAddress(
"c2varsarray", &c2varsarray);
3960 for (Int_t i=0; i<nEle; i++)
3967 fEventBuffer[poolIndex]->GetEvent(iEv + nEvents - fNumberOfEventsForMixing);
3969 Int_t nCascs1=c1array->GetEntries();
3980 for(Int_t iTr1=0; iTr1<nCascs1; iTr1++){
3981 TLorentzVector* casc1=(TLorentzVector*) c1array->At(iTr1);
3982 if(!casc1)
continue;
3983 TVector *cascvarsarray = (TVector*) c1varsarray->At(iTr1);
3988 Int_t nCascs2=c2array->GetEntries();
3989 for(Int_t iTr2=0; iTr2<nCascs2; iTr2++){
3990 TLorentzVector* casc2=(TLorentzVector*) c2array->At(iTr2);
3991 if(!casc2)
continue;
3992 TVector *cascvarsarray = (TVector*) c2varsarray->At(iTr2);
4008 Int_t nmcpart = mcArray->GetEntriesFast();
4010 Int_t mcevttype = 0;
4012 Bool_t sigmaevent = kFALSE;
4019 Int_t ncbarquark = 0;
4020 Double_t phi_c = -9999.;
4021 Double_t phi_cbar = -9999.;
4022 for(Int_t i=0;i<nmcpart;i++)
4024 AliAODMCParticle *mcpart = (AliAODMCParticle*) mcArray->At(i);
4025 if(TMath::Abs(mcpart->GetPdgCode())==4){
4026 if(fabs(mcpart->Y())<1.5){
4027 if(mcpart->GetPdgCode()==4){
4028 phi_c = mcpart->Phi();
4031 if(mcpart->GetPdgCode()==-4){
4032 phi_cbar = mcpart->Phi();
4037 }
else if(mcevttype==1){
4039 }
else if(mcevttype==2){
4041 }
else if(mcevttype==3){
4047 if(TMath::Abs(mcpart->GetPdgCode())==5){
4048 if(!mcpart->IsPhysicalPrimary())
continue;
4049 if(fabs(mcpart->Y())<1.5){
4052 }
else if(mcevttype==1){
4054 }
else if(mcevttype==2){
4056 }
else if(mcevttype==3){
4064 if((mcevttype==2)||(mcevttype==0)||(mcevttype==3))
return kFALSE;
4066 if((mcevttype==1)||(mcevttype==0)||(mcevttype==3))
return kFALSE;
4070 if(ncquark!=1)
return kFALSE;
4071 if(ncbarquark!=1)
return kFALSE;
4072 Double_t dphi = fabs(phi_c - phi_cbar);
4073 if(dphi>2*M_PI) dphi -= 2*M_PI;
4074 if(dphi>M_PI) dphi = 2*M_PI-dphi;
4084 for(Int_t i=0;i<nmcpart;i++)
4086 AliAODMCParticle *mcpart = (AliAODMCParticle*) mcArray->At(i);
4087 if(TMath::Abs(mcpart->GetPdgCode())==4132){
4088 Bool_t e_flag = kFALSE;
4089 Bool_t xi_flag = kFALSE;
4090 AliAODMCParticle *mcepart = 0;
4091 AliAODMCParticle *mccascpart = 0;
4092 for(Int_t idau=mcpart->GetFirstDaughter();idau<mcpart->GetLastDaughter()+1;idau++)
4095 AliAODMCParticle *mcdau = (AliAODMCParticle*) mcArray->At(idau);
4096 if(!mcdau)
continue;
4097 if(TMath::Abs(mcdau->GetPdgCode())==11){
4101 if(TMath::Abs(mcdau->GetPdgCode())==3312){
4107 Int_t decaytype = -9999;
4108 if(e_flag && xi_flag) decaytype = 0;
4112 if(!e_flag&&xi_flag)
4114 if(e_flag&&!xi_flag)
4116 if(!e_flag&&!xi_flag)
4121 if(TMath::Abs(mcpart->GetPdgCode())==11 && mcpart->GetStatus()==1){
4124 esdcuts->GetEtaRange(etamin,etamax);
4125 if(fabs(mcpart->Eta())<etamax){
4126 Bool_t gamma_flag = kFALSE;
4127 Int_t labmother = mcpart->GetMother();
4129 AliAODMCParticle *mcmother = (AliAODMCParticle*) mcArray->At(labmother);
4130 Int_t pdgmother = mcmother->GetPdgCode();
4131 if(TMath::Abs(pdgmother)==22) gamma_flag = kTRUE;
4137 if(TMath::Abs(mcpart->GetPdgCode())==3312){
4142 if((fabs(mcpart->Y())<rapmax) && (fabs(mcpart->Eta())<etamax)){
4151 for(Int_t i=0;i<nmcpart;i++)
4153 AliAODMCParticle *mcparte = (AliAODMCParticle*) mcArray->At(i);
4154 if(!mcparte)
continue;
4155 if(TMath::Abs(mcparte->GetPdgCode())!=11)
continue;
4156 if(mcparte->GetStatus()!=1)
continue;
4157 if(mcparte->Pt()<0.4)
continue;
4158 if(fabs(mcparte->Eta())>0.8)
continue;
4159 for(Int_t j=0;j<nmcpart;j++)
4161 AliAODMCParticle *mcpartv = (AliAODMCParticle*) mcArray->At(j);
4162 if(!mcpartv)
continue;
4163 if(TMath::Abs(mcpartv->GetPdgCode())!=3312)
continue;
4164 if(mcpartv->Pt()<0.4)
continue;
4165 if(fabs(mcpartv->Eta())>0.8)
continue;
4166 if(mcpartv->GetNDaughters()!=2)
continue;
4184 const char* nameoutput = GetOutputSlot(11)->GetContainer()->GetName();
4188 TString * fCandidateVariableNames =
new TString[nVar];
4190 fCandidateVariableNames[ 0] =
"InvMassEleXi";
4191 fCandidateVariableNames[ 1] =
"EleXiPx";
4192 fCandidateVariableNames[ 2] =
"EleXiPy";
4193 fCandidateVariableNames[ 3] =
"EleXiPz";
4194 fCandidateVariableNames[ 4] =
"ElePdgCode";
4195 fCandidateVariableNames[ 5] =
"ElePx";
4196 fCandidateVariableNames[ 6] =
"ElePy";
4197 fCandidateVariableNames[ 7] =
"ElePz";
4198 fCandidateVariableNames[ 8] =
"XiPdgCode";
4199 fCandidateVariableNames[ 9] =
"XiPx";
4200 fCandidateVariableNames[10] =
"XiPy";
4201 fCandidateVariableNames[11] =
"XiPz";
4202 fCandidateVariableNames[12] =
"SameFlag";
4203 fCandidateVariableNames[13] =
"EleNGeneration";
4204 fCandidateVariableNames[14] =
"EleGen1PDG";
4205 fCandidateVariableNames[15] =
"EleGen2PDG";
4206 fCandidateVariableNames[16] =
"EleGen3PDG";
4207 fCandidateVariableNames[17] =
"EleGen4PDG";
4208 fCandidateVariableNames[18] =
"EleGen5PDG";
4209 fCandidateVariableNames[19] =
"EleGen6PDG";
4210 fCandidateVariableNames[20] =
"EleGen7PDG";
4211 fCandidateVariableNames[21] =
"EleGen8PDG";
4212 fCandidateVariableNames[22] =
"EleGen9PDG";
4213 fCandidateVariableNames[23] =
"EleGen10PDG";
4214 fCandidateVariableNames[24] =
"ElePrimPDG";
4215 fCandidateVariableNames[25] =
"XiNGeneration";
4216 fCandidateVariableNames[26] =
"XiGen1PDG";
4217 fCandidateVariableNames[27] =
"XiGen2PDG";
4218 fCandidateVariableNames[28] =
"XiGen3PDG";
4219 fCandidateVariableNames[29] =
"XiGen4PDG";
4220 fCandidateVariableNames[30] =
"XiGen5PDG";
4221 fCandidateVariableNames[31] =
"XiGen6PDG";
4222 fCandidateVariableNames[32] =
"XiGen7PDG";
4223 fCandidateVariableNames[33] =
"XiGen8PDG";
4224 fCandidateVariableNames[34] =
"XiGen9PDG";
4225 fCandidateVariableNames[35] =
"XiGen10PDG";
4226 fCandidateVariableNames[36] =
"XiPrimPDG";
4227 fCandidateVariableNames[37] =
"MatchedPDG";
4229 for (Int_t ivar=0; ivar<nVar; ivar++) {
4241 for(Int_t i=0;i<38;i++){
4245 TLorentzVector vele, vxi, vexi;
4246 vele.SetXYZM(mcparte->Px(),mcparte->Py(),mcparte->Pz(),0.000510998928);
4247 vxi.SetXYZM(mcpartv->Px(),mcpartv->Py(),mcpartv->Pz(),1.32171);
4250 Int_t pdgarray_ele[100], labelarray_ele[100], ngen_ele;
4251 Int_t pdgarray_xi[100], labelarray_xi[100], ngen_xi;
4255 Bool_t same_flag = kFALSE;
4256 Int_t matched_pdg = -999999;
4257 for(Int_t iemc=0;iemc<ngen_ele;iemc++){
4258 for(Int_t ivmc=0;ivmc<ngen_xi;ivmc++){
4259 if(labelarray_ele[iemc]==labelarray_xi[ivmc]){
4261 matched_pdg = pdgarray_ele[iemc];
4265 if(same_flag)
break;
4267 Int_t pdgprim_ele = pdgarray_ele[ngen_ele-1];
4268 Int_t pdgprim_xi = pdgarray_xi[ngen_xi-1];
4319 for(Int_t i=0;i<100;i++){
4320 pdgarray[i] = -9999;
4321 labelarray[i] = -9999;
4325 AliAODMCParticle *mcprim = mcpart;
4326 while(mcprim->GetMother()>=0) {
4327 Int_t lab_prim=mcprim->GetMother();
4329 AliAODMCParticle *tmcprim = (AliAODMCParticle*)mcArray->At(lab_prim);
4333 if((TMath::Abs(tmcprim->GetPdgCode())<10) || (TMath::Abs(tmcprim->GetPdgCode())==21))
break;
4337 pdgarray[ngen] = mcprim->GetPdgCode();
4338 labelarray[ngen] = lab_prim;
4341 if(ngen == 100)
break;
4352 if(track->GetID()<0){
4359 printf(
"Warning: track ID too big for buffer: ID: %d, buffer %d\n"
4365 if(
fGTI[track->GetID()]){
4368 if( (!track->GetFilterMap()) &&
4369 (!track->GetTPCNcls()) )
4377 if(
fGTI[track->GetID()]->GetFilterMap() ||
4378 fGTI[track->GetID()]->GetTPCNcls() ){
4380 printf(
"Warning! global track info already there!");
4381 printf(
" TPCNcls track1 %u track2 %u",
4382 (
fGTI[track->GetID()])->GetTPCNcls(),track->GetTPCNcls());
4383 printf(
" FilterMap track1 %u track2 %u\n",
4384 (
fGTI[track->GetID()])->GetFilterMap(),track->GetFilterMap());
4396 (
fGTI[track->GetID()]) = track;
4397 (
fGTIndex[track->GetID()]) = index;
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
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()
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
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)
void FillElectronROOTObjects(AliAODTrack *trk, TClonesArray *mcArray)
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 * 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 * 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)
void FillROOTObjects(AliAODRecoCascadeHF *elobj, AliAODcascade *casc, AliAODTrack *trk, AliAODTrack *trkpid, TClonesArray *mcArray)
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)
THnSparse * fHistoXicMCS2
! electron in mcArray
AliNormalizationCounter * fCounter
! Counter for normalization
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
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)
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)
THnSparse * fHistoElePtvsEtaRSMix
! e spectra (right-sign, mix)
TTree * fMCGenPairVariablesTree
! tree of mcArray analysis pair tree
Float_t fCentrality
magnetic field value [kG]
THnSparse * fHistoXicMCS1
! electron in mcArray
Bool_t GetUseCascadePID()
TH1F * fHistonXivsRunNumber
! nxi vs runnumber
TH2F * fHistoElePtRSMix
! e spectra (right-sign, mix)
THnSparse * fHistoEleXiMassvsElePtRSMix
! e-Xi mass-ept spectra (right-sign)
THnSparse * fHistoEleXiMassWSMix2Away
! e-Xi mass spectra (wrong-sign)
THnSparse * fHistoEleXiMassWSSide1Away
! e-Xi mass spectra (wrong-sign)
THnSparse * fHistoEleXiMassRSSide2Away
! e-Xi mass spectra (right-sign)
THnSparse * fHistoEleXiMassWSSide1
! e-Xi mass spectra (wrong-sign)
Bool_t fWriteEachVariableTree
TH2D * fHistodPhiSdEtaSElectronPionR125RS
! dPhiS vs dEtaS R125 RS
Bool_t fIsCent
SemiCentral trigger event.
Int_t GetProdAODFilterBit()
THnSparse * fHistoEleXiMassWS2
! e-Xi mass spectra (wrong-sign)
THnSparse * fHistoElePtvsd0BFeeddownMCS
! e pt-d0 spectra (right-sign)
Bool_t GetProdUseAODFilterBit()
THnSparse * fHistoEleXiMassBFeeddownMCS
! e-Xi mass spectra (Efficiency numerator)
THnSparse * fHistoEleXiMassvsElePtRSSide2
! e-Xi mass-ept spectra (right-sign)
THnSparse * fHistoEleXiMassWS1
! e-Xi mass spectra (wrong-sign)
THnSparse * fHistoEleXiMassWSSide2
! e-Xi mass spectra (wrong-sign)
THnSparse * fHistoEleXiMassvsElePtRS1
! e-Xi mass spectra (right-sign)
TH1F * fHistoMCXic0Decays
! MC Event Type
THnSparse * fHistoEleXiMassvsElePtRSSide
! e-Xi mass-ept spectra (right-sign)
Float_t * fCandidateVariables
EMC7 trigger event.
Int_t * fGTIndex
Array of pointers, just nicely sorted according to the id.
void ResetGlobalTrackReference()
Bool_t GetIsUsePID() const
THnSparse * fHistoEleXiMassXibMCS1
! e-Xi mass spectra (Efficiency numerator)
Bool_t SingleTrkCutsNoPID(AliAODTrack *trk, AliAODTrack *trkpid, AliAODVertex *primvert)
TList * fListCuts
! User output slot 2 // Cuts
void SelectCascade(const AliVEvent *event, Int_t nCasc, Int_t &nSeleCasc, Bool_t *seleCascFlags, TClonesArray *mcArray)
Bool_t IsEventRejectedDueToTrigger() const
void SetMagneticField(Double_t a)
Bool_t SingleTrkCuts(AliAODTrack *trk, AliAODTrack *trkpid, AliAODVertex *primvert)
THnSparse * fHistoXicElectronMCS1
! electron in mcArray
TH2F * fHistoXiMassvsPt
! Xi mass vs pt histogram
THnSparse * fHistoEleXiMassWS2Away
! e-Xi mass spectra (wrong-sign)
THnSparse * fHistoEleXiMassRSMix1Away
! e-Xi mass spectra (right-sign)
TH2F * fHistoElectronTPCSelPID
! TPC electron PID after selection
TH2F * fHistoLambdaPtvsDRSide
! Lambda decay length distribution (sideband)
void GetMCDecayHistory(AliAODMCParticle *mcpart, TClonesArray *mcArray, Int_t *pdgarray, Int_t *labelarray, Int_t &ngen)
TH2D * fHistodPhiSdEtaSElectronBachelorR125WS
! dPhiS vs dEtaS R125 WS
THnSparse * fHistoEleXiMassWSSide2Away
! e-Xi mass spectra (wrong-sign)
THnSparse * fHistoEleXiMassRS2Away
! e-Xi mass spectra (right-sign)
virtual void UserExec(Option_t *option)
THnSparse * fHistoEleXiMass
Flag to do pair analysis.
Double_t fZvtxBins[100]
number of z vrtx bins
THnSparse * fHistoEleXiMassRSSide1
! e-Xi mass spectra (right-sign)
THnSparse * fHistoEleXiMassRSSide1Away
! e-Xi mass spectra (right-sign)
THnSparse * fHistoEleXiMassRSMix
! e-Xi mass spectra (right-sign)
Int_t fRunNumber
Centrality.
TH2D * fHistodPhiSdEtaSElectronProtonR125RS
Size of the above array, ~12000 for PbPb.
AliAODPidHF * GetPidCascPi() const
THnSparse * fHistoEleXiMassvsElePtWSSide1
! e-Xi mass-ept spectra (wrong-sign)
THnSparse * fHistoEleXiMassvsElePtWS
! e-Xi mass spectra (wrong-sign)
void FillMixROOTObjects(TLorentzVector *et, TLorentzVector *ev, TVector *tinfo, TVector *vinfo, Int_t charge)
THnSparse * fHistoEleXiMassWSMix
! e-Xi mass spectra (wrong-sign)
Double_t dPhiSR125(Double_t *postrack1, Double_t *postrack2)
AliAODRecoCascadeHF * MakeCascadeHF(AliAODcascade *casc, AliAODTrack *trk, AliAODTrack *trkpid, AliAODEvent *aod, AliAODVertex *vert)
TH2D * fHistoResponseElePt
! Response function electron pT <- True ept
TH2F * fHistoElePtWSMix
! e spectra (wrong-sign, mix)
THnSparse * fHistoElePtvsXiPtMCXicGen
! e-Xi spectra efficiency denominator
THnSparse * fHistoEleXiMassRS1
! e-Xi mass spectra (right-sign)
TH2D * fHistodPhiSdEtaSElectronBachelorR125RSMix
! dPhiS vs dEtaS R125 RS Mix
THnSparse * fHistoElePtvsXiPtvsXicPtMCGen
! e-Xi spectra efficiency numerator
TH2F * fHistoLambdaPtvsDlSide
! Lambda proper life time distribution (sideband)
TH2D * fHistodPhiSdEtaSElectronPionR125WSMix
! dPhiS vs dEtaS R125 WS Mix
TTree * fVariablesTree
flag to decide whether to write the candidate variables on a tree variables