Skip to content

Commit 94fb013

Browse files
aimeric-landouAimeric Landou
authored andcommitted
[PWGJE] jetFinder: make track efficiency option pt dependent
1 parent d1271f4 commit 94fb013

File tree

6 files changed

+72
-27
lines changed

6 files changed

+72
-27
lines changed

PWGJE/Core/JetFindingUtilities.h

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ constexpr bool isEMCALClusterTable()
9292
*/
9393

9494
template <typename T, typename U>
95-
void analyseTracks(std::vector<fastjet::PseudoJet>& inputParticles, T const& tracks, int trackSelection, double trackingEfficinecy, const U* candidate = nullptr)
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)
9696
{
9797
for (auto& track : tracks) {
9898
if (!jetderiveddatautilities::selectTrack(track, trackSelection)) {
@@ -103,10 +103,12 @@ void analyseTracks(std::vector<fastjet::PseudoJet>& inputParticles, T const& tra
103103
continue;
104104
}
105105
}
106-
if (trackingEfficinecy < 0.999) { // this code is a bit ugly but it stops us needing to do the random generation unless asked for
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
107107
TRandom3 randomNumber(0);
108-
if (randomNumber.Rndm() > trackingEfficinecy) { // Is Rndm ok to use?
109-
continue;
108+
for (size_t i = 0; i < trackingEfficiency.size(); i++) {
109+
if (trackingEfficiencyPtBinning.at(i) < track.pt() && track.pt() < trackingEfficiencyPtBinning.at(i + 1) && randomNumber.Rndm() > trackingEfficiency.at(i)) {
110+
continue;
111+
}
110112
}
111113
}
112114
fastjetutilities::fillTracks(track, inputParticles, track.globalIndex());
@@ -123,7 +125,7 @@ void analyseTracks(std::vector<fastjet::PseudoJet>& inputParticles, T const& tra
123125
*/
124126

125127
template <typename T, typename U>
126-
void analyseTracksMultipleCandidates(std::vector<fastjet::PseudoJet>& inputParticles, T const& tracks, int trackSelection, double trackingEfficinecy, U const& candidates)
128+
void analyseTracksMultipleCandidates(std::vector<fastjet::PseudoJet>& inputParticles, T const& tracks, int trackSelection, std::vector<double> trackingEfficiency, std::vector<double> trackingEfficiencyPtBinning, U const& candidates)
127129
{
128130
for (auto& track : tracks) {
129131
if (!jetderiveddatautilities::selectTrack(track, trackSelection)) {
@@ -134,10 +136,12 @@ void analyseTracksMultipleCandidates(std::vector<fastjet::PseudoJet>& inputParti
134136
continue;
135137
}
136138
}
137-
if (trackingEfficinecy < 0.999) { // this code is a bit ugly but it stops us needing to do the random generation unless asked for
139+
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
138140
TRandom3 randomNumber(0);
139-
if (randomNumber.Rndm() > trackingEfficinecy) { // Is Rndm ok to use?
140-
continue;
141+
for (size_t i = 0; i < trackingEfficiency.size(); i++) {
142+
if (trackingEfficiencyPtBinning.at(i) < track.pt() && track.pt() < trackingEfficiencyPtBinning.at(i + 1) && randomNumber.Rndm() > trackingEfficiency.at(i)) {
143+
continue;
144+
}
141145
}
142146
}
143147
fastjetutilities::fillTracks(track, inputParticles, track.globalIndex());

PWGJE/JetFinders/jetFinder.cxx

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,8 @@ struct JetFinderTask {
7272
Configurable<float> trackEtaMax{"trackEtaMax", 0.9, "maximum track eta"};
7373
Configurable<float> trackPhiMin{"trackPhiMin", -999, "minimum track phi"};
7474
Configurable<float> trackPhiMax{"trackPhiMax", 999, "maximum track phi"};
75-
Configurable<double> trackingEfficiency{"trackingEfficiency", 1.0, "tracking efficiency applied to jet finding"};
75+
Configurable<std::vector<double>> trackingEfficiency{"trackingEfficiency", {1.0}, "tracking efficiency array applied to jet finding"};
76+
Configurable<std::vector<double>> trackingEfficiencyPtBinning{"trackingEfficiencyPtBinning", {0., 999.}, "pt binning of tracking efficiency array"};
7677
Configurable<std::string> trackSelections{"trackSelections", "globalTracks", "set track selections"};
7778
Configurable<std::string> particleSelections{"particleSelections", "PhysicalPrimary", "set particle selections"};
7879

@@ -161,6 +162,13 @@ struct JetFinderTask {
161162
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}}});
162163
registry.add("hJetMCP", "sparse for mcp jets", {HistType::kTHnD, {{jetRadiiBins, ""}, {jetPtBinNumber, jetPtMinDouble, jetPtMaxDouble}, {40, -1.0, 1.0}, {18, 0.0, 7.0}}});
163164
}
165+
166+
if (trackingEfficiencyPtBinning.size() < 2) {
167+
LOG(fatal, "jetFinder workflow: trackingEfficiencyPtBinning configurable should have at least two bin edges")
168+
}
169+
if (trackingEfficiency.size()+1 != trackingEfficiencyPtBinning.size()) {
170+
LOG(fatal, "jetFinder workflow: trackingEfficiency configurable should have one less entry than the number of bin edges set in trackingEfficiencyPtBinning configurable")
171+
}
164172
}
165173

166174
aod::EMCALClusterDefinition clusterDefinition = aod::emcalcluster::getClusterDefinitionFromString(clusterDefinitionS.value);
@@ -177,7 +185,7 @@ struct JetFinderTask {
177185
return;
178186
}
179187
inputParticles.clear();
180-
jetfindingutilities::analyseTracks<soa::Filtered<aod::JetTracks>, soa::Filtered<aod::JetTracks>::iterator>(inputParticles, tracks, trackSelection, trackingEfficiency);
188+
jetfindingutilities::analyseTracks<soa::Filtered<aod::JetTracks>, soa::Filtered<aod::JetTracks>::iterator>(inputParticles, tracks, trackSelection, trackingEfficiency, trackingEfficiencyPtBinning);
181189
jetfindingutilities::findJets(jetFinder, inputParticles, jetPtMin, jetPtMax, jetRadius, jetAreaFractionMin, collision, jetsTable, constituentsTable, fillTHnSparse ? registry.get<THn>(HIST("hJet")) : std::shared_ptr<THn>(nullptr), fillTHnSparse);
182190
}
183191

@@ -190,7 +198,7 @@ struct JetFinderTask {
190198
return;
191199
}
192200
inputParticles.clear();
193-
jetfindingutilities::analyseTracks<soa::Filtered<aod::JetTracksSub>, soa::Filtered<aod::JetTracksSub>::iterator>(inputParticles, tracks, trackSelection, trackingEfficiency);
201+
jetfindingutilities::analyseTracks<soa::Filtered<aod::JetTracksSub>, soa::Filtered<aod::JetTracksSub>::iterator>(inputParticles, tracks, trackSelection, trackingEfficiency, trackingEfficiencyPtBinning);
194202
jetfindingutilities::findJets(jetFinder, inputParticles, jetEWSPtMin, jetEWSPtMax, jetRadius, jetAreaFractionMin, collision, jetsEvtWiseSubTable, constituentsEvtWiseSubTable, fillTHnSparse ? registry.get<THn>(HIST("hJetEWS")) : std::shared_ptr<THn>(nullptr), fillTHnSparse);
195203
}
196204

@@ -216,7 +224,7 @@ struct JetFinderTask {
216224
return;
217225
}
218226
inputParticles.clear();
219-
jetfindingutilities::analyseTracks<soa::Filtered<aod::JetTracks>, soa::Filtered<aod::JetTracks>::iterator>(inputParticles, tracks, trackSelection, trackingEfficiency);
227+
jetfindingutilities::analyseTracks<soa::Filtered<aod::JetTracks>, soa::Filtered<aod::JetTracks>::iterator>(inputParticles, tracks, trackSelection, trackingEfficiency, trackingEfficiencyPtBinning);
220228
jetfindingutilities::analyseClusters(inputParticles, &clusters, hadronicCorrectionType);
221229
jetfindingutilities::findJets(jetFinder, inputParticles, jetPtMin, jetPtMax, jetRadius, jetAreaFractionMin, collision, jetsTable, constituentsTable, fillTHnSparse ? registry.get<THn>(HIST("hJet")) : std::shared_ptr<THn>(nullptr), fillTHnSparse);
222230
}

PWGJE/JetFinders/jetFinderHF.cxx

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ struct JetFinderHFTask {
7070
Configurable<float> trackEtaMax{"trackEtaMax", 0.9, "maximum track eta"};
7171
Configurable<float> trackPhiMin{"trackPhiMin", -999, "minimum track phi"};
7272
Configurable<float> trackPhiMax{"trackPhiMax", 999, "maximum track phi"};
73-
Configurable<double> trackingEfficiency{"trackingEfficiency", 1.0, "tracking efficiency applied to jet finding"};
73+
Configurable<std::vector<double>> trackingEfficiency{"trackingEfficiency", {1.0}, "tracking efficiency array applied to jet finding"};
74+
Configurable<std::vector<double>> trackingEfficiencyPtBinning{"trackingEfficiencyPtBinning", {0., 999.}, "pt binning of tracking efficiency array"};
7475
Configurable<std::string> trackSelections{"trackSelections", "globalTracks", "set track selections"};
7576
Configurable<std::string> particleSelections{"particleSelections", "PhysicalPrimary", "set particle selections"};
7677

@@ -165,6 +166,13 @@ struct JetFinderHFTask {
165166

166167
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}}});
167168
registry.add("hJetMCP", "sparse for mcp jets", {HistType::kTHnD, {{jetRadiiBins, ""}, {jetPtBinNumber, jetPtMinDouble, jetPtMaxDouble}, {40, -1.0, 1.0}, {18, 0.0, 7.0}}});
169+
170+
if (trackingEfficiencyPtBinning.size() < 2) {
171+
LOG(fatal, "jetFinder workflow: trackingEfficiencyPtBinning configurable should have at least two bin edges")
172+
}
173+
if (trackingEfficiency.size()+1 != trackingEfficiencyPtBinning.size()) {
174+
LOG(fatal, "jetFinder workflow: trackingEfficiency configurable should have one less entry than the number of bin edges set in trackingEfficiencyPtBinning configurable")
175+
}
168176
}
169177

170178
aod::EMCALClusterDefinition clusterDefinition = aod::emcalcluster::getClusterDefinitionFromString(clusterDefinitionS.value);
@@ -215,9 +223,9 @@ struct JetFinderHFTask {
215223
}
216224
}
217225
if constexpr (isEvtWiseSub) {
218-
jetfindingutilities::analyseTracks<U, typename U::iterator>(inputParticles, tracks, trackSelection, trackingEfficiency);
226+
jetfindingutilities::analyseTracks<U, typename U::iterator>(inputParticles, tracks, trackSelection, trackingEfficiency, trackingEfficiencyPtBinning);
219227
} else {
220-
jetfindingutilities::analyseTracks(inputParticles, tracks, trackSelection, trackingEfficiency, &candidate);
228+
jetfindingutilities::analyseTracks(inputParticles, tracks, trackSelection, trackingEfficiency, trackingEfficiencyPtBinning, &candidate);
221229
}
222230
jetfindingutilities::findJets(jetFinder, inputParticles, minJetPt, maxJetPt, jetRadius, jetAreaFractionMin, collision, jetsTableInput, constituentsTableInput, registry.get<THn>(HIST("hJet")), fillTHnSparse, true);
223231
}

PWGJE/JetFinders/jetFinderV0.cxx

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,8 @@ struct JetFinderV0Task {
6565
Configurable<float> trackEtaMax{"trackEtaMax", 0.9, "maximum track eta"};
6666
Configurable<float> trackPhiMin{"trackPhiMin", -999, "minimum track phi"};
6767
Configurable<float> trackPhiMax{"trackPhiMax", 999, "maximum track phi"};
68-
Configurable<double> trackingEfficiency{"trackingEfficiency", 1.0, "tracking efficiency applied to jet finding"};
68+
Configurable<std::vector<double>> trackingEfficiency{"trackingEfficiency", {1.0}, "tracking efficiency array applied to jet finding"};
69+
Configurable<std::vector<double>> trackingEfficiencyPtBinning{"trackingEfficiencyPtBinning", {0., 999.}, "pt binning of tracking efficiency array"};
6970
Configurable<std::string> trackSelections{"trackSelections", "globalTracks", "set track selections"};
7071
Configurable<std::string> particleSelections{"particleSelections", "PhysicalPrimary", "set particle selections"};
7172

@@ -156,6 +157,13 @@ struct JetFinderV0Task {
156157

157158
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}}});
158159
registry.add("hJetMCP", "sparse for mcp jets", {HistType::kTHnD, {{jetRadiiBins, ""}, {jetPtBinNumber, jetPtMinDouble, jetPtMaxDouble}, {40, -1.0, 1.0}, {18, 0.0, 7.0}}});
160+
161+
if (trackingEfficiencyPtBinning.size() < 2) {
162+
LOG(fatal, "jetFinder workflow: trackingEfficiencyPtBinning configurable should have at least two bin edges")
163+
}
164+
if (trackingEfficiency.size()+1 != trackingEfficiencyPtBinning.size()) {
165+
LOG(fatal, "jetFinder workflow: trackingEfficiency configurable should have one less entry than the number of bin edges set in trackingEfficiencyPtBinning configurable")
166+
}
159167
}
160168

161169
Filter collisionFilter = (nabs(aod::jcollision::posZ) < vertexZCut && aod::jcollision::centFT0M >= centralityMin && aod::jcollision::centFT0M < centralityMax && aod::jcollision::trackOccupancyInTimeRange <= trackOccupancyInTimeRangeMax && ((skipMBGapEvents.node() == false) || (aod::jcollision::subGeneratorId != static_cast<int>(jetderiveddatautilities::JCollisionSubGeneratorId::mbGap))));
@@ -184,7 +192,7 @@ struct JetFinderV0Task {
184192
}
185193
}
186194
*/
187-
jetfindingutilities::analyseTracksMultipleCandidates(inputParticles, tracks, trackSelection, trackingEfficiency, candidates);
195+
jetfindingutilities::analyseTracksMultipleCandidates(inputParticles, tracks, trackSelection, trackingEfficiency, trackingEfficiencyPtBinning, candidates);
188196

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

PWGJE/TableProducer/eventwiseConstituentSubtractor.cxx

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,8 @@ struct eventWiseConstituentSubtractorTask {
6767
Configurable<float> trackEtaMax{"trackEtaMax", 0.9, "maximum track eta"};
6868
Configurable<float> trackPhiMin{"trackPhiMin", -999, "minimum track phi"};
6969
Configurable<float> trackPhiMax{"trackPhiMax", 999, "maximum track phi"};
70-
Configurable<double> trackingEfficiency{"trackingEfficiency", 1.0, "tracking efficiency applied to jet finding"};
70+
Configurable<std::vector<double>> trackingEfficiency{"trackingEfficiency", {1.0}, "tracking efficiency array applied to jet finding"};
71+
Configurable<std::vector<double>> trackingEfficiencyPtBinning{"trackingEfficiencyPtBinning", {0., 999.}, "pt binning of tracking efficiency array"};
7172
Configurable<std::string> trackSelections{"trackSelections", "globalTracks", "set track selections"};
7273

7374
Configurable<std::string> particleSelections{"particleSelections", "PhysicalPrimary", "set particle selections"};
@@ -95,6 +96,14 @@ struct eventWiseConstituentSubtractorTask {
9596
eventWiseConstituentSubtractor.setDoRhoMassSub(doRhoMassSub);
9697
eventWiseConstituentSubtractor.setConstSubAlphaRMax(alpha, rMax);
9798
eventWiseConstituentSubtractor.setMaxEtaEvent(eventEtaMax);
99+
100+
101+
if (trackingEfficiencyPtBinning.size() < 2) {
102+
LOG(fatal, "jetFinder workflow: trackingEfficiencyPtBinning configurable should have at least two bin edges")
103+
}
104+
if (trackingEfficiency.size()+1 != trackingEfficiencyPtBinning.size()) {
105+
LOG(fatal, "jetFinder workflow: trackingEfficiency configurable should have one less entry than the number of bin edges set in trackingEfficiencyPtBinning configurable")
106+
}
98107
}
99108

100109
Filter trackCuts = (aod::jtrack::pt >= trackPtMin && aod::jtrack::pt < trackPtMax && aod::jtrack::eta > trackEtaMin && aod::jtrack::eta < trackEtaMax && aod::jtrack::phi >= trackPhiMin && aod::jtrack::phi <= trackPhiMax);
@@ -106,7 +115,7 @@ struct eventWiseConstituentSubtractorTask {
106115
for (auto& candidate : candidates) {
107116
inputParticles.clear();
108117
tracksSubtracted.clear();
109-
jetfindingutilities::analyseTracks(inputParticles, tracks, trackSelection, trackingEfficiency, &candidate);
118+
jetfindingutilities::analyseTracks(inputParticles, tracks, trackSelection, trackingEfficiency, trackingEfficiencyPtBinning, &candidate);
110119

111120
tracksSubtracted = eventWiseConstituentSubtractor.JetBkgSubUtils::doEventConstSub(inputParticles, candidate.rho(), candidate.rhoM());
112121
for (auto const& trackSubtracted : tracksSubtracted) {
@@ -137,7 +146,7 @@ struct eventWiseConstituentSubtractorTask {
137146
}
138147
inputParticles.clear();
139148
tracksSubtracted.clear();
140-
jetfindingutilities::analyseTracks<soa::Filtered<aod::JetTracks>, soa::Filtered<aod::JetTracks>::iterator>(inputParticles, tracks, trackSelection, trackingEfficiency);
149+
jetfindingutilities::analyseTracks<soa::Filtered<aod::JetTracks>, soa::Filtered<aod::JetTracks>::iterator>(inputParticles, tracks, trackSelection, trackingEfficiency, trackingEfficiencyPtBinning);
141150

142151
tracksSubtracted = eventWiseConstituentSubtractor.JetBkgSubUtils::doEventConstSub(inputParticles, collision.rho(), collision.rhoM());
143152

0 commit comments

Comments
 (0)