26 #include <Riostream.h>
28 #include <TDatabasePDG.h>
31 #include "AliAnalysisManager.h"
32 #include "AliInputEventHandler.h"
33 #include "AliPIDResponse.h"
36 #include "AliAODTrack.h"
37 #include "AliESDtrack.h"
38 #include "AliESDVertex.h"
39 #include "AliAODVertex.h"
41 #include "AliAODcascade.h"
55 fPIDStrategy(kNSigmaCuts),
56 fCombinedPIDThreshold(0.),
57 fUseCascadePID(kFALSE),
61 fProdTrackTPCNclsPIDMin(0),
62 fProdTrackTPCNclsRatioMin(0.0),
63 fProdUseAODFilterBit(kTRUE),
65 fProdRejectTrackWithShared(kFALSE),
66 fProdMassTolLambda(0.010),
67 fProdMassTolXiRough(0.020),
68 fProdMassTolXi(0.008),
69 fProdMassRejOmega(0.008),
71 fProdRfidMaxV0(100.0),
73 fProdRfidMaxXi(100.0),
74 fProdCascProperDecayLengthMax(100.0),
75 fProdDcaXiDaughtersMax(100.),
76 fProdDcaV0DaughtersMax(100.),
77 fProdDcaBachToPrimVertexMin(0.),
78 fProdDcaV0ToPrimVertexMin(0.),
79 fProdDcaV0PrToPrimVertexMin(0.),
80 fProdDcaV0PiToPrimVertexMin(0.),
81 fProdXiCosineOfPoiningAngleMin(-1.),
82 fProdV0CosineOfPoiningAngleXiMin(-1.),
83 fProdCascNTPCClustersMin(0.0),
84 fProdCascEtaMin(-9999.),
85 fProdCascEtaMax(9999.),
86 fProdCascRapMin(-9999.),
87 fProdCascRapMax(9999.),
89 fProdCascPtMax(9999.),
90 fProdRoughMassTol(0.25),
92 fExcludePionTPC(kFALSE),
93 fExcludeProtonTPC(kFALSE),
94 fExcludeKaonTPC(kFALSE),
95 fExcludenSigmaPionTPC(3.),
96 fExcludenSigmaProtonTPC(3.),
97 fExcludenSigmaKaonTPC(3.),
98 fSigmaElectronTPCMin(-9999.),
99 fSigmaElectronTPCPtDepPar0(-9999.),
100 fSigmaElectronTPCPtDepPar1(-9999.),
101 fSigmaElectronTPCPtDepPar2(0.),
102 fSigmaElectronTPCMax(9999.),
103 fSigmaElectronTOFMin(-9999.),
104 fSigmaElectronTOFMax(9999.),
105 fConversionMassMax(-1.)
110 for(Int_t i=0;i<3;i++){
116 TString varNames[nvars]={
118 "cos(Opening angle) [cos(rad)]",
123 Bool_t isUpperCut[nvars]={
130 Bool_t forOpt[nvars]={
138 Float_t limits[2]={0,999999999.};
144 fPIDStrategy(source.fPIDStrategy),
145 fCombinedPIDThreshold(source.fCombinedPIDThreshold),
146 fUseCascadePID(source.fUseCascadePID),
147 fPidObjCascPi(source.fPidObjCascPi),
148 fPidObjCascPr(source.fPidObjCascPr),
150 fProdTrackTPCNclsPIDMin(source.fProdTrackTPCNclsPIDMin),
151 fProdTrackTPCNclsRatioMin(source.fProdTrackTPCNclsRatioMin),
152 fProdUseAODFilterBit(source.fProdUseAODFilterBit),
153 fProdAODFilterBit(source.fProdAODFilterBit),
154 fProdRejectTrackWithShared(source.fProdRejectTrackWithShared),
155 fProdMassTolLambda(source.fProdMassTolLambda),
156 fProdMassTolXiRough(source.fProdMassTolXiRough),
157 fProdMassTolXi(source.fProdMassTolXi),
158 fProdMassRejOmega(source.fProdMassRejOmega),
159 fProdRfidMinV0(source.fProdRfidMinV0),
160 fProdRfidMaxV0(source.fProdRfidMaxV0),
161 fProdRfidMinXi(source.fProdRfidMinXi),
162 fProdRfidMaxXi(source.fProdRfidMaxXi),
163 fProdCascProperDecayLengthMax(source.fProdCascProperDecayLengthMax),
164 fProdDcaXiDaughtersMax(source.fProdDcaXiDaughtersMax),
165 fProdDcaV0DaughtersMax(source.fProdDcaV0DaughtersMax),
166 fProdDcaBachToPrimVertexMin(source.fProdDcaBachToPrimVertexMin),
167 fProdDcaV0ToPrimVertexMin(source.fProdDcaV0ToPrimVertexMin),
168 fProdDcaV0PrToPrimVertexMin(source.fProdDcaV0PrToPrimVertexMin),
169 fProdDcaV0PiToPrimVertexMin(source.fProdDcaV0PiToPrimVertexMin),
170 fProdXiCosineOfPoiningAngleMin(source.fProdXiCosineOfPoiningAngleMin),
171 fProdV0CosineOfPoiningAngleXiMin(source.fProdV0CosineOfPoiningAngleXiMin),
172 fProdCascNTPCClustersMin(source.fProdCascNTPCClustersMin),
173 fProdCascEtaMin(source.fProdCascEtaMin),
174 fProdCascEtaMax(source.fProdCascEtaMax),
175 fProdCascRapMin(source.fProdCascRapMin),
176 fProdCascRapMax(source.fProdCascRapMax),
177 fProdCascPtMin(source.fProdCascPtMin),
178 fProdCascPtMax(source.fProdCascPtMax),
179 fProdRoughMassTol(source.fProdRoughMassTol),
180 fProdRoughPtMin(source.fProdRoughPtMin),
181 fExcludePionTPC(source.fExcludePionTPC),
182 fExcludeProtonTPC(source.fExcludeProtonTPC),
183 fExcludeKaonTPC(source.fExcludeKaonTPC),
184 fExcludenSigmaPionTPC(source.fExcludenSigmaPionTPC),
185 fExcludenSigmaProtonTPC(source.fExcludenSigmaProtonTPC),
186 fExcludenSigmaKaonTPC(source.fExcludenSigmaKaonTPC),
187 fSigmaElectronTPCMin(source.fSigmaElectronTPCMin),
188 fSigmaElectronTPCPtDepPar0(source.fSigmaElectronTPCPtDepPar0),
189 fSigmaElectronTPCPtDepPar1(source.fSigmaElectronTPCPtDepPar1),
190 fSigmaElectronTPCPtDepPar2(source.fSigmaElectronTPCPtDepPar2),
191 fSigmaElectronTPCMax(source.fSigmaElectronTPCMax),
192 fSigmaElectronTOFMin(source.fSigmaElectronTOFMin),
193 fSigmaElectronTOFMax(source.fSigmaElectronTOFMax),
194 fConversionMassMax(source.fConversionMassMax)
199 for(Int_t i=0;i<3;i++){
210 if (
this != &source) {
266 for(Int_t i=0;i<3;i++){
287 if (pdgdaughters[0]==-9999)
return;
291 AliError(
"No AliAODRecoCascadeHF object found\n");
296 AliError(
"Cut object seems to have the wrong number of variables\n");
306 UInt_t pdgdg[2]={11,3312};
307 vars[iter]= dd->InvMass(2,pdgdg);
311 Double_t xipx = dd->PxProng(1);
312 Double_t xipy = dd->PyProng(1);
313 Double_t xipz = dd->PzProng(1);
314 Double_t epx = dd->PxProng(0);
315 Double_t epy = dd->PyProng(0);
316 Double_t epz = dd->PzProng(0);
317 vars[iter]= (xipx*epx+xipy*epy+xipz*epz)/sqrt(xipx*xipx+xipy*xipy+xipz*xipz)/sqrt(epx*epx+epy*epy+epz*epz);
330 AliFatal(
"Cut matrix not inizialized. Exit...");
336 AliDebug(2,
"AliAODRecoCascadeHF null");
340 Double_t ptD=d->Pt();
349 Int_t returnvalueCuts=1;
355 Int_t ptbin=
PtBin(pt);
361 Double_t mxiPDG = TDatabasePDG::Instance()->GetParticle(3312)->Mass();
362 UInt_t pdgdg[2]={11,3312};
363 Double_t InvMassEleXi = d->InvMass(2,pdgdg);
364 Double_t xipx = d->PxProng(1);
365 Double_t xipy = d->PyProng(1);
366 Double_t xipz = d->PzProng(1);
367 Double_t epx = d->PxProng(0);
368 Double_t epy = d->PyProng(0);
369 Double_t epz = d->PzProng(0);
370 Double_t cosoa = (xipx*epx+xipy*epy+xipz*epz)/sqrt(xipx*xipx+xipy*xipy+xipz*xipz)/sqrt(epx*epx+epy*epy+epz*epz);
372 Double_t dphis_e_pr, detas_e_pr, dphis_e_pi, detas_e_pi, dphis_e_bach, detas_e_bach;
377 dphis_e_bach = 9999.;
378 detas_e_bach = 9999.;
380 AliAODTrack *trke = (AliAODTrack*)d->GetDaughter(0);
381 AliAODcascade *casc = (AliAODcascade*)d->GetDaughter(1);
383 AliAODTrack *cprtrk = 0;
384 AliAODTrack *cpitrk = 0;
385 AliAODTrack *cbtrk = 0;
386 if(casc->ChargeXi()<0){
387 cprtrk = (AliAODTrack*)casc->GetDaughter(0);
388 cpitrk = (AliAODTrack*)casc->GetDaughter(1);
389 cbtrk = (AliAODTrack*)casc->GetDecayVertexXi()->GetDaughter(0);
391 cprtrk = (AliAODTrack*)casc->GetDaughter(1);
392 cpitrk = (AliAODTrack*)casc->GetDaughter(0);
393 cbtrk = (AliAODTrack*)casc->GetDecayVertexXi()->GetDaughter(0);
395 if(cprtrk && cpitrk && cbtrk)
396 GetdPhiSdEtaSR125(trke,cprtrk,cpitrk,cbtrk,
fBzkG,
fPrimVert, dphis_e_pr,detas_e_pr,dphis_e_pi,detas_e_pi,dphis_e_bach,detas_e_bach);
433 if(!okcand)
return 0;
437 Int_t returnvaluePID=1;
444 Int_t returnvalue = 0;
445 if(returnvalueCuts==1 && returnvaluePID==1) returnvalue=1;
465 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
466 AliInputEventHandler *inputHandler=(AliInputEventHandler*)mgr->GetInputEventHandler();
467 AliPIDResponse *pidResp=inputHandler->GetPIDResponse();
472 if(isElectron<1) returnvalue = 0;
483 if(!
fUsePID || !obj) {
return 1;}
510 if(trk->Pt()<ptmin || trk->Pt()>
ptmax)
return kFALSE;
511 if(trk->Eta()<etamin || trk->Eta()>
etamax)
return kFALSE;
513 Double_t pos[3]; primVert->GetXYZ(pos);
514 Double_t cov[6]; primVert->GetCovarianceMatrix(cov);
515 const AliESDVertex vESD(pos,cov,100.,100);
521 if(trk->GetTPCNclsF()>0){
522 Float_t tpcratio = (Float_t)trk->GetTPCncls()/(Float_t)trk->GetTPCNclsF();
527 const TBits sharedMap = trk->GetTPCSharedMap();
528 if((sharedMap.CountBits()) >= 1){
536 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
537 AliInputEventHandler *inputHandler=(AliInputEventHandler*)mgr->GetInputEventHandler();
538 AliPIDResponse *pidResp=inputHandler->GetPIDResponse();
575 if(trk->Pt()<ptmin || trk->Pt()>
ptmax)
return kFALSE;
576 if(trk->Eta()<etamin || trk->Eta()>
etamax)
return kFALSE;
578 Double_t pos[3]; primVert->GetXYZ(pos);
579 Double_t cov[6]; primVert->GetCovarianceMatrix(cov);
580 const AliESDVertex vESD(pos,cov,100.,100);
586 if(trk->GetTPCNclsF()>0){
587 Float_t tpcratio = (Float_t)trk->GetTPCncls()/(Float_t)trk->GetTPCNclsF();
592 const TBits sharedMap = trk->GetTPCSharedMap();
593 if((sharedMap.CountBits()) >= 1){
630 if(isElectron<1)
return kFALSE;
687 Double_t pte = trk->Pt();
690 if(nSigmaTPCele<nsigmamin)
return kFALSE;
711 if(!casc)
return kFALSE;
712 if(!(casc->GetSecondaryVtx()))
return kFALSE;
713 if(!(casc->GetDecayVertexXi()))
return kFALSE;
715 AliAODTrack *ptrack = (AliAODTrack*) (casc->GetDaughter(0));
716 AliAODTrack *ntrack = (AliAODTrack*) (casc->GetDaughter(1));
717 AliAODTrack *btrack = (AliAODTrack*) (casc->GetDecayVertexXi()->GetDaughter(0));
719 if(!ptrack||!ntrack||!btrack)
return kFALSE;
721 if(ptrack->Charge()<0 && ntrack->Charge()>0){
722 ptrack = (AliAODTrack*) (casc->GetDaughter(1));
723 ntrack = (AliAODTrack*) (casc->GetDaughter(0));
730 Double_t pxxi = casc->MomXiX();
731 Double_t pyxi = casc->MomXiY();
732 Double_t ptxi = sqrt(pxxi*pxxi+pyxi*pyxi);
735 Double_t mLPDG = TDatabasePDG::Instance()->GetParticle(3122)->Mass();
736 Double_t mxiPDG = TDatabasePDG::Instance()->GetParticle(3312)->Mass();
737 Double_t momegaPDG = TDatabasePDG::Instance()->GetParticle(3334)->Mass();
739 Double_t massLambda = casc->MassLambda();
740 Double_t massAntiLambda = casc->MassAntiLambda();
744 Bool_t isparticle = kTRUE;
746 if(casc->ChargeXi()>0) isparticle = kFALSE;
748 Double_t massXi = casc->MassXi();
752 Double_t massOmega = casc->MassOmega();
758 lPosXi[0] = casc->DecayVertexXiX();
759 lPosXi[1] = casc->DecayVertexXiY();
760 lPosXi[2] = casc->DecayVertexXiZ();
761 Double_t decayvertXi = TMath::Sqrt(lPosXi[0]*lPosXi[0]+lPosXi[1]*lPosXi[1]);
763 lPosV0[0] = casc->DecayVertexV0X();
764 lPosV0[1] = casc->DecayVertexV0Y();
765 lPosV0[2] = casc->DecayVertexV0Z();
766 Double_t decayvertV0 = TMath::Sqrt(lPosV0[0]*lPosV0[0]+lPosV0[1]*lPosV0[1]);
768 if(decayvertV0<fProdRfidMinV0 || decayvertV0>
fProdRfidMaxV0)
return kFALSE;
769 if(decayvertXi<fProdRfidMinXi || decayvertXi>
fProdRfidMaxXi)
return kFALSE;
771 Double_t ptotxi = TMath::Sqrt(pow(casc->MomXiX(),2)+pow(casc->MomXiY(),2)+pow(casc->MomXiZ(),2));
772 Double_t properdl = casc->DecayLengthXi(primvert[0],primvert[1],primvert[2])*mxiPDG/ptotxi;
775 Double_t lDcaXiDaughters = casc->DcaXiDaughters();
776 Double_t lDcaV0Daughters = casc->DcaV0Daughters();
780 Double_t lDcaBachToPrimVertex = casc->DcaBachToPrimVertex();
781 Double_t lDcaV0ToPrimVertex = casc->DcaV0ToPrimVertex();
782 Double_t lDcaPosToPrimVertex = casc->DcaPosToPrimVertex();
783 Double_t lDcaNegToPrimVertex = casc->DcaNegToPrimVertex();
794 Double_t lXiCosineOfPointingAngle = casc->CosPointingAngleXi(primvert[0],primvert[1],primvert[2]);
795 Double_t lV0CosineOfPointingAngleXi = casc->CosPointingAngle(lPosXi);
803 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
804 AliInputEventHandler *inputHandler=(AliInputEventHandler*)mgr->GetInputEventHandler();
805 AliPIDResponse *pidResp=inputHandler->GetPIDResponse();
809 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
810 AliInputEventHandler *inputHandler=(AliInputEventHandler*)mgr->GetInputEventHandler();
811 AliPIDResponse *pidResp=inputHandler->GetPIDResponse();
815 Int_t isProton = -9999;
816 Int_t isPion1 = -9999;
817 Int_t isPion2 = -9999;
823 if(fabs(nSigmaTPCpr)<nsigmatpc_proton) isProton = 1;
824 if(fabs(nSigmaTPCpi1)<nsigmatpc_pion) isPion1 = 1;
825 if(fabs(nSigmaTPCpi2)<nsigmatpc_pion) isPion2 = 1;
826 if(isProton<1)
return kFALSE;
827 if(isPion1<1)
return kFALSE;
828 if(isPion2<1)
return kFALSE;
830 Int_t isProton = -9999;
831 Int_t isPion1 = -9999;
832 Int_t isPion2 = -9999;
838 if(fabs(nSigmaTPCpr)<nsigmatpc_proton) isProton = 1;
839 if(fabs(nSigmaTPCpi1)<nsigmatpc_pion) isPion1 = 1;
840 if(fabs(nSigmaTPCpi2)<nsigmatpc_pion) isPion2 = 1;
841 if(isProton<1)
return kFALSE;
842 if(isPion1<1)
return kFALSE;
843 if(isPion2<1)
return kFALSE;
847 Double_t RapXi = casc->RapXi();
850 Double_t EtaXi = 0.5*TMath::Log((ptotxi+casc->MomXiZ())/(ptotxi-casc->MomXiZ()));
854 const TBits sharedMap1 = ptrack->GetTPCSharedMap();
855 const TBits sharedMap2 = ntrack->GetTPCSharedMap();
856 const TBits sharedMap3 = btrack->GetTPCSharedMap();
857 if((sharedMap1.CountBits() >= 1) || (sharedMap2.CountBits() >= 1) ||
858 (sharedMap3.CountBits() >= 1))
875 if(!casc)
return kFALSE;
876 if(!part)
return kFALSE;
884 Double_t mxiPDG = TDatabasePDG::Instance()->GetParticle(3312)->Mass();
885 Double_t massXi = casc->MassXi();
894 Double_t mxiPDG = TDatabasePDG::Instance()->GetParticle(3312)->Mass();
895 Double_t massXi = casc->M();
904 Double_t mxiPDG = TDatabasePDG::Instance()->GetParticle(3312)->Mass();
905 Double_t massXi = casc->MassXi();
906 Bool_t issideband = kFALSE;
915 Double_t mxiPDG = TDatabasePDG::Instance()->GetParticle(3312)->Mass();
916 Double_t massXi = casc->M();
917 Bool_t issideband = kFALSE;
931 Bool_t isconv = kFALSE;
934 Int_t trkid = etrk->GetID();
935 Double_t px1 = etrk->Px();
936 Double_t py1 = etrk->Py();
937 Double_t pz1 = etrk->Pz();
938 Double_t E1 = sqrt(px1*px1+py1*py1+pz1*pz1+0.000511*0.000511);
940 for(Int_t it=0;it<ntrk;it++){
941 AliAODTrack *trk2 = (AliAODTrack*) evt->GetTrack(it);
943 Int_t trkid2 = trk2->GetID();
944 if(abs(trkid)==abs(trkid2))
continue;
945 if(etrk->Charge()*trk2->Charge()>0)
continue;
953 Double_t nSigmaTPCele = 9999.;
955 if(-trkid2-1>=19000)
continue;
956 if(-trkid2-1<0)
continue;
957 Int_t index = id2index[-trkid2-1];
958 AliAODTrack *partpid = (AliAODTrack*)evt->GetTrack(index);
963 if(fabs(nSigmaTPCele)>5.)
continue;
965 Double_t px2 = trk2->Px();
966 Double_t py2 = trk2->Py();
967 Double_t pz2 = trk2->Pz();
968 Double_t E2 = sqrt(px2*px2+py2*py2+pz2*pz2+0.000511*0.000511);
970 Double_t
mass = sqrt(pow(E1+E2,2)-pow(px1+px2,2)-pow(py1+py2,2)-pow(pz1+pz2,2));
971 if(mass<minmass) minmass =
mass;
986 Bool_t isconv = kFALSE;
989 Int_t trkid = etrk->GetID();
990 Double_t px1 = etrk->Px();
991 Double_t py1 = etrk->Py();
992 Double_t pz1 = etrk->Pz();
993 Double_t E1 = sqrt(px1*px1+py1*py1+pz1*pz1+0.000511*0.000511);
995 for(Int_t it=0;it<ntrk;it++){
996 AliAODTrack *trk2 = (AliAODTrack*) evt->GetTrack(it);
998 Int_t trkid2 = trk2->GetID();
999 if(abs(trkid)==abs(trkid2))
continue;
1000 if(etrk->Charge()*trk2->Charge()<0)
continue;
1008 Double_t nSigmaTPCele = 9999.;
1010 if(-trkid2-1>=19000)
continue;
1011 if(-trkid2-1<0)
continue;
1012 Int_t index = id2index[-trkid2-1];
1013 AliAODTrack *partpid = (AliAODTrack*)evt->GetTrack(index);
1018 if(fabs(nSigmaTPCele)>5.)
continue;
1020 Double_t px2 = trk2->Px();
1021 Double_t py2 = trk2->Py();
1022 Double_t pz2 = trk2->Pz();
1023 Double_t E2 = sqrt(px2*px2+py2*py2+pz2*pz2+0.000511*0.000511);
1025 Double_t
mass = sqrt(pow(E1+E2,2)-pow(px1+px2,2)-pow(py1+py2,2)-pow(pz1+pz2,2));
1026 if(mass<minmass) minmass =
mass;
1046 AliExternalTrackParam etp;
1047 etp.CopyFromVTrack(track);
1050 Double_t xyz[3]={-9999.,-9999.,-9999.};
1053 const Float_t RSquaredWanted(125.*125.);
1057 for (Float_t x = 58.;x<247.;x+=1.){
1067 if(!etp.PropagateTo(x,(Float_t)bfield))
break;
1072 Float_t shiftedRadiusSquared = (xyz[0]-priVtx[0])*(xyz[0]-priVtx[0])
1073 + (xyz[1]-priVtx[1])*(xyz[1]-priVtx[1]);
1076 if(shiftedRadiusSquared > RSquaredWanted){
1080 while (shiftedRadiusSquared>RSquaredWanted){
1083 if(!etp.PropagateTo(x,bfield)){
1092 shiftedRadiusSquared = (xyz[0]-priVtx[0])*(xyz[0]-priVtx[0])
1093 + (xyz[1]-priVtx[1])*(xyz[1]-priVtx[1]);
1097 XSftR125[0]=xyz[0]-priVtx[0];
1098 XSftR125[1]=xyz[1]-priVtx[1];
1099 XSftR125[2]=xyz[2]-priVtx[2];
1116 Double_t ThetaS1 = TMath::Pi()/2. - TMath::ATan(postrack1[2]/125.);
1117 Double_t ThetaS2 = TMath::Pi()/2. - TMath::ATan(postrack2[2]/125.);
1118 Double_t EtaS1 = -TMath::Log( TMath::Tan(ThetaS1/2.) );
1119 Double_t EtaS2 = -TMath::Log( TMath::Tan(ThetaS2/2.) );
1132 Double_t distSft= TMath::Sqrt(TMath::Power(postrack1[0] - postrack2[0],2)
1133 +TMath::Power(postrack1[1] - postrack2[1],2));
1134 return 2.0 * TMath::ATan(distSft/2./(125.));
1139 AliAODTrack *trackn, Double_t bfield, Double_t priVtx[3], Double_t &dPhiS_ep, Double_t &dEtaS_ep,
1140 Double_t &dPhiS_en, Double_t &dEtaS_en, Double_t &dPhiS_eb, Double_t &dEtaS_eb)
1145 Double_t XSftR125_e[3];
1147 Double_t XSftR125_p[3];
1149 Double_t XSftR125_n[3];
1151 Double_t XSftR125_b[3];
1153 dPhiS_ep =
dPhiSR125(XSftR125_e,XSftR125_p);
1154 dEtaS_ep =
dEtaSR125(XSftR125_e,XSftR125_p);
1155 dPhiS_en =
dPhiSR125(XSftR125_e,XSftR125_n);
1156 dEtaS_en =
dEtaSR125(XSftR125_e,XSftR125_n);
1157 dPhiS_eb =
dPhiSR125(XSftR125_e,XSftR125_b);
1158 dEtaS_eb =
dEtaSR125(XSftR125_e,XSftR125_b);
1169 AliFatal(
"Cut matrix not inizialized. Exit...");
1173 Double_t ptD=cutvars[1];
1177 Double_t pt=cutvars[1];
1178 Int_t ptbin=
PtBin(pt);
1188 Int_t returnvalueCuts=1;
1193 Bool_t okcand=kTRUE;
1195 Double_t mlcPDG = TDatabasePDG::Instance()->GetParticle(4132)->Mass();
1196 Double_t melePDG = TDatabasePDG::Instance()->GetParticle(11)->Mass();
1197 Double_t mxiPDG = TDatabasePDG::Instance()->GetParticle(3312)->Mass();
1198 Double_t v0px = vcasc->Px();
1199 Double_t v0py = vcasc->Py();
1200 Double_t v0pz = vcasc->Pz();
1201 Double_t epx = vtrk->Px();
1202 Double_t epy = vtrk->Py();
1203 Double_t epz = vtrk->Pz();
1204 Double_t cosoa = (v0px*epx+v0py*epy+v0pz*epz)/sqrt(v0px*v0px+v0py*v0py+v0pz*v0pz)/sqrt(epx*epx+epy*epy+epz*epz);
1206 TLorentzVector vele, vxi,vlc;
1207 vele.SetXYZM(epx,epy,epz,melePDG);
1208 vxi.SetXYZM(v0px,v0py,v0pz,mxiPDG);
1211 Double_t dphis_e_pr = 9999.;
1212 Double_t detas_e_pr = 9999.;
1213 Double_t dphis_e_pi = 9999.;
1214 Double_t detas_e_pi = 9999.;
1215 Double_t dphis_e_bach = 9999.;
1216 Double_t detas_e_bach = 9999.;
1218 Double_t xyzR125_e[3], xyzR125_pr[3], xyzR125_pi[3], xyzR125_bach[3];
1219 xyzR125_e[0] = cutvars[0];
1220 xyzR125_e[1] = cutvars[1];
1221 xyzR125_e[2] = cutvars[2];
1222 xyzR125_pr[0] = cutvars[3];
1223 xyzR125_pr[1] = cutvars[4];
1224 xyzR125_pr[2] = cutvars[5];
1225 xyzR125_pi[0] = cutvars[6];
1226 xyzR125_pi[1] = cutvars[7];
1227 xyzR125_pi[2] = cutvars[8];
1228 xyzR125_bach[0] = cutvars[9];
1229 xyzR125_bach[1] = cutvars[10];
1230 xyzR125_bach[2] = cutvars[11];
1231 dphis_e_pr =
dPhiSR125(xyzR125_e,xyzR125_pr);
1232 detas_e_pr =
dPhiSR125(xyzR125_e,xyzR125_pr);
1233 dphis_e_pi =
dPhiSR125(xyzR125_e,xyzR125_pi);
1234 detas_e_pi =
dPhiSR125(xyzR125_e,xyzR125_pi);
1235 dphis_e_bach =
dPhiSR125(xyzR125_e,xyzR125_bach);
1236 detas_e_bach =
dPhiSR125(xyzR125_e,xyzR125_bach);
1272 if(!okcand)
return 0;
1273 returnvalueCuts = 1;
1276 Int_t returnvaluePID=1;
1282 Int_t returnvalue = 0;
1283 if(returnvalueCuts==1 && returnvaluePID==1) returnvalue=1;
Bool_t IsSelectedCustomizedPtDepeID(AliAODTrack *trk, AliAODTrack *trkpid)
Double_t fConversionMassMax
nSigma to exclude for Kaon band
Double_t fSigmaElectronTPCMax
nSigma electron lower limit (par2)
AliRDHFCutsXictoeleXifromAODtracks(const char *name="CutsXictoeleXi")
Bool_t IsSelectedCombinedeID(AliAODTrack *trk)
ClassImp(AliAnalysisTaskTriggerRates) AliAnalysisTaskTriggerRates
Bool_t fExcludePionTPC
pT cut for Lc used before object creation
Double_t fProdRfidMaxV0
Minimum Decay vertex of V0.
Bool_t SingleCascadeCuts(AliAODcascade *casc, Double_t *vert)
Double_t dEtaSR125(Double_t *postrack1, Double_t *postrack2)
AliRDHFCutsXictoeleXifromAODtracks & operator=(const AliRDHFCutsXictoeleXifromAODtracks &source)
Double_t fProdDcaV0PrToPrimVertexMin
Min Dca between v0 and PV.
Bool_t fExcludeKaonTPC
Flag wheter to exlude proton band.
Double_t fProdV0CosineOfPoiningAngleXiMin
Min Xi cos pointing angle to PV.
Double_t fCombinedPIDThreshold
PID strategy.
Double_t fExcludenSigmaPionTPC
Flag wheter to exlude proton band.
Double_t GetSigma(Int_t idet) const
virtual void GetCutVarsForOpt(AliAODRecoDecayHF *d, Float_t *vars, Int_t nvars, Int_t *pdgdaughters)
Double_t fProdCascEtaMin
Minimum number of TPC clusters.
Double_t fProdMassTolXi
Tolerance of Xi mass from PDG value (including sideband)
Double_t fProdDcaBachToPrimVertexMin
Max Dca between V0 daughters.
virtual ~AliRDHFCutsXictoeleXifromAODtracks()
Double_t fProdMassRejOmega
Tolerance of Xi mass from PDG value.
Double_t fProdTrackTPCNclsRatioMin
Min. Number of TPC PID cluster.
Double_t fProdDcaV0DaughtersMax
Max Dca between Xi daughters.
virtual Int_t IsSelectedPID(AliAODRecoDecayHF *obj)
Double_t fExcludenSigmaKaonTPC
nSigma to exclude for proton band
Double_t fProdRfidMaxXi
Minimum Decay vertex of Xi.
Double_t fSigmaElectronTPCMin
nSigma to exclude for Kaon band
Double_t fProdDcaV0ToPrimVertexMin
Min Dca between Bachelor and PV.
Bool_t fExcludeProtonTPC
Flag wheter to exlude pion band.
Double_t fProdDcaXiDaughtersMax
mL/p of cascade
void SetNVars(Int_t nVars)
Double_t fProdRoughMassTol
Maximum Pt of cascade.
Bool_t TagConversionsSameSign(AliAODTrack *etrk, Int_t *id2index, AliAODEvent *evt, Int_t ntrk, Double_t &minmass)
EPIDStrategy fPIDStrategy
AliAODPidHF * fPidObjCascPr
PID object for cascade-pion.
Double_t fProdCascRapMin
Maximum eta of cascade.
AliRDHFCuts & operator=(const AliRDHFCuts &source)
Bool_t TagConversions(AliAODTrack *etrk, Int_t *id2index, AliAODEvent *evt, Int_t ntrk, Double_t &minmass)
Double_t fPrimVert[3]
B field.
Bool_t fUseCascadePID
Threshold used in IsSelectedCombinedPID.
Double_t fSigmaElectronTOFMin
nSigma to exclude for Kaon band
Double_t fProdDcaV0PiToPrimVertexMin
Min Dca between v0-proton and PV.
Bool_t fProdRejectTrackWithShared
AOD filter Bit used before object creation.
Double_t fProdMassTolLambda
Flag to Reject tracks with shared clusters.
Bool_t IsSelectedeID(AliAODTrack *trk)
Double_t fProdRfidMinXi
Max Decay vertex of V0.
Bool_t SelectWithRoughCuts(AliAODcascade *casc, AliAODTrack *trk1)
Double_t fSigmaElectronTPCPtDepPar1
nSigma electron lower limit (par0)
Double_t fBzkG
PID object for cascade-proton.
Bool_t IsSideBand(AliAODcascade *c)
Bool_t IsPeakRegion(AliAODcascade *c)
Double_t fSigmaElectronTPCPtDepPar0
nSigma to exclude for Kaon band
Double_t fMaxPtCand
minimum pt of the candidate
AliESDtrackCuts * fTrackCuts
quality cuts on the daughter tracks
void SetSftPosR125(AliAODTrack *track, Double_t bfield, Double_t priVtx[3], Double_t *XSftR125)
virtual Int_t IsSelected(TObject *obj, Int_t selectionLevel)
Double_t fSigmaElectronTPCPtDepPar2
nSigma electron lower limit (par1)
Bool_t IsSelectedCustomizedeID(AliAODTrack *trk)
Bool_t IsDaughterSelected(AliAODTrack *track, const AliESDVertex *primary, AliESDtrackCuts *cuts) const
AliAODTrack * GetBachelor() const
Double_t fSigmaElectronTOFMax
nSigma to exclude for Kaon band
Int_t fProdTrackTPCNclsPIDMin
Primary vertex.
Int_t MakeRawPid(AliAODTrack *track, Int_t specie)
AliPIDResponse * GetPidResponse() const
Double_t fProdCascEtaMax
Minimum eta of cascade.
Float_t * fCutsRD
fnVars*fnPtBins
Double_t fProdMassTolXiRough
Tolerance of Lambda mass from PDG value.
Double_t fProdXiCosineOfPoiningAngleMin
Min Dca between v0-pion and PV.
Double_t fProdCascProperDecayLengthMax
Max Decay vertex of Xi.
void SetVarsForOpt(Int_t nVars, Bool_t *forOpt)
void SetVarNames(Int_t nVars, TString *varNames, Bool_t *isUpperCut)
Bool_t * fVarsForOpt
number of cut vars to be optimized for candidates
Double_t fProdCascNTPCClustersMin
Min V0 cos pointing angle to Xi vertex.
Double_t fProdCascRapMax
Minimum rapidity of cascade.
Bool_t fProdUseAODFilterBit
Min. Number of TPC PID cluster.
Int_t IsSelectedCombinedPID(AliAODRecoDecayHF *obj)
AliAODPidHF * fPidObjCascPi
Use PID for cascade or not.
Double_t fProdRfidMinV0
Rejection range of Omega mass from PDG value.
void SetPtBins(Int_t nPtBinLimits, Float_t *ptBinLimits)
Double_t fExcludenSigmaProtonTPC
nSigma to exclude for pion band
Double_t fProdCascPtMin
Maximum rapidity of cascade.
Bool_t SingleTrkCutsNoPID(AliAODTrack *trk, AliAODTrack *trkpid, AliAODVertex *primvert)
Int_t fProdAODFilterBit
Flag for AOD filter Bit used before object creation.
Double_t fProdRoughPtMin
Mass cut for Lc used before object creation.
Bool_t SingleTrkCuts(AliAODTrack *trk, AliAODTrack *trkpid, AliAODVertex *primvert)
Double_t GetdPhiSdEtaSR125(AliAODTrack *tracke, AliAODTrack *trackp, AliAODTrack *trackn, AliAODTrack *trackb, Double_t bfield, Double_t priVtx[3], Double_t &dPhiS_ep, Double_t &dEtaS_ep, Double_t &dPhiS_en, Double_t &dEtaS_en, Double_t &dPhiS_eb, Double_t &dEtaS_eb)
AliAODPidHF * fPidHF
enable AOD049 centrality cleanup
Int_t PtBin(Double_t pt) const
Int_t GetGlobalIndex(Int_t iVar, Int_t iPtBin) const
Double_t fProdCascPtMax
Minimum Pt of cascade.
Double_t fMinPtCand
outcome of PID selection
Double_t dPhiSR125(Double_t *postrack1, Double_t *postrack2)
void SetPidResponse(AliPIDResponse *pidResp)