Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 26 additions & 28 deletions PWGJE/Tasks/jetFinderQA.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -424,10 +424,9 @@
}

template <typename T>
void fillHistograms(T const& jet, float centrality, float occupancy, float hadronicRate, float weight = 1.0)
void fillHistograms(T const& jet, float centrality, float occupancy, float hadronicRate, float weight = 1.0, float pTHat = 999.)
{

float pTHat = 10. / (std::pow(weight, 1.0 / pTHatExponent));
if (jet.pt() > pTHatMaxMCD * pTHat || pTHat < pTHatAbsoluteMin) {
return;
}
Expand All @@ -454,7 +453,7 @@
registry.fill(HIST("h3_jet_r_jet_pt_jet_ntracks"), jet.r() / 100.0, jet.pt(), jet.tracksIds().size(), weight);
registry.fill(HIST("h3_jet_r_jet_pt_jet_area"), jet.r() / 100.0, jet.pt(), jet.area(), weight);

for (auto& constituent : jet.template tracks_as<aod::JetTracks>()) {

Check failure on line 456 in PWGJE/Tasks/jetFinderQA.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.

registry.fill(HIST("h3_jet_r_jet_pt_track_pt"), jet.r() / 100.0, jet.pt(), constituent.pt(), weight);
registry.fill(HIST("h3_jet_r_jet_pt_track_eta"), jet.r() / 100.0, jet.pt(), constituent.eta(), weight);
Expand Down Expand Up @@ -488,7 +487,7 @@
registry.fill(HIST("h3_jet_r_jet_pt_jet_area_rhoareasubtracted"), jet.r() / 100.0, jet.pt() - (rho * jet.area()), jet.area(), weight);
registry.fill(HIST("h3_jet_r_jet_pt_jet_pt_rhoareasubtracted"), jet.r() / 100.0, jet.pt(), jet.pt() - (rho * jet.area()), weight);

for (auto& constituent : jet.template tracks_as<aod::JetTracks>()) {

Check failure on line 490 in PWGJE/Tasks/jetFinderQA.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.

registry.fill(HIST("h3_jet_r_jet_pt_track_pt_rhoareasubtracted"), jet.r() / 100.0, jet.pt() - (rho * jet.area()), constituent.pt(), weight);
registry.fill(HIST("h3_jet_r_jet_pt_track_eta_rhoareasubtracted"), jet.r() / 100.0, jet.pt() - (rho * jet.area()), constituent.eta(), weight);
Expand Down Expand Up @@ -518,7 +517,7 @@
registry.fill(HIST("h3_jet_r_jet_pt_jet_ntracks_eventwiseconstituentsubtracted"), jet.r() / 100.0, jet.pt(), jet.tracksIds().size(), weight);
registry.fill(HIST("h3_jet_r_jet_pt_jet_area_eventwiseconstituentsubtracted"), jet.r() / 100.0, jet.pt(), jet.area(), weight);

for (auto& constituent : jet.template tracks_as<aod::JetTracksSub>()) {

Check failure on line 520 in PWGJE/Tasks/jetFinderQA.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.

registry.fill(HIST("h3_jet_r_jet_pt_track_pt_eventwiseconstituentsubtracted"), jet.r() / 100.0, jet.pt(), constituent.pt(), weight);
registry.fill(HIST("h3_jet_r_jet_pt_track_eta_eventwiseconstituentsubtracted"), jet.r() / 100.0, jet.pt(), constituent.eta(), weight);
Expand All @@ -527,10 +526,9 @@
}

template <typename T>
void fillMCPHistograms(T const& jet, float weight = 1.0)
void fillMCPHistograms(T const& jet, float weight = 1.0, float pTHat = 999.)
{

float pTHat = 10. / (std::pow(weight, 1.0 / pTHatExponent));
if (jet.pt() > pTHatMaxMCP * pTHat || pTHat < pTHatAbsoluteMin) {
return;
}
Expand All @@ -549,7 +547,7 @@
registry.fill(HIST("h3_jet_r_part_jet_eta_part_jet_phi_part"), jet.r() / 100.0, jet.eta(), jet.phi(), weight);
registry.fill(HIST("h3_jet_r_part_jet_pt_part_jet_ntracks_part"), jet.r() / 100.0, jet.pt(), jet.tracksIds().size(), weight);

for (auto& constituent : jet.template tracks_as<aod::JetParticles>()) {

Check failure on line 550 in PWGJE/Tasks/jetFinderQA.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.

registry.fill(HIST("h3_jet_r_part_jet_pt_part_track_pt_part"), jet.r() / 100.0, jet.pt(), constituent.pt(), weight);
registry.fill(HIST("h3_jet_r_part_jet_pt_part_track_eta_part"), jet.r() / 100.0, jet.pt(), constituent.eta(), weight);
Expand All @@ -558,15 +556,14 @@
}

template <typename T, typename U>
void fillMatchedHistograms(T const& jetBase, float leadingTrackPtBase, float weight = 1.0)
void fillMatchedHistograms(T const& jetBase, float leadingTrackPtBase, float weight = 1.0, float pTHat = 999.)
{
float pTHat = 10. / (std::pow(weight, 1.0 / pTHatExponent));
if (jetBase.pt() > pTHatMaxMCD * pTHat || pTHat < pTHatAbsoluteMin) {
return;
}

if (jetBase.has_matchedJetGeo()) {
for (auto& jetTag : jetBase.template matchedJetGeo_as<std::decay_t<U>>()) {

Check failure on line 566 in PWGJE/Tasks/jetFinderQA.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
if (jetTag.pt() > pTHatMaxMCP * pTHat) {
continue;
}
Expand All @@ -578,7 +575,7 @@
registry.fill(HIST("h3_jet_r_jet_pt_tag_jet_eta_base_diff_matchedgeo"), jetBase.r() / 100.0, jetTag.pt(), jetTag.eta() - jetBase.eta(), weight);
registry.fill(HIST("h3_jet_r_jet_pt_tag_jet_phi_base_diff_matchedgeo"), jetBase.r() / 100.0, jetTag.pt(), jetTag.phi() - jetBase.phi(), weight);
float leadingTrackPtTag = 0.;
for (auto& constituent : jetTag.template tracks_as<aod::JetParticles>()) {

Check failure on line 578 in PWGJE/Tasks/jetFinderQA.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
if (constituent.pt() > leadingTrackPtTag) {
leadingTrackPtTag = constituent.pt();
}
Expand All @@ -602,7 +599,7 @@
}
}
if (jetBase.has_matchedJetPt()) {
for (auto& jetTag : jetBase.template matchedJetPt_as<std::decay_t<U>>()) {

Check failure on line 602 in PWGJE/Tasks/jetFinderQA.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
if (jetTag.pt() > pTHatMaxMCP * pTHat) {
continue;
}
Expand All @@ -614,7 +611,7 @@
registry.fill(HIST("h3_jet_r_jet_pt_tag_jet_eta_base_diff_matchedpt"), jetBase.r() / 100.0, jetTag.pt(), jetTag.eta() - jetBase.eta(), weight);
registry.fill(HIST("h3_jet_r_jet_pt_tag_jet_phi_base_diff_matchedpt"), jetBase.r() / 100.0, jetTag.pt(), jetTag.phi() - jetBase.phi(), weight);
float leadingTrackPtTag = 0.;
for (auto& constituent : jetTag.template tracks_as<aod::JetParticles>()) {

Check failure on line 614 in PWGJE/Tasks/jetFinderQA.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
if (constituent.pt() > leadingTrackPtTag) {
leadingTrackPtTag = constituent.pt();
}
Expand All @@ -634,7 +631,7 @@

if (jetBase.has_matchedJetGeo() && jetBase.has_matchedJetPt()) {

for (auto& jetTag : jetBase.template matchedJetGeo_as<std::decay_t<U>>()) {

Check failure on line 634 in PWGJE/Tasks/jetFinderQA.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
if (jetTag.pt() > pTHatMaxMCP * pTHat) {
continue;
}
Expand All @@ -648,7 +645,7 @@
registry.fill(HIST("h3_jet_r_jet_pt_tag_jet_eta_base_diff_matchedgeopt"), jetBase.r() / 100.0, jetTag.pt(), jetTag.eta() - jetBase.eta(), weight);
registry.fill(HIST("h3_jet_r_jet_pt_tag_jet_phi_base_diff_matchedgeopt"), jetBase.r() / 100.0, jetTag.pt(), jetTag.phi() - jetBase.phi(), weight);
float leadingTrackPtTag = 0.;
for (auto& constituent : jetTag.template tracks_as<aod::JetParticles>()) {

Check failure on line 648 in PWGJE/Tasks/jetFinderQA.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
if (constituent.pt() > leadingTrackPtTag) {
leadingTrackPtTag = constituent.pt();
}
Expand All @@ -669,9 +666,8 @@
}

template <typename T, typename U>
void fillTrackHistograms(T const& collision, U const& tracks, float weight = 1.0)
void fillTrackHistograms(T const& collision, U const& tracks, float weight = 1.0, float pTHat = 999.)
{
float pTHat = 10. / (std::pow(weight, 1.0 / pTHatExponent));
if (pTHat < pTHatAbsoluteMin) {
return;
}
Expand Down Expand Up @@ -888,7 +884,7 @@
}
PROCESS_SWITCH(JetFinderQATask, processJetsSubMatched, "jet finder QA matched unsubtracted and constituent subtracted jets", false);

void processJetsMCD(soa::Filtered<aod::JetCollisions>::iterator const& collision, soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents> const& jets, aod::JetTracks const&)
void processJetsMCD(soa::Filtered<soa::Join<aod::JetCollisions, aod::JMcCollisionLbs>>::iterator const& collision, aod::JetMcCollisions const&, soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents> const& jets, aod::JetTracks const&)
{
if (collision.trackOccupancyInTimeRange() < trackOccupancyInTimeRangeMin || trackOccupancyInTimeRangeMax < collision.trackOccupancyInTimeRange()) {
return;
Expand All @@ -900,12 +896,12 @@
if (!isAcceptedJet<aod::JetTracks>(jet)) {
continue;
}
fillHistograms(jet, collision.centFT0M(), collision.trackOccupancyInTimeRange(), collision.hadronicRate());
fillHistograms(jet, collision.centFT0M(), collision.trackOccupancyInTimeRange(), collision.hadronicRate(), 1., collision.mcCollision().ptHard());
}
}
PROCESS_SWITCH(JetFinderQATask, processJetsMCD, "jet finder QA mcd", false);

void processJetsMCDWeighted(soa::Filtered<soa::Join<aod::JetCollisions, aod::JCollisionOutliers>>::iterator const& collision, soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents> const& jets, aod::JetTracks const&)
void processJetsMCDWeighted(soa::Filtered<soa::Join<aod::JetCollisions, aod::JMcCollisionLbs, aod::JCollisionOutliers>>::iterator const& collision, aod::JetMcCollisions const&, soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents> const& jets, aod::JetTracks const&)
{
if (collision.trackOccupancyInTimeRange() < trackOccupancyInTimeRangeMin || trackOccupancyInTimeRangeMax < collision.trackOccupancyInTimeRange()) {
return;
Expand All @@ -920,32 +916,32 @@
if (!isAcceptedJet<aod::JetTracks>(jet)) {
continue;
}
double pTHat = 10. / (std::pow(collision.weight(), 1.0 / pTHatExponent));
for (int N = 1; N < 21; N++) {
if (jet.pt() < N * 0.25 * pTHat && jet.r() == round(selectedJetsRadius * 100.0f)) {
if (jet.pt() < N * 0.25 * collision.mcCollision().ptHard() && jet.r() == round(selectedJetsRadius * 100.0f)) {
registry.fill(HIST("h_jet_ptcut"), jet.pt(), N * 0.25, collision.weight());
}
}
fillHistograms(jet, collision.centFT0M(), collision.trackOccupancyInTimeRange(), collision.hadronicRate(), collision.weight());
fillHistograms(jet, collision.centFT0M(), collision.trackOccupancyInTimeRange(), collision.hadronicRate(), collision.weight(), collision.mcCollision().ptHard());
}
}
PROCESS_SWITCH(JetFinderQATask, processJetsMCDWeighted, "jet finder QA mcd with weighted events", false);

void processJetsMCP(soa::Join<aod::ChargedMCParticleLevelJets, aod::ChargedMCParticleLevelJetConstituents>::iterator const& jet, aod::JetParticles const&, aod::JetMcCollisions const&, soa::Filtered<aod::JetCollisionsMCD> const& collisions)
void processJetsMCP(soa::Join<aod::ChargedMCParticleLevelJets, aod::ChargedMCParticleLevelJetConstituents>::iterator const& jet, aod::JetParticles const&, soa::Join<aod::JetMcCollisions, aod::JMcCollisionPIs> const& mcCollisions, soa::Filtered<aod::JetCollisionsMCD> const& collisions)
{
if (!jetfindingutilities::isInEtaAcceptance(jet, jetEtaMin, jetEtaMax, trackEtaMin, trackEtaMax)) {
return;
}
if (!isAcceptedJet<aod::JetParticles>(jet)) {
return;
}
auto mcCollision = mcCollisions.sliceBy(McCollisionsPerMCPCollision, jet.mcCollisionId());
if (checkMcCollisionIsMatched) {
auto collisionspermcpjet = collisions.sliceBy(CollisionsPerMCPCollision, jet.mcCollisionId());
if (collisionspermcpjet.size() >= 1 && jetderiveddatautilities::selectCollision(collisionspermcpjet.begin(), eventSelectionBits)) {
fillMCPHistograms(jet);
fillMCPHistograms(jet, 1., mcCollision.begin().ptHard());
}
} else {
fillMCPHistograms(jet);
fillMCPHistograms(jet, 1., mcCollision.begin().ptHard());
}
}
PROCESS_SWITCH(JetFinderQATask, processJetsMCP, "jet finder QA mcp", false);
Expand All @@ -960,25 +956,25 @@
}
auto mcCollision = mcCollisions.sliceBy(McCollisionsPerMCPCollision, jet.mcCollisionId());
if (mcCollision.size() == 1) {
double pTHat = 10. / (std::pow(mcCollision.begin().weight(), 1.0 / pTHatExponent));
for (int N = 1; N < 21; N++) {
if (jet.pt() < N * 0.25 * pTHat && jet.r() == round(selectedJetsRadius * 100.0f)) {
if (jet.pt() < N * 0.25 * mcCollision.begin().ptHard() && jet.r() == round(selectedJetsRadius * 100.0f)) {
registry.fill(HIST("h_jet_ptcut_part"), jet.pt(), N * 0.25, mcCollision.begin().weight());
}
}
if (checkMcCollisionIsMatched) {
auto collisionspermcpjet = collisions.sliceBy(CollisionsPerMCPCollision, jet.mcCollisionId());
if (collisionspermcpjet.size() >= 1 && jetderiveddatautilities::selectCollision(collisionspermcpjet.begin(), eventSelectionBits) && !collisionspermcpjet.begin().isOutlier()) {
fillMCPHistograms(jet, mcCollision.begin().weight());
fillMCPHistograms(jet, mcCollision.begin().weight(), mcCollision.begin().ptHard());
}
} else {
fillMCPHistograms(jet, mcCollision.begin().weight());
fillMCPHistograms(jet, mcCollision.begin().weight(), mcCollision.begin().ptHard());
}
}
}
PROCESS_SWITCH(JetFinderQATask, processJetsMCPWeighted, "jet finder QA mcp with weighted events", false);

void processJetsMCPMCDMatched(soa::Filtered<aod::JetCollisions>::iterator const& collision,
void processJetsMCPMCDMatched(soa::Filtered<soa::Join<aod::JetCollisions, aod::JMcCollisionLbs>>::iterator const& collision,
aod::JetMcCollisions const&,
soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents, aod::ChargedMCDetectorLevelJetsMatchedToChargedMCParticleLevelJets> const& mcdjets,
soa::Join<aod::ChargedMCParticleLevelJets, aod::ChargedMCParticleLevelJetConstituents, aod::ChargedMCParticleLevelJetsMatchedToChargedMCDetectorLevelJets> const&,
aod::JetTracks const&, aod::JetParticles const&)
Expand All @@ -999,12 +995,13 @@
leadingTrackPtBase = constituent.pt();
}
}
fillMatchedHistograms<soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents, aod::ChargedMCDetectorLevelJetsMatchedToChargedMCParticleLevelJets>::iterator, soa::Join<aod::ChargedMCParticleLevelJets, aod::ChargedMCParticleLevelJetConstituents, aod::ChargedMCParticleLevelJetsMatchedToChargedMCDetectorLevelJets>>(mcdjet, leadingTrackPtBase);
fillMatchedHistograms<soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents, aod::ChargedMCDetectorLevelJetsMatchedToChargedMCParticleLevelJets>::iterator, soa::Join<aod::ChargedMCParticleLevelJets, aod::ChargedMCParticleLevelJetConstituents, aod::ChargedMCParticleLevelJetsMatchedToChargedMCDetectorLevelJets>>(mcdjet, leadingTrackPtBase, 1., collision.mcCollision().ptHard());
}
}
PROCESS_SWITCH(JetFinderQATask, processJetsMCPMCDMatched, "jet finder QA matched mcp and mcd", false);

void processJetsMCPMCDMatchedWeighted(soa::Filtered<soa::Join<aod::JetCollisions, aod::JCollisionOutliers>>::iterator const& collision,
void processJetsMCPMCDMatchedWeighted(soa::Filtered<soa::Join<aod::JetCollisions, aod::JMcCollisionLbs, aod::JCollisionOutliers>>::iterator const& collision,
aod::JetMcCollisions const&,
soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents, aod::ChargedMCDetectorLevelJetsMatchedToChargedMCParticleLevelJets> const& mcdjets,
soa::Join<aod::ChargedMCParticleLevelJets, aod::ChargedMCParticleLevelJetConstituents, aod::ChargedMCParticleLevelJetsMatchedToChargedMCDetectorLevelJets> const&,
aod::JetTracks const&, aod::JetParticles const&)
Expand All @@ -1028,7 +1025,7 @@
leadingTrackPtBase = constituent.pt();
}
}
fillMatchedHistograms<soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents, aod::ChargedMCDetectorLevelJetsMatchedToChargedMCParticleLevelJets>::iterator, soa::Join<aod::ChargedMCParticleLevelJets, aod::ChargedMCParticleLevelJetConstituents, aod::ChargedMCParticleLevelJetsMatchedToChargedMCDetectorLevelJets>>(mcdjet, leadingTrackPtBase, collision.weight());
fillMatchedHistograms<soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents, aod::ChargedMCDetectorLevelJetsMatchedToChargedMCParticleLevelJets>::iterator, soa::Join<aod::ChargedMCParticleLevelJets, aod::ChargedMCParticleLevelJetConstituents, aod::ChargedMCParticleLevelJetsMatchedToChargedMCDetectorLevelJets>>(mcdjet, leadingTrackPtBase, collision.weight(), collision.mcCollision().ptHard());
}
}
PROCESS_SWITCH(JetFinderQATask, processJetsMCPMCDMatchedWeighted, "jet finder QA matched mcp and mcd with weighted events", false);
Expand Down Expand Up @@ -1176,7 +1173,8 @@
}
PROCESS_SWITCH(JetFinderQATask, processTriggeredData, "QA for charged jet trigger", false);

void processTracks(soa::Filtered<aod::JetCollisions>::iterator const& collision,
void processTracks(soa::Filtered<soa::Join<aod::JetCollisions, aod::JMcCollisionLbs>>::iterator const& collision,
aod::JetMcCollisions const&,
soa::Filtered<soa::Join<aod::JetTracks, aod::JTrackExtras>> const& tracks)
{
if (skipMBGapEvents && collision.subGeneratorId() == jetderiveddatautilities::JCollisionSubGeneratorId::mbGap) {
Expand All @@ -1194,7 +1192,7 @@
}
registry.fill(HIST("h_collisions"), 2.5);
registry.fill(HIST("h2_centrality_collisions"), collision.centFT0M(), 2.5);
fillTrackHistograms(collision, tracks);
fillTrackHistograms(collision, tracks, 1., collision.mcCollision().ptHard());
}
PROCESS_SWITCH(JetFinderQATask, processTracks, "QA for charged tracks", false);

Expand Down Expand Up @@ -1223,7 +1221,7 @@
}
registry.fill(HIST("h_collisions"), 3.5);
registry.fill(HIST("h_collisions_weighted"), 3.5, eventWeight);
fillTrackHistograms(collision, tracks, eventWeight);
fillTrackHistograms(collision, tracks, eventWeight, collision.mcCollision().ptHard());
}
PROCESS_SWITCH(JetFinderQATask, processTracksWeighted, "QA for charged tracks weighted", false);

Expand Down
Loading