Skip to content

Commit 2d5e7d2

Browse files
apply reviewer comments, switch order of trackEFf values and binning configurables
1 parent 70f1114 commit 2d5e7d2

File tree

6 files changed

+87
-74
lines changed

6 files changed

+87
-74
lines changed

PWGJE/Core/JetFindingUtilities.h

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@
4343

4444
#include <math.h>
4545

46+
#include <Framework/Logger.h> //TOBEREMOVED
47+
4648
namespace jetfindingutilities
4749
{
4850

@@ -92,7 +94,7 @@ constexpr bool isEMCALClusterTable()
9294
*/
9395

9496
template <typename T, typename U>
95-
void analyseTracks(std::vector<fastjet::PseudoJet>& inputParticles, T const& tracks, int trackSelection, std::vector<double> trackingEfficiency, std::vector<double> trackingEfficiencyPtBinning, const U* candidate = nullptr)
97+
void analyseTracks(std::vector<fastjet::PseudoJet>& inputParticles, T const& tracks, int trackSelection, bool applyTrackingEfficiency, std::vector<double> trackingEfficiency, std::vector<double> trackingEfficiencyPtBinning, const U* candidate = nullptr)
9698
{
9799
for (auto& track : tracks) {
98100
if (!jetderiveddatautilities::selectTrack(track, trackSelection)) {
@@ -103,17 +105,15 @@ void analyseTracks(std::vector<fastjet::PseudoJet>& inputParticles, T const& tra
103105
continue;
104106
}
105107
}
106-
if (!(trackingEfficiencyPtBinning.size() == 2 && trackingEfficiency.at(0) > 0.999)) { // this code is a bit ugly but it stops us needing to do the random generation unless asked for
107-
TRandom3 randomNumber(0);
108-
bool isTrackDiscarded = false;
109-
for (size_t i = 0; i < trackingEfficiency.size(); i++) {
110-
if (trackingEfficiencyPtBinning.at(i) < track.pt() && track.pt() < trackingEfficiencyPtBinning.at(i + 1) && randomNumber.Rndm() > trackingEfficiency.at(i)) {
111-
isTrackDiscarded = true;
108+
if (applyTrackingEfficiency){
109+
auto iter = std::upper_bound(trackingEfficiencyPtBinning.begin(), trackingEfficiencyPtBinning.end(), track.pt());
110+
if (iter!=trackingEfficiencyPtBinning.begin() && iter!=trackingEfficiencyPtBinning.end()){
111+
std::size_t index = std::distance(trackingEfficiencyPtBinning.begin(), iter) - 1;
112+
TRandom3 randomNumber(0);
113+
if (randomNumber.Rndm() > trackingEfficiency[index]){
114+
continue;
112115
}
113116
}
114-
if (isTrackDiscarded == true) {
115-
continue;
116-
}
117117
}
118118
fastjetutilities::fillTracks(track, inputParticles, track.globalIndex());
119119
}
@@ -129,7 +129,7 @@ void analyseTracks(std::vector<fastjet::PseudoJet>& inputParticles, T const& tra
129129
*/
130130

131131
template <typename T, typename U>
132-
void analyseTracksMultipleCandidates(std::vector<fastjet::PseudoJet>& inputParticles, T const& tracks, int trackSelection, std::vector<double> trackingEfficiency, std::vector<double> trackingEfficiencyPtBinning, U const& candidates)
132+
void analyseTracksMultipleCandidates(std::vector<fastjet::PseudoJet>& inputParticles, T const& tracks, int trackSelection, bool applyTrackingEfficiency, std::vector<double> trackingEfficiency, std::vector<double> trackingEfficiencyPtBinning, U const& candidates)
133133
{
134134
for (auto& track : tracks) {
135135
if (!jetderiveddatautilities::selectTrack(track, trackSelection)) {
@@ -140,17 +140,15 @@ void analyseTracksMultipleCandidates(std::vector<fastjet::PseudoJet>& inputParti
140140
continue;
141141
}
142142
}
143-
if (!(trackingEfficiencyPtBinning.size() == 2 && trackingEfficiency.at(0) > 0.999)) { // this code is a bit ugly but it stops us needing to do the random generation unless asked for
144-
TRandom3 randomNumber(0);
145-
bool isTrackDiscarded = false;
146-
for (size_t i = 0; i < trackingEfficiency.size(); i++) {
147-
if (trackingEfficiencyPtBinning.at(i) < track.pt() && track.pt() < trackingEfficiencyPtBinning.at(i + 1) && randomNumber.Rndm() > trackingEfficiency.at(i)) {
148-
isTrackDiscarded = true;
143+
if (applyTrackingEfficiency){
144+
auto iter = std::upper_bound(trackingEfficiencyPtBinning.begin(), trackingEfficiencyPtBinning.end(), track.pt());
145+
if (iter!=trackingEfficiencyPtBinning.begin() && iter!=trackingEfficiencyPtBinning.end()){
146+
std::size_t index = std::distance(trackingEfficiencyPtBinning.begin(), iter) - 1;
147+
TRandom3 randomNumber(0);
148+
if (randomNumber.Rndm() > trackingEfficiency[index]){
149+
continue;
149150
}
150151
}
151-
if (isTrackDiscarded == true) {
152-
continue;
153-
}
154152
}
155153
fastjetutilities::fillTracks(track, inputParticles, track.globalIndex());
156154
}

PWGJE/JetFinders/jetFinder.cxx

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,9 @@ struct JetFinderTask {
7373
Configurable<float> trackEtaMax{"trackEtaMax", 0.9, "maximum track eta"};
7474
Configurable<float> trackPhiMin{"trackPhiMin", -999, "minimum track phi"};
7575
Configurable<float> trackPhiMax{"trackPhiMax", 999, "maximum track phi"};
76-
Configurable<std::vector<double>> trackingEfficiency{"trackingEfficiency", {1.0}, "tracking efficiency array applied to jet finding"};
77-
Configurable<std::vector<double>> trackingEfficiencyPtBinning{"trackingEfficiencyPtBinning", {0., 999.}, "pt binning of tracking efficiency array"};
76+
Configurable<bool> applyTrackingEfficiency{"applyTrackingEfficiency", {false}, "configurable to decide whether to apply artificial tracking efficiency (discarding tracks) in jet finding"};
77+
Configurable<std::vector<double>> trackingEfficiencyPtBinning{"trackingEfficiencyPtBinning", {0., 10, 999.}, "pt binning of tracking efficiency array if applyTrackingEfficiency is true"};
78+
Configurable<std::vector<double>> trackingEfficiency{"trackingEfficiency", {1.0, 1.0}, "tracking efficiency array applied to jet finding if applyTrackingEfficiency is true"};
7879
Configurable<std::string> trackSelections{"trackSelections", "globalTracks", "set track selections"};
7980
Configurable<std::string> particleSelections{"particleSelections", "PhysicalPrimary", "set particle selections"};
8081

@@ -163,12 +164,14 @@ struct JetFinderTask {
163164
registry.add("hJetEWS", "sparse for data or mcd event-wise subtracted jets", {HistType::kTHnD, {{jetRadiiBins, ""}, {jetPtBinNumber, jetPtMinDouble, jetPtMaxDouble}, {40, -1.0, 1.0}, {18, 0.0, 7.0}}});
164165
registry.add("hJetMCP", "sparse for mcp jets", {HistType::kTHnD, {{jetRadiiBins, ""}, {jetPtBinNumber, jetPtMinDouble, jetPtMaxDouble}, {40, -1.0, 1.0}, {18, 0.0, 7.0}}});
165166
}
166-
167-
if (trackingEfficiencyPtBinning->size() < 2) {
168-
LOGP(fatal, "jetFinder workflow: trackingEfficiencyPtBinning configurable should have at least two bin edges");
169-
}
170-
if (trackingEfficiency->size() + 1 != trackingEfficiencyPtBinning->size()) {
171-
LOGP(fatal, "jetFinder workflow: trackingEfficiency configurable should have exactly one less entry than the number of bin edges set in trackingEfficiencyPtBinning configurable");
167+
168+
if (applyTrackingEfficiency) {
169+
if (trackingEfficiencyPtBinning->size() < 2) {
170+
LOGP(fatal, "jetFinder workflow: trackingEfficiencyPtBinning configurable should have at least two bin edges");
171+
}
172+
if (trackingEfficiency->size() + 1 != trackingEfficiencyPtBinning->size()) {
173+
LOGP(fatal, "jetFinder workflow: trackingEfficiency configurable should have exactly one less entry than the number of bin edges set in trackingEfficiencyPtBinning configurable");
174+
}
172175
}
173176
}
174177

@@ -186,7 +189,7 @@ struct JetFinderTask {
186189
return;
187190
}
188191
inputParticles.clear();
189-
jetfindingutilities::analyseTracks<soa::Filtered<aod::JetTracks>, soa::Filtered<aod::JetTracks>::iterator>(inputParticles, tracks, trackSelection, trackingEfficiency, trackingEfficiencyPtBinning);
192+
jetfindingutilities::analyseTracks<soa::Filtered<aod::JetTracks>, soa::Filtered<aod::JetTracks>::iterator>(inputParticles, tracks, trackSelection, applyTrackingEfficiency, trackingEfficiency, trackingEfficiencyPtBinning);
190193
jetfindingutilities::findJets(jetFinder, inputParticles, jetPtMin, jetPtMax, jetRadius, jetAreaFractionMin, collision, jetsTable, constituentsTable, fillTHnSparse ? registry.get<THn>(HIST("hJet")) : std::shared_ptr<THn>(nullptr), fillTHnSparse);
191194
}
192195

@@ -199,7 +202,7 @@ struct JetFinderTask {
199202
return;
200203
}
201204
inputParticles.clear();
202-
jetfindingutilities::analyseTracks<soa::Filtered<aod::JetTracksSub>, soa::Filtered<aod::JetTracksSub>::iterator>(inputParticles, tracks, trackSelection, trackingEfficiency, trackingEfficiencyPtBinning);
205+
jetfindingutilities::analyseTracks<soa::Filtered<aod::JetTracksSub>, soa::Filtered<aod::JetTracksSub>::iterator>(inputParticles, tracks, trackSelection, applyTrackingEfficiency, trackingEfficiency, trackingEfficiencyPtBinning);
203206
jetfindingutilities::findJets(jetFinder, inputParticles, jetEWSPtMin, jetEWSPtMax, jetRadius, jetAreaFractionMin, collision, jetsEvtWiseSubTable, constituentsEvtWiseSubTable, fillTHnSparse ? registry.get<THn>(HIST("hJetEWS")) : std::shared_ptr<THn>(nullptr), fillTHnSparse);
204207
}
205208

@@ -225,7 +228,7 @@ struct JetFinderTask {
225228
return;
226229
}
227230
inputParticles.clear();
228-
jetfindingutilities::analyseTracks<soa::Filtered<aod::JetTracks>, soa::Filtered<aod::JetTracks>::iterator>(inputParticles, tracks, trackSelection, trackingEfficiency, trackingEfficiencyPtBinning);
231+
jetfindingutilities::analyseTracks<soa::Filtered<aod::JetTracks>, soa::Filtered<aod::JetTracks>::iterator>(inputParticles, tracks, trackSelection, applyTrackingEfficiency, trackingEfficiency, trackingEfficiencyPtBinning);
229232
jetfindingutilities::analyseClusters(inputParticles, &clusters, hadronicCorrectionType);
230233
jetfindingutilities::findJets(jetFinder, inputParticles, jetPtMin, jetPtMax, jetRadius, jetAreaFractionMin, collision, jetsTable, constituentsTable, fillTHnSparse ? registry.get<THn>(HIST("hJet")) : std::shared_ptr<THn>(nullptr), fillTHnSparse);
231234
}

PWGJE/JetFinders/jetFinderHF.cxx

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,9 @@ struct JetFinderHFTask {
7171
Configurable<float> trackEtaMax{"trackEtaMax", 0.9, "maximum track eta"};
7272
Configurable<float> trackPhiMin{"trackPhiMin", -999, "minimum track phi"};
7373
Configurable<float> trackPhiMax{"trackPhiMax", 999, "maximum track phi"};
74-
Configurable<std::vector<double>> trackingEfficiency{"trackingEfficiency", {1.0}, "tracking efficiency array applied to jet finding"};
75-
Configurable<std::vector<double>> trackingEfficiencyPtBinning{"trackingEfficiencyPtBinning", {0., 999.}, "pt binning of tracking efficiency array"};
74+
Configurable<bool> applyTrackingEfficiency{"applyTrackingEfficiency", {false}, "configurable to decide whether to apply artificial tracking efficiency (discarding tracks) in jet finding"};
75+
Configurable<std::vector<double>> trackingEfficiencyPtBinning{"trackingEfficiencyPtBinning", {0., 10, 999.}, "pt binning of tracking efficiency array if applyTrackingEfficiency is true"};
76+
Configurable<std::vector<double>> trackingEfficiency{"trackingEfficiency", {1.0, 1.0}, "tracking efficiency array applied to jet finding if applyTrackingEfficiency is true"};
7677
Configurable<std::string> trackSelections{"trackSelections", "globalTracks", "set track selections"};
7778
Configurable<std::string> particleSelections{"particleSelections", "PhysicalPrimary", "set particle selections"};
7879

@@ -168,11 +169,13 @@ struct JetFinderHFTask {
168169
registry.add("hJet", "sparse for data or mcd jets", {HistType::kTHnD, {{jetRadiiBins, ""}, {jetPtBinNumber, jetPtMinDouble, jetPtMaxDouble}, {40, -1.0, 1.0}, {18, 0.0, 7.0}}});
169170
registry.add("hJetMCP", "sparse for mcp jets", {HistType::kTHnD, {{jetRadiiBins, ""}, {jetPtBinNumber, jetPtMinDouble, jetPtMaxDouble}, {40, -1.0, 1.0}, {18, 0.0, 7.0}}});
170171

171-
if (trackingEfficiencyPtBinning->size() < 2) {
172-
LOGP(fatal, "jetFinder workflow: trackingEfficiencyPtBinning configurable should have at least two bin edges");
173-
}
174-
if (trackingEfficiency->size() + 1 != trackingEfficiencyPtBinning->size()) {
175-
LOGP(fatal, "jetFinder workflow: trackingEfficiency configurable should have exactly one less entry than the number of bin edges set in trackingEfficiencyPtBinning configurable");
172+
if (applyTrackingEfficiency) {
173+
if (trackingEfficiencyPtBinning->size() < 2) {
174+
LOGP(fatal, "jetFinderHF workflow: trackingEfficiencyPtBinning configurable should have at least two bin edges");
175+
}
176+
if (trackingEfficiency->size() + 1 != trackingEfficiencyPtBinning->size()) {
177+
LOGP(fatal, "jetFinderHF workflow: trackingEfficiency configurable should have exactly one less entry than the number of bin edges set in trackingEfficiencyPtBinning configurable");
178+
}
176179
}
177180
}
178181

@@ -224,9 +227,9 @@ struct JetFinderHFTask {
224227
}
225228
}
226229
if constexpr (isEvtWiseSub) {
227-
jetfindingutilities::analyseTracks<U, typename U::iterator>(inputParticles, tracks, trackSelection, trackingEfficiency, trackingEfficiencyPtBinning);
230+
jetfindingutilities::analyseTracks<U, typename U::iterator>(inputParticles, tracks, trackSelection, applyTrackingEfficiency, trackingEfficiency, trackingEfficiencyPtBinning);
228231
} else {
229-
jetfindingutilities::analyseTracks(inputParticles, tracks, trackSelection, trackingEfficiency, trackingEfficiencyPtBinning, &candidate);
232+
jetfindingutilities::analyseTracks(inputParticles, tracks, trackSelection, applyTrackingEfficiency, trackingEfficiency, trackingEfficiencyPtBinning, &candidate);
230233
}
231234
jetfindingutilities::findJets(jetFinder, inputParticles, minJetPt, maxJetPt, jetRadius, jetAreaFractionMin, collision, jetsTableInput, constituentsTableInput, registry.get<THn>(HIST("hJet")), fillTHnSparse, true);
232235
}

PWGJE/JetFinders/jetFinderV0.cxx

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,9 @@ struct JetFinderV0Task {
6666
Configurable<float> trackEtaMax{"trackEtaMax", 0.9, "maximum track eta"};
6767
Configurable<float> trackPhiMin{"trackPhiMin", -999, "minimum track phi"};
6868
Configurable<float> trackPhiMax{"trackPhiMax", 999, "maximum track phi"};
69-
Configurable<std::vector<double>> trackingEfficiency{"trackingEfficiency", {1.0}, "tracking efficiency array applied to jet finding"};
70-
Configurable<std::vector<double>> trackingEfficiencyPtBinning{"trackingEfficiencyPtBinning", {0., 999.}, "pt binning of tracking efficiency array"};
69+
Configurable<bool> applyTrackingEfficiency{"applyTrackingEfficiency", {false}, "configurable to decide whether to apply artificial tracking efficiency (discarding tracks) in jet finding"};
70+
Configurable<std::vector<double>> trackingEfficiencyPtBinning{"trackingEfficiencyPtBinning", {0., 10, 999.}, "pt binning of tracking efficiency array if applyTrackingEfficiency is true"};
71+
Configurable<std::vector<double>> trackingEfficiency{"trackingEfficiency", {1.0, 1.0}, "tracking efficiency array applied to jet finding if applyTrackingEfficiency is true"};
7172
Configurable<std::string> trackSelections{"trackSelections", "globalTracks", "set track selections"};
7273
Configurable<std::string> particleSelections{"particleSelections", "PhysicalPrimary", "set particle selections"};
7374

@@ -159,11 +160,13 @@ struct JetFinderV0Task {
159160
registry.add("hJet", "sparse for data or mcd jets", {HistType::kTHnD, {{jetRadiiBins, ""}, {jetPtBinNumber, jetPtMinDouble, jetPtMaxDouble}, {40, -1.0, 1.0}, {18, 0.0, 7.0}}});
160161
registry.add("hJetMCP", "sparse for mcp jets", {HistType::kTHnD, {{jetRadiiBins, ""}, {jetPtBinNumber, jetPtMinDouble, jetPtMaxDouble}, {40, -1.0, 1.0}, {18, 0.0, 7.0}}});
161162

162-
if (trackingEfficiencyPtBinning->size() < 2) {
163-
LOGP(fatal, "jetFinder workflow: trackingEfficiencyPtBinning configurable should have at least two bin edges");
164-
}
165-
if (trackingEfficiency->size() + 1 != trackingEfficiencyPtBinning->size()) {
166-
LOGP(fatal, "jetFinder workflow: trackingEfficiency configurable should have exactly one less entry than the number of bin edges set in trackingEfficiencyPtBinning configurable");
163+
if (applyTrackingEfficiency) {
164+
if (trackingEfficiencyPtBinning->size() < 2) {
165+
LOGP(fatal, "jetFinderV0 workflow: trackingEfficiencyPtBinning configurable should have at least two bin edges");
166+
}
167+
if (trackingEfficiency->size() + 1 != trackingEfficiencyPtBinning->size()) {
168+
LOGP(fatal, "jetFinderV0 workflow: trackingEfficiency configurable should have exactly one less entry than the number of bin edges set in trackingEfficiencyPtBinning configurable");
169+
}
167170
}
168171
}
169172

@@ -193,7 +196,7 @@ struct JetFinderV0Task {
193196
}
194197
}
195198
*/
196-
jetfindingutilities::analyseTracksMultipleCandidates(inputParticles, tracks, trackSelection, trackingEfficiency, trackingEfficiencyPtBinning, candidates);
199+
jetfindingutilities::analyseTracksMultipleCandidates(inputParticles, tracks, trackSelection, applyTrackingEfficiency, trackingEfficiency, trackingEfficiencyPtBinning, candidates);
197200

198201
jetfindingutilities::findJets(jetFinder, inputParticles, minJetPt, maxJetPt, jetRadius, jetAreaFractionMin, collision, jetsTableInput, constituentsTableInput, registry.get<THn>(HIST("hJet")), fillTHnSparse, saveJetsWithCandidatesOnly);
199202
}

0 commit comments

Comments
 (0)