Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 18 additions & 10 deletions PWGJE/Core/JetFindingUtilities.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.

Check failure on line 1 in PWGJE/Core/JetFindingUtilities.h

View workflow job for this annotation

GitHub Actions / O2 linter

[name/file-cpp]

Use lowerCamelCase or UpperCamelCase for names of C++ files. See the O2 naming conventions for details.
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
// All rights not expressly granted are reserved.
//
Expand Down Expand Up @@ -92,9 +92,9 @@
*/

template <typename T, typename U>
void analyseTracks(std::vector<fastjet::PseudoJet>& inputParticles, T const& tracks, int trackSelection, double trackingEfficinecy, const U* candidate = nullptr)
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)
{
for (auto& track : tracks) {

Check failure on line 97 in PWGJE/Core/JetFindingUtilities.h

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
if (!jetderiveddatautilities::selectTrack(track, trackSelection)) {
continue;
}
Expand All @@ -103,10 +103,14 @@
continue;
}
}
if (trackingEfficinecy < 0.999) { // this code is a bit ugly but it stops us needing to do the random generation unless asked for
TRandom3 randomNumber(0);
if (randomNumber.Rndm() > trackingEfficinecy) { // Is Rndm ok to use?
continue;
if (applyTrackingEfficiency) {
auto iter = std::upper_bound(trackingEfficiencyPtBinning.begin(), trackingEfficiencyPtBinning.end(), track.pt());
if (iter != trackingEfficiencyPtBinning.begin() && iter != trackingEfficiencyPtBinning.end()) {
std::size_t index = std::distance(trackingEfficiencyPtBinning.begin(), iter) - 1;
TRandom3 randomNumber(0);
if (randomNumber.Rndm() > trackingEfficiency[index]) {
continue;
}
}
}
fastjetutilities::fillTracks(track, inputParticles, track.globalIndex());
Expand All @@ -123,21 +127,25 @@
*/

template <typename T, typename U>
void analyseTracksMultipleCandidates(std::vector<fastjet::PseudoJet>& inputParticles, T const& tracks, int trackSelection, double trackingEfficinecy, U const& candidates)
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)
{
for (auto& track : tracks) {

Check failure on line 132 in PWGJE/Core/JetFindingUtilities.h

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
if (!jetderiveddatautilities::selectTrack(track, trackSelection)) {
continue;
}
for (auto& candidate : candidates) {

Check failure on line 136 in PWGJE/Core/JetFindingUtilities.h

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
if (jetcandidateutilities::isDaughterTrack(track, candidate, tracks)) {
continue;
}
}
if (trackingEfficinecy < 0.999) { // this code is a bit ugly but it stops us needing to do the random generation unless asked for
TRandom3 randomNumber(0);
if (randomNumber.Rndm() > trackingEfficinecy) { // Is Rndm ok to use?
continue;
if (applyTrackingEfficiency) {
auto iter = std::upper_bound(trackingEfficiencyPtBinning.begin(), trackingEfficiencyPtBinning.end(), track.pt());
if (iter != trackingEfficiencyPtBinning.begin() && iter != trackingEfficiencyPtBinning.end()) {
std::size_t index = std::distance(trackingEfficiencyPtBinning.begin(), iter) - 1;
TRandom3 randomNumber(0);
if (randomNumber.Rndm() > trackingEfficiency[index]) {
continue;
}
}
}
fastjetutilities::fillTracks(track, inputParticles, track.globalIndex());
Expand All @@ -153,7 +161,7 @@
template <typename T>
void analyseClusters(std::vector<fastjet::PseudoJet>& inputParticles, T const& clusters, int hadronicCorrectionType = 0)
{
for (auto& cluster : *clusters) {

Check failure on line 164 in PWGJE/Core/JetFindingUtilities.h

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
// add cluster selections
fastjetutilities::fillClusters(cluster, inputParticles, cluster.globalIndex(), hadronicCorrectionType);
}
Expand Down Expand Up @@ -276,12 +284,12 @@
auto jetRValues = static_cast<std::vector<double>>(jetRadius);
jetFinder.jetPtMin = jetPtMin;
jetFinder.jetPtMax = jetPtMax;
for (auto R : jetRValues) {

Check failure on line 287 in PWGJE/Core/JetFindingUtilities.h

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
jetFinder.jetR = R;
std::vector<fastjet::PseudoJet> jets;
fastjet::ClusterSequenceArea clusterSeq(jetFinder.findJets(inputParticles, jets));
for (const auto& jet : jets) {
if (jet.has_area() && jet.area() < jetAreaFractionMin * M_PI * R * R) {

Check failure on line 292 in PWGJE/Core/JetFindingUtilities.h

View workflow job for this annotation

GitHub Actions / O2 linter

[external-pi]

Use the PI constant (and its multiples and fractions) defined in o2::constants::math.
continue;
}
if (fillThnSparse) {
Expand Down Expand Up @@ -334,7 +342,7 @@
template <bool checkIsDaughter, typename T, typename U>
void analyseParticles(std::vector<fastjet::PseudoJet>& inputParticles, std::string particleSelection, int jetTypeParticleLevel, T const& particles, o2::framework::Service<o2::framework::O2DatabasePDG> pdgDatabase, const U* candidate = nullptr)
{
for (auto& particle : particles) {

Check failure on line 345 in PWGJE/Core/JetFindingUtilities.h

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
if (particleSelection == "PhysicalPrimary" && !particle.isPhysicalPrimary()) { // CHECK : Does this exclude the HF hadron?
continue;
} else if (particleSelection == "HepMCStatus" && particle.getHepMCStatusCode() != 1) { // do we need isPhysicalPrimary as well? Note: Might give unforseen results if the generator isnt PYTHIA
Expand All @@ -349,7 +357,7 @@
}
auto pdgParticle = pdgDatabase->GetParticle(particle.pdgCode());
auto pdgCharge = pdgParticle ? std::abs(pdgParticle->Charge()) : -1.0;
if (jetTypeParticleLevel == static_cast<int>(JetType::charged) && pdgCharge < 3.0) {

Check failure on line 360 in PWGJE/Core/JetFindingUtilities.h

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.
continue;
}
if (jetTypeParticleLevel == static_cast<int>(JetType::neutral) && pdgCharge != 0.0) {
Expand Down Expand Up @@ -388,7 +396,7 @@
template <typename T>
bool isInEtaAcceptance(T const& jet, float jetEtaMin, float jetEtaMax, float etaMin = -0.9, float etaMax = 0.9)
{
if (jetEtaMin < -98.0) {

Check failure on line 399 in PWGJE/Core/JetFindingUtilities.h

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.
return (jet.eta() >= etaMin + (jet.r() / 100.0) && jet.eta() <= etaMax - (jet.r() / 100.0));
} else {
return (jet.eta() >= jetEtaMin && jet.eta() <= jetEtaMax);
Expand Down
20 changes: 16 additions & 4 deletions PWGJE/JetFinders/jetFinder.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
#include <Framework/HistogramRegistry.h>
#include <Framework/HistogramSpec.h>
#include <Framework/InitContext.h>
#include <Framework/Logger.h>
#include <Framework/O2DatabasePDGPlugin.h>
#include <Framework/runDataProcessing.h> // IWYU pragma: export

Expand Down Expand Up @@ -72,7 +73,9 @@ struct JetFinderTask {
Configurable<float> trackEtaMax{"trackEtaMax", 0.9, "maximum track eta"};
Configurable<float> trackPhiMin{"trackPhiMin", -999, "minimum track phi"};
Configurable<float> trackPhiMax{"trackPhiMax", 999, "maximum track phi"};
Configurable<double> trackingEfficiency{"trackingEfficiency", 1.0, "tracking efficiency applied to jet finding"};
Configurable<bool> applyTrackingEfficiency{"applyTrackingEfficiency", {false}, "configurable to decide whether to apply artificial tracking efficiency (discarding tracks) in jet finding"};
Configurable<std::vector<double>> trackingEfficiencyPtBinning{"trackingEfficiencyPtBinning", {0., 10, 999.}, "pt binning of tracking efficiency array if applyTrackingEfficiency is true"};
Configurable<std::vector<double>> trackingEfficiency{"trackingEfficiency", {1.0, 1.0}, "tracking efficiency array applied to jet finding if applyTrackingEfficiency is true"};
Configurable<std::string> trackSelections{"trackSelections", "globalTracks", "set track selections"};
Configurable<std::string> particleSelections{"particleSelections", "PhysicalPrimary", "set particle selections"};

Expand Down Expand Up @@ -161,6 +164,15 @@ struct JetFinderTask {
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}}});
registry.add("hJetMCP", "sparse for mcp jets", {HistType::kTHnD, {{jetRadiiBins, ""}, {jetPtBinNumber, jetPtMinDouble, jetPtMaxDouble}, {40, -1.0, 1.0}, {18, 0.0, 7.0}}});
}

if (applyTrackingEfficiency) {
if (trackingEfficiencyPtBinning->size() < 2) {
LOGP(fatal, "jetFinder workflow: trackingEfficiencyPtBinning configurable should have at least two bin edges");
}
if (trackingEfficiency->size() + 1 != trackingEfficiencyPtBinning->size()) {
LOGP(fatal, "jetFinder workflow: trackingEfficiency configurable should have exactly one less entry than the number of bin edges set in trackingEfficiencyPtBinning configurable");
}
}
}

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

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

Expand All @@ -216,7 +228,7 @@ struct JetFinderTask {
return;
}
inputParticles.clear();
jetfindingutilities::analyseTracks<soa::Filtered<aod::JetTracks>, soa::Filtered<aod::JetTracks>::iterator>(inputParticles, tracks, trackSelection, trackingEfficiency);
jetfindingutilities::analyseTracks<soa::Filtered<aod::JetTracks>, soa::Filtered<aod::JetTracks>::iterator>(inputParticles, tracks, trackSelection, applyTrackingEfficiency, trackingEfficiency, trackingEfficiencyPtBinning);
jetfindingutilities::analyseClusters(inputParticles, &clusters, hadronicCorrectionType);
jetfindingutilities::findJets(jetFinder, inputParticles, jetPtMin, jetPtMax, jetRadius, jetAreaFractionMin, collision, jetsTable, constituentsTable, fillTHnSparse ? registry.get<THn>(HIST("hJet")) : std::shared_ptr<THn>(nullptr), fillTHnSparse);
}
Expand Down
18 changes: 15 additions & 3 deletions PWGJE/JetFinders/jetFinderHF.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
#include <Framework/HistogramRegistry.h>
#include <Framework/HistogramSpec.h>
#include <Framework/InitContext.h>
#include <Framework/Logger.h>
#include <Framework/O2DatabasePDGPlugin.h>
#include <Framework/runDataProcessing.h> // IWYU pragma: export

Expand Down Expand Up @@ -70,7 +71,9 @@ struct JetFinderHFTask {
Configurable<float> trackEtaMax{"trackEtaMax", 0.9, "maximum track eta"};
Configurable<float> trackPhiMin{"trackPhiMin", -999, "minimum track phi"};
Configurable<float> trackPhiMax{"trackPhiMax", 999, "maximum track phi"};
Configurable<double> trackingEfficiency{"trackingEfficiency", 1.0, "tracking efficiency applied to jet finding"};
Configurable<bool> applyTrackingEfficiency{"applyTrackingEfficiency", {false}, "configurable to decide whether to apply artificial tracking efficiency (discarding tracks) in jet finding"};
Configurable<std::vector<double>> trackingEfficiencyPtBinning{"trackingEfficiencyPtBinning", {0., 10, 999.}, "pt binning of tracking efficiency array if applyTrackingEfficiency is true"};
Configurable<std::vector<double>> trackingEfficiency{"trackingEfficiency", {1.0, 1.0}, "tracking efficiency array applied to jet finding if applyTrackingEfficiency is true"};
Configurable<std::string> trackSelections{"trackSelections", "globalTracks", "set track selections"};
Configurable<std::string> particleSelections{"particleSelections", "PhysicalPrimary", "set particle selections"};

Expand Down Expand Up @@ -165,6 +168,15 @@ struct JetFinderHFTask {

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}}});
registry.add("hJetMCP", "sparse for mcp jets", {HistType::kTHnD, {{jetRadiiBins, ""}, {jetPtBinNumber, jetPtMinDouble, jetPtMaxDouble}, {40, -1.0, 1.0}, {18, 0.0, 7.0}}});

if (applyTrackingEfficiency) {
if (trackingEfficiencyPtBinning->size() < 2) {
LOGP(fatal, "jetFinderHF workflow: trackingEfficiencyPtBinning configurable should have at least two bin edges");
}
if (trackingEfficiency->size() + 1 != trackingEfficiencyPtBinning->size()) {
LOGP(fatal, "jetFinderHF workflow: trackingEfficiency configurable should have exactly one less entry than the number of bin edges set in trackingEfficiencyPtBinning configurable");
}
}
}

aod::EMCALClusterDefinition clusterDefinition = aod::emcalcluster::getClusterDefinitionFromString(clusterDefinitionS.value);
Expand Down Expand Up @@ -215,9 +227,9 @@ struct JetFinderHFTask {
}
}
if constexpr (isEvtWiseSub) {
jetfindingutilities::analyseTracks<U, typename U::iterator>(inputParticles, tracks, trackSelection, trackingEfficiency);
jetfindingutilities::analyseTracks<U, typename U::iterator>(inputParticles, tracks, trackSelection, applyTrackingEfficiency, trackingEfficiency, trackingEfficiencyPtBinning);
} else {
jetfindingutilities::analyseTracks(inputParticles, tracks, trackSelection, trackingEfficiency, &candidate);
jetfindingutilities::analyseTracks(inputParticles, tracks, trackSelection, applyTrackingEfficiency, trackingEfficiency, trackingEfficiencyPtBinning, &candidate);
}
jetfindingutilities::findJets(jetFinder, inputParticles, minJetPt, maxJetPt, jetRadius, jetAreaFractionMin, collision, jetsTableInput, constituentsTableInput, registry.get<THn>(HIST("hJet")), fillTHnSparse, true);
}
Expand Down
16 changes: 14 additions & 2 deletions PWGJE/JetFinders/jetFinderV0.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
#include <Framework/HistogramRegistry.h>
#include <Framework/HistogramSpec.h>
#include <Framework/InitContext.h>
#include <Framework/Logger.h>
#include <Framework/O2DatabasePDGPlugin.h>
#include <Framework/runDataProcessing.h> // IWYU pragma: export

Expand Down Expand Up @@ -65,7 +66,9 @@ struct JetFinderV0Task {
Configurable<float> trackEtaMax{"trackEtaMax", 0.9, "maximum track eta"};
Configurable<float> trackPhiMin{"trackPhiMin", -999, "minimum track phi"};
Configurable<float> trackPhiMax{"trackPhiMax", 999, "maximum track phi"};
Configurable<double> trackingEfficiency{"trackingEfficiency", 1.0, "tracking efficiency applied to jet finding"};
Configurable<bool> applyTrackingEfficiency{"applyTrackingEfficiency", {false}, "configurable to decide whether to apply artificial tracking efficiency (discarding tracks) in jet finding"};
Configurable<std::vector<double>> trackingEfficiencyPtBinning{"trackingEfficiencyPtBinning", {0., 10, 999.}, "pt binning of tracking efficiency array if applyTrackingEfficiency is true"};
Configurable<std::vector<double>> trackingEfficiency{"trackingEfficiency", {1.0, 1.0}, "tracking efficiency array applied to jet finding if applyTrackingEfficiency is true"};
Configurable<std::string> trackSelections{"trackSelections", "globalTracks", "set track selections"};
Configurable<std::string> particleSelections{"particleSelections", "PhysicalPrimary", "set particle selections"};

Expand Down Expand Up @@ -156,6 +159,15 @@ struct JetFinderV0Task {

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}}});
registry.add("hJetMCP", "sparse for mcp jets", {HistType::kTHnD, {{jetRadiiBins, ""}, {jetPtBinNumber, jetPtMinDouble, jetPtMaxDouble}, {40, -1.0, 1.0}, {18, 0.0, 7.0}}});

if (applyTrackingEfficiency) {
if (trackingEfficiencyPtBinning->size() < 2) {
LOGP(fatal, "jetFinderV0 workflow: trackingEfficiencyPtBinning configurable should have at least two bin edges");
}
if (trackingEfficiency->size() + 1 != trackingEfficiencyPtBinning->size()) {
LOGP(fatal, "jetFinderV0 workflow: trackingEfficiency configurable should have exactly one less entry than the number of bin edges set in trackingEfficiencyPtBinning configurable");
}
}
}

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))));
Expand Down Expand Up @@ -184,7 +196,7 @@ struct JetFinderV0Task {
}
}
*/
jetfindingutilities::analyseTracksMultipleCandidates(inputParticles, tracks, trackSelection, trackingEfficiency, candidates);
jetfindingutilities::analyseTracksMultipleCandidates(inputParticles, tracks, trackSelection, applyTrackingEfficiency, trackingEfficiency, trackingEfficiencyPtBinning, candidates);

jetfindingutilities::findJets(jetFinder, inputParticles, minJetPt, maxJetPt, jetRadius, jetAreaFractionMin, collision, jetsTableInput, constituentsTableInput, registry.get<THn>(HIST("hJet")), fillTHnSparse, saveJetsWithCandidatesOnly);
}
Expand Down
18 changes: 15 additions & 3 deletions PWGJE/TableProducer/eventwiseConstituentSubtractor.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
#include <Framework/AnalysisHelpers.h>
#include <Framework/Configurable.h>
#include <Framework/InitContext.h>
#include <Framework/Logger.h>
#include <Framework/runDataProcessing.h>

#include <fastjet/PseudoJet.hh>
Expand Down Expand Up @@ -67,7 +68,9 @@ struct eventWiseConstituentSubtractorTask {
Configurable<float> trackEtaMax{"trackEtaMax", 0.9, "maximum track eta"};
Configurable<float> trackPhiMin{"trackPhiMin", -999, "minimum track phi"};
Configurable<float> trackPhiMax{"trackPhiMax", 999, "maximum track phi"};
Configurable<double> trackingEfficiency{"trackingEfficiency", 1.0, "tracking efficiency applied to jet finding"};
Configurable<bool> applyTrackingEfficiency{"applyTrackingEfficiency", {false}, "configurable to decide whether to apply artificial tracking efficiency (discarding tracks) in the collision analysed by this task"};
Configurable<std::vector<double>> trackingEfficiencyPtBinning{"trackingEfficiencyPtBinning", {0., 10, 999.}, "pt binning of tracking efficiency array if applyTrackingEfficiency is true"};
Configurable<std::vector<double>> trackingEfficiency{"trackingEfficiency", {1.0, 1.0}, "tracking efficiency array applied if applyTrackingEfficiency is true"};
Configurable<std::string> trackSelections{"trackSelections", "globalTracks", "set track selections"};

Configurable<std::string> particleSelections{"particleSelections", "PhysicalPrimary", "set particle selections"};
Expand Down Expand Up @@ -95,6 +98,15 @@ struct eventWiseConstituentSubtractorTask {
eventWiseConstituentSubtractor.setDoRhoMassSub(doRhoMassSub);
eventWiseConstituentSubtractor.setConstSubAlphaRMax(alpha, rMax);
eventWiseConstituentSubtractor.setMaxEtaEvent(eventEtaMax);

if (applyTrackingEfficiency) {
if (trackingEfficiencyPtBinning->size() < 2) {
LOGP(fatal, "eventWiseConstituentSubtractor workflow: trackingEfficiencyPtBinning configurable should have at least two bin edges");
}
if (trackingEfficiency->size() + 1 != trackingEfficiencyPtBinning->size()) {
LOGP(fatal, "eventWiseConstituentSubtractor workflow: trackingEfficiency configurable should have exactly one less entry than the number of bin edges set in trackingEfficiencyPtBinning configurable");
}
}
}

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);
Expand All @@ -106,7 +118,7 @@ struct eventWiseConstituentSubtractorTask {
for (auto& candidate : candidates) {
inputParticles.clear();
tracksSubtracted.clear();
jetfindingutilities::analyseTracks(inputParticles, tracks, trackSelection, trackingEfficiency, &candidate);
jetfindingutilities::analyseTracks(inputParticles, tracks, trackSelection, applyTrackingEfficiency, trackingEfficiency, trackingEfficiencyPtBinning, &candidate);

tracksSubtracted = eventWiseConstituentSubtractor.JetBkgSubUtils::doEventConstSub(inputParticles, candidate.rho(), candidate.rhoM());
for (auto const& trackSubtracted : tracksSubtracted) {
Expand Down Expand Up @@ -137,7 +149,7 @@ struct eventWiseConstituentSubtractorTask {
}
inputParticles.clear();
tracksSubtracted.clear();
jetfindingutilities::analyseTracks<soa::Filtered<aod::JetTracks>, soa::Filtered<aod::JetTracks>::iterator>(inputParticles, tracks, trackSelection, trackingEfficiency);
jetfindingutilities::analyseTracks<soa::Filtered<aod::JetTracks>, soa::Filtered<aod::JetTracks>::iterator>(inputParticles, tracks, trackSelection, applyTrackingEfficiency, trackingEfficiency, trackingEfficiencyPtBinning);

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

Expand Down
Loading
Loading