@@ -1881,6 +1881,45 @@ struct StrangenessInJets {
18811881 continue ;
18821882 if (std::fabs (v0.v0dcanegtopv ()) < dcanegtoPVmin)
18831883 continue ;
1884+ // PID selections (TPC) -- K0s
1885+ if (v0.ntpcsigmapospi () < nsigmaTPCmin || v0.ntpcsigmapospi () > nsigmaTPCmax)
1886+ continue ;
1887+ if (v0.ntpcsigmanegpi () < nsigmaTPCmin || v0.ntpcsigmanegpi () > nsigmaTPCmax)
1888+ continue ;
1889+
1890+ // PID selections (TOF) -- K0s
1891+ if (requireTOF) {
1892+ if (v0.ntofsigmapospi () < nsigmaTOFmin || v0.ntofsigmapospi () > nsigmaTOFmax)
1893+ continue ;
1894+ if (v0.ntofsigmanegpi () < nsigmaTOFmin || v0.ntofsigmanegpi () > nsigmaTOFmax)
1895+ continue ;
1896+ }
1897+ // PID selections (TPC): positive track = proton, negative track = pion -- Lam
1898+ if (v0.ntpcsigmapospr () < nsigmaTPCmin || v0.ntpcsigmapospr () > nsigmaTPCmax)
1899+ continue ;
1900+ if (v0.ntpcsigmanegpi () < nsigmaTPCmin || v0.ntpcsigmanegpi () > nsigmaTPCmax)
1901+ continue ;
1902+
1903+ // PID selections (TOF): positive track = proton, negative track = pion -- Lam
1904+ if (requireTOF) {
1905+ if (v0.ntofsigmapospr () < nsigmaTOFmin || v0.ntofsigmapospr () > nsigmaTOFmax)
1906+ continue ;
1907+ if (v0.ntofsigmanegpi () < nsigmaTOFmin || v0.ntofsigmanegpi () > nsigmaTOFmax)
1908+ continue ;
1909+ }
1910+ // PID selections (TPC): negative track = proton, positive track = pion --- ALam
1911+ if (v0.ntpcsigmapospi () < nsigmaTPCmin || v0.ntpcsigmapospi () > nsigmaTPCmax)
1912+ continue ;
1913+ if (v0.ntpcsigmanegpr () < nsigmaTPCmin || v0.ntpcsigmanegpr () > nsigmaTPCmax)
1914+ continue ;
1915+
1916+ // PID selections (TOF): negative track = proton, positive track = pion --- ALam
1917+ if (requireTOF) {
1918+ if (v0.ntofsigmapospi () < nsigmaTOFmin || v0.ntofsigmapospi () > nsigmaTOFmax)
1919+ continue ;
1920+ if (v0.ntofsigmanegpr () < nsigmaTOFmin || v0.ntofsigmanegpr () > nsigmaTOFmax)
1921+ continue ;
1922+ }
18841923
18851924 // PID selections
18861925 Bool_t isPIDK0s = false , isPIDLam = false , isPIDALam = false ;
@@ -1928,13 +1967,16 @@ struct StrangenessInJets {
19281967
19291968 for (const auto & casc : cascades) {
19301969
1931- if (casc.v0negITSlayers () < minITSnCls || casc.v0posITSlayers () < minITSnCls || casc.bachITSlayers () < minITSnCls)
1970+ // Track selections
1971+ if (requireITS && (casc.v0negITSlayers () < minITSnCls || casc.v0posITSlayers () < minITSnCls || casc.bachITSlayers () < minITSnCls))
19321972 continue ;
19331973 if (casc.v0negtpcCrossedRows () < minNCrossedRowsTPC || casc.v0postpcCrossedRows () < minNCrossedRowsTPC ||
19341974 casc.bachtpcCrossedRows () < minNCrossedRowsTPC)
19351975 continue ;
19361976 if (casc.v0negTPCChi2 () > maxChi2TPC || casc.v0posTPCChi2 () > maxChi2TPC || casc.bachTPCChi2 () > maxChi2TPC)
19371977 continue ;
1978+
1979+ // Topological selections
19381980 if (casc.v0cospa () < v0cospaMin)
19391981 continue ;
19401982 if (casc.casccospa () < casccospaMin)
@@ -1955,124 +1997,75 @@ struct StrangenessInJets {
19551997 continue ;
19561998 if (std::fabs (casc.dcacascdaughters ()) > dcaCascDaughtersMax)
19571999 continue ;
1958- // Xi
1959- // Xi+ selection (Xi+ -> antiL + pi+)
1960- if (casc.sign () > 0 ) {
1961- // PID selections (TPC)
1962- if (casc.ntpcsigmanegpr () < nsigmaTPCmin || casc.ntpcsigmanegpr () > nsigmaTPCmax)
1963- continue ;
1964- if (casc.ntpcsigmapospi () < nsigmaTPCmin || casc.ntpcsigmapospi () > nsigmaTPCmax)
1965- continue ;
19662000
1967- // PID selections (TOF)
1968- if (requireTOF) {
1969- if (casc.ntofsigmanegpr () < nsigmaTOFmin || casc.ntofsigmanegpr () > nsigmaTOFmax)
1970- continue ;
1971- if (casc.ntofsigmapospi () < nsigmaTOFmin || casc.ntofsigmapospi () > nsigmaTOFmax)
1972- continue ;
1973- }
1974- }
1975- // Xi- selection (Xi- -> L + pi-)
1976- if (casc.sign () < 0 ) {
1977- // PID selections (TPC)
1978- if (casc.ntpcsigmapospr () < nsigmaTPCmin || casc.ntpcsigmapospr () > nsigmaTPCmax)
1979- continue ;
1980- if (casc.ntpcsigmanegpi () < nsigmaTPCmin || casc.ntpcsigmanegpi () > nsigmaTPCmax)
1981- continue ;
2001+ // PID selection
2002+ Bool_t isPIDXiminus = false , isPIDXiplus = false , isPIDOmminus = false , isPIDOmplus = false ;
19822003
1983- // PID selections (TOF)
1984- if (requireTOF) {
1985- if (casc.ntofsigmapospr () < nsigmaTOFmin || casc.ntofsigmapospr () > nsigmaTOFmax)
1986- continue ;
1987- if (casc.ntofsigmanegpi () < nsigmaTOFmin || casc.ntofsigmanegpi () > nsigmaTOFmax)
1988- continue ;
2004+ // PID selection bachelor
2005+ Bool_t isPIDLam = false , isPIDALam = false ;
2006+ if (casc.sign () > 0 ) {
2007+ // antiLambda: (p-)neg + (pi+)pos
2008+ if (casc.ntpcsigmanegpr () >= nsigmaTPCmin && casc.ntpcsigmanegpr () <= nsigmaTPCmax &&
2009+ casc.ntpcsigmapospi () >= nsigmaTPCmin && casc.ntpcsigmapospi () <= nsigmaTPCmax) {
2010+ isPIDALam = true ;
2011+ }
2012+ } else if (casc.sign () < 0 ) {
2013+ // lambda: (p+)pos + (pi-)neg
2014+ if (casc.ntpcsigmapospr () >= nsigmaTPCmin && casc.ntpcsigmapospr () <= nsigmaTPCmax &&
2015+ casc.ntpcsigmanegpi () >= nsigmaTPCmin && casc.ntpcsigmanegpi () <= nsigmaTPCmax) {
2016+ isPIDLam = true ;
19892017 }
19902018 }
19912019
1992- // PID selection on bachelor
1993- if (casc.ntpcsigmabachpi () < nsigmaTPCmin || casc.ntpcsigmabachpi () > nsigmaTPCmax)
2020+ if (!(isPIDLam || isPIDALam))
19942021 continue ;
19952022
1996- // PID selections (TOF)
1997- if (requireTOF) {
1998- if (casc.ntofsigmabachpi () < nsigmaTOFmin || casc.ntofsigmabachpi () > nsigmaTOFmax)
1999- continue ;
2000- }
20012023 // V0 mass window
20022024 if (std::fabs (casc.masslambda () - o2::constants::physics::MassLambda0) > deltaMassLambda)
20032025 continue ;
2004- // Reject candidates compatible with Omega
2005- if (std::fabs (casc.massomega () - o2::constants::physics::MassOmegaMinus) < deltaMassOmega)
2006- continue ;
20072026
2008- // Omega
2009- // Omega+ selection (Omega+ -> antiL + K+)
2010- if (casc.sign () > 0 ) {
2011- // PID selections (TPC)
2012- if (casc.ntpcsigmanegpr () < nsigmaTPCmin || casc.ntpcsigmanegpr () > nsigmaTPCmax)
2013- continue ;
2014- if (casc.ntpcsigmapospi () < nsigmaTPCmin || casc.ntpcsigmapospi () > nsigmaTPCmax)
2015- continue ;
2016-
2017- // PID selections (TOF)
2018- if (requireTOF) {
2019- if (casc.ntofsigmanegpr () < nsigmaTOFmin || casc.ntofsigmanegpr () > nsigmaTOFmax)
2020- continue ;
2021- if (casc.ntofsigmapospi () < nsigmaTOFmin || casc.ntofsigmapospi () > nsigmaTOFmax)
2022- continue ;
2023- }
2024- }
2025-
2026- // Omega- selection (Omega- -> L + K-)
2027- if (casc.sign () < 0 ) {
2028- // PID selections (TPC)
2029- if (casc.ntpcsigmapospr () < nsigmaTPCmin || casc.ntpcsigmapospr () > nsigmaTPCmax)
2030- continue ;
2031- if (casc.ntpcsigmanegpi () < nsigmaTPCmin || casc.ntpcsigmanegpi () > nsigmaTPCmax)
2032- continue ;
2027+ // PID selection on bachelor
2028+ const Bool_t isBachPi =
2029+ (casc.ntpcsigmabachpi () >= nsigmaTPCmin && casc.ntpcsigmabachpi () <= nsigmaTPCmax);
20332030
2034- // PID selections (TOF)
2035- if (requireTOF) {
2036- if (casc.ntofsigmapospr () < nsigmaTOFmin || casc.ntofsigmapospr () > nsigmaTOFmax)
2037- continue ;
2038- if (casc.ntofsigmanegpi () < nsigmaTOFmin || casc.ntofsigmanegpi () > nsigmaTOFmax)
2039- continue ;
2040- }
2041- }
2031+ const Bool_t isBachKa =
2032+ (casc.ntpcsigmabachka () >= nsigmaTPCmin && casc.ntpcsigmabachka () <= nsigmaTPCmax);
20422033
2043- // PID selection on bachelor
2044- if ( casc.ntpcsigmabachka () < nsigmaTPCmin || casc. ntpcsigmabachka () > nsigmaTPCmax)
2045- continue ;
2034+ // Cross-contamination rejection flags
2035+ const Bool_t isOmegaLike = ( std::fabs ( casc.massomega () - o2::constants::physics::MassOmegaMinus) < deltaMassOmega);
2036+ const Bool_t isXiLike = ( std::fabs (casc. massxi () - o2::constants::physics::MassXiMinus) < deltaMassXi) ;
20462037
2047- // PID selections (TOF)
2048- if (requireTOF) {
2049- if (casc.ntofsigmabachka () < nsigmaTOFmin || casc.ntofsigmabachka () > nsigmaTOFmax)
2050- continue ;
2038+ // Final PID flags
2039+ if (casc.sign () > 0 ) {
2040+ if (isPIDALam && isBachPi && !isOmegaLike)
2041+ isPIDXiplus = true ;
2042+ if (isPIDALam && isBachKa && !isXiLike)
2043+ isPIDOmplus = true ;
2044+ } else if (casc.sign () < 0 ) {
2045+ if (isPIDLam && isBachPi && !isOmegaLike)
2046+ isPIDXiminus = true ;
2047+ if (isPIDLam && isBachKa && !isXiLike)
2048+ isPIDOmminus = true ;
20512049 }
2052- // V0 mass window
2053- if (std::fabs (casc.masslambda () - o2::constants::physics::MassLambda0) > deltaMassLambda)
2054- continue ;
2055-
2056- // Reject candidates compatible with Xi
2057- if (std::fabs (casc.massxi () - o2::constants::physics::MassXiMinus) < deltaMassXi)
2058- continue ;
20592050
20602051 if (casc.isUE ()) {
2061- if (casc. sign () < 0 ) {
2052+ if (isPIDXiminus)
20622053 registryData.fill (HIST (" XiNeg_in_ue" ), casc.multft0m (), casc.pt (), casc.massxi ());
2063- registryData.fill (HIST (" OmegaNeg_in_ue" ), casc.multft0m (), casc.pt (), casc.massomega ());
2064- } else if (casc.sign () > 0 ) {
2054+ if (isPIDXiplus)
20652055 registryData.fill (HIST (" XiPos_in_ue" ), casc.multft0m (), casc.pt (), casc.massxi ());
2056+ if (isPIDOmminus)
2057+ registryData.fill (HIST (" OmegaNeg_in_ue" ), casc.multft0m (), casc.pt (), casc.massomega ());
2058+ if (isPIDOmplus)
20662059 registryData.fill (HIST (" OmegaPos_in_ue" ), casc.multft0m (), casc.pt (), casc.massomega ());
2067- }
20682060 } else if (casc.isJC ()) {
2069- if (casc. sign () < 0 ) {
2061+ if (isPIDXiminus)
20702062 registryData.fill (HIST (" XiNeg_in_jet" ), casc.multft0m (), casc.pt (), casc.massxi ());
2071- registryData.fill (HIST (" OmegaNeg_in_jet" ), casc.multft0m (), casc.pt (), casc.massomega ());
2072- } else if (casc.sign () > 0 ) {
2063+ if (isPIDXiplus)
20732064 registryData.fill (HIST (" XiPos_in_jet" ), casc.multft0m (), casc.pt (), casc.massxi ());
2065+ if (isPIDOmminus)
2066+ registryData.fill (HIST (" OmegaNeg_in_jet" ), casc.multft0m (), casc.pt (), casc.massomega ());
2067+ if (isPIDOmplus)
20742068 registryData.fill (HIST (" OmegaPos_in_jet" ), casc.multft0m (), casc.pt (), casc.massomega ());
2075- }
20762069 }
20772070 }
20782071 }
0 commit comments