@@ -104,11 +104,15 @@ struct FemtoUniversePairTaskTrackV0Extended {
104104 Configurable<float > confDcaXYCustom2FilterCut{" confDcaXYCustom2FilterCut" , 0 , " Value for [2] custom DCAxy cut -> |DCAxy| < [1] + [2]/pT (if stricter than in Producer)" };
105105 } ConfTrkSelection;
106106
107- Configurable<float > confmom{" confmom" , 0.5 , " momentum threshold for particle identification using TOF" };
108- Configurable<float > confNsigmaTPCParticle{" confNsigmaTPCParticle" , 3.0 , " TPC Sigma for particle momentum < confmom" };
109- Configurable<float > confNsigmaTPCDaughter{" confNsigmaTPCDaughter" , 3.0 , " TPC Sigma for daughter" };
110- Configurable<float > confNsigmaTOFParticle{" confNsigmaTOFParticle" , 3.0 , " TOF Sigma for particle (daugh & bach) momentum > Confmom" };
111- Configurable<float > confNsigmaCombinedParticle{" confNsigmaCombinedParticle" , 3.0 , " TPC and TOF Sigma (combined) for particle momentum > confmom" };
107+ struct : o2::framework::ConfigurableGroup {
108+ Configurable<float > confmom{" confmom" , 0.5 , " momentum threshold for particle identification using TOF" };
109+ Configurable<float > confNsigmaTPCParticle{" confNsigmaTPCParticle" , 3.0 , " TPC Sigma for particle momentum < ConfNSigmaSelection.confmom" };
110+ Configurable<float > confNsigmaTPCDaughter{" confNsigmaTPCDaughter" , 3.0 , " TPC Sigma for daughter" };
111+ Configurable<float > confNsigmaTOFParticle{" confNsigmaTOFParticle" , 3.0 , " TOF Sigma for particle (daugh & bach) momentum > ConfNSigmaSelection.confmom" };
112+ Configurable<float > confNsigmaCombinedParticle{" confNsigmaCombinedParticle" , 3.0 , " TPC and TOF Sigma (combined) for particle momentum > ConfNSigmaSelection.confmom" };
113+ Configurable<float > confNsigmaKaonRejection{" confNsigmaKaonRejection" , 0 , " In proton selection reject tracks with kaon Nsigma <confNsigmaRejection" };
114+ Configurable<float > confNsigmaPionRejection{" confNsigmaPionRejection" , 0 , " In proton selection reject tracks with pion Nsigma <confNsigmaRejection" };
115+ } ConfNSigmaSelection;
112116
113117 Filter collisionFilter = (nabs(aod::collision::posZ) < confZVertexCut);
114118 using FilteredFDCollisions = soa::Filtered<o2::aod::FdCollisions>;
@@ -255,19 +259,19 @@ struct FemtoUniversePairTaskTrackV0Extended {
255259
256260 bool isNSigmaCombined (float mom, float nsigmaTPCParticle, float nsigmaTOFParticle, bool hasTOF)
257261 {
258- if (mom <= confmom) {
259- return (std::abs (nsigmaTPCParticle) < confNsigmaTPCParticle);
262+ if (mom <= ConfNSigmaSelection. confmom ) {
263+ return (std::abs (nsigmaTPCParticle) < ConfNSigmaSelection. confNsigmaTPCParticle );
260264 }
261265 if (hasTOF) {
262- return (std::hypot (nsigmaTOFParticle, nsigmaTPCParticle) < confNsigmaCombinedParticle);
266+ return (std::hypot (nsigmaTOFParticle, nsigmaTPCParticle) < ConfNSigmaSelection. confNsigmaCombinedParticle );
263267 }
264268 return false ;
265269 }
266270
267271 template <typename T>
268272 bool isNSigmaCombinedBitmask (float mom, const T& part)
269273 {
270- if (mom <= confmom) {
274+ if (mom <= ConfNSigmaSelection. confmom ) {
271275 return ((part.pidCut () & (1u << ConfTrkSelection.confTrackChoicePartOne )) != 0 );
272276 }
273277 if ((part.pidCut () & 512u ) != 0 ) {
@@ -293,14 +297,14 @@ struct FemtoUniversePairTaskTrackV0Extended {
293297
294298 bool isNSigmaTPC (float nsigmaTPCParticle)
295299 {
296- return std::abs (nsigmaTPCParticle) < confNsigmaTPCDaughter;
300+ return std::abs (nsigmaTPCParticle) < ConfNSigmaSelection. confNsigmaTPCDaughter ;
297301 }
298302
299303 bool isNSigmaTOF (float mom, float nsigmaTOFParticle, bool hasTOF)
300304 {
301305 // Cut only on daughter tracks, that have TOF signal
302- if (mom > confmom && hasTOF) {
303- return std::abs (nsigmaTOFParticle) < confNsigmaTOFParticle;
306+ if (mom > ConfNSigmaSelection. confmom && hasTOF) {
307+ return std::abs (nsigmaTOFParticle) < ConfNSigmaSelection. confNsigmaTOFParticle ;
304308 }
305309 return true ;
306310 }
@@ -310,7 +314,19 @@ struct FemtoUniversePairTaskTrackV0Extended {
310314 {
311315 const std::array<float , 3 > tpcNSigmas = {aod::pidtpc_tiny::binning::unPackInTable (part.tpcNSigmaStorePr ()), aod::pidtpc_tiny::binning::unPackInTable (part.tpcNSigmaStorePi ()), aod::pidtpc_tiny::binning::unPackInTable (part.tpcNSigmaStoreKa ())};
312316 const std::array<float , 3 > tofNSigmas = {aod::pidtof_tiny::binning::unPackInTable (part.tofNSigmaStorePr ()), aod::pidtof_tiny::binning::unPackInTable (part.tofNSigmaStorePi ()), aod::pidtof_tiny::binning::unPackInTable (part.tofNSigmaStoreKa ())};
317+ enum particleID { protonId,
318+ pionId,
319+ kaonId };
313320
321+ if (id == protonId) {
322+ if (part.p () < ConfNSigmaSelection.confmom ) {
323+ if (std::abs (tpcNSigmas[kaonId]) < ConfNSigmaSelection.confNsigmaKaonRejection || std::abs (tpcNSigmas[pionId]) < ConfNSigmaSelection.confNsigmaPionRejection ) {
324+ return false ;
325+ }
326+ } else if (std::hypot (tofNSigmas[kaonId], tpcNSigmas[kaonId]) < ConfNSigmaSelection.confNsigmaKaonRejection || std::hypot (tofNSigmas[pionId], tpcNSigmas[pionId]) < ConfNSigmaSelection.confNsigmaPionRejection ) {
327+ return false ;
328+ }
329+ }
314330 return isNSigmaCombined (part.p (), tpcNSigmas[id], tofNSigmas[id], (part.pidCut () & 512u ) != 0 );
315331 }
316332
@@ -560,7 +576,7 @@ struct FemtoUniversePairTaskTrackV0Extended {
560576 const std::array<float , 3 > tpcNSigmas = {aod::pidtpc_tiny::binning::unPackInTable (part.tpcNSigmaStorePr ()), aod::pidtpc_tiny::binning::unPackInTable (part.tpcNSigmaStorePi ()), aod::pidtpc_tiny::binning::unPackInTable (part.tpcNSigmaStoreKa ())};
561577 const std::array<float , 3 > tofNSigmas = {aod::pidtof_tiny::binning::unPackInTable (part.tofNSigmaStorePr ()), aod::pidtof_tiny::binning::unPackInTable (part.tofNSigmaStorePi ()), aod::pidtof_tiny::binning::unPackInTable (part.tofNSigmaStoreKa ())};
562578
563- if (!isNSigmaCombined (part. p (), tpcNSigmas[ ConfTrkSelection.confTrackChoicePartOne ], tofNSigmas[ConfTrkSelection. confTrackChoicePartOne ], (part. pidCut () & 512u ) != 0 )) {
579+ if (!isParticleCombined (part, ConfTrkSelection.confTrackChoicePartOne )) {
564580 continue ;
565581 }
566582 if (part.sign () > 0 ) {
@@ -1832,10 +1848,7 @@ struct FemtoUniversePairTaskTrackV0Extended {
18321848 }
18331849
18341850 for (const auto & part : groupPartsOne) {
1835- const std::array<float , 3 > tpcNSigmas = {aod::pidtpc_tiny::binning::unPackInTable (part.tpcNSigmaStorePr ()), aod::pidtpc_tiny::binning::unPackInTable (part.tpcNSigmaStorePi ()), aod::pidtpc_tiny::binning::unPackInTable (part.tpcNSigmaStoreKa ())};
1836- const std::array<float , 3 > tofNSigmas = {aod::pidtof_tiny::binning::unPackInTable (part.tofNSigmaStorePr ()), aod::pidtof_tiny::binning::unPackInTable (part.tofNSigmaStorePi ()), aod::pidtof_tiny::binning::unPackInTable (part.tofNSigmaStoreKa ())};
1837-
1838- if (!isNSigmaCombined (part.p (), tpcNSigmas[ConfTrkSelection.confTrackChoicePartOne ], tofNSigmas[ConfTrkSelection.confTrackChoicePartOne ], (part.pidCut () & 512u ) != 0 )) {
1851+ if (!isParticleCombined (part, ConfTrkSelection.confTrackChoicePartOne )) {
18391852 continue ;
18401853 }
18411854 registryMCreco.fill (HIST (" mothersReco/motherParticleTrack" ), part.motherPDG ());
0 commit comments