From c47b448bd32d94bfd52be8dae5f59ba8d1f770d1 Mon Sep 17 00:00:00 2001 From: sweyh99 Date: Fri, 20 Dec 2024 21:41:56 +0100 Subject: [PATCH 1/2] [WIP] JE Hybrid Track Cuts Run 2 --- Common/Core/TrackSelection.cxx | 5 +++++ Common/Core/TrackSelection.h | 10 +++++++++ Common/Core/TrackSelectionDefaults.cxx | 6 ++++-- Common/Tools/trackSelectionRequest.cxx | 14 +++++++++++- Common/Tools/trackSelectionRequest.h | 7 ++++++ PWGJE/Core/JetDerivedDataUtilities.h | 9 +++++++- PWGJE/TableProducer/derivedDataProducer.cxx | 24 +++++++++++++++++++++ 7 files changed, 71 insertions(+), 4 deletions(-) diff --git a/Common/Core/TrackSelection.cxx b/Common/Core/TrackSelection.cxx index 4cc355b57ce..bb20ff103e8 100644 --- a/Common/Core/TrackSelection.cxx +++ b/Common/Core/TrackSelection.cxx @@ -79,6 +79,11 @@ void TrackSelection::SetMinNCrossedRowsOverFindableClustersTPC(float minNCrossed mMinNCrossedRowsOverFindableClustersTPC = minNCrossedRowsOverFindableClustersTPC; LOG(info) << "Track selection, set min N crossed rows over findable clusters TPC: " << mMinNCrossedRowsOverFindableClustersTPC; } +/*void TrackSelection::SetMaxTPCFractionSharedCls(float maxTPCFractionSharedCls) +{ + mMaxTPCFractionSharedCls = maxTPCFractionSharedCls; + LOG(info) << "Track selection, set max fraction of shared clusters TPC: " << mMinNCrossedRowsOverFindableClustersTPC; +}*/ //CHANGE void TrackSelection::SetMinNClustersITS(int minNClustersITS) { mMinNClustersITS = minNClustersITS; diff --git a/Common/Core/TrackSelection.h b/Common/Core/TrackSelection.h index 351b662c48d..79a5cb2543a 100644 --- a/Common/Core/TrackSelection.h +++ b/Common/Core/TrackSelection.h @@ -45,6 +45,7 @@ class TrackSelection kGoldenChi2, kDCAxy, kDCAz, + //kTPCFracSharedCls, //CHANGE kNCuts }; @@ -114,6 +115,9 @@ class TrackSelection if (!IsSelected(track, TrackCuts::kDCAz)) { return false; } + /*if (!IsSelected(track, TrackCuts::kTPCFracSharedCls)) { + return false; //CHANGE + }*/ return true; } @@ -144,6 +148,7 @@ class TrackSelection setFlag(TrackCuts::kGoldenChi2); setFlag(TrackCuts::kDCAxy); setFlag(TrackCuts::kDCAz); + //setFlag(TrackCuts::kTPCFracSharedCls); //CHANGE return flag; } @@ -199,6 +204,8 @@ class TrackSelection case TrackCuts::kDCAz: return std::fabs(track.dcaZ()) <= mMaxDcaZ; + /*case TrackCuts::kTPCFracSharedCls: + return track.tpcFractionSharedCls() <= mMaxTPCFractionSharedCls; //CHANGE*/ default: return false; @@ -225,6 +232,7 @@ class TrackSelection void SetRequireNoHitsInITSLayers(std::set excludedLayers); /// @brief Reset ITS requirements void ResetITSRequirements() { mRequiredITSHits.clear(); } + //void SetMaxTPCFractionSharedCls(float maxTPCFractionSharedCls); //CHANGE /// @brief Print the track selection void print() const; @@ -250,6 +258,8 @@ class TrackSelection float mMaxDcaZ{1e10f}; // max dca in z direction std::function mMaxDcaXYPtDep{}; // max dca in xy plane as function of pT + //float mMaxTPCFractionSharedCls{1e10f}; // max fraction of shared TPC clusters //CHANGE + bool mRequireITSRefit{false}; // require refit in ITS bool mRequireTPCRefit{false}; // require refit in TPC bool mRequireGoldenChi2{false}; // require golden chi2 cut (Run 2 only) diff --git a/Common/Core/TrackSelectionDefaults.cxx b/Common/Core/TrackSelectionDefaults.cxx index 1974b7df38f..76e77408548 100644 --- a/Common/Core/TrackSelectionDefaults.cxx +++ b/Common/Core/TrackSelectionDefaults.cxx @@ -121,11 +121,13 @@ TrackSelection getGlobalTrackSelectionRun3HF() TrackSelection getJEGlobalTrackSelectionRun2() { TrackSelection selectedTracks = getGlobalTrackSelection(); - selectedTracks.SetPtRange(0.15f, 1e15f); - selectedTracks.SetRequireGoldenChi2(false); + selectedTracks.SetPtRange(0.15f, 1000.f); selectedTracks.SetMaxDcaXYPtDep([](float /*pt*/) { return 1e+10; }); selectedTracks.SetEtaRange(-0.9f, 0.9f); selectedTracks.SetMaxDcaXY(2.4f); selectedTracks.SetMaxDcaZ(3.2f); + selectedTracks.SetRequireHitsInITSLayers(0, {0, 1}); // no minimum required number of hits in any SPD layer + //selectedTracks.SetMaxTPCFractionSharedCls(0.4f); //CHANGE this cut isn't functional yet + return selectedTracks; } diff --git a/Common/Tools/trackSelectionRequest.cxx b/Common/Tools/trackSelectionRequest.cxx index 088eafab508..e7c8e60f6fa 100644 --- a/Common/Tools/trackSelectionRequest.cxx +++ b/Common/Tools/trackSelectionRequest.cxx @@ -108,6 +108,14 @@ int trackSelectionRequest::getMinTPCCrossedRowsOverFindable() const { return minTPCcrossedrowsoverfindable; } +/*void trackSelectionRequest::setMaxTPCFractionSharedCls(float maxTPCFractionSharedCls_) +{ + maxTPCFractionSharedCls = maxTPCFractionSharedCls_; +} +int trackSelectionRequest::getMaxTPCFractionSharedCls() const +{ + return maxTPCFractionSharedCls; +}*/ //CHANGE void trackSelectionRequest::setRequireITS(bool requireITS_) { requireITS = requireITS_; @@ -159,6 +167,8 @@ void trackSelectionRequest::CombineWithLogicalOR(trackSelectionRequest const& lT minTPCcrossedrows = lTraSelRe.getMinTPCCrossedRows(); if (lTraSelRe.getMinTPCCrossedRowsOverFindable() < minTPCcrossedrowsoverfindable) minTPCcrossedrowsoverfindable = lTraSelRe.getMinTPCCrossedRowsOverFindable(); + /*if (lTraSelRe.getMaxTPCFractionSharedCls() > maxTPCFractionSharedCls) + maxTPCFractionSharedCls = lTraSelRe.getMaxTPCFractionSharedCls();*/ //CHANGE if (lTraSelRe.getRequireITS() == false) requireITS = false; @@ -205,7 +215,9 @@ void trackSelectionRequest::PrintSelections() const LOGF(info, "Minimum TPC clusters ...................: %i", minTPCclusters); LOGF(info, "Minimum TPC crossed rows ...............: %i", minTPCcrossedrows); LOGF(info, "Minimum TPC crossed rows over findable .: %.3f", minTPCcrossedrowsoverfindable); + //LOGF(info, "Max Fraction of TPC Shared Clusters ....: %.3f", maxTPCFractionSharedCls); //CHANGE + LOGF(info, "Require ITS ............................: %i", requireITS); LOGF(info, "Minimum ITS clusters ...................: %i", minITSclusters); LOGF(info, "Max ITS chi2/clu ......................: %.3f", maxITSChi2percluster); -} \ No newline at end of file +} diff --git a/Common/Tools/trackSelectionRequest.h b/Common/Tools/trackSelectionRequest.h index 00931491acf..454d18f208d 100644 --- a/Common/Tools/trackSelectionRequest.h +++ b/Common/Tools/trackSelectionRequest.h @@ -60,6 +60,8 @@ class trackSelectionRequest int getMinTPCCrossedRows() const; void setMinTPCCrossedRowsOverFindable(float minTPCCrossedRowsOverFindable_); int getMinTPCCrossedRowsOverFindable() const; + /*void setMaxTPCFractionSharedCls(float maxTPCFractionSharedCls_); + int getMaxTPCFractionSharedCls() const;*/ //CHANGE void setRequireITS(bool requireITS_); bool getRequireITS() const; @@ -97,6 +99,8 @@ class trackSelectionRequest return false; if (lTrack.tpcCrossedRowsOverFindableCls() < minTPCcrossedrowsoverfindable) return false; + /*if (lTrack.tpcFractionSharedCls() > maxTPCFractionSharedCls) + return false;*/ //CHANGE if (lTrack.hasITS() == false && requireITS) return false; if (lTrack.itsNCls() < minITSclusters) @@ -117,6 +121,8 @@ class trackSelectionRequest return false; if (lTrack.tpcCrossedRowsOverFindableCls() < minTPCcrossedrowsoverfindable) return false; + /*if (lTrack.tpcFractionSharedCls() > maxTPCFractionSharedCls) + return false;*/ //CHANGE if (lTrack.hasITS() == false && requireITS) return false; if (lTrack.itsNCls() < minITSclusters) @@ -146,6 +152,7 @@ class trackSelectionRequest int minTPCclusters; int minTPCcrossedrows; float minTPCcrossedrowsoverfindable; + //float maxTPCFractionSharedCls; //CHANGE // ITS parameters (TracksExtra) bool requireITS; // in Run 3, equiv to hasITS int minITSclusters; diff --git a/PWGJE/Core/JetDerivedDataUtilities.h b/PWGJE/Core/JetDerivedDataUtilities.h index 435a362e0db..3cd920fdab2 100644 --- a/PWGJE/Core/JetDerivedDataUtilities.h +++ b/PWGJE/Core/JetDerivedDataUtilities.h @@ -497,7 +497,8 @@ enum JTrackSel { globalTrack = 1, qualityTrack = 2, qualityTrackWDCA = 3, - hybridTrack = 4 + hybridTrack = 4, + hybridTrackRun2 = 5 }; template @@ -528,6 +529,8 @@ int initialiseTrackSelection(std::string trackSelection) return JTrackSel::qualityTrackWDCA; } else if (trackSelection == "hybridTracks") { return JTrackSel::hybridTrack; + } else if (trackSelection == "hybridTracksRun2") { + return JTrackSel::hybridTrackRun2; } return -1; } @@ -553,6 +556,10 @@ uint8_t setTrackSelectionBit(T const& track, float trackDCAZ, float maxDCAZ) if (track.trackCutFlagFb5()) { SETBIT(bit, JTrackSel::hybridTrack); } + if (track.trackCutFlagFb5()) { //Change get FB6 to work + SETBIT(bit, JTrackSel::hybridTrackRun2); + LOG(info) << "In JetDerivedDataUtilities setTrackSelectionBit: The bit was set to HYBRID_RUN2"; + } //CHANGE return bit; } diff --git a/PWGJE/TableProducer/derivedDataProducer.cxx b/PWGJE/TableProducer/derivedDataProducer.cxx index 0167ceeed5b..97c231ccb70 100644 --- a/PWGJE/TableProducer/derivedDataProducer.cxx +++ b/PWGJE/TableProducer/derivedDataProducer.cxx @@ -230,6 +230,30 @@ struct JetDerivedDataProducerTask { } PROCESS_SWITCH(JetDerivedDataProducerTask, processMcCollisions, "produces derived MC collision table", false); +//CHANGE + void processTracksRun2(soa::Join::iterator const& track, aod::Collisions const&) //aod::TracksDCACov, + { + jTracksTable(track.collisionId(), track.pt(), track.eta(), track.phi(), jetderiveddatautilities::setTrackSelectionBit(track, track.dcaZ(), dcaZMax)); + //auto trackParCov = getTrackParCov(track); + //auto xyzTrack = trackParCov.getXYZGlo(); + float sigmaDCAXYZ2; + float dcaXYZ = getDcaXYZ(track, &sigmaDCAXYZ2); //maybe need to remove this too + float dcaX = -99.0; + float dcaY = -99.0; + if (track.collisionId() >= 0) { + auto const& collision = track.collision_as(); + //dcaX = xyzTrack.X() - collision.posX(); + //dcaY = xyzTrack.Y() - collision.posY(); + } + + //jTracksExtraTable(dcaX, dcaY, track.dcaZ(), track.dcaXY(), dcaXYZ, std::sqrt(track.sigmaDcaZ2()), std::sqrt(track.sigmaDcaXY2()), std::sqrt(sigmaDCAXYZ2), track.sigma1Pt()); // why is this getSigmaZY + jTracksExtraTable(dcaX, dcaY, track.dcaZ(), track.dcaXY(), dcaXYZ, std::sqrt(1.), std::sqrt(1.), std::sqrt(sigmaDCAXYZ2), track.sigma1Pt()); //dummy values - consider improving + + jTracksParentIndexTable(track.globalIndex()); + trackCollisionMapping[{track.globalIndex(), track.collisionId()}] = jTracksTable.lastIndex(); + } + PROCESS_SWITCH(JetDerivedDataProducerTask, processTracksRun2, "produces derived track table for Run2 AO2Ds", true); + void processTracks(soa::Join::iterator const& track, aod::Collisions const&) { jTracksTable(track.collisionId(), track.pt(), track.eta(), track.phi(), jetderiveddatautilities::setTrackSelectionBit(track, track.dcaZ(), dcaZMax)); From 26a4d23eee424687fce11527c7eb95bb9ab3d821 Mon Sep 17 00:00:00 2001 From: sweyh99 Date: Sat, 1 Feb 2025 11:40:02 +0100 Subject: [PATCH 2/2] [PWGJE] hybrid track cuts for Run2 converted data --- Common/Core/TrackSelection.cxx | 11 +- Common/Core/TrackSelection.h | 18 +- Common/Core/TrackSelectionDefaults.cxx | 19 +- Common/Tools/trackSelectionRequest.cxx | 10 +- Common/Tools/trackSelectionRequest.h | 14 +- PWGJE/Core/JetDerivedDataUtilities.h | 5 +- PWGJE/TableProducer/derivedDataProducer.cxx | 265 ++++++++++---------- 7 files changed, 179 insertions(+), 163 deletions(-) diff --git a/Common/Core/TrackSelection.cxx b/Common/Core/TrackSelection.cxx index bb20ff103e8..717d7db77f5 100644 --- a/Common/Core/TrackSelection.cxx +++ b/Common/Core/TrackSelection.cxx @@ -30,7 +30,7 @@ bool TrackSelection::FulfillsITSHitRequirements(uint8_t itsClusterMap) const return true; } -const std::string TrackSelection::mCutNames[static_cast(TrackSelection::TrackCuts::kNCuts)] = {"TrackType", "PtRange", "EtaRange", "TPCNCls", "TPCCrossedRows", "TPCCrossedRowsOverNCls", "TPCChi2NDF", "TPCRefit", "ITSNCls", "ITSChi2NDF", "ITSRefit", "ITSHits", "GoldenChi2", "DCAxy", "DCAz"}; +const std::string TrackSelection::mCutNames[static_cast(TrackSelection::TrackCuts::kNCuts)] = {"TrackType", "PtRange", "EtaRange", "TPCNCls", "TPCCrossedRows", "TPCCrossedRowsOverNCls", "TPCChi2NDF", "TPCRefit", "ITSNCls", "ITSChi2NDF", "ITSRefit", "ITSHits", "GoldenChi2", "DCAxy", "DCAz", "TPCFracSharedCls"}; void TrackSelection::SetTrackType(o2::aod::track::TrackTypeEnum trackType) { @@ -79,11 +79,11 @@ void TrackSelection::SetMinNCrossedRowsOverFindableClustersTPC(float minNCrossed mMinNCrossedRowsOverFindableClustersTPC = minNCrossedRowsOverFindableClustersTPC; LOG(info) << "Track selection, set min N crossed rows over findable clusters TPC: " << mMinNCrossedRowsOverFindableClustersTPC; } -/*void TrackSelection::SetMaxTPCFractionSharedCls(float maxTPCFractionSharedCls) +void TrackSelection::SetMaxTPCFractionSharedCls(float maxTPCFractionSharedCls) { mMaxTPCFractionSharedCls = maxTPCFractionSharedCls; - LOG(info) << "Track selection, set max fraction of shared clusters TPC: " << mMinNCrossedRowsOverFindableClustersTPC; -}*/ //CHANGE + LOG(info) << "Track selection, set max fraction of shared clusters TPC: " << mMaxTPCFractionSharedCls; +} void TrackSelection::SetMinNClustersITS(int minNClustersITS) { mMinNClustersITS = minNClustersITS; @@ -180,6 +180,9 @@ void TrackSelection::print() const case TrackCuts::kDCAz: LOG(info) << mCutNames[i] << " < " << mMaxDcaZ; break; + case TrackCuts::kTPCFracSharedCls: + LOG(info) << mCutNames[i] << " < " << mMaxTPCFractionSharedCls; + break; default: LOG(fatal) << "Cut unknown!"; } diff --git a/Common/Core/TrackSelection.h b/Common/Core/TrackSelection.h index 79a5cb2543a..4f15258dce9 100644 --- a/Common/Core/TrackSelection.h +++ b/Common/Core/TrackSelection.h @@ -45,7 +45,7 @@ class TrackSelection kGoldenChi2, kDCAxy, kDCAz, - //kTPCFracSharedCls, //CHANGE + kTPCFracSharedCls, kNCuts }; @@ -115,9 +115,9 @@ class TrackSelection if (!IsSelected(track, TrackCuts::kDCAz)) { return false; } - /*if (!IsSelected(track, TrackCuts::kTPCFracSharedCls)) { - return false; //CHANGE - }*/ + if (!IsSelected(track, TrackCuts::kTPCFracSharedCls)) { + return false; + } return true; } @@ -148,7 +148,7 @@ class TrackSelection setFlag(TrackCuts::kGoldenChi2); setFlag(TrackCuts::kDCAxy); setFlag(TrackCuts::kDCAz); - //setFlag(TrackCuts::kTPCFracSharedCls); //CHANGE + setFlag(TrackCuts::kTPCFracSharedCls); return flag; } @@ -204,8 +204,8 @@ class TrackSelection case TrackCuts::kDCAz: return std::fabs(track.dcaZ()) <= mMaxDcaZ; - /*case TrackCuts::kTPCFracSharedCls: - return track.tpcFractionSharedCls() <= mMaxTPCFractionSharedCls; //CHANGE*/ + case TrackCuts::kTPCFracSharedCls: + return track.tpcFractionSharedCls() <= mMaxTPCFractionSharedCls; default: return false; @@ -232,7 +232,7 @@ class TrackSelection void SetRequireNoHitsInITSLayers(std::set excludedLayers); /// @brief Reset ITS requirements void ResetITSRequirements() { mRequiredITSHits.clear(); } - //void SetMaxTPCFractionSharedCls(float maxTPCFractionSharedCls); //CHANGE + void SetMaxTPCFractionSharedCls(float maxTPCFractionSharedCls); /// @brief Print the track selection void print() const; @@ -258,7 +258,7 @@ class TrackSelection float mMaxDcaZ{1e10f}; // max dca in z direction std::function mMaxDcaXYPtDep{}; // max dca in xy plane as function of pT - //float mMaxTPCFractionSharedCls{1e10f}; // max fraction of shared TPC clusters //CHANGE + float mMaxTPCFractionSharedCls{1e10f}; // max fraction of shared TPC clusters bool mRequireITSRefit{false}; // require refit in ITS bool mRequireTPCRefit{false}; // require refit in TPC diff --git a/Common/Core/TrackSelectionDefaults.cxx b/Common/Core/TrackSelectionDefaults.cxx index 76e77408548..591c8162bdc 100644 --- a/Common/Core/TrackSelectionDefaults.cxx +++ b/Common/Core/TrackSelectionDefaults.cxx @@ -120,14 +120,27 @@ TrackSelection getGlobalTrackSelectionRun3HF() // Reduced default track selection for jet validation based on hybrid cuts for converted (based on ESD's from run 2) A02D's TrackSelection getJEGlobalTrackSelectionRun2() { - TrackSelection selectedTracks = getGlobalTrackSelection(); + TrackSelection selectedTracks; + + //These track selections are the same as the global track selections as of Jan 2025. Implemented seperately to prevent future + //global track selection changes from affecting the Run 2 hybrid track selections. + selectedTracks.SetTrackType(o2::aod::track::Run2Track); // Run 2 track asked by default + selectedTracks.SetRequireITSRefit(true); + selectedTracks.SetRequireTPCRefit(true); + selectedTracks.SetRequireGoldenChi2(true); + selectedTracks.SetMinNCrossedRowsTPC(70); + selectedTracks.SetMinNCrossedRowsOverFindableClustersTPC(0.8f); + selectedTracks.SetMaxChi2PerClusterTPC(4.f); + selectedTracks.SetMaxChi2PerClusterITS(36.f); + + //These track selections are different to the global track selections as of Jan 2025. selectedTracks.SetPtRange(0.15f, 1000.f); - selectedTracks.SetMaxDcaXYPtDep([](float /*pt*/) { return 1e+10; }); selectedTracks.SetEtaRange(-0.9f, 0.9f); + selectedTracks.SetMaxDcaXYPtDep([](float /*pt*/) { return 1e+10; }); selectedTracks.SetMaxDcaXY(2.4f); selectedTracks.SetMaxDcaZ(3.2f); selectedTracks.SetRequireHitsInITSLayers(0, {0, 1}); // no minimum required number of hits in any SPD layer - //selectedTracks.SetMaxTPCFractionSharedCls(0.4f); //CHANGE this cut isn't functional yet + selectedTracks.SetMaxTPCFractionSharedCls(0.4f); //This cut machinery was added since it's used in hybrid tracks Run 2 return selectedTracks; } diff --git a/Common/Tools/trackSelectionRequest.cxx b/Common/Tools/trackSelectionRequest.cxx index e7c8e60f6fa..ed82f1ff7bf 100644 --- a/Common/Tools/trackSelectionRequest.cxx +++ b/Common/Tools/trackSelectionRequest.cxx @@ -108,14 +108,14 @@ int trackSelectionRequest::getMinTPCCrossedRowsOverFindable() const { return minTPCcrossedrowsoverfindable; } -/*void trackSelectionRequest::setMaxTPCFractionSharedCls(float maxTPCFractionSharedCls_) +void trackSelectionRequest::setMaxTPCFractionSharedCls(float maxTPCFractionSharedCls_) { maxTPCFractionSharedCls = maxTPCFractionSharedCls_; } int trackSelectionRequest::getMaxTPCFractionSharedCls() const { return maxTPCFractionSharedCls; -}*/ //CHANGE +} void trackSelectionRequest::setRequireITS(bool requireITS_) { requireITS = requireITS_; @@ -167,8 +167,8 @@ void trackSelectionRequest::CombineWithLogicalOR(trackSelectionRequest const& lT minTPCcrossedrows = lTraSelRe.getMinTPCCrossedRows(); if (lTraSelRe.getMinTPCCrossedRowsOverFindable() < minTPCcrossedrowsoverfindable) minTPCcrossedrowsoverfindable = lTraSelRe.getMinTPCCrossedRowsOverFindable(); - /*if (lTraSelRe.getMaxTPCFractionSharedCls() > maxTPCFractionSharedCls) - maxTPCFractionSharedCls = lTraSelRe.getMaxTPCFractionSharedCls();*/ //CHANGE + if (lTraSelRe.getMaxTPCFractionSharedCls() > maxTPCFractionSharedCls) + maxTPCFractionSharedCls = lTraSelRe.getMaxTPCFractionSharedCls(); if (lTraSelRe.getRequireITS() == false) requireITS = false; @@ -215,7 +215,7 @@ void trackSelectionRequest::PrintSelections() const LOGF(info, "Minimum TPC clusters ...................: %i", minTPCclusters); LOGF(info, "Minimum TPC crossed rows ...............: %i", minTPCcrossedrows); LOGF(info, "Minimum TPC crossed rows over findable .: %.3f", minTPCcrossedrowsoverfindable); - //LOGF(info, "Max Fraction of TPC Shared Clusters ....: %.3f", maxTPCFractionSharedCls); //CHANGE + LOGF(info, "Max Fraction of TPC Shared Clusters ....: %.3f", maxTPCFractionSharedCls); LOGF(info, "Require ITS ............................: %i", requireITS); LOGF(info, "Minimum ITS clusters ...................: %i", minITSclusters); diff --git a/Common/Tools/trackSelectionRequest.h b/Common/Tools/trackSelectionRequest.h index 454d18f208d..123392611f0 100644 --- a/Common/Tools/trackSelectionRequest.h +++ b/Common/Tools/trackSelectionRequest.h @@ -60,8 +60,8 @@ class trackSelectionRequest int getMinTPCCrossedRows() const; void setMinTPCCrossedRowsOverFindable(float minTPCCrossedRowsOverFindable_); int getMinTPCCrossedRowsOverFindable() const; - /*void setMaxTPCFractionSharedCls(float maxTPCFractionSharedCls_); - int getMaxTPCFractionSharedCls() const;*/ //CHANGE + void setMaxTPCFractionSharedCls(float maxTPCFractionSharedCls_); + int getMaxTPCFractionSharedCls() const; void setRequireITS(bool requireITS_); bool getRequireITS() const; @@ -99,8 +99,8 @@ class trackSelectionRequest return false; if (lTrack.tpcCrossedRowsOverFindableCls() < minTPCcrossedrowsoverfindable) return false; - /*if (lTrack.tpcFractionSharedCls() > maxTPCFractionSharedCls) - return false;*/ //CHANGE + if (lTrack.tpcFractionSharedCls() > maxTPCFractionSharedCls) + return false; if (lTrack.hasITS() == false && requireITS) return false; if (lTrack.itsNCls() < minITSclusters) @@ -121,8 +121,8 @@ class trackSelectionRequest return false; if (lTrack.tpcCrossedRowsOverFindableCls() < minTPCcrossedrowsoverfindable) return false; - /*if (lTrack.tpcFractionSharedCls() > maxTPCFractionSharedCls) - return false;*/ //CHANGE + if (lTrack.tpcFractionSharedCls() > maxTPCFractionSharedCls) + return false; if (lTrack.hasITS() == false && requireITS) return false; if (lTrack.itsNCls() < minITSclusters) @@ -152,7 +152,7 @@ class trackSelectionRequest int minTPCclusters; int minTPCcrossedrows; float minTPCcrossedrowsoverfindable; - //float maxTPCFractionSharedCls; //CHANGE + float maxTPCFractionSharedCls; // ITS parameters (TracksExtra) bool requireITS; // in Run 3, equiv to hasITS int minITSclusters; diff --git a/PWGJE/Core/JetDerivedDataUtilities.h b/PWGJE/Core/JetDerivedDataUtilities.h index 11b85b89e4a..ecff07dcff3 100644 --- a/PWGJE/Core/JetDerivedDataUtilities.h +++ b/PWGJE/Core/JetDerivedDataUtilities.h @@ -564,10 +564,9 @@ uint8_t setTrackSelectionBit(T const& track, float trackDCAZ, float maxDCAZ) if (track.trackCutFlagFb5()) { SETBIT(bit, JTrackSel::hybridTrack); } - if (track.trackCutFlagFb5()) { //Change get FB6 to work + if (track.trackCutFlagFb5()) { SETBIT(bit, JTrackSel::hybridTrackRun2); - LOG(info) << "In JetDerivedDataUtilities setTrackSelectionBit: The bit was set to HYBRID_RUN2"; - } //CHANGE + } return bit; } diff --git a/PWGJE/TableProducer/derivedDataProducer.cxx b/PWGJE/TableProducer/derivedDataProducer.cxx index 92f2cb2a9ae..24b16ef280a 100644 --- a/PWGJE/TableProducer/derivedDataProducer.cxx +++ b/PWGJE/TableProducer/derivedDataProducer.cxx @@ -58,53 +58,55 @@ using namespace o2::framework; using namespace o2::framework::expressions; struct JetDerivedDataProducerTask { - Produces bcCountsTable; - Produces collisionCountsTable; - Produces jDummysTable; - Produces jBCsTable; - Produces jBCParentIndexTable; - Produces jCollisionsTable; - Produces jCollisionMcInfosTable; - Produces jCollisionsParentIndexTable; - Produces jCollisionsBunchCrossingIndexTable; - Produces jCollisionsEMCalLabelTable; - Produces jMcCollisionsLabelTable; - Produces jMcCollisionsTable; - Produces jMcCollisionsParentIndexTable; - Produces jTracksTable; - Produces jTracksExtraTable; - Produces jTracksEMCalTable; - Produces jTracksParentIndexTable; - Produces jMcTracksLabelTable; - Produces jMcParticlesTable; - Produces jParticlesParentIndexTable; - Produces jClustersTable; - Produces jClustersParentIndexTable; - Produces jClustersMatchedTracksTable; - Produces jMcClustersLabelTable; - Produces jD0CollisionIdsTable; - Produces jD0McCollisionIdsTable; - Produces jD0IdsTable; - Produces jD0ParticleIdsTable; - Produces jLcCollisionIdsTable; - Produces jLcMcCollisionIdsTable; - Produces jLcIdsTable; - Produces jLcParticleIdsTable; - Produces jBplusCollisionIdsTable; - Produces jBplusMcCollisionIdsTable; - Produces jBplusIdsTable; - Produces jBplusParticleIdsTable; - Produces jV0IdsTable; - Produces jV0McCollisionsTable; - Produces jV0McCollisionIdsTable; - Produces jV0McsTable; - Produces jV0McIdsTable; - Produces jDielectronCollisionIdsTable; - Produces jDielectronIdsTable; - Produces jDielectronMcCollisionsTable; - Produces jDielectronMcCollisionIdsTable; - Produces jDielectronMcsTable; - Produces jDielectronMcIdsTable; + struct : ProducesGroup { + Produces bcCountsTable; + Produces collisionCountsTable; + Produces jDummysTable; + Produces jBCsTable; + Produces jBCParentIndexTable; + Produces jCollisionsTable; + Produces jCollisionMcInfosTable; + Produces jCollisionsParentIndexTable; + Produces jCollisionsBunchCrossingIndexTable; + Produces jCollisionsEMCalLabelTable; + Produces jMcCollisionsLabelTable; + Produces jMcCollisionsTable; + Produces jMcCollisionsParentIndexTable; + Produces jTracksTable; + Produces jTracksExtraTable; + Produces jTracksEMCalTable; + Produces jTracksParentIndexTable; + Produces jMcTracksLabelTable; + Produces jMcParticlesTable; + Produces jParticlesParentIndexTable; + Produces jClustersTable; + Produces jClustersParentIndexTable; + Produces jClustersMatchedTracksTable; + Produces jMcClustersLabelTable; + Produces jD0CollisionIdsTable; + Produces jD0McCollisionIdsTable; + Produces jD0IdsTable; + Produces jD0ParticleIdsTable; + Produces jLcCollisionIdsTable; + Produces jLcMcCollisionIdsTable; + Produces jLcIdsTable; + Produces jLcParticleIdsTable; + Produces jBplusCollisionIdsTable; + Produces jBplusMcCollisionIdsTable; + Produces jBplusIdsTable; + Produces jBplusParticleIdsTable; + Produces jV0IdsTable; + Produces jV0McCollisionsTable; + Produces jV0McCollisionIdsTable; + Produces jV0McsTable; + Produces jV0McIdsTable; + Produces jDielectronCollisionIdsTable; + Produces jDielectronIdsTable; + Produces jDielectronMcCollisionsTable; + Produces jDielectronMcCollisionIdsTable; + Produces jDielectronMcsTable; + Produces jDielectronMcIdsTable; + } products; Configurable ccdbUrl{"ccdbUrl", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; Configurable ccdbPathLut{"ccdbPathLut", "GLO/Param/MatLUT", "Path for LUT parametrization"}; @@ -149,7 +151,7 @@ struct JetDerivedDataProducerTask { trackCollisionMapping.clear(); if (!doprocessMcCollisionLabels) { for (int i = 0; i < collisions.size(); i++) { - jCollisionMcInfosTable(-1.0, jetderiveddatautilities::JCollisionSubGeneratorId::none); // fill a dummy weights table if not MC + products.jCollisionMcInfosTable(-1.0, jetderiveddatautilities::JCollisionSubGeneratorId::none); // fill a dummy weights table if not MC } } } @@ -157,8 +159,8 @@ struct JetDerivedDataProducerTask { void processBunchCrossings(soa::Join::iterator const& bc) { - jBCsTable(bc.runNumber(), bc.globalBC(), bc.timestamp(), bc.alias_raw(), bc.selection_raw()); - jBCParentIndexTable(bc.globalIndex()); + products.jBCsTable(bc.runNumber(), bc.globalBC(), bc.timestamp(), bc.alias_raw(), bc.selection_raw()); + products.jBCParentIndexTable(bc.globalIndex()); } PROCESS_SWITCH(JetDerivedDataProducerTask, processBunchCrossings, "produces derived bunch crossing table", false); @@ -170,9 +172,9 @@ struct JetDerivedDataProducerTask { triggerDecider.initCCDB(ccdb.service, bc.runNumber(), bc.timestamp(), jetderiveddatautilities::JTriggerMasks); triggerBit = jetderiveddatautilities::setTriggerSelectionBit(triggerDecider.getTriggerOfInterestResults(bc.globalBC())); } - jCollisionsTable(collision.posX(), collision.posY(), collision.posZ(), collision.multFT0C(), collision.centFT0C(), collision.trackOccupancyInTimeRange(), jetderiveddatautilities::setEventSelectionBit(collision), collision.alias_raw(), triggerBit); // note change multFT0C to multFT0M when problems with multFT0A are fixed - jCollisionsParentIndexTable(collision.globalIndex()); - jCollisionsBunchCrossingIndexTable(collision.bcId()); + products.jCollisionsTable(collision.posX(), collision.posY(), collision.posZ(), collision.multFT0C(), collision.centFT0C(), collision.trackOccupancyInTimeRange(), jetderiveddatautilities::setEventSelectionBit(collision), collision.alias_raw(), triggerBit); // note change multFT0C to multFT0M when problems with multFT0A are fixed + products.jCollisionsParentIndexTable(collision.globalIndex()); + products.jCollisionsBunchCrossingIndexTable(collision.bcId()); } PROCESS_SWITCH(JetDerivedDataProducerTask, processCollisions, "produces derived collision tables", true); @@ -184,86 +186,85 @@ struct JetDerivedDataProducerTask { triggerDecider.initCCDB(ccdb.service, bc.runNumber(), bc.timestamp(), jetderiveddatautilities::JTriggerMasks); triggerBit = jetderiveddatautilities::setTriggerSelectionBit(triggerDecider.getTriggerOfInterestResults(bc.globalBC())); } - jCollisionsTable(collision.posX(), collision.posY(), collision.posZ(), -1.0, -1.0, -1, jetderiveddatautilities::setEventSelectionBit(collision), collision.alias_raw(), triggerBit); - jCollisionsParentIndexTable(collision.globalIndex()); - jCollisionsBunchCrossingIndexTable(collision.bcId()); + products.jCollisionsTable(collision.posX(), collision.posY(), collision.posZ(), -1.0, -1.0, -1, jetderiveddatautilities::setEventSelectionBit(collision), collision.alias_raw(), triggerBit); + products.jCollisionsParentIndexTable(collision.globalIndex()); + products.jCollisionsBunchCrossingIndexTable(collision.bcId()); } PROCESS_SWITCH(JetDerivedDataProducerTask, processCollisionsWithoutCentralityAndMultiplicity, "produces derived collision tables without centrality or multiplicity", false); void processCollisionsRun2(soa::Join::iterator const& collision) { - jCollisionsTable(collision.posX(), collision.posY(), collision.posZ(), collision.multFT0C(), collision.centRun2V0M(), -1, jetderiveddatautilities::setEventSelectionBit(collision), collision.alias_raw(), 0); // note change multFT0C to multFT0M when problems with multFT0A are fixed - jCollisionsParentIndexTable(collision.globalIndex()); - jCollisionsBunchCrossingIndexTable(collision.bcId()); + products.jCollisionsTable(collision.posX(), collision.posY(), collision.posZ(), collision.multFT0C(), collision.centRun2V0M(), -1, jetderiveddatautilities::setEventSelectionBit(collision), collision.alias_raw(), 0); // note change multFT0C to multFT0M when problems with multFT0A are fixed + products.jCollisionsParentIndexTable(collision.globalIndex()); + products.jCollisionsBunchCrossingIndexTable(collision.bcId()); } PROCESS_SWITCH(JetDerivedDataProducerTask, processCollisionsRun2, "produces derived collision tables for Run 2 data", false); void processCollisionsALICE3(aod::Collision const& collision) { - jCollisionsTable(collision.posX(), collision.posY(), collision.posZ(), -1.0, -1.0, -1, -1.0, 0, 0); - jCollisionsParentIndexTable(collision.globalIndex()); - jCollisionsBunchCrossingIndexTable(-1); + products.jCollisionsTable(collision.posX(), collision.posY(), collision.posZ(), -1.0, -1.0, -1, -1.0, 0, 0); + products.jCollisionsParentIndexTable(collision.globalIndex()); + products.jCollisionsBunchCrossingIndexTable(-1); } PROCESS_SWITCH(JetDerivedDataProducerTask, processCollisionsALICE3, "produces derived collision tables for ALICE 3 simulations", false); void processWithoutEMCalCollisionLabels(aod::Collision const&) { - jCollisionsEMCalLabelTable(false, false); + products.jCollisionsEMCalLabelTable(false, false); } PROCESS_SWITCH(JetDerivedDataProducerTask, processWithoutEMCalCollisionLabels, "produces dummy derived collision labels for EMCal", true); void processEMCalCollisionLabels(aod::EMCALMatchedCollision const& collision) { - jCollisionsEMCalLabelTable(collision.ambiguous(), collision.isemcreadout()); + products.jCollisionsEMCalLabelTable(collision.ambiguous(), collision.isemcreadout()); } PROCESS_SWITCH(JetDerivedDataProducerTask, processEMCalCollisionLabels, "produces derived collision labels for EMCal", false); void processMcCollisionLabels(soa::Join::iterator const& collision, aod::McCollisions const&) { if (collision.has_mcCollision()) { - jMcCollisionsLabelTable(collision.mcCollisionId()); - jCollisionMcInfosTable(collision.mcCollision().weight(), collision.mcCollision().getSubGeneratorId()); + products.jMcCollisionsLabelTable(collision.mcCollisionId()); + products.jCollisionMcInfosTable(collision.mcCollision().weight(), collision.mcCollision().getSubGeneratorId()); } else { - jMcCollisionsLabelTable(-1); - jCollisionMcInfosTable(-1.0, jetderiveddatautilities::JCollisionSubGeneratorId::none); + products.jMcCollisionsLabelTable(-1); + products.jCollisionMcInfosTable(-1.0, jetderiveddatautilities::JCollisionSubGeneratorId::none); } } PROCESS_SWITCH(JetDerivedDataProducerTask, processMcCollisionLabels, "produces derived MC collision labels table", false); void processMcCollisions(aod::McCollision const& mcCollision) { - jMcCollisionsTable(mcCollision.posX(), mcCollision.posY(), mcCollision.posZ(), mcCollision.weight(), mcCollision.getSubGeneratorId()); - jMcCollisionsParentIndexTable(mcCollision.globalIndex()); + products.jMcCollisionsTable(mcCollision.posX(), mcCollision.posY(), mcCollision.posZ(), mcCollision.weight(), mcCollision.getSubGeneratorId()); + products.jMcCollisionsParentIndexTable(mcCollision.globalIndex()); } PROCESS_SWITCH(JetDerivedDataProducerTask, processMcCollisions, "produces derived MC collision table", false); -//CHANGE - void processTracksRun2(soa::Join::iterator const& track, aod::Collisions const&) //aod::TracksDCACov, + void processTracksRun2(soa::Join::iterator const& track) { - jTracksTable(track.collisionId(), track.pt(), track.eta(), track.phi(), jetderiveddatautilities::setTrackSelectionBit(track, track.dcaZ(), dcaZMax)); - //auto trackParCov = getTrackParCov(track); - //auto xyzTrack = trackParCov.getXYZGlo(); - float sigmaDCAXYZ2; - float dcaXYZ = getDcaXYZ(track, &sigmaDCAXYZ2); //maybe need to remove this too + //TracksDCACov table is not yet available for Run 2 converted data. Remove this process function and use only processTracks when that becomes available. + products.jTracksTable(track.collisionId(), track.pt(), track.eta(), track.phi(), jetderiveddatautilities::setTrackSelectionBit(track, track.dcaZ(), dcaZMax)); + // auto trackParCov = getTrackParCov(track); + // auto xyzTrack = trackParCov.getXYZGlo(); + float sigmaDCAXYZ2 = 0.0; + float dcaXYZ = getDcaXYZ(track, &sigmaDCAXYZ2); float dcaX = -99.0; float dcaY = -99.0; - if (track.collisionId() >= 0) { + /*if (track.collisionId() >= 0) { auto const& collision = track.collision_as(); - //dcaX = xyzTrack.X() - collision.posX(); - //dcaY = xyzTrack.Y() - collision.posY(); - } - - //jTracksExtraTable(dcaX, dcaY, track.dcaZ(), track.dcaXY(), dcaXYZ, std::sqrt(track.sigmaDcaZ2()), std::sqrt(track.sigmaDcaXY2()), std::sqrt(sigmaDCAXYZ2), track.sigma1Pt()); // why is this getSigmaZY - jTracksExtraTable(dcaX, dcaY, track.dcaZ(), track.dcaXY(), dcaXYZ, std::sqrt(1.), std::sqrt(1.), std::sqrt(sigmaDCAXYZ2), track.sigma1Pt()); //dummy values - consider improving + dcaX = xyzTrack.X() - collision.posX(); + dcaY = xyzTrack.Y() - collision.posY(); + }*/ - jTracksParentIndexTable(track.globalIndex()); - trackCollisionMapping[{track.globalIndex(), track.collisionId()}] = jTracksTable.lastIndex(); + // jTracksExtraTable(dcaX, dcaY, track.dcaZ(), track.dcaXY(), dcaXYZ, std::sqrt(track.sigmaDcaZ2()), std::sqrt(track.sigmaDcaXY2()), std::sqrt(sigmaDCAXYZ2), track.sigma1Pt()); // why is this getSigmaZY + products.jTracksExtraTable(dcaX, dcaY, track.dcaZ(), track.dcaXY(), dcaXYZ, std::sqrt(1.), std::sqrt(1.), std::sqrt(sigmaDCAXYZ2), track.sigma1Pt()); // dummy values - will be fixed when TracksDCACov table is available for Run 2 + products.jTracksParentIndexTable(track.globalIndex()); + trackCollisionMapping[{track.globalIndex(), track.collisionId()}] = products.jTracksTable.lastIndex(); } - PROCESS_SWITCH(JetDerivedDataProducerTask, processTracksRun2, "produces derived track table for Run2 AO2Ds", true); + PROCESS_SWITCH(JetDerivedDataProducerTask, processTracksRun2, "produces derived track table for Run2 AO2Ds", false); void processTracks(soa::Join::iterator const& track, aod::Collisions const&) { - jTracksTable(track.collisionId(), track.pt(), track.eta(), track.phi(), jetderiveddatautilities::setTrackSelectionBit(track, track.dcaZ(), dcaZMax)); + products.jTracksTable(track.collisionId(), track.pt(), track.eta(), track.phi(), jetderiveddatautilities::setTrackSelectionBit(track, track.dcaZ(), dcaZMax)); auto trackParCov = getTrackParCov(track); auto xyzTrack = trackParCov.getXYZGlo(); float sigmaDCAXYZ2; @@ -276,9 +277,9 @@ struct JetDerivedDataProducerTask { dcaY = xyzTrack.Y() - collision.posY(); } - jTracksExtraTable(dcaX, dcaY, track.dcaZ(), track.dcaXY(), dcaXYZ, std::sqrt(track.sigmaDcaZ2()), std::sqrt(track.sigmaDcaXY2()), std::sqrt(sigmaDCAXYZ2), track.sigma1Pt()); // why is this getSigmaZY - jTracksParentIndexTable(track.globalIndex()); - trackCollisionMapping[{track.globalIndex(), track.collisionId()}] = jTracksTable.lastIndex(); + products.jTracksExtraTable(dcaX, dcaY, track.dcaZ(), track.dcaXY(), dcaXYZ, std::sqrt(track.sigmaDcaZ2()), std::sqrt(track.sigmaDcaXY2()), std::sqrt(sigmaDCAXYZ2), track.sigma1Pt()); // why is this getSigmaZY + products.jTracksParentIndexTable(track.globalIndex()); + trackCollisionMapping[{track.globalIndex(), track.collisionId()}] = products.jTracksTable.lastIndex(); } PROCESS_SWITCH(JetDerivedDataProducerTask, processTracks, "produces derived track table", true); @@ -290,12 +291,12 @@ struct JetDerivedDataProducerTask { auto track = collisionTrackIndex.track_as>(); auto trackParCov = getTrackParCov(track); if (track.collisionId() == collision.globalIndex()) { - jTracksTable(collision.globalIndex(), track.pt(), track.eta(), track.phi(), jetderiveddatautilities::setTrackSelectionBit(track, track.dcaZ(), dcaZMax)); - jTracksParentIndexTable(track.globalIndex()); + products.jTracksTable(collision.globalIndex(), track.pt(), track.eta(), track.phi(), jetderiveddatautilities::setTrackSelectionBit(track, track.dcaZ(), dcaZMax)); + products.jTracksParentIndexTable(track.globalIndex()); auto xyzTrack = trackParCov.getXYZGlo(); float sigmaDCAXYZ2; float dcaXYZ = getDcaXYZ(track, &sigmaDCAXYZ2); - jTracksExtraTable(xyzTrack.X() - collision.posX(), xyzTrack.Y() - collision.posY(), track.dcaZ(), track.dcaXY(), dcaXYZ, std::sqrt(track.sigmaDcaZ2()), std::sqrt(track.sigmaDcaXY2()), std::sqrt(sigmaDCAXYZ2), track.sigma1Pt()); // why is this getSigmaZY + products.jTracksExtraTable(xyzTrack.X() - collision.posX(), xyzTrack.Y() - collision.posY(), track.dcaZ(), track.dcaXY(), dcaXYZ, std::sqrt(track.sigmaDcaZ2()), std::sqrt(track.sigmaDcaXY2()), std::sqrt(sigmaDCAXYZ2), track.sigma1Pt()); // why is this getSigmaZY } else { auto bc = collision.bc_as>(); initCCDB(bc, runNumber, ccdb, doprocessCollisionsRun2 ? ccdbPathGrp : ccdbPathGrpMag, lut, doprocessCollisionsRun2); @@ -305,8 +306,8 @@ struct JetDerivedDataProducerTask { collisionInfo.setPos({collision.posX(), collision.posY(), collision.posZ()}); collisionInfo.setCov(collision.covXX(), collision.covXY(), collision.covYY(), collision.covXZ(), collision.covYZ(), collision.covZZ()); o2::base::Propagator::Instance()->propagateToDCABxByBz(collisionInfo, trackParCov, 2.f, noMatCorr, &dcaCovInfo); - jTracksTable(collision.globalIndex(), trackParCov.getPt(), trackParCov.getEta(), trackParCov.getPhi(), jetderiveddatautilities::setTrackSelectionBit(track, dcaCovInfo.getZ(), dcaZMax)); // only qualitytracksWDCA are a reliable selection - jTracksParentIndexTable(track.globalIndex()); + products.jTracksTable(collision.globalIndex(), trackParCov.getPt(), trackParCov.getEta(), trackParCov.getPhi(), jetderiveddatautilities::setTrackSelectionBit(track, dcaCovInfo.getZ(), dcaZMax)); // only qualitytracksWDCA are a reliable selection + products.jTracksParentIndexTable(track.globalIndex()); auto xyzTrack = trackParCov.getXYZGlo(); float dcaXY = dcaCovInfo.getY(); float dcaZ = dcaCovInfo.getZ(); @@ -320,9 +321,9 @@ struct JetDerivedDataProducerTask { } else { sigmaDCAXYZ = covYY * (2.f * dcaXY / dcaXYZ) * (2.f * dcaXY / dcaXYZ) + covZZ * (2.f * dcaZ / dcaXYZ) * (2.f * dcaZ / dcaXYZ) + 2.f * covYZ * (2.f * dcaXY / dcaXYZ) * (2.f * dcaZ / dcaXYZ); } - jTracksExtraTable(xyzTrack.X() - collision.posX(), xyzTrack.Y() - collision.posY(), dcaZ, dcaXY, dcaXYZ, std::sqrt(covZZ), std::sqrt(covYY), std::sqrt(sigmaDCAXYZ), std::sqrt(trackParCov.getSigma1Pt2())); + products.jTracksExtraTable(xyzTrack.X() - collision.posX(), xyzTrack.Y() - collision.posY(), dcaZ, dcaXY, dcaXYZ, std::sqrt(covZZ), std::sqrt(covYY), std::sqrt(sigmaDCAXYZ), std::sqrt(trackParCov.getSigma1Pt2())); } - trackCollisionMapping[{track.globalIndex(), collision.globalIndex()}] = jTracksTable.lastIndex(); + trackCollisionMapping[{track.globalIndex(), collision.globalIndex()}] = products.jTracksTable.lastIndex(); } } } @@ -331,9 +332,9 @@ struct JetDerivedDataProducerTask { void processMcTrackLabels(soa::Join::iterator const& track) { if (track.has_mcParticle()) { - jMcTracksLabelTable(track.mcParticleId()); + products.jMcTracksLabelTable(track.mcParticleId()); } else { - jMcTracksLabelTable(-1); + products.jMcTracksLabelTable(-1); } } PROCESS_SWITCH(JetDerivedDataProducerTask, processMcTrackLabels, "produces derived track labels table", false); @@ -345,9 +346,9 @@ struct JetDerivedDataProducerTask { for (auto const& collisionTrackIndex : collisionTrackIndices) { auto track = collisionTrackIndex.track_as>(); if (track.collisionId() == collision.globalIndex() && track.has_mcParticle()) { - jMcTracksLabelTable(track.mcParticleId()); + products.jMcTracksLabelTable(track.mcParticleId()); } else { - jMcTracksLabelTable(-1); + products.jMcTracksLabelTable(-1); } } } @@ -374,8 +375,8 @@ struct JetDerivedDataProducerTask { i++; } } - jMcParticlesTable(particle.mcCollisionId(), particle.pt(), particle.eta(), particle.phi(), particle.y(), particle.e(), particle.pdgCode(), particle.getGenStatusCode(), particle.getHepMCStatusCode(), particle.isPhysicalPrimary(), mothersId, daughtersId); - jParticlesParentIndexTable(particle.globalIndex()); + products.jMcParticlesTable(particle.mcCollisionId(), particle.pt(), particle.eta(), particle.phi(), particle.y(), particle.e(), particle.pdgCode(), particle.getGenStatusCode(), particle.getHepMCStatusCode(), particle.isPhysicalPrimary(), mothersId, daughtersId); + products.jParticlesParentIndexTable(particle.globalIndex()); } PROCESS_SWITCH(JetDerivedDataProducerTask, processParticles, "produces derived parrticle table", false); @@ -405,8 +406,8 @@ struct JetDerivedDataProducerTask { } } - jClustersTable(cluster.collisionId(), cluster.id(), cluster.energy(), cluster.coreEnergy(), cluster.rawEnergy(), cluster.eta(), cluster.phi(), cluster.m02(), cluster.m20(), cluster.nCells(), cluster.time(), cluster.isExotic(), cluster.distanceToBadChannel(), cluster.nlm(), cluster.definition(), leadingCellEnergy, subleadingCellEnergy, leadingCellNumber, subleadingCellNumber); - jClustersParentIndexTable(cluster.globalIndex()); + products.jClustersTable(cluster.collisionId(), cluster.id(), cluster.energy(), cluster.coreEnergy(), cluster.rawEnergy(), cluster.eta(), cluster.phi(), cluster.m02(), cluster.m20(), cluster.nCells(), cluster.time(), cluster.isExotic(), cluster.distanceToBadChannel(), cluster.nlm(), cluster.definition(), leadingCellEnergy, subleadingCellEnergy, leadingCellNumber, subleadingCellNumber); + products.jClustersParentIndexTable(cluster.globalIndex()); auto const clusterTracks = matchedTracks.sliceBy(perClusterTracks, cluster.globalIndex()); std::vector clusterTrackIDs; @@ -414,9 +415,9 @@ struct JetDerivedDataProducerTask { auto JClusterID = trackCollisionMapping.find({clusterTrack.trackId(), cluster.collisionId()}); // does EMCal use its own associator? clusterTrackIDs.push_back(JClusterID->second); auto emcTrack = clusterTrack.track_as>(); - jTracksEMCalTable(JClusterID->second, emcTrack.trackEtaEmcal(), emcTrack.trackPhiEmcal()); + products.jTracksEMCalTable(JClusterID->second, emcTrack.trackEtaEmcal(), emcTrack.trackPhiEmcal()); } - jClustersMatchedTracksTable(clusterTrackIDs); + products.jClustersMatchedTracksTable(clusterTrackIDs); } } PROCESS_SWITCH(JetDerivedDataProducerTask, processClusters, "produces derived cluster tables", false); @@ -430,19 +431,19 @@ struct JetDerivedDataProducerTask { std::vector amplitudeA; auto amplitudeASpan = cluster.amplitudeA(); std::copy(amplitudeASpan.begin(), amplitudeASpan.end(), std::back_inserter(amplitudeA)); - jMcClustersLabelTable(particleIds, amplitudeA); + products.jMcClustersLabelTable(particleIds, amplitudeA); } PROCESS_SWITCH(JetDerivedDataProducerTask, processMcClusterLabels, "produces derived cluster particle label table", false); void processD0Collisions(aod::HfD0CollIds::iterator const& D0Collision) { - jD0CollisionIdsTable(D0Collision.collisionId()); + products.jD0CollisionIdsTable(D0Collision.collisionId()); } PROCESS_SWITCH(JetDerivedDataProducerTask, processD0Collisions, "produces derived index for D0 collisions", false); void processD0McCollisions(aod::HfD0McCollIds::iterator const& D0McCollision) { - jD0McCollisionIdsTable(D0McCollision.mcCollisionId()); + products.jD0McCollisionIdsTable(D0McCollision.mcCollisionId()); } PROCESS_SWITCH(JetDerivedDataProducerTask, processD0McCollisions, "produces derived index for D0 MC collisions", false); @@ -454,25 +455,25 @@ struct JetDerivedDataProducerTask { JProng0ID = trackCollisionMapping.find({D0.prong0Id(), D0.collisionId()}); JProng1ID = trackCollisionMapping.find({D0.prong1Id(), D0.collisionId()}); } - jD0IdsTable(D0.collisionId(), JProng0ID->second, JProng1ID->second); + products.jD0IdsTable(D0.collisionId(), JProng0ID->second, JProng1ID->second); } PROCESS_SWITCH(JetDerivedDataProducerTask, processD0, "produces derived index for D0 candidates", false); void processD0MC(aod::HfD0PIds::iterator const& D0) { - jD0ParticleIdsTable(D0.mcCollisionId(), D0.mcParticleId()); + products.jD0ParticleIdsTable(D0.mcCollisionId(), D0.mcParticleId()); } PROCESS_SWITCH(JetDerivedDataProducerTask, processD0MC, "produces derived index for D0 particles", false); void processLcCollisions(aod::HfLcCollIds::iterator const& LcCollision) { - jLcCollisionIdsTable(LcCollision.collisionId()); + products.jLcCollisionIdsTable(LcCollision.collisionId()); } PROCESS_SWITCH(JetDerivedDataProducerTask, processLcCollisions, "produces derived index for Lc collisions", false); void processLcMcCollisions(aod::HfLcMcCollIds::iterator const& LcMcCollision) { - jLcMcCollisionIdsTable(LcMcCollision.mcCollisionId()); + products.jLcMcCollisionIdsTable(LcMcCollision.mcCollisionId()); } PROCESS_SWITCH(JetDerivedDataProducerTask, processLcMcCollisions, "produces derived index for Lc MC collisions", false); @@ -486,25 +487,25 @@ struct JetDerivedDataProducerTask { JProng1ID = trackCollisionMapping.find({Lc.prong1Id(), Lc.collisionId()}); JProng2ID = trackCollisionMapping.find({Lc.prong2Id(), Lc.collisionId()}); } - jLcIdsTable(Lc.collisionId(), JProng0ID->second, JProng1ID->second, JProng2ID->second); + products.jLcIdsTable(Lc.collisionId(), JProng0ID->second, JProng1ID->second, JProng2ID->second); } PROCESS_SWITCH(JetDerivedDataProducerTask, processLc, "produces derived index for Lc candidates", false); void processLcMC(aod::HfLcPIds::iterator const& Lc) { - jLcParticleIdsTable(Lc.mcCollisionId(), Lc.mcParticleId()); + products.jLcParticleIdsTable(Lc.mcCollisionId(), Lc.mcParticleId()); } PROCESS_SWITCH(JetDerivedDataProducerTask, processLcMC, "produces derived index for Lc particles", false); void processBplusCollisions(aod::HfBplusCollIds::iterator const& BplusCollision) { - jBplusCollisionIdsTable(BplusCollision.collisionId()); + products.jBplusCollisionIdsTable(BplusCollision.collisionId()); } PROCESS_SWITCH(JetDerivedDataProducerTask, processBplusCollisions, "produces derived index for Bplus collisions", false); void processBplusMcCollisions(aod::HfBplusMcCollIds::iterator const& BplusMcCollision) { - jBplusMcCollisionIdsTable(BplusMcCollision.mcCollisionId()); + products.jBplusMcCollisionIdsTable(BplusMcCollision.mcCollisionId()); } PROCESS_SWITCH(JetDerivedDataProducerTask, processBplusMcCollisions, "produces derived index for Bplus MC collisions", false); @@ -518,13 +519,13 @@ struct JetDerivedDataProducerTask { JProng1ID = trackCollisionMapping.find({Bplus.prong1Id(), Bplus.collisionId()}); JProng2ID = trackCollisionMapping.find({Bplus.prong2Id(), Bplus.collisionId()}); } - jBplusIdsTable(Bplus.collisionId(), JProng0ID->second, JProng1ID->second, JProng2ID->second); + products.jBplusIdsTable(Bplus.collisionId(), JProng0ID->second, JProng1ID->second, JProng2ID->second); } PROCESS_SWITCH(JetDerivedDataProducerTask, processBplus, "produces derived index for Bplus candidates", false); void processBplusMC(aod::HfBplusPIds::iterator const& Bplus) { - jBplusParticleIdsTable(Bplus.mcCollisionId(), Bplus.mcParticleId()); + products.jBplusParticleIdsTable(Bplus.mcCollisionId(), Bplus.mcParticleId()); } PROCESS_SWITCH(JetDerivedDataProducerTask, processBplusMC, "produces derived index for Bplus particles", false); @@ -536,7 +537,7 @@ struct JetDerivedDataProducerTask { JPosTrackID = trackCollisionMapping.find({V0.posTrackId(), V0.collisionId()}); JNegTrackID = trackCollisionMapping.find({V0.negTrackId(), V0.collisionId()}); } - jV0IdsTable(V0.collisionId(), JPosTrackID->second, JNegTrackID->second); + products.jV0IdsTable(V0.collisionId(), JPosTrackID->second, JNegTrackID->second); } PROCESS_SWITCH(JetDerivedDataProducerTask, processV0, "produces derived index for V0 candidates", false); @@ -546,8 +547,8 @@ struct JetDerivedDataProducerTask { for (auto const& particle : particles) { if (jetv0utilities::isV0Particle(particles, particle)) { if (!filledV0McCollisionTable) { - jV0McCollisionsTable(mcCollision.posX(), mcCollision.posY(), mcCollision.posZ()); - jV0McCollisionIdsTable(mcCollision.globalIndex()); + products.jV0McCollisionsTable(mcCollision.posX(), mcCollision.posY(), mcCollision.posZ()); + products.jV0McCollisionIdsTable(mcCollision.globalIndex()); filledV0McCollisionTable = true; } std::vector mothersId; @@ -569,8 +570,8 @@ struct JetDerivedDataProducerTask { } } auto pdgParticle = pdgDatabase->GetParticle(particle.pdgCode()); - jV0McsTable(jV0McCollisionsTable.lastIndex(), particle.pt(), particle.eta(), particle.phi(), particle.y(), particle.e(), pdgParticle->Mass(), particle.pdgCode(), particle.getGenStatusCode(), particle.getHepMCStatusCode(), particle.isPhysicalPrimary(), jetv0utilities::setV0ParticleDecayBit(particles, particle)); - jV0McIdsTable(mcCollision.globalIndex(), particle.globalIndex(), mothersId, daughtersId); + products.jV0McsTable(products.jV0McCollisionsTable.lastIndex(), particle.pt(), particle.eta(), particle.phi(), particle.y(), particle.e(), pdgParticle->Mass(), particle.pdgCode(), particle.getGenStatusCode(), particle.getHepMCStatusCode(), particle.isPhysicalPrimary(), jetv0utilities::setV0ParticleDecayBit(particles, particle)); + products.jV0McIdsTable(mcCollision.globalIndex(), particle.globalIndex(), mothersId, daughtersId); } } } @@ -578,7 +579,7 @@ struct JetDerivedDataProducerTask { void processDielectronCollisions(aod::ReducedEventsInfo::iterator const& DielectronCollision) { - jDielectronCollisionIdsTable(DielectronCollision.collisionId()); + products.jDielectronCollisionIdsTable(DielectronCollision.collisionId()); } PROCESS_SWITCH(JetDerivedDataProducerTask, processDielectronCollisions, "produces derived index for Dielectron collisions", false); @@ -590,7 +591,7 @@ struct JetDerivedDataProducerTask { JProng0ID = trackCollisionMapping.find({Dielectron.prong0Id(), Dielectron.collisionId()}); JProng1ID = trackCollisionMapping.find({Dielectron.prong1Id(), Dielectron.collisionId()}); } - jDielectronIdsTable(Dielectron.collisionId(), JProng0ID->second, JProng1ID->second); + products.jDielectronIdsTable(Dielectron.collisionId(), JProng0ID->second, JProng1ID->second); } PROCESS_SWITCH(JetDerivedDataProducerTask, processDielectron, "produces derived index for Dielectron candidates", false); @@ -600,8 +601,8 @@ struct JetDerivedDataProducerTask { for (auto const& particle : particles) { if (jetdqutilities::isDielectronParticle(particles, particle)) { if (!filledDielectronMcCollisionTable) { - jDielectronMcCollisionsTable(mcCollision.posX(), mcCollision.posY(), mcCollision.posZ()); - jDielectronMcCollisionIdsTable(mcCollision.globalIndex()); + products.jDielectronMcCollisionsTable(mcCollision.posX(), mcCollision.posY(), mcCollision.posZ()); + products.jDielectronMcCollisionIdsTable(mcCollision.globalIndex()); filledDielectronMcCollisionTable = true; } std::vector mothersId; @@ -623,8 +624,8 @@ struct JetDerivedDataProducerTask { } } auto pdgParticle = pdgDatabase->GetParticle(particle.pdgCode()); - jDielectronMcsTable(jDielectronMcCollisionsTable.lastIndex(), particle.pt(), particle.eta(), particle.phi(), particle.y(), particle.e(), pdgParticle->Mass(), particle.pdgCode(), particle.getGenStatusCode(), particle.getHepMCStatusCode(), particle.isPhysicalPrimary(), jetdqutilities::setDielectronParticleDecayBit(particles, particle), RecoDecay::getCharmHadronOrigin(particles, particle, false)); // Todo: should the last thing be false? - jDielectronMcIdsTable(mcCollision.globalIndex(), particle.globalIndex(), mothersId, daughtersId); + products.jDielectronMcsTable(products.jDielectronMcCollisionsTable.lastIndex(), particle.pt(), particle.eta(), particle.phi(), particle.y(), particle.e(), pdgParticle->Mass(), particle.pdgCode(), particle.getGenStatusCode(), particle.getHepMCStatusCode(), particle.isPhysicalPrimary(), jetdqutilities::setDielectronParticleDecayBit(particles, particle), RecoDecay::getCharmHadronOrigin(particles, particle, false)); // Todo: should the last thing be false? + products.jDielectronMcIdsTable(mcCollision.globalIndex(), particle.globalIndex(), mothersId, daughtersId); } } }