3636#include < Framework/AnalysisHelpers.h>
3737#include < Framework/AnalysisTask.h>
3838#include < Framework/Configurable.h>
39- #include < Framework/DataTypes.h>
4039#include < Framework/HistogramRegistry.h>
4140#include < Framework/HistogramSpec.h>
4241#include < Framework/InitContext.h>
@@ -81,7 +80,6 @@ using namespace o2::aod::rctsel;
8180auto static constexpr CminCharge = 3 .f;
8281auto static constexpr CintZero = 0 ;
8382auto static constexpr CintOne = 1 ;
84- auto static constexpr CfloatFive = 5 .f;
8583auto static constexpr CInvalid = -999 .f;
8684
8785enum class EvtSel {
@@ -257,7 +255,7 @@ struct DndetaMFTPbPb {
257255 ConfigurableAxis fv0aMultBins{" fv0aMultBins" , {501 , -0.5 , 500.5 }, " " };
258256 ConfigurableAxis ft0aMultBins{" ft0aMultBins" , {501 , -0.5 , 500.5 }, " " };
259257 ConfigurableAxis ft0cMultBins{" ft0cMultBins" , {501 , -0.5 , 500.5 }, " " };
260- ConfigurableAxis ptBins{" ptBins" , {101 , -0.5 , 10.5 }, " pT binning (GeV/c)" };
258+ ConfigurableAxis ptBins{" ptBins" , {11 , -0.5 , 10.5 }, " pT binning (GeV/c)" };
261259 ConfigurableAxis multBins{" multBins" , {1001 , -0.5 , 1000.5 }, " Multiplicity binning" };
262260 ConfigurableAxis zvtxBins{" zvtxBins" , {60 , -30 ., 30 .}, " Z-vtx binning (cm)" };
263261 ConfigurableAxis deltaZBins{" deltaZBins" , {800 , -10 ., 10 .}, " Delta Z-vtx binning (cm)" };
@@ -762,8 +760,6 @@ struct DndetaMFTPbPb {
762760 }
763761 }
764762
765- // / Filters - particles
766- Filter primaries = ifnode(nsqrt(aod::mcparticle::vx * aod::mcparticle::vx + aod::mcparticle::vy * aod::mcparticle::vy) > CfloatFive, false , ncheckbit(aod::mcparticle_v2::storedFlags, (uint8_t )o2::aod::mcparticle::enums::PhysicalPrimary));
767763 // / Joined tables
768764 using FullBCs = soa::Join<aod::BCsWithTimestamps, aod::BcSels>;
769765 using CollBCs = soa::Join<aod::BCsWithTimestamps, aod::BcSels, aod::Run3MatchedToBCSparse>;
@@ -781,7 +777,6 @@ struct DndetaMFTPbPb {
781777 using MftBestTracksLabeled = soa::Join<aod::MFTTracks, aod::BestCollisionsFwd3d, aod::McMFTTrackLabels>;
782778 // / Particles
783779 using ParticlesIdx = soa::Join<aod::McParticles, aod::ParticlesToMftTracks>;
784- using FiltParticlesIdx = soa::Filtered<ParticlesIdx>;
785780
786781 template <typename T>
787782 float getDCAz (const T& track)
@@ -2310,13 +2305,11 @@ struct DndetaMFTPbPb {
23102305
23112306 PROCESS_SWITCH (DndetaMFTPbPb, processMcEfficiencyBestCentFT0C, " Process tracking efficiency (in FT0 centrality bins, based on BestCollisionsFwd3d)" , false );
23122307
2313- // Partition<ParticlesIdx> primariesIdx = ifnode(nsqrt(aod::mcparticle::vx * aod::mcparticle::vx + aod::mcparticle::vy * aod::mcparticle::vy) > 5.f, false, ncheckbit(aod::mcparticle_v2::storedFlags, (uint8_t)o2::aod::mcparticle::enums::PhysicalPrimary)) && (aod::mcparticle::eta < trackCuts.maxEta) && (aod::mcparticle::eta > trackCuts.minEta);
2314-
23152308 // / @brief process template function to calculate tracking efficiency (indexed as particle-to-MFT-tracks)
23162309 template <typename MC , typename C>
23172310 void processEfficiencyIdx (typename MC ::iterator const & mcCollision,
23182311 soa::SmallGroups<soa::Join<C, aod::McCollisionLabels>> const & collisions,
2319- FiltParticlesIdx const & particles,
2312+ ParticlesIdx const & particles,
23202313 MftTracksLabeled const & /* tracks*/ )
23212314 {
23222315 LOGP (debug, " MC col {} has {} reco cols" , mcCollision.globalIndex (), collisions.size ());
@@ -2360,13 +2353,13 @@ struct DndetaMFTPbPb {
23602353 // MC gen
23612354 if constexpr (has_reco_cent<C>) {
23622355 if (particle.eta () > trackCuts.minEta && particle.eta () < trackCuts.maxEta ) {
2363- if (std::abs (mcCollision.posZ ()) < eventCuts.maxZvtx ) {
2356+ if (!eventCuts. useZVtxCutMC || std::abs (mcCollision.posZ ()) < eventCuts.maxZvtx ) {
23642357 registryMC.fill (HIST (" Tracks/Centrality/hEffIdxGen" ), particle.pt (), particle.eta (), static_cast <float >(GenIdxTrkType::kGenIdxAll ), cGen, occRec);
23652358 }
23662359 }
23672360 } else {
23682361 if (particle.eta () > trackCuts.minEta && particle.eta () < trackCuts.maxEta ) {
2369- if (std::abs (mcCollision.posZ ()) < eventCuts.maxZvtx ) {
2362+ if (!eventCuts. useZVtxCutMC || std::abs (mcCollision.posZ ()) < eventCuts.maxZvtx ) {
23702363 registryMC.fill (HIST (" Tracks/hEffIdxGen" ), particle.pt (), particle.eta (), static_cast <float >(GenIdxTrkType::kGenIdxAll ), occRec);
23712364 }
23722365 }
@@ -2387,7 +2380,7 @@ struct DndetaMFTPbPb {
23872380 if constexpr (has_reco_cent<C>) {
23882381 if (track.eta () > trackCuts.minEta && track.eta () < trackCuts.maxEta ) {
23892382 if (!iscounted) { // primaries
2390- if (std::abs (mcCollision.posZ ()) < eventCuts.maxZvtx ) {
2383+ if (!eventCuts. useZVtxCutMC || std::abs (mcCollision.posZ ()) < eventCuts.maxZvtx ) {
23912384 registryMC.fill (HIST (" Tracks/Centrality/hEffIdxRec" ), particle.pt (), particle.eta (), static_cast <float >(RecIdxTrkType::kRecIdxPrim ), getRecoCent (collision), getOccupancy (collision, eventCuts.occupancyEstimator ));
23922385 }
23932386 iscounted = true ;
@@ -2402,7 +2395,7 @@ struct DndetaMFTPbPb {
24022395 } else {
24032396 if (track.eta () > trackCuts.minEta && track.eta () < trackCuts.maxEta ) {
24042397 if (!iscounted) { // primaries
2405- if (std::abs (mcCollision.posZ ()) < eventCuts.maxZvtx ) {
2398+ if (!eventCuts. useZVtxCutMC || std::abs (mcCollision.posZ ()) < eventCuts.maxZvtx ) {
24062399 registryMC.fill (HIST (" Tracks/hEffIdxRec" ), particle.pt (), particle.eta (), static_cast <float >(RecIdxTrkType::kRecIdxPrim ), occRec);
24072400 }
24082401 iscounted = true ;
@@ -2433,13 +2426,13 @@ struct DndetaMFTPbPb {
24332426 // MC FAKES
24342427 if constexpr (has_reco_cent<C>) {
24352428 if (particle.eta () > trackCuts.minEta && particle.eta () < trackCuts.maxEta ) {
2436- if (std::abs (mcCollision.posZ ()) < eventCuts.maxZvtx ) {
2429+ if (!eventCuts. useZVtxCutMC || std::abs (mcCollision.posZ ()) < eventCuts.maxZvtx ) {
24372430 registryMC.fill (HIST (" Tracks/Centrality/hEffIdxGen" ), particle.pt (), particle.eta (), static_cast <float >(GenIdxTrkType::kGenIdxFake ), cGen, occRec);
24382431 }
24392432 }
24402433 } else {
24412434 if (particle.eta () > trackCuts.minEta && particle.eta () < trackCuts.maxEta ) {
2442- if (std::abs (mcCollision.posZ ()) < eventCuts.maxZvtx ) {
2435+ if (!eventCuts. useZVtxCutMC || std::abs (mcCollision.posZ ()) < eventCuts.maxZvtx ) {
24432436 registryMC.fill (HIST (" Tracks/hEffIdxGen" ), particle.pt (), particle.eta (), static_cast <float >(GenIdxTrkType::kGenIdxFake ), occRec);
24442437 }
24452438 }
@@ -2451,7 +2444,7 @@ struct DndetaMFTPbPb {
24512444
24522445 void processMcEfficiencyIdxInlusive (CollsMCExtraMult::iterator const & mccollision,
24532446 soa::SmallGroups<soa::Join<Colls, aod::McCollisionLabels>> const & collisions,
2454- FiltParticlesIdx const & particles,
2447+ ParticlesIdx const & particles,
24552448 MftTracksLabeled const & tracks)
24562449 {
24572450 processEfficiencyIdx<CollsMCExtraMult, Colls>(mccollision, collisions, particles, tracks);
@@ -2461,7 +2454,7 @@ struct DndetaMFTPbPb {
24612454
24622455 void processMcEfficiencyIdxCentFT0C (CollsMCExtraMult::iterator const & mccollision,
24632456 soa::SmallGroups<soa::Join<CollsCentFT0C, aod::McCollisionLabels>> const & collisions,
2464- FiltParticlesIdx const & particles,
2457+ ParticlesIdx const & particles,
24652458 MftTracksLabeled const & tracks)
24662459 {
24672460 processEfficiencyIdx<CollsMCExtraMult, CollsCentFT0C>(mccollision, collisions, particles, tracks);
@@ -2472,7 +2465,7 @@ struct DndetaMFTPbPb {
24722465 template <typename MC , typename C>
24732466 void processEfficiencyIdxBest (typename MC ::iterator const & mcCollision,
24742467 soa::SmallGroups<soa::Join<C, aod::McCollisionLabels>> const & collisions,
2475- FiltParticlesIdx const & particles,
2468+ ParticlesIdx const & particles,
24762469 MftBestTracksLabeled const & /* atracks*/ )
24772470 {
24782471 LOGP (debug, " MC col {} has {} reco cols" , mcCollision.globalIndex (), collisions.size ());
@@ -2519,13 +2512,13 @@ struct DndetaMFTPbPb {
25192512 // MC gen
25202513 if constexpr (has_reco_cent<C>) {
25212514 if (particle.eta () > trackCuts.minEta && particle.eta () < trackCuts.maxEta ) {
2522- if (std::abs (mcCollision.posZ ()) < eventCuts.maxZvtx ) {
2515+ if (!eventCuts. useZVtxCutMC || std::abs (mcCollision.posZ ()) < eventCuts.maxZvtx ) {
25232516 registryMC.fill (HIST (" Tracks/Centrality/hEffIdxGen" ), particle.pt (), particle.eta (), static_cast <float >(GenIdxTrkType::kGenIdxAll ), cGen, occRec);
25242517 }
25252518 }
25262519 } else {
25272520 if (particle.eta () > trackCuts.minEta && particle.eta () < trackCuts.maxEta ) {
2528- if (std::abs (mcCollision.posZ ()) < eventCuts.maxZvtx ) {
2521+ if (!eventCuts. useZVtxCutMC || std::abs (mcCollision.posZ ()) < eventCuts.maxZvtx ) {
25292522 registryMC.fill (HIST (" Tracks/hEffIdxGen" ), particle.pt (), particle.eta (), static_cast <float >(GenIdxTrkType::kGenIdxAll ), occRec);
25302523 }
25312524 }
@@ -2554,7 +2547,7 @@ struct DndetaMFTPbPb {
25542547 if constexpr (has_reco_cent<C>) {
25552548 if (atrack.eta () > trackCuts.minEta && atrack.eta () < trackCuts.maxEta ) {
25562549 if (!iscounted) { // primaries
2557- if (std::abs (mcCollision.posZ ()) < eventCuts.maxZvtx ) {
2550+ if (!eventCuts. useZVtxCutMC || std::abs (mcCollision.posZ ()) < eventCuts.maxZvtx ) {
25582551 registryMC.fill (HIST (" Tracks/Centrality/hEffIdxRec" ), particle.pt (), particle.eta (), static_cast <float >(RecIdxTrkType::kRecIdxPrim ), getRecoCent (collision), getOccupancy (collision, eventCuts.occupancyEstimator ));
25592552 }
25602553 iscounted = true ;
@@ -2569,7 +2562,7 @@ struct DndetaMFTPbPb {
25692562 } else {
25702563 if (atrack.eta () > trackCuts.minEta && atrack.eta () < trackCuts.maxEta ) {
25712564 if (!iscounted) { // primaries
2572- if (std::abs (mcCollision.posZ ()) < eventCuts.maxZvtx ) {
2565+ if (!eventCuts. useZVtxCutMC || std::abs (mcCollision.posZ ()) < eventCuts.maxZvtx ) {
25732566 registryMC.fill (HIST (" Tracks/hEffIdxRec" ), particle.pt (), particle.eta (), static_cast <float >(RecIdxTrkType::kRecIdxPrim ), occRec);
25742567 }
25752568 iscounted = true ;
@@ -2600,13 +2593,13 @@ struct DndetaMFTPbPb {
26002593 // MC FAKES
26012594 if constexpr (has_reco_cent<C>) {
26022595 if (particle.eta () > trackCuts.minEta && particle.eta () < trackCuts.maxEta ) {
2603- if (std::abs (mcCollision.posZ ()) < eventCuts.maxZvtx ) {
2596+ if (!eventCuts. useZVtxCutMC || std::abs (mcCollision.posZ ()) < eventCuts.maxZvtx ) {
26042597 registryMC.fill (HIST (" Tracks/Centrality/hEffIdxGen" ), particle.pt (), particle.eta (), static_cast <float >(GenIdxTrkType::kGenIdxFake ), cGen, occRec);
26052598 }
26062599 }
26072600 } else {
26082601 if (particle.eta () > trackCuts.minEta && particle.eta () < trackCuts.maxEta ) {
2609- if (std::abs (mcCollision.posZ ()) < eventCuts.maxZvtx ) {
2602+ if (!eventCuts. useZVtxCutMC || std::abs (mcCollision.posZ ()) < eventCuts.maxZvtx ) {
26102603 registryMC.fill (HIST (" Tracks/hEffIdxGen" ), particle.pt (), particle.eta (), static_cast <float >(GenIdxTrkType::kGenIdxFake ), occRec);
26112604 }
26122605 }
@@ -2618,7 +2611,7 @@ struct DndetaMFTPbPb {
26182611
26192612 void processMcEfficiencyIdxBestInlusive (CollsMCExtraMult::iterator const & mccollision,
26202613 soa::SmallGroups<soa::Join<Colls, aod::McCollisionLabels>> const & collisions,
2621- FiltParticlesIdx const & particles,
2614+ ParticlesIdx const & particles,
26222615 MftBestTracksLabeled const & atracks)
26232616 {
26242617 processEfficiencyIdxBest<CollsMCExtraMult, Colls>(mccollision, collisions, particles, atracks);
@@ -2628,7 +2621,7 @@ struct DndetaMFTPbPb {
26282621
26292622 void processMcEfficiencyIdxBestCentFT0C (CollsMCExtraMult::iterator const & mccollision,
26302623 soa::SmallGroups<soa::Join<CollsCentFT0C, aod::McCollisionLabels>> const & collisions,
2631- FiltParticlesIdx const & particles,
2624+ ParticlesIdx const & particles,
26322625 MftBestTracksLabeled const & atracks)
26332626 {
26342627 processEfficiencyIdxBest<CollsMCExtraMult, CollsCentFT0C>(mccollision, collisions, particles, atracks);
0 commit comments