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> 45 #include "AliMCEvent.h" 46 #include "AliAnalysisManager.h" 47 #include "AliAODMCHeader.h" 48 #include "AliAODHandler.h" 50 #include "AliExternalTrackParam.h" 51 #include "AliAODVertex.h" 52 #include "AliESDVertex.h" 53 #include "AliAODRecoDecay.h" 56 #include "AliESDtrack.h" 57 #include "AliAODTrack.h" 59 #include "AliAODcascade.h" 60 #include "AliAODMCParticle.h" 61 #include "AliAnalysisTaskSE.h" 63 #include "AliPIDResponse.h" 64 #include "AliPIDCombined.h" 65 #include "AliTOFPIDResponse.h" 67 #include "AliInputEventHandler.h" 68 #include "AliESDtrackCuts.h" 69 #include "AliNeutralTrackParam.h" 70 #include "AliKFParticle.h" 71 #include "AliKFVertex.h" 72 #include "AliExternalTrackParam.h" 73 #include "AliESDtrack.h" 74 #include "AliCentrality.h" 75 #include "AliVertexerTracks.h" 76 #include "AliEventPoolManager.h" 97 fIsEventSelected(kFALSE),
98 fWriteVariableTree(kFALSE),
99 fWriteEachVariableTree(kFALSE),
100 fWriteMCVariableTree(kFALSE),
102 fEleVariablesTree(0),
103 fCascVariablesTree(0),
105 fReconstructPrimVert(kFALSE),
111 fCandidateVariables(),
112 fCandidateEleVariables(),
113 fCandidateCascVariables(),
114 fCandidateMCVariables(),
121 fUseCentralityV0M(kFALSE),
123 fHistoEleOmegaMass(0),
124 fHistoEleOmegaMassRS(0),
125 fHistoEleOmegaMassWS(0),
126 fHistoEleOmegaMassRSMix(0),
127 fHistoEleOmegaMassWSMix(0),
128 fHistoEleOmegaMassvsElePtRS(0),
129 fHistoEleOmegaMassvsElePtWS(0),
130 fHistoEleOmegaMassvsElePtRSMix(0),
131 fHistoEleOmegaMassvsElePtWSMix(0),
136 fHistoEleOmegaMassMCS(0),
137 fHistoEleOmegaMassMCGen(0),
138 fHistoEleOmegaMassvsElePtMCS(0),
139 fHistoEleOmegaMassvsElePtMCGen(0),
142 fHistoElePtvsEtaRS(0),
143 fHistoElePtvsEtaWS(0),
144 fHistoElePtvsEtaRSMix(0),
145 fHistoElePtvsEtaWSMix(0),
146 fHistoElePtvsEtaMCS(0),
147 fHistoElePtvsEtaMCGen(0),
148 fHistoElePtvsOmegaPtRS(0),
149 fHistoElePtvsOmegaPtWS(0),
150 fHistoElePtvsOmegaPtRSMix(0),
151 fHistoElePtvsOmegaPtWSMix(0),
152 fHistoElePtvsOmegaPtMCS(0),
153 fHistoElePtvsOmegaPtMCGen(0),
154 fHistoElePtvsd0RS(0),
155 fHistoElePtvsd0WS(0),
156 fHistoElePtvsd0RSMix(0),
157 fHistoElePtvsd0WSMix(0),
158 fHistoElePtvsd0MCS(0),
161 fHistoBachPtMCGen(0),
164 fHistoOmegaMassvsPt(0),
165 fHistoOmegaMassvsPtMCS(0),
166 fHistoOmegaMassvsPtMCGen(0),
167 fHistoElectronTPCPID(0),
168 fHistoElectronTOFPID(0),
169 fHistoElectronTPCSelPID(0),
170 fHistoElectronTOFSelPID(0),
171 fHistoElectronTPCPIDSelTOF(0),
172 fHistoElectronTPCPIDSelTOFSmallEta(0),
173 fHistoElectronTPCPIDSelTOFLargeEta(0),
175 fHistonEvtvsRunNumber(0),
176 fHistonElevsRunNumber(0),
177 fHistonOmegavsRunNumber(0),
179 fNumberOfEventsForMixing (5),
195 Bool_t writeVariableTree) :
298 Info(
"AliAnalysisTaskSEOmegac2eleOmegafromAODtracks",
"Calling Constructor");
300 DefineOutput(1,TList::Class());
301 DefineOutput(2,TList::Class());
302 DefineOutput(3,TList::Class());
303 DefineOutput(4,TTree::Class());
304 DefineOutput(5,TTree::Class());
305 DefineOutput(6,TTree::Class());
306 DefineOutput(7,TTree::Class());
307 DefineOutput(8,AliNormalizationCounter::Class());
315 Info(
"~AliAnalysisTaskSEOmegac2eleOmegafromAODtracks",
"Calling Destructor");
367 if (fDebug > 1) AliInfo(
"Init");
386 AliError(
"NO EVENT FOUND!");
398 AliKFParticle::SetField(
fBzkG);
399 if (TMath::Abs(
fBzkG)<0.001) {
410 TClonesArray *mcArray = 0;
411 AliAODMCHeader *mcHeader=0;
414 mcArray =
dynamic_cast<TClonesArray*
>(aodEvent->FindListObject(AliAODMCParticle::StdBranchName()));
416 AliError(
"Could not find Monte-Carlo in AOD");
422 mcHeader = (AliAODMCHeader*)aodEvent->GetList()->FindObject(AliAODMCHeader::StdBranchName());
424 AliError(
"AliAnalysisTaskSEOmegac2eleOmegafromAODtracks::UserExec: MC header branch not found!\n");
429 Double_t zMCVertex = mcHeader->GetVtxZ();
431 AliDebug(2,Form(
"Event rejected: abs(zVtxMC)=%f > fAnalCuts->GetMaxVtxZ()=%f",zMCVertex,
fAnalCuts->
GetMaxVtxZ()));
444 fVtx1 = (AliAODVertex*)aodEvent->GetPrimaryVertex();
449 fVtx1->GetCovarianceMatrix(cov);
450 fV1 =
new AliESDVertex(pos,cov,100.,100,
fVtx1->GetName());
454 if(!fIsTriggerNotOK)
fCEvents->Fill(3);
461 fIsMB=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kMB)==(AliVEvent::kMB);
462 fIsSemi=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kSemiCentral)==(AliVEvent::kSemiCentral);
463 fIsCent=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kCentral)==(AliVEvent::kCentral);
464 fIsINT7=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kINT7)==(AliVEvent::kINT7);
465 fIsEMC7=(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()&AliVEvent::kEMC7)==(AliVEvent::kEMC7);
479 AliCentrality *cent = aodEvent->GetCentrality();
480 fCentrality = cent->GetCentralityPercentile(
"V0M");
484 if(fCentrality<0.||fCentrality>100.-0.0000001) {
491 Int_t runnumber_offset = 0;
492 Int_t runnumber = aodEvent->GetRunNumber();
493 if(runnumber<=117222&&runnumber>=114931){
494 runnumber_offset = 114931;
495 }
else if(runnumber<=120829&&runnumber>=119159){
496 runnumber_offset = 119159;
497 }
else if(runnumber<=126437&&runnumber>=122374){
498 runnumber_offset = 122374;
499 }
else if(runnumber<=130840&&runnumber>=127712){
500 runnumber_offset = 127712;
501 }
else if(runnumber<=195483&&runnumber>=195344){
502 runnumber_offset = 195344;
503 }
else if(runnumber<=195677&&runnumber>=195529){
504 runnumber_offset = 195529;
505 }
else if(runnumber<=170593&&runnumber>=167902){
506 runnumber_offset = 167902;
545 AliAnalysisTaskSE::Terminate();
549 AliError(
"fOutput not available");
555 AliError(
"fOutputAll not available");
598 TString normName=
"NormalizationCounter";
599 AliAnalysisDataContainer *cont = GetOutputSlot(8)->GetContainer();
600 if(cont)normName=(
TString)cont->GetName();
612 fEventBuffer[i]=
new TTree(Form(
"EventBuffer_%d",i),
"Temporary buffer for event mixing");
638 Int_t nCascs= aodEvent->GetNumberOfCascades();
639 Int_t nTracks= aodEvent->GetNumberOfTracks();
641 Bool_t seleTrkFlags[nTracks];
643 SelectTrack(aodEvent,nTracks,nSeleTrks,seleTrkFlags,mcArray);
645 Bool_t seleCascFlags[nCascs];
647 SelectCascade(aodEvent,nCascs,nSeleCasc,seleCascFlags,mcArray);
649 Int_t runnumber_offset = 0;
650 Int_t runnumber = aodEvent->GetRunNumber();
651 if(runnumber<=117222&&runnumber>=114931){
652 runnumber_offset = 114931;
653 }
else if(runnumber<=120829&&runnumber>=119159){
654 runnumber_offset = 119159;
655 }
else if(runnumber<=126437&&runnumber>=122374){
656 runnumber_offset = 122374;
657 }
else if(runnumber<=130840&&runnumber>=127712){
658 runnumber_offset = 127712;
659 }
else if(runnumber<=195483&&runnumber>=195344){
660 runnumber_offset = 195344;
661 }
else if(runnumber<=195677&&runnumber>=195529){
662 runnumber_offset = 195529;
663 }
else if(runnumber<=170593&&runnumber>=167902){
664 runnumber_offset = 167902;
672 for (
Int_t icasc = 0; icasc<nCascs; icasc++) {
673 if(!seleCascFlags[icasc])
continue;
674 AliAODcascade *casc = aodEvent->GetCascade(icasc);
677 AliAODTrack *cptrack = (AliAODTrack*)(casc->GetDaughter(0));
678 AliAODTrack *cntrack = (AliAODTrack*)(casc->GetDaughter(1));
679 AliAODTrack *cbtrack = (AliAODTrack*)(casc->GetDecayVertexXi()->GetDaughter(0));
684 for (
Int_t itrk = 0; itrk<nTracks; itrk++) {
685 if(!seleTrkFlags[itrk])
continue;
686 AliAODTrack *trk = (AliAODTrack*)aodEvent->GetTrack(itrk);
687 if(trk->GetID()<0)
continue;
689 Int_t cpid = cptrack->GetID();
690 Int_t cnid = cntrack->GetID();
691 Int_t cbid = cbtrack->GetID();
692 Int_t lpid = trk->GetID();
693 if((cpid==lpid)||(cnid==lpid)||(cbid==lpid))
continue;
698 if(!secVert)
continue;
707 exobj->GetSecondaryVtx()->RemoveDaughters();
709 delete exobj;exobj=NULL;
715 fEventInfo->SetString(Form(
"Ev%d_esd%d_E%d",AliAnalysisManager::GetAnalysisManager()->GetNcalls(),((AliAODHeader*)aodEvent->GetHeader())->GetEventNumberESDFile(),
fElectronTracks->GetEntries()));
735 const char* nameoutput = GetOutputSlot(4)->GetContainer()->GetName();
741 fCandidateVariableNames[ 0]=
"Centrality";
742 fCandidateVariableNames[ 1]=
"InvMassEleOmega";
743 fCandidateVariableNames[ 2]=
"EleOmegaPt";
744 fCandidateVariableNames[ 3]=
"EleOmegaPx";
745 fCandidateVariableNames[ 4]=
"EleOmegaPy";
746 fCandidateVariableNames[ 5]=
"EleOmegaPz";
747 fCandidateVariableNames[ 6]=
"ElePx";
748 fCandidateVariableNames[ 7]=
"ElePy";
749 fCandidateVariableNames[ 8]=
"ElePz";
750 fCandidateVariableNames[ 9]=
"OmegaPx";
751 fCandidateVariableNames[10]=
"OmegaPy";
752 fCandidateVariableNames[11]=
"OmegaPz";
753 fCandidateVariableNames[12]=
"OmegaCharge";
754 fCandidateVariableNames[13]=
"MassOmega";
755 fCandidateVariableNames[14]=
"MassLambda";
756 fCandidateVariableNames[15]=
"Eled0";
757 fCandidateVariableNames[16]=
"Omegad0";
758 fCandidateVariableNames[17]=
"nSigmaTPCele";
759 fCandidateVariableNames[18]=
"nSigmaTOFele";
760 fCandidateVariableNames[19]=
"nSigmaTPCpr_etrk";
761 fCandidateVariableNames[20]=
"nSigmaTOFpr_etrk";
762 fCandidateVariableNames[21]=
"nSigmaTPCka_etrk";
763 fCandidateVariableNames[22]=
"nSigmaTOFka_etrk";
764 fCandidateVariableNames[23]=
"nSigmaTPCv0pr";
765 fCandidateVariableNames[24]=
"nSigmaTOFv0pr";
766 fCandidateVariableNames[25]=
"nSigmaTPCv0pi";
767 fCandidateVariableNames[26]=
"nSigmaTOFv0pi";
768 fCandidateVariableNames[27]=
"nSigmaTPCbachka";
769 fCandidateVariableNames[28]=
"nSigmaTOFbachka";
770 fCandidateVariableNames[29]=
"EleCharge";
771 fCandidateVariableNames[30]=
"Mixing";
772 fCandidateVariableNames[31]=
"DcaOmegaDaughters";
773 fCandidateVariableNames[32]=
"DcaV0Daughters";
774 fCandidateVariableNames[33]=
"DecayLengthXi";
775 fCandidateVariableNames[34]=
"CosPointingAngleXi";
776 fCandidateVariableNames[35]=
"DcaV0toPrimVertex";
777 fCandidateVariableNames[36]=
"DcaPostoPrimVertex";
778 fCandidateVariableNames[37]=
"DcaNegtoPrimVertex";
779 fCandidateVariableNames[38]=
"DcaBachtoPrimVertex";
780 fCandidateVariableNames[39]=
"DecayLengthV0";
781 fCandidateVariableNames[40]=
"CosPointingAngleV0";
783 fCandidateVariableNames[41]=
"mcpdgomegac";
784 fCandidateVariableNames[42]=
"mclabomegac";
785 fCandidateVariableNames[43]=
"mcomegacpx";
786 fCandidateVariableNames[44]=
"mcomegacpy";
787 fCandidateVariableNames[45]=
"mcomegacpz";
788 fCandidateVariableNames[46]=
"mcelepx";
789 fCandidateVariableNames[47]=
"mcelepy";
790 fCandidateVariableNames[48]=
"mcelepz";
791 fCandidateVariableNames[49]=
"mccascpx";
792 fCandidateVariableNames[50]=
"mccascpy";
793 fCandidateVariableNames[51]=
"mccascpz";
795 fCandidateVariableNames[52]=
"mcpdgele";
796 fCandidateVariableNames[53]=
"mcpdgcasc";
797 fCandidateVariableNames[54]=
"mcpdgmomele";
798 fCandidateVariableNames[55]=
"mcpdgmomcasc";
799 fCandidateVariableNames[56]=
"mcpdggrmomele";
800 fCandidateVariableNames[57]=
"mcpdggrmomcasc";
801 fCandidateVariableNames[58]=
"mcngenele";
802 fCandidateVariableNames[59]=
"mcngencasc";
804 fCandidateVariableNames[60]=
"nSigmaTPCpi_etrk";
805 fCandidateVariableNames[61]=
"nSigmaTOFpi_etrk";
806 fCandidateVariableNames[62]=
"MassXi";
808 fCandidateVariableNames[63]=
"EvNumber";
826 for(
Int_t i=0;i<64;i++){
831 AliAODTrack *cptrack = (AliAODTrack*)(casc->GetDaughter(0));
832 AliAODTrack *cntrack = (AliAODTrack*)(casc->GetDaughter(1));
833 AliAODTrack *cbtrack = (AliAODTrack*)(casc->GetDecayVertexXi()->GetDaughter(0));
835 fVtx1->GetXYZ(posVtx);
839 UInt_t pdgdg[2]={11,3334};
853 if(casc->ChargeXi()<0)
889 if(casc->ChargeXi()>0){
924 AliAODMCParticle *mcomegac = 0;
925 AliAODMCParticle *mcele = 0;
926 AliAODMCParticle *mccasc = 0;
927 Int_t mclabomegac = 0;
928 Int_t mcpdgele_array[100];
929 Int_t mcpdgcasc_array[100];
930 Int_t mclabelele_array[100];
931 Int_t mclabelcasc_array[100];
932 Int_t mcngen_ele = -9999;
933 Int_t mcngen_casc = -9999;
937 mclabomegac =
MatchToMC(exobj,mcArray,mcpdgele_array, mcpdgcasc_array,mclabelele_array,mclabelcasc_array,mcngen_ele,mcngen_casc);
940 mcomegac = (AliAODMCParticle*) mcArray->At(mclabomegac);
941 if(mclabelele_array[0]>=0)
942 mcele = (AliAODMCParticle*) mcArray->At(mclabelele_array[0]);
943 if(mclabelcasc_array[0]>=0)
944 mccasc = (AliAODMCParticle*) mcArray->At(mclabelcasc_array[0]);
983 cont[0] = exobj->InvMass(2,pdgdg);
984 cont[1] = exobj->Pt();
989 cont2[0] = exobj->InvMass(2,pdgdg);
990 cont2[1] = trk->Pt();
994 cont_eleptvseta[0] = trk->Pt();
995 cont_eleptvseta[1] = trk->Eta();
999 cont_eleptvsomegapt[0] = trk->Pt();
1000 cont_eleptvsomegapt[1] = sqrt(casc->MomXiX()*casc->MomXiX()+casc->MomXiY()*casc->MomXiY());
1004 cont_eleptvsd0[0] = trk->Pt();
1005 cont_eleptvsd0[1] = exobj->Getd0Prong(0);
1009 if(trk->Charge()*casc->ChargeXi()<0){
1029 if(trk->Charge()*casc->ChargeXi()<0){
1052 Int_t pdgcode = mcomegac->GetPdgCode();
1053 if(abs(pdgcode)==4332 && abs(mcpdgele_array[1])==4332 && abs(mcpdgcasc_array[1])==4332){
1077 const char* nameoutput = GetOutputSlot(5)->GetContainer()->GetName();
1083 fCandidateVariableNames[ 0]=
"ElePx";
1084 fCandidateVariableNames[ 1]=
"ElePy";
1085 fCandidateVariableNames[ 2]=
"ElePz";
1086 fCandidateVariableNames[ 3]=
"TPCChi2overNDF";
1087 fCandidateVariableNames[ 4]=
"ITSNcls";
1088 fCandidateVariableNames[ 5]=
"TPCNcls";
1089 fCandidateVariableNames[ 6]=
"TPCNclsPID";
1090 fCandidateVariableNames[ 7]=
"TPCNclsRatio";
1091 fCandidateVariableNames[ 8]=
"d0R";
1092 fCandidateVariableNames[ 9]=
"d0Z";
1093 fCandidateVariableNames[10]=
"ITSClusterMap";
1094 fCandidateVariableNames[11]=
"nSigmaTPCele";
1095 fCandidateVariableNames[12]=
"nSigmaTOFele";
1096 fCandidateVariableNames[13]=
"nSigmaTPCpi";
1097 fCandidateVariableNames[14]=
"nSigmaTPCka";
1098 fCandidateVariableNames[15]=
"nSigmaTPCpr";
1099 fCandidateVariableNames[16]=
"EvNumber";
1100 fCandidateVariableNames[17]=
"EleCharge";
1101 fCandidateVariableNames[18]=
"Centrality";
1122 Int_t labEle = trk->GetLabel();
1124 AliAODMCParticle *mcetrk = (AliAODMCParticle*)mcArray->At(labEle);
1126 Int_t pdgEle = mcetrk->GetPdgCode();
1127 if(abs(pdgEle)==11){
1136 for(
Int_t i=0;i<19;i++){
1147 if(trk->GetTPCNclsF()>0)
1151 trk->PropagateToDCA(
fVtx1,
fBzkG,kVeryBig,d0z0,covd0z0);
1155 Int_t itsmap = trk->GetITSClusterMap();
1158 Bool_t spdfirst = (itsmap & bit1) == bit1;
1159 Bool_t spdsecond = (itsmap & bit2) == bit2;
1190 const char* nameoutput = GetOutputSlot(6)->GetContainer()->GetName();
1196 fCandidateVariableNames[ 0]=
"Centrality";
1197 fCandidateVariableNames[ 1]=
"InvMassOmega";
1198 fCandidateVariableNames[ 2]=
"OmegaPx";
1199 fCandidateVariableNames[ 3]=
"OmegaPy";
1200 fCandidateVariableNames[ 4]=
"OmegaPz";
1201 fCandidateVariableNames[ 5]=
"InvMassLambda";
1202 fCandidateVariableNames[ 6]=
"DcaOmegaDaughters";
1203 fCandidateVariableNames[ 7]=
"DcaV0Daughters";
1204 fCandidateVariableNames[ 8]=
"DecayLengthOmega";
1205 fCandidateVariableNames[ 9]=
"CosPointingAngleOmega";
1206 fCandidateVariableNames[10]=
"DcaV0toPrimVertex";
1207 fCandidateVariableNames[11]=
"DcaPostoPrimVertex";
1208 fCandidateVariableNames[12]=
"DcaNegtoPrimVertex";
1209 fCandidateVariableNames[13]=
"DcaBachtoPrimVertex";
1210 fCandidateVariableNames[14]=
"DecayLengthV0";
1211 fCandidateVariableNames[15]=
"CosPointingAngleV0";
1212 fCandidateVariableNames[16]=
"OmegaCharge";
1228 fHistoXiMassvsPt->Fill(casc->MassXi(),sqrt(casc->MomXiX()*casc->MomXiX()+casc->MomXiY()*casc->MomXiY()));
1229 fHistoOmegaMassvsPt->Fill(casc->MassOmega(),sqrt(casc->MomXiX()*casc->MomXiX()+casc->MomXiY()*casc->MomXiY()));
1232 Int_t pdgDgcasc[2]={321,3122};
1233 Int_t pdgDgv0[2]={2212,211};
1236 fHistoOmegaMassvsPtMCS->Fill(casc->MassOmega(),sqrt(casc->MomXiX()*casc->MomXiX()+casc->MomXiY()*casc->MomXiY()));
1243 for(
Int_t i=0;i<16;i++){
1247 fVtx1->GetXYZ(posVtx);
1254 if(casc->ChargeXi()<0)
1281 const char* nameoutput = GetOutputSlot(7)->GetContainer()->GetName();
1287 fCandidateVariableNames[ 0]=
"Centrality";
1288 fCandidateVariableNames[ 1]=
"DecayType";
1289 fCandidateVariableNames[ 2]=
"LcPx";
1290 fCandidateVariableNames[ 3]=
"LcPy";
1291 fCandidateVariableNames[ 4]=
"LcPz";
1292 fCandidateVariableNames[ 5]=
"ElePx";
1293 fCandidateVariableNames[ 6]=
"ElePy";
1294 fCandidateVariableNames[ 7]=
"ElePz";
1295 fCandidateVariableNames[ 8]=
"CascPx";
1296 fCandidateVariableNames[ 9]=
"CascPy";
1297 fCandidateVariableNames[10]=
"CascPz";
1298 fCandidateVariableNames[11]=
"PdgCode";
1299 fCandidateVariableNames[12]=
"ElePdgCode";
1300 fCandidateVariableNames[13]=
"CascPdgCode";
1314 if(!mcepart)
return;
1315 if(!mccascpart)
return;
1317 for(
Int_t i=0;i<14;i++){
1339 Double_t eE = sqrt(epx*epx+epy*epy+epz*epz+0.000511*0.000511);
1340 Double_t cascpx = mccascpart->Px();
1341 Double_t cascpy = mccascpart->Py();
1342 Double_t cascpz = mccascpart->Pz();
1343 Double_t cascE = sqrt(cascpx*cascpx+cascpy*cascpy+cascpz*cascpz+1.67245*1.67245);
1345 Double_t InvMassEleOmega = sqrt(pow(eE+cascE,2)-pow(epx+cascpx,2)-pow(epy+cascpy,2)-pow(epz+cascpz,2));
1348 cont[0] = InvMassEleOmega;
1349 cont[1] = mcpart->Pt();
1352 cont2[0] = InvMassEleOmega;
1353 cont2[1] = mcepart->Pt();
1356 cont_eleptvseta[0] = mcepart->Pt();
1357 cont_eleptvseta[1] = mcepart->Eta();
1360 cont_eleptvsomegapt[0] = mcepart->Pt();
1361 cont_eleptvsomegapt[1] = mccascpart->Pt();
1366 esdcuts->GetEtaRange(etamin,etamax);
1370 if(fabs(mcepart->Eta())<etamax){
1372 if(InvMassEleOmega<2.7){
1390 fCEvents =
new TH1F(
"fCEvents",
"conter",18,-0.5,17.5);
1392 fCEvents->GetXaxis()->SetBinLabel(1,
"X1");
1393 fCEvents->GetXaxis()->SetBinLabel(2,
"Analyzed events");
1394 fCEvents->GetXaxis()->SetBinLabel(3,
"AliAODVertex exists");
1395 fCEvents->GetXaxis()->SetBinLabel(4,
"TriggerOK");
1396 fCEvents->GetXaxis()->SetBinLabel(5,
"IsEventSelected");
1397 fCEvents->GetXaxis()->SetBinLabel(6,
"CascadesHF exists");
1398 fCEvents->GetXaxis()->SetBinLabel(7,
"MCarray exists");
1399 fCEvents->GetXaxis()->SetBinLabel(8,
"MCheader exists");
1400 fCEvents->GetXaxis()->SetBinLabel(9,
"triggerClass!=CINT1");
1401 fCEvents->GetXaxis()->SetBinLabel(10,
"triggerMask!=kAnyINT");
1402 fCEvents->GetXaxis()->SetBinLabel(11,
"triggerMask!=kAny");
1403 fCEvents->GetXaxis()->SetBinLabel(12,
"vtxTitle.Contains(Z)");
1404 fCEvents->GetXaxis()->SetBinLabel(13,
"vtxTitle.Contains(3D)");
1405 fCEvents->GetXaxis()->SetBinLabel(14,
"vtxTitle.Doesn'tContain(Z-3D)");
1407 fCEvents->GetXaxis()->SetBinLabel(16,
"!IsEventSelected");
1408 fCEvents->GetXaxis()->SetBinLabel(17,
"triggerMask!=kAnyINT || triggerClass!=CINT1");
1411 fCEvents->GetYaxis()->SetTitle(
"counts");
1413 fHTrigger =
new TH1F(
"fHTrigger",
"counter",18,-0.5,17.5);
1415 fHTrigger->GetXaxis()->SetBinLabel(1,
"X1");
1416 fHTrigger->GetXaxis()->SetBinLabel(2,
"kMB");
1417 fHTrigger->GetXaxis()->SetBinLabel(3,
"kSemiCentral");
1418 fHTrigger->GetXaxis()->SetBinLabel(4,
"kCentral");
1419 fHTrigger->GetXaxis()->SetBinLabel(5,
"kINT7");
1420 fHTrigger->GetXaxis()->SetBinLabel(6,
"kEMC7");
1422 fHTrigger->GetXaxis()->SetBinLabel(8,
"kMB|kSemiCentral|kCentral");
1423 fHTrigger->GetXaxis()->SetBinLabel(9,
"kINT7|kEMC7");
1424 fHTrigger->GetXaxis()->SetBinLabel(11,
"kMB&kSemiCentral");
1425 fHTrigger->GetXaxis()->SetBinLabel(12,
"kMB&kCentral");
1426 fHTrigger->GetXaxis()->SetBinLabel(13,
"kINT7&kEMC7");
1428 fHCentrality =
new TH1F(
"fHCentrality",
"conter",100,0.,100.);
1446 Int_t bins_base[3]= {16 ,100 ,10};
1447 Double_t xmin_base[3]={1.6,0 ,0.00};
1448 Double_t xmax_base[3]={3.6,10. ,100};
1449 fHistoEleOmegaMass =
new THnSparseF(
"fHistoEleOmegaMass",
"",3,bins_base,xmin_base,xmax_base);
1451 fHistoEleOmegaMassRS =
new THnSparseF(
"fHistoEleOmegaMassRS",
"",3,bins_base,xmin_base,xmax_base);
1453 fHistoEleOmegaMassWS =
new THnSparseF(
"fHistoEleOmegaMassWS",
"",3,bins_base,xmin_base,xmax_base);
1469 fHistoElePtRS=
new TH2F(
"fHistoElePtRS",
"Right-sign e pt",100,0.,10.,10,0.,100.);
1471 fHistoElePtWS=
new TH2F(
"fHistoElePtWS",
"Wrong-sign e pt",100,0.,10.,10,0.,100.);
1491 Int_t bins_eleptvseta[3]= {50,20 ,10};
1492 Double_t xmin_eleptvseta[3]={0.,-1. ,0.0};
1493 Double_t xmax_eleptvseta[3]={5.,1. ,100};
1495 fHistoElePtvsEtaRS =
new THnSparseF(
"fHistoElePtvsEtaRS",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
1497 fHistoElePtvsEtaWS =
new THnSparseF(
"fHistoElePtvsEtaWS",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
1499 fHistoElePtvsEtaRSMix =
new THnSparseF(
"fHistoElePtvsEtaRSMix",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
1501 fHistoElePtvsEtaWSMix =
new THnSparseF(
"fHistoElePtvsEtaWSMix",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
1503 fHistoElePtvsEtaMCS =
new THnSparseF(
"fHistoElePtvsEtaMCS",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
1505 fHistoElePtvsEtaMCGen =
new THnSparseF(
"fHistoElePtvsEtaMCGen",
"",3,bins_eleptvseta,xmin_eleptvseta,xmax_eleptvseta);
1508 Int_t bins_eleptvsomegapt[3]= {50,20 ,10};
1509 Double_t xmin_eleptvsomegapt[3]={0.,0. ,0.0};
1510 Double_t xmax_eleptvsomegapt[3]={5.,5. ,100};
1512 fHistoElePtvsOmegaPtRS =
new THnSparseF(
"fHistoElePtvsOmegaPtRS",
"",3,bins_eleptvsomegapt,xmin_eleptvsomegapt,xmax_eleptvsomegapt);
1514 fHistoElePtvsOmegaPtWS =
new THnSparseF(
"fHistoElePtvsOmegaPtWS",
"",3,bins_eleptvsomegapt,xmin_eleptvsomegapt,xmax_eleptvsomegapt);
1516 fHistoElePtvsOmegaPtRSMix =
new THnSparseF(
"fHistoElePtvsOmegaPtRSMix",
"",3,bins_eleptvsomegapt,xmin_eleptvsomegapt,xmax_eleptvsomegapt);
1518 fHistoElePtvsOmegaPtWSMix =
new THnSparseF(
"fHistoElePtvsOmegaPtWSMix",
"",3,bins_eleptvsomegapt,xmin_eleptvsomegapt,xmax_eleptvsomegapt);
1520 fHistoElePtvsOmegaPtMCS =
new THnSparseF(
"fHistoElePtvsOmegaPtMCS",
"",3,bins_eleptvsomegapt,xmin_eleptvsomegapt,xmax_eleptvsomegapt);
1522 fHistoElePtvsOmegaPtMCGen =
new THnSparseF(
"fHistoElePtvsOmegaPtMCGen",
"",3,bins_eleptvsomegapt,xmin_eleptvsomegapt,xmax_eleptvsomegapt);
1525 Int_t bins_eleptvsd0[3]= {50 ,50 ,10};
1526 Double_t xmin_eleptvsd0[3]={0.,-0.2 ,0.0};
1527 Double_t xmax_eleptvsd0[3]={5.,0.2 ,100};
1529 fHistoElePtvsd0RS =
new THnSparseF(
"fHistoElePtvsd0RS",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
1531 fHistoElePtvsd0WS =
new THnSparseF(
"fHistoElePtvsd0WS",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
1533 fHistoElePtvsd0RSMix =
new THnSparseF(
"fHistoElePtvsd0RSMix",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
1535 fHistoElePtvsd0WSMix =
new THnSparseF(
"fHistoElePtvsd0WSMix",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
1537 fHistoElePtvsd0MCS =
new THnSparseF(
"fHistoElePtvsd0MCS",
"",3,bins_eleptvsd0,xmin_eleptvsd0,xmax_eleptvsd0);
1543 fHistoBachPt =
new TH1F(
"fHistoBachPt",
"Bachelor p_{T}",100,0.0,5.0);
1545 fHistoBachPtMCS =
new TH1F(
"fHistoBachPtMCS",
"Bachelor p_{T}",100,0.0,5.0);
1549 fHistod0Bach =
new TH1F(
"fHistod0Bach",
"Bachelor d_{0}",100,-0.5,0.5);
1592 if(!casc)
return 0x0;
1593 if(!part)
return 0x0;
1594 if(!aod)
return 0x0;
1599 AliAODVertex *primVertexAOD;
1600 Bool_t unsetvtx = kFALSE;
1604 primVertexAOD =
fVtx1;
1609 primVertexAOD =
fVtx1;
1611 if(!primVertexAOD)
return 0x0;
1612 Double_t posprim[3]; primVertexAOD->GetXYZ(posprim);
1617 AliESDtrack *esdtrack =
new AliESDtrack((AliVTrack*)part);
1620 xyz[0]=casc->DecayVertexXiX();
1621 xyz[1]=casc->DecayVertexXiY();
1622 xyz[2]=casc->DecayVertexXiZ();
1623 pxpypz[0]=casc->MomXiX();
1624 pxpypz[1]=casc->MomXiY();
1625 pxpypz[2]=casc->MomXiZ();
1626 casc->GetCovarianceXYZPxPyPz(cv);
1627 sign=casc->ChargeXi();
1628 AliExternalTrackParam *trackCasc =
new AliExternalTrackParam(xyz,pxpypz,cv,sign);
1631 Double_t dca = esdtrack->GetDCA(trackCasc,
fBzkG,xdummy,ydummy);
1638 Double_t d0z0bach[2],covd0z0bach[3];
1639 if(sqrt(pow(secVert->GetX(),2)+pow(secVert->GetY(),2))<1.){
1640 part->PropagateToDCA(secVert,
fBzkG,kVeryBig,d0z0bach,covd0z0bach);
1641 trackCasc->PropagateToDCA(secVert,
fBzkG,kVeryBig);
1643 part->PropagateToDCA(primVertexAOD,
fBzkG,kVeryBig,d0z0bach,covd0z0bach);
1644 trackCasc->PropagateToDCA(primVertexAOD,
fBzkG,kVeryBig);
1646 Double_t momcasc_new[3]={-9999,-9999,-9999.};
1647 trackCasc->GetPxPyPz(momcasc_new);
1650 px[0] = part->Px(); py[0] = part->Py(); pz[0] = part->Pz();
1651 px[1] = momcasc_new[0]; py[1] = momcasc_new[1]; pz[1] = momcasc_new[2];
1658 part->PropagateToDCA(primVertexAOD,
fBzkG,kVeryBig,d0z0bach,covd0z0bach);
1660 d0err[0] = TMath::Sqrt(covd0z0bach[0]);
1662 Double_t d0z0casc[2],covd0z0casc[3];
1663 trackCasc->PropagateToDCA(primVertexAOD,
fBzkG,kVeryBig,d0z0casc,covd0z0casc);
1665 d0err[1] = TMath::Sqrt(covd0z0casc[0]);
1674 if(unsetvtx)
delete primVertexAOD; primVertexAOD=NULL;
1675 if(esdtrack)
delete esdtrack;
1676 if(trackCasc)
delete trackCasc;
1684 theCascade->GetSecondaryVtx()->AddDaughter(part);
1685 theCascade->GetSecondaryVtx()->AddDaughter(casc);
1688 if(unsetvtx)
delete primVertexAOD; primVertexAOD=NULL;
1689 if(esdtrack)
delete esdtrack;
1690 if(trackCasc)
delete trackCasc;
1705 AliESDtrack *cptrk1 =
new AliESDtrack((AliVTrack*)trk);
1706 TrackArray->AddAt(cptrk1,0);
1708 AliESDtrack *cascptrack =
new AliESDtrack((AliVTrack*)casc->GetDaughter(0));
1709 TrackArray->AddAt(cascptrack,1);
1710 AliESDtrack *cascntrack =
new AliESDtrack((AliVTrack*)casc->GetDaughter(1));
1711 TrackArray->AddAt(cascntrack,2);
1712 AliESDtrack *cascbtrack =
new AliESDtrack((AliVTrack*)casc->GetDecayVertexXi()->GetDaughter(0));
1713 TrackArray->AddAt(cascbtrack,3);
1717 for(
Int_t i=0;i<4;i++)
1719 AliESDtrack *tesd = (AliESDtrack*)TrackArray->UncheckedAt(i);
1722 TrackArray->Clear();
1737 Bool_t fRecoPrimVtxSkippingTrks = kTRUE;
1738 Bool_t fRmTrksFromPrimVtx = kFALSE;
1740 AliESDVertex *vertexESD = 0;
1741 AliAODVertex *vertexAOD = 0;
1746 if(!fRecoPrimVtxSkippingTrks && !fRmTrksFromPrimVtx) {
1749 vertexESD =
new AliESDVertex(*
fV1);
1754 Int_t nTrks = trkArray->GetEntriesFast();
1755 AliVertexerTracks *vertexer =
new AliVertexerTracks(event->GetMagneticField());
1757 if(fRecoPrimVtxSkippingTrks) {
1760 if(strstr(
fV1->GetTitle(),
"VertexerTracksWithConstraint")) {
1762 event->GetDiamondCovXY(diamondcovxy);
1763 Double_t pos[3]={
event->GetDiamondX(),
event->GetDiamondY(),0.};
1764 Double_t cov[6]={diamondcovxy[0],diamondcovxy[1],diamondcovxy[2],0.,0.,10.*10.};
1765 AliESDVertex *diamond =
new AliESDVertex(pos,cov,1.,1);
1766 vertexer->SetVtxStart(diamond);
1767 delete diamond; diamond=NULL;
1768 if(strstr(
fV1->GetTitle(),
"VertexerTracksWithConstraintOnlyFitter"))
1769 vertexer->SetOnlyFitter();
1771 Int_t skipped[1000];
1772 Int_t nTrksToSkip=0,id;
1773 AliExternalTrackParam *t = 0;
1774 for(
Int_t i=0; i<nTrks; i++) {
1775 t = (AliExternalTrackParam*)trkArray->UncheckedAt(i);
1776 id = (
Int_t)t->GetID();
1778 skipped[nTrksToSkip++] = id;
1783 for(
Int_t j=0; j<
event->GetNumberOfTracks(); j++) {
1784 AliVTrack *vtrack = (AliVTrack*)event->GetTrack(j);
1785 if(!vtrack->GetCovarianceXYZPxPyPz(covtest)) {
1786 id = (
Int_t)vtrack->GetID();
1788 skipped[nTrksToSkip++] = id;
1791 for(
Int_t ijk=nTrksToSkip; ijk<1000; ijk++) skipped[ijk]=-1;
1793 vertexer->SetSkipTracks(nTrksToSkip,skipped);
1794 vertexESD = (AliESDVertex*)vertexer->FindPrimaryVertex(event);
1796 }
else if(fRmTrksFromPrimVtx && nTrks>0) {
1801 AliESDtrack *esdTrack = 0;
1803 for(
Int_t i=0; i<nTrks; i++) {
1804 t = (AliESDtrack*)trkArray->UncheckedAt(i);
1805 esdTrack =
new AliESDtrack(*t);
1806 rmArray.AddLast(esdTrack);
1807 if(esdTrack->GetID()>=0) {
1808 rmId[i]=(
UShort_t)esdTrack->GetID();
1813 Float_t diamondxy[2]={
static_cast<Float_t>(
event->GetDiamondX()),static_cast<Float_t>(event->GetDiamondY())};
1814 vertexESD = vertexer->RemoveTracksFromVertex(
fV1,&rmArray,rmId,diamondxy);
1815 delete [] rmId; rmId=NULL;
1820 delete vertexer; vertexer=NULL;
1821 if(!vertexESD)
return vertexAOD;
1822 if(vertexESD->GetNContributors()<=0) {
1824 delete vertexESD; vertexESD=NULL;
1833 vertexESD->GetXYZ(pos);
1834 vertexESD->GetCovMatrix(cov);
1835 chi2perNDF = vertexESD->GetChi2toNDF();
1836 delete vertexESD; vertexESD=NULL;
1838 vertexAOD =
new AliAODVertex(pos,cov,chi2perNDF);
1850 AliAODVertex *primVertexAOD;
1851 Bool_t unsetvtx = kFALSE;
1855 primVertexAOD =
fVtx1;
1860 primVertexAOD =
fVtx1;
1862 if(!primVertexAOD)
return 0x0;
1864 AliESDVertex * vertexESD =
new AliESDVertex(*
fV1);
1867 vertexESD->GetXYZ(pos);
1868 vertexESD->GetCovMatrix(cov);
1869 chi2perNDF = vertexESD->GetChi2toNDF();
1870 delete vertexESD; vertexESD=NULL;
1872 AliAODVertex *secVert =
new AliAODVertex(pos,cov,chi2perNDF);
1882 for(
Int_t i=0;i<100;i++){
1883 pdgarray_ele[i] = -9999;
1884 labelarray_ele[i] = -9999;
1885 pdgarray_casc[i] = -9999;
1886 labelarray_casc[i] = -9999;
1891 AliVTrack *trk =
dynamic_cast<AliVTrack*
>(exobj->
GetBachelor());
1893 Int_t labEle = trk->GetLabel();
1894 if(labEle<0)
return -1;
1895 AliAODMCParticle *mcetrk = (AliAODMCParticle*)mcArray->At(labEle);
1896 if(!mcetrk)
return -1;
1897 labelarray_ele[0] = labEle;
1898 pdgarray_ele[0] = mcetrk->GetPdgCode();
1901 AliAODMCParticle *mcprimele=0;
1903 while(mcprimele->GetMother()>=0) {
1904 Int_t labprim_ele=mcprimele->GetMother();
1905 AliAODMCParticle *tmcprimele = (AliAODMCParticle*)mcArray->At(labprim_ele);
1910 mcprimele = tmcprimele;
1911 pdgarray_ele[ngen_ele] = mcprimele->GetPdgCode();
1912 labelarray_ele[ngen_ele] = labprim_ele;
1914 if(ngen_ele==100)
break;
1917 AliAODcascade *theCascade =
dynamic_cast<AliAODcascade*
>(exobj->
GetCascade());
1918 if(!theCascade)
return -1;
1920 Int_t pdgDgcasc[2]={321,3122};
1921 Int_t pdgDgv0[2]={2212,211};
1923 if(labcasc<0)
return -1;
1925 AliAODMCParticle *mccasc = (AliAODMCParticle*)mcArray->At(labcasc);
1926 if(!mccasc)
return -1;
1927 labelarray_casc[0] = labcasc;
1928 pdgarray_casc[0] = mccasc->GetPdgCode();
1931 AliAODMCParticle *mcprimcasc=0;
1932 mcprimcasc = mccasc;
1933 while(mcprimcasc->GetMother()>=0) {
1934 Int_t labprim_casc=mcprimcasc->GetMother();
1935 AliAODMCParticle *tmcprimcasc = (AliAODMCParticle*)mcArray->At(labprim_casc);
1940 mcprimcasc = tmcprimcasc;
1941 pdgarray_casc[ngen_casc] = mcprimcasc->GetPdgCode();
1942 labelarray_casc[ngen_casc] = labprim_casc;
1944 if(ngen_casc==100)
break;
1947 Bool_t same_flag = kFALSE;
1948 Int_t matchedlabel=-9999;
1949 for(
Int_t iemc=0;iemc<ngen_ele;iemc++){
1950 for(
Int_t ivmc=0;ivmc<ngen_casc;ivmc++){
1951 if(labelarray_ele[iemc]==labelarray_casc[ivmc]){
1953 matchedlabel = labelarray_ele[iemc];
1957 if(same_flag)
break;
1960 return matchedlabel;
1970 AliAODTrack *cptrack = (AliAODTrack*) theCascade->GetDaughter(0);
1971 if(!cptrack)
return -1;
1972 Int_t label_p = cptrack->GetLabel();
1973 if(label_p<0)
return -1;
1974 AliAODTrack *cntrack = (AliAODTrack*) theCascade->GetDaughter(1);
1975 if(!cntrack)
return -1;
1976 Int_t label_n = cntrack->GetLabel();
1977 if(label_n<0)
return -1;
1978 Int_t labv0 = theCascade->MatchToMC(pdgDgcasc[1],mcArray,2,pdgDgv0);
1979 if(labv0<0)
return -1;
1980 AliAODMCParticle *mcpartv0= (AliAODMCParticle*) mcArray->At(labv0);
1982 AliAODTrack *cbtrack = (AliAODTrack*) theCascade->GetDecayVertexXi()->GetDaughter(0);
1983 if(!cbtrack)
return -1;
1985 Int_t label_b = cbtrack->GetLabel();
1986 if(label_b<0)
return -1;
1988 AliAODMCParticle *mcpartb= (AliAODMCParticle*) mcArray->At(label_b);
1989 Int_t pdgb = TMath::Abs(mcpartb->GetPdgCode());
1990 if(pdgb!=pdgDgcasc[0])
return -1;
1992 AliAODMCParticle *mcmotherv0=mcpartv0;
1993 Bool_t isFromXiv0 = kFALSE;
1994 Int_t labxiv0 = mcmotherv0->GetMother();
1995 if(labxiv0<0)
return -1;
1996 mcmotherv0 = (AliAODMCParticle*) mcArray->At(labxiv0);
1998 Int_t pdg = TMath::Abs(mcmotherv0 ->GetPdgCode());
1999 if(pdg==pdgabscasc){
2003 if(!isFromXiv0)
return -1;
2005 AliAODMCParticle *mcmotherb=mcpartb;
2006 Bool_t isFromXib = kFALSE;
2007 Int_t labxib = mcmotherb->GetMother();
2008 if(labxib<0)
return -1;
2009 mcmotherb = (AliAODMCParticle*) mcArray->At(labxib);
2011 Int_t pdg = TMath::Abs(mcmotherb ->GetPdgCode());
2012 if(pdg==pdgabscasc){
2016 if(!isFromXib)
return -1;
2018 if(labxiv0!=labxib)
return -1;
2030 if(trkEntries==0)
return;
2033 for(
Int_t i=0; i<trkEntries; i++) {
2034 seleFlags[i] = kFALSE;
2037 track = (AliVTrack*)event->GetTrack(i);
2039 if(track->GetID()<0)
continue;
2041 if(!track->GetCovarianceXYZPxPyPz(covtest))
continue;
2043 AliAODTrack *aodt = (AliAODTrack*)track;
2064 if(fabs(nsigma_tofele)<3.){
2067 if(fabs(eleeta)<0.6)
2069 if(fabs(eleeta)>0.6 && fabs(eleeta)<0.8)
2082 fVtx1->GetXYZ(primVtx);
2085 for(
Int_t icasc=0;icasc<nCascs;icasc++)
2087 seleCascFlags[icasc] = kFALSE;
2088 AliAODcascade *casc = ((
AliAODEvent*)event)->GetCascade(icasc);
2092 seleCascFlags[icasc] = kTRUE;
2106 if(theBinZ<0 || theBinZ>=
fNzVtxBins)
return -1;
2108 if(theBinM<0 || theBinM>=
fNCentBins)
return -1;
2116 if(poolIndex<0 || poolIndex>=
fNOfPools)
return;
2118 fEventBuffer[poolIndex]=
new TTree(Form(
"EventBuffer_%d",poolIndex),
"Temporary buffer for event mixing");
2141 TObjString* eventInfo=0x0;
2142 fEventBuffer[poolIndex]->SetBranchAddress(
"earray", &earray);
2143 fEventBuffer[poolIndex]->SetBranchAddress(
"eventInfo",&eventInfo);
2144 fEventBuffer[poolIndex]->SetBranchAddress(
"zVertex", &zVertex);
2145 fEventBuffer[poolIndex]->SetBranchAddress(
"centrality", ¢);
2146 for (
Int_t i=0; i<aodEvent->GetNumberOfCascades(); i++)
2148 if(!seleFlags[i])
continue;
2149 AliAODcascade* casc = aodEvent->GetCascade(i);
2153 fEventBuffer[poolIndex]->GetEvent(iEv + nEvents - fNumberOfEventsForMixing);
2157 Int_t nElectrons=earray1->GetEntries();
2165 for(
Int_t iTr1=0; iTr1<nElectrons; iTr1++){
2166 AliAODTrack* trk1=(AliAODTrack*)earray1->At(iTr1);
2170 if(!secVert)
continue;
2177 TClonesArray *fake = 0;
2180 exobj->GetSecondaryVtx()->RemoveDaughters();
2182 delete exobj;exobj=NULL;
2198 Int_t nmcpart = mcArray->GetEntriesFast();
2199 for(
Int_t i=0;i<nmcpart;i++)
2201 AliAODMCParticle *mcpart = (AliAODMCParticle*) mcArray->At(i);
2202 if(TMath::Abs(mcpart->GetPdgCode())==4332){
2205 AliAODMCParticle *mcepart = 0;
2206 AliAODMCParticle *mccascpart = 0;
2207 for(
Int_t idau=mcpart->GetFirstDaughter();idau<mcpart->GetLastDaughter()+1;idau++)
2210 AliAODMCParticle *mcdau = (AliAODMCParticle*) mcArray->At(idau);
2211 if(!mcdau)
continue;
2212 if(TMath::Abs(mcdau->GetPdgCode())==11){
2216 if(TMath::Abs(mcdau->GetPdgCode())==3334){
2222 Int_t decaytype = -9999;
2223 if(e_flag && xi_flag) decaytype = 0;
2227 if(TMath::Abs(mcpart->GetPdgCode())==11 && mcpart->GetStatus()==1){
2230 esdcuts->GetEtaRange(etamin,etamax);
2231 if(fabs(mcpart->Eta())<etamax)
2234 if(TMath::Abs(mcpart->GetPdgCode())==3334){
2239 if((fabs(mcpart->Y())<rapmax) && (fabs(mcpart->Eta())<etamax))
TH2F * fHistoElePtRSMix
! e spectra (right-sign, mix)
THnSparse * fHistoEleOmegaMassRSMix
! e-Omega mass spectra (right-sign)
THnSparse * fHistoEleOmegaMassvsElePtWSMix
! e-Omega mass-ept spectra (wrong-sign)
virtual Int_t IsSelected(TObject *obj, Int_t selectionLevel)
THnSparse * fHistoEleOmegaMassRS
! e-Omega mass spectra (right-sign)
TH2F * fHistoElePtMCS
! e spectra (Efficiency numerator)
void FillCascROOTObjects(AliAODcascade *casc, TClonesArray *mcArray)
TH2F * fHistoXiMassvsPt
! Xi mass vs pt histogram
THnSparse * fHistoEleOmegaMassMCGen
! e-Omega mass spectra (Efficiency denominator)
THnSparse * fHistoElePtvsOmegaPtMCGen
! e-Omega spectra (wrong-sign) efficiency denominator
THnSparse * fHistoEleOmegaMassvsElePtMCGen
! e-Omega mass-ept spectra (Efficiency denominator)
AliESDVertex * fV1
primary vertex
TH2F * fHistoElectronTPCPIDSelTOFSmallEta
! TPC electron PID after TOF 3 sigma cut (|eta|<0.6)
Bool_t SingleCascadeCuts(AliAODcascade *casc, Double_t *vert)
TH2F * fHistoElePtWS
! e spectra (wrong-sign)
Bool_t GetUseCascadePID()
TList * fOutput
Use MC info.
TH1F * fHTrigger
! Histogram to check Trigger
void DefineTreeVariables()
AliNormalizationCounter * fCounter
!Counter for normalization
Bool_t fReconstructPrimVert
void DefineGeneralHistograms()
Bool_t fIsINT7
Central trigger event.
AliRDHFCutsOmegactoeleOmegafromAODtracks * fAnalCuts
void UnsetOwnPrimaryVtx()
TTree ** fEventBuffer
number of pools
TH2F * fHistoElectronTPCPIDSelTOF
! TPC electron PID after TOF 3 sigma cut
AliAODPidHF * GetPidCascPr() const
TH2F * fHistoOmegaMassvsPt
! Omega mass vs pt histogram
Int_t GetPoolIndex(Double_t zvert, Double_t mult)
TH1F * fHistoBachPt
! Bachelor pT histogram
Int_t fEvNumberCounter
Stores trigger information.
TH1F * fHistonOmegavsRunNumber
! nOmega vs runnumber
void DefineCascTreeVariables()
TH2F * fHistoElectronTOFSelPID
! TOF electron PID after selection
AliAODVertex * CallPrimaryVertex(AliAODcascade *casc, AliAODTrack *trk, AliAODEvent *evt)
Int_t MatchToMCCascade(AliAODcascade *theCascade, Int_t pdgabscasc, Int_t *pdgDgcasc, Int_t *pdgDgv0, TClonesArray *mcArray) const
void DefineAnalysisHistograms()
Int_t fNzVtxBins
maximum number of events to be used in event mixing
virtual void Terminate(Option_t *option)
AliAODRecoCascadeHF * MakeCascadeHF(AliAODcascade *casc, AliAODTrack *trk, AliAODEvent *aod, AliAODVertex *vert, Bool_t mixing)
virtual ~AliAnalysisTaskSEOmegac2eleOmegafromAODtracks()
THnSparse * fHistoElePtvsEtaRS
! e spectra (right-sign)
TH1F * fHCentrality
! Histogram to check Centrality
void GetProdCascEtaRange(Double_t &a, Double_t &b)
void DefineMCTreeVariables()
Bool_t fWriteMCVariableTree
flag to decide whether to write the candidate variables on a tree variables
TH2F * fHistoElectronTPCPID
! TPC electron PID
TTree * fMCVariablesTree
! tree of the candidate variables after track selection on output slot 4
Float_t * fCandidateVariables
EMC7 trigger event.
Double_t GetMaxVtxZ() const
TH2F * fHistoOmegaMassvsPtMCS
! Omega mass vs pt histogram
Double_t fZvtxBins[100]
number of z vrtx bins
THnSparse * fHistoElePtvsd0MCS
! e pt-d0 spectra (right-sign)
TH1F * fHistonElevsRunNumber
! nele vs runnumber
void FillElectronROOTObjects(AliAODTrack *trk, TClonesArray *mcArray)
Bool_t fIsCent
SemiCentral trigger event.
TString part
use mixed event to constrain combinatorial background
void FillMCROOTObjects(AliAODMCParticle *part, AliAODMCParticle *mcepart, AliAODMCParticle *mcv0part, Int_t decaytype)
AliAODVertex * PrimaryVertex(const TObjArray *trkArray, AliVEvent *event)
AliAODPidHF * GetPidHF() const
TH2F * fHistoElePtRS
! e spectra (right-sign)
THnSparse * fHistoEleOmegaMassvsElePtMCS
! e-Omega mass-ept spectra (Efficiency numerator)
TTree * fEleVariablesTree
flag to decide whether to write the candidate variables on a tree variables
THnSparse * fHistoElePtvsEtaMCGen
! e spectra (wrong-sign) efficiency denominator
AliAODPidHF * GetPidCascPi() const
void GetProdCascRapRange(Double_t &a, Double_t &b)
THnSparse * fHistoElePtvsEtaWSMix
! e spectra (wrong-sign, mix)
THnSparse * fHistoElePtvsEtaWS
! e spectra (wrong-sign)
Bool_t fUseCentralityV0M
Stores trigger information.
THnSparse * fHistoEleOmegaMassWSMix
! e-Omega mass spectra (wrong-sign)
Float_t * fCandidateEleVariables
! variables to be written to the tree
THnSparse * fHistoElePtvsOmegaPtRSMix
! e-Omega spectra (right-sign, mix)
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)
void SelectCascade(const AliVEvent *event, Int_t nCasc, Int_t &nSeleCasc, Bool_t *seleCascFlags, TClonesArray *mcArray)
TH1F * fHistod0Bach
! Bachelor d0 histogram
Double_t fCentBins[100]
number of centrality bins
virtual void UserCreateOutputObjects()
Implementation of interface methods.
Float_t fCentrality
magnetic field value [kG]
THnSparse * fHistoElePtvsEtaMCS
! e spectra (right-sign) efficiency numerator
Float_t fVtxZ
primary vertex
THnSparse * fHistoEleOmegaMassMCS
! e-Omega mass spectra (Efficiency numerator)
Bool_t fWriteEachVariableTree
THnSparse * fHistoElePtvsOmegaPtWSMix
! e-Omega spectra (wrong-sign, mix)
THnSparse * fHistoEleOmegaMassvsElePtWS
! e-Omega mass spectra (wrong-sign)
TH2F * fHistoElePtMCGen
! e spectra (Efficiency denominator)
TH2F * fHistoElectronTPCSelPID
! TPC electron PID after selection
AliAODTrack * GetBachelor() const
void MakeMCAnalysis(TClonesArray *mcArray)
AliESDtrackCuts * GetTrackCuts() const
void SetProngIDs(Int_t nIDs, UShort_t *id)
Double_t nEvents
plot quality messages
Int_t fNumberOfEventsForMixing
flag for event mixing
TH2F * fHistoElePtWSMix
! e spectra (wrong-sign, mix)
TObjArray * fElectronTracks
unique event id for mixed event check
Float_t * fCandidateCascVariables
! variables to be written to the tree
Float_t fTriggerCheck
Centrality.
AliPIDResponse * GetPidResponse() const
AliAnalysisTaskSEOmegac2eleOmegafromAODtracks()
virtual void UserExec(Option_t *option)
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 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)
TTree * fVariablesTree
! tree of the candidate variables after track selection on output slot 4
Bool_t IsEventRejectedDuePhysicsSelection() const
void SetOwnPrimaryVtx(const AliAODVertex *vtx)
TH2F * fHistoElectronTOFPID
! TOF electron PID
AliAODcascade * GetCascade() const
TH1F * fHistoBachPtMCGen
! Bachelor pT histogram (efficiency denominator)
Bool_t fWriteVariableTree
TList * fListCuts
! User output slot 2 // Cuts
THnSparse * fHistoEleOmegaMass
EvNumber counter.
THnSparse * fHistoEleOmegaMassWS
! e-Omega mass spectra (wrong-sign)
Bool_t SingleTrkCuts(AliAODTrack *trk, AliAODVertex *primvert)
void DefineEleTreeVariables()
Bool_t IsEventSelected(AliVEvent *event)
void StoreEvent(AliVEvent *, AliRDHFCuts *, Bool_t mc=kFALSE, Int_t multiplicity=-9999, Double_t spherocity=-99.)
TH1F * fHistoBachPtMCS
! Bachelor pT histogram (efficiency numerator)
void ResetPool(Int_t poolIndex)
THnSparse * fHistoElePtvsOmegaPtWS
! e-Omega spectra (wrong-sign)
TTree * fCascVariablesTree
! tree of the candidate variables after track selection on output slot 4
TH1F * fCEvents
! Histogram to check selected events
TH1F * fHistonEvtvsRunNumber
! nevt vs runnumber
TList * fOutputAll
! User Output slot 3 //analysis histograms
THnSparse * fHistoElePtvsOmegaPtMCS
! e-Omega spectra (right-sign) efficiency numerator
THnSparse * fHistoEleOmegaMassvsElePtRS
! e-Omega mass spectra (right-sign)
THnSparse * fHistoElePtvsd0RS
! e pt-d0 spectra (right-sign)
Bool_t GetIsUsePID() const
void MakeAnalysis(AliAODEvent *aod, TClonesArray *mcArray)
Bool_t IsEventRejectedDueToTrigger() const
THnSparse * fHistoElePtvsd0WSMix
! e pt-d0 spectra (wrong-sign, mix)
Bool_t fIsEMC7
INT7 trigger event.
THnSparse * fHistoElePtvsd0RSMix
! e pt-d0 spectra (right-sign, mix)
Bool_t fIsSemi
MB trigger event.
void FillROOTObjects(AliAODRecoCascadeHF *elobj, AliAODcascade *casc, AliAODTrack *trk, TClonesArray *mcArray, Bool_t mixing)
TH2F * fHistoOmegaMassvsPtMCGen
! Omega mass vs pt histogram
THnSparse * fHistoElePtvsEtaRSMix
! e spectra (right-sign, mix)
TH2F * fHistoElectronTPCPIDSelTOFLargeEta
! TPC electron PID after TOF 3 sigma cut (0.8>|eta|>0.6)
THnSparse * fHistoElePtvsd0WS
! e pt-d0 spectra (wrong-sign)
void DoEventMixingWithPools(Int_t index, AliAODEvent *aodEvent, Bool_t *seleFlags)
AliAODVertex * ReconstructSecondaryVertex(AliAODcascade *casc, AliAODTrack *trk, AliAODEvent *aod)
THnSparse * fHistoElePtvsOmegaPtRS
! e-Omega spectra (right-sign)
THnSparse * fHistoEleOmegaMassvsElePtRSMix
! e-Omega mass-ept spectra (right-sign)