Skip to content

Commit 708523b

Browse files
[PWGJE] jet/track QA: add IR QA; trackEfficiency: implement skipMBGapEvents (#10913)
1 parent fedf03b commit 708523b

File tree

2 files changed

+43
-17
lines changed

2 files changed

+43
-17
lines changed

PWGJE/Tasks/jetFinderQA.cxx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ struct JetFinderQATask {
7777
Configurable<int> trackOccupancyInTimeRangeMax{"trackOccupancyInTimeRangeMax", 999999, "maximum occupancy of tracks in neighbouring collisions in a given time range; only applied to reconstructed collisions (data and mcd jets), not mc collisions (mcp jets)"};
7878
Configurable<int> trackOccupancyInTimeRangeMin{"trackOccupancyInTimeRangeMin", -999999, "minimum occupancy of tracks in neighbouring collisions in a given time range; only applied to reconstructed collisions (data and mcd jets), not mc collisions (mcp jets)"};
7979
Configurable<bool> skipMBGapEvents{"skipMBGapEvents", false, "flag to choose to reject min. bias gap events; jet-level rejection applied at the jet finder level, here rejection is applied for collision and track process functions"};
80+
Configurable<int> intRateNBins{"intRateNBins", 50, "number of bins for interaction rate axis"};
81+
Configurable<float> intRateMax{"intRateMax", 50000.0, "maximum value of interaction rate axis"};
8082

8183
std::vector<bool> filledJetR_Both;
8284
std::vector<bool> filledJetR_Low;
@@ -136,7 +138,10 @@ struct JetFinderQATask {
136138
AxisSpec jetEtaAxis = {nBinsEta, jetEtaMin, jetEtaMax, "#eta"};
137139
AxisSpec trackEtaAxis = {nBinsEta, trackEtaMin, trackEtaMax, "#eta"};
138140

141+
AxisSpec intRateAxis = {intRateNBins, 0., intRateMax, "int. rate (kHz)"};
142+
139143
if (doprocessJetsData || doprocessJetsMCD || doprocessJetsMCDWeighted) {
144+
140145
registry.add("h_jet_pt", "jet pT;#it{p}_{T,jet} (GeV/#it{c});entries", {HistType::kTH1F, {jetPtAxis}});
141146
registry.add("h_jet_eta", "jet #eta;#eta_{jet};entries", {HistType::kTH1F, {jetEtaAxis}});
142147
registry.add("h_jet_phi", "jet #varphi;#varphi_{jet};entries", {HistType::kTH1F, {{160, -1.0, 7.}}});
@@ -159,6 +164,7 @@ struct JetFinderQATask {
159164
registry.add("h_jet_ptcut", "p_{T} cut;p_{T,jet} (GeV/#it{c});N;entries", {HistType::kTH2F, {{300, 0, 300}, {20, 0, 5}}});
160165
registry.add("h_jet_phat_weighted", "jet #hat{p};#hat{p} (GeV/#it{c});entries", {HistType::kTH1F, {{1000, 0, 1000}}});
161166
registry.add("h3_centrality_occupancy_jet_pt", "centrality; occupancy; #it{p}_{T,jet} (GeV/#it{c})", {HistType::kTH3F, {{120, -10.0, 110.0}, {60, 0, 30000}, jetPtAxis}});
167+
registry.add("h2_intrate_jet_pt", "int. rate vs #it{p}_{T,jet}; int. rate (kHz); #it{p}_{T,jet} (GeV/#it{c});", {HistType::kTH2F, {intRateAxis, jetPtAxis}});
162168
}
163169

164170
if (doprocessJetsRhoAreaSubData || doprocessJetsRhoAreaSubMCD) {
@@ -182,6 +188,7 @@ struct JetFinderQATask {
182188
registry.add("h3_jet_r_jet_pt_track_phi_rhoareasubtracted", "#it{R}_{jet};#it{p}_{T,jet} (GeV/#it{c});#varphi_{jet tracks}", {HistType::kTH3F, {{jetRadiiBins, ""}, jetPtAxisRhoAreaSub, {160, -1.0, 7.}}});
183189
registry.add("h3_jet_r_jet_pt_jet_pt_rhoareasubtracted", "#it{R}_{jet};#it{p}_{T,jet} (GeV/#it{c});#it{p}_{T,jet} (GeV/#it{c})", {HistType::kTH3F, {{jetRadiiBins, ""}, jetPtAxis, jetPtAxisRhoAreaSub}});
184190
registry.add("h3_centrality_occupancy_jet_pt_rhoareasubtracted", "centrality; occupancy; #it{p}_{T,jet} (GeV/#it{c})", {HistType::kTH3F, {{120, -10.0, 110.0}, {60, 0, 30000}, jetPtAxisRhoAreaSub}});
191+
registry.add("h2_intrate_jet_pt_rhoareasubtracted", "int. rate vs #it{p}_{T,jet}; int. rate (kHz); #it{p}_{T,jet} (GeV/#it{c});", {HistType::kTH2F, {intRateAxis, jetPtAxisRhoAreaSub}});
185192
}
186193

187194
if (doprocessEvtWiseConstSubJetsData || doprocessEvtWiseConstSubJetsMCD) {
@@ -202,6 +209,7 @@ struct JetFinderQATask {
202209
registry.add("h3_jet_r_jet_pt_track_pt_eventwiseconstituentsubtracted", "#it{R}_{jet};#it{p}_{T,jet} (GeV/#it{c});#it{p}_{T,jet tracks} (GeV/#it{c})", {HistType::kTH3F, {{jetRadiiBins, ""}, jetPtAxis, jetPtAxis}});
203210
registry.add("h3_jet_r_jet_pt_track_eta_eventwiseconstituentsubtracted", "#it{R}_{jet};#it{p}_{T,jet} (GeV/#it{c});#eta_{jet tracks}", {HistType::kTH3F, {{jetRadiiBins, ""}, jetPtAxis, trackEtaAxis}});
204211
registry.add("h3_jet_r_jet_pt_track_phi_eventwiseconstituentsubtracted", "#it{R}_{jet};#it{p}_{T,jet} (GeV/#it{c});#varphi_{jet tracks}", {HistType::kTH3F, {{jetRadiiBins, ""}, jetPtAxis, {160, -1.0, 7.}}});
212+
registry.add("h2_intrate_jet_pt_eventwiseconstituentsubtracted", "int. rate vs #it{p}_{T,jet}; int. rate (kHz); #it{p}_{T,jet} (GeV/#it{c});", {HistType::kTH2F, {intRateAxis, jetPtAxis}});
205213
}
206214

207215
if (doprocessRho) {
@@ -434,6 +442,7 @@ struct JetFinderQATask {
434442
registry.fill(HIST("h2_centrality_jet_phi"), centrality, jet.phi(), weight);
435443
registry.fill(HIST("h2_centrality_jet_ntracks"), centrality, jet.tracksIds().size(), weight);
436444
registry.fill(HIST("h3_centrality_occupancy_jet_pt"), centrality, occupancy, jet.pt(), weight);
445+
registry.fill(HIST("h2_intrate_jet_pt"), jet.collision().hadronicRate(), jet.pt(), weight);
437446
}
438447

439448
registry.fill(HIST("h3_jet_r_jet_pt_centrality"), jet.r() / 100.0, jet.pt(), centrality, weight);
@@ -466,6 +475,7 @@ struct JetFinderQATask {
466475
registry.fill(HIST("h2_centrality_jet_phi_rhoareasubtracted"), centrality, jet.phi(), weight);
467476
registry.fill(HIST("h2_centrality_jet_ntracks_rhoareasubtracted"), centrality, jet.tracksIds().size(), weight);
468477
}
478+
registry.fill(HIST("h2_intrate_jet_pt_rhoareasubtracted"), jet.collision().hadronicRate(), jet.pt() - (rho * jet.area()), weight);
469479
}
470480

471481
registry.fill(HIST("h3_jet_r_jet_pt_centrality_rhoareasubtracted"), jet.r() / 100.0, jet.pt() - (rho * jet.area()), centrality, weight);
@@ -496,6 +506,7 @@ struct JetFinderQATask {
496506
registry.fill(HIST("h2_centrality_jet_eta_eventwiseconstituentsubtracted"), centrality, jet.eta(), weight);
497507
registry.fill(HIST("h2_centrality_jet_phi_eventwiseconstituentsubtracted"), centrality, jet.phi(), weight);
498508
registry.fill(HIST("h2_centrality_jet_ntracks_eventwiseconstituentsubtracted"), centrality, jet.tracksIds().size(), weight);
509+
registry.fill(HIST("h2_intrate_jet_pt_eventwiseconstituentsubtracted"), jet.collision().hadronicRate(), jet.pt(), weight);
499510
}
500511

501512
registry.fill(HIST("h3_jet_r_jet_pt_centrality_eventwiseconstituentsubtracted"), jet.r() / 100.0, jet.pt(), centrality, weight);

PWGJE/Tasks/trackEfficiency.cxx

Lines changed: 32 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ struct TrackEfficiencyJets {
5252

5353
Configurable<std::string> eventSelections{"eventSelections", "sel8", "choose event selection"};
5454
Configurable<std::string> trackSelections{"trackSelections", "globalTracks", "set track selections; other option: uniformTracks"};
55+
Configurable<bool> skipMBGapEvents{"skipMBGapEvents", false, "flag to choose to reject min. bias gap events"};
5556

5657
// Tracking efficiency process function configurables:
5758
Configurable<bool> checkPrimaryPart{"checkPrimaryPart", true, "0: doesn't check mcparticle.isPhysicalPrimary() - 1: checks particle.isPhysicalPrimary()"};
@@ -72,6 +73,10 @@ struct TrackEfficiencyJets {
7273
Configurable<int> trackOccupancyInTimeRangeMax{"trackOccupancyInTimeRangeMax", 999999, "maximum occupancy of tracks in neighbouring collisions in a given time range; only applied for reconstructed tracks, not mc particles"};
7374
Configurable<int> trackOccupancyInTimeRangeMin{"trackOccupancyInTimeRangeMin", -999999, "minimum occupancy of tracks in neighbouring collisions in a given time range; only applied for reconstructed tracks, not mc particles"};
7475

76+
Configurable<std::vector<double>> centralityBinning{"centralityBinning", {0., 10., 50., 70.}, "binning of centrality histograms"};
77+
Configurable<int> intRateNBins{"intRateNBins", 50, "number of bins for interaction rate axis"};
78+
Configurable<float> intRateMax{"intRateMax", 50000.0, "maximum value of interaction rate axis"};
79+
7580
std::vector<int> eventSelectionBits;
7681
int trackSelection = -1;
7782

@@ -100,6 +105,7 @@ struct TrackEfficiencyJets {
100105
registry.fill(HIST("h2_track_pt_track_sigmapt"), track.pt(), track.sigma1Pt() * track.pt(), weight);
101106
registry.fill(HIST("h2_track_pt_high_track_sigma1overpt"), track.pt(), track.sigma1Pt(), weight);
102107
registry.fill(HIST("h2_track_pt_high_track_sigmapt"), track.pt(), track.sigma1Pt() * track.pt(), weight);
108+
registry.fill(HIST("h3_intrate_centrality_track_pt"), collision.hadronicRate(), collision.centrality(), track.pt(), weight);
103109
}
104110
}
105111

@@ -111,6 +117,7 @@ struct TrackEfficiencyJets {
111117
registry.fill(HIST("h2_centrality_particle_eta"), collision.centrality(), mcparticle.eta(), weight);
112118
registry.fill(HIST("h2_centrality_particle_phi"), collision.centrality(), mcparticle.phi(), weight);
113119
registry.fill(HIST("h2_centrality_particle_energy"), collision.centrality(), mcparticle.energy(), weight);
120+
registry.fill(HIST("h3_intrate_centrality_particle_pt"), collision.hadronicRate(), collision.centrality(), mcparticle.pt(), weight);
114121
}
115122
}
116123

@@ -182,7 +189,8 @@ struct TrackEfficiencyJets {
182189
}
183190

184191
if (doprocessTracks || doprocessTracksWeighted) {
185-
AxisSpec centAxis = {121, -10., 111., "centrality (%)"};
192+
AxisSpec centAxis = {centralityBinning, "centrality (%)"};
193+
AxisSpec intRateAxis = {intRateNBins, 0., intRateMax, "int. rate (kHz)"};
186194
registry.add("h2_centrality_track_pt", "centrality vs track pT; centrality; #it{p}_{T,track} (GeV/#it{c})", {HistType::kTH2F, {centAxis, {200, 0., 200.}}});
187195
registry.add("h2_centrality_track_eta", "centrality vs track #eta; centrality; #eta_{track}", {HistType::kTH2F, {centAxis, {100, -1.0, 1.0}}});
188196
registry.add("h2_centrality_track_phi", "centrality vs track #varphi; centrality; #varphi_{track}", {HistType::kTH2F, {centAxis, {160, -1.0, 7.}}});
@@ -191,24 +199,27 @@ struct TrackEfficiencyJets {
191199
registry.add("h2_track_pt_high_track_sigmapt", "#sigma(#it{p}_{T})/#it{p}_{T}; #it{p}_{T,track} (GeV/#it{c})", {HistType::kTH2F, {{90, 10., 100.}, {100000, 0.0, 100.0}}});
192200
registry.add("h2_track_pt_track_sigma1overpt", "#sigma(1/#it{p}_{T}); #it{p}_{T,track} (GeV/#it{c})", {HistType::kTH2F, {{100, 0., 10.}, {1000, 0.0, 10.0}}});
193201
registry.add("h2_track_pt_high_track_sigma1overpt", "#sigma(1/#it{p}_{T}); #it{p}_{T,track} (GeV/#it{c})", {HistType::kTH2F, {{90, 10., 100.}, {1000, 0.0, 10.0}}});
202+
registry.add("h3_intrate_centrality_track_pt", "interaction rate vs centrality vs track pT; int. rate; centrality; #it{p}_{T,track} (GeV/#it{c})", {HistType::kTH3F, {intRateAxis, centAxis, {200, 0., 200.}}});
194203
}
195204

196205
if (doprocessParticles || doprocessParticlesWeighted) {
197-
AxisSpec centAxis = {121, -10., 111., "centrality (%)"};
198-
registry.add("h2_centrality_particle_pt", "centrality vs track pT; centrality; #it{p}_{T,track} (GeV/#it{c})", {HistType::kTH2F, {centAxis, {200, 0., 200.}}});
199-
registry.add("h2_centrality_particle_eta", "centrality vs track #eta; centrality; #eta_{track}", {HistType::kTH2F, {centAxis, {100, -1.0, 1.0}}});
200-
registry.add("h2_centrality_particle_phi", "centrality vs track #varphi; centrality; #varphi_{track}", {HistType::kTH2F, {centAxis, {160, -1.0, 7.}}});
201-
registry.add("h2_centrality_particle_energy", "centrality vs track energy; centrality; Energy GeV", {HistType::kTH2F, {centAxis, {100, 0.0, 100.0}}});
206+
AxisSpec centAxis = {centralityBinning, "centrality (%)"};
207+
AxisSpec intRateAxis = {intRateNBins, 0., intRateMax, "int. rate (kHz)"};
208+
registry.add("h2_centrality_particle_pt", "centrality vs particle pT; centrality; #it{p}_{T,part} (GeV/#it{c})", {HistType::kTH2F, {centAxis, {200, 0., 200.}}});
209+
registry.add("h2_centrality_particle_eta", "centrality vs particle #eta; centrality; #eta_{part}", {HistType::kTH2F, {centAxis, {100, -1.0, 1.0}}});
210+
registry.add("h2_centrality_particle_phi", "centrality vs particle #varphi; centrality; #varphi_{part}", {HistType::kTH2F, {centAxis, {160, -1.0, 7.}}});
211+
registry.add("h2_centrality_particle_energy", "centrality vs particle energy; centrality; Energy GeV", {HistType::kTH2F, {centAxis, {100, 0.0, 100.0}}});
212+
registry.add("h3_intrate_centrality_particle_pt", "interaction rate vs centrality vs particle pT; int. rate; centrality; #it{p}_{T,part} (GeV/#it{c})", {HistType::kTH3F, {intRateAxis, centAxis, {200, 0., 200.}}});
202213
}
203214

204215
if (doprocessTracks || doprocessTracksWeighted) {
205-
AxisSpec centAxis = {121, -10., 111., "centrality (%)"};
216+
AxisSpec centAxis = {centralityBinning, "centrality (%)"};
206217
registry.add("h_collisions", "event status;event status;entries", {HistType::kTH1F, {{4, 0.0, 4.0}}});
207218
registry.add("h_fakecollisions", "event status;event status;entries", {HistType::kTH1F, {{4, 0.0, 4.0}}});
208219
registry.add("h2_centrality_collisions", "centrality vs collisions; centrality; collisions", {HistType::kTH2F, {centAxis, {4, 0.0, 4.0}}});
209220
}
210221
if (doprocessParticles || doprocessParticlesWeighted) {
211-
AxisSpec centAxis = {121, -10., 111., "centrality (%)"};
222+
AxisSpec centAxis = {centralityBinning, "centrality (%)"};
212223
registry.add("h_mccollisions", "event status;event status;entries", {HistType::kTH1F, {{4, 0.0, 4.0}}});
213224
registry.add("h2_centrality_mccollisions", "centrality vs mccollisions; centrality; collisions", {HistType::kTH2F, {centAxis, {4, 0.0, 4.0}}});
214225
}
@@ -258,15 +269,15 @@ struct TrackEfficiencyJets {
258269
bool hasSel8Coll = false;
259270
bool centralityCheck = false;
260271
if (acceptSplitCollisions == 2) { // check only that the first reconstructed collision passes the check
261-
if (jetderiveddatautilities::selectCollision(collisions.begin(), eventSelectionBits)) { // Skipping MC events that have not a single selected reconstructed collision ; effect unclear if mcColl is split
272+
if (jetderiveddatautilities::selectCollision(collisions.begin(), eventSelectionBits, skipMBGapEvents)) { // Skipping MC events that have not a single selected reconstructed collision ; effect unclear if mcColl is split
262273
hasSel8Coll = true;
263274
}
264275
if (!checkCentrality || ((centralityMin < collisions.begin().centrality()) && (collisions.begin().centrality() < centralityMax))) { // effect unclear if mcColl is split
265276
centralityCheck = true;
266277
}
267278
} else { // check that at least one of the reconstructed collisions passes the checks
268279
for (auto& collision : collisions) {
269-
if (jetderiveddatautilities::selectCollision(collision, eventSelectionBits)) { // Skipping MC events that have not a single selected reconstructed collision ; effect unclear if mcColl is split
280+
if (jetderiveddatautilities::selectCollision(collision, eventSelectionBits, skipMBGapEvents)) { // Skipping MC events that have not a single selected reconstructed collision ; effect unclear if mcColl is split
270281
hasSel8Coll = true;
271282
}
272283
if (!checkCentrality || ((centralityMin < collision.centrality()) && (collision.centrality() < centralityMax))) { // effect unclear if mcColl is split
@@ -317,7 +328,7 @@ struct TrackEfficiencyJets {
317328
return;
318329
}
319330

320-
if (!jetderiveddatautilities::selectCollision(collision, eventSelectionBits) || !(abs(collision.posZ()) < vertexZCut)) {
331+
if (!jetderiveddatautilities::selectCollision(collision, eventSelectionBits, skipMBGapEvents) || !(abs(collision.posZ()) < vertexZCut)) {
321332
continue;
322333
}
323334

@@ -392,7 +403,7 @@ struct TrackEfficiencyJets {
392403
{
393404
registry.fill(HIST("h_collisions"), 0.5);
394405
registry.fill(HIST("h2_centrality_collisions"), collision.centrality(), 0.5);
395-
if (!jetderiveddatautilities::selectCollision(collision, eventSelectionBits)) {
406+
if (!jetderiveddatautilities::selectCollision(collision, eventSelectionBits, skipMBGapEvents)) {
396407
return;
397408
}
398409
registry.fill(HIST("h_collisions"), 1.5);
@@ -417,7 +428,7 @@ struct TrackEfficiencyJets {
417428
float eventWeight = collision.mcCollision().weight();
418429
registry.fill(HIST("h_collisions"), 0.5);
419430
registry.fill(HIST("h_collisions_weighted"), 0.5, eventWeight);
420-
if (!jetderiveddatautilities::selectCollision(collision, eventSelectionBits)) {
431+
if (!jetderiveddatautilities::selectCollision(collision, eventSelectionBits, skipMBGapEvents)) {
421432
return;
422433
}
423434
registry.fill(HIST("h_collisions"), 1.5);
@@ -451,15 +462,15 @@ struct TrackEfficiencyJets {
451462
bool hasSel8Coll = false;
452463
bool centralityCheck = false;
453464
if (acceptSplitCollisions == 2) { // check only that the first reconstructed collision passes the check
454-
if (jetderiveddatautilities::selectCollision(collisions.begin(), eventSelectionBits)) { // Skipping MC events that have not a single selected reconstructed collision ; effect unclear if mcColl is split
465+
if (jetderiveddatautilities::selectCollision(collisions.begin(), eventSelectionBits, skipMBGapEvents)) { // Skipping MC events that have not a single selected reconstructed collision ; effect unclear if mcColl is split
455466
hasSel8Coll = true;
456467
}
457468
if (!checkCentrality || ((centralityMin < collisions.begin().centrality()) && (collisions.begin().centrality() < centralityMax))) { // effect unclear if mcColl is split
458469
centralityCheck = true;
459470
}
460471
} else { // check that at least one of the reconstructed collisions passes the checks
461472
for (auto& collision : collisions) {
462-
if (jetderiveddatautilities::selectCollision(collision, eventSelectionBits)) { // Skipping MC events that have not a single selected reconstructed collision ; effect unclear if mcColl is split
473+
if (jetderiveddatautilities::selectCollision(collision, eventSelectionBits, skipMBGapEvents)) { // Skipping MC events that have not a single selected reconstructed collision ; effect unclear if mcColl is split
463474
hasSel8Coll = true;
464475
}
465476
if (!checkCentrality || ((centralityMin < collision.centrality()) && (collision.centrality() < centralityMax))) { // effect unclear if mcColl is split
@@ -484,6 +495,10 @@ struct TrackEfficiencyJets {
484495
soa::SmallGroups<aod::JetCollisionsMCD> const& collisions,
485496
soa::Filtered<aod::JetParticles> const& mcparticles)
486497
{
498+
if (skipMBGapEvents && mcCollision.subGeneratorId() == jetderiveddatautilities::JCollisionSubGeneratorId::mbGap) {
499+
return;
500+
}
501+
487502
float eventWeight = mcCollision.weight();
488503
registry.fill(HIST("h_mccollisions"), 0.5);
489504
registry.fill(HIST("h_mccollisions_weighted"), 0.5, eventWeight);
@@ -501,15 +516,15 @@ struct TrackEfficiencyJets {
501516
bool hasSel8Coll = false;
502517
bool centralityCheck = false;
503518
if (acceptSplitCollisions == 2) { // check only that the first reconstructed collision passes the check
504-
if (jetderiveddatautilities::selectCollision(collisions.begin(), eventSelectionBits)) { // Skipping MC events that have not a single selected reconstructed collision ; effect unclear if mcColl is split
519+
if (jetderiveddatautilities::selectCollision(collisions.begin(), eventSelectionBits, skipMBGapEvents)) { // Skipping MC events that have not a single selected reconstructed collision ; effect unclear if mcColl is split
505520
hasSel8Coll = true;
506521
}
507522
if (!checkCentrality || ((centralityMin < collisions.begin().centrality()) && (collisions.begin().centrality() < centralityMax))) { // effect unclear if mcColl is split
508523
centralityCheck = true;
509524
}
510525
} else { // check that at least one of the reconstructed collisions passes the checks
511526
for (auto& collision : collisions) {
512-
if (jetderiveddatautilities::selectCollision(collision, eventSelectionBits)) { // Skipping MC events that have not a single selected reconstructed collision ; effect unclear if mcColl is split
527+
if (jetderiveddatautilities::selectCollision(collision, eventSelectionBits, skipMBGapEvents)) { // Skipping MC events that have not a single selected reconstructed collision ; effect unclear if mcColl is split
513528
hasSel8Coll = true;
514529
}
515530
if (!checkCentrality || ((centralityMin < collision.centrality()) && (collision.centrality() < centralityMax))) { // effect unclear if mcColl is split

0 commit comments

Comments
 (0)