@@ -131,7 +131,8 @@ struct tofSpectra {
131131 Configurable<float > cfgCutNsigma{" cfgCutNsigma" , 100 .0f , " nsigma cut range for tracks" };
132132 Configurable<float > cfgCutEtaMin{" cfgCutEtaMin" , -0 .8f , " Min eta range for tracks" };
133133 Configurable<float > cfgCutdcaZMin{" cfgCutdcaZMin" , -0 .02f , " Min dcaZ range for tracks" };
134- Configurable<float > cfgCutY{" cfgCutY" , 0 .5f , " Y range for tracks" };
134+ Configurable<float > cfgCutYMax{" cfgCutYMax" , 0 .5f , " Max Y range for tracks" };
135+ Configurable<float > cfgCutYMin{" cfgCutYMin" , -0 .5f , " Min Y range for tracks" };
135136 Configurable<int > lastRequiredTrdCluster{" lastRequiredTrdCluster" , 5 , " Last cluster to require in TRD for track selection. -1 does not require any TRD cluster" };
136137 Configurable<bool > requireTrdOnly{" requireTrdOnly" , false , " Require only tracks from TRD" };
137138 Configurable<bool > requireNoTrd{" requireNoTrd" , false , " Require tracks without TRD" };
@@ -900,7 +901,8 @@ struct tofSpectra {
900901 template <bool fillFullInfo, PID ::ID id, typename T, typename C>
901902 void fillParticleHistos (const T& track, const C& collision)
902903 {
903- if (std::abs (track.rapidity (PID::getMass (id))) > trkselOptions.cfgCutY ) {
904+ const auto rapidity = track.rapidity (PID::getMass (id));
905+ if (rapidity < trkselOptions.cfgCutYMin || rapidity > trkselOptions.cfgCutYMax ) {
904906 return ;
905907 }
906908 if constexpr (id == PID ::Kaon) {
@@ -1556,14 +1558,14 @@ struct tofSpectra {
15561558 bool isTOFKaon = track.hasTOF () && std::abs (nsigmaTOFKa) < trkselOptions.cfgCutNsigma ;
15571559 bool isTOFProton = track.hasTOF () && std::abs (nsigmaTOFPr) < trkselOptions.cfgCutNsigma ;
15581560 // Precompute rapidity values to avoid redundant calculations
1559- double rapidityPi = std::abs ( track.rapidity (PID::getMass (2 ) ));
1560- double rapidityKa = std::abs ( track.rapidity (PID::getMass (3 ) ));
1561- double rapidityPr = std::abs ( track.rapidity (PID::getMass (4 ) ));
1561+ double rapidityPi = track.rapidity (PID::getMass (2 ));
1562+ double rapidityKa = track.rapidity (PID::getMass (3 ));
1563+ double rapidityPr = track.rapidity (PID::getMass (4 ));
15621564 if (track.eta () < trkselOptions.cfgCutEtaMin || track.eta () > trkselOptions.cfgCutEtaMax ) {
15631565 return ;
15641566 }
15651567 if (mcParticle.isPhysicalPrimary ()) {
1566- if (isTPCPion && rapidityPi <= trkselOptions.cfgCutY ) {
1568+ if (isTPCPion && rapidityPi >= trkselOptions. cfgCutYMin && rapidityPi <= trkselOptions.cfgCutYMax ) {
15671569 if (usePDGcode) {
15681570 if (pdgCode == kPiPlus ) {
15691571 histos.fill (HIST (" nsigmatpc/mc_closure/pos/pi" ), track.pt (), nsigmaTPCPi, multiplicity);
@@ -1575,7 +1577,7 @@ struct tofSpectra {
15751577 histos.fill (HIST (" nsigmatpc/mc_closure/neg/pi" ), track.pt (), nsigmaTPCPi, multiplicity);
15761578 }
15771579 }
1578- if (isTPCKaon && rapidityKa <= trkselOptions.cfgCutY ) {
1580+ if (isTPCKaon && rapidityKa >= trkselOptions. cfgCutYMin && rapidityKa <= trkselOptions.cfgCutYMax ) {
15791581 if (usePDGcode) {
15801582 if (pdgCode == kKPlus ) {
15811583 histos.fill (HIST (" nsigmatpc/mc_closure/pos/ka" ), track.pt (), nsigmaTPCKa, multiplicity);
@@ -1587,7 +1589,7 @@ struct tofSpectra {
15871589 histos.fill (HIST (" nsigmatpc/mc_closure/neg/ka" ), track.pt (), nsigmaTPCKa, multiplicity);
15881590 }
15891591 }
1590- if (isTPCProton && rapidityPr <= trkselOptions.cfgCutY ) {
1592+ if (isTPCProton && rapidityPr >= trkselOptions. cfgCutYMin && rapidityPr <= trkselOptions.cfgCutYMax ) {
15911593 if (usePDGcode) {
15921594 if (pdgCode == kProton ) {
15931595 histos.fill (HIST (" nsigmatpc/mc_closure/pos/pr" ), track.pt (), nsigmaTPCPr, multiplicity);
@@ -1601,7 +1603,7 @@ struct tofSpectra {
16011603 }
16021604
16031605 // TOF Selection and Histogram Filling
1604- if (isTOFPion && rapidityPi <= trkselOptions.cfgCutY ) {
1606+ if (isTOFPion && rapidityPi >= trkselOptions. cfgCutYMin && rapidityPi <= trkselOptions.cfgCutYMax ) {
16051607 if (usePDGcode) {
16061608 if (pdgCode == kPiPlus ) {
16071609 histos.fill (HIST (" nsigmatof/mc_closure/pos/pi" ), track.pt (), nsigmaTOFPi, multiplicity);
@@ -1613,7 +1615,7 @@ struct tofSpectra {
16131615 histos.fill (HIST (" nsigmatof/mc_closure/neg/pi" ), track.pt (), nsigmaTOFPi, multiplicity);
16141616 }
16151617 }
1616- if (isTOFKaon && rapidityKa <= trkselOptions.cfgCutY ) {
1618+ if (isTOFKaon && rapidityKa >= trkselOptions. cfgCutYMin && rapidityKa <= trkselOptions.cfgCutYMax ) {
16171619 if (usePDGcode) {
16181620 if (pdgCode == kKPlus ) {
16191621 histos.fill (HIST (" nsigmatof/mc_closure/pos/ka" ), track.pt (), nsigmaTOFKa, multiplicity);
@@ -1625,7 +1627,7 @@ struct tofSpectra {
16251627 histos.fill (HIST (" nsigmatof/mc_closure/neg/ka" ), track.pt (), nsigmaTOFKa, multiplicity);
16261628 }
16271629 }
1628- if (isTOFProton && rapidityPr <= trkselOptions.cfgCutY ) {
1630+ if (isTOFProton && rapidityPr >= trkselOptions. cfgCutYMin && rapidityPr <= trkselOptions.cfgCutYMax ) {
16291631 if (usePDGcode) {
16301632 if (pdgCode == kProton ) {
16311633 histos.fill (HIST (" nsigmatof/mc_closure/pos/pr" ), track.pt (), nsigmaTOFPr, multiplicity);
@@ -1693,21 +1695,21 @@ struct tofSpectra {
16931695 const bool isTOFProton = track.hasTOF () && std::abs (nsigmaTOFPr) < trkselOptions.cfgCutNsigma ;
16941696
16951697 // Apply rapidity cut for identified particles
1696- if (isTPCPion && std::abs ( track.rapidity (PID::getMass (2 ))) < trkselOptions.cfgCutY ) {
1698+ if (isTPCPion && track. rapidity ( PID::getMass ( 2 )) >= trkselOptions. cfgCutYMin && track.rapidity (PID::getMass (2 )) <= trkselOptions.cfgCutYMax ) {
16971699 tpcCount++;
16981700 if (track.sign () > 0 ) {
16991701 histos.fill (HIST (" nsigmatpc/test_occupancy/pos/pi" ), track.pt (), nsigmaTPCPi, multiplicity, occupancy);
17001702 } else {
17011703 histos.fill (HIST (" nsigmatpc/test_occupancy/neg/pi" ), track.pt (), nsigmaTPCPi, multiplicity, occupancy);
17021704 }
1703- } else if (isTPCKaon && std::abs ( track.rapidity (PID::getMass (3 ))) < trkselOptions.cfgCutY ) {
1705+ } else if (isTPCKaon && track. rapidity ( PID::getMass ( 3 )) >= trkselOptions. cfgCutYMin && track.rapidity (PID::getMass (3 )) <= trkselOptions.cfgCutYMax ) {
17041706 tpcCount++;
17051707 if (track.sign () > 0 ) {
17061708 histos.fill (HIST (" nsigmatpc/test_occupancy/pos/ka" ), track.pt (), nsigmaTPCKa, multiplicity, occupancy);
17071709 } else {
17081710 histos.fill (HIST (" nsigmatpc/test_occupancy/neg/ka" ), track.pt (), nsigmaTPCKa, multiplicity, occupancy);
17091711 }
1710- } else if (isTPCProton && std::abs ( track.rapidity (PID::getMass (4 ))) < trkselOptions.cfgCutY ) {
1712+ } else if (isTPCProton && track. rapidity ( PID::getMass ( 4 )) >= trkselOptions. cfgCutYMin && track.rapidity (PID::getMass (4 )) <= trkselOptions.cfgCutYMax ) {
17111713 tpcCount++;
17121714 if (track.sign () > 0 ) {
17131715 histos.fill (HIST (" nsigmatpc/test_occupancy/pos/pr" ), track.pt (), nsigmaTPCPr, multiplicity, occupancy);
@@ -1717,21 +1719,21 @@ struct tofSpectra {
17171719 }
17181720
17191721 // TOF PID histograms
1720- if (isTOFPion && std::abs ( track.rapidity (PID::getMass (2 ))) < trkselOptions.cfgCutY ) {
1722+ if (isTOFPion && track. rapidity ( PID::getMass ( 2 )) >= trkselOptions. cfgCutYMin && track.rapidity (PID::getMass (2 )) <= trkselOptions.cfgCutYMax ) {
17211723 tofCount++;
17221724 if (track.sign () > 0 ) {
17231725 histos.fill (HIST (" nsigmatof/test_occupancy/pos/pi" ), track.pt (), nsigmaTOFPi, multiplicity, occupancy);
17241726 } else {
17251727 histos.fill (HIST (" nsigmatof/test_occupancy/neg/pi" ), track.pt (), nsigmaTOFPi, multiplicity, occupancy);
17261728 }
1727- } else if (isTOFKaon && std::abs ( track.rapidity (PID::getMass (3 ))) < trkselOptions.cfgCutY ) {
1729+ } else if (isTOFKaon && track. rapidity ( PID::getMass ( 3 )) >= trkselOptions. cfgCutYMin && track.rapidity (PID::getMass (3 )) <= trkselOptions.cfgCutYMax ) {
17281730 tofCount++;
17291731 if (track.sign () > 0 ) {
17301732 histos.fill (HIST (" nsigmatof/test_occupancy/pos/ka" ), track.pt (), nsigmaTOFKa, multiplicity, occupancy);
17311733 } else {
17321734 histos.fill (HIST (" nsigmatof/test_occupancy/neg/ka" ), track.pt (), nsigmaTOFKa, multiplicity, occupancy);
17331735 }
1734- } else if (isTOFProton && std::abs ( track.rapidity (PID::getMass (4 ))) < trkselOptions.cfgCutY ) {
1736+ } else if (isTOFProton && track. rapidity ( PID::getMass ( 4 )) >= trkselOptions. cfgCutYMin && track.rapidity (PID::getMass (4 )) <= trkselOptions.cfgCutYMax ) {
17351737 tofCount++;
17361738 if (track.sign () > 0 ) {
17371739 histos.fill (HIST (" nsigmatof/test_occupancy/pos/pr" ), track.pt (), nsigmaTOFPr, multiplicity, occupancy);
@@ -1975,7 +1977,7 @@ struct tofSpectra {
19751977 return ;
19761978 }
19771979
1978- if (std::abs ( mcParticle.y ()) > trkselOptions.cfgCutY ) {
1980+ if (mcParticle. y () < trkselOptions. cfgCutYMin || mcParticle.y () > trkselOptions.cfgCutYMax ) {
19791981 return ;
19801982 }
19811983 if (enablePureDCAHistogram) {
@@ -2624,7 +2626,7 @@ struct tofSpectra {
26242626 const float multiplicity = getMultiplicity (collision);
26252627 for (const auto & mcParticle : particlesInCollision) {
26262628
2627- if (std::abs ( mcParticle.y ()) > trkselOptions.cfgCutY ) {
2629+ if (mcParticle. y () < trkselOptions. cfgCutYMin || mcParticle.y () > trkselOptions.cfgCutYMax ) {
26282630 continue ;
26292631 }
26302632 static_for<0 , 17 >([&](auto i) {
@@ -2634,7 +2636,7 @@ struct tofSpectra {
26342636 }
26352637 } else {
26362638 for (const auto & mcParticle : mcParticles) {
2637- if (std::abs ( mcParticle.y ()) > trkselOptions.cfgCutY ) {
2639+ if (mcParticle. y () < trkselOptions. cfgCutYMin || mcParticle.y () > trkselOptions.cfgCutYMax ) {
26382640 continue ;
26392641 }
26402642
@@ -2668,7 +2670,7 @@ struct tofSpectra {
26682670 histos.fill (HIST (" MC/MultiplicityRecoEv" ), getMultiplicityMC (mcCollision));
26692671 }
26702672 for (const auto & mcParticle : particlesInCollision) {
2671- if (std::abs ( mcParticle.y ()) > trkselOptions.cfgCutY ) {
2673+ if (mcParticle. y () < trkselOptions. cfgCutYMin || mcParticle.y () > trkselOptions.cfgCutYMax ) {
26722674 continue ;
26732675 }
26742676 static_for<0 , 17 >([&](auto i) {
@@ -2699,7 +2701,7 @@ struct tofSpectra {
26992701 }
27002702 histos.fill (HIST (" MC/MultiplicityMCINELgt1" ), getMultiplicityMC (mcCollision));
27012703 for (const auto & mcParticle : particlesInCollision) {
2702- if (std::abs ( mcParticle.y ()) > trkselOptions.cfgCutY ) {
2704+ if (mcParticle. y () < trkselOptions. cfgCutYMin || mcParticle.y () > trkselOptions.cfgCutYMax ) {
27032705 continue ;
27042706 }
27052707 static_for<0 , 17 >([&](auto i) {
@@ -2729,8 +2731,8 @@ struct tofSpectra {
27292731 continue ;
27302732 int pdgCode = mcParticleGen.pdgCode ();
27312733 float pt = mcParticleGen.pt ();
2732- float absY = std::abs ( mcParticleGen.y () );
2733- if (absY > trkselOptions.cfgCutY ) {
2734+ float rapidity = mcParticleGen.y ();
2735+ if (rapidity < trkselOptions. cfgCutYMin || rapidity > trkselOptions.cfgCutYMax ) {
27342736 continue ;
27352737 }
27362738
@@ -2793,8 +2795,8 @@ struct tofSpectra {
27932795
27942796 int pdgCode = mcParticle.pdgCode ();
27952797 float pt = mcParticle.pt ();
2796- float absY = std::abs ( mcParticle.y () );
2797- if (absY > trkselOptions.cfgCutY ) {
2798+ float rapidity = mcParticle.y ();
2799+ if (rapidity < trkselOptions. cfgCutYMin || rapidity > trkselOptions.cfgCutYMax ) {
27982800 continue ;
27992801 }
28002802
@@ -2877,7 +2879,7 @@ struct tofSpectra {
28772879 // Precompute rapidity values to avoid redundant calculations
28782880 double rapiditypar = std::abs (track.rapidity (PID::getMass (par)));
28792881 // TPC Selection and histogram filling
2880- if (isTPCpar && rapiditypar <= trkselOptions.cfgCutY ) {
2882+ if (isTPCpar && rapiditypar >= trkselOptions. cfgCutYMin && rapiditypar <= trkselOptions.cfgCutYMax ) {
28812883 static_for<0 , NpCharge - 1 >([&](auto i) {
28822884 if (pdgCode == PDGs[i]) {
28832885 hMCPdgNsigmaTPC[par - 2 ][i]->Fill (track.pt (), nsigmaTPCpar, multiplicity);
0 commit comments