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 fReconstructPrimVert(kFALSE),
114 fCandidateVariables(),
115 fCandidateEleVariables(),
116 fCandidateCascVariables(),
117 fCandidateMCVariables(),
118 fCandidateMCEleVariables(),
119 fCandidateMCCascVariables(),
127 fUseCentralityV0M(kFALSE),
130 fHistoEleXiMassRS(0),
131 fHistoEleXiMassWS(0),
132 fHistoEleXiMassRSMix(0),
133 fHistoEleXiMassWSMix(0),
134 fHistoEleXiMassRSSide(0),
135 fHistoEleXiMassWSSide(0),
136 fHistoEleXiMassvsElePtRS(0),
137 fHistoEleXiMassvsElePtWS(0),
138 fHistoEleXiMassvsElePtRSMix(0),
139 fHistoEleXiMassvsElePtWSMix(0),
140 fHistoEleXiMassvsElePtRSSide(0),
141 fHistoEleXiMassvsElePtWSSide(0),
142 fHistoEleXiMassvsElePtRS1(0),
143 fHistoEleXiMassvsElePtWS1(0),
144 fHistoEleXiMassvsElePtRSMix1(0),
145 fHistoEleXiMassvsElePtWSMix1(0),
146 fHistoEleXiMassvsElePtRSSide1(0),
147 fHistoEleXiMassvsElePtWSSide1(0),
148 fHistoEleXiMassvsElePtRS2(0),
149 fHistoEleXiMassvsElePtWS2(0),
150 fHistoEleXiMassvsElePtRSMix2(0),
151 fHistoEleXiMassvsElePtWSMix2(0),
152 fHistoEleXiMassvsElePtRSSide2(0),
153 fHistoEleXiMassvsElePtWSSide2(0),
158 fHistoEleXiMassMCS(0),
159 fHistoEleXiMassMCGen(0),
160 fHistoEleXiMassvsElePtMCS(0),
161 fHistoEleXiMassvsElePtMCGen(0),
162 fHistoEleXiMassvsElePtMCS1(0),
163 fHistoEleXiMassvsElePtMCGen1(0),
164 fHistoEleXiMassvsElePtMCS2(0),
165 fHistoEleXiMassvsElePtMCGen2(0),
168 fHistoElePtvsEtaRS(0),
169 fHistoElePtvsEtaWS(0),
170 fHistoElePtvsEtaRSMix(0),
171 fHistoElePtvsEtaWSMix(0),
172 fHistoElePtvsEtaMCS(0),
173 fHistoElePtvsEtaMCGen(0),
174 fHistoElePtvsXiPtRS(0),
175 fHistoElePtvsXiPtWS(0),
176 fHistoElePtvsXiPtRSMix(0),
177 fHistoElePtvsXiPtWSMix(0),
178 fHistoElePtvsXiPtMCS(0),
179 fHistoElePtvsXiPtvsXicPtMCS(0),
180 fHistoElePtvsXiPtMCGen(0),
181 fHistoElePtvsXiPtvsXicPtMCGen(0),
182 fHistoElePtvsXiPtMCXicGen(0),
183 fHistoElePtvsd0RS(0),
184 fHistoElePtvsd0WS(0),
185 fHistoElePtvsd0RSMix(0),
186 fHistoElePtvsd0WSMix(0),
187 fHistoElePtvsd0MCS(0),
188 fHistoElePtvsd0PromptMCS(0),
189 fHistoElePtvsd0BFeeddownMCS(0),
192 fHistoBachPtMCGen(0),
195 fHistoXiMassvsPtMCS(0),
196 fHistoXiMassvsPtMCGen(0),
197 fHistoOmegaMassvsPt(0),
198 fHistoElectronTPCPID(0),
199 fHistoElectronTOFPID(0),
200 fHistoElectronTPCSelPID(0),
201 fHistoElectronTOFSelPID(0),
202 fHistoElectronTPCPIDSelTOF(0),
203 fHistoElectronTOFPIDSelTPC(0),
204 fHistoElectronTPCPIDSelTOFSmallEta(0),
205 fHistoElectronTPCPIDSelTOFLargeEta(0),
206 fHistoElectronQovPtvsPhi(0),
207 fHistoXiQovPtvsPhi(0),
211 fHistoXicElectronMCGen(0),
212 fHistoXicElectronMCGen1(0),
213 fHistoXicElectronMCGen2(0),
214 fHistoElectronMCGen(0),
217 fHistonEvtvsRunNumber(0),
218 fHistonElevsRunNumber(0),
219 fHistonXivsRunNumber(0),
221 fNumberOfEventsForMixing (5),
227 fElectronTracks(0x0),
228 fCascadeTracks1(0x0),
234 for(Int_t i=0;i<23;i++){
239 for(Int_t i=0;i<8;i++){
247 Bool_t writeVariableTree) :
248 AliAnalysisTaskSE(name),
257 fIsEventSelected(kFALSE),
258 fWriteVariableTree(writeVariableTree),
259 fWriteEachVariableTree(kFALSE),
260 fWriteMCVariableTree(kFALSE),
262 fEleVariablesTree(0),
263 fCascVariablesTree(0),
265 fMCEleVariablesTree(0),
266 fMCCascVariablesTree(0),
267 fReconstructPrimVert(kFALSE),
273 fCandidateVariables(),
274 fCandidateEleVariables(),
275 fCandidateCascVariables(),
276 fCandidateMCVariables(),
277 fCandidateMCEleVariables(),
278 fCandidateMCCascVariables(),
286 fUseCentralityV0M(kFALSE),
289 fHistoEleXiMassRS(0),
290 fHistoEleXiMassWS(0),
291 fHistoEleXiMassRSMix(0),
292 fHistoEleXiMassWSMix(0),
293 fHistoEleXiMassRSSide(0),
294 fHistoEleXiMassWSSide(0),
295 fHistoEleXiMassvsElePtRS(0),
296 fHistoEleXiMassvsElePtWS(0),
297 fHistoEleXiMassvsElePtRSMix(0),
298 fHistoEleXiMassvsElePtWSMix(0),
299 fHistoEleXiMassvsElePtRSSide(0),
300 fHistoEleXiMassvsElePtWSSide(0),
301 fHistoEleXiMassvsElePtRS1(0),
302 fHistoEleXiMassvsElePtWS1(0),
303 fHistoEleXiMassvsElePtRSMix1(0),
304 fHistoEleXiMassvsElePtWSMix1(0),
305 fHistoEleXiMassvsElePtRSSide1(0),
306 fHistoEleXiMassvsElePtWSSide1(0),
307 fHistoEleXiMassvsElePtRS2(0),
308 fHistoEleXiMassvsElePtWS2(0),
309 fHistoEleXiMassvsElePtRSMix2(0),
310 fHistoEleXiMassvsElePtWSMix2(0),
311 fHistoEleXiMassvsElePtRSSide2(0),
312 fHistoEleXiMassvsElePtWSSide2(0),
317 fHistoEleXiMassMCS(0),
318 fHistoEleXiMassMCGen(0),
319 fHistoEleXiMassvsElePtMCS(0),
320 fHistoEleXiMassvsElePtMCGen(0),
321 fHistoEleXiMassvsElePtMCS1(0),
322 fHistoEleXiMassvsElePtMCGen1(0),
323 fHistoEleXiMassvsElePtMCS2(0),
324 fHistoEleXiMassvsElePtMCGen2(0),
327 fHistoElePtvsEtaRS(0),
328 fHistoElePtvsEtaWS(0),
329 fHistoElePtvsEtaRSMix(0),
330 fHistoElePtvsEtaWSMix(0),
331 fHistoElePtvsEtaMCS(0),
332 fHistoElePtvsEtaMCGen(0),
333 fHistoElePtvsXiPtRS(0),
334 fHistoElePtvsXiPtWS(0),
335 fHistoElePtvsXiPtRSMix(0),
336 fHistoElePtvsXiPtWSMix(0),
337 fHistoElePtvsXiPtMCS(0),
338 fHistoElePtvsXiPtvsXicPtMCS(0),
339 fHistoElePtvsXiPtMCGen(0),
340 fHistoElePtvsXiPtvsXicPtMCGen(0),
341 fHistoElePtvsXiPtMCXicGen(0),
342 fHistoElePtvsd0RS(0),
343 fHistoElePtvsd0WS(0),
344 fHistoElePtvsd0RSMix(0),
345 fHistoElePtvsd0WSMix(0),
346 fHistoElePtvsd0MCS(0),
347 fHistoElePtvsd0PromptMCS(0),
348 fHistoElePtvsd0BFeeddownMCS(0),
351 fHistoBachPtMCGen(0),
354 fHistoXiMassvsPtMCS(0),
355 fHistoXiMassvsPtMCGen(0),
356 fHistoOmegaMassvsPt(0),
357 fHistoElectronTPCPID(0),
358 fHistoElectronTOFPID(0),
359 fHistoElectronTPCSelPID(0),
360 fHistoElectronTOFSelPID(0),
361 fHistoElectronTPCPIDSelTOF(0),
362 fHistoElectronTOFPIDSelTPC(0),
363 fHistoElectronTPCPIDSelTOFSmallEta(0),
364 fHistoElectronTPCPIDSelTOFLargeEta(0),
365 fHistoElectronQovPtvsPhi(0),
366 fHistoXiQovPtvsPhi(0),
370 fHistoXicElectronMCGen(0),
371 fHistoXicElectronMCGen1(0),
372 fHistoXicElectronMCGen2(0),
373 fHistoElectronMCGen(0),
376 fHistonEvtvsRunNumber(0),
377 fHistonElevsRunNumber(0),
378 fHistonXivsRunNumber(0),
380 fNumberOfEventsForMixing (5),
386 fElectronTracks(0x0),
387 fCascadeTracks1(0x0),
393 Info(
"AliAnalysisTaskSEXic2eleXifromAODtracks",
"Calling Constructor");
395 for(Int_t i=0;i<23;i++){
400 for(Int_t i=0;i<8;i++){
404 DefineOutput(1,TList::Class());
405 DefineOutput(2,TList::Class());
406 DefineOutput(3,TList::Class());
407 DefineOutput(4,TTree::Class());
408 DefineOutput(5,TTree::Class());
409 DefineOutput(6,TTree::Class());
410 DefineOutput(7,TTree::Class());
411 DefineOutput(8,AliNormalizationCounter::Class());
412 DefineOutput(9,TTree::Class());
413 DefineOutput(10,TTree::Class());
421 Info(
"~AliAnalysisTaskSEXic2eleXifromAODtracks",
"Calling Destructor");
495 if (fDebug > 1) AliInfo(
"Init");
514 AliError(
"NO EVENT FOUND!");
517 AliAODEvent* aodEvent =
dynamic_cast<AliAODEvent*
>(fInputEvent);
525 fBzkG = (Double_t)aodEvent->GetMagneticField();
526 AliKFParticle::SetField(
fBzkG);
527 if (TMath::Abs(
fBzkG)<0.001) {
538 TClonesArray *mcArray = 0;
539 AliAODMCHeader *mcHeader=0;
542 mcArray =
dynamic_cast<TClonesArray*
>(aodEvent->FindListObject(AliAODMCParticle::StdBranchName()));
544 AliError(
"Could not find Monte-Carlo in AOD");
550 mcHeader = (AliAODMCHeader*)aodEvent->GetList()->FindObject(AliAODMCHeader::StdBranchName());
552 AliError(
"AliAnalysisTaskSEXic2eleXifromAODtracks::UserExec: MC header branch not found!\n");
557 Double_t zMCVertex = mcHeader->GetVtxZ();
559 AliDebug(2,Form(
"Event rejected: abs(zVtxMC)=%f > fAnalCuts->GetMaxVtxZ()=%f",zMCVertex,
fAnalCuts->
GetMaxVtxZ()));
572 fVtx1 = (AliAODVertex*)aodEvent->GetPrimaryVertex();
575 Double_t pos[3],cov[6];
577 fVtx1->GetCovarianceMatrix(cov);
578 fV1 =
new AliESDVertex(pos,cov,100.,100,
fVtx1->GetName());
591 fIsMB=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kMB)==(AliVEvent::kMB);
592 fIsSemi=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kSemiCentral)==(AliVEvent::kSemiCentral);
593 fIsCent=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kCentral)==(AliVEvent::kCentral);
594 fIsINT7=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kINT7)==(AliVEvent::kINT7);
595 fIsEMC7=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kEMC7)==(AliVEvent::kEMC7);
609 AliCentrality *cent = aodEvent->GetCentrality();
610 fCentrality = cent->GetCentralityPercentile(
"V0M");
614 if(fCentrality<0.||fCentrality>100.-0.0000001) {
621 Int_t runnumber_offset = 0;
622 Int_t runnumber = aodEvent->GetRunNumber();
623 if(runnumber<=131000&&runnumber>=114000){
624 runnumber_offset = 114000;
625 }
else if(runnumber<=196000&&runnumber>=195000){
626 runnumber_offset = 195000;
627 }
else if(runnumber<=170593&&runnumber>=167902){
628 runnumber_offset = 167902;
669 AliAnalysisTaskSE::Terminate();
671 fOutput =
dynamic_cast<TList*
> (GetOutputData(1));
673 AliError(
"fOutput not available");
677 fOutputAll =
dynamic_cast<TList*
> (GetOutputData(3));
679 AliError(
"fOutputAll not available");
728 TString normName=
"NormalizationCounter";
729 AliAnalysisDataContainer *cont = GetOutputSlot(8)->GetContainer();
730 if(cont)normName=(TString)cont->GetName();
746 fEventBuffer[i]=
new TTree(Form(
"EventBuffer_%d",i),
"Temporary buffer for event mixing");
762 AliAODEvent *aodEvent, TClonesArray *mcArray
771 if(fDoEventMixing && fElectronTracks) fElectronTracks->Delete();
772 if(fDoEventMixing && fCascadeTracks1) fCascadeTracks1->Delete();
773 if(fDoEventMixing && fCascadeTracks2) fCascadeTracks2->Delete();
775 Int_t nCascs= aodEvent->GetNumberOfCascades();
776 Int_t nTracks= aodEvent->GetNumberOfTracks();
778 Bool_t seleTrkFlags[nTracks];
780 SelectTrack(aodEvent,nTracks,nSeleTrks,seleTrkFlags,mcArray);
782 Bool_t seleCascFlags[nCascs];
784 SelectCascade(aodEvent,nCascs,nSeleCasc,seleCascFlags,mcArray);
786 Int_t runnumber_offset = 0;
787 Int_t runnumber = aodEvent->GetRunNumber();
788 if(runnumber<=131000&&runnumber>=114000){
789 runnumber_offset = 114000;
790 }
else if(runnumber<=196000&&runnumber>=195000){
791 runnumber_offset = 195000;
792 }
else if(runnumber<=170593&&runnumber>=167902){
793 runnumber_offset = 167902;
795 fHistonElevsRunNumber->Fill(runnumber-runnumber_offset,nSeleTrks);
796 fHistonXivsRunNumber->Fill(runnumber-runnumber_offset,nSeleCasc);
801 for (Int_t icasc = 0; icasc<nCascs; icasc++) {
802 if(!seleCascFlags[icasc])
continue;
803 AliAODcascade *casc = aodEvent->GetCascade(icasc);
806 AliAODTrack *cptrack = (AliAODTrack*)(casc->GetDaughter(0));
807 AliAODTrack *cntrack = (AliAODTrack*)(casc->GetDaughter(1));
808 AliAODTrack *cbtrack = (AliAODTrack*)(casc->GetDecayVertexXi()->GetDaughter(0));
813 for (Int_t itrk = 0; itrk<nTracks; itrk++) {
814 if(!seleTrkFlags[itrk])
continue;
815 AliAODTrack *trk = (AliAODTrack*)aodEvent->GetTrack(itrk);
816 if(trk->GetID()<0)
continue;
818 Int_t cpid = cptrack->GetID();
819 Int_t cnid = cntrack->GetID();
820 Int_t cbid = cbtrack->GetID();
821 Int_t lpid = trk->GetID();
822 if((cpid==lpid)||(cnid==lpid)||(cbid==lpid))
continue;
826 AliAODVertex *secVert = ReconstructSecondaryVertex(casc,trk,aodEvent);
827 if(!secVert)
continue;
834 FillROOTObjects(exobj, casc,trk,mcArray);
836 exobj->GetSecondaryVtx()->RemoveDaughters();
838 delete exobj;exobj=NULL;
844 fEventInfo->SetString(Form(
"Ev%d_esd%d_E%d_C%d",AliAnalysisManager::GetAnalysisManager()->GetNcalls(),((AliAODHeader*)aodEvent->GetHeader())->GetEventNumberESDFile(),fElectronTracks->GetEntries(),fCascadeTracks1->GetEntries()+fCascadeTracks2->GetEntries()));
845 Int_t ind=GetPoolIndex(fVtxZ,fCentrality);
846 if(ind>=0 && ind<fNOfPools){
847 if(fEventBuffer[ind]->GetEntries() >= fNumberOfEventsForMixing){
848 DoEventMixingWithPools(ind);
849 if(fEventBuffer[ind]->GetEntries() >= 20*fNumberOfEventsForMixing){
853 fEventBuffer[ind]->Fill();
866 const char* nameoutput = GetOutputSlot(4)->GetContainer()->GetName();
867 fVariablesTree =
new TTree(nameoutput,
"Candidates variables tree");
870 TString * fCandidateVariableNames =
new TString[nVar];
872 fCandidateVariableNames[ 0]=
"Centrality";
873 fCandidateVariableNames[ 1]=
"InvMassEleXi";
874 fCandidateVariableNames[ 2]=
"EleXiPt";
875 fCandidateVariableNames[ 3]=
"EleXiPx";
876 fCandidateVariableNames[ 4]=
"EleXiPy";
877 fCandidateVariableNames[ 5]=
"EleXiPz";
878 fCandidateVariableNames[ 6]=
"ElePx";
879 fCandidateVariableNames[ 7]=
"ElePy";
880 fCandidateVariableNames[ 8]=
"ElePz";
881 fCandidateVariableNames[ 9]=
"XiPx";
882 fCandidateVariableNames[10]=
"XiPy";
883 fCandidateVariableNames[11]=
"XiPz";
884 fCandidateVariableNames[12]=
"XiCharge";
885 fCandidateVariableNames[13]=
"MassXi";
886 fCandidateVariableNames[14]=
"MassLambda";
887 fCandidateVariableNames[15]=
"Eled0";
888 fCandidateVariableNames[16]=
"Xid0";
889 fCandidateVariableNames[17]=
"nSigmaTPCele";
890 fCandidateVariableNames[18]=
"nSigmaTOFele";
891 fCandidateVariableNames[19]=
"nSigmaTPCpr_etrk";
892 fCandidateVariableNames[20]=
"nSigmaTOFpr_etrk";
893 fCandidateVariableNames[21]=
"nSigmaTPCka_etrk";
894 fCandidateVariableNames[22]=
"nSigmaTOFka_etrk";
895 fCandidateVariableNames[23]=
"nSigmaTPCv0pr";
896 fCandidateVariableNames[24]=
"nSigmaTOFv0pr";
897 fCandidateVariableNames[25]=
"nSigmaTPCv0pi";
898 fCandidateVariableNames[26]=
"nSigmaTOFv0pi";
899 fCandidateVariableNames[27]=
"nSigmaTPCbachpi";
900 fCandidateVariableNames[28]=
"nSigmaTOFbachpi";
901 fCandidateVariableNames[29]=
"EleCharge";
902 fCandidateVariableNames[30]=
"Mixing";
903 fCandidateVariableNames[31]=
"DcaXiDaughters";
904 fCandidateVariableNames[32]=
"DcaV0Daughters";
905 fCandidateVariableNames[33]=
"DecayLengthXi";
906 fCandidateVariableNames[34]=
"CosPointingAngleXi";
907 fCandidateVariableNames[35]=
"DcaV0toPrimVertex";
908 fCandidateVariableNames[36]=
"DcaPostoPrimVertex";
909 fCandidateVariableNames[37]=
"DcaNegtoPrimVertex";
910 fCandidateVariableNames[38]=
"DcaBachtoPrimVertex";
911 fCandidateVariableNames[39]=
"DecayLengthV0";
912 fCandidateVariableNames[40]=
"CosPointingAngleV0";
914 fCandidateVariableNames[41]=
"mcpdgxic";
915 fCandidateVariableNames[42]=
"mclabxic";
916 fCandidateVariableNames[43]=
"mcxicpx";
917 fCandidateVariableNames[44]=
"mcxicpy";
918 fCandidateVariableNames[45]=
"mcxicpz";
919 fCandidateVariableNames[46]=
"mcelepx";
920 fCandidateVariableNames[47]=
"mcelepy";
921 fCandidateVariableNames[48]=
"mcelepz";
922 fCandidateVariableNames[49]=
"mccascpx";
923 fCandidateVariableNames[50]=
"mccascpy";
924 fCandidateVariableNames[51]=
"mccascpz";
926 fCandidateVariableNames[52]=
"mcpdgele";
927 fCandidateVariableNames[53]=
"mcpdgcasc";
928 fCandidateVariableNames[54]=
"mcpdgmomele";
929 fCandidateVariableNames[55]=
"mcpdgmomcasc";
930 fCandidateVariableNames[56]=
"mcpdggrmomele";
931 fCandidateVariableNames[57]=
"mcpdggrmomcasc";
932 fCandidateVariableNames[58]=
"mcngenele";
933 fCandidateVariableNames[59]=
"mcngencasc";
935 fCandidateVariableNames[60]=
"nSigmaTPCpi_etrk";
936 fCandidateVariableNames[61]=
"nSigmaTOFpi_etrk";
938 fCandidateVariableNames[62]=
"V0PosPx";
939 fCandidateVariableNames[63]=
"V0PosPy";
940 fCandidateVariableNames[64]=
"V0PosPz";
941 fCandidateVariableNames[65]=
"V0NegPx";
942 fCandidateVariableNames[66]=
"V0NegPy";
943 fCandidateVariableNames[67]=
"V0NegPz";
944 fCandidateVariableNames[68]=
"V0VertX";
945 fCandidateVariableNames[69]=
"V0VertY";
946 fCandidateVariableNames[70]=
"V0VertZ";
947 fCandidateVariableNames[71]=
"BachPx";
948 fCandidateVariableNames[72]=
"BachPy";
949 fCandidateVariableNames[73]=
"BachPz";
950 fCandidateVariableNames[74]=
"XiVertX";
951 fCandidateVariableNames[75]=
"XiVertY";
952 fCandidateVariableNames[76]=
"XiVertZ";
953 fCandidateVariableNames[77]=
"PrimVertX";
954 fCandidateVariableNames[78]=
"PrimVertY";
955 fCandidateVariableNames[79]=
"PrimVertZ";
957 fCandidateVariableNames[80]=
"MassOmega";
959 fCandidateVariableNames[81]=
"EleITSMatch";
960 fCandidateVariableNames[82]=
"BachITSMatch";
961 fCandidateVariableNames[83]=
"V0PosITSMatch";
962 fCandidateVariableNames[84]=
"V0NegITSMatch";
964 fCandidateVariableNames[85]=
"TPCNclsF";
965 fCandidateVariableNames[86]=
"TPCNcls";
966 fCandidateVariableNames[87]=
"TPCNclsS";
967 fCandidateVariableNames[88]=
"IsXiPeakReagion";
970 fCandidateVariableNames[89]=
"EvNumber";
972 for (Int_t ivar=0; ivar<nVar; ivar++) {
988 for(Int_t i=0;i<90;i++){
993 AliAODTrack *cptrack = (AliAODTrack*)(casc->GetDaughter(0));
994 AliAODTrack *cntrack = (AliAODTrack*)(casc->GetDaughter(1));
995 AliAODTrack *cbtrack = (AliAODTrack*)(casc->GetDecayVertexXi()->GetDaughter(0));
996 if(cptrack->Charge()<0 && cntrack->Charge()>0){
997 cptrack = (AliAODTrack*)(casc->GetDaughter(1));
998 cntrack = (AliAODTrack*)(casc->GetDaughter(0));
1005 Double_t posVtx[3] = {0.,0.,0.};
1006 fVtx1->GetXYZ(posVtx);
1010 UInt_t pdgdg[2]={11,3312};
1024 if(casc->ChargeXi()<0)
1031 Double_t nSigmaTPCele = -9999.;
1032 Double_t nSigmaTOFele = -9999.;
1054 Double_t nSigmaTPCv0pr=-9999.;
1055 Double_t nSigmaTOFv0pr=-9999.;
1056 Double_t nSigmaTPCv0pi=-9999.;
1057 Double_t nSigmaTOFv0pi=-9999.;
1058 Double_t nSigmaTPCbachpi=-9999.;
1059 Double_t nSigmaTOFbachpi=-9999.;
1062 if(casc->ChargeXi()>0){
1097 AliAODMCParticle *mcxic = 0;
1098 AliAODMCParticle *mcele = 0;
1099 AliAODMCParticle *mccasc = 0;
1101 Int_t mcpdgele_array[100];
1102 Int_t mcpdgcasc_array[100];
1103 Int_t mclabelele_array[100];
1104 Int_t mclabelcasc_array[100];
1105 Int_t mcngen_ele = -9999;
1106 Int_t mcngen_casc = -9999;
1110 mclabxic =
MatchToMC(exobj,mcArray,mcpdgele_array, mcpdgcasc_array,mclabelele_array,mclabelcasc_array,mcngen_ele,mcngen_casc);
1113 mcxic = (AliAODMCParticle*) mcArray->At(mclabxic);
1114 if(mclabelele_array[0]>=0)
1115 mcele = (AliAODMCParticle*) mcArray->At(mclabelele_array[0]);
1116 if(mclabelcasc_array[0]>=0)
1117 mccasc = (AliAODMCParticle*) mcArray->At(mclabelcasc_array[0]);
1182 cont[0] = exobj->InvMass(2,pdgdg);
1183 cont[1] = exobj->Pt();
1188 cont2[0] = exobj->InvMass(2,pdgdg);
1189 cont2[1] = trk->Pt();
1192 Double_t cont_eleptvseta[3];
1193 cont_eleptvseta[0] = trk->Pt();
1194 cont_eleptvseta[1] = trk->Eta();
1197 Double_t cont_eleptvsxipt[3];
1198 cont_eleptvsxipt[0] = trk->Pt();
1199 cont_eleptvsxipt[1] = sqrt(casc->MomXiX()*casc->MomXiX()+casc->MomXiY()*casc->MomXiY());
1202 Double_t cont_eleptvsd0[3];
1203 cont_eleptvsd0[0] = trk->Pt();
1204 cont_eleptvsd0[1] = exobj->Getd0Prong(0)*trk->Charge();
1209 if(trk->Charge()*casc->ChargeXi()<0){
1219 for(Int_t ih=0;ih<23;ih++){
1220 Double_t cont_eleptvscutvars[3];
1221 cont_eleptvscutvars[0] = trk->Pt();
1225 cont_eleptvscutvars[1] = trk->GetTPCNcls();
1227 cont_eleptvscutvars[1] = trk->GetTPCsignalN();
1229 cont_eleptvscutvars[1] = nSigmaTPCele;
1231 cont_eleptvscutvars[1] = nSigmaTOFele;
1233 cont_eleptvscutvars[1] = trk->Eta();
1235 cont_eleptvscutvars[1] = trk->GetITSNcls();
1237 if(casc->ChargeXi()<0)
1238 cont_eleptvscutvars[1] = casc->MassLambda();
1240 cont_eleptvscutvars[1] = casc->MassAntiLambda();
1242 cont_eleptvscutvars[1] = casc->MassXi();
1245 lPosV0[0] = casc->DecayVertexV0X();
1246 lPosV0[1] = casc->DecayVertexV0Y();
1247 lPosV0[2] = casc->DecayVertexV0Z();
1248 cont_eleptvscutvars[1] = TMath::Sqrt(lPosV0[0]*lPosV0[0]+lPosV0[1]*lPosV0[1]);
1251 lPosXi[0] = casc->DecayVertexXiX();
1252 lPosXi[1] = casc->DecayVertexXiY();
1253 lPosXi[2] = casc->DecayVertexXiZ();
1254 cont_eleptvscutvars[1] = TMath::Sqrt(lPosXi[0]*lPosXi[0]+lPosXi[1]*lPosXi[1]);
1256 cont_eleptvscutvars[1] = casc->DcaV0Daughters();
1258 cont_eleptvscutvars[1] = casc->DcaXiDaughters();
1260 cont_eleptvscutvars[1] = casc->DcaBachToPrimVertex();
1262 if(casc->ChargeXi()<0.)
1263 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1265 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1267 if(casc->ChargeXi()>0.)
1268 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1270 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1272 cont_eleptvscutvars[1] = casc->CosPointingAngle(casc->GetDecayVertexXi());
1274 cont_eleptvscutvars[1] = casc->CosPointingAngleXi(posVtx[0],posVtx[1],posVtx[2]);
1276 cont_eleptvscutvars[1] = nSigmaTPCv0pr;
1278 cont_eleptvscutvars[1] = nSigmaTPCv0pi;
1280 cont_eleptvscutvars[1] = nSigmaTPCbachpi;
1282 cont_eleptvscutvars[1] = casc->Eta();
1284 cont_eleptvscutvars[1] = 0.5*TMath::Log((sqrt(casc->Ptot2Xi())+casc->MomXiZ())/(sqrt(casc->Ptot2Xi())-casc->MomXiZ()));
1286 Double_t xipx = exobj->PxProng(1);
1287 Double_t xipy = exobj->PyProng(1);
1288 Double_t xipz = exobj->PzProng(1);
1289 Double_t epx = exobj->PxProng(0);
1290 Double_t epy = exobj->PyProng(0);
1291 Double_t epz = exobj->PzProng(0);
1292 cont_eleptvscutvars[1] = acos((xipx*epx+xipy*epy+xipz*epz)/sqrt(xipx*xipx+xipy*xipy+xipz*xipz)/sqrt(epx*epx+epy*epy+epz*epz));
1294 cont_eleptvscutvars[1] = -9999.;
1311 for(Int_t ih=0;ih<23;ih++){
1312 Double_t cont_eleptvscutvars[3];
1313 cont_eleptvscutvars[0] = trk->Pt();
1317 cont_eleptvscutvars[1] = trk->GetTPCNcls();
1319 cont_eleptvscutvars[1] = trk->GetTPCsignalN();
1321 cont_eleptvscutvars[1] = nSigmaTPCele;
1323 cont_eleptvscutvars[1] = nSigmaTOFele;
1325 cont_eleptvscutvars[1] = trk->Eta();
1327 cont_eleptvscutvars[1] = trk->GetITSNcls();
1329 if(casc->ChargeXi()<0)
1330 cont_eleptvscutvars[1] = casc->MassLambda();
1332 cont_eleptvscutvars[1] = casc->MassAntiLambda();
1334 cont_eleptvscutvars[1] = casc->MassXi();
1337 lPosV0[0] = casc->DecayVertexV0X();
1338 lPosV0[1] = casc->DecayVertexV0Y();
1339 lPosV0[2] = casc->DecayVertexV0Z();
1340 cont_eleptvscutvars[1] = TMath::Sqrt(lPosV0[0]*lPosV0[0]+lPosV0[1]*lPosV0[1]);
1343 lPosXi[0] = casc->DecayVertexXiX();
1344 lPosXi[1] = casc->DecayVertexXiY();
1345 lPosXi[2] = casc->DecayVertexXiZ();
1346 cont_eleptvscutvars[1] = TMath::Sqrt(lPosXi[0]*lPosXi[0]+lPosXi[1]*lPosXi[1]);
1348 cont_eleptvscutvars[1] = casc->DcaV0Daughters();
1350 cont_eleptvscutvars[1] = casc->DcaXiDaughters();
1352 cont_eleptvscutvars[1] = casc->DcaBachToPrimVertex();
1354 if(casc->ChargeXi()<0.)
1355 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1357 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1359 if(casc->ChargeXi()>0.)
1360 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1362 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1364 cont_eleptvscutvars[1] = casc->CosPointingAngle(casc->GetDecayVertexXi());
1366 cont_eleptvscutvars[1] = casc->CosPointingAngleXi(posVtx[0],posVtx[1],posVtx[2]);
1368 cont_eleptvscutvars[1] = nSigmaTPCv0pr;
1370 cont_eleptvscutvars[1] = nSigmaTPCv0pi;
1372 cont_eleptvscutvars[1] = nSigmaTPCbachpi;
1374 cont_eleptvscutvars[1] = casc->Eta();
1376 cont_eleptvscutvars[1] = 0.5*TMath::Log((sqrt(casc->Ptot2Xi())+casc->MomXiZ())/(sqrt(casc->Ptot2Xi())-casc->MomXiZ()));
1378 Double_t xipx = exobj->PxProng(1);
1379 Double_t xipy = exobj->PyProng(1);
1380 Double_t xipz = exobj->PzProng(1);
1381 Double_t epx = exobj->PxProng(0);
1382 Double_t epy = exobj->PyProng(0);
1383 Double_t epz = exobj->PzProng(0);
1384 cont_eleptvscutvars[1] = acos((xipx*epx+xipy*epy+xipz*epz)/sqrt(xipx*xipx+xipy*xipy+xipz*xipz)/sqrt(epx*epx+epy*epy+epz*epz));
1386 cont_eleptvscutvars[1] = -9999.;
1396 Int_t pdgcode = mcxic->GetPdgCode();
1397 cont2[1] = mcele->Pt();
1398 if(abs(pdgcode)==4132 && abs(mcpdgele_array[1])==4132 && abs(mcpdgcasc_array[1])==4132){
1409 Double_t cont_eleptvsxiptvsxicpt[4];
1410 cont_eleptvsxiptvsxicpt[0] = cont_eleptvsxipt[0];
1411 cont_eleptvsxiptvsxicpt[1] = cont_eleptvsxipt[1];
1412 cont_eleptvsxiptvsxicpt[2] = mcxic->Pt();
1413 cont_eleptvsxiptvsxicpt[3] = cont_eleptvsxipt[2];
1416 Int_t labmotherxic = mcxic->GetMother();
1417 if(labmotherxic>=0){
1418 AliAODMCParticle *motherxic = (AliAODMCParticle*)mcArray->At(labmotherxic);
1419 Int_t pdgmotherxic = motherxic->GetPdgCode();
1420 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){
1429 for(Int_t ih=0;ih<23;ih++){
1430 Double_t cont_eleptvscutvars[3];
1431 cont_eleptvscutvars[0] = trk->Pt();
1435 cont_eleptvscutvars[1] = trk->GetTPCNcls();
1437 cont_eleptvscutvars[1] = trk->GetTPCsignalN();
1439 cont_eleptvscutvars[1] = nSigmaTPCele;
1441 cont_eleptvscutvars[1] = nSigmaTOFele;
1443 cont_eleptvscutvars[1] = trk->Eta();
1445 cont_eleptvscutvars[1] = trk->GetITSNcls();
1447 if(casc->ChargeXi()<0)
1448 cont_eleptvscutvars[1] = casc->MassLambda();
1450 cont_eleptvscutvars[1] = casc->MassAntiLambda();
1452 cont_eleptvscutvars[1] = casc->MassXi();
1455 lPosV0[0] = casc->DecayVertexV0X();
1456 lPosV0[1] = casc->DecayVertexV0Y();
1457 lPosV0[2] = casc->DecayVertexV0Z();
1458 cont_eleptvscutvars[1] = TMath::Sqrt(lPosV0[0]*lPosV0[0]+lPosV0[1]*lPosV0[1]);
1461 lPosXi[0] = casc->DecayVertexXiX();
1462 lPosXi[1] = casc->DecayVertexXiY();
1463 lPosXi[2] = casc->DecayVertexXiZ();
1464 cont_eleptvscutvars[1] = TMath::Sqrt(lPosXi[0]*lPosXi[0]+lPosXi[1]*lPosXi[1]);
1466 cont_eleptvscutvars[1] = casc->DcaV0Daughters();
1468 cont_eleptvscutvars[1] = casc->DcaXiDaughters();
1470 cont_eleptvscutvars[1] = casc->DcaBachToPrimVertex();
1472 if(casc->ChargeXi()<0.)
1473 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1475 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1477 if(casc->ChargeXi()>0.)
1478 cont_eleptvscutvars[1] = casc->DcaPosToPrimVertex();
1480 cont_eleptvscutvars[1] = casc->DcaNegToPrimVertex();
1482 cont_eleptvscutvars[1] = casc->CosPointingAngle(casc->GetDecayVertexXi());
1484 cont_eleptvscutvars[1] = casc->CosPointingAngleXi(posVtx[0],posVtx[1],posVtx[2]);
1486 cont_eleptvscutvars[1] = nSigmaTPCv0pr;
1488 cont_eleptvscutvars[1] = nSigmaTPCv0pi;
1490 cont_eleptvscutvars[1] = nSigmaTPCbachpi;
1492 cont_eleptvscutvars[1] = casc->Eta();
1494 cont_eleptvscutvars[1] = 0.5*TMath::Log((sqrt(casc->Ptot2Xi())+casc->MomXiZ())/(sqrt(casc->Ptot2Xi())-casc->MomXiZ()));
1496 Double_t xipx = exobj->PxProng(1);
1497 Double_t xipy = exobj->PyProng(1);
1498 Double_t xipz = exobj->PzProng(1);
1499 Double_t epx = exobj->PxProng(0);
1500 Double_t epy = exobj->PyProng(0);
1501 Double_t epz = exobj->PzProng(0);
1502 cont_eleptvscutvars[1] = acos((xipx*epx+xipy*epy+xipz*epz)/sqrt(xipx*xipx+xipy*xipy+xipz*xipz)/sqrt(epx*epx+epy*epy+epz*epz));
1504 cont_eleptvscutvars[1] = -9999.;
1517 if(trk->Charge()*casc->ChargeXi()<0){
1543 for(Int_t i=0;i<89;i++){
1547 Double_t pxe = trke->Px();
1548 Double_t pye = trke->Py();
1549 Double_t pze = trke->Pz();
1550 Double_t mome = sqrt(pxe*pxe+pye*pye+pze*pze);
1551 Double_t Ee = sqrt(mome*mome+0.000510998928*0.000510998928);
1553 Double_t pxv = casc->Px();
1554 Double_t pyv = casc->Py();
1555 Double_t pzv = casc->Pz();
1556 Double_t momv = sqrt(pxv*pxv+pyv*pyv+pzv*pzv);
1557 Double_t Ev = sqrt(momv*momv+1.32171*1.32171);
1559 Double_t cosoa = (pxe*pxv+pye*pyv+pze*pzv)/mome/momv;
1561 Double_t pxsum = pxe + pxv;
1562 Double_t pysum = pye + pyv;
1563 Double_t pzsum = pze + pzv;
1564 Double_t Esum = Ee + Ev;
1566 Double_t mexi = sqrt(Esum*Esum-pxsum*pxsum-pysum*pysum-pzsum*pzsum);
1568 Double_t posVtx[3] = {0.,0.,0.};
1569 fVtx1->GetXYZ(posVtx);
1572 UInt_t pdgdg[2]={11,3312};
1601 cont[1] = sqrt(pxsum*pxsum+pysum*pysum);
1607 cont2[1] = sqrt(pxe*pxe+pye*pye);
1610 Double_t cont_eleptvseta[3];
1611 cont_eleptvseta[0] = trke->Pt();
1612 cont_eleptvseta[1] = trke->Eta();
1615 Double_t cont_eleptvsxipt[3];
1616 cont_eleptvsxipt[0] = trke->Pt();
1617 cont_eleptvsxipt[1] = casc->Pt();
1620 Double_t cont_eleptvsd0[3];
1621 cont_eleptvsd0[0] = trke->Pt();
1622 cont_eleptvsd0[1] = 0.;
1625 if(((
int)trke->T())*chargexi<0){
1660 const char* nameoutput = GetOutputSlot(5)->GetContainer()->GetName();
1664 TString * fCandidateVariableNames =
new TString[nVar];
1666 fCandidateVariableNames[ 0]=
"ElePx";
1667 fCandidateVariableNames[ 1]=
"ElePy";
1668 fCandidateVariableNames[ 2]=
"ElePz";
1669 fCandidateVariableNames[ 3]=
"TPCChi2overNDF";
1670 fCandidateVariableNames[ 4]=
"ITSNcls";
1671 fCandidateVariableNames[ 5]=
"TPCNcls";
1672 fCandidateVariableNames[ 6]=
"TPCNclsPID";
1673 fCandidateVariableNames[ 7]=
"TPCNclsRatio";
1674 fCandidateVariableNames[ 8]=
"d0R";
1675 fCandidateVariableNames[ 9]=
"d0Z";
1676 fCandidateVariableNames[10]=
"ITSClusterMap";
1677 fCandidateVariableNames[11]=
"nSigmaTPCele";
1678 fCandidateVariableNames[12]=
"nSigmaTOFele";
1679 fCandidateVariableNames[13]=
"nSigmaTPCpi";
1680 fCandidateVariableNames[14]=
"nSigmaTPCka";
1681 fCandidateVariableNames[15]=
"nSigmaTPCpr";
1682 fCandidateVariableNames[16]=
"EvNumber";
1683 fCandidateVariableNames[17]=
"EleCharge";
1684 fCandidateVariableNames[18]=
"ElePdgCode";
1685 fCandidateVariableNames[19]=
"EleMotherPdgCode";
1686 fCandidateVariableNames[20]=
"mcelepx";
1687 fCandidateVariableNames[21]=
"mcelepy";
1688 fCandidateVariableNames[22]=
"mcelepz";
1689 fCandidateVariableNames[23]=
"Centrality";
1690 fCandidateVariableNames[24]=
"PrimVertZ";
1691 fCandidateVariableNames[25]=
"RunNumber";
1693 for (Int_t ivar=0; ivar<nVar; ivar++) {
1712 fElectronTracks->AddLast(
new TLorentzVector(trk->Px(),trk->Py(),trk->Pz(),trk->Charge()));
1717 Int_t pdgEle = -9999;
1718 Int_t pdgEleMother = -9999;
1719 Float_t mcepx = -9999;
1720 Float_t mcepy = -9999;
1721 Float_t mcepz = -9999;
1724 Int_t labEle = trk->GetLabel();
1725 if(labEle<0)
return;
1726 AliAODMCParticle *mcetrk = (AliAODMCParticle*)mcArray->At(labEle);
1728 pdgEle = mcetrk->GetPdgCode();
1729 if(abs(pdgEle)!=11)
return;
1733 Bool_t hfe_flag = kFALSE;
1734 Int_t labemother = mcetrk->GetMother();
1736 AliAODMCParticle *motherele = (AliAODMCParticle*)mcArray->At(labemother);
1737 if(!motherele)
return;
1738 pdgEleMother = motherele->GetPdgCode();
1739 if(abs(pdgEleMother)>4000&&abs(pdgEleMother)<4400){
1743 if(!hfe_flag)
return;
1744 mcepx = mcetrk->Px();
1745 mcepy = mcetrk->Py();
1746 mcepz = mcetrk->Pz();
1750 for(Int_t i=0;i<26;i++){
1761 if(trk->GetTPCNclsF()>0)
1764 Double_t d0z0[2],covd0z0[3];
1765 trk->PropagateToDCA(
fVtx1,
fBzkG,kVeryBig,d0z0,covd0z0);
1769 Int_t itsmap = trk->GetITSClusterMap();
1772 Bool_t spdfirst = (itsmap & bit1) == bit1;
1773 Bool_t spdsecond = (itsmap & bit2) == bit2;
1811 const char* nameoutput = GetOutputSlot(6)->GetContainer()->GetName();
1815 TString * fCandidateVariableNames =
new TString[nVar];
1817 fCandidateVariableNames[ 0]=
"Centrality";
1818 fCandidateVariableNames[ 1]=
"InvMassXi";
1819 fCandidateVariableNames[ 2]=
"XiPx";
1820 fCandidateVariableNames[ 3]=
"XiPy";
1821 fCandidateVariableNames[ 4]=
"XiPz";
1822 fCandidateVariableNames[ 5]=
"InvMassLambda";
1823 fCandidateVariableNames[ 6]=
"DcaXiDaughters";
1824 fCandidateVariableNames[ 7]=
"DcaV0Daughters";
1825 fCandidateVariableNames[ 8]=
"DecayLengthXi";
1826 fCandidateVariableNames[ 9]=
"CosPointingAngleXi";
1827 fCandidateVariableNames[10]=
"DcaV0toPrimVertex";
1828 fCandidateVariableNames[11]=
"DcaPostoPrimVertex";
1829 fCandidateVariableNames[12]=
"DcaNegtoPrimVertex";
1830 fCandidateVariableNames[13]=
"DcaBachtoPrimVertex";
1831 fCandidateVariableNames[14]=
"DecayLengthV0";
1832 fCandidateVariableNames[15]=
"CosPointingAngleV0";
1833 fCandidateVariableNames[16]=
"XiCharge";
1834 fCandidateVariableNames[17]=
"XiPdgCode";
1835 fCandidateVariableNames[18]=
"XiMotherPdgCode";
1836 fCandidateVariableNames[19]=
"mcxipx";
1837 fCandidateVariableNames[20]=
"mcxipy";
1838 fCandidateVariableNames[21]=
"mcxipz";
1839 fCandidateVariableNames[22]=
"RunNumber";
1840 fCandidateVariableNames[23]=
"PrimVertZ";
1841 fCandidateVariableNames[24]=
"EvNumber";
1843 for (Int_t ivar=0; ivar<nVar; ivar++) {
1857 fHistoXiMassvsPt->Fill(casc->MassXi(),sqrt(casc->MomXiX()*casc->MomXiX()+casc->MomXiY()*casc->MomXiY()));
1858 fHistoOmegaMassvsPt->Fill(casc->MassOmega(),sqrt(casc->MomXiX()*casc->MomXiX()+casc->MomXiY()*casc->MomXiY()));
1859 Double_t momxix = casc->MomXiX();
1860 Double_t momxiy = casc->MomXiY();
1861 Double_t phi_alice = atan2(momxiy,momxix);
1862 if(phi_alice<0.) phi_alice += 2 * M_PI;
1863 fHistoXiQovPtvsPhi->Fill(phi_alice,(Double_t)casc->ChargeXi()/sqrt(momxix*momxix+momxiy*momxiy));
1865 Int_t xipdgcode = -9999;
1866 Int_t ximotherpdgcode = -9999;
1867 Float_t mcxipx = -9999.;
1868 Float_t mcxipy = -9999.;
1869 Float_t mcxipz = -9999.;
1871 Int_t pdgDgcasc[2]={211,3122};
1872 Int_t pdgDgv0[2]={2212,211};
1874 if(labcasc<0)
return;
1876 fHistoXiMassvsPtMCS->Fill(casc->MassXi(),sqrt(casc->MomXiX()*casc->MomXiX()+casc->MomXiY()*casc->MomXiY()));
1878 AliAODMCParticle *mccasctrk = (AliAODMCParticle*)mcArray->At(labcasc);
1879 if(!mccasctrk)
return;
1881 Bool_t hfxi_flag = kFALSE;
1882 xipdgcode = mccasctrk->GetPdgCode();
1883 Int_t labcascmother = mccasctrk->GetMother();
1884 if(labcascmother>=0){
1885 AliAODMCParticle *mothercasc = (AliAODMCParticle*)mcArray->At(labcascmother);
1887 ximotherpdgcode = mothercasc->GetPdgCode();
1888 if(abs(ximotherpdgcode)>4000&&abs(ximotherpdgcode)<4400){
1893 if(!hfxi_flag)
return;
1894 mcxipx = mccasctrk->Px();
1895 mcxipy = mccasctrk->Py();
1896 mcxipz = mccasctrk->Pz();
1900 Double_t xyz[3], pxpypz[3], cv[21]; Short_t sign;
1901 xyz[0]=casc->DecayVertexXiX();
1902 xyz[1]=casc->DecayVertexXiY();
1903 xyz[2]=casc->DecayVertexXiZ();
1904 pxpypz[0]=casc->MomXiX();
1905 pxpypz[1]=casc->MomXiY();
1906 pxpypz[2]=casc->MomXiZ();
1907 casc->GetCovarianceXYZPxPyPz(cv);
1908 sign=casc->ChargeXi();
1909 AliExternalTrackParam *trackCasc =
new AliExternalTrackParam(xyz,pxpypz,cv,sign);
1910 trackCasc->PropagateToDCA(
fVtx1,
fBzkG,kVeryBig);
1911 Double_t momcasc_new[3]={-9999,-9999,-9999.};
1912 trackCasc->GetPxPyPz(momcasc_new);
1915 TLorentzVector *lv =
new TLorentzVector();
1916 lv->SetXYZM(momcasc_new[0],momcasc_new[1],momcasc_new[2],casc->MassXi());
1917 if(casc->ChargeXi()>0)
1925 for(Int_t i=0;i<25;i++){
1928 Double_t posVtx[3] = {0.,0.,0.};
1929 fVtx1->GetXYZ(posVtx);
1936 if(casc->ChargeXi()<0)
1971 const char* nameoutput = GetOutputSlot(7)->GetContainer()->GetName();
1975 TString * fCandidateVariableNames =
new TString[nVar];
1977 fCandidateVariableNames[ 0]=
"Centrality";
1978 fCandidateVariableNames[ 1]=
"DecayType";
1979 fCandidateVariableNames[ 2]=
"XicPx";
1980 fCandidateVariableNames[ 3]=
"XicPy";
1981 fCandidateVariableNames[ 4]=
"XicPz";
1982 fCandidateVariableNames[ 5]=
"ElePx";
1983 fCandidateVariableNames[ 6]=
"ElePy";
1984 fCandidateVariableNames[ 7]=
"ElePz";
1985 fCandidateVariableNames[ 8]=
"CascPx";
1986 fCandidateVariableNames[ 9]=
"CascPy";
1987 fCandidateVariableNames[10]=
"CascPz";
1988 fCandidateVariableNames[11]=
"PdgCode";
1989 fCandidateVariableNames[12]=
"ElePdgCode";
1990 fCandidateVariableNames[13]=
"CascPdgCode";
1991 fCandidateVariableNames[14]=
"RunNumber";
1992 fCandidateVariableNames[15]=
"EvNumber";
1994 for (Int_t ivar=0; ivar<nVar; ivar++) {
2006 if(!mcepart)
return;
2007 if(!mccascpart)
return;
2009 for(Int_t i=0;i<14;i++){
2030 Double_t epx = mcepart->Px();
2031 Double_t epy = mcepart->Py();
2032 Double_t epz = mcepart->Pz();
2033 Double_t eE = sqrt(epx*epx+epy*epy+epz*epz+0.000511*0.000511);
2034 Double_t cascpx = mccascpart->Px();
2035 Double_t cascpy = mccascpart->Py();
2036 Double_t cascpz = mccascpart->Pz();
2037 Double_t cascE = sqrt(cascpx*cascpx+cascpy*cascpy+cascpz*cascpz+1.32171*1.32171);
2039 Double_t InvMassEleXi = sqrt(pow(eE+cascE,2)-pow(epx+cascpx,2)-pow(epy+cascpy,2)-pow(epz+cascpz,2));
2042 cont[0] = InvMassEleXi;
2043 cont[1] = mcpart->Pt();
2046 cont2[0] = InvMassEleXi;
2047 cont2[1] = mcepart->Pt();
2049 Double_t cont_eleptvseta[3];
2050 cont_eleptvseta[0] = mcepart->Pt();
2051 cont_eleptvseta[1] = mcepart->Eta();
2053 Double_t cont_eleptvsxipt[3];
2054 cont_eleptvsxipt[0] = mcepart->Pt();
2055 cont_eleptvsxipt[1] = mccascpart->Pt();
2057 Double_t cont_eleptvsxiptvsxicpt[4];
2058 cont_eleptvsxiptvsxicpt[0] = mcepart->Pt();
2059 cont_eleptvsxiptvsxicpt[1] = mccascpart->Pt();
2060 cont_eleptvsxiptvsxicpt[2] = mcpart->Pt();
2064 contmc[0] = mcpart->Pt();
2065 contmc[1] = mcpart->Y();
2067 Double_t contmcele[3];
2068 contmcele[0] = mcepart->Pt();
2069 contmcele[1] = mcepart->Eta();
2075 esdcuts->GetEtaRange(etamin,etamax);
2085 if(fabs(mcepart->Eta())<etamax){
2089 if(InvMassEleXi<2.5){
2095 if(fabs(mcpart->Y())<0.7){
2096 if(InvMassEleXi<2.5){
2113 const char* nameoutput = GetOutputSlot(9)->GetContainer()->GetName();
2117 TString * fCandidateVariableNames =
new TString[nVar];
2119 fCandidateVariableNames[ 0]=
"Centrality";
2120 fCandidateVariableNames[ 1]=
"ElePx";
2121 fCandidateVariableNames[ 2]=
"ElePy";
2122 fCandidateVariableNames[ 3]=
"ElePz";
2123 fCandidateVariableNames[ 4]=
"ElePdgCode";
2124 fCandidateVariableNames[ 5]=
"EleMotherPdgCode";
2125 fCandidateVariableNames[ 6]=
"RunNumber";
2126 fCandidateVariableNames[ 7]=
"EvNumber";
2128 for (Int_t ivar=0; ivar<nVar; ivar++) {
2139 if(!mcepart)
return;
2142 Bool_t hfe_flag = kFALSE;
2143 Int_t labemother = mcepart->GetMother();
2144 Int_t pdgmotherele = -9999;
2146 AliAODMCParticle *motherele = (AliAODMCParticle*)mcArray->At(labemother);
2147 pdgmotherele = motherele->GetPdgCode();
2148 if(abs(pdgmotherele)>4000&&abs(pdgmotherele)<4400){
2152 if(!hfe_flag)
return;
2155 contmc[0] = mcepart->Pt();
2156 contmc[1] = mcepart->Eta();
2160 for(Int_t i=0;i<8;i++){
2184 const char* nameoutput = GetOutputSlot(10)->GetContainer()->GetName();
2188 TString * fCandidateVariableNames =
new TString[nVar];
2190 fCandidateVariableNames[ 0]=
"Centrality";
2191 fCandidateVariableNames[ 1]=
"CascPx";
2192 fCandidateVariableNames[ 2]=
"CascPy";
2193 fCandidateVariableNames[ 3]=
"CascPz";
2194 fCandidateVariableNames[ 4]=
"CascPdgCode";
2195 fCandidateVariableNames[ 5]=
"CascMotherPdgCode";
2196 fCandidateVariableNames[ 6]=
"RunNumber";
2197 fCandidateVariableNames[ 7]=
"EvNumber";
2199 for (Int_t ivar=0; ivar<nVar; ivar++) {
2210 if(!mccascpart)
return;
2212 for(Int_t i=0;i<8;i++){
2216 Bool_t hfxi_flag = kFALSE;
2217 Int_t labcascmother = mccascpart->GetMother();
2218 Int_t pdgmothercasc = -9999;
2219 if(labcascmother>=0){
2220 AliAODMCParticle *mothercasc = (AliAODMCParticle*)mcArray->At(labcascmother);
2222 pdgmothercasc = mothercasc->GetPdgCode();
2223 if(abs(pdgmothercasc)>4000&&abs(pdgmothercasc)<4400){
2228 if(!hfxi_flag)
return;
2231 contmc[0] = mccascpart->Pt();
2232 contmc[1] = mccascpart->Eta();
2256 fCEvents =
new TH1F(
"fCEvents",
"conter",18,-0.5,17.5);
2258 fCEvents->GetXaxis()->SetBinLabel(1,
"X1");
2259 fCEvents->GetXaxis()->SetBinLabel(2,
"Analyzed events");
2260 fCEvents->GetXaxis()->SetBinLabel(3,
"AliAODVertex exists");
2261 fCEvents->GetXaxis()->SetBinLabel(4,
"TriggerOK");
2262 fCEvents->GetXaxis()->SetBinLabel(5,
"IsEventSelected");
2263 fCEvents->GetXaxis()->SetBinLabel(6,
"CascadesHF exists");
2264 fCEvents->GetXaxis()->SetBinLabel(7,
"MCarray exists");
2265 fCEvents->GetXaxis()->SetBinLabel(8,
"MCheader exists");
2266 fCEvents->GetXaxis()->SetBinLabel(9,
"triggerClass!=CINT1");
2267 fCEvents->GetXaxis()->SetBinLabel(10,
"triggerMask!=kAnyINT");
2268 fCEvents->GetXaxis()->SetBinLabel(11,
"triggerMask!=kAny");
2269 fCEvents->GetXaxis()->SetBinLabel(12,
"vtxTitle.Contains(Z)");
2270 fCEvents->GetXaxis()->SetBinLabel(13,
"vtxTitle.Contains(3D)");
2271 fCEvents->GetXaxis()->SetBinLabel(14,
"vtxTitle.Doesn'tContain(Z-3D)");
2273 fCEvents->GetXaxis()->SetBinLabel(16,
"!IsEventSelected");
2274 fCEvents->GetXaxis()->SetBinLabel(17,
"triggerMask!=kAnyINT || triggerClass!=CINT1");
2277 fCEvents->GetYaxis()->SetTitle(
"counts");
2279 fHTrigger =
new TH1F(
"fHTrigger",
"counter",18,-0.5,17.5);
2281 fHTrigger->GetXaxis()->SetBinLabel(1,
"X1");
2282 fHTrigger->GetXaxis()->SetBinLabel(2,
"kMB");
2283 fHTrigger->GetXaxis()->SetBinLabel(3,
"kSemiCentral");
2284 fHTrigger->GetXaxis()->SetBinLabel(4,
"kCentral");
2285 fHTrigger->GetXaxis()->SetBinLabel(5,
"kINT7");
2286 fHTrigger->GetXaxis()->SetBinLabel(6,
"kEMC7");
2288 fHTrigger->GetXaxis()->SetBinLabel(8,
"kMB|kSemiCentral|kCentral");
2289 fHTrigger->GetXaxis()->SetBinLabel(9,
"kINT7|kEMC7");
2290 fHTrigger->GetXaxis()->SetBinLabel(11,
"kMB&kSemiCentral");
2291 fHTrigger->GetXaxis()->SetBinLabel(12,
"kMB&kCentral");
2292 fHTrigger->GetXaxis()->SetBinLabel(13,
"kINT7&kEMC7");
2294 fHCentrality =
new TH1F(
"fHCentrality",
"conter",100,0.,100.);
2313 Int_t bins_base[3]= {10 ,100 ,10};
2314 Double_t xmin_base[3]={1.3,0 ,0.00};
2315 Double_t xmax_base[3]={3.3,10. ,100};
2317 fHistoEleXiMass =
new THnSparseF(
"fHistoEleXiMass",
"",3,bins_base,xmin_base,xmax_base);
2319 fHistoEleXiMassRS =
new THnSparseF(
"fHistoEleXiMassRS",
"",3,bins_base,xmin_base,xmax_base);
2321 fHistoEleXiMassWS =
new THnSparseF(
"fHistoEleXiMassWS",
"",3,bins_base,xmin_base,xmax_base);
2323 fHistoEleXiMassRSMix =
new THnSparseF(
"fHistoEleXiMassRSMix",
"",3,bins_base,xmin_base,xmax_base);
2325 fHistoEleXiMassWSMix =
new THnSparseF(
"fHistoEleXiMassWSMix",
"",3,bins_base,xmin_base,xmax_base);
2369 fHistoElePtRS=
new TH2F(
"fHistoElePtRS",
"Right-sign e pt",100,0.,10.,10,0.,100.);
2371 fHistoElePtWS=
new TH2F(
"fHistoElePtWS",
"Wrong-sign e pt",100,0.,10.,10,0.,100.);
2373 fHistoElePtRSMix=
new TH2F(
"fHistoElePtRSMix",
"Right-sign e pt",100,0.,10.,10,0.,100.);
2375 fHistoElePtWSMix=
new TH2F(
"fHistoElePtWSMix",
"Wrong-sign e pt",100,0.,10.,10,0.,100.);
2378 fHistoEleXiMassMCS =
new THnSparseF(
"fHistoEleXiMassMCS",
"",3,bins_base,xmin_base,xmax_base);
2380 fHistoEleXiMassMCGen =
new THnSparseF(
"fHistoEleXiMassMCGen",
"",3,bins_base,xmin_base,xmax_base);
2394 fHistoElePtMCS=
new TH2F(
"fHistoElePtMCS",
"MC S e pt",100,0.,10.,10,0.,100.);
2396 fHistoElePtMCGen=
new TH2F(
"fHistoElePtMCGen",
"MC Gen e pt",100,0.,10.,10,0.,100.);
2399 Int_t bins_eleptvseta[3]= {50,20 ,10};
2400 Double_t xmin_eleptvseta[3]={0.,-1. ,0.0};
2401 Double_t xmax_eleptvseta[3]={5.,1. ,100};
2403 fHistoElePtvsEtaRS =
new THnSparseF(
"fHistoElePtvsEtaRS",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
2405 fHistoElePtvsEtaWS =
new THnSparseF(
"fHistoElePtvsEtaWS",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
2407 fHistoElePtvsEtaRSMix =
new THnSparseF(
"fHistoElePtvsEtaRSMix",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
2409 fHistoElePtvsEtaWSMix =
new THnSparseF(
"fHistoElePtvsEtaWSMix",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
2411 fHistoElePtvsEtaMCS =
new THnSparseF(
"fHistoElePtvsEtaMCS",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
2413 fHistoElePtvsEtaMCGen =
new THnSparseF(
"fHistoElePtvsEtaMCGen",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
2416 Int_t bins_eleptvsxipt[3]= {50,20 ,10};
2417 Double_t xmin_eleptvsxipt[3]={0.,0. ,0.0};
2418 Double_t xmax_eleptvsxipt[3]={5.,5. ,100};
2420 fHistoElePtvsXiPtRS =
new THnSparseF(
"fHistoElePtvsXiPtRS",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
2422 fHistoElePtvsXiPtWS =
new THnSparseF(
"fHistoElePtvsXiPtWS",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
2424 fHistoElePtvsXiPtRSMix =
new THnSparseF(
"fHistoElePtvsXiPtRSMix",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
2426 fHistoElePtvsXiPtWSMix =
new THnSparseF(
"fHistoElePtvsXiPtWSMix",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
2428 fHistoElePtvsXiPtMCS =
new THnSparseF(
"fHistoElePtvsXiPtMCS",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
2430 fHistoElePtvsXiPtMCGen =
new THnSparseF(
"fHistoElePtvsXiPtMCGen",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
2432 fHistoElePtvsXiPtMCXicGen =
new THnSparseF(
"fHistoElePtvsXiPtMCXicGen",
"",3,bins_eleptvsxipt,xmin_eleptvsxipt,xmax_eleptvsxipt);
2435 Int_t bins_eleptvsxiptvsxicpt[4]= {50,20,10,10};
2436 Double_t xmin_eleptvsxiptvsxicpt[4]={0.,0.,0.,0.0};
2437 Double_t xmax_eleptvsxiptvsxicpt[4]={5.,5.,10.,100};
2438 fHistoElePtvsXiPtvsXicPtMCS =
new THnSparseF(
"fHistoElePtvsXiPtvsXicPtMCS",
"",4,bins_eleptvsxiptvsxicpt,xmin_eleptvsxiptvsxicpt,xmax_eleptvsxiptvsxicpt);
2440 fHistoElePtvsXiPtvsXicPtMCGen =
new THnSparseF(
"fHistoElePtvsXiPtvsXicPtMCGen",
"",4,bins_eleptvsxiptvsxicpt,xmin_eleptvsxiptvsxicpt,xmax_eleptvsxiptvsxicpt);
2443 Int_t bins_eleptvsd0[3]= {50 ,50 ,10};
2444 Double_t xmin_eleptvsd0[3]={0.,-0.2 ,0.0};
2445 Double_t xmax_eleptvsd0[3]={5.,0.2 ,100};
2447 fHistoElePtvsd0RS =
new THnSparseF(
"fHistoElePtvsd0RS",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
2449 fHistoElePtvsd0WS =
new THnSparseF(
"fHistoElePtvsd0WS",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
2451 fHistoElePtvsd0RSMix =
new THnSparseF(
"fHistoElePtvsd0RSMix",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
2453 fHistoElePtvsd0WSMix =
new THnSparseF(
"fHistoElePtvsd0WSMix",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
2455 fHistoElePtvsd0MCS =
new THnSparseF(
"fHistoElePtvsd0MCS",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
2457 fHistoElePtvsd0PromptMCS =
new THnSparseF(
"fHistoElePtvsd0PromptMCS",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
2465 fHistoBachPt =
new TH1F(
"fHistoBachPt",
"Bachelor p_{T}",100,0.0,5.0);
2467 fHistoBachPtMCS =
new TH1F(
"fHistoBachPtMCS",
"Bachelor p_{T}",100,0.0,5.0);
2471 fHistod0Bach =
new TH1F(
"fHistod0Bach",
"Bachelor d_{0}",100,-0.5,0.5);
2473 fHistoXiMassvsPt=
new TH2F(
"fHistoXiMassvsPt",
"Xi mass",100,1.32-0.05,1.32+0.05,20,0.,10.);
2475 fHistoXiMassvsPtMCS=
new TH2F(
"fHistoXiMassvsPtMCS",
"Xi mass",100,1.32-0.05,1.32+0.05,20,0.,10.);
2477 fHistoXiMassvsPtMCGen=
new TH2F(
"fHistoXiMassvsPtMCGen",
"Xi mass",100,1.32-0.05,1.32+0.05,20,0.,10.);
2479 fHistoOmegaMassvsPt=
new TH2F(
"fHistoOmegaMassvsPt",
"Omega mass",100,1.67-0.05,1.67+0.05,20,0.,10.);
2499 for(Int_t i=0;i<8;i++){
2509 Int_t bins_xicmcgen[3]= {40 ,20 ,10};
2510 Double_t xmin_xicmcgen[3]={0.,-1.0 ,0.0};
2511 Double_t xmax_xicmcgen[3]={20.,1.0 ,100};
2512 fHistoXicMCGen =
new THnSparseF(
"fHistoXicMCGen",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
2514 fHistoXicMCGen1 =
new THnSparseF(
"fHistoXicMCGen1",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
2516 fHistoXicMCGen2 =
new THnSparseF(
"fHistoXicMCGen2",
"",3,bins_xicmcgen,xmin_xicmcgen,xmax_xicmcgen);
2519 Int_t bins_elemcgen[3]= {100 ,20 ,10};
2520 Double_t xmin_elemcgen[3]={0.,-1.0 ,0.0};
2521 Double_t xmax_elemcgen[3]={10.,1.0 ,100};
2522 fHistoElectronMCGen =
new THnSparseF(
"fHistoElectronMCGen",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
2524 fHistoXicElectronMCGen =
new THnSparseF(
"fHistoXicElectronMCGen",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
2526 fHistoXicElectronMCGen1 =
new THnSparseF(
"fHistoXicElectronMCGen1",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
2528 fHistoXicElectronMCGen2 =
new THnSparseF(
"fHistoXicElectronMCGen2",
"",3,bins_elemcgen,xmin_elemcgen,xmax_elemcgen);
2531 Int_t bins_ximcgen[3]= {50 ,20 ,10};
2532 Double_t xmin_ximcgen[3]={0.,-1.0 ,0.0};
2533 Double_t xmax_ximcgen[3]={10.,1.0 ,100};
2534 fHistoXiMCGen =
new THnSparseF(
"fHistoXiMCGen",
"",3,bins_ximcgen,xmin_ximcgen,xmax_ximcgen);
2544 for(Int_t ih=0;ih<23;ih++){
2545 Int_t bins_eleptvscutvars[3];
2546 Double_t xmin_eleptvscutvars[3];
2547 Double_t xmax_eleptvscutvars[3];
2549 bins_eleptvscutvars[0] = 50;
2550 xmin_eleptvscutvars[0] = 0.;
2551 xmax_eleptvscutvars[0] = 5.;
2552 bins_eleptvscutvars[2] = 10;
2553 xmin_eleptvscutvars[2] = 0.;
2554 xmax_eleptvscutvars[2] = 100.;
2558 bins_eleptvscutvars[1] = 40;
2559 xmin_eleptvscutvars[1] = 0.;
2560 xmax_eleptvscutvars[1] = 160.;
2561 }
else if(ih==2 || ih==3){
2563 bins_eleptvscutvars[1] = 20;
2564 xmin_eleptvscutvars[1] = -5.;
2565 xmax_eleptvscutvars[1] = 5.;
2568 bins_eleptvscutvars[1] = 30;
2569 xmin_eleptvscutvars[1] = -1.5;
2570 xmax_eleptvscutvars[1] = 1.5;
2573 bins_eleptvscutvars[1] = 7;
2574 xmin_eleptvscutvars[1] = -0.5;
2575 xmax_eleptvscutvars[1] = 6.5;
2578 bins_eleptvscutvars[1] = 50;
2579 xmin_eleptvscutvars[1] = 1.1156-0.03;
2580 xmax_eleptvscutvars[1] = 1.1156+0.03;
2583 bins_eleptvscutvars[1] = 50;
2584 xmin_eleptvscutvars[1] = 1.32-0.03;
2585 xmax_eleptvscutvars[1] = 1.32+0.03;
2586 }
else if(ih==8 || ih==9){
2588 bins_eleptvscutvars[1] = 20;
2589 xmin_eleptvscutvars[1] = 0.;
2590 xmax_eleptvscutvars[1] = 5.;
2591 }
else if(ih==10 || ih==11){
2593 bins_eleptvscutvars[1] = 20;
2594 xmin_eleptvscutvars[1] = 0.;
2595 xmax_eleptvscutvars[1] = 2.;
2596 }
else if(ih==12 || ih==13 || ih==14){
2598 bins_eleptvscutvars[1] = 20;
2599 xmin_eleptvscutvars[1] = 0.;
2600 xmax_eleptvscutvars[1] = 0.5;
2601 }
else if(ih==15 || ih==16){
2603 bins_eleptvscutvars[1] = 20;
2604 xmin_eleptvscutvars[1] = 0.95;
2605 xmax_eleptvscutvars[1] = 1.0;
2606 }
else if(ih==17 || ih==18 || ih==19){
2608 bins_eleptvscutvars[1] = 20;
2609 xmin_eleptvscutvars[1] = -5.;
2610 xmax_eleptvscutvars[1] = 5.;
2611 }
else if(ih==20 || ih==21){
2613 bins_eleptvscutvars[1] = 30;
2614 xmin_eleptvscutvars[1] = -1.5;
2615 xmax_eleptvscutvars[1] = 1.5;
2618 bins_eleptvscutvars[1] = 20;
2619 xmin_eleptvscutvars[1] = 0.;
2620 xmax_eleptvscutvars[1] = 3.141592/2;
2623 fHistoElePtvsCutVarsRS[ih] =
new THnSparseF(Form(
"fHistoElePtvsCutVarsRS[%d]",ih),
"",3,bins_eleptvscutvars,xmin_eleptvscutvars,xmax_eleptvscutvars);
2625 fHistoElePtvsCutVarsWS[ih] =
new THnSparseF(Form(
"fHistoElePtvsCutVarsWS[%d]",ih),
"",3,bins_eleptvscutvars,xmin_eleptvscutvars,xmax_eleptvscutvars);
2627 fHistoElePtvsCutVarsMCS[ih] =
new THnSparseF(Form(
"fHistoElePtvsCutVarsMCS[%d]",ih),
"",3,bins_eleptvscutvars,xmin_eleptvscutvars,xmax_eleptvscutvars);
2641 if(!casc)
return 0x0;
2642 if(!part)
return 0x0;
2643 if(!aod)
return 0x0;
2648 AliAODVertex *primVertexAOD;
2649 Bool_t unsetvtx = kFALSE;
2653 primVertexAOD =
fVtx1;
2658 primVertexAOD =
fVtx1;
2660 if(!primVertexAOD)
return 0x0;
2661 Double_t posprim[3]; primVertexAOD->GetXYZ(posprim);
2666 AliESDtrack *esdtrack =
new AliESDtrack((AliVTrack*)part);
2668 Double_t xyz[3], pxpypz[3], cv[21]; Short_t sign;
2669 xyz[0]=casc->DecayVertexXiX();
2670 xyz[1]=casc->DecayVertexXiY();
2671 xyz[2]=casc->DecayVertexXiZ();
2672 pxpypz[0]=casc->MomXiX();
2673 pxpypz[1]=casc->MomXiY();
2674 pxpypz[2]=casc->MomXiZ();
2675 casc->GetCovarianceXYZPxPyPz(cv);
2676 sign=casc->ChargeXi();
2677 AliExternalTrackParam *trackCasc =
new AliExternalTrackParam(xyz,pxpypz,cv,sign);
2679 Double_t xdummy, ydummy;
2680 Double_t dca = esdtrack->GetDCA(trackCasc,
fBzkG,xdummy,ydummy);
2687 Double_t d0z0bach[2],covd0z0bach[3];
2688 if(sqrt(pow(secVert->GetX(),2)+pow(secVert->GetY(),2))<1.){
2689 part->PropagateToDCA(secVert,
fBzkG,kVeryBig,d0z0bach,covd0z0bach);
2690 trackCasc->PropagateToDCA(secVert,
fBzkG,kVeryBig);
2692 part->PropagateToDCA(primVertexAOD,
fBzkG,kVeryBig,d0z0bach,covd0z0bach);
2693 trackCasc->PropagateToDCA(primVertexAOD,
fBzkG,kVeryBig);
2695 Double_t momcasc_new[3]={-9999,-9999,-9999.};
2696 trackCasc->GetPxPyPz(momcasc_new);
2698 Double_t px[2],py[2],pz[2];
2699 px[0] = part->Px(); py[0] = part->Py(); pz[0] = part->Pz();
2700 px[1] = momcasc_new[0]; py[1] = momcasc_new[1]; pz[1] = momcasc_new[2];
2705 Double_t d0[3],d0err[3];
2707 part->PropagateToDCA(primVertexAOD,
fBzkG,kVeryBig,d0z0bach,covd0z0bach);
2709 d0err[0] = TMath::Sqrt(covd0z0bach[0]);
2711 Double_t d0z0casc[2],covd0z0casc[3];
2712 trackCasc->PropagateToDCA(primVertexAOD,
fBzkG,kVeryBig,d0z0casc,covd0z0casc);
2714 d0err[1] = TMath::Sqrt(covd0z0casc[0]);
2719 Short_t
charge = part->Charge();
2723 if(unsetvtx)
delete primVertexAOD; primVertexAOD=NULL;
2724 if(esdtrack)
delete esdtrack;
2725 if(trackCasc)
delete trackCasc;
2729 UShort_t
id[2]={(UShort_t)part->GetID(),(UShort_t)trackCasc->GetID()};
2732 theCascade->GetSecondaryVtx()->AddDaughter(part);
2733 theCascade->GetSecondaryVtx()->AddDaughter(casc);
2734 if(unsetvtx)
delete primVertexAOD; primVertexAOD=NULL;
2735 if(esdtrack)
delete esdtrack;
2736 if(trackCasc)
delete trackCasc;
2749 TObjArray *TrackArray =
new TObjArray(3);
2751 AliESDtrack *cptrk1 =
new AliESDtrack((AliVTrack*)trk);
2752 TrackArray->AddAt(cptrk1,0);
2754 AliESDtrack *cascptrack =
new AliESDtrack((AliVTrack*)casc->GetDaughter(0));
2755 TrackArray->AddAt(cascptrack,1);
2756 AliESDtrack *cascntrack =
new AliESDtrack((AliVTrack*)casc->GetDaughter(1));
2757 TrackArray->AddAt(cascntrack,2);
2758 AliESDtrack *cascbtrack =
new AliESDtrack((AliVTrack*)casc->GetDecayVertexXi()->GetDaughter(0));
2759 TrackArray->AddAt(cascbtrack,3);
2763 for(Int_t i=0;i<4;i++)
2765 AliESDtrack *tesd = (AliESDtrack*)TrackArray->UncheckedAt(i);
2768 TrackArray->Clear();
2783 Bool_t fRecoPrimVtxSkippingTrks = kTRUE;
2784 Bool_t fRmTrksFromPrimVtx = kFALSE;
2786 AliESDVertex *vertexESD = 0;
2787 AliAODVertex *vertexAOD = 0;
2792 if(!fRecoPrimVtxSkippingTrks && !fRmTrksFromPrimVtx) {
2795 vertexESD =
new AliESDVertex(*
fV1);
2800 Int_t nTrks = trkArray->GetEntriesFast();
2801 AliVertexerTracks *vertexer =
new AliVertexerTracks(event->GetMagneticField());
2803 if(fRecoPrimVtxSkippingTrks) {
2806 if(strstr(
fV1->GetTitle(),
"VertexerTracksWithConstraint")) {
2807 Float_t diamondcovxy[3];
2808 event->GetDiamondCovXY(diamondcovxy);
2809 Double_t pos[3]={
event->GetDiamondX(),
event->GetDiamondY(),0.};
2810 Double_t cov[6]={diamondcovxy[0],diamondcovxy[1],diamondcovxy[2],0.,0.,10.*10.};
2811 AliESDVertex *diamond =
new AliESDVertex(pos,cov,1.,1);
2812 vertexer->SetVtxStart(diamond);
2813 delete diamond; diamond=NULL;
2814 if(strstr(
fV1->GetTitle(),
"VertexerTracksWithConstraintOnlyFitter"))
2815 vertexer->SetOnlyFitter();
2817 Int_t skipped[1000];
2818 Int_t nTrksToSkip=0,id;
2819 AliExternalTrackParam *t = 0;
2820 for(Int_t i=0; i<nTrks; i++) {
2821 t = (AliExternalTrackParam*)trkArray->UncheckedAt(i);
2822 id = (Int_t)t->GetID();
2824 skipped[nTrksToSkip++] = id;
2828 Double_t covtest[21];
2829 for(Int_t j=0; j<
event->GetNumberOfTracks(); j++) {
2830 AliVTrack *vtrack = (AliVTrack*)event->GetTrack(j);
2831 if(!vtrack->GetCovarianceXYZPxPyPz(covtest)) {
2832 id = (Int_t)vtrack->GetID();
2834 skipped[nTrksToSkip++] = id;
2837 for(Int_t ijk=nTrksToSkip; ijk<1000; ijk++) skipped[ijk]=-1;
2839 vertexer->SetSkipTracks(nTrksToSkip,skipped);
2840 vertexESD = (AliESDVertex*)vertexer->FindPrimaryVertex(event);
2842 }
else if(fRmTrksFromPrimVtx && nTrks>0) {
2845 TObjArray rmArray(nTrks);
2846 UShort_t *rmId =
new UShort_t[nTrks];
2847 AliESDtrack *esdTrack = 0;
2849 for(Int_t i=0; i<nTrks; i++) {
2850 t = (AliESDtrack*)trkArray->UncheckedAt(i);
2851 esdTrack =
new AliESDtrack(*t);
2852 rmArray.AddLast(esdTrack);
2853 if(esdTrack->GetID()>=0) {
2854 rmId[i]=(UShort_t)esdTrack->GetID();
2859 Float_t diamondxy[2]={
static_cast<Float_t
>(
event->GetDiamondX()),static_cast<Float_t>(event->GetDiamondY())};
2860 vertexESD = vertexer->RemoveTracksFromVertex(
fV1,&rmArray,rmId,diamondxy);
2861 delete [] rmId; rmId=NULL;
2866 delete vertexer; vertexer=NULL;
2867 if(!vertexESD)
return vertexAOD;
2868 if(vertexESD->GetNContributors()<=0) {
2870 delete vertexESD; vertexESD=NULL;
2878 Double_t pos[3],cov[6],chi2perNDF;
2879 vertexESD->GetXYZ(pos);
2880 vertexESD->GetCovMatrix(cov);
2881 chi2perNDF = vertexESD->GetChi2toNDF();
2882 delete vertexESD; vertexESD=NULL;
2884 vertexAOD =
new AliAODVertex(pos,cov,chi2perNDF);
2896 AliAODVertex *primVertexAOD;
2897 Bool_t unsetvtx = kFALSE;
2901 primVertexAOD =
fVtx1;
2906 primVertexAOD =
fVtx1;
2908 if(!primVertexAOD)
return 0x0;
2910 AliESDVertex * vertexESD =
new AliESDVertex(*
fV1);
2912 Double_t pos[3],cov[6],chi2perNDF;
2913 vertexESD->GetXYZ(pos);
2914 vertexESD->GetCovMatrix(cov);
2915 chi2perNDF = vertexESD->GetChi2toNDF();
2916 delete vertexESD; vertexESD=NULL;
2918 AliAODVertex *secVert =
new AliAODVertex(pos,cov,chi2perNDF);
2928 for(Int_t i=0;i<100;i++){
2929 pdgarray_ele[i] = -9999;
2930 labelarray_ele[i] = -9999;
2931 pdgarray_casc[i] = -9999;
2932 labelarray_casc[i] = -9999;
2937 AliVTrack *trk =
dynamic_cast<AliVTrack*
>(exobj->
GetBachelor());
2939 Int_t labEle = trk->GetLabel();
2940 if(labEle<0)
return -1;
2941 AliAODMCParticle *mcetrk = (AliAODMCParticle*)mcArray->At(labEle);
2942 if(!mcetrk)
return -1;
2943 labelarray_ele[0] = labEle;
2944 pdgarray_ele[0] = mcetrk->GetPdgCode();
2947 AliAODMCParticle *mcprimele=0;
2949 while(mcprimele->GetMother()>=0) {
2950 Int_t labprim_ele=mcprimele->GetMother();
2951 AliAODMCParticle *tmcprimele = (AliAODMCParticle*)mcArray->At(labprim_ele);
2956 mcprimele = tmcprimele;
2957 pdgarray_ele[ngen_ele] = mcprimele->GetPdgCode();
2958 labelarray_ele[ngen_ele] = labprim_ele;
2960 if(ngen_ele==100)
break;
2963 AliAODcascade *theCascade =
dynamic_cast<AliAODcascade*
>(exobj->
GetCascade());
2964 if(!theCascade)
return -1;
2966 Int_t pdgDgcasc[2]={211,3122};
2967 Int_t pdgDgv0[2]={2212,211};
2968 Int_t labcasc =
MatchToMCCascade(theCascade,3312,pdgDgcasc,pdgDgv0,mcArray);
2969 if(labcasc<0)
return -1;
2971 AliAODMCParticle *mccasc = (AliAODMCParticle*)mcArray->At(labcasc);
2972 if(!mccasc)
return -1;
2973 labelarray_casc[0] = labcasc;
2974 pdgarray_casc[0] = mccasc->GetPdgCode();
2977 AliAODMCParticle *mcprimcasc=0;
2978 mcprimcasc = mccasc;
2979 while(mcprimcasc->GetMother()>=0) {
2980 Int_t labprim_casc=mcprimcasc->GetMother();
2981 AliAODMCParticle *tmcprimcasc = (AliAODMCParticle*)mcArray->At(labprim_casc);
2986 mcprimcasc = tmcprimcasc;
2987 pdgarray_casc[ngen_casc] = mcprimcasc->GetPdgCode();
2988 labelarray_casc[ngen_casc] = labprim_casc;
2990 if(ngen_casc==100)
break;
2993 Bool_t same_flag = kFALSE;
2994 Int_t matchedlabel=-9999;
2995 for(Int_t iemc=0;iemc<ngen_ele;iemc++){
2996 for(Int_t ivmc=0;ivmc<ngen_casc;ivmc++){
2997 if(labelarray_ele[iemc]==labelarray_casc[ivmc]){
2999 matchedlabel = labelarray_ele[iemc];
3003 if(same_flag)
break;
3006 return matchedlabel;
3016 AliAODTrack *cptrack = (AliAODTrack*) theCascade->GetDaughter(0);
3017 if(!cptrack)
return -1;
3018 Int_t label_p = cptrack->GetLabel();
3019 if(label_p<0)
return -1;
3020 AliAODTrack *cntrack = (AliAODTrack*) theCascade->GetDaughter(1);
3021 if(!cntrack)
return -1;
3022 Int_t label_n = cntrack->GetLabel();
3023 if(label_n<0)
return -1;
3024 Int_t labv0 = theCascade->MatchToMC(pdgDgcasc[1],mcArray,2,pdgDgv0);
3025 if(labv0<0)
return -1;
3026 AliAODMCParticle *mcpartv0= (AliAODMCParticle*) mcArray->At(labv0);
3028 AliAODTrack *cbtrack = (AliAODTrack*) theCascade->GetDecayVertexXi()->GetDaughter(0);
3029 if(!cbtrack)
return -1;
3031 Int_t label_b = cbtrack->GetLabel();
3032 if(label_b<0)
return -1;
3034 AliAODMCParticle *mcpartb= (AliAODMCParticle*) mcArray->At(label_b);
3035 Int_t pdgb = TMath::Abs(mcpartb->GetPdgCode());
3036 if(pdgb!=pdgDgcasc[0])
return -1;
3038 AliAODMCParticle *mcmotherv0=mcpartv0;
3039 Bool_t isFromXiv0 = kFALSE;
3040 Int_t labxiv0 = mcmotherv0->GetMother();
3041 if(labxiv0<0)
return -1;
3042 mcmotherv0 = (AliAODMCParticle*) mcArray->At(labxiv0);
3044 Int_t
pdg = TMath::Abs(mcmotherv0 ->GetPdgCode());
3045 if(pdg==pdgabscasc){
3049 if(!isFromXiv0)
return -1;
3051 AliAODMCParticle *mcmotherb=mcpartb;
3052 Bool_t isFromXib = kFALSE;
3053 Int_t labxib = mcmotherb->GetMother();
3054 if(labxib<0)
return -1;
3055 mcmotherb = (AliAODMCParticle*) mcArray->At(labxib);
3057 Int_t
pdg = TMath::Abs(mcmotherb ->GetPdgCode());
3058 if(pdg==pdgabscasc){
3062 if(!isFromXib)
return -1;
3064 if(labxiv0!=labxib)
return -1;
3076 if(trkEntries==0)
return;
3079 for(Int_t i=0; i<trkEntries; i++) {
3080 seleFlags[i] = kFALSE;
3083 track = (AliVTrack*)event->GetTrack(i);
3085 if(track->GetID()<0)
continue;
3086 Double_t covtest[21];
3087 if(!track->GetCovarianceXYZPxPyPz(covtest))
continue;
3089 AliAODTrack *aodt = (AliAODTrack*)track;
3090 Double_t nsigma_tpcele = -9999;
3091 Double_t nsigma_tofele = -9999;
3101 if(fabs(nsigma_tofele)<3.){
3103 Double_t eleeta = aodt->Eta();
3104 if(fabs(eleeta)<0.6)
3106 if(fabs(eleeta)>0.6 && fabs(eleeta)<0.8)
3108 if(eleeta>-0.8 && eleeta<-0.6){
3110 }
else if(eleeta>-0.6&&eleeta<-0.4){
3112 }
else if(eleeta>-0.4&&eleeta<-0.2){
3114 }
else if(eleeta>-0.2&&eleeta<0.0){
3116 }
else if(eleeta>0.0&&eleeta<0.2){
3118 }
else if(eleeta>0.2&&eleeta<0.4){
3120 }
else if(eleeta>0.4&&eleeta<0.6){
3122 }
else if(eleeta>0.6&&eleeta<0.8){
3126 if(nsigma_tpcele>-0.5&&nsigma_tpcele<3.){
3146 Double_t primVtx[3];
3147 fVtx1->GetXYZ(primVtx);
3150 for(Int_t icasc=0;icasc<nCascs;icasc++)
3152 seleCascFlags[icasc] = kFALSE;
3153 AliAODcascade *casc = ((AliAODEvent*)event)->GetCascade(icasc);
3157 seleCascFlags[icasc] = kTRUE;
3171 if(theBinZ<0 || theBinZ>=
fNzVtxBins)
return -1;
3173 if(theBinM<0 || theBinM>=
fNCentBins)
return -1;
3181 if(poolIndex<0 || poolIndex>=
fNOfPools)
return;
3183 fEventBuffer[poolIndex]=
new TTree(Form(
"EventBuffer_%d",poolIndex),
"Temporary buffer for event mixing");
3206 TObjArray* c1array=0x0;
3207 TObjArray* c2array=0x0;
3208 Float_t zVertex,cent;
3209 TObjString* eventInfo=0x0;
3210 fEventBuffer[poolIndex]->SetBranchAddress(
"zVertex", &zVertex);
3211 fEventBuffer[poolIndex]->SetBranchAddress(
"eventInfo",&eventInfo);
3212 fEventBuffer[poolIndex]->SetBranchAddress(
"centrality", ¢);
3213 fEventBuffer[poolIndex]->SetBranchAddress(
"c1array", &c1array);
3214 fEventBuffer[poolIndex]->SetBranchAddress(
"c2array", &c2array);
3215 for (Int_t i=0; i<nEle; i++)
3221 fEventBuffer[poolIndex]->GetEvent(iEv + nEvents - fNumberOfEventsForMixing);
3222 TObjArray* c1array1=(TObjArray*)c1array->Clone();
3223 Int_t nCascs1=c1array1->GetEntries();
3234 for(Int_t iTr1=0; iTr1<nCascs1; iTr1++){
3235 TLorentzVector* casc1=(TLorentzVector*) c1array1->At(iTr1);
3236 if(!casc1)
continue;
3240 TObjArray* c2array1=(TObjArray*)c2array->Clone();
3241 Int_t nCascs2=c2array1->GetEntries();
3242 for(Int_t iTr2=0; iTr2<nCascs2; iTr2++){
3243 TLorentzVector* casc2=(TLorentzVector*) c2array1->At(iTr2);
3244 if(!casc2)
continue;
3260 Int_t nmcpart = mcArray->GetEntriesFast();
3261 for(Int_t i=0;i<nmcpart;i++)
3263 AliAODMCParticle *mcpart = (AliAODMCParticle*) mcArray->At(i);
3264 if(TMath::Abs(mcpart->GetPdgCode())==4132){
3265 Bool_t e_flag = kFALSE;
3266 Bool_t xi_flag = kFALSE;
3267 AliAODMCParticle *mcepart = 0;
3268 AliAODMCParticle *mccascpart = 0;
3269 for(Int_t idau=mcpart->GetFirstDaughter();idau<mcpart->GetLastDaughter()+1;idau++)
3272 AliAODMCParticle *mcdau = (AliAODMCParticle*) mcArray->At(idau);
3273 if(!mcdau)
continue;
3274 if(TMath::Abs(mcdau->GetPdgCode())==11){
3278 if(TMath::Abs(mcdau->GetPdgCode())==3312){
3284 Int_t decaytype = -9999;
3285 if(e_flag && xi_flag) decaytype = 0;
3289 if(TMath::Abs(mcpart->GetPdgCode())==11 && mcpart->GetStatus()==1){
3292 esdcuts->GetEtaRange(etamin,etamax);
3293 if(fabs(mcpart->Eta())<etamax){
3298 if(TMath::Abs(mcpart->GetPdgCode())==3312){
3303 if((fabs(mcpart->Y())<rapmax) && (fabs(mcpart->Eta())<etamax)){
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
Double_t fCentBins[100]
number of centrality bins
THnSparse * fHistoElePtvsXiPtMCGen
! e-Xi spectra efficiency denominator
THnSparse * fHistoXicMCGen2
! electron in mcArray
Bool_t IsEventRejectedDueToNotRecoVertex() const
Bool_t SingleCascadeCuts(AliAODcascade *casc, Double_t *vert)
TH1F * fHistoBachPtMCGen
! Bachelor pT histogram (efficiency denominator)
THnSparse * fHistoElePtvsd0RS
! e pt-d0 spectra (right-sign)
TH2F * fHistoElectronTPCPIDSelTOFEtaDep[8]
! TPC electron PID after TOF 3 sigma cut Eta dep
void ResetPool(Int_t poolIndex)
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 * fHistoElePtvsEtaWS
! e spectra (wrong-sign)
void DefineMCEleTreeVariables()
THnSparse * fHistoElePtvsXiPtRSMix
! e-Xi spectra (right-sign, mix)
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 * 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 * 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 * 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)
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 * 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)
TH2F * fHistoElePtWS
! e spectra (wrong-sign)
THnSparse * fHistoElePtvsEtaMCGen
! e spectra efficiency denominator
THnSparse * fHistoEleXiMassMCGen
! e-Xi mass spectra (Efficiency denominator)
TH2F * fHistoElePtRS
! e spectra (right-sign)
AliAODPidHF * GetPidHF() const
THnSparse * fHistoElePtvsEtaMCS
! e spectra efficiency numerator
TTree * fMCVariablesTree
! tree of the candidate variables after track selection on output slot 4
Bool_t SingleTrkCuts(AliAODTrack *trk, AliAODVertex *primvert)
TH2F * fHistoXiMassvsPtMCGen
! Xi mass vs pt histogram
THnSparse * fHistoElePtvsXiPtMCS
! e-Xi spectra efficiency numerator
THnSparse * fHistoEleXiMassWS
! e-Xi mass spectra (wrong-sign)
TH2F * fHistoElectronTOFPIDSelTPC
! TOF electron PID after TPC cut
THnSparse * fHistoElePtvsCutVarsWS[23]
! e pt- cut variables (Wrong-sign)
TH1F * fHistoBachPtMCS
! Bachelor pT histogram (efficiency numerator)
void MakeAnalysis(AliAODEvent *aod, TClonesArray *mcArray)
AliAODVertex * PrimaryVertex(const TObjArray *trkArray, AliVEvent *event)
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)
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)
Bool_t IsPeakRegion(AliAODcascade *c)
THnSparse * fHistoElePtvsXiPtRS
! e-Xi spectra (right-sign)
TH1F * fHTrigger
! Histogram to check Trigger
Int_t GetPoolIndex(Double_t zvert, Double_t mult)
THnSparse * fHistoXicMCGen
! electron in mcArray
THnSparse * fHistoEleXiMassvsElePtRSMix1
! e-Xi mass-ept spectra (right-sign)
THnSparse * fHistoEleXiMassvsElePtWSMix1
! e-Xi mass-ept spectra (wrong-sign)
THnSparse * fHistoXicMCGen1
! electron in mcArray
TH1F * fHistonEvtvsRunNumber
! evt vs runnumber
void DoEventMixingWithPools(Int_t index)
void DefineAnalysisHistograms()
THnSparse * fHistoEleXiMassvsElePtMCGen1
! e-Xi mass-ept spectra (Efficiency denominator)
TH2F * fHistoElePtMCS
! e spectra (Efficiency numerator)
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
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
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 * 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)
AliNormalizationCounter * fCounter
! Counter for normalization
void MakeMCAnalysis(TClonesArray *mcArray)
Int_t fNzVtxBins
maximum number of events to be used in event mixing
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
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)
void FillCascROOTObjects(AliAODcascade *casc, TClonesArray *mcArray)
Bool_t fIsSemi
MB trigger event.
Bool_t IsEventSelected(AliVEvent *event)
TTree ** fEventBuffer
number of pools
THnSparse * fHistoElePtvsXiPtWS
! e-Xi spectra (wrong-sign)
AliAODVertex * ReconstructSecondaryVertex(AliAODcascade *casc, AliAODTrack *trk, AliAODEvent *aod)
void DefineTreeVariables()
TH2F * fHistoXiMassvsPtMCS
! Xi mass vs pt histogram
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)
Bool_t fIsMB
Reconstruct primary vertex excluding candidate tracks.
THnSparse * fHistoElePtvsEtaRSMix
! e spectra (right-sign, mix)
Float_t fCentrality
magnetic field value [kG]
Bool_t GetUseCascadePID()
TH1F * fHistonXivsRunNumber
! nxi vs runnumber
TH2F * fHistoElePtRSMix
! e spectra (right-sign, mix)
THnSparse * fHistoEleXiMassvsElePtRSMix
! e-Xi mass-ept spectra (right-sign)
Bool_t fWriteEachVariableTree
Bool_t fIsCent
SemiCentral trigger event.
THnSparse * fHistoElePtvsd0BFeeddownMCS
! e pt-d0 spectra (right-sign)
Bool_t SingleTrkCutsNoPID(AliAODTrack *trk, AliAODVertex *primvert)
THnSparse * fHistoEleXiMassvsElePtRSSide2
! e-Xi mass-ept spectra (right-sign)
THnSparse * fHistoEleXiMassvsElePtRS1
! e-Xi mass spectra (right-sign)
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
void StoreEvent(AliVEvent *, AliRDHFCuts *, Bool_t mc=kFALSE, Int_t multiplicity=-9999)
TH2F * fHistoXiMassvsPt
! Xi mass vs pt histogram
TH2F * fHistoElectronTPCSelPID
! TPC electron PID after selection
void FillMixROOTObjects(TLorentzVector *et, TLorentzVector *ev, Int_t charge)
virtual void UserExec(Option_t *option)
THnSparse * fHistoEleXiMass
EvNumber counter.
Double_t fZvtxBins[100]
number of z vrtx bins
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)
TH2F * fHistoElePtWSMix
! e spectra (wrong-sign, mix)
THnSparse * fHistoElePtvsXiPtMCXicGen
! e-Xi spectra efficiency denominator
THnSparse * fHistoElePtvsXiPtvsXicPtMCGen
! e-Xi spectra efficiency numerator
TTree * fVariablesTree
flag to decide whether to write the candidate variables on a tree variables