|
14 | 14 | /// \author Nima Zardoshti <nima.zardoshti@cern.ch> |
15 | 15 |
|
16 | 16 | #include <cmath> |
| 17 | +#include <vector> |
| 18 | +#include <string> |
| 19 | +#include <algorithm> |
17 | 20 | #include <TRandom3.h> |
18 | 21 |
|
19 | 22 | #include "Framework/ASoA.h" |
@@ -325,6 +328,18 @@ struct JetFinderQATask { |
325 | 328 | AxisSpec weightAxis = {{VARIABLE_WIDTH, 1e-13, 1e-12, 1e-11, 1e-10, 1e-9, 1e-8, 1e-7, 1e-6, 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1.0, 10.0}, "weights"}; |
326 | 329 | registry.add("h_collision_eventweight_part", "event weight;event weight;entries", {HistType::kTH1F, {weightAxis}}); |
327 | 330 | } |
| 331 | + |
| 332 | + AxisSpec occupancyAxis = {142, -1.5, 14000.5, "occupancy"}; |
| 333 | + AxisSpec nTracksAxis = {16001, -1., 16000, "n tracks"}; |
| 334 | + |
| 335 | + if (doprocessOccupancyQA) { |
| 336 | + registry.add("h2_occupancy_ntracksall_presel", "occupancy vs N_{tracks}; occupancy; N_{tracks}", {HistType::kTH2I, {occupancyAxis, nTracksAxis}}); |
| 337 | + registry.add("h2_occupancy_ntracksall_postsel", "occupancy vs N_{tracks}; occupancy; N_{tracks}", {HistType::kTH2I, {occupancyAxis, nTracksAxis}}); |
| 338 | + registry.add("h2_occupancy_ntrackssel_presel", "occupancy vs N_{tracks}; occupancy; N_{tracks}", {HistType::kTH2I, {occupancyAxis, nTracksAxis}}); |
| 339 | + registry.add("h2_occupancy_ntrackssel_postsel", "occupancy vs N_{tracks}; occupancy; N_{tracks}", {HistType::kTH2I, {occupancyAxis, nTracksAxis}}); |
| 340 | + registry.add("h2_occupancy_ntracksselptetacuts_presel", "occupancy vs N_{tracks}; occupancy; N_{tracks}", {HistType::kTH2I, {occupancyAxis, nTracksAxis}}); |
| 341 | + registry.add("h2_occupancy_ntracksselptetacuts_postsel", "occupancy vs N_{tracks}; occupancy; N_{tracks}", {HistType::kTH2I, {occupancyAxis, nTracksAxis}}); |
| 342 | + } |
328 | 343 | } |
329 | 344 |
|
330 | 345 | Filter trackCuts = (aod::jtrack::pt >= trackPtMin && aod::jtrack::pt < trackPtMax && aod::jtrack::eta > trackEtaMin && aod::jtrack::eta < trackEtaMax); |
@@ -1168,6 +1183,35 @@ struct JetFinderQATask { |
1168 | 1183 | randomCone(collision, jets, tracks); |
1169 | 1184 | } |
1170 | 1185 | PROCESS_SWITCH(JetFinderQATask, processRandomConeMCD, "QA for random cone estimation of background fluctuations in mcd", false); |
| 1186 | + |
| 1187 | + void processOccupancyQA(soa::Filtered<aod::JetCollisions>::iterator const& collision, aod::JetTracks const& tracks) |
| 1188 | + { |
| 1189 | + if (skipMBGapEvents && collision.subGeneratorId() == jetderiveddatautilities::JCollisionSubGeneratorId::mbGap) { |
| 1190 | + return; |
| 1191 | + } |
| 1192 | + int occupancy = collision.trackOccupancyInTimeRange(); |
| 1193 | + int nTracksAll = tracks.size(); |
| 1194 | + int nTracksAllAcceptanceAndSelected = 0; |
| 1195 | + int nTracksInAcceptanceAndSelected = 0; |
| 1196 | + for (auto const& track : tracks) { |
| 1197 | + if (jetderiveddatautilities::selectTrack(track, trackSelection)) { |
| 1198 | + nTracksAllAcceptanceAndSelected += 1; |
| 1199 | + if (track.pt() >= trackPtMin && track.pt() < trackPtMax && track.eta() > trackEtaMin && track.eta() < trackEtaMax) { |
| 1200 | + nTracksInAcceptanceAndSelected += 1; |
| 1201 | + } |
| 1202 | + } |
| 1203 | + } |
| 1204 | + |
| 1205 | + registry.fill(HIST("h2_occupancy_ntracksall_presel"), occupancy, nTracksAll); |
| 1206 | + registry.fill(HIST("h2_occupancy_ntrackssel_presel"), occupancy, nTracksAllAcceptanceAndSelected); |
| 1207 | + registry.fill(HIST("h2_occupancy_ntracksselptetacuts_presel"), occupancy, nTracksInAcceptanceAndSelected); |
| 1208 | + if (!jetderiveddatautilities::selectCollision(collision, eventSelectionBits)) { |
| 1209 | + registry.fill(HIST("h2_occupancy_ntracksall_postsel"), occupancy, nTracksAll); |
| 1210 | + registry.fill(HIST("h2_occupancy_ntrackssel_postsel"), occupancy, nTracksAllAcceptanceAndSelected); |
| 1211 | + registry.fill(HIST("h2_occupancy_ntracksselptetacuts_postsel"), occupancy, nTracksInAcceptanceAndSelected); |
| 1212 | + } |
| 1213 | + } |
| 1214 | + PROCESS_SWITCH(JetFinderQATask, processOccupancyQA, "occupancy QA on jet derived data", false); |
1171 | 1215 | }; |
1172 | 1216 |
|
1173 | 1217 | WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) { return WorkflowSpec{adaptAnalysisTask<JetFinderQATask>(cfgc, TaskName{"jet-finder-charged-qa"})}; } |
0 commit comments