From c5c1b5e820bee0af066c79d951deb1f55021bdf1 Mon Sep 17 00:00:00 2001 From: akisiel Date: Mon, 19 Apr 2010 08:20:33 +0000 Subject: [PATCH] Add Eta cut --- .../AliFemtoUser/AliFemtoESDTrackCut.cxx | 75 ++++++++++++++++--- .../AliFemtoUser/AliFemtoESDTrackCut.h | 6 ++ 2 files changed, 72 insertions(+), 9 deletions(-) diff --git a/PWG2/FEMTOSCOPY/AliFemtoUser/AliFemtoESDTrackCut.cxx b/PWG2/FEMTOSCOPY/AliFemtoUser/AliFemtoESDTrackCut.cxx index fed1775ad89..749c20738fb 100644 --- a/PWG2/FEMTOSCOPY/AliFemtoUser/AliFemtoESDTrackCut.cxx +++ b/PWG2/FEMTOSCOPY/AliFemtoUser/AliFemtoESDTrackCut.cxx @@ -110,6 +110,7 @@ AliFemtoESDTrackCut::AliFemtoESDTrackCut() : fCharge = 0; // takes both charges 0 fPt[0]=0.0; fPt[1] = 100.0;//100 fRapidity[0]=-2; fRapidity[1]=2;//-2 2 + fEta[0]=-2; fEta[1]=2;//-2 2 fPidProbElectron[0]=-1;fPidProbElectron[1]=2; fPidProbPion[0]=-1; fPidProbPion[1]=2; fPidProbKaon[0]=-1;fPidProbKaon[1]=2; @@ -236,6 +237,7 @@ bool AliFemtoESDTrackCut::Pass(const AliFemtoTrack* track) float tEnergy = ::sqrt(track->P().Mag2()+fMass*fMass); float tRapidity = 0.5*::log((tEnergy+track->P().z())/(tEnergy-track->P().z())); float tPt = ::sqrt((track->P().x())*(track->P().x())+(track->P().y())*(track->P().y())); + float tEta = track->P().PseudoRapidity(); if ((tRapidityfRapidity[1])) { fNTracksFailed++; @@ -243,6 +245,13 @@ bool AliFemtoESDTrackCut::Pass(const AliFemtoTrack* track) //cout<fEta[1])) + { + fNTracksFailed++; + //cout<<"No Go Through the cut"<fPt[1])) { fNTracksFailed++; @@ -296,15 +305,25 @@ bool AliFemtoESDTrackCut::Pass(const AliFemtoTrack* track) } if (fMostProbable) { - tMost[0] = track->PidProbElectron()*PidFractionElectron(track->P().Mag()); - tMost[1] = 0.0; - tMost[2] = track->PidProbPion()*PidFractionPion(track->P().Mag()); - tMost[3] = track->PidProbKaon()*PidFractionKaon(track->P().Mag()); - tMost[4] = track->PidProbProton()*PidFractionProton(track->P().Mag()); int imost=0; - float ipidmax = 0.0; - for (int ip=0; ip<5; ip++) - if (tMost[ip] > ipidmax) { ipidmax = tMost[ip]; imost = ip; }; + if (fMostProbable == 2) { + if (IsPionTPCdEdx(track->P().Mag(), track->TPCsignal())) + imost = 2; + } + else if (fMostProbable == 3) { + if (IsKaonTPCdEdx(track->P().Mag(), track->TPCsignal())) + imost = 3; + } + else { + tMost[0] = track->PidProbElectron()*PidFractionElectron(track->P().Mag()); + tMost[1] = 0.0; + tMost[2] = track->PidProbPion()*PidFractionPion(track->P().Mag()); + tMost[3] = track->PidProbKaon()*PidFractionKaon(track->P().Mag()); + tMost[4] = track->PidProbProton()*PidFractionProton(track->P().Mag()); + float ipidmax = 0.0; + for (int ip=0; ip<5; ip++) + if (tMost[ip] > ipidmax) { ipidmax = tMost[ip]; imost = ip; }; + } if (imost != fMostProbable) return false; } @@ -336,8 +355,10 @@ AliFemtoString AliFemtoESDTrackCut::Report() sprintf(tCtemp,"Particle pT:\t%E - %E\n",fPt[0],fPt[1]); tStemp+=tCtemp; sprintf(tCtemp,"Particle rapidity:\t%E - %E\n",fRapidity[0],fRapidity[1]); + tStemp+=tCtemp; + sprintf(tCtemp,"Particle eta:\t%E - %E\n",fEta[0],fEta[1]); tStemp+=tCtemp; - sprintf(tCtemp,"Number of tracks which passed:\t%ld Number which failed:\t%ld\n",fNTracksPassed,fNTracksFailed); + sprintf(tCtemp,"Number of tracks which passed:\t%ld Number which failed:\t%ld\n",fNTracksPassed,fNTracksFailed); tStemp += tCtemp; AliFemtoString returnThis = tStemp; return returnThis; @@ -502,3 +523,39 @@ void AliFemtoESDTrackCut::SetMomRangeITSpidIs(const float& minp, const float& ma fMaxPforITSpid = maxp; } +bool AliFemtoESDTrackCut::IsPionTPCdEdx(float mom, float dEdx) +{ + double a1 = -95.4545, b1 = 86.5455; + double a2 = 0.0, b2 = 56.0; + + if (mom < 0.32) { + if (dEdx < a1*mom+b1) return true; + } + if (dEdx < a2*mom+b2) return true; + + return false; +} + +bool AliFemtoESDTrackCut::IsKaonTPCdEdx(float mom, float dEdx) +{ + double a1 = -159.1, b1 = 145.9; + double a2 = 0.0, b2 = 60.0; + double a3 = -138.235, b3 = 166.44; + double a4 = -2015.79, b4 = 973.789; + + if (mom < 0.24) { + if (dEdx > a1*mom+b1) return true; + } + else if (mom < 0.43) { + if ((dEdx > a1*mom+b1) && (dEdx < a4*mom+b4)) return true; + } + else if (mom < 0.54) { + if ((dEdx > a1*mom+b1) && (dEdx < a3*mom+b3)) return true; + } + else if (mom < 0.77) { + if ((dEdx > a2*mom+b2) && (dEdx < a3*mom+b3)) return true; + } + + return false; +} + diff --git a/PWG2/FEMTOSCOPY/AliFemtoUser/AliFemtoESDTrackCut.h b/PWG2/FEMTOSCOPY/AliFemtoUser/AliFemtoESDTrackCut.h index 1323ea3abdf..ac608821bde 100644 --- a/PWG2/FEMTOSCOPY/AliFemtoUser/AliFemtoESDTrackCut.h +++ b/PWG2/FEMTOSCOPY/AliFemtoUser/AliFemtoESDTrackCut.h @@ -32,6 +32,7 @@ class AliFemtoESDTrackCut : public AliFemtoTrackCut void SetPt(const float& lo, const float& hi); void SetRapidity(const float& lo, const float& hi); + void SetEta(const float& lo, const float& hi); void SetCharge(const int& ch); void SetPidProbElectron(const float& lo, const float& hi); void SetPidProbPion(const float& lo, const float& hi); @@ -63,6 +64,7 @@ class AliFemtoESDTrackCut : public AliFemtoTrackCut int fCharge; // particle charge float fPt[2]; // bounds for transverse momentum float fRapidity[2]; // bounds for rapidity + float fEta[2]; // bounds for pseudorapidity float fPidProbElectron[2]; // bounds for electron probability float fPidProbPion[2]; // bounds for pion probability float fPidProbKaon[2]; // bounds for kaon probability @@ -97,6 +99,9 @@ class AliFemtoESDTrackCut : public AliFemtoTrackCut float PidFractionKaon(float mom) const; float PidFractionProton(float mom) const; + bool IsPionTPCdEdx(float mom, float dEdx); + bool IsKaonTPCdEdx(float mom, float dEdx); + #ifdef __ROOT__ ClassDef(AliFemtoESDTrackCut, 1) #endif @@ -105,6 +110,7 @@ class AliFemtoESDTrackCut : public AliFemtoTrackCut inline void AliFemtoESDTrackCut::SetPt(const float& lo, const float& hi){fPt[0]=lo; fPt[1]=hi;} inline void AliFemtoESDTrackCut::SetRapidity(const float& lo,const float& hi){fRapidity[0]=lo; fRapidity[1]=hi;} +inline void AliFemtoESDTrackCut::SetEta(const float& lo,const float& hi){fEta[0]=lo; fEta[1]=hi;} inline void AliFemtoESDTrackCut::SetCharge(const int& ch){fCharge = ch;} inline void AliFemtoESDTrackCut::SetPidProbElectron(const float& lo,const float& hi){fPidProbElectron[0]=lo; fPidProbElectron[1]=hi;} inline void AliFemtoESDTrackCut::SetPidProbPion(const float& lo,const float& hi){fPidProbPion[0]=lo; fPidProbPion[1]=hi;} -- 2.43.0