@@ -1967,13 +1967,16 @@ struct StrangenessInJets {
19671967
19681968 for (const auto & casc : cascades) {
19691969
1970- 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))
19711972 continue ;
19721973 if (casc.v0negtpcCrossedRows () < minNCrossedRowsTPC || casc.v0postpcCrossedRows () < minNCrossedRowsTPC ||
19731974 casc.bachtpcCrossedRows () < minNCrossedRowsTPC)
19741975 continue ;
19751976 if (casc.v0negTPCChi2 () > maxChi2TPC || casc.v0posTPCChi2 () > maxChi2TPC || casc.bachTPCChi2 () > maxChi2TPC)
19761977 continue ;
1978+
1979+ // Topological selections
19771980 if (casc.v0cospa () < v0cospaMin)
19781981 continue ;
19791982 if (casc.casccospa () < casccospaMin)
@@ -1994,124 +1997,63 @@ struct StrangenessInJets {
19941997 continue ;
19951998 if (std::fabs (casc.dcacascdaughters ()) > dcaCascDaughtersMax)
19961999 continue ;
1997- // Xi
1998- // Xi+ selection (Xi+ -> antiL + pi+)
1999- if (casc.sign () > 0 ) {
2000- // PID selections (TPC)
2001- if (casc.ntpcsigmanegpr () < nsigmaTPCmin || casc.ntpcsigmanegpr () > nsigmaTPCmax)
2002- continue ;
2003- if (casc.ntpcsigmapospi () < nsigmaTPCmin || casc.ntpcsigmapospi () > nsigmaTPCmax)
2004- continue ;
20052000
2006- // PID selections (TOF)
2007- if (requireTOF) {
2008- if (casc.ntofsigmanegpr () < nsigmaTOFmin || casc.ntofsigmanegpr () > nsigmaTOFmax)
2009- continue ;
2010- if (casc.ntofsigmapospi () < nsigmaTOFmin || casc.ntofsigmapospi () > nsigmaTOFmax)
2011- continue ;
2012- }
2013- }
2014- // Xi- selection (Xi- -> L + pi-)
2015- if (casc.sign () < 0 ) {
2016- // PID selections (TPC)
2017- if (casc.ntpcsigmapospr () < nsigmaTPCmin || casc.ntpcsigmapospr () > nsigmaTPCmax)
2018- continue ;
2019- if (casc.ntpcsigmanegpi () < nsigmaTPCmin || casc.ntpcsigmanegpi () > nsigmaTPCmax)
2020- continue ;
2001+ // PID selection
2002+ Bool_t isPIDXiminus = false , isPIDXiplus = false , isPIDOmminus = false , isPIDOmplus = false ;
20212003
2022- // PID selections (TOF)
2023- if (requireTOF) {
2024- if (casc.ntofsigmapospr () < nsigmaTOFmin || casc.ntofsigmapospr () > nsigmaTOFmax)
2025- continue ;
2026- if (casc.ntofsigmanegpi () < nsigmaTOFmin || casc.ntofsigmanegpi () > nsigmaTOFmax)
2027- 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 ;
20282017 }
20292018 }
20302019
2031- // PID selection on bachelor
2032- if (casc.ntpcsigmabachpi () < nsigmaTPCmin || casc.ntpcsigmabachpi () > nsigmaTPCmax)
2020+ if (!(isPIDLam || isPIDALam))
20332021 continue ;
20342022
2035- // PID selections (TOF)
2036- if (requireTOF) {
2037- if (casc.ntofsigmabachpi () < nsigmaTOFmin || casc.ntofsigmabachpi () > nsigmaTOFmax)
2038- continue ;
2039- }
20402023 // V0 mass window
20412024 if (std::fabs (casc.masslambda () - o2::constants::physics::MassLambda0) > deltaMassLambda)
20422025 continue ;
2043- // Reject candidates compatible with Omega
2044- if (std::fabs (casc.massomega () - o2::constants::physics::MassOmegaMinus) < deltaMassOmega)
2045- continue ;
2046-
2047- // Omega
2048- // Omega+ selection (Omega+ -> antiL + K+)
2049- if (casc.sign () > 0 ) {
2050- // PID selections (TPC)
2051- if (casc.ntpcsigmanegpr () < nsigmaTPCmin || casc.ntpcsigmanegpr () > nsigmaTPCmax)
2052- continue ;
2053- if (casc.ntpcsigmapospi () < nsigmaTPCmin || casc.ntpcsigmapospi () > nsigmaTPCmax)
2054- continue ;
20552026
2056- // PID selections (TOF)
2057- if (requireTOF) {
2058- if (casc.ntofsigmanegpr () < nsigmaTOFmin || casc.ntofsigmanegpr () > nsigmaTOFmax)
2059- continue ;
2060- if (casc.ntofsigmapospi () < nsigmaTOFmin || casc.ntofsigmapospi () > nsigmaTOFmax)
2061- continue ;
2062- }
2063- }
2027+ // PID selection on bachelor
2028+ const Bool_t isBachPi =
2029+ (casc.ntpcsigmabachpi () >= nsigmaTPCmin && casc.ntpcsigmabachpi () <= nsigmaTPCmax);
20642030
2065- // Omega- selection (Omega- -> L + K-)
2066- if (casc.sign () < 0 ) {
2067- // PID selections (TPC)
2068- if (casc.ntpcsigmapospr () < nsigmaTPCmin || casc.ntpcsigmapospr () > nsigmaTPCmax)
2069- continue ;
2070- if (casc.ntpcsigmanegpi () < nsigmaTPCmin || casc.ntpcsigmanegpi () > nsigmaTPCmax)
2071- continue ;
2031+ const Bool_t isBachKa =
2032+ (casc.ntpcsigmabachka () >= nsigmaTPCmin && casc.ntpcsigmabachka () <= nsigmaTPCmax);
20722033
2073- // PID selections (TOF)
2074- if (requireTOF) {
2075- if (casc.ntofsigmapospr () < nsigmaTOFmin || casc.ntofsigmapospr () > nsigmaTOFmax)
2076- continue ;
2077- if (casc.ntofsigmanegpi () < nsigmaTOFmin || casc.ntofsigmanegpi () > nsigmaTOFmax)
2078- continue ;
2079- }
2080- }
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);
20812037
2082- // PID selection on bachelor
2083- if (casc.ntpcsigmabachka () < nsigmaTPCmin || casc.ntpcsigmabachka () > nsigmaTPCmax)
2084- continue ;
2085-
2086- // PID selections (TOF)
2087- if (requireTOF) {
2088- if (casc.ntofsigmabachka () < nsigmaTOFmin || casc.ntofsigmabachka () > nsigmaTOFmax)
2089- continue ;
2038+ // Final PID flags
2039+ if (casc.sign () > 0 ) {
2040+ if (isPIDALam && isBachPi && !isOmegaLike) isPIDXiplus = true ;
2041+ if (isPIDALam && isBachKa && !isXiLike) isPIDOmplus = true ;
2042+ } else if (casc.sign () < 0 ) {
2043+ if (isPIDLam && isBachPi && !isOmegaLike) isPIDXiminus = true ;
2044+ if (isPIDLam && isBachKa && !isXiLike) isPIDOmminus = true ;
20902045 }
2091- // V0 mass window
2092- if (std::fabs (casc.masslambda () - o2::constants::physics::MassLambda0) > deltaMassLambda)
2093- continue ;
2094-
2095- // Reject candidates compatible with Xi
2096- if (std::fabs (casc.massxi () - o2::constants::physics::MassXiMinus) < deltaMassXi)
2097- continue ;
20982046
20992047 if (casc.isUE ()) {
2100- if (casc.sign () < 0 ) {
2101- registryData.fill (HIST (" XiNeg_in_ue" ), casc.multft0m (), casc.pt (), casc.massxi ());
2102- registryData.fill (HIST (" OmegaNeg_in_ue" ), casc.multft0m (), casc.pt (), casc.massomega ());
2103- } else if (casc.sign () > 0 ) {
2104- registryData.fill (HIST (" XiPos_in_ue" ), casc.multft0m (), casc.pt (), casc.massxi ());
2105- registryData.fill (HIST (" OmegaPos_in_ue" ), casc.multft0m (), casc.pt (), casc.massomega ());
2106- }
2048+ if (isPIDXiminus) registryData.fill (HIST (" XiNeg_in_ue" ), casc.multft0m (), casc.pt (), casc.massxi ());
2049+ if (isPIDXiplus) registryData.fill (HIST (" XiPos_in_ue" ), casc.multft0m (), casc.pt (), casc.massxi ());
2050+ if (isPIDOmminus) registryData.fill (HIST (" OmegaNeg_in_ue" ), casc.multft0m (), casc.pt (), casc.massomega ());
2051+ if (isPIDOmplus) registryData.fill (HIST (" OmegaPos_in_ue" ), casc.multft0m (), casc.pt (), casc.massomega ());
21072052 } else if (casc.isJC ()) {
2108- if (casc.sign () < 0 ) {
2109- registryData.fill (HIST (" XiNeg_in_jet" ), casc.multft0m (), casc.pt (), casc.massxi ());
2110- registryData.fill (HIST (" OmegaNeg_in_jet" ), casc.multft0m (), casc.pt (), casc.massomega ());
2111- } else if (casc.sign () > 0 ) {
2112- registryData.fill (HIST (" XiPos_in_jet" ), casc.multft0m (), casc.pt (), casc.massxi ());
2113- registryData.fill (HIST (" OmegaPos_in_jet" ), casc.multft0m (), casc.pt (), casc.massomega ());
2114- }
2053+ if (isPIDXiminus) registryData.fill (HIST (" XiNeg_in_jet" ), casc.multft0m (), casc.pt (), casc.massxi ());
2054+ if (isPIDXiplus) registryData.fill (HIST (" XiPos_in_jet" ), casc.multft0m (), casc.pt (), casc.massxi ());
2055+ if (isPIDOmminus) registryData.fill (HIST (" OmegaNeg_in_jet" ), casc.multft0m (), casc.pt (), casc.massomega ());
2056+ if (isPIDOmplus) registryData.fill (HIST (" OmegaPos_in_jet" ), casc.multft0m (), casc.pt (), casc.massomega ());
21152057 }
21162058 }
21172059 }
0 commit comments