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: 4 additions & 24 deletions PWGJE/Core/JetFindingUtilities.h
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ constexpr bool isEMCALClusterTable()
*/

template <typename T, typename U>
bool isTrackSelected(T const& track, int trackSelection, bool applyTrackingEfficiency, const std::vector<double>& trackingEfficiency, const std::vector<double>& trackingEfficiencyPtBinning, const U* candidate = nullptr)
bool isTrackSelected(T const& track, int trackSelection, const U* candidate = nullptr)
{

if (!jetderiveddatautilities::selectTrack(track, trackSelection)) {
Expand All @@ -102,16 +102,6 @@ bool isTrackSelected(T const& track, int trackSelection, bool applyTrackingEffic
return false;
}
}
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]) {
return false;
}
}
}
return true;
}

Expand All @@ -125,10 +115,10 @@ bool isTrackSelected(T const& track, int trackSelection, bool applyTrackingEffic
*/

template <typename T, typename U>
void analyseTracks(std::vector<fastjet::PseudoJet>& inputParticles, T const& tracks, int trackSelection, bool applyTrackingEfficiency, const std::vector<double>& trackingEfficiency, const std::vector<double>& trackingEfficiencyPtBinning, const U* candidate = nullptr)
void analyseTracks(std::vector<fastjet::PseudoJet>& inputParticles, T const& tracks, int trackSelection, const U* candidate = nullptr)
{
for (auto& track : tracks) {
if (isTrackSelected(track, trackSelection, applyTrackingEfficiency, trackingEfficiency, trackingEfficiencyPtBinning, candidate)) {
if (isTrackSelected(track, trackSelection, candidate)) {
fastjetutilities::fillTracks(track, inputParticles, track.globalIndex());
}
}
Expand All @@ -144,7 +134,7 @@ void analyseTracks(std::vector<fastjet::PseudoJet>& inputParticles, T const& tra
*/

template <typename T, typename U>
void analyseTracksMultipleCandidates(std::vector<fastjet::PseudoJet>& inputParticles, T const& tracks, int trackSelection, bool applyTrackingEfficiency, const std::vector<double>& trackingEfficiency, const std::vector<double>& trackingEfficiencyPtBinning, U const& candidates)
void analyseTracksMultipleCandidates(std::vector<fastjet::PseudoJet>& inputParticles, T const& tracks, int trackSelection, U const& candidates)
{
for (auto& track : tracks) {
if (!jetderiveddatautilities::selectTrack(track, trackSelection)) {
Expand All @@ -155,16 +145,6 @@ void analyseTracksMultipleCandidates(std::vector<fastjet::PseudoJet>& inputParti
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 Down
18 changes: 3 additions & 15 deletions PWGJE/JetFinders/jetFinder.h
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,6 @@ struct JetFinderTask {
o2::framework::Configurable<float> trackEtaMax{"trackEtaMax", 0.9, "maximum track eta"};
o2::framework::Configurable<float> trackPhiMin{"trackPhiMin", -999, "minimum track phi"};
o2::framework::Configurable<float> trackPhiMax{"trackPhiMax", 999, "maximum track phi"};
o2::framework::Configurable<bool> applyTrackingEfficiency{"applyTrackingEfficiency", {false}, "configurable to decide whether to apply artificial tracking efficiency (discarding tracks) in jet finding"};
o2::framework::Configurable<std::vector<double>> trackingEfficiencyPtBinning{"trackingEfficiencyPtBinning", {0., 10, 999.}, "pt binning of tracking efficiency array if applyTrackingEfficiency is true"};
o2::framework::Configurable<std::vector<double>> trackingEfficiency{"trackingEfficiency", {1.0, 1.0}, "tracking efficiency array applied to jet finding if applyTrackingEfficiency is true"};
o2::framework::Configurable<std::string> trackSelections{"trackSelections", "globalTracks", "set track selections"};
o2::framework::Configurable<std::string> particleSelections{"particleSelections", "PhysicalPrimary", "set particle selections"};

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

o2::framework::expressions::Filter collisionFilter = (nabs(o2::aod::jcollision::posZ) < vertexZCut && o2::aod::jcollision::centFT0M >= centralityMin && o2::aod::jcollision::centFT0M < centralityMax && o2::aod::jcollision::trackOccupancyInTimeRange <= trackOccupancyInTimeRangeMax); // should we add a posZ vtx cut here or leave it to analysers?
Expand All @@ -206,7 +194,7 @@ struct JetFinderTask {
return;
}
inputParticles.clear();
jetfindingutilities::analyseTracks<o2::soa::Filtered<o2::aod::JetTracks>, o2::soa::Filtered<o2::aod::JetTracks>::iterator>(inputParticles, tracks, trackSelection, applyTrackingEfficiency, trackingEfficiency, trackingEfficiencyPtBinning);
jetfindingutilities::analyseTracks<o2::soa::Filtered<o2::aod::JetTracks>, o2::soa::Filtered<o2::aod::JetTracks>::iterator>(inputParticles, tracks, trackSelection);
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 @@ -219,7 +207,7 @@ struct JetFinderTask {
return;
}
inputParticles.clear();
jetfindingutilities::analyseTracks<o2::soa::Filtered<o2::aod::JetTracksSub>, o2::soa::Filtered<o2::aod::JetTracksSub>::iterator>(inputParticles, tracks, trackSelection, applyTrackingEfficiency, trackingEfficiency, trackingEfficiencyPtBinning);
jetfindingutilities::analyseTracks<o2::soa::Filtered<o2::aod::JetTracksSub>, o2::soa::Filtered<o2::aod::JetTracksSub>::iterator>(inputParticles, tracks, trackSelection);
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 @@ -245,7 +233,7 @@ struct JetFinderTask {
return;
}
inputParticles.clear();
jetfindingutilities::analyseTracks<o2::soa::Filtered<o2::aod::JetTracks>, o2::soa::Filtered<o2::aod::JetTracks>::iterator>(inputParticles, tracks, trackSelection, applyTrackingEfficiency, trackingEfficiency, trackingEfficiencyPtBinning);
jetfindingutilities::analyseTracks<o2::soa::Filtered<o2::aod::JetTracks>, o2::soa::Filtered<o2::aod::JetTracks>::iterator>(inputParticles, tracks, trackSelection);
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
16 changes: 2 additions & 14 deletions PWGJE/JetFinders/jetFinderHF.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,9 +71,6 @@ struct JetFinderHFTask {
o2::framework::Configurable<float> trackEtaMax{"trackEtaMax", 0.9, "maximum track eta"};
o2::framework::Configurable<float> trackPhiMin{"trackPhiMin", -999, "minimum track phi"};
o2::framework::Configurable<float> trackPhiMax{"trackPhiMax", 999, "maximum track phi"};
o2::framework::Configurable<bool> applyTrackingEfficiency{"applyTrackingEfficiency", {false}, "configurable to decide whether to apply artificial tracking efficiency (discarding tracks) in jet finding"};
o2::framework::Configurable<std::vector<double>> trackingEfficiencyPtBinning{"trackingEfficiencyPtBinning", {0., 10, 999.}, "pt binning of tracking efficiency array if applyTrackingEfficiency is true"};
o2::framework::Configurable<std::vector<double>> trackingEfficiency{"trackingEfficiency", {1.0, 1.0}, "tracking efficiency array applied to jet finding if applyTrackingEfficiency is true"};
o2::framework::Configurable<std::string> trackSelections{"trackSelections", "globalTracks", "set track selections"};
o2::framework::Configurable<std::string> particleSelections{"particleSelections", "PhysicalPrimary", "set particle selections"};

Expand Down Expand Up @@ -184,15 +181,6 @@ struct JetFinderHFTask {

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

o2::framework::expressions::Filter collisionFilter = (nabs(o2::aod::jcollision::posZ) < vertexZCut && o2::aod::jcollision::centFT0M >= centralityMin && o2::aod::jcollision::centFT0M < centralityMax && o2::aod::jcollision::trackOccupancyInTimeRange <= trackOccupancyInTimeRangeMax);
Expand Down Expand Up @@ -242,9 +230,9 @@ struct JetFinderHFTask {
}
}
if constexpr (isEvtWiseSub) {
jetfindingutilities::analyseTracks<U, typename U::iterator>(inputParticles, tracks, trackSelection, applyTrackingEfficiency, trackingEfficiency, trackingEfficiencyPtBinning);
jetfindingutilities::analyseTracks<U, typename U::iterator>(inputParticles, tracks, trackSelection);
} else {
jetfindingutilities::analyseTracks(inputParticles, tracks, trackSelection, applyTrackingEfficiency, trackingEfficiency, trackingEfficiencyPtBinning, &candidate);
jetfindingutilities::analyseTracks(inputParticles, tracks, trackSelection, &candidate);
}
jetfindingutilities::findJets(jetFinder, inputParticles, minJetPt, maxJetPt, jetRadius, jetAreaFractionMin, collision, jetsTableInput, constituentsTableInput, registry.get<THn>(HIST("hJet")), fillTHnSparse, true);
}
Expand Down
14 changes: 1 addition & 13 deletions PWGJE/JetFinders/jetFinderHFHFBar.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,9 +71,6 @@ struct JetFinderHFHFBarTask {
o2::framework::Configurable<float> trackEtaMax{"trackEtaMax", 0.9, "maximum track eta"};
o2::framework::Configurable<float> trackPhiMin{"trackPhiMin", -999, "minimum track phi"};
o2::framework::Configurable<float> trackPhiMax{"trackPhiMax", 999, "maximum track phi"};
o2::framework::Configurable<bool> applyTrackingEfficiency{"applyTrackingEfficiency", {false}, "configurable to decide whether to apply artificial tracking efficiency (discarding tracks) in jet finding"};
o2::framework::Configurable<std::vector<double>> trackingEfficiencyPtBinning{"trackingEfficiencyPtBinning", {0., 10, 999.}, "pt binning of tracking efficiency array if applyTrackingEfficiency is true"};
o2::framework::Configurable<std::vector<double>> trackingEfficiency{"trackingEfficiency", {1.0, 1.0}, "tracking efficiency array applied to jet finding if applyTrackingEfficiency is true"};
o2::framework::Configurable<std::string> trackSelections{"trackSelections", "globalTracks", "set track selections"};
o2::framework::Configurable<std::string> particleSelections{"particleSelections", "PhysicalPrimary", "set particle selections"};

Expand Down Expand Up @@ -181,15 +178,6 @@ struct JetFinderHFHFBarTask {

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

o2::aod::EMCALClusterDefinition clusterDefinition = o2::aod::emcalcluster::getClusterDefinitionFromString(clusterDefinitionS.value);
Expand Down Expand Up @@ -247,7 +235,7 @@ struct JetFinderHFHFBarTask {
return;
}
}
jetfindingutilities::analyseTracks(inputParticles, tracks, trackSelection, applyTrackingEfficiency, trackingEfficiency, trackingEfficiencyPtBinning, &candidate);
jetfindingutilities::analyseTracks(inputParticles, tracks, trackSelection, &candidate);

jetfindingutilities::findJets(jetFinder, inputParticles, minJetPt, maxJetPt, jetRadius, jetAreaFractionMin, collision, jetsTableInput, constituentsTableInput, registry.get<THn>(HIST("hJet")), fillTHnSparse, true);
}
Expand Down
14 changes: 1 addition & 13 deletions PWGJE/JetFinders/jetFinderV0.h
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,6 @@ struct JetFinderV0Task {
o2::framework::Configurable<float> trackEtaMax{"trackEtaMax", 0.9, "maximum track eta"};
o2::framework::Configurable<float> trackPhiMin{"trackPhiMin", -999, "minimum track phi"};
o2::framework::Configurable<float> trackPhiMax{"trackPhiMax", 999, "maximum track phi"};
o2::framework::Configurable<bool> applyTrackingEfficiency{"applyTrackingEfficiency", {false}, "configurable to decide whether to apply artificial tracking efficiency (discarding tracks) in jet finding"};
o2::framework::Configurable<std::vector<double>> trackingEfficiencyPtBinning{"trackingEfficiencyPtBinning", {0., 10, 999.}, "pt binning of tracking efficiency array if applyTrackingEfficiency is true"};
o2::framework::Configurable<std::vector<double>> trackingEfficiency{"trackingEfficiency", {1.0, 1.0}, "tracking efficiency array applied to jet finding if applyTrackingEfficiency is true"};
o2::framework::Configurable<std::string> trackSelections{"trackSelections", "globalTracks", "set track selections"};
o2::framework::Configurable<std::string> particleSelections{"particleSelections", "PhysicalPrimary", "set particle selections"};

Expand Down Expand Up @@ -172,15 +169,6 @@ struct JetFinderV0Task {

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

o2::framework::expressions::Filter collisionFilter = (nabs(o2::aod::jcollision::posZ) < vertexZCut && o2::aod::jcollision::centFT0M >= centralityMin && o2::aod::jcollision::centFT0M < centralityMax && o2::aod::jcollision::trackOccupancyInTimeRange <= trackOccupancyInTimeRangeMax);
Expand Down Expand Up @@ -209,7 +197,7 @@ struct JetFinderV0Task {
}
}
*/
jetfindingutilities::analyseTracksMultipleCandidates(inputParticles, tracks, trackSelection, applyTrackingEfficiency, trackingEfficiency, trackingEfficiencyPtBinning, candidates);
jetfindingutilities::analyseTracksMultipleCandidates(inputParticles, tracks, trackSelection, candidates);

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