26 #include <Riostream.h>
28 #include <TDatabasePDG.h>
32 #include "AliAnalysisManager.h"
33 #include "AliInputEventHandler.h"
34 #include "AliPIDResponse.h"
37 #include "AliAODTrack.h"
38 #include "AliESDtrack.h"
39 #include "AliESDVertex.h"
40 #include "AliAODVertex.h"
42 #include "AliAODcascade.h"
56 fPIDStrategy(kNSigmaCuts),
57 fCombinedPIDThreshold(0.),
58 fUseCascadePID(kFALSE),
63 fProdTrackTPCNclsPIDMin(0),
64 fProdTrackTPCNclsRatioMin(0.0),
65 fProdUseAODFilterBit(kTRUE),
67 fProdRejectTrackWithShared(kFALSE),
68 fProdMassTolLambda(0.010),
69 fProdMassTolXiRough(0.020),
70 fProdMassTolXi(0.008),
71 fProdMassRejOmega(0.008),
73 fProdRfidMaxV0(100.0),
75 fProdRfidMaxXi(100.0),
76 fProdCascProperDecayLengthMax(100.0),
77 fProdDcaXiDaughtersMax(100.),
78 fProdDcaV0DaughtersMax(100.),
79 fProdDcaBachToPrimVertexMin(0.),
80 fProdDcaV0ToPrimVertexMin(0.),
81 fProdDcaV0PrToPrimVertexMin(0.),
82 fProdDcaV0PiToPrimVertexMin(0.),
83 fProdXiCosineOfPoiningAngleMin(-1.),
84 fProdV0CosineOfPoiningAngleXiMin(-1.),
85 fProdCascNTPCClustersMin(0.0),
86 fProdCascEtaMin(-9999.),
87 fProdCascEtaMax(9999.),
88 fProdCascRapMin(-9999.),
89 fProdCascRapMax(9999.),
91 fProdCascPtMax(9999.),
92 fProdRoughMassTol(0.25),
94 fExcludePionTPC(kFALSE),
95 fExcludeProtonTPC(kFALSE),
96 fExcludeKaonTPC(kFALSE),
97 fExcludenSigmaPionTPC(3.),
98 fExcludenSigmaProtonTPC(3.),
99 fExcludenSigmaKaonTPC(3.),
100 fSigmaElectronTPCMin(-9999.),
101 fSigmaElectronTPCPtDepPar0(-9999.),
102 fSigmaElectronTPCPtDepPar1(-9999.),
103 fSigmaElectronTPCPtDepPar2(0.),
104 fSigmaElectronTPCMax(9999.),
105 fSigmaElectronTOFMin(-9999.),
106 fSigmaElectronTOFMax(9999.),
107 fConversionMassMax(-1.),
113 for(
Int_t i=0;i<3;i++){
121 "cos(Opening angle) [cos(rad)]",
126 Bool_t isUpperCut[nvars]={
141 Float_t limits[2]={0,999999999.};
147 fPIDStrategy(source.fPIDStrategy),
148 fCombinedPIDThreshold(source.fCombinedPIDThreshold),
149 fUseCascadePID(source.fUseCascadePID),
150 fPidObjCascPi(source.fPidObjCascPi),
151 fPidObjCascPr(source.fPidObjCascPr),
152 fUseV0Topology(source.fUseV0Topology),
154 fProdTrackTPCNclsPIDMin(source.fProdTrackTPCNclsPIDMin),
155 fProdTrackTPCNclsRatioMin(source.fProdTrackTPCNclsRatioMin),
156 fProdUseAODFilterBit(source.fProdUseAODFilterBit),
157 fProdAODFilterBit(source.fProdAODFilterBit),
158 fProdRejectTrackWithShared(source.fProdRejectTrackWithShared),
159 fProdMassTolLambda(source.fProdMassTolLambda),
160 fProdMassTolXiRough(source.fProdMassTolXiRough),
161 fProdMassTolXi(source.fProdMassTolXi),
162 fProdMassRejOmega(source.fProdMassRejOmega),
163 fProdRfidMinV0(source.fProdRfidMinV0),
164 fProdRfidMaxV0(source.fProdRfidMaxV0),
165 fProdRfidMinXi(source.fProdRfidMinXi),
166 fProdRfidMaxXi(source.fProdRfidMaxXi),
167 fProdCascProperDecayLengthMax(source.fProdCascProperDecayLengthMax),
168 fProdDcaXiDaughtersMax(source.fProdDcaXiDaughtersMax),
169 fProdDcaV0DaughtersMax(source.fProdDcaV0DaughtersMax),
170 fProdDcaBachToPrimVertexMin(source.fProdDcaBachToPrimVertexMin),
171 fProdDcaV0ToPrimVertexMin(source.fProdDcaV0ToPrimVertexMin),
172 fProdDcaV0PrToPrimVertexMin(source.fProdDcaV0PrToPrimVertexMin),
173 fProdDcaV0PiToPrimVertexMin(source.fProdDcaV0PiToPrimVertexMin),
174 fProdXiCosineOfPoiningAngleMin(source.fProdXiCosineOfPoiningAngleMin),
175 fProdV0CosineOfPoiningAngleXiMin(source.fProdV0CosineOfPoiningAngleXiMin),
176 fProdCascNTPCClustersMin(source.fProdCascNTPCClustersMin),
177 fProdCascEtaMin(source.fProdCascEtaMin),
178 fProdCascEtaMax(source.fProdCascEtaMax),
179 fProdCascRapMin(source.fProdCascRapMin),
180 fProdCascRapMax(source.fProdCascRapMax),
181 fProdCascPtMin(source.fProdCascPtMin),
182 fProdCascPtMax(source.fProdCascPtMax),
183 fProdRoughMassTol(source.fProdRoughMassTol),
184 fProdRoughPtMin(source.fProdRoughPtMin),
185 fExcludePionTPC(source.fExcludePionTPC),
186 fExcludeProtonTPC(source.fExcludeProtonTPC),
187 fExcludeKaonTPC(source.fExcludeKaonTPC),
188 fExcludenSigmaPionTPC(source.fExcludenSigmaPionTPC),
189 fExcludenSigmaProtonTPC(source.fExcludenSigmaProtonTPC),
190 fExcludenSigmaKaonTPC(source.fExcludenSigmaKaonTPC),
191 fSigmaElectronTPCMin(source.fSigmaElectronTPCMin),
192 fSigmaElectronTPCPtDepPar0(source.fSigmaElectronTPCPtDepPar0),
193 fSigmaElectronTPCPtDepPar1(source.fSigmaElectronTPCPtDepPar1),
194 fSigmaElectronTPCPtDepPar2(source.fSigmaElectronTPCPtDepPar2),
195 fSigmaElectronTPCMax(source.fSigmaElectronTPCMax),
196 fSigmaElectronTOFMin(source.fSigmaElectronTOFMin),
197 fSigmaElectronTOFMax(source.fSigmaElectronTOFMax),
198 fConversionMassMax(source.fConversionMassMax),
199 fEleXiMassMax(source.fEleXiMassMax)
204 for(
Int_t i=0;i<3;i++){
215 if (
this != &source) {
273 for(
Int_t i=0;i<3;i++){
294 if (pdgdaughters[0]==-9999)
return;
298 AliError(
"No AliAODRecoCascadeHF object found\n");
303 AliError(
"Cut object seems to have the wrong number of variables\n");
313 UInt_t pdgdg[2]={11,3312};
314 vars[iter]= dd->InvMass(2,pdgdg);
324 vars[iter]= (xipx*epx+xipy*epy+xipz*epz)/sqrt(xipx*xipx+xipy*xipy+xipz*xipz)/sqrt(epx*epx+epy*epy+epz*epz);
337 AliFatal(
"Cut matrix not inizialized. Exit...");
343 AliDebug(2,
"AliAODRecoCascadeHF null");
356 Int_t returnvalueCuts=1;
368 Double_t mxiPDG = TDatabasePDG::Instance()->GetParticle(3312)->Mass();
369 UInt_t pdgdg[2]={11,3312};
370 Double_t InvMassEleXi = d->InvMass(2,pdgdg);
377 Double_t cosoa = (xipx*epx+xipy*epy+xipz*epz)/sqrt(xipx*xipx+xipy*xipy+xipz*xipz)/sqrt(epx*epx+epy*epy+epz*epz);
379 Double_t dphis_e_pr, detas_e_pr, dphis_e_pi, detas_e_pi, dphis_e_bach, detas_e_bach;
384 dphis_e_bach = 9999.;
385 detas_e_bach = 9999.;
387 AliAODTrack *trke = (AliAODTrack*)d->GetDaughter(0);
388 AliAODcascade *casc = (AliAODcascade*)d->GetDaughter(1);
390 AliAODTrack *cprtrk = 0;
391 AliAODTrack *cpitrk = 0;
392 AliAODTrack *cbtrk = 0;
393 if(casc->ChargeXi()<0){
394 cprtrk = (AliAODTrack*)casc->GetDaughter(0);
395 cpitrk = (AliAODTrack*)casc->GetDaughter(1);
396 cbtrk = (AliAODTrack*)casc->GetDecayVertexXi()->GetDaughter(0);
398 cprtrk = (AliAODTrack*)casc->GetDaughter(1);
399 cpitrk = (AliAODTrack*)casc->GetDaughter(0);
400 cbtrk = (AliAODTrack*)casc->GetDecayVertexXi()->GetDaughter(0);
402 if(cprtrk && cpitrk && cbtrk)
403 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);
428 if(!okcand)
return 0;
432 Int_t returnvaluePID=1;
439 Int_t returnvalue = 0;
440 if(returnvalueCuts==1 && returnvaluePID==1) returnvalue=1;
461 AliInputEventHandler *inputHandler=(AliInputEventHandler*)mgr->GetInputEventHandler();
462 AliPIDResponse *pidResp=inputHandler->GetPIDResponse();
467 if(isElectron<1) returnvalue = 0;
478 if(!
fUsePID || !obj) {
return 1;}
505 if(trk->Pt()<ptmin || trk->Pt()>
ptmax)
return kFALSE;
506 if(trk->Eta()<etamin || trk->Eta()>
etamax)
return kFALSE;
508 Double_t pos[3]; primVert->GetXYZ(pos);
509 Double_t cov[6]; primVert->GetCovarianceMatrix(cov);
510 const AliESDVertex vESD(pos,cov,100.,100);
516 if(trk->GetTPCNclsF()>0){
522 const TBits sharedMap = trk->GetTPCSharedMap();
523 if((sharedMap.CountBits()) >= 1){
532 AliInputEventHandler *inputHandler=(AliInputEventHandler*)mgr->GetInputEventHandler();
533 AliPIDResponse *pidResp=inputHandler->GetPIDResponse();
570 if(trk->Pt()<ptmin || trk->Pt()>
ptmax)
return kFALSE;
571 if(trk->Eta()<etamin || trk->Eta()>
etamax)
return kFALSE;
573 Double_t pos[3]; primVert->GetXYZ(pos);
574 Double_t cov[6]; primVert->GetCovarianceMatrix(cov);
575 const AliESDVertex vESD(pos,cov,100.,100);
581 if(trk->GetTPCNclsF()>0){
587 const TBits sharedMap = trk->GetTPCSharedMap();
588 if((sharedMap.CountBits()) >= 1){
625 if(isElectron<1)
return kFALSE;
685 if(nSigmaTPCele<nsigmamin)
return kFALSE;
706 if(!casc)
return kFALSE;
707 if(!(casc->GetSecondaryVtx()))
return kFALSE;
708 if(!(casc->GetDecayVertexXi()))
return kFALSE;
710 AliAODTrack *ptrack = (AliAODTrack*) (casc->GetDaughter(0));
711 AliAODTrack *ntrack = (AliAODTrack*) (casc->GetDaughter(1));
712 AliAODTrack *btrack = (AliAODTrack*) (casc->GetDecayVertexXi()->GetDaughter(0));
714 if(!ptrack||!ntrack||!btrack)
return kFALSE;
716 if(ptrack->Charge()<0 && ntrack->Charge()>0){
717 ptrack = (AliAODTrack*) (casc->GetDaughter(1));
718 ntrack = (AliAODTrack*) (casc->GetDaughter(0));
727 Double_t ptxi = sqrt(pxxi*pxxi+pyxi*pyxi);
730 Double_t mLPDG = TDatabasePDG::Instance()->GetParticle(3122)->Mass();
731 Double_t mxiPDG = TDatabasePDG::Instance()->GetParticle(3312)->Mass();
732 Double_t momegaPDG = TDatabasePDG::Instance()->GetParticle(3334)->Mass();
734 Double_t massLambda = casc->MassLambda();
735 Double_t massAntiLambda = casc->MassAntiLambda();
739 Bool_t isparticle = kTRUE;
741 if(casc->ChargeXi()>0) isparticle = kFALSE;
747 Double_t massOmega = casc->MassOmega();
753 lPosXi[0] = casc->DecayVertexXiX();
754 lPosXi[1] = casc->DecayVertexXiY();
755 lPosXi[2] = casc->DecayVertexXiZ();
756 Double_t decayvertXi = TMath::Sqrt(lPosXi[0]*lPosXi[0]+lPosXi[1]*lPosXi[1]);
758 lPosV0[0] = casc->DecayVertexV0X();
759 lPosV0[1] = casc->DecayVertexV0Y();
760 lPosV0[2] = casc->DecayVertexV0Z();
761 Double_t decayvertV0 = TMath::Sqrt(lPosV0[0]*lPosV0[0]+lPosV0[1]*lPosV0[1]);
763 if(decayvertV0<fProdRfidMinV0 || decayvertV0>
fProdRfidMaxV0)
return kFALSE;
764 if(decayvertXi<fProdRfidMinXi || decayvertXi>
fProdRfidMaxXi)
return kFALSE;
766 Double_t ptotxi = TMath::Sqrt(pow(casc->MomXiX(),2)+pow(casc->MomXiY(),2)+pow(casc->MomXiZ(),2));
767 Double_t properdl = casc->DecayLengthXi(primvert[0],primvert[1],primvert[2])*mxiPDG/ptotxi;
770 Double_t lDcaXiDaughters = casc->DcaXiDaughters();
771 Double_t lDcaV0Daughters = casc->DcaV0Daughters();
775 Double_t lDcaBachToPrimVertex = casc->DcaBachToPrimVertex();
776 Double_t lDcaV0ToPrimVertex = casc->DcaV0ToPrimVertex();
777 Double_t lDcaPosToPrimVertex = casc->DcaPosToPrimVertex();
778 Double_t lDcaNegToPrimVertex = casc->DcaNegToPrimVertex();
789 Double_t lXiCosineOfPointingAngle = casc->CosPointingAngleXi(primvert[0],primvert[1],primvert[2]);
790 Double_t lV0CosineOfPointingAngleXi = casc->CosPointingAngle(lPosXi);
799 AliInputEventHandler *inputHandler=(AliInputEventHandler*)mgr->GetInputEventHandler();
800 AliPIDResponse *pidResp=inputHandler->GetPIDResponse();
805 AliInputEventHandler *inputHandler=(AliInputEventHandler*)mgr->GetInputEventHandler();
806 AliPIDResponse *pidResp=inputHandler->GetPIDResponse();
810 Int_t isProton = -9999;
811 Int_t isPion1 = -9999;
812 Int_t isPion2 = -9999;
818 if(fabs(nSigmaTPCpr)<nsigmatpc_proton) isProton = 1;
819 if(fabs(nSigmaTPCpi1)<nsigmatpc_pion) isPion1 = 1;
820 if(fabs(nSigmaTPCpi2)<nsigmatpc_pion) isPion2 = 1;
821 if(isProton<1)
return kFALSE;
822 if(isPion1<1)
return kFALSE;
823 if(isPion2<1)
return kFALSE;
825 Int_t isProton = -9999;
826 Int_t isPion1 = -9999;
827 Int_t isPion2 = -9999;
833 if(fabs(nSigmaTPCpr)<nsigmatpc_proton) isProton = 1;
834 if(fabs(nSigmaTPCpi1)<nsigmatpc_pion) isPion1 = 1;
835 if(fabs(nSigmaTPCpi2)<nsigmatpc_pion) isPion2 = 1;
836 if(isProton<1)
return kFALSE;
837 if(isPion1<1)
return kFALSE;
838 if(isPion2<1)
return kFALSE;
845 Double_t EtaXi = 0.5*TMath::Log((ptotxi+casc->MomXiZ())/(ptotxi-casc->MomXiZ()));
849 const TBits sharedMap1 = ptrack->GetTPCSharedMap();
850 const TBits sharedMap2 = ntrack->GetTPCSharedMap();
851 const TBits sharedMap3 = btrack->GetTPCSharedMap();
852 if((sharedMap1.CountBits() >= 1) || (sharedMap2.CountBits() >= 1) ||
853 (sharedMap3.CountBits() >= 1))
862 TVector3 v3v0pr(casc->MomPosX(),casc->MomPosY(),casc->MomPosZ());
863 TVector3 v3lam(casc->Px(),casc->Py(),casc->Pz());
864 dphiprlam = v3v0pr.DeltaPhi(v3lam);
866 TVector3 v3v0pr(casc->MomNegX(),casc->MomNegY(),casc->MomNegZ());
867 TVector3 v3lam(casc->Px(),casc->Py(),casc->Pz());
868 dphiprlam = -1.*v3v0pr.DeltaPhi(v3lam);
871 if(dphiprlam>0)
return kFALSE;
873 if(dphiprlam<0)
return kFALSE;
887 if(!casc)
return kFALSE;
888 if(!part)
return kFALSE;
896 Double_t mxiPDG = TDatabasePDG::Instance()->GetParticle(3312)->Mass();
906 Double_t mxiPDG = TDatabasePDG::Instance()->GetParticle(3312)->Mass();
916 Double_t mxiPDG = TDatabasePDG::Instance()->GetParticle(3312)->Mass();
918 Bool_t issideband = kFALSE;
927 Double_t mxiPDG = TDatabasePDG::Instance()->GetParticle(3312)->Mass();
929 Bool_t issideband = kFALSE;
946 Int_t trkid = etrk->GetID();
950 Double_t E1 = sqrt(px1*px1+py1*py1+pz1*pz1+0.000511*0.000511);
952 for(
Int_t it=0;it<ntrk;it++){
953 AliAODTrack *trk2 = (AliAODTrack*) evt->GetTrack(it);
955 Int_t trkid2 = trk2->GetID();
956 if(abs(trkid)==abs(trkid2))
continue;
957 if(etrk->Charge()*trk2->Charge()>0)
continue;
967 if(-trkid2-1>=19000)
continue;
968 if(-trkid2-1<0)
continue;
969 Int_t index = id2index[-trkid2-1];
970 AliAODTrack *partpid = (AliAODTrack*)evt->GetTrack(index);
975 if(fabs(nSigmaTPCele)>5.)
continue;
980 Double_t E2 = sqrt(px2*px2+py2*py2+pz2*pz2+0.000511*0.000511);
982 Double_t mass = sqrt(pow(E1+E2,2)-pow(px1+px2,2)-pow(py1+py2,2)-pow(pz1+pz2,2));
983 if(mass<minmass) minmass =
mass;
1001 Int_t trkid = etrk->GetID();
1005 Double_t E1 = sqrt(px1*px1+py1*py1+pz1*pz1+0.000511*0.000511);
1007 for(
Int_t it=0;it<ntrk;it++){
1008 AliAODTrack *trk2 = (AliAODTrack*) evt->GetTrack(it);
1010 Int_t trkid2 = trk2->GetID();
1011 if(abs(trkid)==abs(trkid2))
continue;
1012 if(etrk->Charge()*trk2->Charge()<0)
continue;
1022 if(-trkid2-1>=19000)
continue;
1023 if(-trkid2-1<0)
continue;
1024 Int_t index = id2index[-trkid2-1];
1025 AliAODTrack *partpid = (AliAODTrack*)evt->GetTrack(index);
1030 if(fabs(nSigmaTPCele)>5.)
continue;
1035 Double_t E2 = sqrt(px2*px2+py2*py2+pz2*pz2+0.000511*0.000511);
1037 Double_t mass = sqrt(pow(E1+E2,2)-pow(px1+px2,2)-pow(py1+py2,2)-pow(pz1+pz2,2));
1038 if(mass<minmass) minmass =
mass;
1058 AliExternalTrackParam etp;
1059 etp.CopyFromVTrack(track);
1062 Double_t xyz[3]={-9999.,-9999.,-9999.};
1065 const Float_t RSquaredWanted(125.*125.);
1069 for (
Float_t x = 58.;x<247.;x+=1.){
1079 if(!etp.PropagateTo(x,(
Float_t)bfield))
break;
1084 Float_t shiftedRadiusSquared = (xyz[0]-priVtx[0])*(xyz[0]-priVtx[0])
1085 + (xyz[1]-priVtx[1])*(xyz[1]-priVtx[1]);
1088 if(shiftedRadiusSquared > RSquaredWanted){
1092 while (shiftedRadiusSquared>RSquaredWanted){
1095 if(!etp.PropagateTo(x,bfield)){
1104 shiftedRadiusSquared = (xyz[0]-priVtx[0])*(xyz[0]-priVtx[0])
1105 + (xyz[1]-priVtx[1])*(xyz[1]-priVtx[1]);
1109 XSftR125[0]=xyz[0]-priVtx[0];
1110 XSftR125[1]=xyz[1]-priVtx[1];
1111 XSftR125[2]=xyz[2]-priVtx[2];
1128 Double_t ThetaS1 = TMath::Pi()/2. - TMath::ATan(postrack1[2]/125.);
1129 Double_t ThetaS2 = TMath::Pi()/2. - TMath::ATan(postrack2[2]/125.);
1130 Double_t EtaS1 = -TMath::Log( TMath::Tan(ThetaS1/2.) );
1131 Double_t EtaS2 = -TMath::Log( TMath::Tan(ThetaS2/2.) );
1144 Double_t distSft= TMath::Sqrt(TMath::Power(postrack1[0] - postrack2[0],2)
1145 +TMath::Power(postrack1[1] - postrack2[1],2));
1146 return 2.0 * TMath::ATan(distSft/2./(125.));
1165 dPhiS_ep =
dPhiSR125(XSftR125_e,XSftR125_p);
1166 dEtaS_ep =
dEtaSR125(XSftR125_e,XSftR125_p);
1167 dPhiS_en =
dPhiSR125(XSftR125_e,XSftR125_n);
1168 dEtaS_en =
dEtaSR125(XSftR125_e,XSftR125_n);
1169 dPhiS_eb =
dPhiSR125(XSftR125_e,XSftR125_b);
1170 dEtaS_eb =
dEtaSR125(XSftR125_e,XSftR125_b);
1181 AliFatal(
"Cut matrix not inizialized. Exit...");
1185 Double_t ptD=sqrt(pow(vtrk->Px()+vcasc->Px(),2)+pow(vtrk->Px()+vcasc->Py(),2));
1200 Int_t returnvalueCuts=1;
1207 Double_t mlcPDG = TDatabasePDG::Instance()->GetParticle(4132)->Mass();
1208 Double_t melePDG = TDatabasePDG::Instance()->GetParticle(11)->Mass();
1209 Double_t mxiPDG = TDatabasePDG::Instance()->GetParticle(3312)->Mass();
1216 Double_t cosoa = (v0px*epx+v0py*epy+v0pz*epz)/sqrt(v0px*v0px+v0py*v0py+v0pz*v0pz)/sqrt(epx*epx+epy*epy+epz*epz);
1218 TLorentzVector vele, vxi,vlc;
1219 vele.SetXYZM(epx,epy,epz,melePDG);
1220 vxi.SetXYZM(v0px,v0py,v0pz,mxiPDG);
1230 Double_t xyzR125_e[3], xyzR125_pr[3], xyzR125_pi[3], xyzR125_bach[3];
1231 xyzR125_e[0] = cutvars[0];
1232 xyzR125_e[1] = cutvars[1];
1233 xyzR125_e[2] = cutvars[2];
1234 xyzR125_pr[0] = cutvars[3];
1235 xyzR125_pr[1] = cutvars[4];
1236 xyzR125_pr[2] = cutvars[5];
1237 xyzR125_pi[0] = cutvars[6];
1238 xyzR125_pi[1] = cutvars[7];
1239 xyzR125_pi[2] = cutvars[8];
1240 xyzR125_bach[0] = cutvars[9];
1241 xyzR125_bach[1] = cutvars[10];
1242 xyzR125_bach[2] = cutvars[11];
1243 dphis_e_pr =
dPhiSR125(xyzR125_e,xyzR125_pr);
1244 detas_e_pr =
dPhiSR125(xyzR125_e,xyzR125_pr);
1245 dphis_e_pi =
dPhiSR125(xyzR125_e,xyzR125_pi);
1246 detas_e_pi =
dPhiSR125(xyzR125_e,xyzR125_pi);
1247 dphis_e_bach =
dPhiSR125(xyzR125_e,xyzR125_bach);
1248 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;
1293 Double_t phiv = atan2(casc->MomXiY(),casc->MomXiX());
1294 if(phiv<-M_PI) phiv += 2 *M_PI;
1295 if(phiv> M_PI) phiv -= 2 *M_PI;
1297 if(phie<-M_PI) phie += 2 *M_PI;
1298 if(phie> M_PI) phie -= 2 *M_PI;
1300 if(dphi<-M_PI) dphi += 2 *M_PI;
1301 if(dphi> M_PI) dphi -= 2 *M_PI;
1310 Double_t ptotxi = TMath::Sqrt(pow(casc->MomXiX(),2)+pow(casc->MomXiY(),2)+pow(casc->MomXiZ(),2));
1311 Double_t etav = 0.5*TMath::Log((ptotxi+casc->MomXiZ())/(ptotxi-casc->MomXiZ()));
1330 Double_t cosoa = (xipx*epx+xipy*epy+xipz*epz)/sqrt(xipx*xipx+xipy*xipy+xipz*xipz)/sqrt(epx*epx+epy*epy+epz*epz);
Bool_t IsSelectedCustomizedPtDepeID(AliAODTrack *trk, AliAODTrack *trkpid)
Int_t fUseV0Topology
PID object for cascade-proton.
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)
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.
Double_t CosOpeningAngle(AliAODcascade *casc, AliAODTrack *trk)
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
0: Cowboy+Sailor 1: Cowboy 2:Sailor
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
Double_t fEleXiMassMax
Conversion mass.
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)
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)
Double_t DeltaPhi(AliAODcascade *casc, AliAODTrack *trk)
AliAODPidHF * fPidHF
enable AOD049 centrality cleanup
Double_t DeltaEta(AliAODcascade *casc, AliAODTrack *trk)
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
Bool_t IsDaughterSelected(AliAODTrack *track, const AliESDVertex *primary, AliESDtrackCuts *cuts, const AliAODEvent *aod=0x0) const
Double_t dPhiSR125(Double_t *postrack1, Double_t *postrack2)
void SetPidResponse(AliPIDResponse *pidResp)