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),
60 fProdTrackTPCNclsPIDMin(0),
61 fProdTrackTPCNclsRatioMin(0.0),
62 fProdUseAODFilterBit(kTRUE),
63 fProdMassTolLambda(0.010),
64 fProdMassTolXiRough(0.020),
65 fProdMassTolXi(0.008),
66 fProdMassRejOmega(0.008),
68 fProdRfidMaxV0(100.0),
70 fProdRfidMaxXi(100.0),
71 fProdCascProperDecayLengthMax(100.0),
72 fProdDcaXiDaughtersMax(100.),
73 fProdDcaV0DaughtersMax(100.),
74 fProdDcaBachToPrimVertexMin(0.),
75 fProdDcaV0ToPrimVertexMin(0.),
76 fProdDcaV0PrToPrimVertexMin(0.),
77 fProdDcaV0PiToPrimVertexMin(0.),
78 fProdXiCosineOfPoiningAngleMin(-1.),
79 fProdV0CosineOfPoiningAngleXiMin(-1.),
80 fProdCascNTPCClustersMin(0.0),
81 fProdCascEtaMin(-9999.),
82 fProdCascEtaMax(9999.),
83 fProdCascRapMin(-9999.),
84 fProdCascRapMax(9999.),
85 fProdRoughMassTol(0.25),
87 fExcludePionTPC(kFALSE),
88 fExcludeProtonTPC(kFALSE),
89 fExcludeKaonTPC(kFALSE),
90 fExcludenSigmaPionTPC(3.),
91 fExcludenSigmaProtonTPC(3.),
92 fExcludenSigmaKaonTPC(3.),
93 fSigmaElectronTPCMin(-9999.),
94 fSigmaElectronTPCPtDepPar0(-9999.),
95 fSigmaElectronTPCPtDepPar1(-9999.),
96 fSigmaElectronTPCPtDepPar2(0.),
97 fSigmaElectronTPCMax(9999.),
98 fSigmaElectronTOFMin(-9999.),
99 fSigmaElectronTOFMax(9999.)
107 TString varNames[nvars]={
109 "cos(Opening angle) [cos(rad)]"
112 Bool_t isUpperCut[nvars]={
117 Bool_t forOpt[nvars]={
123 Float_t limits[2]={0,999999999.};
129 fPIDStrategy(source.fPIDStrategy),
130 fCombinedPIDThreshold(source.fCombinedPIDThreshold),
131 fUseCascadePID(source.fUseCascadePID),
132 fPidObjCascPi(source.fPidObjCascPi),
133 fPidObjCascPr(source.fPidObjCascPr),
134 fProdTrackTPCNclsPIDMin(source.fProdTrackTPCNclsPIDMin),
135 fProdTrackTPCNclsRatioMin(source.fProdTrackTPCNclsRatioMin),
136 fProdUseAODFilterBit(source.fProdUseAODFilterBit),
137 fProdMassTolLambda(source.fProdMassTolLambda),
138 fProdMassTolXiRough(source.fProdMassTolXiRough),
139 fProdMassTolXi(source.fProdMassTolXi),
140 fProdMassRejOmega(source.fProdMassRejOmega),
141 fProdRfidMinV0(source.fProdRfidMinV0),
142 fProdRfidMaxV0(source.fProdRfidMaxV0),
143 fProdRfidMinXi(source.fProdRfidMinXi),
144 fProdRfidMaxXi(source.fProdRfidMaxXi),
145 fProdCascProperDecayLengthMax(source.fProdCascProperDecayLengthMax),
146 fProdDcaXiDaughtersMax(source.fProdDcaXiDaughtersMax),
147 fProdDcaV0DaughtersMax(source.fProdDcaV0DaughtersMax),
148 fProdDcaBachToPrimVertexMin(source.fProdDcaBachToPrimVertexMin),
149 fProdDcaV0ToPrimVertexMin(source.fProdDcaV0ToPrimVertexMin),
150 fProdDcaV0PrToPrimVertexMin(source.fProdDcaV0PrToPrimVertexMin),
151 fProdDcaV0PiToPrimVertexMin(source.fProdDcaV0PiToPrimVertexMin),
152 fProdXiCosineOfPoiningAngleMin(source.fProdXiCosineOfPoiningAngleMin),
153 fProdV0CosineOfPoiningAngleXiMin(source.fProdV0CosineOfPoiningAngleXiMin),
154 fProdCascNTPCClustersMin(source.fProdCascNTPCClustersMin),
155 fProdCascEtaMin(source.fProdCascEtaMin),
156 fProdCascEtaMax(source.fProdCascEtaMax),
157 fProdCascRapMin(source.fProdCascRapMin),
158 fProdCascRapMax(source.fProdCascRapMax),
159 fProdRoughMassTol(source.fProdRoughMassTol),
160 fProdRoughPtMin(source.fProdRoughPtMin),
161 fExcludePionTPC(source.fExcludePionTPC),
162 fExcludeProtonTPC(source.fExcludeProtonTPC),
163 fExcludeKaonTPC(source.fExcludeKaonTPC),
164 fExcludenSigmaPionTPC(source.fExcludenSigmaPionTPC),
165 fExcludenSigmaProtonTPC(source.fExcludenSigmaProtonTPC),
166 fExcludenSigmaKaonTPC(source.fExcludenSigmaKaonTPC),
167 fSigmaElectronTPCMin(source.fSigmaElectronTPCMin),
168 fSigmaElectronTPCPtDepPar0(source.fSigmaElectronTPCPtDepPar0),
169 fSigmaElectronTPCPtDepPar1(source.fSigmaElectronTPCPtDepPar1),
170 fSigmaElectronTPCPtDepPar2(source.fSigmaElectronTPCPtDepPar2),
171 fSigmaElectronTPCMax(source.fSigmaElectronTPCMax),
172 fSigmaElectronTOFMin(source.fSigmaElectronTOFMin),
173 fSigmaElectronTOFMax(source.fSigmaElectronTOFMax)
186 if (
this != &source) {
254 if (pdgdaughters[0]==-9999)
return;
258 AliError(
"No AliAODRecoCascadeHF object found\n");
263 AliError(
"Cut object seems to have the wrong number of variables\n");
273 UInt_t pdgdg[2]={11,3312};
274 vars[iter]= dd->InvMass(2,pdgdg);
278 Double_t xipx = dd->PxProng(1);
279 Double_t xipy = dd->PyProng(1);
280 Double_t xipz = dd->PzProng(1);
281 Double_t epx = dd->PxProng(0);
282 Double_t epy = dd->PyProng(0);
283 Double_t epz = dd->PzProng(0);
284 vars[iter]= (xipx*epx+xipy*epy+xipz*epz)/sqrt(xipx*xipx+xipy*xipy+xipz*xipz)/sqrt(epx*epx+epy*epy+epz*epz);
297 AliFatal(
"Cut matrix not inizialized. Exit...");
303 AliDebug(2,
"AliAODRecoCascadeHF null");
307 Double_t ptD=d->Pt();
316 Int_t returnvalueCuts=1;
322 Int_t ptbin=
PtBin(pt);
328 Double_t mxiPDG = TDatabasePDG::Instance()->GetParticle(3312)->Mass();
329 UInt_t pdgdg[2]={11,3312};
330 Double_t InvMassEleXi = d->InvMass(2,pdgdg);
331 Double_t xipx = d->PxProng(1);
332 Double_t xipy = d->PyProng(1);
333 Double_t xipz = d->PzProng(1);
334 Double_t epx = d->PxProng(0);
335 Double_t epy = d->PyProng(0);
336 Double_t epz = d->PzProng(0);
337 Double_t cosoa = (xipx*epx+xipy*epy+xipz*epz)/sqrt(xipx*xipx+xipy*xipy+xipz*xipz)/sqrt(epx*epx+epy*epy+epz*epz);
348 if(!okcand)
return 0;
352 Int_t returnvaluePID=1;
359 Int_t returnvalue = 0;
360 if(returnvalueCuts==1 && returnvaluePID==1) returnvalue=1;
380 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
381 AliInputEventHandler *inputHandler=(AliInputEventHandler*)mgr->GetInputEventHandler();
382 AliPIDResponse *pidResp=inputHandler->GetPIDResponse();
387 if(isElectron<1) returnvalue = 0;
398 if(!
fUsePID || !obj) {
return 1;}
416 if(trk->GetStatus()&AliESDtrack::kITSpureSA)
return kFALSE;
417 if(!(trk->GetStatus()&AliESDtrack::kITSin))
return kFALSE;
420 Double_t pos[3]; primVert->GetXYZ(pos);
421 Double_t cov[6]; primVert->GetCovarianceMatrix(cov);
422 const AliESDVertex vESD(pos,cov,100.,100);
426 if(trk->GetTPCNclsF()>0){
427 Float_t tpcratio = (Float_t)trk->GetTPCncls()/(Float_t)trk->GetTPCNclsF();
434 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
435 AliInputEventHandler *inputHandler=(AliInputEventHandler*)mgr->GetInputEventHandler();
436 AliPIDResponse *pidResp=inputHandler->GetPIDResponse();
466 if(trk->GetStatus()&AliESDtrack::kITSpureSA)
return kFALSE;
467 if(!(trk->GetStatus()&AliESDtrack::kITSin))
return kFALSE;
470 Double_t pos[3]; primVert->GetXYZ(pos);
471 Double_t cov[6]; primVert->GetCovarianceMatrix(cov);
472 const AliESDVertex vESD(pos,cov,100.,100);
476 if(trk->GetTPCNclsF()>0){
477 Float_t tpcratio = (Float_t)trk->GetTPCncls()/(Float_t)trk->GetTPCNclsF();
512 if(isElectron<1)
return kFALSE;
569 Double_t pte = trk->Pt();
572 if(nSigmaTPCele<nsigmamin)
return kFALSE;
593 if(!casc)
return kFALSE;
594 if(!(casc->GetSecondaryVtx()))
return kFALSE;
595 if(!(casc->GetDecayVertexXi()))
return kFALSE;
597 AliAODTrack *ptrack = (AliAODTrack*) (casc->GetDaughter(0));
598 AliAODTrack *ntrack = (AliAODTrack*) (casc->GetDaughter(1));
599 AliAODTrack *btrack = (AliAODTrack*) (casc->GetDecayVertexXi()->GetDaughter(0));
601 if(!ptrack||!ntrack||!btrack)
return kFALSE;
603 if(ptrack->Charge()<0 && ntrack->Charge()>0){
604 ptrack = (AliAODTrack*) (casc->GetDaughter(1));
605 ntrack = (AliAODTrack*) (casc->GetDaughter(0));
613 Double_t mLPDG = TDatabasePDG::Instance()->GetParticle(3122)->Mass();
614 Double_t mxiPDG = TDatabasePDG::Instance()->GetParticle(3312)->Mass();
615 Double_t momegaPDG = TDatabasePDG::Instance()->GetParticle(3334)->Mass();
617 Double_t massLambda = casc->MassLambda();
618 Double_t massAntiLambda = casc->MassAntiLambda();
622 Bool_t isparticle = kTRUE;
624 if(casc->ChargeXi()>0) isparticle = kFALSE;
626 Double_t massXi = casc->MassXi();
630 Double_t massOmega = casc->MassOmega();
636 lPosXi[0] = casc->DecayVertexXiX();
637 lPosXi[1] = casc->DecayVertexXiY();
638 lPosXi[2] = casc->DecayVertexXiZ();
639 Double_t decayvertXi = TMath::Sqrt(lPosXi[0]*lPosXi[0]+lPosXi[1]*lPosXi[1]);
641 lPosV0[0] = casc->DecayVertexV0X();
642 lPosV0[1] = casc->DecayVertexV0Y();
643 lPosV0[2] = casc->DecayVertexV0Z();
644 Double_t decayvertV0 = TMath::Sqrt(lPosV0[0]*lPosV0[0]+lPosV0[1]*lPosV0[1]);
646 if(decayvertV0<fProdRfidMinV0 || decayvertV0>
fProdRfidMaxV0)
return kFALSE;
647 if(decayvertXi<fProdRfidMinXi || decayvertXi>
fProdRfidMaxXi)
return kFALSE;
649 Double_t ptotxi = TMath::Sqrt(pow(casc->MomXiX(),2)+pow(casc->MomXiY(),2)+pow(casc->MomXiZ(),2));
650 Double_t properdl = casc->DecayLengthXi(primvert[0],primvert[1],primvert[2])*mxiPDG/ptotxi;
653 Double_t lDcaXiDaughters = casc->DcaXiDaughters();
654 Double_t lDcaV0Daughters = casc->DcaV0Daughters();
658 Double_t lDcaBachToPrimVertex = casc->DcaBachToPrimVertex();
659 Double_t lDcaV0ToPrimVertex = casc->DcaV0ToPrimVertex();
660 Double_t lDcaPosToPrimVertex = casc->DcaPosToPrimVertex();
661 Double_t lDcaNegToPrimVertex = casc->DcaNegToPrimVertex();
672 Double_t lXiCosineOfPointingAngle = casc->CosPointingAngleXi(primvert[0],primvert[1],primvert[2]);
673 Double_t lV0CosineOfPointingAngleXi = casc->CosPointingAngle(lPosXi);
681 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
682 AliInputEventHandler *inputHandler=(AliInputEventHandler*)mgr->GetInputEventHandler();
683 AliPIDResponse *pidResp=inputHandler->GetPIDResponse();
687 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
688 AliInputEventHandler *inputHandler=(AliInputEventHandler*)mgr->GetInputEventHandler();
689 AliPIDResponse *pidResp=inputHandler->GetPIDResponse();
696 if(isProton<1)
return kFALSE;
697 if(isPion1<1)
return kFALSE;
698 if(isPion2<1)
return kFALSE;
703 if(isProton<1)
return kFALSE;
704 if(isPion1<1)
return kFALSE;
705 if(isPion2<1)
return kFALSE;
709 Double_t RapXi = casc->RapXi();
712 Double_t EtaXi = 0.5*TMath::Log((ptotxi+casc->MomXiZ())/(ptotxi-casc->MomXiZ()));
725 if(!casc)
return kFALSE;
726 if(!part)
return kFALSE;
734 Double_t mxiPDG = TDatabasePDG::Instance()->GetParticle(3312)->Mass();
735 Double_t massXi = casc->MassXi();
744 Double_t mxiPDG = TDatabasePDG::Instance()->GetParticle(3312)->Mass();
745 Double_t massXi = casc->M();
754 Double_t mxiPDG = TDatabasePDG::Instance()->GetParticle(3312)->Mass();
755 Double_t massXi = casc->MassXi();
756 Bool_t issideband = kFALSE;
765 Double_t mxiPDG = TDatabasePDG::Instance()->GetParticle(3312)->Mass();
766 Double_t massXi = casc->M();
767 Bool_t issideband = kFALSE;
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)
AliRDHFCutsXictoeleXifromAODtracks & operator=(const AliRDHFCutsXictoeleXifromAODtracks &source)
Double_t fProdDcaV0PrToPrimVertexMin
Min Dca between v0 and PV.
Bool_t IsSelectedCustomizedPtDepeID(AliAODTrack *trk)
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.
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 rapidity of cascade.
EPIDStrategy fPIDStrategy
AliAODPidHF * fPidObjCascPr
PID object for cascade-pion.
Double_t fProdCascRapMin
Maximum eta of cascade.
AliRDHFCuts & operator=(const AliRDHFCuts &source)
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.
Double_t fProdMassTolLambda
Flag for AOD filter Bit used before object creation.
Bool_t SingleTrkCuts(AliAODTrack *trk, AliAODVertex *primvert)
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)
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
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
PID object for cascade-proton.
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
Bool_t SingleTrkCutsNoPID(AliAODTrack *trk, AliAODVertex *primvert)
Double_t fProdRoughPtMin
Mass cut for Lc used before object creation.
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 fMinPtCand
outcome of PID selection
void SetPidResponse(AliPIDResponse *pidResp)