From a303201ecf6eab6ba72b24501981e69be7b16338 Mon Sep 17 00:00:00 2001 From: KotliarovAr Date: Thu, 22 Aug 2024 10:06:19 +0200 Subject: [PATCH 1/4] Adding DCA distributions of global tracks --- PWGJE/Tasks/ChJetTriggerQATask.cxx | 63 ++++++++++++++++++------------ 1 file changed, 38 insertions(+), 25 deletions(-) diff --git a/PWGJE/Tasks/ChJetTriggerQATask.cxx b/PWGJE/Tasks/ChJetTriggerQATask.cxx index 04b11aa5fe0..1fe573d4caa 100644 --- a/PWGJE/Tasks/ChJetTriggerQATask.cxx +++ b/PWGJE/Tasks/ChJetTriggerQATask.cxx @@ -41,8 +41,8 @@ #include "Framework/HistogramRegistry.h" using namespace o2; -using namespace o2::framework; -using namespace o2::framework::expressions; +using namespace framework; +using namespace framework::expressions; // What this task should do // Event by event fill @@ -57,15 +57,10 @@ using namespace o2::framework::expressions; struct ChJetTriggerQATask { Configurable evSel{"evSel", "sel8", "choose event selection"}; - Configurable cfgVertexCut{"cfgVertexCut", 10.0, - "Accepted z-vertex range"}; - Configurable cfgTPCVolume{"cfgTPCVolume", 0.9, - "Full eta range"}; // eta range of TPC - Configurable cfgJetR{"cfgJetR", 0.4, - "jet resolution parameter"}; // jet cone radius - Configurable cfgJetPtMin{ - "cfgJetPtMin", 0.15, - "minimum jet pT constituent cut"}; // minimum jet constituent pT + Configurable cfgVertexCut{"cfgVertexCut", 10.0, "Accepted z-vertex range"}; + Configurable cfgTPCVolume{"cfgTPCVolume", 0.9, "Full eta range"}; // eta range of TPC + Configurable cfgJetR{"cfgJetR", 0.4, "jet resolution parameter"}; // jet cone radius + Configurable cfgJetPtMin{"cfgJetPtMin", 0.15, "minimum jet pT constituent cut"}; // minimum jet constituent pT Configurable cfgTrackPhiMinCut{"cfgTrackPhiMinCut", -999, "track min phi cut"}; Configurable cfgTrackPhiMaxCut{"cfgTrackPhiMaxCut", 999, "track max phi cut"}; @@ -75,19 +70,21 @@ struct ChJetTriggerQATask { Configurable bHighPtTrigger{"bHighPtTrigger", false, "charged jet high pT trigger selection"}; Configurable bTrackLowPtTrigger{"bTrackLowPtTrigger", false, "track low pT trigger selection"}; Configurable bTrackHighPtTrigger{"bTrackHighPtTrigger", false, "track high pT trigger selection"}; - Configurable bAddSupplementHistosToOutput{"bAddAdditionalHistosToOutput", false, "add supplementary histos to the output"}; Configurable phiAngleRestriction{"phiAngleRestriction", 0.3, "angle to restrict track phi for plotting tpc momentum"}; + ConfigurableAxis dcaXY_Binning{"dcaXY_Binning", {100, -5., 5.}, ""}; + ConfigurableAxis dcaZ_Binning{"dcaZ_Binning", {100, -5., 5.}, ""}; + float fiducialVolume; // 0.9 - jetR HistogramRegistry spectra; int eventSelection = -1; int trackSelection = -1; - void init(o2::framework::InitContext&) - { + + void init(InitContext&) { fiducialVolume = static_cast(cfgTPCVolume) - static_cast(cfgJetR); eventSelection = jetderiveddatautilities::initialiseEventSelection(static_cast(evSel)); trackSelection = jetderiveddatautilities::initialiseTrackSelection(static_cast(trackSelections)); @@ -113,6 +110,11 @@ struct ChJetTriggerQATask { spectra.add("globalP_tpcglobalPDiff_phirestrict", "difference of global and TPC inner momentum vs global momentum with selection applied restricted phi", {HistType::kTH2F, {{100, 0., +100.}, {200, -100., +100.}}}); spectra.add("global1overP_tpcglobalPDiff_phirestrict", "difference of 1/p global and TPC inner momentum vs global momentum with selection applied restricted phi", {HistType::kTH2F, {{100, 0., +100.}, {500, -8., +8.}}}); + spectra.add("DCAx_track_Phi_pT", "track DCAx vs phi & pT of global tracks w. nITSClusters #ge 4", kTH3F, {dcaXY_Binning, {60, 0., TMath::TwoPi()}, {100, 0., 100.}}); + spectra.add("DCAy_track_Phi_pT", "track DCAy vs phi & pT of global tracks w. nITSClusters #ge 4", kTH3F, {dcaXY_Binning, {60, 0., TMath::TwoPi()}, {100, 0., 100.}}); + spectra.add("DCAz_track_Phi_pT", "track DCAz vs phi & pT of global tracks w. nITSClusters #ge 4", kTH3F, {dcaZ_Binning, {60, 0., TMath::TwoPi()}, {100, 0., 100.}}); + spectra.add("nITSClusters_TrackPt", "Number of ITS hits vs phi & pT of global tracks", kTH3F, {{7, 1., 8.}, {60, 0., TMath::TwoPi()}, {100, 0., 100.}}); + // Supplementary plots if (bAddSupplementHistosToOutput) { spectra.add("ptJetChInclFullVol", "inclusive charged jet pT in full volume", {HistType::kTH1F, {{200, 0., +200.}}}); @@ -137,14 +139,14 @@ struct ChJetTriggerQATask { Filter trackFilter = (nabs(aod::jtrack::eta) < static_cast(cfgTPCVolume)) && (aod::jtrack::phi > static_cast(cfgTrackPhiMinCut)) && (aod::jtrack::phi < static_cast(cfgTrackPhiMaxCut)) && (aod::jtrack::pt > static_cast(cfgJetPtMin)); // declare filters on jets - Filter jetRadiusSelection = (o2::aod::jet::r == nround(cfgJetR.node() * 100.0f)); - - using filteredJets = o2::soa::Filtered; - - void - process(soa::Filtered>::iterator const& collision, - soa::Filtered> const& tracks, o2::soa::Filtered> const& jets, soa::Join const&) + Filter jetRadiusSelection = (aod::jet::r == nround(cfgJetR.node() * 100.0f)); + + using filteredColl = soa::Filtered>::iterator; + using filteredJTracks = soa::Filtered>; + // using Tracks = soa::Join; // could be deleted? it is not iterator + using filteredJets = soa::Filtered>; + + void process(filteredColl const& collision, filteredJTracks const& tracks, filteredJets const& jets/*, Tracks const&*/) { if (!collision.selection_bit(aod::evsel::kNoTimeFrameBorder)) { @@ -179,9 +181,10 @@ struct ChJetTriggerQATask { spectra.fill(HIST("vertexZ"), collision.posZ()); // Inclusive Track Cross TPC Rows - for (auto& trk : tracks) { // loop over filtered tracks in full TPC volume having pT > 100 MeV + for (auto const& trk : tracks) { // loop over filtered tracks in full TPC volume having pT > 100 MeV + + auto const& originalTrack = trk.track_as>(); - auto const& originalTrack = trk.track_as>(); spectra.fill(HIST("globalP_tpcglobalPDiff_withoutcuts"), trk.p(), trk.p() - originalTrack.tpcInnerParam()); if (TMath::Abs(trk.phi() - TMath::Pi()) < phiAngleRestriction) { @@ -192,6 +195,16 @@ struct ChJetTriggerQATask { continue; } + if(originalTrack.itsNCls() >= 4){ // correspond to number of track hits in ITS layers + auto dcaX = originalTrack.x() - collision.posX(); + auto dcaY = originalTrack.y() - collision.posY(); + spectra.fill(HIST("DCAx_track_Phi_pT"), dcaX, trk.phi(), trk.pt()); + spectra.fill(HIST("DCAy_track_Phi_pT"), dcaY, trk.phi(), trk.pt()); + spectra.fill(HIST("DCAz_track_Phi_pT"), originalTrack.dcaZ(), trk.phi(), trk.pt()); + } + + spectra.fill(HIST("nITSClusters_TrackPt"), originalTrack.itsNCls(), trk.phi(), trk.pt()); + spectra.fill(HIST("globalP_tpcglobalPDiff"), trk.p(), trk.p() - originalTrack.tpcInnerParam()); if (trk.p() > 0 && originalTrack.tpcInnerParam() > 0) { spectra.fill(HIST("global1overP_tpcglobalPDiff"), trk.p(), 1. / trk.p() - 1. / originalTrack.tpcInnerParam()); @@ -308,4 +321,4 @@ WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) return WorkflowSpec{adaptAnalysisTask( cfgc, TaskName{"jet-charged-trigger-qa"})}; -} +} \ No newline at end of file From df0c8604da1135c9ac492c4348bcc7cb1e619836 Mon Sep 17 00:00:00 2001 From: KotliarovAr Date: Thu, 22 Aug 2024 10:10:02 +0200 Subject: [PATCH 2/4] Adding DCA distributions of global tracks --- PWGJE/Tasks/ChJetTriggerQATask.cxx | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/PWGJE/Tasks/ChJetTriggerQATask.cxx b/PWGJE/Tasks/ChJetTriggerQATask.cxx index 1fe573d4caa..bd4b3ffdf52 100644 --- a/PWGJE/Tasks/ChJetTriggerQATask.cxx +++ b/PWGJE/Tasks/ChJetTriggerQATask.cxx @@ -58,8 +58,8 @@ struct ChJetTriggerQATask { Configurable evSel{"evSel", "sel8", "choose event selection"}; Configurable cfgVertexCut{"cfgVertexCut", 10.0, "Accepted z-vertex range"}; - Configurable cfgTPCVolume{"cfgTPCVolume", 0.9, "Full eta range"}; // eta range of TPC - Configurable cfgJetR{"cfgJetR", 0.4, "jet resolution parameter"}; // jet cone radius + Configurable cfgTPCVolume{"cfgTPCVolume", 0.9, "Full eta range"}; // eta range of TPC + Configurable cfgJetR{"cfgJetR", 0.4, "jet resolution parameter"}; // jet cone radius Configurable cfgJetPtMin{"cfgJetPtMin", 0.15, "minimum jet pT constituent cut"}; // minimum jet constituent pT Configurable cfgTrackPhiMinCut{"cfgTrackPhiMinCut", -999, "track min phi cut"}; @@ -74,8 +74,8 @@ struct ChJetTriggerQATask { Configurable phiAngleRestriction{"phiAngleRestriction", 0.3, "angle to restrict track phi for plotting tpc momentum"}; - ConfigurableAxis dcaXY_Binning{"dcaXY_Binning", {100, -5., 5.}, ""}; - ConfigurableAxis dcaZ_Binning{"dcaZ_Binning", {100, -5., 5.}, ""}; + ConfigurableAxis dcaXY_Binning{"dcaXY_Binning", {100, -5., 5.}, ""}; + ConfigurableAxis dcaZ_Binning{"dcaZ_Binning", {100, -5., 5.}, ""}; float fiducialVolume; // 0.9 - jetR @@ -84,7 +84,8 @@ struct ChJetTriggerQATask { int eventSelection = -1; int trackSelection = -1; - void init(InitContext&) { + void init(InitContext&) + { fiducialVolume = static_cast(cfgTPCVolume) - static_cast(cfgJetR); eventSelection = jetderiveddatautilities::initialiseEventSelection(static_cast(evSel)); trackSelection = jetderiveddatautilities::initialiseTrackSelection(static_cast(trackSelections)); @@ -140,13 +141,13 @@ struct ChJetTriggerQATask { // declare filters on jets Filter jetRadiusSelection = (aod::jet::r == nround(cfgJetR.node() * 100.0f)); - + using filteredColl = soa::Filtered>::iterator; using filteredJTracks = soa::Filtered>; // using Tracks = soa::Join; // could be deleted? it is not iterator using filteredJets = soa::Filtered>; - void process(filteredColl const& collision, filteredJTracks const& tracks, filteredJets const& jets/*, Tracks const&*/) + void process(filteredColl const& collision, filteredJTracks const& tracks, filteredJets const& jets /*, Tracks const&*/) { if (!collision.selection_bit(aod::evsel::kNoTimeFrameBorder)) { @@ -195,7 +196,7 @@ struct ChJetTriggerQATask { continue; } - if(originalTrack.itsNCls() >= 4){ // correspond to number of track hits in ITS layers + if (originalTrack.itsNCls() >= 4) { // correspond to number of track hits in ITS layers auto dcaX = originalTrack.x() - collision.posX(); auto dcaY = originalTrack.y() - collision.posY(); spectra.fill(HIST("DCAx_track_Phi_pT"), dcaX, trk.phi(), trk.pt()); From 02af08c22f762f7e468ce629cedd3979bba80a1d Mon Sep 17 00:00:00 2001 From: KotliarovAr Date: Thu, 22 Aug 2024 22:04:33 +0200 Subject: [PATCH 3/4] Fixes according to update of PR #7381 --- PWGJE/Tasks/ChJetTriggerQATask.cxx | 72 +++++++++++++++--------------- 1 file changed, 35 insertions(+), 37 deletions(-) diff --git a/PWGJE/Tasks/ChJetTriggerQATask.cxx b/PWGJE/Tasks/ChJetTriggerQATask.cxx index bd4b3ffdf52..944597b9839 100644 --- a/PWGJE/Tasks/ChJetTriggerQATask.cxx +++ b/PWGJE/Tasks/ChJetTriggerQATask.cxx @@ -41,8 +41,8 @@ #include "Framework/HistogramRegistry.h" using namespace o2; -using namespace framework; -using namespace framework::expressions; +using namespace o2::framework; +using namespace o2::framework::expressions; // What this task should do // Event by event fill @@ -143,9 +143,9 @@ struct ChJetTriggerQATask { Filter jetRadiusSelection = (aod::jet::r == nround(cfgJetR.node() * 100.0f)); using filteredColl = soa::Filtered>::iterator; - using filteredJTracks = soa::Filtered>; - // using Tracks = soa::Join; // could be deleted? it is not iterator + using filteredJTracks = soa::Filtered>; using filteredJets = soa::Filtered>; + // using Tracks = soa::Join; // could be deleted? it is not iterator void process(filteredColl const& collision, filteredJTracks const& tracks, filteredJets const& jets /*, Tracks const&*/) { @@ -182,66 +182,64 @@ struct ChJetTriggerQATask { spectra.fill(HIST("vertexZ"), collision.posZ()); // Inclusive Track Cross TPC Rows - for (auto const& trk : tracks) { // loop over filtered tracks in full TPC volume having pT > 100 MeV + for (auto const& track : tracks) { // loop over filtered tracks in full TPC volume having pT > 100 MeV - auto const& originalTrack = trk.track_as>(); + auto const& originalTrack = track.track_as>(); - spectra.fill(HIST("globalP_tpcglobalPDiff_withoutcuts"), trk.p(), trk.p() - originalTrack.tpcInnerParam()); + spectra.fill(HIST("globalP_tpcglobalPDiff_withoutcuts"), track.p(), track.p() - originalTrack.tpcInnerParam()); - if (TMath::Abs(trk.phi() - TMath::Pi()) < phiAngleRestriction) { - spectra.fill(HIST("globalP_tpcglobalPDiff_withoutcuts_phirestrict"), trk.p(), trk.p() - originalTrack.tpcInnerParam()); + if (TMath::Abs(track.phi() - TMath::Pi()) < phiAngleRestriction) { + spectra.fill(HIST("globalP_tpcglobalPDiff_withoutcuts_phirestrict"), track.p(), track.p() - originalTrack.tpcInnerParam()); } - if (!jetderiveddatautilities::selectTrack(trk, trackSelection)) { + if (!jetderiveddatautilities::selectTrack(track, trackSelection)) { continue; } if (originalTrack.itsNCls() >= 4) { // correspond to number of track hits in ITS layers - auto dcaX = originalTrack.x() - collision.posX(); - auto dcaY = originalTrack.y() - collision.posY(); - spectra.fill(HIST("DCAx_track_Phi_pT"), dcaX, trk.phi(), trk.pt()); - spectra.fill(HIST("DCAy_track_Phi_pT"), dcaY, trk.phi(), trk.pt()); - spectra.fill(HIST("DCAz_track_Phi_pT"), originalTrack.dcaZ(), trk.phi(), trk.pt()); + spectra.fill(HIST("DCAx_track_Phi_pT"), track.dcaX(), track.phi(), track.pt()); + spectra.fill(HIST("DCAy_track_Phi_pT"), track.dcaY(), track.phi(), track.pt()); + spectra.fill(HIST("DCAz_track_Phi_pT"), track.dcaZ(), track.phi(), track.pt()); } - spectra.fill(HIST("nITSClusters_TrackPt"), originalTrack.itsNCls(), trk.phi(), trk.pt()); + spectra.fill(HIST("nITSClusters_TrackPt"), originalTrack.itsNCls(), track.phi(), track.pt()); - spectra.fill(HIST("globalP_tpcglobalPDiff"), trk.p(), trk.p() - originalTrack.tpcInnerParam()); - if (trk.p() > 0 && originalTrack.tpcInnerParam() > 0) { - spectra.fill(HIST("global1overP_tpcglobalPDiff"), trk.p(), 1. / trk.p() - 1. / originalTrack.tpcInnerParam()); + spectra.fill(HIST("globalP_tpcglobalPDiff"), track.p(), track.p() - originalTrack.tpcInnerParam()); + if (track.p() > 0 && originalTrack.tpcInnerParam() > 0) { + spectra.fill(HIST("global1overP_tpcglobalPDiff"), track.p(), 1. / track.p() - 1. / originalTrack.tpcInnerParam()); } - if (TMath::Abs(trk.phi() - TMath::Pi()) < phiAngleRestriction) { - spectra.fill(HIST("globalP_tpcglobalPDiff_phirestrict"), trk.p(), trk.p() - originalTrack.tpcInnerParam()); + if (TMath::Abs(track.phi() - TMath::Pi()) < phiAngleRestriction) { + spectra.fill(HIST("globalP_tpcglobalPDiff_phirestrict"), track.p(), track.p() - originalTrack.tpcInnerParam()); - if (trk.p() > 0 && originalTrack.tpcInnerParam() > 0) { - spectra.fill(HIST("global1overP_tpcglobalPDiff_phirestrict"), trk.p(), 1. / trk.p() - 1. / originalTrack.tpcInnerParam()); + if (track.p() > 0 && originalTrack.tpcInnerParam() > 0) { + spectra.fill(HIST("global1overP_tpcglobalPDiff_phirestrict"), track.p(), 1. / track.p() - 1. / originalTrack.tpcInnerParam()); } } spectra.fill( - HIST("ptphiTrackInclGood"), trk.pt(), - trk.phi()); // Inclusive Track pT vs phi spectrum in TPC volume + HIST("ptphiTrackInclGood"), track.pt(), + track.phi()); // Inclusive Track pT vs phi spectrum in TPC volume spectra.fill( - HIST("ptetaTrackInclGood"), trk.pt(), - trk.eta()); // Inclusive Track pT vs eta spectrum in TPC volume + HIST("ptetaTrackInclGood"), track.pt(), + track.eta()); // Inclusive Track pT vs eta spectrum in TPC volume if (bAddSupplementHistosToOutput) { spectra.fill( - HIST("phietaTrackAllInclGood"), trk.eta(), - trk.phi()); // Inclusive Track pT vs eta spectrum in TPC volume + HIST("phietaTrackAllInclGood"), track.eta(), + track.phi()); // Inclusive Track pT vs eta spectrum in TPC volume - if (trk.pt() > 5.0) { + if (track.pt() > 5.0) { spectra.fill( - HIST("phietaTrackHighPtInclGood"), trk.eta(), - trk.phi()); // Inclusive Track pT vs eta spectrum in TPC volume + HIST("phietaTrackHighPtInclGood"), track.eta(), + track.phi()); // Inclusive Track pT vs eta spectrum in TPC volume } } - if (trk.pt() > + if (track.pt() > leadingTrackPt) { // Find leading track pT in full TPC volume - leadingTrackPt = trk.pt(); - leadingTrackEta = trk.eta(); - leadingTrackPhi = trk.phi(); + leadingTrackPt = track.pt(); + leadingTrackEta = track.eta(); + leadingTrackPhi = track.phi(); } } @@ -322,4 +320,4 @@ WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) return WorkflowSpec{adaptAnalysisTask( cfgc, TaskName{"jet-charged-trigger-qa"})}; -} \ No newline at end of file +} From bb393da50412b738f0835c144a0d5e1853fa4f96 Mon Sep 17 00:00:00 2001 From: KotliarovAr Date: Fri, 23 Aug 2024 12:40:53 +0200 Subject: [PATCH 4/4] Fixed process function arguments --- PWGJE/Tasks/ChJetTriggerQATask.cxx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/PWGJE/Tasks/ChJetTriggerQATask.cxx b/PWGJE/Tasks/ChJetTriggerQATask.cxx index 944597b9839..8a7d95e7907 100644 --- a/PWGJE/Tasks/ChJetTriggerQATask.cxx +++ b/PWGJE/Tasks/ChJetTriggerQATask.cxx @@ -44,6 +44,11 @@ using namespace o2; using namespace o2::framework; using namespace o2::framework::expressions; +using filteredColl = soa::Filtered>::iterator; +using filteredJTracks = soa::Filtered>; +using filteredJets = soa::Filtered>; +using joinedTracks = soa::Join; + // What this task should do // Event by event fill // 1) pT spectrum of tracks in TPC volume @@ -142,12 +147,7 @@ struct ChJetTriggerQATask { // declare filters on jets Filter jetRadiusSelection = (aod::jet::r == nround(cfgJetR.node() * 100.0f)); - using filteredColl = soa::Filtered>::iterator; - using filteredJTracks = soa::Filtered>; - using filteredJets = soa::Filtered>; - // using Tracks = soa::Join; // could be deleted? it is not iterator - - void process(filteredColl const& collision, filteredJTracks const& tracks, filteredJets const& jets /*, Tracks const&*/) + void process(filteredColl const& collision, filteredJTracks const& tracks, filteredJets const& jets, joinedTracks const&) { if (!collision.selection_bit(aod::evsel::kNoTimeFrameBorder)) { @@ -184,7 +184,7 @@ struct ChJetTriggerQATask { for (auto const& track : tracks) { // loop over filtered tracks in full TPC volume having pT > 100 MeV - auto const& originalTrack = track.track_as>(); + auto const& originalTrack = track.track_as(); spectra.fill(HIST("globalP_tpcglobalPDiff_withoutcuts"), track.p(), track.p() - originalTrack.tpcInnerParam());