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 fHistoEleXiPtvsRapidityRS(0),
269 fHistoEleXiPtvsRapidityWS(0),
270 fHistoEleXiPtvsRapidityMCS(0),
271 fHistoResponseElePt(0),
272 fHistoResponseEleXiPt(0),
274 fHistonEvtvsRunNumber(0),
275 fHistonElevsRunNumber(0),
276 fHistonXivsRunNumber(0),
277 fHistoMCEventType(0),
278 fHistoMCXic0Decays(0),
279 fHistoMCDeltaPhiccbar(0),
282 fNumberOfEventsForMixing (5),
288 fElectronTracks(0x0),
289 fCascadeTracks1(0x0),
295 for(Int_t i=0;i<23;i++){
300 for(Int_t i=0;i<8;i++){
308 Bool_t writeVariableTree) :
309 AliAnalysisTaskSE(name),
318 fIsEventSelected(kFALSE),
319 fWriteVariableTree(writeVariableTree),
320 fWriteEachVariableTree(kFALSE),
321 fWriteMCVariableTree(kFALSE),
323 fEleVariablesTree(0),
324 fCascVariablesTree(0),
326 fMCEleVariablesTree(0),
327 fMCCascVariablesTree(0),
328 fMCGenPairVariablesTree(0),
329 fReconstructPrimVert(kFALSE),
335 fCandidateVariables(),
336 fCandidateEleVariables(),
337 fCandidateCascVariables(),
338 fCandidateMCVariables(),
339 fCandidateMCEleVariables(),
340 fCandidateMCCascVariables(),
341 fCandidateMCGenPairVariables(),
349 fUseCentralityV0M(kFALSE),
352 fMCDoPairAnalysis(kFALSE),
354 fHistoEleXiMassRS(0),
355 fHistoEleXiMassWS(0),
356 fHistoEleXiMassRSMix(0),
357 fHistoEleXiMassWSMix(0),
358 fHistoEleXiMassRSSide(0),
359 fHistoEleXiMassWSSide(0),
360 fHistoEleXiMassRS1(0),
361 fHistoEleXiMassWS1(0),
362 fHistoEleXiMassRSMix1(0),
363 fHistoEleXiMassWSMix1(0),
364 fHistoEleXiMassRSSide1(0),
365 fHistoEleXiMassWSSide1(0),
366 fHistoEleXiMassRS2(0),
367 fHistoEleXiMassWS2(0),
368 fHistoEleXiMassRSMix2(0),
369 fHistoEleXiMassWSMix2(0),
370 fHistoEleXiMassRSSide2(0),
371 fHistoEleXiMassWSSide2(0),
372 fHistoEleXiMassAway(0),
373 fHistoEleXiMassRSAway(0),
374 fHistoEleXiMassWSAway(0),
375 fHistoEleXiMassRSMixAway(0),
376 fHistoEleXiMassWSMixAway(0),
377 fHistoEleXiMassRSSideAway(0),
378 fHistoEleXiMassWSSideAway(0),
379 fHistoEleXiMassRS1Away(0),
380 fHistoEleXiMassWS1Away(0),
381 fHistoEleXiMassRSMix1Away(0),
382 fHistoEleXiMassWSMix1Away(0),
383 fHistoEleXiMassRSSide1Away(0),
384 fHistoEleXiMassWSSide1Away(0),
385 fHistoEleXiMassRS2Away(0),
386 fHistoEleXiMassWS2Away(0),
387 fHistoEleXiMassRSMix2Away(0),
388 fHistoEleXiMassWSMix2Away(0),
389 fHistoEleXiMassRSSide2Away(0),
390 fHistoEleXiMassWSSide2Away(0),
391 fHistoEleXiMassvsElePtRS(0),
392 fHistoEleXiMassvsElePtWS(0),
393 fHistoEleXiMassvsElePtRSMix(0),
394 fHistoEleXiMassvsElePtWSMix(0),
395 fHistoEleXiMassvsElePtRSSide(0),
396 fHistoEleXiMassvsElePtWSSide(0),
397 fHistoEleXiMassvsElePtRS1(0),
398 fHistoEleXiMassvsElePtWS1(0),
399 fHistoEleXiMassvsElePtRSMix1(0),
400 fHistoEleXiMassvsElePtWSMix1(0),
401 fHistoEleXiMassvsElePtRSSide1(0),
402 fHistoEleXiMassvsElePtWSSide1(0),
403 fHistoEleXiMassvsElePtRS2(0),
404 fHistoEleXiMassvsElePtWS2(0),
405 fHistoEleXiMassvsElePtRSMix2(0),
406 fHistoEleXiMassvsElePtWSMix2(0),
407 fHistoEleXiMassvsElePtRSSide2(0),
408 fHistoEleXiMassvsElePtWSSide2(0),
413 fHistoEleXiMassMCS(0),
414 fHistoEleXiMassMCS1(0),
415 fHistoEleXiMassMCS2(0),
416 fHistoEleXiMassPromptMCS(0),
417 fHistoEleXiMassPromptMCS1(0),
418 fHistoEleXiMassPromptMCS2(0),
419 fHistoEleXiMassBFeeddownMCS(0),
420 fHistoEleXiMassBFeeddownMCS1(0),
421 fHistoEleXiMassBFeeddownMCS2(0),
422 fHistoEleXiMassMCGen(0),
423 fHistoEleXiMassvsElePtMCS(0),
424 fHistoEleXiMassvsElePtMCGen(0),
425 fHistoEleXiMassvsElePtMCS1(0),
426 fHistoEleXiMassvsElePtMCGen1(0),
427 fHistoEleXiMassvsElePtMCS2(0),
428 fHistoEleXiMassvsElePtMCGen2(0),
431 fHistoElePtvsEtaRS(0),
432 fHistoElePtvsEtaWS(0),
433 fHistoElePtvsEtaRSMix(0),
434 fHistoElePtvsEtaWSMix(0),
435 fHistoElePtvsEtaMCS(0),
436 fHistoElePtvsEtaMCGen(0),
437 fHistoElePtvsXiPtRS(0),
438 fHistoElePtvsXiPtWS(0),
439 fHistoElePtvsXiPtRSMix(0),
440 fHistoElePtvsXiPtWSMix(0),
441 fHistoElePtvsXiPtMCS(0),
442 fHistoElePtvsXiPtvsXicPtMCS(0),
443 fHistoElePtvsXiPtMCGen(0),
444 fHistoElePtvsXiPtvsXicPtMCGen(0),
445 fHistoElePtvsXiPtMCXicGen(0),
446 fHistoElePtvsd0RS(0),
447 fHistoElePtvsd0WS(0),
448 fHistoElePtvsd0RSMix(0),
449 fHistoElePtvsd0WSMix(0),
450 fHistoElePtvsd0MCS(0),
451 fHistoElePtvsd0PromptMCS(0),
452 fHistoElePtvsd0BFeeddownMCS(0),
455 fHistoBachPtMCGen(0),
458 fHistoXiMassvsPtMCS(0),
459 fHistoXiMassvsPtMCGen(0),
460 fHistoOmegaMassvsPt(0),
461 fHistoElectronTPCPID(0),
462 fHistoElectronTOFPID(0),
463 fHistoElectronTPCSelPID(0),
464 fHistoElectronTOFSelPID(0),
465 fHistoElectronTPCPIDSelTOF(0),
466 fHistoElectronTOFPIDSelTPC(0),
467 fHistoElectronTPCPIDSelTOFSmallEta(0),
468 fHistoElectronTPCPIDSelTOFLargeEta(0),
469 fHistoElectronQovPtvsPhi(0),
470 fHistoXiQovPtvsPhi(0),
477 fHistoXicElectronMCGen(0),
478 fHistoXicElectronMCGen1(0),
479 fHistoXicElectronMCGen2(0),
480 fHistoXicElectronMCS(0),
481 fHistoXicElectronMCS1(0),
482 fHistoXicElectronMCS2(0),
483 fHistoElectronMCGen(0),
485 fHistoLambdaPtvsDl(0),
486 fHistoLambdaPtvsDlSide(0),
487 fHistoLambdaPtvsDlMCS(0),
488 fHistoEleXiPtvsRapidityRS(0),
489 fHistoEleXiPtvsRapidityWS(0),
490 fHistoEleXiPtvsRapidityMCS(0),
491 fHistoResponseElePt(0),
492 fHistoResponseEleXiPt(0),
494 fHistonEvtvsRunNumber(0),
495 fHistonElevsRunNumber(0),
496 fHistonXivsRunNumber(0),
497 fHistoMCEventType(0),
498 fHistoMCXic0Decays(0),
499 fHistoMCDeltaPhiccbar(0),
502 fNumberOfEventsForMixing (5),
508 fElectronTracks(0x0),
509 fCascadeTracks1(0x0),
515 Info(
"AliAnalysisTaskSEXic2eleXifromAODtracks",
"Calling Constructor");
517 for(Int_t i=0;i<23;i++){
522 for(Int_t i=0;i<8;i++){
526 DefineOutput(1,TList::Class());
527 DefineOutput(2,TList::Class());
528 DefineOutput(3,TList::Class());
529 DefineOutput(4,TTree::Class());
530 DefineOutput(5,TTree::Class());
531 DefineOutput(6,TTree::Class());
532 DefineOutput(7,TTree::Class());
533 DefineOutput(8,AliNormalizationCounter::Class());
534 DefineOutput(9,TTree::Class());
535 DefineOutput(10,TTree::Class());
536 DefineOutput(11,TTree::Class());
544 Info(
"~AliAnalysisTaskSEXic2eleXifromAODtracks",
"Calling Destructor");
622 if (fDebug > 1) AliInfo(
"Init");
641 AliError(
"NO EVENT FOUND!");
644 AliAODEvent* aodEvent =
dynamic_cast<AliAODEvent*
>(fInputEvent);
652 fBzkG = (Double_t)aodEvent->GetMagneticField();
653 AliKFParticle::SetField(
fBzkG);
654 if (TMath::Abs(
fBzkG)<0.001) {
665 TClonesArray *mcArray = 0;
666 AliAODMCHeader *mcHeader=0;
669 mcArray =
dynamic_cast<TClonesArray*
>(aodEvent->FindListObject(AliAODMCParticle::StdBranchName()));
671 AliError(
"Could not find Monte-Carlo in AOD");
677 mcHeader = (AliAODMCHeader*)aodEvent->GetList()->FindObject(AliAODMCHeader::StdBranchName());
679 AliError(
"AliAnalysisTaskSEXic2eleXifromAODtracks::UserExec: MC header branch not found!\n");
684 Double_t zMCVertex = mcHeader->GetVtxZ();
686 AliDebug(2,Form(
"Event rejected: abs(zVtxMC)=%f > fAnalCuts->GetMaxVtxZ()=%f",zMCVertex,
fAnalCuts->
GetMaxVtxZ()));
700 fVtx1 = (AliAODVertex*)aodEvent->GetPrimaryVertex();
703 Double_t pos[3],cov[6];
705 fVtx1->GetCovarianceMatrix(cov);
706 fV1 =
new AliESDVertex(pos,cov,100.,100,
fVtx1->GetName());
719 fIsMB=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kMB)==(AliVEvent::kMB);
720 fIsSemi=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kSemiCentral)==(AliVEvent::kSemiCentral);
721 fIsCent=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kCentral)==(AliVEvent::kCentral);
722 fIsINT7=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kINT7)==(AliVEvent::kINT7);
723 fIsEMC7=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kEMC7)==(AliVEvent::kEMC7);
737 AliCentrality *cent = aodEvent->GetCentrality();
738 fCentrality = cent->GetCentralityPercentile(
"V0M");
742 if(fCentrality<0.||fCentrality>100.-0.0000001) {
749 Int_t runnumber_offset = 0;
750 Int_t runnumber = aodEvent->GetRunNumber();
751 if(runnumber<=131000&&runnumber>=114000){
752 runnumber_offset = 114000;
753 }
else if(runnumber<=196000&&runnumber>=195000){
754 runnumber_offset = 195000;
755 }
else if(runnumber<=170593&&runnumber>=167902){
756 runnumber_offset = 167902;
798 AliAnalysisTaskSE::Terminate();
800 fOutput =
dynamic_cast<TList*
> (GetOutputData(1));
802 AliError(
"fOutput not available");
806 fOutputAll =
dynamic_cast<TList*
> (GetOutputData(3));
808 AliError(
"fOutputAll not available");
860 TString normName=
"NormalizationCounter";
861 AliAnalysisDataContainer *cont = GetOutputSlot(8)->GetContainer();
862 if(cont)normName=(TString)cont->GetName();
878 fEventBuffer[i]=
new TTree(Form(
"EventBuffer_%d",i),
"Temporary buffer for event mixing");
894 AliAODEvent *aodEvent, TClonesArray *mcArray
903 if(fDoEventMixing && fElectronTracks) fElectronTracks->Delete();
904 if(fDoEventMixing && fCascadeTracks1) fCascadeTracks1->Delete();
905 if(fDoEventMixing && fCascadeTracks2) fCascadeTracks2->Delete();
907 Int_t nCascs= aodEvent->GetNumberOfCascades();
908 Int_t nTracks= aodEvent->GetNumberOfTracks();
910 Bool_t seleTrkFlags[nTracks];
912 SelectTrack(aodEvent,nTracks,nSeleTrks,seleTrkFlags,mcArray);
914 Bool_t seleCascFlags[nCascs];
916 SelectCascade(aodEvent,nCascs,nSeleCasc,seleCascFlags,mcArray);
918 Int_t runnumber_offset = 0;
919 Int_t runnumber = aodEvent->GetRunNumber();
920 if(runnumber<=131000&&runnumber>=114000){
921 runnumber_offset = 114000;
922 }
else if(runnumber<=196000&&runnumber>=195000){
923 runnumber_offset = 195000;
924 }
else if(runnumber<=170593&&runnumber>=167902){
925 runnumber_offset = 167902;
927 fHistonElevsRunNumber->Fill(runnumber-runnumber_offset,nSeleTrks);
928 fHistonXivsRunNumber->Fill(runnumber-runnumber_offset,nSeleCasc);
933 for (Int_t icasc = 0; icasc<nCascs; icasc++) {
934 if(!seleCascFlags[icasc])
continue;
935 AliAODcascade *casc = aodEvent->GetCascade(icasc);
938 AliAODTrack *cptrack = (AliAODTrack*)(casc->GetDaughter(0));
939 AliAODTrack *cntrack = (AliAODTrack*)(casc->GetDaughter(1));
940 AliAODTrack *cbtrack = (AliAODTrack*)(casc->GetDecayVertexXi()->GetDaughter(0));
945 for (Int_t itrk = 0; itrk<nTracks; itrk++) {
946 if(!seleTrkFlags[itrk])
continue;
947 AliAODTrack *trk = (AliAODTrack*)aodEvent->GetTrack(itrk);
948 if(trk->GetID()<0)
continue;
950 Int_t cpid = cptrack->GetID();
951 Int_t cnid = cntrack->GetID();
952 Int_t cbid = cbtrack->GetID();
953 Int_t lpid = trk->GetID();
954 if((cpid==lpid)||(cnid==lpid)||(cbid==lpid))
continue;
958 AliAODVertex *secVert = ReconstructSecondaryVertex(casc,trk,aodEvent);
959 if(!secVert)
continue;
966 FillROOTObjects(exobj, casc,trk,mcArray);
968 exobj->GetSecondaryVtx()->RemoveDaughters();
970 delete exobj;exobj=NULL;
976 fEventInfo->SetString(Form(
"Ev%d_esd%d_E%d_C%d",AliAnalysisManager::GetAnalysisManager()->GetNcalls(),((AliAODHeader*)aodEvent->GetHeader())->GetEventNumberESDFile(),fElectronTracks->GetEntries(),fCascadeTracks1->GetEntries()+fCascadeTracks2->GetEntries()));
977 Int_t ind=GetPoolIndex(fVtxZ,fCentrality);
978 if(ind>=0 && ind<fNOfPools){
979 if(fEventBuffer[ind]->GetEntries() >= fNumberOfEventsForMixing){
980 DoEventMixingWithPools(ind);
981 if(fEventBuffer[ind]->GetEntries() >= 20*fNumberOfEventsForMixing){
985 fEventBuffer[ind]->Fill();
998 const char* nameoutput = GetOutputSlot(4)->GetContainer()->GetName();
999 fVariablesTree =
new TTree(nameoutput,
"Candidates variables tree");
1002 TString * fCandidateVariableNames =
new TString[nVar];
1004 fCandidateVariableNames[ 0]=
"Centrality";
1005 fCandidateVariableNames[ 1]=
"InvMassEleXi";
1006 fCandidateVariableNames[ 2]=
"EleXiPt";
1007 fCandidateVariableNames[ 3]=
"EleXiPx";
1008 fCandidateVariableNames[ 4]=
"EleXiPy";
1009 fCandidateVariableNames[ 5]=
"EleXiPz";
1010 fCandidateVariableNames[ 6]=
"ElePx";
1011 fCandidateVariableNames[ 7]=
"ElePy";
1012 fCandidateVariableNames[ 8]=
"ElePz";
1013 fCandidateVariableNames[ 9]=
"XiPx";
1014 fCandidateVariableNames[10]=
"XiPy";
1015 fCandidateVariableNames[11]=
"XiPz";
1016 fCandidateVariableNames[12]=
"XiCharge";
1017 fCandidateVariableNames[13]=
"MassXi";
1018 fCandidateVariableNames[14]=
"MassLambda";
1019 fCandidateVariableNames[15]=
"Eled0";
1020 fCandidateVariableNames[16]=
"Xid0";
1021 fCandidateVariableNames[17]=
"nSigmaTPCele";
1022 fCandidateVariableNames[18]=
"nSigmaTOFele";
1023 fCandidateVariableNames[19]=
"nSigmaTPCpr_etrk";
1024 fCandidateVariableNames[20]=
"nSigmaTOFpr_etrk";
1025 fCandidateVariableNames[21]=
"nSigmaTPCka_etrk";
1026 fCandidateVariableNames[22]=
"nSigmaTOFka_etrk";
1027 fCandidateVariableNames[23]=
"nSigmaTPCv0pr";
1028 fCandidateVariableNames[24]=
"nSigmaTOFv0pr";
1029 fCandidateVariableNames[25]=
"nSigmaTPCv0pi";
1030 fCandidateVariableNames[26]=
"nSigmaTOFv0pi";
1031 fCandidateVariableNames[27]=
"nSigmaTPCbachpi";
1032 fCandidateVariableNames[28]=
"nSigmaTOFbachpi";
1033 fCandidateVariableNames[29]=
"EleCharge";
1034 fCandidateVariableNames[30]=
"Mixing";
1035 fCandidateVariableNames[31]=
"DcaXiDaughters";
1036 fCandidateVariableNames[32]=
"DcaV0Daughters";
1037 fCandidateVariableNames[33]=
"DecayLengthXi";
1038 fCandidateVariableNames[34]=
"CosPointingAngleXi";
1039 fCandidateVariableNames[35]=
"DcaV0toPrimVertex";
1040 fCandidateVariableNames[36]=
"DcaPostoPrimVertex";
1041 fCandidateVariableNames[37]=
"DcaNegtoPrimVertex";
1042 fCandidateVariableNames[38]=
"DcaBachtoPrimVertex";
1043 fCandidateVariableNames[39]=
"DecayLengthV0";
1044 fCandidateVariableNames[40]=
"CosPointingAngleV0";
1046 fCandidateVariableNames[41]=
"mcpdgxic";
1047 fCandidateVariableNames[42]=
"mclabxic";
1048 fCandidateVariableNames[43]=
"mcxicpx";
1049 fCandidateVariableNames[44]=
"mcxicpy";
1050 fCandidateVariableNames[45]=
"mcxicpz";
1051 fCandidateVariableNames[46]=
"mcelepx";
1052 fCandidateVariableNames[47]=
"mcelepy";
1053 fCandidateVariableNames[48]=
"mcelepz";
1054 fCandidateVariableNames[49]=
"mccascpx";
1055 fCandidateVariableNames[50]=
"mccascpy";
1056 fCandidateVariableNames[51]=
"mccascpz";
1058 fCandidateVariableNames[52]=
"mcpdgele";
1059 fCandidateVariableNames[53]=
"mcpdgcasc";
1060 fCandidateVariableNames[54]=
"mcpdgmomele";
1061 fCandidateVariableNames[55]=
"mcpdgmomcasc";
1062 fCandidateVariableNames[56]=
"mcpdggrmomele";
1063 fCandidateVariableNames[57]=
"mcpdggrmomcasc";
1064 fCandidateVariableNames[58]=
"mcngenele";
1065 fCandidateVariableNames[59]=
"mcngencasc";
1067 fCandidateVariableNames[60]=
"nSigmaTPCpi_etrk";
1068 fCandidateVariableNames[61]=
"nSigmaTOFpi_etrk";
1070 fCandidateVariableNames[62]=
"V0PosPx";
1071 fCandidateVariableNames[63]=
"V0PosPy";
1072 fCandidateVariableNames[64]=
"V0PosPz";
1073 fCandidateVariableNames[65]=
"V0NegPx";
1074 fCandidateVariableNames[66]=
"V0NegPy";
1075 fCandidateVariableNames[67]=
"V0NegPz";
1076 fCandidateVariableNames[68]=
"V0VertX";
1077 fCandidateVariableNames[69]=
"V0VertY";
1078 fCandidateVariableNames[70]=
"V0VertZ";
1079 fCandidateVariableNames[71]=
"BachPx";
1080 fCandidateVariableNames[72]=
"BachPy";
1081 fCandidateVariableNames[73]=
"BachPz";
1082 fCandidateVariableNames[74]=
"XiVertX";
1083 fCandidateVariableNames[75]=
"XiVertY";
1084 fCandidateVariableNames[76]=
"XiVertZ";
1085 fCandidateVariableNames[77]=
"PrimVertX";
1086 fCandidateVariableNames[78]=
"PrimVertY";
1087 fCandidateVariableNames[79]=
"PrimVertZ";
1089 fCandidateVariableNames[80]=
"MassOmega";
1091 fCandidateVariableNames[81]=
"EleITSMatch";
1092 fCandidateVariableNames[82]=
"BachITSMatch";
1093 fCandidateVariableNames[83]=
"V0PosITSMatch";
1094 fCandidateVariableNames[84]=
"V0NegITSMatch";
1096 fCandidateVariableNames[85]=
"TPCNclsF";
1097 fCandidateVariableNames[86]=
"TPCNcls";
1098 fCandidateVariableNames[87]=
"TPCNclsS";
1099 fCandidateVariableNames[88]=
"IsXiPeakReagion";
1102 fCandidateVariableNames[89]=
"EvNumber";
1104 for (Int_t ivar=0; ivar<nVar; ivar++) {
1120 for(Int_t i=0;i<90;i++){
1125 AliAODTrack *cptrack = (AliAODTrack*)(casc->GetDaughter(0));
1126 AliAODTrack *cntrack = (AliAODTrack*)(casc->GetDaughter(1));
1127 AliAODTrack *cbtrack = (AliAODTrack*)(casc->GetDecayVertexXi()->GetDaughter(0));
1128 if(cptrack->Charge()<0 && cntrack->Charge()>0){
1129 cptrack = (AliAODTrack*)(casc->GetDaughter(1));
1130 cntrack = (AliAODTrack*)(casc->GetDaughter(0));
1137 Double_t pxe = exobj->PxProng(0);
1138 Double_t pye = exobj->PyProng(0);
1139 Double_t pze = exobj->PzProng(0);
1140 Double_t mome = sqrt(pxe*pxe+pye*pye+pze*pze);
1141 Double_t Ee = sqrt(mome*mome+0.000510998928*0.000510998928);
1142 Double_t pxv = exobj->PxProng(1);
1143 Double_t pyv = exobj->PyProng(1);
1144 Double_t pzv = exobj->PzProng(1);
1145 Double_t momv = sqrt(pxv*pxv+pyv*pyv+pzv*pzv);
1146 Double_t Ev = sqrt(momv*momv+1.32171*1.32171);
1147 Double_t cosoa = (pxe*pxv+pye*pyv+pze*pzv)/mome/momv;
1148 Double_t Esum = Ee + Ev;
1150 Double_t uxe = pxe/mome;
1151 Double_t uye = pye/mome;
1152 Double_t uze = pze/mome;
1153 Double_t lf = -2.*(pxv*uxe+pyv*uye+pzv*uze);
1154 Double_t pxv_flip = pxv + lf * uxe;
1155 Double_t pyv_flip = pyv + lf * uye;
1156 Double_t pzv_flip = pzv + lf * uze;
1157 Double_t pxsum_flip = pxe + pxv_flip;
1158 Double_t pysum_flip = pye + pyv_flip;
1159 Double_t pzsum_flip = pze + pzv_flip;
1160 Double_t mexi_flip = sqrt(Esum*Esum-pxsum_flip*pxsum_flip-pysum_flip*pysum_flip-pzsum_flip*pzsum_flip);
1161 Double_t ptexi_flip = sqrt(pxsum_flip*pxsum_flip+pysum_flip*pysum_flip);
1163 Double_t posVtx[3] = {0.,0.,0.};
1164 fVtx1->GetXYZ(posVtx);
1168 UInt_t pdgdg[2]={11,3312};
1182 if(casc->ChargeXi()<0)
1189 Double_t nSigmaTPCele = -9999.;
1190 Double_t nSigmaTOFele = -9999.;
1212 Double_t nSigmaTPCv0pr=-9999.;
1213 Double_t nSigmaTOFv0pr=-9999.;
1214 Double_t nSigmaTPCv0pi=-9999.;
1215 Double_t nSigmaTOFv0pi=-9999.;
1216 Double_t nSigmaTPCbachpi=-9999.;
1217 Double_t nSigmaTOFbachpi=-9999.;
1220 if(casc->ChargeXi()>0){
1255 AliAODMCParticle *mcxic = 0;
1256 AliAODMCParticle *mcele = 0;
1257 AliAODMCParticle *mccasc = 0;
1259 Int_t mcpdgele_array[100];
1260 Int_t mcpdgcasc_array[100];
1261 Int_t mclabelele_array[100];
1262 Int_t mclabelcasc_array[100];
1263 Int_t mcngen_ele = -9999;
1264 Int_t mcngen_casc = -9999;
1268 mclabxic =
MatchToMC(exobj,mcArray,mcpdgele_array, mcpdgcasc_array,mclabelele_array,mclabelcasc_array,mcngen_ele,mcngen_casc);
1271 mcxic = (AliAODMCParticle*) mcArray->At(mclabxic);
1272 if(mclabelele_array[0]>=0)
1273 mcele = (AliAODMCParticle*) mcArray->At(mclabelele_array[0]);
1274 if(mclabelcasc_array[0]>=0)
1275 mccasc = (AliAODMCParticle*) mcArray->At(mclabelcasc_array[0]);
1340 cont[0] = exobj->InvMass(2,pdgdg);
1341 cont[1] = exobj->Pt();
1342 cont[2] = exobj->Getd0Prong(0)*trk->Charge();
1346 Double_t cont_flip[4];
1347 cont_flip[0] = mexi_flip;
1348 cont_flip[1] = ptexi_flip;
1353 cont2[0] = exobj->InvMass(2,pdgdg);
1354 cont2[1] = trk->Pt();
1357 Double_t cont_eleptvseta[3];
1358 cont_eleptvseta[0] = trk->Pt();
1359 cont_eleptvseta[1] = trk->Eta();
1362 Double_t cont_eleptvsxipt[3];
1363 cont_eleptvsxipt[0] = trk->Pt();
1364 cont_eleptvsxipt[1] = sqrt(casc->MomXiX()*casc->MomXiX()+casc->MomXiY()*casc->MomXiY());
1367 Double_t cont_eleptvsd0[3];
1368 cont_eleptvsd0[0] = trk->Pt();
1369 cont_eleptvsd0[1] = exobj->Getd0Prong(0)*trk->Charge();
1372 Double_t exobj_mass = exobj->InvMass(2,pdgdg);
1373 Double_t exobj_px = exobj->Px();
1374 Double_t exobj_py = exobj->Py();
1375 Double_t exobj_pz = exobj->Pz();
1376 Double_t exobj_E = sqrt(exobj_mass*exobj_mass+exobj_px*exobj_px+exobj_py*exobj_py+exobj_pz*exobj_pz);
1377 Double_t exobj_rap = 0.5*log((exobj_E+exobj_pz)/(exobj_E-exobj_pz));
1381 if(trk->Charge()*casc->ChargeXi()<0){
1394 for(Int_t ih=0;ih<23;ih++){
1395 Double_t cont_eleptvscutvars[3];
1396 cont_eleptvscutvars[0] = exobj->Pt();
1400 cont_eleptvscutvars[1] = trk->GetTPCNcls();
1402 cont_eleptvscutvars[1] = trk->GetTPCsignalN();
1404 cont_eleptvscutvars[1] = nSigmaTPCele;
1406 cont_eleptvscutvars[1] = nSigmaTOFele;
1408 cont_eleptvscutvars[1] = trk->Eta();
1410 cont_eleptvscutvars[1] = trk->GetITSNcls();
1412 if(casc->ChargeXi()<0)
1413 cont_eleptvscutvars[1] = casc->MassLambda();
1415 cont_eleptvscutvars[1] = casc->MassAntiLambda();
1417 cont_eleptvscutvars[1] = casc->MassXi();
1420 lPosV0[0] = casc->DecayVertexV0X();
1421 lPosV0[1] = casc->DecayVertexV0Y();
1422 lPosV0[2] = casc->DecayVertexV0Z();
1423 cont_eleptvscutvars[1] = TMath::Sqrt(lPosV0[0]*lPosV0[0]+lPosV0[1]*lPosV0[1]);
1426 lPosXi[0] = casc->DecayVertexXiX();
1427 lPosXi[1] = casc->DecayVertexXiY();
1428 lPosXi[2] = casc->DecayVertexXiZ();
1429 cont_eleptvscutvars[1] = TMath::Sqrt(lPosXi[0]*lPosXi[0]+lPosXi[1]*lPosXi[1]);
1431 cont_eleptvscutvars[1] = casc->DcaV0Daughters();
1433 cont_eleptvscutvars[1] = casc->DcaXiDaughters();
1435 cont_eleptvscutvars[1] = casc->DcaBachToPrimVertex();
1437 if(casc->ChargeXi()<0.)
1438 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1440 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1442 if(casc->ChargeXi()>0.)
1443 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1445 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1447 cont_eleptvscutvars[1] = casc->CosPointingAngle(casc->GetDecayVertexXi());
1449 cont_eleptvscutvars[1] = casc->CosPointingAngleXi(posVtx[0],posVtx[1],posVtx[2]);
1451 cont_eleptvscutvars[1] = nSigmaTPCv0pr;
1453 cont_eleptvscutvars[1] = nSigmaTPCv0pi;
1455 cont_eleptvscutvars[1] = nSigmaTPCbachpi;
1457 cont_eleptvscutvars[1] = casc->Eta();
1459 cont_eleptvscutvars[1] = 0.5*TMath::Log((sqrt(casc->Ptot2Xi())+casc->MomXiZ())/(sqrt(casc->Ptot2Xi())-casc->MomXiZ()));
1461 Double_t xipx = exobj->PxProng(1);
1462 Double_t xipy = exobj->PyProng(1);
1463 Double_t xipz = exobj->PzProng(1);
1464 Double_t epx = exobj->PxProng(0);
1465 Double_t epy = exobj->PyProng(0);
1466 Double_t epz = exobj->PzProng(0);
1467 cont_eleptvscutvars[1] = acos((xipx*epx+xipy*epy+xipz*epz)/sqrt(xipx*xipx+xipy*xipy+xipz*xipz)/sqrt(epx*epx+epy*epy+epz*epz));
1469 cont_eleptvscutvars[1] = -9999.;
1477 Int_t pdgcode = mcxic->GetPdgCode();
1478 cont2[1] = mcele->Pt();
1479 if(abs(pdgcode)==4132 && abs(mcpdgele_array[1])==4132 && abs(mcpdgcasc_array[1])==4132){
1480 Int_t labmotherxic = mcxic->GetMother();
1481 Bool_t isbottomfd = kFALSE;
1484 AliAODMCParticle *motherxic = (AliAODMCParticle*)mcArray->At(labmotherxic);
1485 Int_t pdgmotherxic = motherxic->GetPdgCode();
1486 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){
1515 Double_t cont_xic[3];
1516 cont_xic[0] = mcxic->Pt();
1517 cont_xic[1] = mcxic->Y();
1523 Double_t cont_mcele[3];
1524 cont_mcele[0] = mcele->Pt();
1525 cont_mcele[1] = mcele->Eta();
1534 Double_t cont_eleptvsxiptvsxicpt[4];
1535 cont_eleptvsxiptvsxicpt[0] = cont_eleptvsxipt[0];
1536 cont_eleptvsxiptvsxicpt[1] = cont_eleptvsxipt[1];
1537 cont_eleptvsxiptvsxicpt[2] = mcxic->Pt();
1538 cont_eleptvsxiptvsxicpt[3] = cont_eleptvsxipt[2];
1547 for(Int_t ih=0;ih<23;ih++){
1548 Double_t cont_eleptvscutvars[3];
1549 cont_eleptvscutvars[0] = exobj->Pt();
1553 cont_eleptvscutvars[1] = trk->GetTPCNcls();
1555 cont_eleptvscutvars[1] = trk->GetTPCsignalN();
1557 cont_eleptvscutvars[1] = nSigmaTPCele;
1559 cont_eleptvscutvars[1] = nSigmaTOFele;
1561 cont_eleptvscutvars[1] = trk->Eta();
1563 cont_eleptvscutvars[1] = trk->GetITSNcls();
1565 if(casc->ChargeXi()<0)
1566 cont_eleptvscutvars[1] = casc->MassLambda();
1568 cont_eleptvscutvars[1] = casc->MassAntiLambda();
1570 cont_eleptvscutvars[1] = casc->MassXi();
1573 lPosV0[0] = casc->DecayVertexV0X();
1574 lPosV0[1] = casc->DecayVertexV0Y();
1575 lPosV0[2] = casc->DecayVertexV0Z();
1576 cont_eleptvscutvars[1] = TMath::Sqrt(lPosV0[0]*lPosV0[0]+lPosV0[1]*lPosV0[1]);
1579 lPosXi[0] = casc->DecayVertexXiX();
1580 lPosXi[1] = casc->DecayVertexXiY();
1581 lPosXi[2] = casc->DecayVertexXiZ();
1582 cont_eleptvscutvars[1] = TMath::Sqrt(lPosXi[0]*lPosXi[0]+lPosXi[1]*lPosXi[1]);
1584 cont_eleptvscutvars[1] = casc->DcaV0Daughters();
1586 cont_eleptvscutvars[1] = casc->DcaXiDaughters();
1588 cont_eleptvscutvars[1] = casc->DcaBachToPrimVertex();
1590 if(casc->ChargeXi()<0.)
1591 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1593 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1595 if(casc->ChargeXi()>0.)
1596 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1598 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1600 cont_eleptvscutvars[1] = casc->CosPointingAngle(casc->GetDecayVertexXi());
1602 cont_eleptvscutvars[1] = casc->CosPointingAngleXi(posVtx[0],posVtx[1],posVtx[2]);
1604 cont_eleptvscutvars[1] = nSigmaTPCv0pr;
1606 cont_eleptvscutvars[1] = nSigmaTPCv0pi;
1608 cont_eleptvscutvars[1] = nSigmaTPCbachpi;
1610 cont_eleptvscutvars[1] = casc->Eta();
1612 cont_eleptvscutvars[1] = 0.5*TMath::Log((sqrt(casc->Ptot2Xi())+casc->MomXiZ())/(sqrt(casc->Ptot2Xi())-casc->MomXiZ()));
1614 Double_t xipx = exobj->PxProng(1);
1615 Double_t xipy = exobj->PyProng(1);
1616 Double_t xipz = exobj->PzProng(1);
1617 Double_t epx = exobj->PxProng(0);
1618 Double_t epy = exobj->PyProng(0);
1619 Double_t epz = exobj->PzProng(0);
1620 cont_eleptvscutvars[1] = acos((xipx*epx+xipy*epy+xipz*epz)/sqrt(xipx*xipx+xipy*xipy+xipz*xipz)/sqrt(epx*epx+epy*epy+epz*epz));
1622 cont_eleptvscutvars[1] = -9999.;
1645 for(Int_t ih=0;ih<23;ih++){
1646 Double_t cont_eleptvscutvars[3];
1647 cont_eleptvscutvars[0] = exobj->Pt();
1651 cont_eleptvscutvars[1] = trk->GetTPCNcls();
1653 cont_eleptvscutvars[1] = trk->GetTPCsignalN();
1655 cont_eleptvscutvars[1] = nSigmaTPCele;
1657 cont_eleptvscutvars[1] = nSigmaTOFele;
1659 cont_eleptvscutvars[1] = trk->Eta();
1661 cont_eleptvscutvars[1] = trk->GetITSNcls();
1663 if(casc->ChargeXi()<0)
1664 cont_eleptvscutvars[1] = casc->MassLambda();
1666 cont_eleptvscutvars[1] = casc->MassAntiLambda();
1668 cont_eleptvscutvars[1] = casc->MassXi();
1671 lPosV0[0] = casc->DecayVertexV0X();
1672 lPosV0[1] = casc->DecayVertexV0Y();
1673 lPosV0[2] = casc->DecayVertexV0Z();
1674 cont_eleptvscutvars[1] = TMath::Sqrt(lPosV0[0]*lPosV0[0]+lPosV0[1]*lPosV0[1]);
1677 lPosXi[0] = casc->DecayVertexXiX();
1678 lPosXi[1] = casc->DecayVertexXiY();
1679 lPosXi[2] = casc->DecayVertexXiZ();
1680 cont_eleptvscutvars[1] = TMath::Sqrt(lPosXi[0]*lPosXi[0]+lPosXi[1]*lPosXi[1]);
1682 cont_eleptvscutvars[1] = casc->DcaV0Daughters();
1684 cont_eleptvscutvars[1] = casc->DcaXiDaughters();
1686 cont_eleptvscutvars[1] = casc->DcaBachToPrimVertex();
1688 if(casc->ChargeXi()<0.)
1689 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1691 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1693 if(casc->ChargeXi()>0.)
1694 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1696 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1698 cont_eleptvscutvars[1] = casc->CosPointingAngle(casc->GetDecayVertexXi());
1700 cont_eleptvscutvars[1] = casc->CosPointingAngleXi(posVtx[0],posVtx[1],posVtx[2]);
1702 cont_eleptvscutvars[1] = nSigmaTPCv0pr;
1704 cont_eleptvscutvars[1] = nSigmaTPCv0pi;
1706 cont_eleptvscutvars[1] = nSigmaTPCbachpi;
1708 cont_eleptvscutvars[1] = casc->Eta();
1710 cont_eleptvscutvars[1] = 0.5*TMath::Log((sqrt(casc->Ptot2Xi())+casc->MomXiZ())/(sqrt(casc->Ptot2Xi())-casc->MomXiZ()));
1712 Double_t xipx = exobj->PxProng(1);
1713 Double_t xipy = exobj->PyProng(1);
1714 Double_t xipz = exobj->PzProng(1);
1715 Double_t epx = exobj->PxProng(0);
1716 Double_t epy = exobj->PyProng(0);
1717 Double_t epz = exobj->PzProng(0);
1718 cont_eleptvscutvars[1] = acos((xipx*epx+xipy*epy+xipz*epz)/sqrt(xipx*xipx+xipy*xipy+xipz*xipz)/sqrt(epx*epx+epy*epy+epz*epz));
1720 cont_eleptvscutvars[1] = -9999.;
1731 if( mexi_flip <10. && cosoa < 0. && fAnalCuts->IsPeakRegion(casc))
1733 if(trk->Charge()*casc->ChargeXi()<0){
1746 if(trk->Charge()*casc->ChargeXi()<0){
1764 if( mexi_flip< 10. && cosoa < 0. && fAnalCuts->IsSideBand(casc))
1766 if(trk->Charge()*casc->ChargeXi()<0){
1790 for(Int_t i=0;i<90;i++){
1794 Double_t pxe = trke->Px();
1795 Double_t pye = trke->Py();
1796 Double_t pze = trke->Pz();
1797 Double_t mome = sqrt(pxe*pxe+pye*pye+pze*pze);
1798 Double_t Ee = sqrt(mome*mome+0.000510998928*0.000510998928);
1800 Double_t pxv = casc->Px();
1801 Double_t pyv = casc->Py();
1802 Double_t pzv = casc->Pz();
1803 Double_t momv = sqrt(pxv*pxv+pyv*pyv+pzv*pzv);
1804 Double_t Ev = sqrt(momv*momv+1.32171*1.32171);
1806 Double_t cosoa = (pxe*pxv+pye*pyv+pze*pzv)/mome/momv;
1808 Double_t pxsum = pxe + pxv;
1809 Double_t pysum = pye + pyv;
1810 Double_t pzsum = pze + pzv;
1811 Double_t Esum = Ee + Ev;
1812 Double_t mexi = sqrt(Esum*Esum-pxsum*pxsum-pysum*pysum-pzsum*pzsum);
1814 Double_t uxe = pxe/mome;
1815 Double_t uye = pye/mome;
1816 Double_t uze = pze/mome;
1817 Double_t lf = -2.*(pxv*uxe+pyv*uye+pzv*uze);
1818 Double_t pxv_flip = pxv + lf * uxe;
1819 Double_t pyv_flip = pyv + lf * uye;
1820 Double_t pzv_flip = pzv + lf * uze;
1821 Double_t pxsum_flip = pxe + pxv_flip;
1822 Double_t pysum_flip = pye + pyv_flip;
1823 Double_t pzsum_flip = pze + pzv_flip;
1824 Double_t mexi_flip = sqrt(Esum*Esum-pxsum_flip*pxsum_flip-pysum_flip*pysum_flip-pzsum_flip*pzsum_flip);
1825 Double_t ptexi_flip = sqrt(pxsum_flip*pxsum_flip+pysum_flip*pysum_flip);
1827 Double_t posVtx[3] = {0.,0.,0.};
1828 fVtx1->GetXYZ(posVtx);
1831 UInt_t pdgdg[2]={11,3312};
1857 cont[1] = sqrt(pxsum*pxsum+pysum*pysum);
1861 Double_t cont_flip[4];
1862 cont_flip[0] = mexi_flip;
1863 cont_flip[1] = ptexi_flip;
1869 cont2[1] = sqrt(pxe*pxe+pye*pye);
1872 Double_t cont_eleptvseta[3];
1873 cont_eleptvseta[0] = trke->Pt();
1874 cont_eleptvseta[1] = trke->Eta();
1877 Double_t cont_eleptvsxipt[3];
1878 cont_eleptvsxipt[0] = trke->Pt();
1879 cont_eleptvsxipt[1] = casc->Pt();
1882 Double_t cont_eleptvsd0[3];
1883 cont_eleptvsd0[0] = trke->Pt();
1884 cont_eleptvsd0[1] = 0.;
1889 if(((
int)trke->T())*chargexi<0){
1919 if(mexi_flip < 10. && cosoa<0. && fAnalCuts->IsPeakRegion(casc))
1921 if(((
int)trke->T())*chargexi<0){
1942 const char* nameoutput = GetOutputSlot(5)->GetContainer()->GetName();
1946 TString * fCandidateVariableNames =
new TString[nVar];
1948 fCandidateVariableNames[ 0]=
"ElePx";
1949 fCandidateVariableNames[ 1]=
"ElePy";
1950 fCandidateVariableNames[ 2]=
"ElePz";
1951 fCandidateVariableNames[ 3]=
"TPCChi2overNDF";
1952 fCandidateVariableNames[ 4]=
"ITSNcls";
1953 fCandidateVariableNames[ 5]=
"TPCNcls";
1954 fCandidateVariableNames[ 6]=
"TPCNclsPID";
1955 fCandidateVariableNames[ 7]=
"TPCNclsRatio";
1956 fCandidateVariableNames[ 8]=
"d0R";
1957 fCandidateVariableNames[ 9]=
"d0Z";
1958 fCandidateVariableNames[10]=
"ITSClusterMap";
1959 fCandidateVariableNames[11]=
"nSigmaTPCele";
1960 fCandidateVariableNames[12]=
"nSigmaTOFele";
1961 fCandidateVariableNames[13]=
"nSigmaTPCpi";
1962 fCandidateVariableNames[14]=
"nSigmaTPCka";
1963 fCandidateVariableNames[15]=
"nSigmaTPCpr";
1964 fCandidateVariableNames[16]=
"EvNumber";
1965 fCandidateVariableNames[17]=
"EleCharge";
1966 fCandidateVariableNames[18]=
"ElePdgCode";
1967 fCandidateVariableNames[19]=
"EleMotherPdgCode";
1968 fCandidateVariableNames[20]=
"mcelepx";
1969 fCandidateVariableNames[21]=
"mcelepy";
1970 fCandidateVariableNames[22]=
"mcelepz";
1971 fCandidateVariableNames[23]=
"Centrality";
1972 fCandidateVariableNames[24]=
"PrimVertZ";
1973 fCandidateVariableNames[25]=
"RunNumber";
1975 for (Int_t ivar=0; ivar<nVar; ivar++) {
1994 fElectronTracks->AddLast(
new TLorentzVector(trk->Px(),trk->Py(),trk->Pz(),trk->Charge()));
1998 Int_t pdgEle = -9999;
1999 Int_t pdgEleMother = -9999;
2000 Float_t mcepx = -9999;
2001 Float_t mcepy = -9999;
2002 Float_t mcepz = -9999;
2005 Int_t labEle = trk->GetLabel();
2006 if(labEle<0)
return;
2007 AliAODMCParticle *mcetrk = (AliAODMCParticle*)mcArray->At(labEle);
2009 pdgEle = mcetrk->GetPdgCode();
2010 if(abs(pdgEle)!=11)
return;
2012 Bool_t hfe_flag = kFALSE;
2013 Bool_t gamma_flag = kFALSE;
2014 Int_t labemother = mcetrk->GetMother();
2016 AliAODMCParticle *motherele = (AliAODMCParticle*)mcArray->At(labemother);
2017 if(!motherele)
return;
2018 pdgEleMother = motherele->GetPdgCode();
2019 if(abs(pdgEleMother)>4000&&abs(pdgEleMother)<4400){
2022 if(abs(pdgEleMother)==22){
2031 if(!hfe_flag)
return;
2032 mcepx = mcetrk->Px();
2033 mcepy = mcetrk->Py();
2034 mcepz = mcetrk->Pz();
2040 for(Int_t i=0;i<26;i++){
2051 if(trk->GetTPCNclsF()>0)
2054 Double_t d0z0[2],covd0z0[3];
2055 trk->PropagateToDCA(
fVtx1,
fBzkG,kVeryBig,d0z0,covd0z0);
2059 Int_t itsmap = trk->GetITSClusterMap();
2062 Bool_t spdfirst = (itsmap & bit1) == bit1;
2063 Bool_t spdsecond = (itsmap & bit2) == bit2;
2101 const char* nameoutput = GetOutputSlot(6)->GetContainer()->GetName();
2105 TString * fCandidateVariableNames =
new TString[nVar];
2107 fCandidateVariableNames[ 0]=
"Centrality";
2108 fCandidateVariableNames[ 1]=
"InvMassXi";
2109 fCandidateVariableNames[ 2]=
"XiPx";
2110 fCandidateVariableNames[ 3]=
"XiPy";
2111 fCandidateVariableNames[ 4]=
"XiPz";
2112 fCandidateVariableNames[ 5]=
"InvMassLambda";
2113 fCandidateVariableNames[ 6]=
"DcaXiDaughters";
2114 fCandidateVariableNames[ 7]=
"DcaV0Daughters";
2115 fCandidateVariableNames[ 8]=
"DecayLengthXi";
2116 fCandidateVariableNames[ 9]=
"CosPointingAngleXi";
2117 fCandidateVariableNames[10]=
"DcaV0toPrimVertex";
2118 fCandidateVariableNames[11]=
"DcaPostoPrimVertex";
2119 fCandidateVariableNames[12]=
"DcaNegtoPrimVertex";
2120 fCandidateVariableNames[13]=
"DcaBachtoPrimVertex";
2121 fCandidateVariableNames[14]=
"DecayLengthV0";
2122 fCandidateVariableNames[15]=
"CosPointingAngleV0";
2123 fCandidateVariableNames[16]=
"XiCharge";
2124 fCandidateVariableNames[17]=
"XiPdgCode";
2125 fCandidateVariableNames[18]=
"XiMotherPdgCode";
2126 fCandidateVariableNames[19]=
"mcxipx";
2127 fCandidateVariableNames[20]=
"mcxipy";
2128 fCandidateVariableNames[21]=
"mcxipz";
2129 fCandidateVariableNames[22]=
"labcasc";
2130 fCandidateVariableNames[23]=
"RunNumber";
2131 fCandidateVariableNames[24]=
"PrimVertZ";
2132 fCandidateVariableNames[25]=
"EvNumber";
2134 for (Int_t ivar=0; ivar<nVar; ivar++) {
2148 fHistoXiMassvsPt->Fill(casc->MassXi(),sqrt(casc->MomXiX()*casc->MomXiX()+casc->MomXiY()*casc->MomXiY()));
2149 fHistoOmegaMassvsPt->Fill(casc->MassOmega(),sqrt(casc->MomXiX()*casc->MomXiX()+casc->MomXiY()*casc->MomXiY()));
2150 Double_t momxix = casc->MomXiX();
2151 Double_t momxiy = casc->MomXiY();
2152 Double_t phi_alice = atan2(momxiy,momxix);
2153 if(phi_alice<0.) phi_alice += 2 * M_PI;
2154 fHistoXiQovPtvsPhi->Fill(phi_alice,(Double_t)casc->ChargeXi()/sqrt(momxix*momxix+momxiy*momxiy));
2156 Double_t mlamPDG = TDatabasePDG::Instance()->GetParticle(3122)->Mass();
2157 Double_t posVtx[3] = {0.,0.,0.};
2158 fVtx1->GetXYZ(posVtx);
2159 Double_t ptotlam = TMath::Sqrt(pow(casc->Px(),2)+pow(casc->Py(),2)+pow(casc->Pz(),2));
2160 Double_t v0propdl = sqrt(pow(casc->DecayVertexV0X()-posVtx[0],2)+pow(casc->DecayVertexV0Y()-posVtx[1],2)+pow(casc->DecayVertexV0Z()-posVtx[2],2))*mlamPDG/ptotlam;
2168 Int_t xipdgcode = -9999;
2169 Int_t ximotherpdgcode = -9999;
2170 Float_t mcxipx = -9999.;
2171 Float_t mcxipy = -9999.;
2172 Float_t mcxipz = -9999.;
2173 Int_t labcasc = -9999.;
2175 Int_t pdgDgcasc[2]={211,3122};
2176 Int_t pdgDgv0[2]={2212,211};
2178 if(labcasc<0)
return;
2180 fHistoXiMassvsPtMCS->Fill(casc->MassXi(),sqrt(casc->MomXiX()*casc->MomXiX()+casc->MomXiY()*casc->MomXiY()));
2182 AliAODMCParticle *mccasctrk = (AliAODMCParticle*)mcArray->At(labcasc);
2183 if(!mccasctrk)
return;
2187 Bool_t hfxi_flag = kFALSE;
2188 xipdgcode = mccasctrk->GetPdgCode();
2189 Int_t labcascmother = mccasctrk->GetMother();
2190 if(labcascmother>=0){
2191 AliAODMCParticle *mothercasc = (AliAODMCParticle*)mcArray->At(labcascmother);
2193 ximotherpdgcode = mothercasc->GetPdgCode();
2194 if(abs(ximotherpdgcode)>4000&&abs(ximotherpdgcode)<4400){
2199 if(!hfxi_flag)
return;
2200 mcxipx = mccasctrk->Px();
2201 mcxipy = mccasctrk->Py();
2202 mcxipz = mccasctrk->Pz();
2206 Double_t xyz[3], pxpypz[3], cv[21]; Short_t sign;
2207 xyz[0]=casc->DecayVertexXiX();
2208 xyz[1]=casc->DecayVertexXiY();
2209 xyz[2]=casc->DecayVertexXiZ();
2210 pxpypz[0]=casc->MomXiX();
2211 pxpypz[1]=casc->MomXiY();
2212 pxpypz[2]=casc->MomXiZ();
2213 casc->GetCovarianceXYZPxPyPz(cv);
2214 sign=casc->ChargeXi();
2215 AliExternalTrackParam *trackCasc =
new AliExternalTrackParam(xyz,pxpypz,cv,sign);
2216 trackCasc->PropagateToDCA(
fVtx1,
fBzkG,kVeryBig);
2217 Double_t momcasc_new[3]={-9999,-9999,-9999.};
2218 trackCasc->GetPxPyPz(momcasc_new);
2221 TLorentzVector *lv =
new TLorentzVector();
2222 lv->SetXYZM(momcasc_new[0],momcasc_new[1],momcasc_new[2],casc->MassXi());
2223 if(casc->ChargeXi()>0)
2231 for(Int_t i=0;i<26;i++){
2240 if(casc->ChargeXi()<0)
2276 const char* nameoutput = GetOutputSlot(7)->GetContainer()->GetName();
2280 TString * fCandidateVariableNames =
new TString[nVar];
2282 fCandidateVariableNames[ 0]=
"Centrality";
2283 fCandidateVariableNames[ 1]=
"DecayType";
2284 fCandidateVariableNames[ 2]=
"XicPx";
2285 fCandidateVariableNames[ 3]=
"XicPy";
2286 fCandidateVariableNames[ 4]=
"XicPz";
2287 fCandidateVariableNames[ 5]=
"ElePx";
2288 fCandidateVariableNames[ 6]=
"ElePy";
2289 fCandidateVariableNames[ 7]=
"ElePz";
2290 fCandidateVariableNames[ 8]=
"CascPx";
2291 fCandidateVariableNames[ 9]=
"CascPy";
2292 fCandidateVariableNames[10]=
"CascPz";
2293 fCandidateVariableNames[11]=
"PdgCode";
2294 fCandidateVariableNames[12]=
"ElePdgCode";
2295 fCandidateVariableNames[13]=
"CascPdgCode";
2296 fCandidateVariableNames[14]=
"RunNumber";
2297 fCandidateVariableNames[15]=
"EvNumber";
2299 for (Int_t ivar=0; ivar<nVar; ivar++) {
2311 if(!mcepart)
return;
2312 if(!mccascpart)
return;
2314 for(Int_t i=0;i<14;i++){
2335 Double_t epx = mcepart->Px();
2336 Double_t epy = mcepart->Py();
2337 Double_t epz = mcepart->Pz();
2338 Double_t eE = sqrt(epx*epx+epy*epy+epz*epz+0.000511*0.000511);
2339 Double_t cascpx = mccascpart->Px();
2340 Double_t cascpy = mccascpart->Py();
2341 Double_t cascpz = mccascpart->Pz();
2342 Double_t cascE = sqrt(cascpx*cascpx+cascpy*cascpy+cascpz*cascpz+1.32171*1.32171);
2344 Double_t InvMassEleXi = sqrt(pow(eE+cascE,2)-pow(epx+cascpx,2)-pow(epy+cascpy,2)-pow(epz+cascpz,2));
2347 cont[0] = InvMassEleXi;
2348 cont[1] = mcpart->Pt();
2352 cont2[0] = InvMassEleXi;
2353 cont2[1] = mcepart->Pt();
2355 Double_t cont_eleptvseta[3];
2356 cont_eleptvseta[0] = mcepart->Pt();
2357 cont_eleptvseta[1] = mcepart->Eta();
2359 Double_t cont_eleptvsxipt[3];
2360 cont_eleptvsxipt[0] = mcepart->Pt();
2361 cont_eleptvsxipt[1] = mccascpart->Pt();
2363 Double_t cont_eleptvsxiptvsxicpt[4];
2364 cont_eleptvsxiptvsxicpt[0] = mcepart->Pt();
2365 cont_eleptvsxiptvsxicpt[1] = mccascpart->Pt();
2366 cont_eleptvsxiptvsxicpt[2] = mcpart->Pt();
2370 contmc[0] = mcpart->Pt();
2371 contmc[1] = mcpart->Y();
2373 Double_t contmcele[3];
2374 contmcele[0] = mcepart->Pt();
2375 contmcele[1] = mcepart->Eta();
2381 esdcuts->GetEtaRange(etamin,etamax);
2391 if(fabs(mcepart->Eta())<etamax){
2395 if(InvMassEleXi<2.5){
2401 if(fabs(mcpart->Y())<0.7){
2402 if(InvMassEleXi<2.5){
2419 const char* nameoutput = GetOutputSlot(9)->GetContainer()->GetName();
2423 TString * fCandidateVariableNames =
new TString[nVar];
2425 fCandidateVariableNames[ 0]=
"Centrality";
2426 fCandidateVariableNames[ 1]=
"ElePx";
2427 fCandidateVariableNames[ 2]=
"ElePy";
2428 fCandidateVariableNames[ 3]=
"ElePz";
2429 fCandidateVariableNames[ 4]=
"ElePdgCode";
2430 fCandidateVariableNames[ 5]=
"EleMotherPdgCode";
2431 fCandidateVariableNames[ 6]=
"RunNumber";
2432 fCandidateVariableNames[ 7]=
"EvNumber";
2434 for (Int_t ivar=0; ivar<nVar; ivar++) {
2445 if(!mcepart)
return;
2448 Bool_t hfe_flag = kFALSE;
2449 Int_t labemother = mcepart->GetMother();
2450 Int_t pdgmotherele = -9999;
2452 AliAODMCParticle *motherele = (AliAODMCParticle*)mcArray->At(labemother);
2453 pdgmotherele = motherele->GetPdgCode();
2454 if(abs(pdgmotherele)>4000&&abs(pdgmotherele)<4400){
2458 if(!hfe_flag)
return;
2461 contmc[0] = mcepart->Pt();
2462 contmc[1] = mcepart->Eta();
2466 for(Int_t i=0;i<8;i++){
2490 const char* nameoutput = GetOutputSlot(10)->GetContainer()->GetName();
2494 TString * fCandidateVariableNames =
new TString[nVar];
2496 fCandidateVariableNames[ 0]=
"Centrality";
2497 fCandidateVariableNames[ 1]=
"CascPx";
2498 fCandidateVariableNames[ 2]=
"CascPy";
2499 fCandidateVariableNames[ 3]=
"CascPz";
2500 fCandidateVariableNames[ 4]=
"CascPdgCode";
2501 fCandidateVariableNames[ 5]=
"CascMotherPdgCode";
2502 fCandidateVariableNames[ 6]=
"RunNumber";
2503 fCandidateVariableNames[ 7]=
"EvNumber";
2505 for (Int_t ivar=0; ivar<nVar; ivar++) {
2516 if(!mccascpart)
return;
2518 for(Int_t i=0;i<8;i++){
2522 Bool_t hfxi_flag = kFALSE;
2523 Int_t labcascmother = mccascpart->GetMother();
2524 Int_t pdgmothercasc = -9999;
2525 if(labcascmother>=0){
2526 AliAODMCParticle *mothercasc = (AliAODMCParticle*)mcArray->At(labcascmother);
2528 pdgmothercasc = mothercasc->GetPdgCode();
2529 if(abs(pdgmothercasc)>4000&&abs(pdgmothercasc)<4400){
2534 if(!hfxi_flag)
return;
2537 contmc[0] = mccascpart->Pt();
2538 contmc[1] = mccascpart->Eta();
2562 fCEvents =
new TH1F(
"fCEvents",
"conter",18,-0.5,17.5);
2564 fCEvents->GetXaxis()->SetBinLabel(1,
"X1");
2565 fCEvents->GetXaxis()->SetBinLabel(2,
"Analyzed events");
2566 fCEvents->GetXaxis()->SetBinLabel(3,
"AliAODVertex exists");
2567 fCEvents->GetXaxis()->SetBinLabel(4,
"TriggerOK");
2568 fCEvents->GetXaxis()->SetBinLabel(5,
"IsEventSelected");
2569 fCEvents->GetXaxis()->SetBinLabel(6,
"CascadesHF exists");
2570 fCEvents->GetXaxis()->SetBinLabel(7,
"MCarray exists");
2571 fCEvents->GetXaxis()->SetBinLabel(8,
"MCheader exists");
2572 fCEvents->GetXaxis()->SetBinLabel(9,
"triggerClass!=CINT1");
2573 fCEvents->GetXaxis()->SetBinLabel(10,
"triggerMask!=kAnyINT");
2574 fCEvents->GetXaxis()->SetBinLabel(11,
"triggerMask!=kAny");
2575 fCEvents->GetXaxis()->SetBinLabel(12,
"vtxTitle.Contains(Z)");
2576 fCEvents->GetXaxis()->SetBinLabel(13,
"vtxTitle.Contains(3D)");
2577 fCEvents->GetXaxis()->SetBinLabel(14,
"vtxTitle.Doesn'tContain(Z-3D)");
2579 fCEvents->GetXaxis()->SetBinLabel(16,
"!IsEventSelected");
2580 fCEvents->GetXaxis()->SetBinLabel(17,
"triggerMask!=kAnyINT || triggerClass!=CINT1");
2583 fCEvents->GetYaxis()->SetTitle(
"counts");
2585 fHTrigger =
new TH1F(
"fHTrigger",
"counter",18,-0.5,17.5);
2587 fHTrigger->GetXaxis()->SetBinLabel(1,
"X1");
2588 fHTrigger->GetXaxis()->SetBinLabel(2,
"kMB");
2589 fHTrigger->GetXaxis()->SetBinLabel(3,
"kSemiCentral");
2590 fHTrigger->GetXaxis()->SetBinLabel(4,
"kCentral");
2591 fHTrigger->GetXaxis()->SetBinLabel(5,
"kINT7");
2592 fHTrigger->GetXaxis()->SetBinLabel(6,
"kEMC7");
2594 fHTrigger->GetXaxis()->SetBinLabel(8,
"kMB|kSemiCentral|kCentral");
2595 fHTrigger->GetXaxis()->SetBinLabel(9,
"kINT7|kEMC7");
2596 fHTrigger->GetXaxis()->SetBinLabel(11,
"kMB&kSemiCentral");
2597 fHTrigger->GetXaxis()->SetBinLabel(12,
"kMB&kCentral");
2598 fHTrigger->GetXaxis()->SetBinLabel(13,
"kINT7&kEMC7");
2600 fHCentrality =
new TH1F(
"fHCentrality",
"conter",100,0.,100.);
2619 Int_t bins_base[4]= {10 ,100 , 20 ,10};
2620 Double_t xmin_base[4]={1.3,0 , -0.1 ,0.00};
2621 Double_t xmax_base[4]={3.3,20. , 0.1 ,100};
2623 fHistoEleXiMass =
new THnSparseF(
"fHistoEleXiMass",
"",4,bins_base,xmin_base,xmax_base);
2625 fHistoEleXiMassRS =
new THnSparseF(
"fHistoEleXiMassRS",
"",4,bins_base,xmin_base,xmax_base);
2627 fHistoEleXiMassWS =
new THnSparseF(
"fHistoEleXiMassWS",
"",4,bins_base,xmin_base,xmax_base);
2629 fHistoEleXiMassRSMix =
new THnSparseF(
"fHistoEleXiMassRSMix",
"",4,bins_base,xmin_base,xmax_base);
2631 fHistoEleXiMassWSMix =
new THnSparseF(
"fHistoEleXiMassWSMix",
"",4,bins_base,xmin_base,xmax_base);
2637 fHistoEleXiMassRS1 =
new THnSparseF(
"fHistoEleXiMassRS1",
"",4,bins_base,xmin_base,xmax_base);
2639 fHistoEleXiMassWS1 =
new THnSparseF(
"fHistoEleXiMassWS1",
"",4,bins_base,xmin_base,xmax_base);
2649 fHistoEleXiMassRS2 =
new THnSparseF(
"fHistoEleXiMassRS2",
"",4,bins_base,xmin_base,xmax_base);
2651 fHistoEleXiMassWS2 =
new THnSparseF(
"fHistoEleXiMassWS2",
"",4,bins_base,xmin_base,xmax_base);
2699 Int_t bins_base_elept[3]= {10 ,100 ,10};
2700 Double_t xmin_base_elept[3]={1.3,0 ,0.00};
2701 Double_t xmax_base_elept[3]={3.3,10. ,100};
2703 fHistoEleXiMassvsElePtRS =
new THnSparseF(
"fHistoEleXiMassvsElePtRS",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
2705 fHistoEleXiMassvsElePtWS =
new THnSparseF(
"fHistoEleXiMassvsElePtWS",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
2715 fHistoEleXiMassvsElePtRS1 =
new THnSparseF(
"fHistoEleXiMassvsElePtRS1",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
2717 fHistoEleXiMassvsElePtWS1 =
new THnSparseF(
"fHistoEleXiMassvsElePtWS1",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
2727 fHistoEleXiMassvsElePtRS2 =
new THnSparseF(
"fHistoEleXiMassvsElePtRS2",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
2729 fHistoEleXiMassvsElePtWS2 =
new THnSparseF(
"fHistoEleXiMassvsElePtWS2",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
2740 fHistoElePtRS=
new TH2F(
"fHistoElePtRS",
"Right-sign e pt",100,0.,10.,10,0.,100.);
2742 fHistoElePtWS=
new TH2F(
"fHistoElePtWS",
"Wrong-sign e pt",100,0.,10.,10,0.,100.);
2744 fHistoElePtRSMix=
new TH2F(
"fHistoElePtRSMix",
"Right-sign e pt",100,0.,10.,10,0.,100.);
2746 fHistoElePtWSMix=
new TH2F(
"fHistoElePtWSMix",
"Wrong-sign e pt",100,0.,10.,10,0.,100.);
2749 fHistoEleXiMassMCS =
new THnSparseF(
"fHistoEleXiMassMCS",
"",4,bins_base,xmin_base,xmax_base);
2751 fHistoEleXiMassMCS1 =
new THnSparseF(
"fHistoEleXiMassMCS1",
"",4,bins_base,xmin_base,xmax_base);
2753 fHistoEleXiMassMCS2 =
new THnSparseF(
"fHistoEleXiMassMCS2",
"",4,bins_base,xmin_base,xmax_base);
2767 fHistoEleXiMassMCGen =
new THnSparseF(
"fHistoEleXiMassMCGen",
"",4,bins_base,xmin_base,xmax_base);
2769 fHistoEleXiMassvsElePtMCS =
new THnSparseF(
"fHistoEleXiMassvsElePtMCS",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
2773 fHistoEleXiMassvsElePtMCS1 =
new THnSparseF(
"fHistoEleXiMassvsElePtMCS1",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
2777 fHistoEleXiMassvsElePtMCS2 =
new THnSparseF(
"fHistoEleXiMassvsElePtMCS2",
"",3,bins_base_elept,xmin_base_elept,xmax_base_elept);
2781 fHistoElePtMCS=
new TH2F(
"fHistoElePtMCS",
"MC S e pt",100,0.,10.,10,0.,100.);
2783 fHistoElePtMCGen=
new TH2F(
"fHistoElePtMCGen",
"MC Gen e pt",100,0.,10.,10,0.,100.);
2786 Int_t bins_eleptvseta[3]= {50,20 ,10};
2787 Double_t xmin_eleptvseta[3]={0.,-1. ,0.0};
2788 Double_t xmax_eleptvseta[3]={5.,1. ,100};
2790 fHistoElePtvsEtaRS =
new THnSparseF(
"fHistoElePtvsEtaRS",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
2792 fHistoElePtvsEtaWS =
new THnSparseF(
"fHistoElePtvsEtaWS",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
2794 fHistoElePtvsEtaRSMix =
new THnSparseF(
"fHistoElePtvsEtaRSMix",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
2796 fHistoElePtvsEtaWSMix =
new THnSparseF(
"fHistoElePtvsEtaWSMix",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
2798 fHistoElePtvsEtaMCS =
new THnSparseF(
"fHistoElePtvsEtaMCS",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
2800 fHistoElePtvsEtaMCGen =
new THnSparseF(
"fHistoElePtvsEtaMCGen",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
2803 Int_t bins_eleptvsxipt[3]= {50,20 ,10};
2804 Double_t xmin_eleptvsxipt[3]={0.,0. ,0.0};
2805 Double_t xmax_eleptvsxipt[3]={5.,5. ,100};
2807 fHistoElePtvsXiPtRS =
new THnSparseF(
"fHistoElePtvsXiPtRS",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
2809 fHistoElePtvsXiPtWS =
new THnSparseF(
"fHistoElePtvsXiPtWS",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
2811 fHistoElePtvsXiPtRSMix =
new THnSparseF(
"fHistoElePtvsXiPtRSMix",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
2813 fHistoElePtvsXiPtWSMix =
new THnSparseF(
"fHistoElePtvsXiPtWSMix",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
2815 fHistoElePtvsXiPtMCS =
new THnSparseF(
"fHistoElePtvsXiPtMCS",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
2817 fHistoElePtvsXiPtMCGen =
new THnSparseF(
"fHistoElePtvsXiPtMCGen",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
2819 fHistoElePtvsXiPtMCXicGen =
new THnSparseF(
"fHistoElePtvsXiPtMCXicGen",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
2822 Int_t bins_eleptvsxiptvsxicpt[4]= {50,20,10,10};
2823 Double_t xmin_eleptvsxiptvsxicpt[4]={0.,0.,0.,0.0};
2824 Double_t xmax_eleptvsxiptvsxicpt[4]={5.,5.,10.,100};
2825 fHistoElePtvsXiPtvsXicPtMCS =
new THnSparseF(
"fHistoElePtvsXiPtvsXicPtMCS",
"",4,bins_eleptvsxiptvsxicpt,xmin_eleptvsxiptvsxicpt,xmax_eleptvsxiptvsxicpt);
2827 fHistoElePtvsXiPtvsXicPtMCGen =
new THnSparseF(
"fHistoElePtvsXiPtvsXicPtMCGen",
"",4,bins_eleptvsxiptvsxicpt,xmin_eleptvsxiptvsxicpt,xmax_eleptvsxiptvsxicpt);
2830 Int_t bins_eleptvsd0[3]= {50 ,50 ,10};
2831 Double_t xmin_eleptvsd0[3]={0.,-0.2 ,0.0};
2832 Double_t xmax_eleptvsd0[3]={5.,0.2 ,100};
2834 fHistoElePtvsd0RS =
new THnSparseF(
"fHistoElePtvsd0RS",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
2836 fHistoElePtvsd0WS =
new THnSparseF(
"fHistoElePtvsd0WS",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
2838 fHistoElePtvsd0RSMix =
new THnSparseF(
"fHistoElePtvsd0RSMix",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
2840 fHistoElePtvsd0WSMix =
new THnSparseF(
"fHistoElePtvsd0WSMix",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
2842 fHistoElePtvsd0MCS =
new THnSparseF(
"fHistoElePtvsd0MCS",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
2844 fHistoElePtvsd0PromptMCS =
new THnSparseF(
"fHistoElePtvsd0PromptMCS",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
2852 fHistoBachPt =
new TH1F(
"fHistoBachPt",
"Bachelor p_{T}",100,0.0,5.0);
2854 fHistoBachPtMCS =
new TH1F(
"fHistoBachPtMCS",
"Bachelor p_{T}",100,0.0,5.0);
2858 fHistod0Bach =
new TH1F(
"fHistod0Bach",
"Bachelor d_{0}",100,-0.5,0.5);
2860 fHistoXiMassvsPt=
new TH2F(
"fHistoXiMassvsPt",
"Xi mass",100,1.32-0.05,1.32+0.05,20,0.,10.);
2862 fHistoXiMassvsPtMCS=
new TH2F(
"fHistoXiMassvsPtMCS",
"Xi mass",100,1.32-0.05,1.32+0.05,20,0.,10.);
2864 fHistoXiMassvsPtMCGen=
new TH2F(
"fHistoXiMassvsPtMCGen",
"Xi mass",100,1.32-0.05,1.32+0.05,20,0.,10.);
2866 fHistoOmegaMassvsPt=
new TH2F(
"fHistoOmegaMassvsPt",
"Omega mass",100,1.67-0.05,1.67+0.05,20,0.,10.);
2886 for(Int_t i=0;i<8;i++){
2896 Int_t bins_xicmcgen[3]= {100 ,20 ,10};
2897 Double_t xmin_xicmcgen[3]={0.,-1.0 ,0.0};
2898 Double_t xmax_xicmcgen[3]={20.,1.0 ,100};
2899 fHistoXicMCGen =
new THnSparseF(
"fHistoXicMCGen",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
2901 fHistoXicMCGen1 =
new THnSparseF(
"fHistoXicMCGen1",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
2903 fHistoXicMCGen2 =
new THnSparseF(
"fHistoXicMCGen2",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
2905 fHistoXicMCS =
new THnSparseF(
"fHistoXicMCS",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
2907 fHistoXicMCS1 =
new THnSparseF(
"fHistoXicMCS1",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
2909 fHistoXicMCS2 =
new THnSparseF(
"fHistoXicMCS2",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
2912 Int_t bins_elemcgen[3]= {100 ,20 ,10};
2913 Double_t xmin_elemcgen[3]={0.,-1.0 ,0.0};
2914 Double_t xmax_elemcgen[3]={10.,1.0 ,100};
2915 fHistoElectronMCGen =
new THnSparseF(
"fHistoElectronMCGen",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
2917 fHistoXicElectronMCGen =
new THnSparseF(
"fHistoXicElectronMCGen",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
2919 fHistoXicElectronMCGen1 =
new THnSparseF(
"fHistoXicElectronMCGen1",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
2921 fHistoXicElectronMCGen2 =
new THnSparseF(
"fHistoXicElectronMCGen2",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
2923 fHistoXicElectronMCS =
new THnSparseF(
"fHistoXicElectronMCS",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
2925 fHistoXicElectronMCS1 =
new THnSparseF(
"fHistoXicElectronMCS1",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
2927 fHistoXicElectronMCS2 =
new THnSparseF(
"fHistoXicElectronMCS2",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
2930 Int_t bins_ximcgen[3]= {50 ,20 ,10};
2931 Double_t xmin_ximcgen[3]={0.,-1.0 ,0.0};
2932 Double_t xmax_ximcgen[3]={10.,1.0 ,100};
2933 fHistoXiMCGen =
new THnSparseF(
"fHistoXiMCGen",
"",3,bins_ximcgen,xmin_ximcgen,xmax_ximcgen);
2936 fHistoLambdaPtvsDl=
new TH2F(
"fHistoLambdaPtvsDl",
"Lambda pt vs dl",20,0.,10.,20,0.,40.);
2970 for(Int_t ih=0;ih<23;ih++){
2971 Int_t bins_eleptvscutvars[3];
2972 Double_t xmin_eleptvscutvars[3];
2973 Double_t xmax_eleptvscutvars[3];
2975 bins_eleptvscutvars[0] = 20;
2976 xmin_eleptvscutvars[0] = 0.;
2977 xmax_eleptvscutvars[0] = 20.;
2978 bins_eleptvscutvars[2] = 10;
2979 xmin_eleptvscutvars[2] = 0.;
2980 xmax_eleptvscutvars[2] = 100.;
2984 bins_eleptvscutvars[1] = 40;
2985 xmin_eleptvscutvars[1] = 0.;
2986 xmax_eleptvscutvars[1] = 160.;
2987 }
else if(ih==2 || ih==3){
2989 bins_eleptvscutvars[1] = 20;
2990 xmin_eleptvscutvars[1] = -5.;
2991 xmax_eleptvscutvars[1] = 5.;
2994 bins_eleptvscutvars[1] = 30;
2995 xmin_eleptvscutvars[1] = -1.5;
2996 xmax_eleptvscutvars[1] = 1.5;
2999 bins_eleptvscutvars[1] = 7;
3000 xmin_eleptvscutvars[1] = -0.5;
3001 xmax_eleptvscutvars[1] = 6.5;
3004 bins_eleptvscutvars[1] = 50;
3005 xmin_eleptvscutvars[1] = 1.1156-0.03;
3006 xmax_eleptvscutvars[1] = 1.1156+0.03;
3009 bins_eleptvscutvars[1] = 50;
3010 xmin_eleptvscutvars[1] = 1.32-0.03;
3011 xmax_eleptvscutvars[1] = 1.32+0.03;
3012 }
else if(ih==8 || ih==9){
3014 bins_eleptvscutvars[1] = 20;
3015 xmin_eleptvscutvars[1] = 0.;
3016 xmax_eleptvscutvars[1] = 5.;
3017 }
else if(ih==10 || ih==11){
3019 bins_eleptvscutvars[1] = 20;
3020 xmin_eleptvscutvars[1] = 0.;
3021 xmax_eleptvscutvars[1] = 2.;
3022 }
else if(ih==12 || ih==13 || ih==14){
3024 bins_eleptvscutvars[1] = 20;
3025 xmin_eleptvscutvars[1] = 0.;
3026 xmax_eleptvscutvars[1] = 0.5;
3027 }
else if(ih==15 || ih==16){
3029 bins_eleptvscutvars[1] = 20;
3030 xmin_eleptvscutvars[1] = 0.95;
3031 xmax_eleptvscutvars[1] = 1.0;
3032 }
else if(ih==17 || ih==18 || ih==19){
3034 bins_eleptvscutvars[1] = 20;
3035 xmin_eleptvscutvars[1] = -5.;
3036 xmax_eleptvscutvars[1] = 5.;
3037 }
else if(ih==20 || ih==21){
3039 bins_eleptvscutvars[1] = 30;
3040 xmin_eleptvscutvars[1] = -1.5;
3041 xmax_eleptvscutvars[1] = 1.5;
3044 bins_eleptvscutvars[1] = 20;
3045 xmin_eleptvscutvars[1] = 0.;
3046 xmax_eleptvscutvars[1] = 3.141592/2;
3049 fHistoElePtvsCutVarsRS[ih] =
new THnSparseF(Form(
"fHistoElePtvsCutVarsRS[%d]",ih),
"",3,bins_eleptvscutvars,xmin_eleptvscutvars,xmax_eleptvscutvars);
3051 fHistoElePtvsCutVarsWS[ih] =
new THnSparseF(Form(
"fHistoElePtvsCutVarsWS[%d]",ih),
"",3,bins_eleptvscutvars,xmin_eleptvscutvars,xmax_eleptvscutvars);
3053 fHistoElePtvsCutVarsMCS[ih] =
new THnSparseF(Form(
"fHistoElePtvsCutVarsMCS[%d]",ih),
"",3,bins_eleptvscutvars,xmin_eleptvscutvars,xmax_eleptvscutvars);
3067 if(!casc)
return 0x0;
3068 if(!part)
return 0x0;
3069 if(!aod)
return 0x0;
3074 AliAODVertex *primVertexAOD;
3075 Bool_t unsetvtx = kFALSE;
3079 primVertexAOD =
fVtx1;
3084 primVertexAOD =
fVtx1;
3086 if(!primVertexAOD)
return 0x0;
3087 Double_t posprim[3]; primVertexAOD->GetXYZ(posprim);
3092 AliESDtrack *esdtrack =
new AliESDtrack((AliVTrack*)part);
3094 Double_t xyz[3], pxpypz[3], cv[21]; Short_t sign;
3095 xyz[0]=casc->DecayVertexXiX();
3096 xyz[1]=casc->DecayVertexXiY();
3097 xyz[2]=casc->DecayVertexXiZ();
3098 pxpypz[0]=casc->MomXiX();
3099 pxpypz[1]=casc->MomXiY();
3100 pxpypz[2]=casc->MomXiZ();
3101 casc->GetCovarianceXYZPxPyPz(cv);
3102 sign=casc->ChargeXi();
3103 AliExternalTrackParam *trackCasc =
new AliExternalTrackParam(xyz,pxpypz,cv,sign);
3105 Double_t xdummy, ydummy;
3106 Double_t dca = esdtrack->GetDCA(trackCasc,
fBzkG,xdummy,ydummy);
3113 Double_t d0z0bach[2],covd0z0bach[3];
3114 if(sqrt(pow(secVert->GetX(),2)+pow(secVert->GetY(),2))<1.){
3115 part->PropagateToDCA(secVert,
fBzkG,kVeryBig,d0z0bach,covd0z0bach);
3116 trackCasc->PropagateToDCA(secVert,
fBzkG,kVeryBig);
3118 part->PropagateToDCA(primVertexAOD,
fBzkG,kVeryBig,d0z0bach,covd0z0bach);
3119 trackCasc->PropagateToDCA(primVertexAOD,
fBzkG,kVeryBig);
3121 Double_t momcasc_new[3]={-9999,-9999,-9999.};
3122 trackCasc->GetPxPyPz(momcasc_new);
3124 Double_t px[2],py[2],pz[2];
3125 px[0] = part->Px(); py[0] = part->Py(); pz[0] = part->Pz();
3126 px[1] = momcasc_new[0]; py[1] = momcasc_new[1]; pz[1] = momcasc_new[2];
3131 Double_t d0[3],d0err[3];
3133 part->PropagateToDCA(primVertexAOD,
fBzkG,kVeryBig,d0z0bach,covd0z0bach);
3135 d0err[0] = TMath::Sqrt(covd0z0bach[0]);
3137 Double_t d0z0casc[2],covd0z0casc[3];
3138 trackCasc->PropagateToDCA(primVertexAOD,
fBzkG,kVeryBig,d0z0casc,covd0z0casc);
3140 d0err[1] = TMath::Sqrt(covd0z0casc[0]);
3145 Short_t
charge = part->Charge();
3149 if(unsetvtx)
delete primVertexAOD; primVertexAOD=NULL;
3150 if(esdtrack)
delete esdtrack;
3151 if(trackCasc)
delete trackCasc;
3155 UShort_t
id[2]={(UShort_t)part->GetID(),(UShort_t)trackCasc->GetID()};
3158 theCascade->GetSecondaryVtx()->AddDaughter(part);
3159 theCascade->GetSecondaryVtx()->AddDaughter(casc);
3160 if(unsetvtx)
delete primVertexAOD; primVertexAOD=NULL;
3161 if(esdtrack)
delete esdtrack;
3162 if(trackCasc)
delete trackCasc;
3175 TObjArray *TrackArray =
new TObjArray(3);
3177 AliESDtrack *cptrk1 =
new AliESDtrack((AliVTrack*)trk);
3178 TrackArray->AddAt(cptrk1,0);
3180 AliESDtrack *cascptrack =
new AliESDtrack((AliVTrack*)casc->GetDaughter(0));
3181 TrackArray->AddAt(cascptrack,1);
3182 AliESDtrack *cascntrack =
new AliESDtrack((AliVTrack*)casc->GetDaughter(1));
3183 TrackArray->AddAt(cascntrack,2);
3184 AliESDtrack *cascbtrack =
new AliESDtrack((AliVTrack*)casc->GetDecayVertexXi()->GetDaughter(0));
3185 TrackArray->AddAt(cascbtrack,3);
3189 for(Int_t i=0;i<4;i++)
3191 AliESDtrack *tesd = (AliESDtrack*)TrackArray->UncheckedAt(i);
3194 TrackArray->Clear();
3209 Bool_t fRecoPrimVtxSkippingTrks = kTRUE;
3210 Bool_t fRmTrksFromPrimVtx = kFALSE;
3212 AliESDVertex *vertexESD = 0;
3213 AliAODVertex *vertexAOD = 0;
3218 if(!fRecoPrimVtxSkippingTrks && !fRmTrksFromPrimVtx) {
3221 vertexESD =
new AliESDVertex(*
fV1);
3226 Int_t nTrks = trkArray->GetEntriesFast();
3227 AliVertexerTracks *vertexer =
new AliVertexerTracks(event->GetMagneticField());
3229 if(fRecoPrimVtxSkippingTrks) {
3232 if(strstr(
fV1->GetTitle(),
"VertexerTracksWithConstraint")) {
3233 Float_t diamondcovxy[3];
3234 event->GetDiamondCovXY(diamondcovxy);
3235 Double_t pos[3]={
event->GetDiamondX(),
event->GetDiamondY(),0.};
3236 Double_t cov[6]={diamondcovxy[0],diamondcovxy[1],diamondcovxy[2],0.,0.,10.*10.};
3237 AliESDVertex *diamond =
new AliESDVertex(pos,cov,1.,1);
3238 vertexer->SetVtxStart(diamond);
3239 delete diamond; diamond=NULL;
3240 if(strstr(
fV1->GetTitle(),
"VertexerTracksWithConstraintOnlyFitter"))
3241 vertexer->SetOnlyFitter();
3243 Int_t skipped[1000];
3244 Int_t nTrksToSkip=0,id;
3245 AliExternalTrackParam *t = 0;
3246 for(Int_t i=0; i<nTrks; i++) {
3247 t = (AliExternalTrackParam*)trkArray->UncheckedAt(i);
3248 id = (Int_t)t->GetID();
3250 skipped[nTrksToSkip++] = id;
3254 Double_t covtest[21];
3255 for(Int_t j=0; j<
event->GetNumberOfTracks(); j++) {
3256 AliVTrack *vtrack = (AliVTrack*)event->GetTrack(j);
3257 if(!vtrack->GetCovarianceXYZPxPyPz(covtest)) {
3258 id = (Int_t)vtrack->GetID();
3260 skipped[nTrksToSkip++] = id;
3263 for(Int_t ijk=nTrksToSkip; ijk<1000; ijk++) skipped[ijk]=-1;
3265 vertexer->SetSkipTracks(nTrksToSkip,skipped);
3266 vertexESD = (AliESDVertex*)vertexer->FindPrimaryVertex(event);
3268 }
else if(fRmTrksFromPrimVtx && nTrks>0) {
3271 TObjArray rmArray(nTrks);
3272 UShort_t *rmId =
new UShort_t[nTrks];
3273 AliESDtrack *esdTrack = 0;
3275 for(Int_t i=0; i<nTrks; i++) {
3276 t = (AliESDtrack*)trkArray->UncheckedAt(i);
3277 esdTrack =
new AliESDtrack(*t);
3278 rmArray.AddLast(esdTrack);
3279 if(esdTrack->GetID()>=0) {
3280 rmId[i]=(UShort_t)esdTrack->GetID();
3285 Float_t diamondxy[2]={
static_cast<Float_t
>(
event->GetDiamondX()),static_cast<Float_t>(event->GetDiamondY())};
3286 vertexESD = vertexer->RemoveTracksFromVertex(
fV1,&rmArray,rmId,diamondxy);
3287 delete [] rmId; rmId=NULL;
3292 delete vertexer; vertexer=NULL;
3293 if(!vertexESD)
return vertexAOD;
3294 if(vertexESD->GetNContributors()<=0) {
3296 delete vertexESD; vertexESD=NULL;
3304 Double_t pos[3],cov[6],chi2perNDF;
3305 vertexESD->GetXYZ(pos);
3306 vertexESD->GetCovMatrix(cov);
3307 chi2perNDF = vertexESD->GetChi2toNDF();
3308 delete vertexESD; vertexESD=NULL;
3310 vertexAOD =
new AliAODVertex(pos,cov,chi2perNDF);
3322 AliAODVertex *primVertexAOD;
3323 Bool_t unsetvtx = kFALSE;
3327 primVertexAOD =
fVtx1;
3332 primVertexAOD =
fVtx1;
3334 if(!primVertexAOD)
return 0x0;
3336 AliESDVertex * vertexESD =
new AliESDVertex(*
fV1);
3338 Double_t pos[3],cov[6],chi2perNDF;
3339 vertexESD->GetXYZ(pos);
3340 vertexESD->GetCovMatrix(cov);
3341 chi2perNDF = vertexESD->GetChi2toNDF();
3342 delete vertexESD; vertexESD=NULL;
3344 AliAODVertex *secVert =
new AliAODVertex(pos,cov,chi2perNDF);
3354 for(Int_t i=0;i<100;i++){
3355 pdgarray_ele[i] = -9999;
3356 labelarray_ele[i] = -9999;
3357 pdgarray_casc[i] = -9999;
3358 labelarray_casc[i] = -9999;
3363 AliVTrack *trk =
dynamic_cast<AliVTrack*
>(exobj->
GetBachelor());
3365 Int_t labEle = trk->GetLabel();
3366 if(labEle<0)
return -1;
3367 AliAODMCParticle *mcetrk = (AliAODMCParticle*)mcArray->At(labEle);
3368 if(!mcetrk)
return -1;
3369 labelarray_ele[0] = labEle;
3370 pdgarray_ele[0] = mcetrk->GetPdgCode();
3373 AliAODMCParticle *mcprimele=0;
3375 while(mcprimele->GetMother()>=0) {
3376 Int_t labprim_ele=mcprimele->GetMother();
3377 AliAODMCParticle *tmcprimele = (AliAODMCParticle*)mcArray->At(labprim_ele);
3382 mcprimele = tmcprimele;
3383 pdgarray_ele[ngen_ele] = mcprimele->GetPdgCode();
3384 labelarray_ele[ngen_ele] = labprim_ele;
3386 if(ngen_ele==100)
break;
3389 AliAODcascade *theCascade =
dynamic_cast<AliAODcascade*
>(exobj->
GetCascade());
3390 if(!theCascade)
return -1;
3392 Int_t pdgDgcasc[2]={211,3122};
3393 Int_t pdgDgv0[2]={2212,211};
3394 Int_t labcasc =
MatchToMCCascade(theCascade,3312,pdgDgcasc,pdgDgv0,mcArray);
3395 if(labcasc<0)
return -1;
3397 AliAODMCParticle *mccasc = (AliAODMCParticle*)mcArray->At(labcasc);
3398 if(!mccasc)
return -1;
3399 labelarray_casc[0] = labcasc;
3400 pdgarray_casc[0] = mccasc->GetPdgCode();
3403 AliAODMCParticle *mcprimcasc=0;
3404 mcprimcasc = mccasc;
3405 while(mcprimcasc->GetMother()>=0) {
3406 Int_t labprim_casc=mcprimcasc->GetMother();
3407 AliAODMCParticle *tmcprimcasc = (AliAODMCParticle*)mcArray->At(labprim_casc);
3412 mcprimcasc = tmcprimcasc;
3413 pdgarray_casc[ngen_casc] = mcprimcasc->GetPdgCode();
3414 labelarray_casc[ngen_casc] = labprim_casc;
3416 if(ngen_casc==100)
break;
3419 Bool_t same_flag = kFALSE;
3420 Int_t matchedlabel=-9999;
3421 for(Int_t iemc=0;iemc<ngen_ele;iemc++){
3422 for(Int_t ivmc=0;ivmc<ngen_casc;ivmc++){
3423 if(labelarray_ele[iemc]==labelarray_casc[ivmc]){
3425 matchedlabel = labelarray_ele[iemc];
3429 if(same_flag)
break;
3432 return matchedlabel;
3442 AliAODTrack *cptrack = (AliAODTrack*) theCascade->GetDaughter(0);
3443 if(!cptrack)
return -1;
3444 Int_t label_p = TMath::Abs(cptrack->GetLabel());
3445 if(label_p<0)
return -1;
3446 AliAODTrack *cntrack = (AliAODTrack*) theCascade->GetDaughter(1);
3447 if(!cntrack)
return -1;
3448 Int_t label_n = TMath::Abs(cntrack->GetLabel());
3449 if(label_n<0)
return -1;
3450 Int_t labv0 = theCascade->MatchToMC(pdgDgcasc[1],mcArray,2,pdgDgv0);
3451 if(labv0<0)
return -1;
3452 AliAODMCParticle *mcpartv0= (AliAODMCParticle*) mcArray->At(labv0);
3454 AliAODTrack *cbtrack = (AliAODTrack*) theCascade->GetDecayVertexXi()->GetDaughter(0);
3455 if(!cbtrack)
return -1;
3457 Int_t label_b = TMath::Abs(cbtrack->GetLabel());
3458 if(label_b<0)
return -1;
3460 AliAODMCParticle *mcpartb= (AliAODMCParticle*) mcArray->At(label_b);
3461 Int_t pdgb = TMath::Abs(mcpartb->GetPdgCode());
3462 if(pdgb!=pdgDgcasc[0])
return -1;
3464 AliAODMCParticle *mcmotherv0=mcpartv0;
3465 Bool_t isFromXiv0 = kFALSE;
3466 Int_t labxiv0 = mcmotherv0->GetMother();
3467 if(labxiv0<0)
return -1;
3468 mcmotherv0 = (AliAODMCParticle*) mcArray->At(labxiv0);
3470 Int_t
pdg = TMath::Abs(mcmotherv0 ->GetPdgCode());
3471 if(pdg==pdgabscasc){
3475 if(!isFromXiv0)
return -1;
3477 AliAODMCParticle *mcmotherb=mcpartb;
3478 Bool_t isFromXib = kFALSE;
3479 Int_t labxib = mcmotherb->GetMother();
3480 if(labxib<0)
return -1;
3481 mcmotherb = (AliAODMCParticle*) mcArray->At(labxib);
3483 Int_t
pdg = TMath::Abs(mcmotherb ->GetPdgCode());
3484 if(pdg==pdgabscasc){
3488 if(!isFromXib)
return -1;
3490 if(labxiv0!=labxib)
return -1;
3502 if(trkEntries==0)
return;
3505 for(Int_t i=0; i<trkEntries; i++) {
3506 seleFlags[i] = kFALSE;
3509 track = (AliVTrack*)event->GetTrack(i);
3511 if(track->GetID()<0)
continue;
3512 Double_t covtest[21];
3513 if(!track->GetCovarianceXYZPxPyPz(covtest))
continue;
3515 AliAODTrack *aodt = (AliAODTrack*)track;
3516 Double_t nsigma_tpcele = -9999;
3517 Double_t nsigma_tofele = -9999;
3527 if(fabs(nsigma_tofele)<3.){
3529 Double_t eleeta = aodt->Eta();
3530 if(fabs(eleeta)<0.6)
3532 if(fabs(eleeta)>0.6 && fabs(eleeta)<0.8)
3534 if(eleeta>-0.8 && eleeta<-0.6){
3536 }
else if(eleeta>-0.6&&eleeta<-0.4){
3538 }
else if(eleeta>-0.4&&eleeta<-0.2){
3540 }
else if(eleeta>-0.2&&eleeta<0.0){
3542 }
else if(eleeta>0.0&&eleeta<0.2){
3544 }
else if(eleeta>0.2&&eleeta<0.4){
3546 }
else if(eleeta>0.4&&eleeta<0.6){
3548 }
else if(eleeta>0.6&&eleeta<0.8){
3552 if(nsigma_tpcele>-0.5&&nsigma_tpcele<3.){
3572 Double_t primVtx[3];
3573 fVtx1->GetXYZ(primVtx);
3576 for(Int_t icasc=0;icasc<nCascs;icasc++)
3578 seleCascFlags[icasc] = kFALSE;
3579 AliAODcascade *casc = ((AliAODEvent*)event)->GetCascade(icasc);
3583 seleCascFlags[icasc] = kTRUE;
3597 if(theBinZ<0 || theBinZ>=
fNzVtxBins)
return -1;
3599 if(theBinM<0 || theBinM>=
fNCentBins)
return -1;
3607 if(poolIndex<0 || poolIndex>=
fNOfPools)
return;
3609 fEventBuffer[poolIndex]=
new TTree(Form(
"EventBuffer_%d",poolIndex),
"Temporary buffer for event mixing");
3632 TObjArray* c1array=0x0;
3633 TObjArray* c2array=0x0;
3634 Float_t zVertex,cent;
3635 TObjString* eventInfo=0x0;
3636 fEventBuffer[poolIndex]->SetBranchAddress(
"zVertex", &zVertex);
3637 fEventBuffer[poolIndex]->SetBranchAddress(
"eventInfo",&eventInfo);
3638 fEventBuffer[poolIndex]->SetBranchAddress(
"centrality", ¢);
3639 fEventBuffer[poolIndex]->SetBranchAddress(
"c1array", &c1array);
3640 fEventBuffer[poolIndex]->SetBranchAddress(
"c2array", &c2array);
3641 for (Int_t i=0; i<nEle; i++)
3647 fEventBuffer[poolIndex]->GetEvent(iEv + nEvents - fNumberOfEventsForMixing);
3649 Int_t nCascs1=c1array->GetEntries();
3660 for(Int_t iTr1=0; iTr1<nCascs1; iTr1++){
3661 TLorentzVector* casc1=(TLorentzVector*) c1array->At(iTr1);
3662 if(!casc1)
continue;
3667 Int_t nCascs2=c2array->GetEntries();
3668 for(Int_t iTr2=0; iTr2<nCascs2; iTr2++){
3669 TLorentzVector* casc2=(TLorentzVector*) c2array->At(iTr2);
3670 if(!casc2)
continue;
3686 Int_t nmcpart = mcArray->GetEntriesFast();
3688 Int_t mcevttype = 0;
3690 Bool_t sigmaevent = kFALSE;
3697 Int_t ncbarquark = 0;
3698 Double_t phi_c = -9999.;
3699 Double_t phi_cbar = -9999.;
3700 for(Int_t i=0;i<nmcpart;i++)
3702 AliAODMCParticle *mcpart = (AliAODMCParticle*) mcArray->At(i);
3703 if(TMath::Abs(mcpart->GetPdgCode())==4){
3704 if(fabs(mcpart->Y())<1.5){
3705 if(mcpart->GetPdgCode()==4){
3706 phi_c = mcpart->Phi();
3709 if(mcpart->GetPdgCode()==-4){
3710 phi_cbar = mcpart->Phi();
3715 }
else if(mcevttype==1){
3717 }
else if(mcevttype==2){
3719 }
else if(mcevttype==3){
3725 if(TMath::Abs(mcpart->GetPdgCode())==5){
3726 if(!mcpart->IsPhysicalPrimary())
continue;
3727 if(fabs(mcpart->Y())<1.5){
3730 }
else if(mcevttype==1){
3732 }
else if(mcevttype==2){
3734 }
else if(mcevttype==3){
3742 if((mcevttype==2)||(mcevttype==0)||(mcevttype==3))
return kFALSE;
3744 if((mcevttype==1)||(mcevttype==0)||(mcevttype==3))
return kFALSE;
3748 if(ncquark!=1)
return kFALSE;
3749 if(ncbarquark!=1)
return kFALSE;
3750 Double_t dphi = fabs(phi_c - phi_cbar);
3751 if(dphi>2*M_PI) dphi -= 2*M_PI;
3752 if(dphi>M_PI) dphi = 2*M_PI-dphi;
3762 for(Int_t i=0;i<nmcpart;i++)
3764 AliAODMCParticle *mcpart = (AliAODMCParticle*) mcArray->At(i);
3765 if(TMath::Abs(mcpart->GetPdgCode())==4132){
3766 Bool_t e_flag = kFALSE;
3767 Bool_t xi_flag = kFALSE;
3768 AliAODMCParticle *mcepart = 0;
3769 AliAODMCParticle *mccascpart = 0;
3770 for(Int_t idau=mcpart->GetFirstDaughter();idau<mcpart->GetLastDaughter()+1;idau++)
3773 AliAODMCParticle *mcdau = (AliAODMCParticle*) mcArray->At(idau);
3774 if(!mcdau)
continue;
3775 if(TMath::Abs(mcdau->GetPdgCode())==11){
3779 if(TMath::Abs(mcdau->GetPdgCode())==3312){
3785 Int_t decaytype = -9999;
3786 if(e_flag && xi_flag) decaytype = 0;
3790 if(!e_flag&&xi_flag)
3792 if(e_flag&&!xi_flag)
3794 if(!e_flag&&!xi_flag)
3799 if(TMath::Abs(mcpart->GetPdgCode())==11 && mcpart->GetStatus()==1){
3802 esdcuts->GetEtaRange(etamin,etamax);
3803 if(fabs(mcpart->Eta())<etamax){
3804 Bool_t gamma_flag = kFALSE;
3805 Int_t labmother = mcpart->GetMother();
3807 AliAODMCParticle *mcmother = (AliAODMCParticle*) mcArray->At(labmother);
3808 Int_t pdgmother = mcmother->GetPdgCode();
3809 if(TMath::Abs(pdgmother)==22) gamma_flag = kTRUE;
3815 if(TMath::Abs(mcpart->GetPdgCode())==3312){
3820 if((fabs(mcpart->Y())<rapmax) && (fabs(mcpart->Eta())<etamax)){
3829 for(Int_t i=0;i<nmcpart;i++)
3831 AliAODMCParticle *mcparte = (AliAODMCParticle*) mcArray->At(i);
3832 if(!mcparte)
continue;
3833 if(TMath::Abs(mcparte->GetPdgCode())!=11)
continue;
3834 if(mcparte->GetStatus()!=1)
continue;
3835 if(mcparte->Pt()<0.4)
continue;
3836 if(fabs(mcparte->Eta())>0.8)
continue;
3837 for(Int_t j=0;j<nmcpart;j++)
3839 AliAODMCParticle *mcpartv = (AliAODMCParticle*) mcArray->At(j);
3840 if(!mcpartv)
continue;
3841 if(TMath::Abs(mcpartv->GetPdgCode())!=3312)
continue;
3842 if(mcpartv->Pt()<0.4)
continue;
3843 if(fabs(mcpartv->Eta())>0.8)
continue;
3844 if(mcpartv->GetNDaughters()!=2)
continue;
3862 const char* nameoutput = GetOutputSlot(11)->GetContainer()->GetName();
3866 TString * fCandidateVariableNames =
new TString[nVar];
3868 fCandidateVariableNames[ 0] =
"InvMassEleXi";
3869 fCandidateVariableNames[ 1] =
"EleXiPx";
3870 fCandidateVariableNames[ 2] =
"EleXiPy";
3871 fCandidateVariableNames[ 3] =
"EleXiPz";
3872 fCandidateVariableNames[ 4] =
"ElePdgCode";
3873 fCandidateVariableNames[ 5] =
"ElePx";
3874 fCandidateVariableNames[ 6] =
"ElePy";
3875 fCandidateVariableNames[ 7] =
"ElePz";
3876 fCandidateVariableNames[ 8] =
"XiPdgCode";
3877 fCandidateVariableNames[ 9] =
"XiPx";
3878 fCandidateVariableNames[10] =
"XiPy";
3879 fCandidateVariableNames[11] =
"XiPz";
3880 fCandidateVariableNames[12] =
"SameFlag";
3881 fCandidateVariableNames[13] =
"EleNGeneration";
3882 fCandidateVariableNames[14] =
"EleGen1PDG";
3883 fCandidateVariableNames[15] =
"EleGen2PDG";
3884 fCandidateVariableNames[16] =
"EleGen3PDG";
3885 fCandidateVariableNames[17] =
"EleGen4PDG";
3886 fCandidateVariableNames[18] =
"EleGen5PDG";
3887 fCandidateVariableNames[19] =
"EleGen6PDG";
3888 fCandidateVariableNames[20] =
"EleGen7PDG";
3889 fCandidateVariableNames[21] =
"EleGen8PDG";
3890 fCandidateVariableNames[22] =
"EleGen9PDG";
3891 fCandidateVariableNames[23] =
"EleGen10PDG";
3892 fCandidateVariableNames[24] =
"ElePrimPDG";
3893 fCandidateVariableNames[25] =
"XiNGeneration";
3894 fCandidateVariableNames[26] =
"XiGen1PDG";
3895 fCandidateVariableNames[27] =
"XiGen2PDG";
3896 fCandidateVariableNames[28] =
"XiGen3PDG";
3897 fCandidateVariableNames[29] =
"XiGen4PDG";
3898 fCandidateVariableNames[30] =
"XiGen5PDG";
3899 fCandidateVariableNames[31] =
"XiGen6PDG";
3900 fCandidateVariableNames[32] =
"XiGen7PDG";
3901 fCandidateVariableNames[33] =
"XiGen8PDG";
3902 fCandidateVariableNames[34] =
"XiGen9PDG";
3903 fCandidateVariableNames[35] =
"XiGen10PDG";
3904 fCandidateVariableNames[36] =
"XiPrimPDG";
3905 fCandidateVariableNames[37] =
"MatchedPDG";
3907 for (Int_t ivar=0; ivar<nVar; ivar++) {
3919 for(Int_t i=0;i<38;i++){
3923 TLorentzVector vele, vxi, vexi;
3924 vele.SetXYZM(mcparte->Px(),mcparte->Py(),mcparte->Pz(),0.000510998928);
3925 vxi.SetXYZM(mcpartv->Px(),mcpartv->Py(),mcpartv->Pz(),1.32171);
3928 Int_t pdgarray_ele[100], labelarray_ele[100], ngen_ele;
3929 Int_t pdgarray_xi[100], labelarray_xi[100], ngen_xi;
3933 Bool_t same_flag = kFALSE;
3934 Int_t matched_pdg = -999999;
3935 for(Int_t iemc=0;iemc<ngen_ele;iemc++){
3936 for(Int_t ivmc=0;ivmc<ngen_xi;ivmc++){
3937 if(labelarray_ele[iemc]==labelarray_xi[ivmc]){
3939 matched_pdg = pdgarray_ele[iemc];
3943 if(same_flag)
break;
3945 Int_t pdgprim_ele = pdgarray_ele[ngen_ele-1];
3946 Int_t pdgprim_xi = pdgarray_xi[ngen_xi-1];
3994 for(Int_t i=0;i<100;i++){
3995 pdgarray[i] = -9999;
3996 labelarray[i] = -9999;
4000 AliAODMCParticle *mcprim = mcpart;
4001 while(mcprim->GetMother()>=0) {
4002 Int_t lab_prim=mcprim->GetMother();
4004 AliAODMCParticle *tmcprim = (AliAODMCParticle*)mcArray->At(lab_prim);
4008 if((TMath::Abs(tmcprim->GetPdgCode())<10) || (TMath::Abs(tmcprim->GetPdgCode())==21))
break;
4012 pdgarray[ngen] = mcprim->GetPdgCode();
4013 labelarray[ngen] = lab_prim;
4016 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
TH2F * fHistoEleXiPtvsRapidityRS
! e-Xi pT vs y
void ResetPool(Int_t poolIndex)
THnSparse * fHistoEleXiMassWSSideAway
! e-Xi mass spectra (wrong-sign)
THnSparse * fHistoEleXiMassRSMix1
! e-Xi mass spectra (right-sign)
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 * fHistoEleXiMassWS
! e-Xi mass spectra (wrong-sign)
THnSparse * fHistoElePtvsXiPtMCS
! e-Xi spectra efficiency numerator
TH2F * fHistoElectronTOFPIDSelTPC
! TOF electron PID after TPC cut
THnSparse * fHistoElePtvsCutVarsWS[23]
! e pt- cut variables (Wrong-sign)
THnSparse * 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)
TH2F * fHistoEleXiPtvsRapidityMCS
! e-Xi pT vs y
TH1F * fHistoMCNccbar
! MC Event Type
Bool_t IsPeakRegion(AliAODcascade *c)
THnSparse * fHistoElePtvsXiPtRS
! e-Xi spectra (right-sign)
TH1F * fHTrigger
! Histogram to check Trigger
Int_t GetPoolIndex(Double_t zvert, Double_t mult)
THnSparse * fHistoXicMCGen
! electron in mcArray
THnSparse * fHistoEleXiMassvsElePtRSMix1
! e-Xi mass-ept spectra (right-sign)
THnSparse * fHistoEleXiMassvsElePtWSMix1
! e-Xi mass-ept spectra (wrong-sign)
THnSparse * fHistoXicMCGen1
! electron in mcArray
TH1F * fHistonEvtvsRunNumber
! evt vs runnumber
void DoEventMixingWithPools(Int_t index)
void DefineAnalysisHistograms()
THnSparse * fHistoEleXiMassvsElePtMCGen1
! e-Xi mass-ept spectra (Efficiency denominator)
TH2F * fHistoEleXiPtvsRapidityWS
! e-Xi pT vs y
TH2F * fHistoElePtMCS
! e spectra (Efficiency numerator)
THnSparse * fHistoEleXiMassWSMix1Away
! e-Xi mass spectra (wrong-sign)
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