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 fHistoEleXiMassPromptMCS(0),
197 fHistoEleXiMassPromptMCS1(0),
198 fHistoEleXiMassPromptMCS2(0),
199 fHistoEleXiMassBFeeddownMCS(0),
200 fHistoEleXiMassBFeeddownMCS1(0),
201 fHistoEleXiMassBFeeddownMCS2(0),
202 fHistoEleXiMassMCGen(0),
203 fHistoEleXiMassvsElePtMCS(0),
204 fHistoEleXiMassvsElePtMCGen(0),
205 fHistoEleXiMassvsElePtMCS1(0),
206 fHistoEleXiMassvsElePtMCGen1(0),
207 fHistoEleXiMassvsElePtMCS2(0),
208 fHistoEleXiMassvsElePtMCGen2(0),
211 fHistoElePtvsEtaRS(0),
212 fHistoElePtvsEtaWS(0),
213 fHistoElePtvsEtaRSMix(0),
214 fHistoElePtvsEtaWSMix(0),
215 fHistoElePtvsEtaMCS(0),
216 fHistoElePtvsEtaMCGen(0),
217 fHistoElePtvsXiPtRS(0),
218 fHistoElePtvsXiPtWS(0),
219 fHistoElePtvsXiPtRSMix(0),
220 fHistoElePtvsXiPtWSMix(0),
221 fHistoElePtvsXiPtMCS(0),
222 fHistoElePtvsXiPtvsXicPtMCS(0),
223 fHistoElePtvsXiPtMCGen(0),
224 fHistoElePtvsXiPtvsXicPtMCGen(0),
225 fHistoElePtvsXiPtMCXicGen(0),
226 fHistoElePtvsd0RS(0),
227 fHistoElePtvsd0WS(0),
228 fHistoElePtvsd0RSMix(0),
229 fHistoElePtvsd0WSMix(0),
230 fHistoElePtvsd0MCS(0),
231 fHistoElePtvsd0PromptMCS(0),
232 fHistoElePtvsd0BFeeddownMCS(0),
235 fHistoBachPtMCGen(0),
238 fHistoXiMassvsPtMCS(0),
239 fHistoXiMassvsPtMCGen(0),
240 fHistoOmegaMassvsPt(0),
241 fHistoElectronTPCPID(0),
242 fHistoElectronTOFPID(0),
243 fHistoElectronTPCSelPID(0),
244 fHistoElectronTOFSelPID(0),
245 fHistoElectronTPCPIDSelTOF(0),
246 fHistoElectronTOFPIDSelTPC(0),
247 fHistoElectronTPCPIDSelTOFSmallEta(0),
248 fHistoElectronTPCPIDSelTOFLargeEta(0),
249 fHistoElectronQovPtvsPhi(0),
250 fHistoXiQovPtvsPhi(0),
257 fHistoXicElectronMCGen(0),
258 fHistoXicElectronMCGen1(0),
259 fHistoXicElectronMCGen2(0),
260 fHistoXicElectronMCS(0),
261 fHistoXicElectronMCS1(0),
262 fHistoXicElectronMCS2(0),
263 fHistoElectronMCGen(0),
265 fHistoLambdaPtvsDl(0),
266 fHistoLambdaPtvsDlSide(0),
267 fHistoLambdaPtvsDlMCS(0),
268 fHistoResponseElePt(0),
269 fHistoResponseEleXiPt(0),
271 fHistonEvtvsRunNumber(0),
272 fHistonElevsRunNumber(0),
273 fHistonXivsRunNumber(0),
274 fHistoMCEventType(0),
275 fHistoMCXic0Decays(0),
276 fHistoMCDeltaPhiccbar(0),
279 fNumberOfEventsForMixing (5),
285 fElectronTracks(0x0),
286 fCascadeTracks1(0x0),
292 for(Int_t i=0;i<23;i++){
297 for(Int_t i=0;i<8;i++){
305 Bool_t writeVariableTree) :
306 AliAnalysisTaskSE(name),
315 fIsEventSelected(kFALSE),
316 fWriteVariableTree(writeVariableTree),
317 fWriteEachVariableTree(kFALSE),
318 fWriteMCVariableTree(kFALSE),
320 fEleVariablesTree(0),
321 fCascVariablesTree(0),
323 fMCEleVariablesTree(0),
324 fMCCascVariablesTree(0),
325 fMCGenPairVariablesTree(0),
326 fReconstructPrimVert(kFALSE),
332 fCandidateVariables(),
333 fCandidateEleVariables(),
334 fCandidateCascVariables(),
335 fCandidateMCVariables(),
336 fCandidateMCEleVariables(),
337 fCandidateMCCascVariables(),
338 fCandidateMCGenPairVariables(),
346 fUseCentralityV0M(kFALSE),
349 fMCDoPairAnalysis(kFALSE),
351 fHistoEleXiMassRS(0),
352 fHistoEleXiMassWS(0),
353 fHistoEleXiMassRSMix(0),
354 fHistoEleXiMassWSMix(0),
355 fHistoEleXiMassRSSide(0),
356 fHistoEleXiMassWSSide(0),
357 fHistoEleXiMassRS1(0),
358 fHistoEleXiMassWS1(0),
359 fHistoEleXiMassRSMix1(0),
360 fHistoEleXiMassWSMix1(0),
361 fHistoEleXiMassRSSide1(0),
362 fHistoEleXiMassWSSide1(0),
363 fHistoEleXiMassRS2(0),
364 fHistoEleXiMassWS2(0),
365 fHistoEleXiMassRSMix2(0),
366 fHistoEleXiMassWSMix2(0),
367 fHistoEleXiMassRSSide2(0),
368 fHistoEleXiMassWSSide2(0),
369 fHistoEleXiMassAway(0),
370 fHistoEleXiMassRSAway(0),
371 fHistoEleXiMassWSAway(0),
372 fHistoEleXiMassRSMixAway(0),
373 fHistoEleXiMassWSMixAway(0),
374 fHistoEleXiMassRSSideAway(0),
375 fHistoEleXiMassWSSideAway(0),
376 fHistoEleXiMassRS1Away(0),
377 fHistoEleXiMassWS1Away(0),
378 fHistoEleXiMassRSMix1Away(0),
379 fHistoEleXiMassWSMix1Away(0),
380 fHistoEleXiMassRSSide1Away(0),
381 fHistoEleXiMassWSSide1Away(0),
382 fHistoEleXiMassRS2Away(0),
383 fHistoEleXiMassWS2Away(0),
384 fHistoEleXiMassRSMix2Away(0),
385 fHistoEleXiMassWSMix2Away(0),
386 fHistoEleXiMassRSSide2Away(0),
387 fHistoEleXiMassWSSide2Away(0),
388 fHistoEleXiMassvsElePtRS(0),
389 fHistoEleXiMassvsElePtWS(0),
390 fHistoEleXiMassvsElePtRSMix(0),
391 fHistoEleXiMassvsElePtWSMix(0),
392 fHistoEleXiMassvsElePtRSSide(0),
393 fHistoEleXiMassvsElePtWSSide(0),
394 fHistoEleXiMassvsElePtRS1(0),
395 fHistoEleXiMassvsElePtWS1(0),
396 fHistoEleXiMassvsElePtRSMix1(0),
397 fHistoEleXiMassvsElePtWSMix1(0),
398 fHistoEleXiMassvsElePtRSSide1(0),
399 fHistoEleXiMassvsElePtWSSide1(0),
400 fHistoEleXiMassvsElePtRS2(0),
401 fHistoEleXiMassvsElePtWS2(0),
402 fHistoEleXiMassvsElePtRSMix2(0),
403 fHistoEleXiMassvsElePtWSMix2(0),
404 fHistoEleXiMassvsElePtRSSide2(0),
405 fHistoEleXiMassvsElePtWSSide2(0),
410 fHistoEleXiMassMCS(0),
411 fHistoEleXiMassMCS1(0),
412 fHistoEleXiMassMCS2(0),
413 fHistoEleXiMassPromptMCS(0),
414 fHistoEleXiMassPromptMCS1(0),
415 fHistoEleXiMassPromptMCS2(0),
416 fHistoEleXiMassBFeeddownMCS(0),
417 fHistoEleXiMassBFeeddownMCS1(0),
418 fHistoEleXiMassBFeeddownMCS2(0),
419 fHistoEleXiMassMCGen(0),
420 fHistoEleXiMassvsElePtMCS(0),
421 fHistoEleXiMassvsElePtMCGen(0),
422 fHistoEleXiMassvsElePtMCS1(0),
423 fHistoEleXiMassvsElePtMCGen1(0),
424 fHistoEleXiMassvsElePtMCS2(0),
425 fHistoEleXiMassvsElePtMCGen2(0),
428 fHistoElePtvsEtaRS(0),
429 fHistoElePtvsEtaWS(0),
430 fHistoElePtvsEtaRSMix(0),
431 fHistoElePtvsEtaWSMix(0),
432 fHistoElePtvsEtaMCS(0),
433 fHistoElePtvsEtaMCGen(0),
434 fHistoElePtvsXiPtRS(0),
435 fHistoElePtvsXiPtWS(0),
436 fHistoElePtvsXiPtRSMix(0),
437 fHistoElePtvsXiPtWSMix(0),
438 fHistoElePtvsXiPtMCS(0),
439 fHistoElePtvsXiPtvsXicPtMCS(0),
440 fHistoElePtvsXiPtMCGen(0),
441 fHistoElePtvsXiPtvsXicPtMCGen(0),
442 fHistoElePtvsXiPtMCXicGen(0),
443 fHistoElePtvsd0RS(0),
444 fHistoElePtvsd0WS(0),
445 fHistoElePtvsd0RSMix(0),
446 fHistoElePtvsd0WSMix(0),
447 fHistoElePtvsd0MCS(0),
448 fHistoElePtvsd0PromptMCS(0),
449 fHistoElePtvsd0BFeeddownMCS(0),
452 fHistoBachPtMCGen(0),
455 fHistoXiMassvsPtMCS(0),
456 fHistoXiMassvsPtMCGen(0),
457 fHistoOmegaMassvsPt(0),
458 fHistoElectronTPCPID(0),
459 fHistoElectronTOFPID(0),
460 fHistoElectronTPCSelPID(0),
461 fHistoElectronTOFSelPID(0),
462 fHistoElectronTPCPIDSelTOF(0),
463 fHistoElectronTOFPIDSelTPC(0),
464 fHistoElectronTPCPIDSelTOFSmallEta(0),
465 fHistoElectronTPCPIDSelTOFLargeEta(0),
466 fHistoElectronQovPtvsPhi(0),
467 fHistoXiQovPtvsPhi(0),
474 fHistoXicElectronMCGen(0),
475 fHistoXicElectronMCGen1(0),
476 fHistoXicElectronMCGen2(0),
477 fHistoXicElectronMCS(0),
478 fHistoXicElectronMCS1(0),
479 fHistoXicElectronMCS2(0),
480 fHistoElectronMCGen(0),
482 fHistoLambdaPtvsDl(0),
483 fHistoLambdaPtvsDlSide(0),
484 fHistoLambdaPtvsDlMCS(0),
485 fHistoResponseElePt(0),
486 fHistoResponseEleXiPt(0),
488 fHistonEvtvsRunNumber(0),
489 fHistonElevsRunNumber(0),
490 fHistonXivsRunNumber(0),
491 fHistoMCEventType(0),
492 fHistoMCXic0Decays(0),
493 fHistoMCDeltaPhiccbar(0),
496 fNumberOfEventsForMixing (5),
502 fElectronTracks(0x0),
503 fCascadeTracks1(0x0),
509 Info(
"AliAnalysisTaskSEXic2eleXifromAODtracks",
"Calling Constructor");
511 for(Int_t i=0;i<23;i++){
516 for(Int_t i=0;i<8;i++){
520 DefineOutput(1,TList::Class());
521 DefineOutput(2,TList::Class());
522 DefineOutput(3,TList::Class());
523 DefineOutput(4,TTree::Class());
524 DefineOutput(5,TTree::Class());
525 DefineOutput(6,TTree::Class());
526 DefineOutput(7,TTree::Class());
527 DefineOutput(8,AliNormalizationCounter::Class());
528 DefineOutput(9,TTree::Class());
529 DefineOutput(10,TTree::Class());
530 DefineOutput(11,TTree::Class());
538 Info(
"~AliAnalysisTaskSEXic2eleXifromAODtracks",
"Calling Destructor");
616 if (fDebug > 1) AliInfo(
"Init");
635 AliError(
"NO EVENT FOUND!");
638 AliAODEvent* aodEvent =
dynamic_cast<AliAODEvent*
>(fInputEvent);
646 fBzkG = (Double_t)aodEvent->GetMagneticField();
647 AliKFParticle::SetField(
fBzkG);
648 if (TMath::Abs(
fBzkG)<0.001) {
659 TClonesArray *mcArray = 0;
660 AliAODMCHeader *mcHeader=0;
663 mcArray =
dynamic_cast<TClonesArray*
>(aodEvent->FindListObject(AliAODMCParticle::StdBranchName()));
665 AliError(
"Could not find Monte-Carlo in AOD");
671 mcHeader = (AliAODMCHeader*)aodEvent->GetList()->FindObject(AliAODMCHeader::StdBranchName());
673 AliError(
"AliAnalysisTaskSEXic2eleXifromAODtracks::UserExec: MC header branch not found!\n");
678 Double_t zMCVertex = mcHeader->GetVtxZ();
680 AliDebug(2,Form(
"Event rejected: abs(zVtxMC)=%f > fAnalCuts->GetMaxVtxZ()=%f",zMCVertex,
fAnalCuts->
GetMaxVtxZ()));
694 fVtx1 = (AliAODVertex*)aodEvent->GetPrimaryVertex();
697 Double_t pos[3],cov[6];
699 fVtx1->GetCovarianceMatrix(cov);
700 fV1 =
new AliESDVertex(pos,cov,100.,100,
fVtx1->GetName());
713 fIsMB=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kMB)==(AliVEvent::kMB);
714 fIsSemi=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kSemiCentral)==(AliVEvent::kSemiCentral);
715 fIsCent=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kCentral)==(AliVEvent::kCentral);
716 fIsINT7=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kINT7)==(AliVEvent::kINT7);
717 fIsEMC7=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kEMC7)==(AliVEvent::kEMC7);
731 AliCentrality *cent = aodEvent->GetCentrality();
732 fCentrality = cent->GetCentralityPercentile(
"V0M");
736 if(fCentrality<0.||fCentrality>100.-0.0000001) {
743 Int_t runnumber_offset = 0;
744 Int_t runnumber = aodEvent->GetRunNumber();
745 if(runnumber<=131000&&runnumber>=114000){
746 runnumber_offset = 114000;
747 }
else if(runnumber<=196000&&runnumber>=195000){
748 runnumber_offset = 195000;
749 }
else if(runnumber<=170593&&runnumber>=167902){
750 runnumber_offset = 167902;
792 AliAnalysisTaskSE::Terminate();
794 fOutput =
dynamic_cast<TList*
> (GetOutputData(1));
796 AliError(
"fOutput not available");
800 fOutputAll =
dynamic_cast<TList*
> (GetOutputData(3));
802 AliError(
"fOutputAll not available");
854 TString normName=
"NormalizationCounter";
855 AliAnalysisDataContainer *cont = GetOutputSlot(8)->GetContainer();
856 if(cont)normName=(TString)cont->GetName();
872 fEventBuffer[i]=
new TTree(Form(
"EventBuffer_%d",i),
"Temporary buffer for event mixing");
888 AliAODEvent *aodEvent, TClonesArray *mcArray
897 if(fDoEventMixing && fElectronTracks) fElectronTracks->Delete();
898 if(fDoEventMixing && fCascadeTracks1) fCascadeTracks1->Delete();
899 if(fDoEventMixing && fCascadeTracks2) fCascadeTracks2->Delete();
901 Int_t nCascs= aodEvent->GetNumberOfCascades();
902 Int_t nTracks= aodEvent->GetNumberOfTracks();
904 Bool_t seleTrkFlags[nTracks];
906 SelectTrack(aodEvent,nTracks,nSeleTrks,seleTrkFlags,mcArray);
908 Bool_t seleCascFlags[nCascs];
910 SelectCascade(aodEvent,nCascs,nSeleCasc,seleCascFlags,mcArray);
912 Int_t runnumber_offset = 0;
913 Int_t runnumber = aodEvent->GetRunNumber();
914 if(runnumber<=131000&&runnumber>=114000){
915 runnumber_offset = 114000;
916 }
else if(runnumber<=196000&&runnumber>=195000){
917 runnumber_offset = 195000;
918 }
else if(runnumber<=170593&&runnumber>=167902){
919 runnumber_offset = 167902;
921 fHistonElevsRunNumber->Fill(runnumber-runnumber_offset,nSeleTrks);
922 fHistonXivsRunNumber->Fill(runnumber-runnumber_offset,nSeleCasc);
927 for (Int_t icasc = 0; icasc<nCascs; icasc++) {
928 if(!seleCascFlags[icasc])
continue;
929 AliAODcascade *casc = aodEvent->GetCascade(icasc);
932 AliAODTrack *cptrack = (AliAODTrack*)(casc->GetDaughter(0));
933 AliAODTrack *cntrack = (AliAODTrack*)(casc->GetDaughter(1));
934 AliAODTrack *cbtrack = (AliAODTrack*)(casc->GetDecayVertexXi()->GetDaughter(0));
939 for (Int_t itrk = 0; itrk<nTracks; itrk++) {
940 if(!seleTrkFlags[itrk])
continue;
941 AliAODTrack *trk = (AliAODTrack*)aodEvent->GetTrack(itrk);
942 if(trk->GetID()<0)
continue;
944 Int_t cpid = cptrack->GetID();
945 Int_t cnid = cntrack->GetID();
946 Int_t cbid = cbtrack->GetID();
947 Int_t lpid = trk->GetID();
948 if((cpid==lpid)||(cnid==lpid)||(cbid==lpid))
continue;
952 AliAODVertex *secVert = ReconstructSecondaryVertex(casc,trk,aodEvent);
953 if(!secVert)
continue;
960 FillROOTObjects(exobj, casc,trk,mcArray);
962 exobj->GetSecondaryVtx()->RemoveDaughters();
964 delete exobj;exobj=NULL;
970 fEventInfo->SetString(Form(
"Ev%d_esd%d_E%d_C%d",AliAnalysisManager::GetAnalysisManager()->GetNcalls(),((AliAODHeader*)aodEvent->GetHeader())->GetEventNumberESDFile(),fElectronTracks->GetEntries(),fCascadeTracks1->GetEntries()+fCascadeTracks2->GetEntries()));
971 Int_t ind=GetPoolIndex(fVtxZ,fCentrality);
972 if(ind>=0 && ind<fNOfPools){
973 if(fEventBuffer[ind]->GetEntries() >= fNumberOfEventsForMixing){
974 DoEventMixingWithPools(ind);
975 if(fEventBuffer[ind]->GetEntries() >= 20*fNumberOfEventsForMixing){
979 fEventBuffer[ind]->Fill();
992 const char* nameoutput = GetOutputSlot(4)->GetContainer()->GetName();
993 fVariablesTree =
new TTree(nameoutput,
"Candidates variables tree");
996 TString * fCandidateVariableNames =
new TString[nVar];
998 fCandidateVariableNames[ 0]=
"Centrality";
999 fCandidateVariableNames[ 1]=
"InvMassEleXi";
1000 fCandidateVariableNames[ 2]=
"EleXiPt";
1001 fCandidateVariableNames[ 3]=
"EleXiPx";
1002 fCandidateVariableNames[ 4]=
"EleXiPy";
1003 fCandidateVariableNames[ 5]=
"EleXiPz";
1004 fCandidateVariableNames[ 6]=
"ElePx";
1005 fCandidateVariableNames[ 7]=
"ElePy";
1006 fCandidateVariableNames[ 8]=
"ElePz";
1007 fCandidateVariableNames[ 9]=
"XiPx";
1008 fCandidateVariableNames[10]=
"XiPy";
1009 fCandidateVariableNames[11]=
"XiPz";
1010 fCandidateVariableNames[12]=
"XiCharge";
1011 fCandidateVariableNames[13]=
"MassXi";
1012 fCandidateVariableNames[14]=
"MassLambda";
1013 fCandidateVariableNames[15]=
"Eled0";
1014 fCandidateVariableNames[16]=
"Xid0";
1015 fCandidateVariableNames[17]=
"nSigmaTPCele";
1016 fCandidateVariableNames[18]=
"nSigmaTOFele";
1017 fCandidateVariableNames[19]=
"nSigmaTPCpr_etrk";
1018 fCandidateVariableNames[20]=
"nSigmaTOFpr_etrk";
1019 fCandidateVariableNames[21]=
"nSigmaTPCka_etrk";
1020 fCandidateVariableNames[22]=
"nSigmaTOFka_etrk";
1021 fCandidateVariableNames[23]=
"nSigmaTPCv0pr";
1022 fCandidateVariableNames[24]=
"nSigmaTOFv0pr";
1023 fCandidateVariableNames[25]=
"nSigmaTPCv0pi";
1024 fCandidateVariableNames[26]=
"nSigmaTOFv0pi";
1025 fCandidateVariableNames[27]=
"nSigmaTPCbachpi";
1026 fCandidateVariableNames[28]=
"nSigmaTOFbachpi";
1027 fCandidateVariableNames[29]=
"EleCharge";
1028 fCandidateVariableNames[30]=
"Mixing";
1029 fCandidateVariableNames[31]=
"DcaXiDaughters";
1030 fCandidateVariableNames[32]=
"DcaV0Daughters";
1031 fCandidateVariableNames[33]=
"DecayLengthXi";
1032 fCandidateVariableNames[34]=
"CosPointingAngleXi";
1033 fCandidateVariableNames[35]=
"DcaV0toPrimVertex";
1034 fCandidateVariableNames[36]=
"DcaPostoPrimVertex";
1035 fCandidateVariableNames[37]=
"DcaNegtoPrimVertex";
1036 fCandidateVariableNames[38]=
"DcaBachtoPrimVertex";
1037 fCandidateVariableNames[39]=
"DecayLengthV0";
1038 fCandidateVariableNames[40]=
"CosPointingAngleV0";
1040 fCandidateVariableNames[41]=
"mcpdgxic";
1041 fCandidateVariableNames[42]=
"mclabxic";
1042 fCandidateVariableNames[43]=
"mcxicpx";
1043 fCandidateVariableNames[44]=
"mcxicpy";
1044 fCandidateVariableNames[45]=
"mcxicpz";
1045 fCandidateVariableNames[46]=
"mcelepx";
1046 fCandidateVariableNames[47]=
"mcelepy";
1047 fCandidateVariableNames[48]=
"mcelepz";
1048 fCandidateVariableNames[49]=
"mccascpx";
1049 fCandidateVariableNames[50]=
"mccascpy";
1050 fCandidateVariableNames[51]=
"mccascpz";
1052 fCandidateVariableNames[52]=
"mcpdgele";
1053 fCandidateVariableNames[53]=
"mcpdgcasc";
1054 fCandidateVariableNames[54]=
"mcpdgmomele";
1055 fCandidateVariableNames[55]=
"mcpdgmomcasc";
1056 fCandidateVariableNames[56]=
"mcpdggrmomele";
1057 fCandidateVariableNames[57]=
"mcpdggrmomcasc";
1058 fCandidateVariableNames[58]=
"mcngenele";
1059 fCandidateVariableNames[59]=
"mcngencasc";
1061 fCandidateVariableNames[60]=
"nSigmaTPCpi_etrk";
1062 fCandidateVariableNames[61]=
"nSigmaTOFpi_etrk";
1064 fCandidateVariableNames[62]=
"V0PosPx";
1065 fCandidateVariableNames[63]=
"V0PosPy";
1066 fCandidateVariableNames[64]=
"V0PosPz";
1067 fCandidateVariableNames[65]=
"V0NegPx";
1068 fCandidateVariableNames[66]=
"V0NegPy";
1069 fCandidateVariableNames[67]=
"V0NegPz";
1070 fCandidateVariableNames[68]=
"V0VertX";
1071 fCandidateVariableNames[69]=
"V0VertY";
1072 fCandidateVariableNames[70]=
"V0VertZ";
1073 fCandidateVariableNames[71]=
"BachPx";
1074 fCandidateVariableNames[72]=
"BachPy";
1075 fCandidateVariableNames[73]=
"BachPz";
1076 fCandidateVariableNames[74]=
"XiVertX";
1077 fCandidateVariableNames[75]=
"XiVertY";
1078 fCandidateVariableNames[76]=
"XiVertZ";
1079 fCandidateVariableNames[77]=
"PrimVertX";
1080 fCandidateVariableNames[78]=
"PrimVertY";
1081 fCandidateVariableNames[79]=
"PrimVertZ";
1083 fCandidateVariableNames[80]=
"MassOmega";
1085 fCandidateVariableNames[81]=
"EleITSMatch";
1086 fCandidateVariableNames[82]=
"BachITSMatch";
1087 fCandidateVariableNames[83]=
"V0PosITSMatch";
1088 fCandidateVariableNames[84]=
"V0NegITSMatch";
1090 fCandidateVariableNames[85]=
"TPCNclsF";
1091 fCandidateVariableNames[86]=
"TPCNcls";
1092 fCandidateVariableNames[87]=
"TPCNclsS";
1093 fCandidateVariableNames[88]=
"IsXiPeakReagion";
1096 fCandidateVariableNames[89]=
"EvNumber";
1098 for (Int_t ivar=0; ivar<nVar; ivar++) {
1114 for(Int_t i=0;i<90;i++){
1119 AliAODTrack *cptrack = (AliAODTrack*)(casc->GetDaughter(0));
1120 AliAODTrack *cntrack = (AliAODTrack*)(casc->GetDaughter(1));
1121 AliAODTrack *cbtrack = (AliAODTrack*)(casc->GetDecayVertexXi()->GetDaughter(0));
1122 if(cptrack->Charge()<0 && cntrack->Charge()>0){
1123 cptrack = (AliAODTrack*)(casc->GetDaughter(1));
1124 cntrack = (AliAODTrack*)(casc->GetDaughter(0));
1131 Double_t pxe = exobj->PxProng(0);
1132 Double_t pye = exobj->PyProng(0);
1133 Double_t pze = exobj->PzProng(0);
1134 Double_t mome = sqrt(pxe*pxe+pye*pye+pze*pze);
1135 Double_t Ee = sqrt(mome*mome+0.000510998928*0.000510998928);
1136 Double_t pxv = exobj->PxProng(1);
1137 Double_t pyv = exobj->PyProng(1);
1138 Double_t pzv = exobj->PzProng(1);
1139 Double_t momv = sqrt(pxv*pxv+pyv*pyv+pzv*pzv);
1140 Double_t Ev = sqrt(momv*momv+1.32171*1.32171);
1141 Double_t cosoa = (pxe*pxv+pye*pyv+pze*pzv)/mome/momv;
1142 Double_t Esum = Ee + Ev;
1144 Double_t uxe = pxe/mome;
1145 Double_t uye = pye/mome;
1146 Double_t uze = pze/mome;
1147 Double_t lf = -2.*(pxv*uxe+pyv*uye+pzv*uze);
1148 Double_t pxv_flip = pxv + lf * uxe;
1149 Double_t pyv_flip = pyv + lf * uye;
1150 Double_t pzv_flip = pzv + lf * uze;
1151 Double_t pxsum_flip = pxe + pxv_flip;
1152 Double_t pysum_flip = pye + pyv_flip;
1153 Double_t pzsum_flip = pze + pzv_flip;
1154 Double_t mexi_flip = sqrt(Esum*Esum-pxsum_flip*pxsum_flip-pysum_flip*pysum_flip-pzsum_flip*pzsum_flip);
1155 Double_t ptexi_flip = sqrt(pxsum_flip*pxsum_flip+pysum_flip*pysum_flip);
1157 Double_t posVtx[3] = {0.,0.,0.};
1158 fVtx1->GetXYZ(posVtx);
1162 UInt_t pdgdg[2]={11,3312};
1176 if(casc->ChargeXi()<0)
1183 Double_t nSigmaTPCele = -9999.;
1184 Double_t nSigmaTOFele = -9999.;
1206 Double_t nSigmaTPCv0pr=-9999.;
1207 Double_t nSigmaTOFv0pr=-9999.;
1208 Double_t nSigmaTPCv0pi=-9999.;
1209 Double_t nSigmaTOFv0pi=-9999.;
1210 Double_t nSigmaTPCbachpi=-9999.;
1211 Double_t nSigmaTOFbachpi=-9999.;
1214 if(casc->ChargeXi()>0){
1249 AliAODMCParticle *mcxic = 0;
1250 AliAODMCParticle *mcele = 0;
1251 AliAODMCParticle *mccasc = 0;
1253 Int_t mcpdgele_array[100];
1254 Int_t mcpdgcasc_array[100];
1255 Int_t mclabelele_array[100];
1256 Int_t mclabelcasc_array[100];
1257 Int_t mcngen_ele = -9999;
1258 Int_t mcngen_casc = -9999;
1262 mclabxic =
MatchToMC(exobj,mcArray,mcpdgele_array, mcpdgcasc_array,mclabelele_array,mclabelcasc_array,mcngen_ele,mcngen_casc);
1265 mcxic = (AliAODMCParticle*) mcArray->At(mclabxic);
1266 if(mclabelele_array[0]>=0)
1267 mcele = (AliAODMCParticle*) mcArray->At(mclabelele_array[0]);
1268 if(mclabelcasc_array[0]>=0)
1269 mccasc = (AliAODMCParticle*) mcArray->At(mclabelcasc_array[0]);
1334 cont[0] = exobj->InvMass(2,pdgdg);
1335 cont[1] = exobj->Pt();
1336 cont[2] = exobj->Getd0Prong(0)*trk->Charge();
1340 Double_t cont_flip[4];
1341 cont_flip[0] = mexi_flip;
1342 cont_flip[1] = ptexi_flip;
1347 cont2[0] = exobj->InvMass(2,pdgdg);
1348 cont2[1] = trk->Pt();
1351 Double_t cont_eleptvseta[3];
1352 cont_eleptvseta[0] = trk->Pt();
1353 cont_eleptvseta[1] = trk->Eta();
1356 Double_t cont_eleptvsxipt[3];
1357 cont_eleptvsxipt[0] = trk->Pt();
1358 cont_eleptvsxipt[1] = sqrt(casc->MomXiX()*casc->MomXiX()+casc->MomXiY()*casc->MomXiY());
1361 Double_t cont_eleptvsd0[3];
1362 cont_eleptvsd0[0] = trk->Pt();
1363 cont_eleptvsd0[1] = exobj->Getd0Prong(0)*trk->Charge();
1368 if(trk->Charge()*casc->ChargeXi()<0){
1380 for(Int_t ih=0;ih<23;ih++){
1381 Double_t cont_eleptvscutvars[3];
1382 cont_eleptvscutvars[0] = exobj->Pt();
1386 cont_eleptvscutvars[1] = trk->GetTPCNcls();
1388 cont_eleptvscutvars[1] = trk->GetTPCsignalN();
1390 cont_eleptvscutvars[1] = nSigmaTPCele;
1392 cont_eleptvscutvars[1] = nSigmaTOFele;
1394 cont_eleptvscutvars[1] = trk->Eta();
1396 cont_eleptvscutvars[1] = trk->GetITSNcls();
1398 if(casc->ChargeXi()<0)
1399 cont_eleptvscutvars[1] = casc->MassLambda();
1401 cont_eleptvscutvars[1] = casc->MassAntiLambda();
1403 cont_eleptvscutvars[1] = casc->MassXi();
1406 lPosV0[0] = casc->DecayVertexV0X();
1407 lPosV0[1] = casc->DecayVertexV0Y();
1408 lPosV0[2] = casc->DecayVertexV0Z();
1409 cont_eleptvscutvars[1] = TMath::Sqrt(lPosV0[0]*lPosV0[0]+lPosV0[1]*lPosV0[1]);
1412 lPosXi[0] = casc->DecayVertexXiX();
1413 lPosXi[1] = casc->DecayVertexXiY();
1414 lPosXi[2] = casc->DecayVertexXiZ();
1415 cont_eleptvscutvars[1] = TMath::Sqrt(lPosXi[0]*lPosXi[0]+lPosXi[1]*lPosXi[1]);
1417 cont_eleptvscutvars[1] = casc->DcaV0Daughters();
1419 cont_eleptvscutvars[1] = casc->DcaXiDaughters();
1421 cont_eleptvscutvars[1] = casc->DcaBachToPrimVertex();
1423 if(casc->ChargeXi()<0.)
1424 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1426 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1428 if(casc->ChargeXi()>0.)
1429 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1431 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1433 cont_eleptvscutvars[1] = casc->CosPointingAngle(casc->GetDecayVertexXi());
1435 cont_eleptvscutvars[1] = casc->CosPointingAngleXi(posVtx[0],posVtx[1],posVtx[2]);
1437 cont_eleptvscutvars[1] = nSigmaTPCv0pr;
1439 cont_eleptvscutvars[1] = nSigmaTPCv0pi;
1441 cont_eleptvscutvars[1] = nSigmaTPCbachpi;
1443 cont_eleptvscutvars[1] = casc->Eta();
1445 cont_eleptvscutvars[1] = 0.5*TMath::Log((sqrt(casc->Ptot2Xi())+casc->MomXiZ())/(sqrt(casc->Ptot2Xi())-casc->MomXiZ()));
1447 Double_t xipx = exobj->PxProng(1);
1448 Double_t xipy = exobj->PyProng(1);
1449 Double_t xipz = exobj->PzProng(1);
1450 Double_t epx = exobj->PxProng(0);
1451 Double_t epy = exobj->PyProng(0);
1452 Double_t epz = exobj->PzProng(0);
1453 cont_eleptvscutvars[1] = acos((xipx*epx+xipy*epy+xipz*epz)/sqrt(xipx*xipx+xipy*xipy+xipz*xipz)/sqrt(epx*epx+epy*epy+epz*epz));
1455 cont_eleptvscutvars[1] = -9999.;
1474 for(Int_t ih=0;ih<23;ih++){
1475 Double_t cont_eleptvscutvars[3];
1476 cont_eleptvscutvars[0] = exobj->Pt();
1480 cont_eleptvscutvars[1] = trk->GetTPCNcls();
1482 cont_eleptvscutvars[1] = trk->GetTPCsignalN();
1484 cont_eleptvscutvars[1] = nSigmaTPCele;
1486 cont_eleptvscutvars[1] = nSigmaTOFele;
1488 cont_eleptvscutvars[1] = trk->Eta();
1490 cont_eleptvscutvars[1] = trk->GetITSNcls();
1492 if(casc->ChargeXi()<0)
1493 cont_eleptvscutvars[1] = casc->MassLambda();
1495 cont_eleptvscutvars[1] = casc->MassAntiLambda();
1497 cont_eleptvscutvars[1] = casc->MassXi();
1500 lPosV0[0] = casc->DecayVertexV0X();
1501 lPosV0[1] = casc->DecayVertexV0Y();
1502 lPosV0[2] = casc->DecayVertexV0Z();
1503 cont_eleptvscutvars[1] = TMath::Sqrt(lPosV0[0]*lPosV0[0]+lPosV0[1]*lPosV0[1]);
1506 lPosXi[0] = casc->DecayVertexXiX();
1507 lPosXi[1] = casc->DecayVertexXiY();
1508 lPosXi[2] = casc->DecayVertexXiZ();
1509 cont_eleptvscutvars[1] = TMath::Sqrt(lPosXi[0]*lPosXi[0]+lPosXi[1]*lPosXi[1]);
1511 cont_eleptvscutvars[1] = casc->DcaV0Daughters();
1513 cont_eleptvscutvars[1] = casc->DcaXiDaughters();
1515 cont_eleptvscutvars[1] = casc->DcaBachToPrimVertex();
1517 if(casc->ChargeXi()<0.)
1518 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1520 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1522 if(casc->ChargeXi()>0.)
1523 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1525 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1527 cont_eleptvscutvars[1] = casc->CosPointingAngle(casc->GetDecayVertexXi());
1529 cont_eleptvscutvars[1] = casc->CosPointingAngleXi(posVtx[0],posVtx[1],posVtx[2]);
1531 cont_eleptvscutvars[1] = nSigmaTPCv0pr;
1533 cont_eleptvscutvars[1] = nSigmaTPCv0pi;
1535 cont_eleptvscutvars[1] = nSigmaTPCbachpi;
1537 cont_eleptvscutvars[1] = casc->Eta();
1539 cont_eleptvscutvars[1] = 0.5*TMath::Log((sqrt(casc->Ptot2Xi())+casc->MomXiZ())/(sqrt(casc->Ptot2Xi())-casc->MomXiZ()));
1541 Double_t xipx = exobj->PxProng(1);
1542 Double_t xipy = exobj->PyProng(1);
1543 Double_t xipz = exobj->PzProng(1);
1544 Double_t epx = exobj->PxProng(0);
1545 Double_t epy = exobj->PyProng(0);
1546 Double_t epz = exobj->PzProng(0);
1547 cont_eleptvscutvars[1] = acos((xipx*epx+xipy*epy+xipz*epz)/sqrt(xipx*xipx+xipy*xipy+xipz*xipz)/sqrt(epx*epx+epy*epy+epz*epz));
1549 cont_eleptvscutvars[1] = -9999.;
1559 Int_t pdgcode = mcxic->GetPdgCode();
1560 cont2[1] = mcele->Pt();
1561 if(abs(pdgcode)==4132 && abs(mcpdgele_array[1])==4132 && abs(mcpdgcasc_array[1])==4132){
1562 Int_t labmotherxic = mcxic->GetMother();
1563 Bool_t isbottomfd = kFALSE;
1566 AliAODMCParticle *motherxic = (AliAODMCParticle*)mcArray->At(labmotherxic);
1567 Int_t pdgmotherxic = motherxic->GetPdgCode();
1568 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){
1596 Double_t cont_xic[3];
1597 cont_xic[0] = mcxic->Pt();
1598 cont_xic[1] = mcxic->Y();
1604 Double_t cont_mcele[3];
1605 cont_mcele[0] = mcele->Pt();
1606 cont_mcele[1] = mcele->Eta();
1615 Double_t cont_eleptvsxiptvsxicpt[4];
1616 cont_eleptvsxiptvsxicpt[0] = cont_eleptvsxipt[0];
1617 cont_eleptvsxiptvsxicpt[1] = cont_eleptvsxipt[1];
1618 cont_eleptvsxiptvsxicpt[2] = mcxic->Pt();
1619 cont_eleptvsxiptvsxicpt[3] = cont_eleptvsxipt[2];
1628 for(Int_t ih=0;ih<23;ih++){
1629 Double_t cont_eleptvscutvars[3];
1630 cont_eleptvscutvars[0] = exobj->Pt();
1634 cont_eleptvscutvars[1] = trk->GetTPCNcls();
1636 cont_eleptvscutvars[1] = trk->GetTPCsignalN();
1638 cont_eleptvscutvars[1] = nSigmaTPCele;
1640 cont_eleptvscutvars[1] = nSigmaTOFele;
1642 cont_eleptvscutvars[1] = trk->Eta();
1644 cont_eleptvscutvars[1] = trk->GetITSNcls();
1646 if(casc->ChargeXi()<0)
1647 cont_eleptvscutvars[1] = casc->MassLambda();
1649 cont_eleptvscutvars[1] = casc->MassAntiLambda();
1651 cont_eleptvscutvars[1] = casc->MassXi();
1654 lPosV0[0] = casc->DecayVertexV0X();
1655 lPosV0[1] = casc->DecayVertexV0Y();
1656 lPosV0[2] = casc->DecayVertexV0Z();
1657 cont_eleptvscutvars[1] = TMath::Sqrt(lPosV0[0]*lPosV0[0]+lPosV0[1]*lPosV0[1]);
1660 lPosXi[0] = casc->DecayVertexXiX();
1661 lPosXi[1] = casc->DecayVertexXiY();
1662 lPosXi[2] = casc->DecayVertexXiZ();
1663 cont_eleptvscutvars[1] = TMath::Sqrt(lPosXi[0]*lPosXi[0]+lPosXi[1]*lPosXi[1]);
1665 cont_eleptvscutvars[1] = casc->DcaV0Daughters();
1667 cont_eleptvscutvars[1] = casc->DcaXiDaughters();
1669 cont_eleptvscutvars[1] = casc->DcaBachToPrimVertex();
1671 if(casc->ChargeXi()<0.)
1672 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1674 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1676 if(casc->ChargeXi()>0.)
1677 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1679 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1681 cont_eleptvscutvars[1] = casc->CosPointingAngle(casc->GetDecayVertexXi());
1683 cont_eleptvscutvars[1] = casc->CosPointingAngleXi(posVtx[0],posVtx[1],posVtx[2]);
1685 cont_eleptvscutvars[1] = nSigmaTPCv0pr;
1687 cont_eleptvscutvars[1] = nSigmaTPCv0pi;
1689 cont_eleptvscutvars[1] = nSigmaTPCbachpi;
1691 cont_eleptvscutvars[1] = casc->Eta();
1693 cont_eleptvscutvars[1] = 0.5*TMath::Log((sqrt(casc->Ptot2Xi())+casc->MomXiZ())/(sqrt(casc->Ptot2Xi())-casc->MomXiZ()));
1695 Double_t xipx = exobj->PxProng(1);
1696 Double_t xipy = exobj->PyProng(1);
1697 Double_t xipz = exobj->PzProng(1);
1698 Double_t epx = exobj->PxProng(0);
1699 Double_t epy = exobj->PyProng(0);
1700 Double_t epz = exobj->PzProng(0);
1701 cont_eleptvscutvars[1] = acos((xipx*epx+xipy*epy+xipz*epz)/sqrt(xipx*xipx+xipy*xipy+xipz*xipz)/sqrt(epx*epx+epy*epy+epz*epz));
1703 cont_eleptvscutvars[1] = -9999.;
1715 if( mexi_flip <10. && cosoa < 0. && fAnalCuts->IsPeakRegion(casc))
1717 if(trk->Charge()*casc->ChargeXi()<0){
1730 if(trk->Charge()*casc->ChargeXi()<0){
1748 if( mexi_flip< 10. && cosoa < 0. && fAnalCuts->IsSideBand(casc))
1750 if(trk->Charge()*casc->ChargeXi()<0){
1774 for(Int_t i=0;i<90;i++){
1778 Double_t pxe = trke->Px();
1779 Double_t pye = trke->Py();
1780 Double_t pze = trke->Pz();
1781 Double_t mome = sqrt(pxe*pxe+pye*pye+pze*pze);
1782 Double_t Ee = sqrt(mome*mome+0.000510998928*0.000510998928);
1784 Double_t pxv = casc->Px();
1785 Double_t pyv = casc->Py();
1786 Double_t pzv = casc->Pz();
1787 Double_t momv = sqrt(pxv*pxv+pyv*pyv+pzv*pzv);
1788 Double_t Ev = sqrt(momv*momv+1.32171*1.32171);
1790 Double_t cosoa = (pxe*pxv+pye*pyv+pze*pzv)/mome/momv;
1792 Double_t pxsum = pxe + pxv;
1793 Double_t pysum = pye + pyv;
1794 Double_t pzsum = pze + pzv;
1795 Double_t Esum = Ee + Ev;
1796 Double_t mexi = sqrt(Esum*Esum-pxsum*pxsum-pysum*pysum-pzsum*pzsum);
1798 Double_t uxe = pxe/mome;
1799 Double_t uye = pye/mome;
1800 Double_t uze = pze/mome;
1801 Double_t lf = -2.*(pxv*uxe+pyv*uye+pzv*uze);
1802 Double_t pxv_flip = pxv + lf * uxe;
1803 Double_t pyv_flip = pyv + lf * uye;
1804 Double_t pzv_flip = pzv + lf * uze;
1805 Double_t pxsum_flip = pxe + pxv_flip;
1806 Double_t pysum_flip = pye + pyv_flip;
1807 Double_t pzsum_flip = pze + pzv_flip;
1808 Double_t mexi_flip = sqrt(Esum*Esum-pxsum_flip*pxsum_flip-pysum_flip*pysum_flip-pzsum_flip*pzsum_flip);
1809 Double_t ptexi_flip = sqrt(pxsum_flip*pxsum_flip+pysum_flip*pysum_flip);
1811 Double_t posVtx[3] = {0.,0.,0.};
1812 fVtx1->GetXYZ(posVtx);
1815 UInt_t pdgdg[2]={11,3312};
1841 cont[1] = sqrt(pxsum*pxsum+pysum*pysum);
1845 Double_t cont_flip[4];
1846 cont_flip[0] = mexi_flip;
1847 cont_flip[1] = ptexi_flip;
1853 cont2[1] = sqrt(pxe*pxe+pye*pye);
1856 Double_t cont_eleptvseta[3];
1857 cont_eleptvseta[0] = trke->Pt();
1858 cont_eleptvseta[1] = trke->Eta();
1861 Double_t cont_eleptvsxipt[3];
1862 cont_eleptvsxipt[0] = trke->Pt();
1863 cont_eleptvsxipt[1] = casc->Pt();
1866 Double_t cont_eleptvsd0[3];
1867 cont_eleptvsd0[0] = trke->Pt();
1868 cont_eleptvsd0[1] = 0.;
1873 if(((
int)trke->T())*chargexi<0){
1903 if(mexi_flip < 10. && cosoa<0. && fAnalCuts->IsPeakRegion(casc))
1905 if(((
int)trke->T())*chargexi<0){
1926 const char* nameoutput = GetOutputSlot(5)->GetContainer()->GetName();
1930 TString * fCandidateVariableNames =
new TString[nVar];
1932 fCandidateVariableNames[ 0]=
"ElePx";
1933 fCandidateVariableNames[ 1]=
"ElePy";
1934 fCandidateVariableNames[ 2]=
"ElePz";
1935 fCandidateVariableNames[ 3]=
"TPCChi2overNDF";
1936 fCandidateVariableNames[ 4]=
"ITSNcls";
1937 fCandidateVariableNames[ 5]=
"TPCNcls";
1938 fCandidateVariableNames[ 6]=
"TPCNclsPID";
1939 fCandidateVariableNames[ 7]=
"TPCNclsRatio";
1940 fCandidateVariableNames[ 8]=
"d0R";
1941 fCandidateVariableNames[ 9]=
"d0Z";
1942 fCandidateVariableNames[10]=
"ITSClusterMap";
1943 fCandidateVariableNames[11]=
"nSigmaTPCele";
1944 fCandidateVariableNames[12]=
"nSigmaTOFele";
1945 fCandidateVariableNames[13]=
"nSigmaTPCpi";
1946 fCandidateVariableNames[14]=
"nSigmaTPCka";
1947 fCandidateVariableNames[15]=
"nSigmaTPCpr";
1948 fCandidateVariableNames[16]=
"EvNumber";
1949 fCandidateVariableNames[17]=
"EleCharge";
1950 fCandidateVariableNames[18]=
"ElePdgCode";
1951 fCandidateVariableNames[19]=
"EleMotherPdgCode";
1952 fCandidateVariableNames[20]=
"mcelepx";
1953 fCandidateVariableNames[21]=
"mcelepy";
1954 fCandidateVariableNames[22]=
"mcelepz";
1955 fCandidateVariableNames[23]=
"Centrality";
1956 fCandidateVariableNames[24]=
"PrimVertZ";
1957 fCandidateVariableNames[25]=
"RunNumber";
1959 for (Int_t ivar=0; ivar<nVar; ivar++) {
1978 fElectronTracks->AddLast(
new TLorentzVector(trk->Px(),trk->Py(),trk->Pz(),trk->Charge()));
1982 Int_t pdgEle = -9999;
1983 Int_t pdgEleMother = -9999;
1984 Float_t mcepx = -9999;
1985 Float_t mcepy = -9999;
1986 Float_t mcepz = -9999;
1989 Int_t labEle = trk->GetLabel();
1990 if(labEle<0)
return;
1991 AliAODMCParticle *mcetrk = (AliAODMCParticle*)mcArray->At(labEle);
1993 pdgEle = mcetrk->GetPdgCode();
1994 if(abs(pdgEle)!=11)
return;
1996 Bool_t hfe_flag = kFALSE;
1997 Bool_t gamma_flag = kFALSE;
1998 Int_t labemother = mcetrk->GetMother();
2000 AliAODMCParticle *motherele = (AliAODMCParticle*)mcArray->At(labemother);
2001 if(!motherele)
return;
2002 pdgEleMother = motherele->GetPdgCode();
2003 if(abs(pdgEleMother)>4000&&abs(pdgEleMother)<4400){
2006 if(abs(pdgEleMother)==22){
2015 if(!hfe_flag)
return;
2016 mcepx = mcetrk->Px();
2017 mcepy = mcetrk->Py();
2018 mcepz = mcetrk->Pz();
2024 for(Int_t i=0;i<26;i++){
2035 if(trk->GetTPCNclsF()>0)
2038 Double_t d0z0[2],covd0z0[3];
2039 trk->PropagateToDCA(
fVtx1,
fBzkG,kVeryBig,d0z0,covd0z0);
2043 Int_t itsmap = trk->GetITSClusterMap();
2046 Bool_t spdfirst = (itsmap & bit1) == bit1;
2047 Bool_t spdsecond = (itsmap & bit2) == bit2;
2085 const char* nameoutput = GetOutputSlot(6)->GetContainer()->GetName();
2089 TString * fCandidateVariableNames =
new TString[nVar];
2091 fCandidateVariableNames[ 0]=
"Centrality";
2092 fCandidateVariableNames[ 1]=
"InvMassXi";
2093 fCandidateVariableNames[ 2]=
"XiPx";
2094 fCandidateVariableNames[ 3]=
"XiPy";
2095 fCandidateVariableNames[ 4]=
"XiPz";
2096 fCandidateVariableNames[ 5]=
"InvMassLambda";
2097 fCandidateVariableNames[ 6]=
"DcaXiDaughters";
2098 fCandidateVariableNames[ 7]=
"DcaV0Daughters";
2099 fCandidateVariableNames[ 8]=
"DecayLengthXi";
2100 fCandidateVariableNames[ 9]=
"CosPointingAngleXi";
2101 fCandidateVariableNames[10]=
"DcaV0toPrimVertex";
2102 fCandidateVariableNames[11]=
"DcaPostoPrimVertex";
2103 fCandidateVariableNames[12]=
"DcaNegtoPrimVertex";
2104 fCandidateVariableNames[13]=
"DcaBachtoPrimVertex";
2105 fCandidateVariableNames[14]=
"DecayLengthV0";
2106 fCandidateVariableNames[15]=
"CosPointingAngleV0";
2107 fCandidateVariableNames[16]=
"XiCharge";
2108 fCandidateVariableNames[17]=
"XiPdgCode";
2109 fCandidateVariableNames[18]=
"XiMotherPdgCode";
2110 fCandidateVariableNames[19]=
"mcxipx";
2111 fCandidateVariableNames[20]=
"mcxipy";
2112 fCandidateVariableNames[21]=
"mcxipz";
2113 fCandidateVariableNames[22]=
"labcasc";
2114 fCandidateVariableNames[23]=
"RunNumber";
2115 fCandidateVariableNames[24]=
"PrimVertZ";
2116 fCandidateVariableNames[25]=
"EvNumber";
2118 for (Int_t ivar=0; ivar<nVar; ivar++) {
2132 fHistoXiMassvsPt->Fill(casc->MassXi(),sqrt(casc->MomXiX()*casc->MomXiX()+casc->MomXiY()*casc->MomXiY()));
2133 fHistoOmegaMassvsPt->Fill(casc->MassOmega(),sqrt(casc->MomXiX()*casc->MomXiX()+casc->MomXiY()*casc->MomXiY()));
2134 Double_t momxix = casc->MomXiX();
2135 Double_t momxiy = casc->MomXiY();
2136 Double_t phi_alice = atan2(momxiy,momxix);
2137 if(phi_alice<0.) phi_alice += 2 * M_PI;
2138 fHistoXiQovPtvsPhi->Fill(phi_alice,(Double_t)casc->ChargeXi()/sqrt(momxix*momxix+momxiy*momxiy));
2140 Double_t mlamPDG = TDatabasePDG::Instance()->GetParticle(3122)->Mass();
2141 Double_t posVtx[3] = {0.,0.,0.};
2142 fVtx1->GetXYZ(posVtx);
2143 Double_t ptotlam = TMath::Sqrt(pow(casc->Px(),2)+pow(casc->Py(),2)+pow(casc->Pz(),2));
2144 Double_t v0propdl = sqrt(pow(casc->DecayVertexV0X()-posVtx[0],2)+pow(casc->DecayVertexV0Y()-posVtx[1],2)+pow(casc->DecayVertexV0Z()-posVtx[2],2))*mlamPDG/ptotlam;
2152 Int_t xipdgcode = -9999;
2153 Int_t ximotherpdgcode = -9999;
2154 Float_t mcxipx = -9999.;
2155 Float_t mcxipy = -9999.;
2156 Float_t mcxipz = -9999.;
2157 Int_t labcasc = -9999.;
2159 Int_t pdgDgcasc[2]={211,3122};
2160 Int_t pdgDgv0[2]={2212,211};
2162 if(labcasc<0)
return;
2164 fHistoXiMassvsPtMCS->Fill(casc->MassXi(),sqrt(casc->MomXiX()*casc->MomXiX()+casc->MomXiY()*casc->MomXiY()));
2166 AliAODMCParticle *mccasctrk = (AliAODMCParticle*)mcArray->At(labcasc);
2167 if(!mccasctrk)
return;
2171 Bool_t hfxi_flag = kFALSE;
2172 xipdgcode = mccasctrk->GetPdgCode();
2173 Int_t labcascmother = mccasctrk->GetMother();
2174 if(labcascmother>=0){
2175 AliAODMCParticle *mothercasc = (AliAODMCParticle*)mcArray->At(labcascmother);
2177 ximotherpdgcode = mothercasc->GetPdgCode();
2178 if(abs(ximotherpdgcode)>4000&&abs(ximotherpdgcode)<4400){
2183 if(!hfxi_flag)
return;
2184 mcxipx = mccasctrk->Px();
2185 mcxipy = mccasctrk->Py();
2186 mcxipz = mccasctrk->Pz();
2190 Double_t xyz[3], pxpypz[3], cv[21]; Short_t sign;
2191 xyz[0]=casc->DecayVertexXiX();
2192 xyz[1]=casc->DecayVertexXiY();
2193 xyz[2]=casc->DecayVertexXiZ();
2194 pxpypz[0]=casc->MomXiX();
2195 pxpypz[1]=casc->MomXiY();
2196 pxpypz[2]=casc->MomXiZ();
2197 casc->GetCovarianceXYZPxPyPz(cv);
2198 sign=casc->ChargeXi();
2199 AliExternalTrackParam *trackCasc =
new AliExternalTrackParam(xyz,pxpypz,cv,sign);
2200 trackCasc->PropagateToDCA(
fVtx1,
fBzkG,kVeryBig);
2201 Double_t momcasc_new[3]={-9999,-9999,-9999.};
2202 trackCasc->GetPxPyPz(momcasc_new);
2205 TLorentzVector *lv =
new TLorentzVector();
2206 lv->SetXYZM(momcasc_new[0],momcasc_new[1],momcasc_new[2],casc->MassXi());
2207 if(casc->ChargeXi()>0)
2215 for(Int_t i=0;i<26;i++){
2224 if(casc->ChargeXi()<0)
2260 const char* nameoutput = GetOutputSlot(7)->GetContainer()->GetName();
2264 TString * fCandidateVariableNames =
new TString[nVar];
2266 fCandidateVariableNames[ 0]=
"Centrality";
2267 fCandidateVariableNames[ 1]=
"DecayType";
2268 fCandidateVariableNames[ 2]=
"XicPx";
2269 fCandidateVariableNames[ 3]=
"XicPy";
2270 fCandidateVariableNames[ 4]=
"XicPz";
2271 fCandidateVariableNames[ 5]=
"ElePx";
2272 fCandidateVariableNames[ 6]=
"ElePy";
2273 fCandidateVariableNames[ 7]=
"ElePz";
2274 fCandidateVariableNames[ 8]=
"CascPx";
2275 fCandidateVariableNames[ 9]=
"CascPy";
2276 fCandidateVariableNames[10]=
"CascPz";
2277 fCandidateVariableNames[11]=
"PdgCode";
2278 fCandidateVariableNames[12]=
"ElePdgCode";
2279 fCandidateVariableNames[13]=
"CascPdgCode";
2280 fCandidateVariableNames[14]=
"RunNumber";
2281 fCandidateVariableNames[15]=
"EvNumber";
2283 for (Int_t ivar=0; ivar<nVar; ivar++) {
2295 if(!mcepart)
return;
2296 if(!mccascpart)
return;
2298 for(Int_t i=0;i<14;i++){
2319 Double_t epx = mcepart->Px();
2320 Double_t epy = mcepart->Py();
2321 Double_t epz = mcepart->Pz();
2322 Double_t eE = sqrt(epx*epx+epy*epy+epz*epz+0.000511*0.000511);
2323 Double_t cascpx = mccascpart->Px();
2324 Double_t cascpy = mccascpart->Py();
2325 Double_t cascpz = mccascpart->Pz();
2326 Double_t cascE = sqrt(cascpx*cascpx+cascpy*cascpy+cascpz*cascpz+1.32171*1.32171);
2328 Double_t InvMassEleXi = sqrt(pow(eE+cascE,2)-pow(epx+cascpx,2)-pow(epy+cascpy,2)-pow(epz+cascpz,2));
2331 cont[0] = InvMassEleXi;
2332 cont[1] = mcpart->Pt();
2336 cont2[0] = InvMassEleXi;
2337 cont2[1] = mcepart->Pt();
2339 Double_t cont_eleptvseta[3];
2340 cont_eleptvseta[0] = mcepart->Pt();
2341 cont_eleptvseta[1] = mcepart->Eta();
2343 Double_t cont_eleptvsxipt[3];
2344 cont_eleptvsxipt[0] = mcepart->Pt();
2345 cont_eleptvsxipt[1] = mccascpart->Pt();
2347 Double_t cont_eleptvsxiptvsxicpt[4];
2348 cont_eleptvsxiptvsxicpt[0] = mcepart->Pt();
2349 cont_eleptvsxiptvsxicpt[1] = mccascpart->Pt();
2350 cont_eleptvsxiptvsxicpt[2] = mcpart->Pt();
2354 contmc[0] = mcpart->Pt();
2355 contmc[1] = mcpart->Y();
2357 Double_t contmcele[3];
2358 contmcele[0] = mcepart->Pt();
2359 contmcele[1] = mcepart->Eta();
2365 esdcuts->GetEtaRange(etamin,etamax);
2375 if(fabs(mcepart->Eta())<etamax){
2379 if(InvMassEleXi<2.5){
2385 if(fabs(mcpart->Y())<0.7){
2386 if(InvMassEleXi<2.5){
2403 const char* nameoutput = GetOutputSlot(9)->GetContainer()->GetName();
2407 TString * fCandidateVariableNames =
new TString[nVar];
2409 fCandidateVariableNames[ 0]=
"Centrality";
2410 fCandidateVariableNames[ 1]=
"ElePx";
2411 fCandidateVariableNames[ 2]=
"ElePy";
2412 fCandidateVariableNames[ 3]=
"ElePz";
2413 fCandidateVariableNames[ 4]=
"ElePdgCode";
2414 fCandidateVariableNames[ 5]=
"EleMotherPdgCode";
2415 fCandidateVariableNames[ 6]=
"RunNumber";
2416 fCandidateVariableNames[ 7]=
"EvNumber";
2418 for (Int_t ivar=0; ivar<nVar; ivar++) {
2429 if(!mcepart)
return;
2432 Bool_t hfe_flag = kFALSE;
2433 Int_t labemother = mcepart->GetMother();
2434 Int_t pdgmotherele = -9999;
2436 AliAODMCParticle *motherele = (AliAODMCParticle*)mcArray->At(labemother);
2437 pdgmotherele = motherele->GetPdgCode();
2438 if(abs(pdgmotherele)>4000&&abs(pdgmotherele)<4400){
2442 if(!hfe_flag)
return;
2445 contmc[0] = mcepart->Pt();
2446 contmc[1] = mcepart->Eta();
2450 for(Int_t i=0;i<8;i++){
2474 const char* nameoutput = GetOutputSlot(10)->GetContainer()->GetName();
2478 TString * fCandidateVariableNames =
new TString[nVar];
2480 fCandidateVariableNames[ 0]=
"Centrality";
2481 fCandidateVariableNames[ 1]=
"CascPx";
2482 fCandidateVariableNames[ 2]=
"CascPy";
2483 fCandidateVariableNames[ 3]=
"CascPz";
2484 fCandidateVariableNames[ 4]=
"CascPdgCode";
2485 fCandidateVariableNames[ 5]=
"CascMotherPdgCode";
2486 fCandidateVariableNames[ 6]=
"RunNumber";
2487 fCandidateVariableNames[ 7]=
"EvNumber";
2489 for (Int_t ivar=0; ivar<nVar; ivar++) {
2500 if(!mccascpart)
return;
2502 for(Int_t i=0;i<8;i++){
2506 Bool_t hfxi_flag = kFALSE;
2507 Int_t labcascmother = mccascpart->GetMother();
2508 Int_t pdgmothercasc = -9999;
2509 if(labcascmother>=0){
2510 AliAODMCParticle *mothercasc = (AliAODMCParticle*)mcArray->At(labcascmother);
2512 pdgmothercasc = mothercasc->GetPdgCode();
2513 if(abs(pdgmothercasc)>4000&&abs(pdgmothercasc)<4400){
2518 if(!hfxi_flag)
return;
2521 contmc[0] = mccascpart->Pt();
2522 contmc[1] = mccascpart->Eta();
2546 fCEvents =
new TH1F(
"fCEvents",
"conter",18,-0.5,17.5);
2548 fCEvents->GetXaxis()->SetBinLabel(1,
"X1");
2549 fCEvents->GetXaxis()->SetBinLabel(2,
"Analyzed events");
2550 fCEvents->GetXaxis()->SetBinLabel(3,
"AliAODVertex exists");
2551 fCEvents->GetXaxis()->SetBinLabel(4,
"TriggerOK");
2552 fCEvents->GetXaxis()->SetBinLabel(5,
"IsEventSelected");
2553 fCEvents->GetXaxis()->SetBinLabel(6,
"CascadesHF exists");
2554 fCEvents->GetXaxis()->SetBinLabel(7,
"MCarray exists");
2555 fCEvents->GetXaxis()->SetBinLabel(8,
"MCheader exists");
2556 fCEvents->GetXaxis()->SetBinLabel(9,
"triggerClass!=CINT1");
2557 fCEvents->GetXaxis()->SetBinLabel(10,
"triggerMask!=kAnyINT");
2558 fCEvents->GetXaxis()->SetBinLabel(11,
"triggerMask!=kAny");
2559 fCEvents->GetXaxis()->SetBinLabel(12,
"vtxTitle.Contains(Z)");
2560 fCEvents->GetXaxis()->SetBinLabel(13,
"vtxTitle.Contains(3D)");
2561 fCEvents->GetXaxis()->SetBinLabel(14,
"vtxTitle.Doesn'tContain(Z-3D)");
2563 fCEvents->GetXaxis()->SetBinLabel(16,
"!IsEventSelected");
2564 fCEvents->GetXaxis()->SetBinLabel(17,
"triggerMask!=kAnyINT || triggerClass!=CINT1");
2567 fCEvents->GetYaxis()->SetTitle(
"counts");
2569 fHTrigger =
new TH1F(
"fHTrigger",
"counter",18,-0.5,17.5);
2571 fHTrigger->GetXaxis()->SetBinLabel(1,
"X1");
2572 fHTrigger->GetXaxis()->SetBinLabel(2,
"kMB");
2573 fHTrigger->GetXaxis()->SetBinLabel(3,
"kSemiCentral");
2574 fHTrigger->GetXaxis()->SetBinLabel(4,
"kCentral");
2575 fHTrigger->GetXaxis()->SetBinLabel(5,
"kINT7");
2576 fHTrigger->GetXaxis()->SetBinLabel(6,
"kEMC7");
2578 fHTrigger->GetXaxis()->SetBinLabel(8,
"kMB|kSemiCentral|kCentral");
2579 fHTrigger->GetXaxis()->SetBinLabel(9,
"kINT7|kEMC7");
2580 fHTrigger->GetXaxis()->SetBinLabel(11,
"kMB&kSemiCentral");
2581 fHTrigger->GetXaxis()->SetBinLabel(12,
"kMB&kCentral");
2582 fHTrigger->GetXaxis()->SetBinLabel(13,
"kINT7&kEMC7");
2584 fHCentrality =
new TH1F(
"fHCentrality",
"conter",100,0.,100.);
2603 Int_t bins_base[4]= {10 ,100 , 20 ,10};
2604 Double_t xmin_base[4]={1.3,0 , -0.1 ,0.00};
2605 Double_t xmax_base[4]={3.3,20. , 0.1 ,100};
2607 fHistoEleXiMass =
new THnSparseF(
"fHistoEleXiMass",
"",4,bins_base,xmin_base,xmax_base);
2609 fHistoEleXiMassRS =
new THnSparseF(
"fHistoEleXiMassRS",
"",4,bins_base,xmin_base,xmax_base);
2611 fHistoEleXiMassWS =
new THnSparseF(
"fHistoEleXiMassWS",
"",4,bins_base,xmin_base,xmax_base);
2613 fHistoEleXiMassRSMix =
new THnSparseF(
"fHistoEleXiMassRSMix",
"",4,bins_base,xmin_base,xmax_base);
2615 fHistoEleXiMassWSMix =
new THnSparseF(
"fHistoEleXiMassWSMix",
"",4,bins_base,xmin_base,xmax_base);
2621 fHistoEleXiMassRS1 =
new THnSparseF(
"fHistoEleXiMassRS1",
"",4,bins_base,xmin_base,xmax_base);
2623 fHistoEleXiMassWS1 =
new THnSparseF(
"fHistoEleXiMassWS1",
"",4,bins_base,xmin_base,xmax_base);
2633 fHistoEleXiMassRS2 =
new THnSparseF(
"fHistoEleXiMassRS2",
"",4,bins_base,xmin_base,xmax_base);
2635 fHistoEleXiMassWS2 =
new THnSparseF(
"fHistoEleXiMassWS2",
"",4,bins_base,xmin_base,xmax_base);
2683 Int_t bins_base_elept[3]= {10 ,100 ,10};
2684 Double_t xmin_base_elept[3]={1.3,0 ,0.00};
2685 Double_t xmax_base_elept[3]={3.3,10. ,100};
2687 fHistoEleXiMassvsElePtRS =
new THnSparseF(
"fHistoEleXiMassvsElePtRS",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
2689 fHistoEleXiMassvsElePtWS =
new THnSparseF(
"fHistoEleXiMassvsElePtWS",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
2699 fHistoEleXiMassvsElePtRS1 =
new THnSparseF(
"fHistoEleXiMassvsElePtRS1",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
2701 fHistoEleXiMassvsElePtWS1 =
new THnSparseF(
"fHistoEleXiMassvsElePtWS1",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
2711 fHistoEleXiMassvsElePtRS2 =
new THnSparseF(
"fHistoEleXiMassvsElePtRS2",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
2713 fHistoEleXiMassvsElePtWS2 =
new THnSparseF(
"fHistoEleXiMassvsElePtWS2",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
2724 fHistoElePtRS=
new TH2F(
"fHistoElePtRS",
"Right-sign e pt",100,0.,10.,10,0.,100.);
2726 fHistoElePtWS=
new TH2F(
"fHistoElePtWS",
"Wrong-sign e pt",100,0.,10.,10,0.,100.);
2728 fHistoElePtRSMix=
new TH2F(
"fHistoElePtRSMix",
"Right-sign e pt",100,0.,10.,10,0.,100.);
2730 fHistoElePtWSMix=
new TH2F(
"fHistoElePtWSMix",
"Wrong-sign e pt",100,0.,10.,10,0.,100.);
2733 fHistoEleXiMassMCS =
new THnSparseF(
"fHistoEleXiMassMCS",
"",4,bins_base,xmin_base,xmax_base);
2735 fHistoEleXiMassMCS1 =
new THnSparseF(
"fHistoEleXiMassMCS1",
"",4,bins_base,xmin_base,xmax_base);
2737 fHistoEleXiMassMCS2 =
new THnSparseF(
"fHistoEleXiMassMCS2",
"",4,bins_base,xmin_base,xmax_base);
2751 fHistoEleXiMassMCGen =
new THnSparseF(
"fHistoEleXiMassMCGen",
"",4,bins_base,xmin_base,xmax_base);
2753 fHistoEleXiMassvsElePtMCS =
new THnSparseF(
"fHistoEleXiMassvsElePtMCS",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
2757 fHistoEleXiMassvsElePtMCS1 =
new THnSparseF(
"fHistoEleXiMassvsElePtMCS1",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
2761 fHistoEleXiMassvsElePtMCS2 =
new THnSparseF(
"fHistoEleXiMassvsElePtMCS2",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
2765 fHistoElePtMCS=
new TH2F(
"fHistoElePtMCS",
"MC S e pt",100,0.,10.,10,0.,100.);
2767 fHistoElePtMCGen=
new TH2F(
"fHistoElePtMCGen",
"MC Gen e pt",100,0.,10.,10,0.,100.);
2770 Int_t bins_eleptvseta[3]= {50,20 ,10};
2771 Double_t xmin_eleptvseta[3]={0.,-1. ,0.0};
2772 Double_t xmax_eleptvseta[3]={5.,1. ,100};
2774 fHistoElePtvsEtaRS =
new THnSparseF(
"fHistoElePtvsEtaRS",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
2776 fHistoElePtvsEtaWS =
new THnSparseF(
"fHistoElePtvsEtaWS",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
2778 fHistoElePtvsEtaRSMix =
new THnSparseF(
"fHistoElePtvsEtaRSMix",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
2780 fHistoElePtvsEtaWSMix =
new THnSparseF(
"fHistoElePtvsEtaWSMix",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
2782 fHistoElePtvsEtaMCS =
new THnSparseF(
"fHistoElePtvsEtaMCS",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
2784 fHistoElePtvsEtaMCGen =
new THnSparseF(
"fHistoElePtvsEtaMCGen",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
2787 Int_t bins_eleptvsxipt[3]= {50,20 ,10};
2788 Double_t xmin_eleptvsxipt[3]={0.,0. ,0.0};
2789 Double_t xmax_eleptvsxipt[3]={5.,5. ,100};
2791 fHistoElePtvsXiPtRS =
new THnSparseF(
"fHistoElePtvsXiPtRS",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
2793 fHistoElePtvsXiPtWS =
new THnSparseF(
"fHistoElePtvsXiPtWS",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
2795 fHistoElePtvsXiPtRSMix =
new THnSparseF(
"fHistoElePtvsXiPtRSMix",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
2797 fHistoElePtvsXiPtWSMix =
new THnSparseF(
"fHistoElePtvsXiPtWSMix",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
2799 fHistoElePtvsXiPtMCS =
new THnSparseF(
"fHistoElePtvsXiPtMCS",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
2801 fHistoElePtvsXiPtMCGen =
new THnSparseF(
"fHistoElePtvsXiPtMCGen",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
2803 fHistoElePtvsXiPtMCXicGen =
new THnSparseF(
"fHistoElePtvsXiPtMCXicGen",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
2806 Int_t bins_eleptvsxiptvsxicpt[4]= {50,20,10,10};
2807 Double_t xmin_eleptvsxiptvsxicpt[4]={0.,0.,0.,0.0};
2808 Double_t xmax_eleptvsxiptvsxicpt[4]={5.,5.,10.,100};
2809 fHistoElePtvsXiPtvsXicPtMCS =
new THnSparseF(
"fHistoElePtvsXiPtvsXicPtMCS",
"",4,bins_eleptvsxiptvsxicpt,xmin_eleptvsxiptvsxicpt,xmax_eleptvsxiptvsxicpt);
2811 fHistoElePtvsXiPtvsXicPtMCGen =
new THnSparseF(
"fHistoElePtvsXiPtvsXicPtMCGen",
"",4,bins_eleptvsxiptvsxicpt,xmin_eleptvsxiptvsxicpt,xmax_eleptvsxiptvsxicpt);
2814 Int_t bins_eleptvsd0[3]= {50 ,50 ,10};
2815 Double_t xmin_eleptvsd0[3]={0.,-0.2 ,0.0};
2816 Double_t xmax_eleptvsd0[3]={5.,0.2 ,100};
2818 fHistoElePtvsd0RS =
new THnSparseF(
"fHistoElePtvsd0RS",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
2820 fHistoElePtvsd0WS =
new THnSparseF(
"fHistoElePtvsd0WS",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
2822 fHistoElePtvsd0RSMix =
new THnSparseF(
"fHistoElePtvsd0RSMix",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
2824 fHistoElePtvsd0WSMix =
new THnSparseF(
"fHistoElePtvsd0WSMix",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
2826 fHistoElePtvsd0MCS =
new THnSparseF(
"fHistoElePtvsd0MCS",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
2828 fHistoElePtvsd0PromptMCS =
new THnSparseF(
"fHistoElePtvsd0PromptMCS",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
2836 fHistoBachPt =
new TH1F(
"fHistoBachPt",
"Bachelor p_{T}",100,0.0,5.0);
2838 fHistoBachPtMCS =
new TH1F(
"fHistoBachPtMCS",
"Bachelor p_{T}",100,0.0,5.0);
2842 fHistod0Bach =
new TH1F(
"fHistod0Bach",
"Bachelor d_{0}",100,-0.5,0.5);
2844 fHistoXiMassvsPt=
new TH2F(
"fHistoXiMassvsPt",
"Xi mass",100,1.32-0.05,1.32+0.05,20,0.,10.);
2846 fHistoXiMassvsPtMCS=
new TH2F(
"fHistoXiMassvsPtMCS",
"Xi mass",100,1.32-0.05,1.32+0.05,20,0.,10.);
2848 fHistoXiMassvsPtMCGen=
new TH2F(
"fHistoXiMassvsPtMCGen",
"Xi mass",100,1.32-0.05,1.32+0.05,20,0.,10.);
2850 fHistoOmegaMassvsPt=
new TH2F(
"fHistoOmegaMassvsPt",
"Omega mass",100,1.67-0.05,1.67+0.05,20,0.,10.);
2870 for(Int_t i=0;i<8;i++){
2880 Int_t bins_xicmcgen[3]= {100 ,20 ,10};
2881 Double_t xmin_xicmcgen[3]={0.,-1.0 ,0.0};
2882 Double_t xmax_xicmcgen[3]={20.,1.0 ,100};
2883 fHistoXicMCGen =
new THnSparseF(
"fHistoXicMCGen",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
2885 fHistoXicMCGen1 =
new THnSparseF(
"fHistoXicMCGen1",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
2887 fHistoXicMCGen2 =
new THnSparseF(
"fHistoXicMCGen2",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
2889 fHistoXicMCS =
new THnSparseF(
"fHistoXicMCS",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
2891 fHistoXicMCS1 =
new THnSparseF(
"fHistoXicMCS1",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
2893 fHistoXicMCS2 =
new THnSparseF(
"fHistoXicMCS2",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
2896 Int_t bins_elemcgen[3]= {100 ,20 ,10};
2897 Double_t xmin_elemcgen[3]={0.,-1.0 ,0.0};
2898 Double_t xmax_elemcgen[3]={10.,1.0 ,100};
2899 fHistoElectronMCGen =
new THnSparseF(
"fHistoElectronMCGen",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
2901 fHistoXicElectronMCGen =
new THnSparseF(
"fHistoXicElectronMCGen",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
2903 fHistoXicElectronMCGen1 =
new THnSparseF(
"fHistoXicElectronMCGen1",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
2905 fHistoXicElectronMCGen2 =
new THnSparseF(
"fHistoXicElectronMCGen2",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
2907 fHistoXicElectronMCS =
new THnSparseF(
"fHistoXicElectronMCS",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
2909 fHistoXicElectronMCS1 =
new THnSparseF(
"fHistoXicElectronMCS1",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
2911 fHistoXicElectronMCS2 =
new THnSparseF(
"fHistoXicElectronMCS2",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
2914 Int_t bins_ximcgen[3]= {50 ,20 ,10};
2915 Double_t xmin_ximcgen[3]={0.,-1.0 ,0.0};
2916 Double_t xmax_ximcgen[3]={10.,1.0 ,100};
2917 fHistoXiMCGen =
new THnSparseF(
"fHistoXiMCGen",
"",3,bins_ximcgen,xmin_ximcgen,xmax_ximcgen);
2920 fHistoLambdaPtvsDl=
new TH2F(
"fHistoLambdaPtvsDl",
"Lambda pt vs dl",20,0.,10.,20,0.,40.);
2948 for(Int_t ih=0;ih<23;ih++){
2949 Int_t bins_eleptvscutvars[3];
2950 Double_t xmin_eleptvscutvars[3];
2951 Double_t xmax_eleptvscutvars[3];
2953 bins_eleptvscutvars[0] = 20;
2954 xmin_eleptvscutvars[0] = 0.;
2955 xmax_eleptvscutvars[0] = 20.;
2956 bins_eleptvscutvars[2] = 10;
2957 xmin_eleptvscutvars[2] = 0.;
2958 xmax_eleptvscutvars[2] = 100.;
2962 bins_eleptvscutvars[1] = 40;
2963 xmin_eleptvscutvars[1] = 0.;
2964 xmax_eleptvscutvars[1] = 160.;
2965 }
else if(ih==2 || ih==3){
2967 bins_eleptvscutvars[1] = 20;
2968 xmin_eleptvscutvars[1] = -5.;
2969 xmax_eleptvscutvars[1] = 5.;
2972 bins_eleptvscutvars[1] = 30;
2973 xmin_eleptvscutvars[1] = -1.5;
2974 xmax_eleptvscutvars[1] = 1.5;
2977 bins_eleptvscutvars[1] = 7;
2978 xmin_eleptvscutvars[1] = -0.5;
2979 xmax_eleptvscutvars[1] = 6.5;
2982 bins_eleptvscutvars[1] = 50;
2983 xmin_eleptvscutvars[1] = 1.1156-0.03;
2984 xmax_eleptvscutvars[1] = 1.1156+0.03;
2987 bins_eleptvscutvars[1] = 50;
2988 xmin_eleptvscutvars[1] = 1.32-0.03;
2989 xmax_eleptvscutvars[1] = 1.32+0.03;
2990 }
else if(ih==8 || ih==9){
2992 bins_eleptvscutvars[1] = 20;
2993 xmin_eleptvscutvars[1] = 0.;
2994 xmax_eleptvscutvars[1] = 5.;
2995 }
else if(ih==10 || ih==11){
2997 bins_eleptvscutvars[1] = 20;
2998 xmin_eleptvscutvars[1] = 0.;
2999 xmax_eleptvscutvars[1] = 2.;
3000 }
else if(ih==12 || ih==13 || ih==14){
3002 bins_eleptvscutvars[1] = 20;
3003 xmin_eleptvscutvars[1] = 0.;
3004 xmax_eleptvscutvars[1] = 0.5;
3005 }
else if(ih==15 || ih==16){
3007 bins_eleptvscutvars[1] = 20;
3008 xmin_eleptvscutvars[1] = 0.95;
3009 xmax_eleptvscutvars[1] = 1.0;
3010 }
else if(ih==17 || ih==18 || ih==19){
3012 bins_eleptvscutvars[1] = 20;
3013 xmin_eleptvscutvars[1] = -5.;
3014 xmax_eleptvscutvars[1] = 5.;
3015 }
else if(ih==20 || ih==21){
3017 bins_eleptvscutvars[1] = 30;
3018 xmin_eleptvscutvars[1] = -1.5;
3019 xmax_eleptvscutvars[1] = 1.5;
3022 bins_eleptvscutvars[1] = 20;
3023 xmin_eleptvscutvars[1] = 0.;
3024 xmax_eleptvscutvars[1] = 3.141592/2;
3027 fHistoElePtvsCutVarsRS[ih] =
new THnSparseF(Form(
"fHistoElePtvsCutVarsRS[%d]",ih),
"",3,bins_eleptvscutvars,xmin_eleptvscutvars,xmax_eleptvscutvars);
3029 fHistoElePtvsCutVarsWS[ih] =
new THnSparseF(Form(
"fHistoElePtvsCutVarsWS[%d]",ih),
"",3,bins_eleptvscutvars,xmin_eleptvscutvars,xmax_eleptvscutvars);
3031 fHistoElePtvsCutVarsMCS[ih] =
new THnSparseF(Form(
"fHistoElePtvsCutVarsMCS[%d]",ih),
"",3,bins_eleptvscutvars,xmin_eleptvscutvars,xmax_eleptvscutvars);
3045 if(!casc)
return 0x0;
3046 if(!part)
return 0x0;
3047 if(!aod)
return 0x0;
3052 AliAODVertex *primVertexAOD;
3053 Bool_t unsetvtx = kFALSE;
3057 primVertexAOD =
fVtx1;
3062 primVertexAOD =
fVtx1;
3064 if(!primVertexAOD)
return 0x0;
3065 Double_t posprim[3]; primVertexAOD->GetXYZ(posprim);
3070 AliESDtrack *esdtrack =
new AliESDtrack((AliVTrack*)part);
3072 Double_t xyz[3], pxpypz[3], cv[21]; Short_t sign;
3073 xyz[0]=casc->DecayVertexXiX();
3074 xyz[1]=casc->DecayVertexXiY();
3075 xyz[2]=casc->DecayVertexXiZ();
3076 pxpypz[0]=casc->MomXiX();
3077 pxpypz[1]=casc->MomXiY();
3078 pxpypz[2]=casc->MomXiZ();
3079 casc->GetCovarianceXYZPxPyPz(cv);
3080 sign=casc->ChargeXi();
3081 AliExternalTrackParam *trackCasc =
new AliExternalTrackParam(xyz,pxpypz,cv,sign);
3083 Double_t xdummy, ydummy;
3084 Double_t dca = esdtrack->GetDCA(trackCasc,
fBzkG,xdummy,ydummy);
3091 Double_t d0z0bach[2],covd0z0bach[3];
3092 if(sqrt(pow(secVert->GetX(),2)+pow(secVert->GetY(),2))<1.){
3093 part->PropagateToDCA(secVert,
fBzkG,kVeryBig,d0z0bach,covd0z0bach);
3094 trackCasc->PropagateToDCA(secVert,
fBzkG,kVeryBig);
3096 part->PropagateToDCA(primVertexAOD,
fBzkG,kVeryBig,d0z0bach,covd0z0bach);
3097 trackCasc->PropagateToDCA(primVertexAOD,
fBzkG,kVeryBig);
3099 Double_t momcasc_new[3]={-9999,-9999,-9999.};
3100 trackCasc->GetPxPyPz(momcasc_new);
3102 Double_t px[2],py[2],pz[2];
3103 px[0] = part->Px(); py[0] = part->Py(); pz[0] = part->Pz();
3104 px[1] = momcasc_new[0]; py[1] = momcasc_new[1]; pz[1] = momcasc_new[2];
3109 Double_t d0[3],d0err[3];
3111 part->PropagateToDCA(primVertexAOD,
fBzkG,kVeryBig,d0z0bach,covd0z0bach);
3113 d0err[0] = TMath::Sqrt(covd0z0bach[0]);
3115 Double_t d0z0casc[2],covd0z0casc[3];
3116 trackCasc->PropagateToDCA(primVertexAOD,
fBzkG,kVeryBig,d0z0casc,covd0z0casc);
3118 d0err[1] = TMath::Sqrt(covd0z0casc[0]);
3123 Short_t
charge = part->Charge();
3127 if(unsetvtx)
delete primVertexAOD; primVertexAOD=NULL;
3128 if(esdtrack)
delete esdtrack;
3129 if(trackCasc)
delete trackCasc;
3133 UShort_t
id[2]={(UShort_t)part->GetID(),(UShort_t)trackCasc->GetID()};
3136 theCascade->GetSecondaryVtx()->AddDaughter(part);
3137 theCascade->GetSecondaryVtx()->AddDaughter(casc);
3138 if(unsetvtx)
delete primVertexAOD; primVertexAOD=NULL;
3139 if(esdtrack)
delete esdtrack;
3140 if(trackCasc)
delete trackCasc;
3153 TObjArray *TrackArray =
new TObjArray(3);
3155 AliESDtrack *cptrk1 =
new AliESDtrack((AliVTrack*)trk);
3156 TrackArray->AddAt(cptrk1,0);
3158 AliESDtrack *cascptrack =
new AliESDtrack((AliVTrack*)casc->GetDaughter(0));
3159 TrackArray->AddAt(cascptrack,1);
3160 AliESDtrack *cascntrack =
new AliESDtrack((AliVTrack*)casc->GetDaughter(1));
3161 TrackArray->AddAt(cascntrack,2);
3162 AliESDtrack *cascbtrack =
new AliESDtrack((AliVTrack*)casc->GetDecayVertexXi()->GetDaughter(0));
3163 TrackArray->AddAt(cascbtrack,3);
3167 for(Int_t i=0;i<4;i++)
3169 AliESDtrack *tesd = (AliESDtrack*)TrackArray->UncheckedAt(i);
3172 TrackArray->Clear();
3187 Bool_t fRecoPrimVtxSkippingTrks = kTRUE;
3188 Bool_t fRmTrksFromPrimVtx = kFALSE;
3190 AliESDVertex *vertexESD = 0;
3191 AliAODVertex *vertexAOD = 0;
3196 if(!fRecoPrimVtxSkippingTrks && !fRmTrksFromPrimVtx) {
3199 vertexESD =
new AliESDVertex(*
fV1);
3204 Int_t nTrks = trkArray->GetEntriesFast();
3205 AliVertexerTracks *vertexer =
new AliVertexerTracks(event->GetMagneticField());
3207 if(fRecoPrimVtxSkippingTrks) {
3210 if(strstr(
fV1->GetTitle(),
"VertexerTracksWithConstraint")) {
3211 Float_t diamondcovxy[3];
3212 event->GetDiamondCovXY(diamondcovxy);
3213 Double_t pos[3]={
event->GetDiamondX(),
event->GetDiamondY(),0.};
3214 Double_t cov[6]={diamondcovxy[0],diamondcovxy[1],diamondcovxy[2],0.,0.,10.*10.};
3215 AliESDVertex *diamond =
new AliESDVertex(pos,cov,1.,1);
3216 vertexer->SetVtxStart(diamond);
3217 delete diamond; diamond=NULL;
3218 if(strstr(
fV1->GetTitle(),
"VertexerTracksWithConstraintOnlyFitter"))
3219 vertexer->SetOnlyFitter();
3221 Int_t skipped[1000];
3222 Int_t nTrksToSkip=0,id;
3223 AliExternalTrackParam *t = 0;
3224 for(Int_t i=0; i<nTrks; i++) {
3225 t = (AliExternalTrackParam*)trkArray->UncheckedAt(i);
3226 id = (Int_t)t->GetID();
3228 skipped[nTrksToSkip++] = id;
3232 Double_t covtest[21];
3233 for(Int_t j=0; j<
event->GetNumberOfTracks(); j++) {
3234 AliVTrack *vtrack = (AliVTrack*)event->GetTrack(j);
3235 if(!vtrack->GetCovarianceXYZPxPyPz(covtest)) {
3236 id = (Int_t)vtrack->GetID();
3238 skipped[nTrksToSkip++] = id;
3241 for(Int_t ijk=nTrksToSkip; ijk<1000; ijk++) skipped[ijk]=-1;
3243 vertexer->SetSkipTracks(nTrksToSkip,skipped);
3244 vertexESD = (AliESDVertex*)vertexer->FindPrimaryVertex(event);
3246 }
else if(fRmTrksFromPrimVtx && nTrks>0) {
3249 TObjArray rmArray(nTrks);
3250 UShort_t *rmId =
new UShort_t[nTrks];
3251 AliESDtrack *esdTrack = 0;
3253 for(Int_t i=0; i<nTrks; i++) {
3254 t = (AliESDtrack*)trkArray->UncheckedAt(i);
3255 esdTrack =
new AliESDtrack(*t);
3256 rmArray.AddLast(esdTrack);
3257 if(esdTrack->GetID()>=0) {
3258 rmId[i]=(UShort_t)esdTrack->GetID();
3263 Float_t diamondxy[2]={
static_cast<Float_t
>(
event->GetDiamondX()),static_cast<Float_t>(event->GetDiamondY())};
3264 vertexESD = vertexer->RemoveTracksFromVertex(
fV1,&rmArray,rmId,diamondxy);
3265 delete [] rmId; rmId=NULL;
3270 delete vertexer; vertexer=NULL;
3271 if(!vertexESD)
return vertexAOD;
3272 if(vertexESD->GetNContributors()<=0) {
3274 delete vertexESD; vertexESD=NULL;
3282 Double_t pos[3],cov[6],chi2perNDF;
3283 vertexESD->GetXYZ(pos);
3284 vertexESD->GetCovMatrix(cov);
3285 chi2perNDF = vertexESD->GetChi2toNDF();
3286 delete vertexESD; vertexESD=NULL;
3288 vertexAOD =
new AliAODVertex(pos,cov,chi2perNDF);
3300 AliAODVertex *primVertexAOD;
3301 Bool_t unsetvtx = kFALSE;
3305 primVertexAOD =
fVtx1;
3310 primVertexAOD =
fVtx1;
3312 if(!primVertexAOD)
return 0x0;
3314 AliESDVertex * vertexESD =
new AliESDVertex(*
fV1);
3316 Double_t pos[3],cov[6],chi2perNDF;
3317 vertexESD->GetXYZ(pos);
3318 vertexESD->GetCovMatrix(cov);
3319 chi2perNDF = vertexESD->GetChi2toNDF();
3320 delete vertexESD; vertexESD=NULL;
3322 AliAODVertex *secVert =
new AliAODVertex(pos,cov,chi2perNDF);
3332 for(Int_t i=0;i<100;i++){
3333 pdgarray_ele[i] = -9999;
3334 labelarray_ele[i] = -9999;
3335 pdgarray_casc[i] = -9999;
3336 labelarray_casc[i] = -9999;
3341 AliVTrack *trk =
dynamic_cast<AliVTrack*
>(exobj->
GetBachelor());
3343 Int_t labEle = trk->GetLabel();
3344 if(labEle<0)
return -1;
3345 AliAODMCParticle *mcetrk = (AliAODMCParticle*)mcArray->At(labEle);
3346 if(!mcetrk)
return -1;
3347 labelarray_ele[0] = labEle;
3348 pdgarray_ele[0] = mcetrk->GetPdgCode();
3351 AliAODMCParticle *mcprimele=0;
3353 while(mcprimele->GetMother()>=0) {
3354 Int_t labprim_ele=mcprimele->GetMother();
3355 AliAODMCParticle *tmcprimele = (AliAODMCParticle*)mcArray->At(labprim_ele);
3360 mcprimele = tmcprimele;
3361 pdgarray_ele[ngen_ele] = mcprimele->GetPdgCode();
3362 labelarray_ele[ngen_ele] = labprim_ele;
3364 if(ngen_ele==100)
break;
3367 AliAODcascade *theCascade =
dynamic_cast<AliAODcascade*
>(exobj->
GetCascade());
3368 if(!theCascade)
return -1;
3370 Int_t pdgDgcasc[2]={211,3122};
3371 Int_t pdgDgv0[2]={2212,211};
3372 Int_t labcasc =
MatchToMCCascade(theCascade,3312,pdgDgcasc,pdgDgv0,mcArray);
3373 if(labcasc<0)
return -1;
3375 AliAODMCParticle *mccasc = (AliAODMCParticle*)mcArray->At(labcasc);
3376 if(!mccasc)
return -1;
3377 labelarray_casc[0] = labcasc;
3378 pdgarray_casc[0] = mccasc->GetPdgCode();
3381 AliAODMCParticle *mcprimcasc=0;
3382 mcprimcasc = mccasc;
3383 while(mcprimcasc->GetMother()>=0) {
3384 Int_t labprim_casc=mcprimcasc->GetMother();
3385 AliAODMCParticle *tmcprimcasc = (AliAODMCParticle*)mcArray->At(labprim_casc);
3390 mcprimcasc = tmcprimcasc;
3391 pdgarray_casc[ngen_casc] = mcprimcasc->GetPdgCode();
3392 labelarray_casc[ngen_casc] = labprim_casc;
3394 if(ngen_casc==100)
break;
3397 Bool_t same_flag = kFALSE;
3398 Int_t matchedlabel=-9999;
3399 for(Int_t iemc=0;iemc<ngen_ele;iemc++){
3400 for(Int_t ivmc=0;ivmc<ngen_casc;ivmc++){
3401 if(labelarray_ele[iemc]==labelarray_casc[ivmc]){
3403 matchedlabel = labelarray_ele[iemc];
3407 if(same_flag)
break;
3410 return matchedlabel;
3420 AliAODTrack *cptrack = (AliAODTrack*) theCascade->GetDaughter(0);
3421 if(!cptrack)
return -1;
3422 Int_t label_p = TMath::Abs(cptrack->GetLabel());
3423 if(label_p<0)
return -1;
3424 AliAODTrack *cntrack = (AliAODTrack*) theCascade->GetDaughter(1);
3425 if(!cntrack)
return -1;
3426 Int_t label_n = TMath::Abs(cntrack->GetLabel());
3427 if(label_n<0)
return -1;
3428 Int_t labv0 = theCascade->MatchToMC(pdgDgcasc[1],mcArray,2,pdgDgv0);
3429 if(labv0<0)
return -1;
3430 AliAODMCParticle *mcpartv0= (AliAODMCParticle*) mcArray->At(labv0);
3432 AliAODTrack *cbtrack = (AliAODTrack*) theCascade->GetDecayVertexXi()->GetDaughter(0);
3433 if(!cbtrack)
return -1;
3435 Int_t label_b = TMath::Abs(cbtrack->GetLabel());
3436 if(label_b<0)
return -1;
3438 AliAODMCParticle *mcpartb= (AliAODMCParticle*) mcArray->At(label_b);
3439 Int_t pdgb = TMath::Abs(mcpartb->GetPdgCode());
3440 if(pdgb!=pdgDgcasc[0])
return -1;
3442 AliAODMCParticle *mcmotherv0=mcpartv0;
3443 Bool_t isFromXiv0 = kFALSE;
3444 Int_t labxiv0 = mcmotherv0->GetMother();
3445 if(labxiv0<0)
return -1;
3446 mcmotherv0 = (AliAODMCParticle*) mcArray->At(labxiv0);
3448 Int_t
pdg = TMath::Abs(mcmotherv0 ->GetPdgCode());
3449 if(pdg==pdgabscasc){
3453 if(!isFromXiv0)
return -1;
3455 AliAODMCParticle *mcmotherb=mcpartb;
3456 Bool_t isFromXib = kFALSE;
3457 Int_t labxib = mcmotherb->GetMother();
3458 if(labxib<0)
return -1;
3459 mcmotherb = (AliAODMCParticle*) mcArray->At(labxib);
3461 Int_t
pdg = TMath::Abs(mcmotherb ->GetPdgCode());
3462 if(pdg==pdgabscasc){
3466 if(!isFromXib)
return -1;
3468 if(labxiv0!=labxib)
return -1;
3480 if(trkEntries==0)
return;
3483 for(Int_t i=0; i<trkEntries; i++) {
3484 seleFlags[i] = kFALSE;
3487 track = (AliVTrack*)event->GetTrack(i);
3489 if(track->GetID()<0)
continue;
3490 Double_t covtest[21];
3491 if(!track->GetCovarianceXYZPxPyPz(covtest))
continue;
3493 AliAODTrack *aodt = (AliAODTrack*)track;
3494 Double_t nsigma_tpcele = -9999;
3495 Double_t nsigma_tofele = -9999;
3505 if(fabs(nsigma_tofele)<3.){
3507 Double_t eleeta = aodt->Eta();
3508 if(fabs(eleeta)<0.6)
3510 if(fabs(eleeta)>0.6 && fabs(eleeta)<0.8)
3512 if(eleeta>-0.8 && eleeta<-0.6){
3514 }
else if(eleeta>-0.6&&eleeta<-0.4){
3516 }
else if(eleeta>-0.4&&eleeta<-0.2){
3518 }
else if(eleeta>-0.2&&eleeta<0.0){
3520 }
else if(eleeta>0.0&&eleeta<0.2){
3522 }
else if(eleeta>0.2&&eleeta<0.4){
3524 }
else if(eleeta>0.4&&eleeta<0.6){
3526 }
else if(eleeta>0.6&&eleeta<0.8){
3530 if(nsigma_tpcele>-0.5&&nsigma_tpcele<3.){
3550 Double_t primVtx[3];
3551 fVtx1->GetXYZ(primVtx);
3554 for(Int_t icasc=0;icasc<nCascs;icasc++)
3556 seleCascFlags[icasc] = kFALSE;
3557 AliAODcascade *casc = ((AliAODEvent*)event)->GetCascade(icasc);
3561 seleCascFlags[icasc] = kTRUE;
3575 if(theBinZ<0 || theBinZ>=
fNzVtxBins)
return -1;
3577 if(theBinM<0 || theBinM>=
fNCentBins)
return -1;
3585 if(poolIndex<0 || poolIndex>=
fNOfPools)
return;
3587 fEventBuffer[poolIndex]=
new TTree(Form(
"EventBuffer_%d",poolIndex),
"Temporary buffer for event mixing");
3610 TObjArray* c1array=0x0;
3611 TObjArray* c2array=0x0;
3612 Float_t zVertex,cent;
3613 TObjString* eventInfo=0x0;
3614 fEventBuffer[poolIndex]->SetBranchAddress(
"zVertex", &zVertex);
3615 fEventBuffer[poolIndex]->SetBranchAddress(
"eventInfo",&eventInfo);
3616 fEventBuffer[poolIndex]->SetBranchAddress(
"centrality", ¢);
3617 fEventBuffer[poolIndex]->SetBranchAddress(
"c1array", &c1array);
3618 fEventBuffer[poolIndex]->SetBranchAddress(
"c2array", &c2array);
3619 for (Int_t i=0; i<nEle; i++)
3625 fEventBuffer[poolIndex]->GetEvent(iEv + nEvents - fNumberOfEventsForMixing);
3627 Int_t nCascs1=c1array->GetEntries();
3638 for(Int_t iTr1=0; iTr1<nCascs1; iTr1++){
3639 TLorentzVector* casc1=(TLorentzVector*) c1array->At(iTr1);
3640 if(!casc1)
continue;
3645 Int_t nCascs2=c2array->GetEntries();
3646 for(Int_t iTr2=0; iTr2<nCascs2; iTr2++){
3647 TLorentzVector* casc2=(TLorentzVector*) c2array->At(iTr2);
3648 if(!casc2)
continue;
3664 Int_t nmcpart = mcArray->GetEntriesFast();
3666 Int_t mcevttype = 0;
3668 Bool_t sigmaevent = kFALSE;
3675 Int_t ncbarquark = 0;
3676 Double_t phi_c = -9999.;
3677 Double_t phi_cbar = -9999.;
3678 for(Int_t i=0;i<nmcpart;i++)
3680 AliAODMCParticle *mcpart = (AliAODMCParticle*) mcArray->At(i);
3681 if(TMath::Abs(mcpart->GetPdgCode())==4){
3682 if(fabs(mcpart->Y())<1.5){
3683 if(mcpart->GetPdgCode()==4){
3684 phi_c = mcpart->Phi();
3687 if(mcpart->GetPdgCode()==-4){
3688 phi_cbar = mcpart->Phi();
3693 }
else if(mcevttype==1){
3695 }
else if(mcevttype==2){
3697 }
else if(mcevttype==3){
3703 if(TMath::Abs(mcpart->GetPdgCode())==5){
3704 if(!mcpart->IsPhysicalPrimary())
continue;
3705 if(fabs(mcpart->Y())<1.5){
3708 }
else if(mcevttype==1){
3710 }
else if(mcevttype==2){
3712 }
else if(mcevttype==3){
3720 if((mcevttype==2)||(mcevttype==0)||(mcevttype==3))
return kFALSE;
3722 if((mcevttype==1)||(mcevttype==0)||(mcevttype==3))
return kFALSE;
3726 if(ncquark!=1)
return kFALSE;
3727 if(ncbarquark!=1)
return kFALSE;
3728 Double_t dphi = fabs(phi_c - phi_cbar);
3729 if(dphi>2*M_PI) dphi -= 2*M_PI;
3730 if(dphi>M_PI) dphi = 2*M_PI-dphi;
3740 for(Int_t i=0;i<nmcpart;i++)
3742 AliAODMCParticle *mcpart = (AliAODMCParticle*) mcArray->At(i);
3743 if(TMath::Abs(mcpart->GetPdgCode())==4132){
3744 Bool_t e_flag = kFALSE;
3745 Bool_t xi_flag = kFALSE;
3746 AliAODMCParticle *mcepart = 0;
3747 AliAODMCParticle *mccascpart = 0;
3748 for(Int_t idau=mcpart->GetFirstDaughter();idau<mcpart->GetLastDaughter()+1;idau++)
3751 AliAODMCParticle *mcdau = (AliAODMCParticle*) mcArray->At(idau);
3752 if(!mcdau)
continue;
3753 if(TMath::Abs(mcdau->GetPdgCode())==11){
3757 if(TMath::Abs(mcdau->GetPdgCode())==3312){
3763 Int_t decaytype = -9999;
3764 if(e_flag && xi_flag) decaytype = 0;
3768 if(!e_flag&&xi_flag)
3770 if(e_flag&&!xi_flag)
3772 if(!e_flag&&!xi_flag)
3777 if(TMath::Abs(mcpart->GetPdgCode())==11 && mcpart->GetStatus()==1){
3780 esdcuts->GetEtaRange(etamin,etamax);
3781 if(fabs(mcpart->Eta())<etamax){
3782 Bool_t gamma_flag = kFALSE;
3783 Int_t labmother = mcpart->GetMother();
3785 AliAODMCParticle *mcmother = (AliAODMCParticle*) mcArray->At(labmother);
3786 Int_t pdgmother = mcmother->GetPdgCode();
3787 if(TMath::Abs(pdgmother)==22) gamma_flag = kTRUE;
3793 if(TMath::Abs(mcpart->GetPdgCode())==3312){
3798 if((fabs(mcpart->Y())<rapmax) && (fabs(mcpart->Eta())<etamax)){
3807 for(Int_t i=0;i<nmcpart;i++)
3809 AliAODMCParticle *mcparte = (AliAODMCParticle*) mcArray->At(i);
3810 if(!mcparte)
continue;
3811 if(TMath::Abs(mcparte->GetPdgCode())!=11)
continue;
3812 if(mcparte->GetStatus()!=1)
continue;
3813 if(mcparte->Pt()<0.4)
continue;
3814 if(fabs(mcparte->Eta())>0.8)
continue;
3815 for(Int_t j=0;j<nmcpart;j++)
3817 AliAODMCParticle *mcpartv = (AliAODMCParticle*) mcArray->At(j);
3818 if(!mcpartv)
continue;
3819 if(TMath::Abs(mcpartv->GetPdgCode())!=3312)
continue;
3820 if(mcpartv->Pt()<0.4)
continue;
3821 if(fabs(mcpartv->Eta())>0.8)
continue;
3822 if(mcpartv->GetNDaughters()!=2)
continue;
3840 const char* nameoutput = GetOutputSlot(11)->GetContainer()->GetName();
3844 TString * fCandidateVariableNames =
new TString[nVar];
3846 fCandidateVariableNames[ 0] =
"InvMassEleXi";
3847 fCandidateVariableNames[ 1] =
"EleXiPx";
3848 fCandidateVariableNames[ 2] =
"EleXiPy";
3849 fCandidateVariableNames[ 3] =
"EleXiPz";
3850 fCandidateVariableNames[ 4] =
"ElePdgCode";
3851 fCandidateVariableNames[ 5] =
"ElePx";
3852 fCandidateVariableNames[ 6] =
"ElePy";
3853 fCandidateVariableNames[ 7] =
"ElePz";
3854 fCandidateVariableNames[ 8] =
"XiPdgCode";
3855 fCandidateVariableNames[ 9] =
"XiPx";
3856 fCandidateVariableNames[10] =
"XiPy";
3857 fCandidateVariableNames[11] =
"XiPz";
3858 fCandidateVariableNames[12] =
"SameFlag";
3859 fCandidateVariableNames[13] =
"EleNGeneration";
3860 fCandidateVariableNames[14] =
"EleGen1PDG";
3861 fCandidateVariableNames[15] =
"EleGen2PDG";
3862 fCandidateVariableNames[16] =
"EleGen3PDG";
3863 fCandidateVariableNames[17] =
"EleGen4PDG";
3864 fCandidateVariableNames[18] =
"EleGen5PDG";
3865 fCandidateVariableNames[19] =
"EleGen6PDG";
3866 fCandidateVariableNames[20] =
"EleGen7PDG";
3867 fCandidateVariableNames[21] =
"EleGen8PDG";
3868 fCandidateVariableNames[22] =
"EleGen9PDG";
3869 fCandidateVariableNames[23] =
"EleGen10PDG";
3870 fCandidateVariableNames[24] =
"ElePrimPDG";
3871 fCandidateVariableNames[25] =
"XiNGeneration";
3872 fCandidateVariableNames[26] =
"XiGen1PDG";
3873 fCandidateVariableNames[27] =
"XiGen2PDG";
3874 fCandidateVariableNames[28] =
"XiGen3PDG";
3875 fCandidateVariableNames[29] =
"XiGen4PDG";
3876 fCandidateVariableNames[30] =
"XiGen5PDG";
3877 fCandidateVariableNames[31] =
"XiGen6PDG";
3878 fCandidateVariableNames[32] =
"XiGen7PDG";
3879 fCandidateVariableNames[33] =
"XiGen8PDG";
3880 fCandidateVariableNames[34] =
"XiGen9PDG";
3881 fCandidateVariableNames[35] =
"XiGen10PDG";
3882 fCandidateVariableNames[36] =
"XiPrimPDG";
3883 fCandidateVariableNames[37] =
"MatchedPDG";
3885 for (Int_t ivar=0; ivar<nVar; ivar++) {
3897 for(Int_t i=0;i<38;i++){
3901 TLorentzVector vele, vxi, vexi;
3902 vele.SetXYZM(mcparte->Px(),mcparte->Py(),mcparte->Pz(),0.000510998928);
3903 vxi.SetXYZM(mcpartv->Px(),mcpartv->Py(),mcpartv->Pz(),1.32171);
3906 Int_t pdgarray_ele[100], labelarray_ele[100], ngen_ele;
3907 Int_t pdgarray_xi[100], labelarray_xi[100], ngen_xi;
3911 Bool_t same_flag = kFALSE;
3912 Int_t matched_pdg = -999999;
3913 for(Int_t iemc=0;iemc<ngen_ele;iemc++){
3914 for(Int_t ivmc=0;ivmc<ngen_xi;ivmc++){
3915 if(labelarray_ele[iemc]==labelarray_xi[ivmc]){
3917 matched_pdg = pdgarray_ele[iemc];
3921 if(same_flag)
break;
3923 Int_t pdgprim_ele = pdgarray_ele[ngen_ele-1];
3924 Int_t pdgprim_xi = pdgarray_xi[ngen_xi-1];
3972 for(Int_t i=0;i<100;i++){
3973 pdgarray[i] = -9999;
3974 labelarray[i] = -9999;
3978 AliAODMCParticle *mcprim = mcpart;
3979 while(mcprim->GetMother()>=0) {
3980 Int_t lab_prim=mcprim->GetMother();
3982 AliAODMCParticle *tmcprim = (AliAODMCParticle*)mcArray->At(lab_prim);
3986 if((TMath::Abs(tmcprim->GetPdgCode())<10) || (TMath::Abs(tmcprim->GetPdgCode())==21))
break;
3990 pdgarray[ngen] = mcprim->GetPdgCode();
3991 labelarray[ngen] = lab_prim;
3994 if(ngen == 100)
break;
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.
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
void ResetPool(Int_t poolIndex)
THnSparse * fHistoEleXiMassWSSideAway
! e-Xi mass spectra (wrong-sign)
THnSparse * fHistoEleXiMassRSMix1
! e-Xi mass spectra (right-sign)
void FillROOTObjects(AliAODRecoCascadeHF *elobj, AliAODcascade *casc, AliAODTrack *trk, TClonesArray *mcArray)
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)
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
void UnsetOwnPrimaryVtx()
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
THnSparse * fHistoEleXiMassvsElePtRS2
! e-Xi mass spectra (right-sign)
THnSparse * fHistoElePtvsd0PromptMCS
! e pt-d0 spectra (right-sign)
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
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)
THnSparse * fHistoEleXiMassRS
! e-Xi mass spectra (right-sign)
THnSparse * fHistoElePtvsEtaWSMix
! e spectra (wrong-sign, mix)
TH1F * fHistoMCDeltaPhiccbar
! MC Event Type
TH1F * fHistoMCEventType
! MC Event Type
THnSparse * fHistoEleXiMassvsElePtRSMix2
! e-Xi mass-ept spectra (right-sign)
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
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)
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
Bool_t SingleTrkCuts(AliAODTrack *trk, AliAODVertex *primvert)
TH2F * fHistoXiMassvsPtMCGen
! Xi mass vs pt histogram
THnSparse * fHistoElePtvsXiPtMCS
! e-Xi spectra efficiency numerator
THnSparse * fHistoEleXiMassWS
! e-Xi mass spectra (wrong-sign)
TH2F * fHistoElectronTOFPIDSelTPC
! TOF electron PID after TPC cut
THnSparse * fHistoElePtvsCutVarsWS[23]
! e pt- cut variables (Wrong-sign)
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)
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)
TH1F * fHistoMCNccbar
! MC Event Type
Bool_t IsPeakRegion(AliAODcascade *c)
THnSparse * fHistoElePtvsXiPtRS
! e-Xi spectra (right-sign)
TH1F * fHTrigger
! Histogram to check Trigger
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 * fHistoElePtMCS
! e spectra (Efficiency numerator)
THnSparse * fHistoEleXiMassWSMix1Away
! e-Xi mass spectra (wrong-sign)
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
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)
THnSparse * fHistoElePtvsd0WSMix
! e pt-d0 spectra (wrong-sign, mix)
TH2F * fHistoElectronTPCPIDSelTOF
! TPC electron PID after TOF 3 sigma cut
AliESDVertex * fV1
primary vertex
AliPIDResponse * GetPidResponse() const
TH2F * fHistoElectronTOFPID
! TOF electron PID
virtual void Terminate(Option_t *option)
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 event mixing
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
AliAODRecoCascadeHF * MakeCascadeHF(AliAODcascade *casc, AliAODTrack *trk, AliAODEvent *aod, AliAODVertex *vert)
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)
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)
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
Bool_t fIsCent
SemiCentral trigger event.
THnSparse * fHistoEleXiMassWS2
! e-Xi mass spectra (wrong-sign)
THnSparse * fHistoElePtvsd0BFeeddownMCS
! e pt-d0 spectra (right-sign)
THnSparse * fHistoEleXiMassBFeeddownMCS
! e-Xi mass spectra (Efficiency numerator)
Bool_t SingleTrkCutsNoPID(AliAODTrack *trk, AliAODVertex *primvert)
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.
Bool_t GetIsUsePID() const
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
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
void GetMCDecayHistory(AliAODMCParticle *mcpart, TClonesArray *mcArray, Int_t *pdgarray, Int_t *labelarray, Int_t &ngen)
void FillMixROOTObjects(TLorentzVector *et, TLorentzVector *ev, Int_t charge)
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.
AliAODPidHF * GetPidCascPi() const
THnSparse * fHistoEleXiMassvsElePtWSSide1
! e-Xi mass-ept spectra (wrong-sign)
THnSparse * fHistoEleXiMassvsElePtWS
! e-Xi mass spectra (wrong-sign)
THnSparse * fHistoEleXiMassWSMix
! e-Xi mass spectra (wrong-sign)
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)
THnSparse * fHistoElePtvsXiPtvsXicPtMCGen
! e-Xi spectra efficiency numerator
TH2F * fHistoLambdaPtvsDlSide
! Lambda proper life time distribution (sideband)
TTree * fVariablesTree
flag to decide whether to write the candidate variables on a tree variables