Skip to content

Commit deba0b5

Browse files
[PWGJE] trackEfficiency: add occupancy task, better default values for ptHatMin/Max, add option for 120-5/pt cut for ncrossedrows
1 parent ef56480 commit deba0b5

File tree

1 file changed

+52
-3
lines changed

1 file changed

+52
-3
lines changed

PWGJE/Tasks/trackEfficiency.cxx

Lines changed: 52 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,9 @@ struct TrackEfficiency {
8080
Configurable<int> phiEffNBins{"phiEffNBins", 200, "number of bins for phi axis in efficiency plots"};
8181
Configurable<int> etaEffNBins{"etaEffNBins", 200, "number of bins for eta axis in efficiency plots"};
8282

83-
Configurable<float> ptHatMin{"ptHatMin", 5, "min pT hat of collisions"};
84-
Configurable<float> ptHatMax{"ptHatMax", 300, "max pT hat of collisions"};
85-
Configurable<float> pTHatExponent{"pTHatExponent", 6.0, "exponent of the event weight for the calculation of pTHat"};
83+
Configurable<float> ptHatMin{"ptHatMin", -999, "min pT hat of collisions"};
84+
Configurable<float> ptHatMax{"ptHatMax", 999, "max pT hat of collisions"};
85+
Configurable<float> pTHatExponent{"pTHatExponent", 4.0, "exponent of the event weight for the calculation of pTHat"};
8686
Configurable<float> pTHatMaxFractionMCD{"pTHatMaxFractionMCD", 999.0, "maximum fraction of hard scattering for reconstructed track acceptance in MC"};
8787

8888
Configurable<bool> getPtHatFromHepMCXSection{"getPtHatFromHepMCXSection", true, "test configurable, configurable should be removed once well tested"};
@@ -92,6 +92,7 @@ struct TrackEfficiency {
9292
TrackSelection customTrackSelection;
9393
Configurable<bool> useCustomTrackSelection{"useCustomTrackSelection", false, "whether to use the custom cuts (used for cut variation for tracking efficiency systematics)"};
9494
Configurable<int> effSystMinNCrossedRowsTPC{"effSystMinNCrossedRowsTPC", 70, "min number of crossed rows TPC"};
95+
Configurable<bool> effSystMinNCrossedRowsTPCUseAlternateCut{"effSystMinNCrossedRowsTPCUseAlternateCut", false, "min number of crossed rows TPC - alternate cut of 120 - 5./pt"};
9596
Configurable<float> effSystMinNCrossedRowsOverFindableClustersTPC{"effSystMinNCrossedRowsOverFindableClustersTPC", 0.8, "min ratio of crossed rows over findable clusters TPC"};
9697
Configurable<float> effSystMaxChi2PerClusterTPC{"effSystMaxChi2PerClusterTPC", 4.0, "max chi2 per cluster TPC"};
9798
Configurable<float> effSystMaxChi2PerClusterITS{"effSystMaxChi2PerClusterITS", 36.0, "max chi2 per cluster ITS"};
@@ -118,6 +119,9 @@ struct TrackEfficiency {
118119
}
119120
} else {
120121
const auto& aodTrack = jetTrack.template track_as<soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA>>();
122+
if (effSystMinNCrossedRowsTPCUseAlternateCut) {
123+
customTrackSelection.SetMinNCrossedRowsTPC(120 - 5./jetTrack.pt());
124+
}
121125
if (customTrackSelection.IsSelected(aodTrack)) {
122126
return true;
123127
}
@@ -372,6 +376,18 @@ struct TrackEfficiency {
372376
registry.add("h2_trackselplot_pt_dcaxy", "track selection variable: pt vs dca XY", {HistType::kTH2F, {{200, 0., 200.}, {1000, -1.0, 1.0}}});
373377
registry.add("h2_trackselplot_pt_dcaz", "track selection variable: pt vs dca Z", {HistType::kTH2F, {{200, 0., 200.}, {4000, -4.0, 4.0}}});
374378
}
379+
380+
AxisSpec occupancyAxis = {140, -0.5, 13999.5, "occupancy"};
381+
AxisSpec nTracksAxis = {16001, -1., 16000, "n tracks"};
382+
383+
if (doprocessOccupancyQA) {
384+
registry.add("h2_occupancy_ntracksall_presel", "occupancy vs N_{tracks}; occupancy; N_{tracks}", {HistType::kTH2I, {occupancyAxis, nTracksAxis}});
385+
registry.add("h2_occupancy_ntracksall_postsel", "occupancy vs N_{tracks}; occupancy; N_{tracks}", {HistType::kTH2I, {occupancyAxis, nTracksAxis}});
386+
registry.add("h2_occupancy_ntrackssel_presel", "occupancy vs N_{tracks}; occupancy; N_{tracks}", {HistType::kTH2I, {occupancyAxis, nTracksAxis}});
387+
registry.add("h2_occupancy_ntrackssel_postsel", "occupancy vs N_{tracks}; occupancy; N_{tracks}", {HistType::kTH2I, {occupancyAxis, nTracksAxis}});
388+
registry.add("h2_occupancy_ntracksselptetacuts_presel", "occupancy vs N_{tracks}; occupancy; N_{tracks}", {HistType::kTH2I, {occupancyAxis, nTracksAxis}});
389+
registry.add("h2_occupancy_ntracksselptetacuts_postsel", "occupancy vs N_{tracks}; occupancy; N_{tracks}", {HistType::kTH2I, {occupancyAxis, nTracksAxis}});
390+
}
375391
}
376392

377393
Preslice<aod::JetTracksMCD> tracksPerJCollision = o2::aod::jtrack::collisionId;
@@ -1235,6 +1251,39 @@ struct TrackEfficiency {
12351251
}
12361252
}
12371253
PROCESS_SWITCH(TrackEfficiency, processTrackSelectionHistograms, "plots distributions of variables that are cut on during track selection", false);
1254+
1255+
1256+
void processOccupancyQA(soa::Filtered<aod::JetCollisions>::iterator const& collision, aod::JetTracks const& tracks)
1257+
{
1258+
float centrality = checkCentFT0M ? collision.centFT0M() : collision.centFT0C();
1259+
if (cutCentrality && (centrality < centralityMin || centralityMax < centrality)) {
1260+
return;
1261+
}
1262+
1263+
int occupancy = collision.trackOccupancyInTimeRange();
1264+
int nTracksAll = tracks.size();
1265+
int nTracksAllAcceptanceAndSelected = 0;
1266+
int nTracksInAcceptanceAndSelected = 0;
1267+
for (auto const& track : tracks) {
1268+
if (jetderiveddatautilities::selectTrack(track, trackSelection)) {
1269+
nTracksAllAcceptanceAndSelected += 1;
1270+
if (track.pt() >= trackQAPtMin && track.pt() < trackQAPtMax && track.eta() > trackQAEtaMin && track.eta() < trackQAEtaMax) {
1271+
nTracksInAcceptanceAndSelected += 1;
1272+
}
1273+
}
1274+
}
1275+
1276+
registry.fill(HIST("h2_occupancy_ntracksall_presel"), occupancy, nTracksAll);
1277+
registry.fill(HIST("h2_occupancy_ntrackssel_presel"), occupancy, nTracksAllAcceptanceAndSelected);
1278+
registry.fill(HIST("h2_occupancy_ntracksselptetacuts_presel"), occupancy, nTracksInAcceptanceAndSelected);
1279+
if (!jetderiveddatautilities::selectCollision(collision, eventSelectionBits, skipMBGapEvents)) {
1280+
return;
1281+
}
1282+
registry.fill(HIST("h2_occupancy_ntracksall_postsel"), occupancy, nTracksAll);
1283+
registry.fill(HIST("h2_occupancy_ntrackssel_postsel"), occupancy, nTracksAllAcceptanceAndSelected);
1284+
registry.fill(HIST("h2_occupancy_ntracksselptetacuts_postsel"), occupancy, nTracksInAcceptanceAndSelected);
1285+
}
1286+
PROCESS_SWITCH(TrackEfficiency, processOccupancyQA, "occupancy QA on jet derived data", false);
12381287
};
12391288

12401289
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)

0 commit comments

Comments
 (0)