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
29 changes: 0 additions & 29 deletions PWGJE/TableProducer/jetfinder.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,6 @@ struct JetFinderTask {
Produces<JetTable> jetsTable;
Produces<ConstituentTable> constituentsTable;
Produces<ConstituentSubTable> constituentsSubTable;
OutputObj<TH2F> h2JetPt{"h2_jet_pt"};
OutputObj<TH2F> h2JetPhi{"h2_jet_phi"};
OutputObj<TH2F> h2JetEta{"h2_jet_eta"};
OutputObj<TH2F> h2JetNTracks{"h2_jet_ntracks"};
OutputObj<TH1F> hJetPt{"h_jet_pt"};
OutputObj<TH1F> hJetPhi{"h_jet_phi"};
OutputObj<TH1F> hJetEta{"h_jet_eta"};
OutputObj<TH1F> hJetNTracks{"h_jet_ntracks"};

// event level configurables
Configurable<float> vertexZCut{"vertexZCut", 10.0f, "Accepted z-vertex range"};
Expand Down Expand Up @@ -81,24 +73,6 @@ struct JetFinderTask {
{
trackSelection = static_cast<std::string>(trackSelections);

h2JetPt.setObject(new TH2F("h2_jet_pt", "jet p_{T};p_{T} (GeV/#it{c})",
100, 0., 100., 10, 0.05, 1.05));
h2JetPhi.setObject(new TH2F("h2_jet_phi", "jet #phi;#phi",
80, -1., 7., 10, 0.05, 1.05));
h2JetEta.setObject(new TH2F("h2_jet_eta", "jet #eta;#eta",
70, -0.7, 0.7, 10, 0.05, 1.05));
h2JetNTracks.setObject(new TH2F("h2_jet_ntracks", "jet n;n constituents",
30, 0., 30., 10, 0.05, 1.05));

hJetPt.setObject(new TH1F("h_jet_pt", "jet p_{T};p_{T} (GeV/#it{c})",
100, 0., 100.));
hJetPhi.setObject(new TH1F("h_jet_phi", "jet #phi; #phi",
140, -7.0, 7.0));
hJetEta.setObject(new TH1F("h_jet_eta", "jet #eta; #eta",
30, -1.5, 1.5));
hJetNTracks.setObject(new TH1F("h_jet_ntracks", "jet N tracks ; N tracks",
150, -0.5, 99.5));

if (DoRhoAreaSub) {
jetFinder.setBkgSubMode(JetFinder::BkgSubMode::rhoAreaSub);
}
Expand Down Expand Up @@ -138,7 +112,6 @@ struct JetFinderTask {
return;
}

LOG(debug) << "Process data charged!";
inputParticles.clear();
analyseTracks<JetTracks, JetTracks::iterator>(inputParticles, tracks, trackSelection);
findJets(jetFinder, inputParticles, jetRadius, collision, jetsTable, constituentsTable, constituentsSubTable, DoConstSub);
Expand All @@ -152,7 +125,6 @@ struct JetFinderTask {
if (!collision.alias()[kTVXinEMC]) {
return;
}
LOG(debug) << "Process data neutral!";
inputParticles.clear();
analyseClusters(inputParticles, &clusters);
findJets(jetFinder, inputParticles, jetRadius, collision, jetsTable, constituentsTable, constituentsSubTable, DoConstSub);
Expand All @@ -166,7 +138,6 @@ struct JetFinderTask {
if (!collision.alias()[kTVXinEMC]) {
return;
}
LOG(debug) << "Process data full!";
inputParticles.clear();
analyseTracks<JetTracks, JetTracks::iterator>(inputParticles, tracks, trackSelection);
analyseClusters(inputParticles, &clusters);
Expand Down
23 changes: 6 additions & 17 deletions PWGJE/TableProducer/jetfinder.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,9 @@
#include "PWGHF/DataModel/CandidateReconstructionTables.h"
#include "PWGHF/DataModel/CandidateSelectionTables.h"

#include "PWGJE/DataModel/Jet.h"
#include "PWGJE/Core/JetFinder.h"
#include "PWGJE/Core/FastJetUtilities.h"
#include "PWGJE/Core/JetFinder.h"
#include "PWGJE/DataModel/Jet.h"

using JetTracks = soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA, aod::TrackSelection>>;
using JetClusters = o2::soa::Filtered<o2::aod::EMCALClusters>;
Expand Down Expand Up @@ -81,20 +81,19 @@ void analyseTracks(std::vector<fastjet::PseudoJet>& inputParticles, T const& tra
}
if (candidate != std::nullopt) {
auto cand = candidate.value();

if constexpr (std::is_same_v<U, CandidateD0Data> || std::is_same_v<U, CandidateD0MC>) {
if constexpr (std::is_same_v<std::decay_t<U>, CandidateD0Data::iterator> || std::is_same_v<std::decay_t<U>, CandidateD0Data::filtered_iterator> || std::is_same_v<std::decay_t<U>, CandidateD0MC::iterator> || std::is_same_v<std::decay_t<U>, CandidateD0MC::filtered_iterator>) {
if (cand.template prong0_as<JetTracks>().globalIndex() == track.globalIndex() || cand.template prong1_as<JetTracks>().globalIndex() == track.globalIndex()) {
continue;
}
}

if constexpr (std::is_same_v<U, CandidateLcData> || std::is_same_v<U, CandidateLcMC>) {
if constexpr (std::is_same_v<std::decay_t<U>, CandidateLcData::iterator> || std::is_same_v<std::decay_t<U>, CandidateLcData::filtered_iterator> || std::is_same_v<std::decay_t<U>, CandidateLcMC::iterator> || std::is_same_v<std::decay_t<U>, CandidateLcMC::filtered_iterator>) {
if (cand.template prong0_as<JetTracks>().globalIndex() == track.globalIndex() || cand.template prong1_as<JetTracks>().globalIndex() == track.globalIndex() || cand.template prong2_as<JetTracks>().globalIndex() == track.globalIndex()) {
continue;
}
}

if constexpr (std::is_same_v<U, CandidateBPlusData> || std::is_same_v<U, CandidateBPlusMC>) {
if constexpr (std::is_same_v<std::decay_t<U>, CandidateBPlusData::iterator> || std::is_same_v<std::decay_t<U>, CandidateBPlusData::filtered_iterator> || std::is_same_v<std::decay_t<U>, CandidateBPlusMC::iterator> || std::is_same_v<std::decay_t<U>, CandidateBPlusMC::filtered_iterator>) {
if (cand.template prong0_as<aod::HfCand2Prong>().template prong0_as<JetTracks>().globalIndex() == track.globalIndex() || cand.template prong0_as<aod::HfCand2Prong>().template prong1_as<JetTracks>().globalIndex() == track.globalIndex() || cand.template prong1_as<JetTracks>().globalIndex() == track.globalIndex()) {
continue;
}
Expand Down Expand Up @@ -165,7 +164,6 @@ void findJets(JetFinder& jetFinder, std::vector<fastjet::PseudoJet>& inputPartic
std::vector<int> trackconst;
std::vector<int> candconst;
std::vector<int> clusterconst;

jetsTable(collision, jet.pt(), jet.eta(), jet.phi(),
jet.E(), jet.m(), jet.area(), std::round(R * 100));
for (const auto& constituent : sorted_by_pt(jet.constituents())) {
Expand All @@ -186,15 +184,6 @@ void findJets(JetFinder& jetFinder, std::vector<fastjet::PseudoJet>& inputPartic
}
}
constituentsTable(jetsTable.lastIndex(), trackconst, clusterconst, candconst);
// h2JetPt->Fill(jet.pt(), R);
// h2JetPhi->Fill(jet.phi(), R);
// h2JetEta->Fill(jet.rap(), R);
// h2JetNTracks->Fill(jet.constituents().size(), R);
// hJetPt->Fill(jet.pt());
// hJetPhi->Fill(jet.phi());
// hJetEta->Fill(jet.rap());
// hJetNTracks->Fill(jet.constituents().size());
// hCandPt->Fill(candidatepT);
break;
}
}
Expand Down Expand Up @@ -224,7 +213,7 @@ void analyseParticles(std::vector<fastjet::PseudoJet>& inputParticles, float par
if (particle.eta() < particleEtaMin || particle.eta() > particleEtaMax) {
continue;
}
if (particle.getGenStatusCode() != 1) { // CHECK : Does this include HF hadrons that decay?
if (particle.getGenStatusCode() != 1) { // CHECK : Does this exclude the HF hadron?
continue;
}
auto pdgParticle = pdg->GetParticle(particle.pdgCode());
Expand Down
76 changes: 6 additions & 70 deletions PWGJE/TableProducer/jetfinderhf.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,6 @@ struct JetFinderHFTask {
Produces<JetTable> jetsTable;
Produces<ConstituentTable> constituentsTable;
Produces<ConstituentSubTable> constituentsSubTable;
OutputObj<TH2F> h2JetPt{"h2_jet_pt"};
OutputObj<TH2F> h2JetPhi{"h2_jet_phi"};
OutputObj<TH2F> h2JetEta{"h2_jet_eta"};
OutputObj<TH2F> h2JetNTracks{"h2_jet_ntracks"};
OutputObj<TH1F> hJetPt{"h_jet_pt"};
OutputObj<TH1F> hJetPhi{"h_jet_phi"};
OutputObj<TH1F> hJetEta{"h_jet_eta"};
OutputObj<TH1F> hJetNTracks{"h_jet_ntracks"};
OutputObj<TH1F> hCandPt{"h_cand_pt"};

// event level configurables
Configurable<float> vertexZCut{"vertexZCut", 10.0f, "Accepted z-vertex range"};
Expand Down Expand Up @@ -96,26 +87,6 @@ struct JetFinderHFTask {
{
trackSelection = static_cast<std::string>(trackSelections);

h2JetPt.setObject(new TH2F("h2_jet_pt", "jet p_{T};p_{T} (GeV/#it{c})",
100, 0., 100., 10, 0.05, 1.05));
h2JetPhi.setObject(new TH2F("h2_jet_phi", "jet #phi;#phi",
80, -1., 7., 10, 0.05, 1.05));
h2JetEta.setObject(new TH2F("h2_jet_eta", "jet #eta;#eta",
70, -0.7, 0.7, 10, 0.05, 1.05));
h2JetNTracks.setObject(new TH2F("h2_jet_ntracks", "jet n;n constituents",
30, 0., 30., 10, 0.05, 1.05));

hJetPt.setObject(new TH1F("h_jet_pt", "jet p_{T};p_{T} (GeV/#it{c})",
100, 0., 100.));
hJetPhi.setObject(new TH1F("h_jet_phi", "jet #phi; #phi",
140, -7.0, 7.0));
hJetEta.setObject(new TH1F("h_jet_eta", "jet #eta; #eta",
30, -1.5, 1.5));
hJetNTracks.setObject(new TH1F("h_jet_ntracks", "jet N tracks ; N tracks",
150, -0.5, 99.5));
hCandPt.setObject(new TH1F("h_cand_pt", "jet p_{T,cand};p_{T,cand} (GeV/#it{c})",
100, 0., 100.));

if (DoRhoAreaSub) {
jetFinder.setBkgSubMode(JetFinder::BkgSubMode::rhoAreaSub);
}
Expand Down Expand Up @@ -232,7 +203,6 @@ struct JetFinderHFTask {
void analyseMCGen2Prong(T const& collision, U const& particles)
{
inputParticles.clear();
LOG(debug) << "Per Event MCP";
std::vector<JetParticles2Prong::iterator> candidates;
candidates.clear();
analyseMCGenParticles(collision, particles, candidates);
Expand All @@ -242,7 +212,6 @@ struct JetFinderHFTask {
void analyseMCGen3Prong(T const& collision, U const& particles)
{
inputParticles.clear();
LOG(debug) << "Per Event MCP";
std::vector<JetParticles3Prong::iterator> candidates;
analyseMCGenParticles(collision, particles, candidates);
}
Expand All @@ -251,7 +220,6 @@ struct JetFinderHFTask {
void analyseMCGenBPlus(T const& collision, U const& particles)
{
inputParticles.clear();
LOG(debug) << "Per Event MCP";
std::vector<JetParticlesBPlus::iterator> candidates;
candidates.clear();
analyseMCGenParticles(collision, particles, candidates);
Expand All @@ -262,54 +230,22 @@ struct JetFinderHFTask {
}
PROCESS_SWITCH(JetFinderHFTask, processDummy, "Dummy process function turned on by default", true);

void processD0ChargedJetsData(soa::Filtered<soa::Join<aod::Collisions, aod::EvSels>>::iterator const& collision,
JetTracks const& tracks,
soa::Filtered<soa::Join<aod::HfCand2Prong, aod::HfSelD0>> const& candidates)
{
analyseData(collision, tracks, candidates);
}
void processD0ChargedJetsData(soa::Filtered<soa::Join<aod::Collisions, aod::EvSels>>::iterator const& collision, JetTracks const& tracks, CandidateD0Data const& candidates) { analyseData(collision, tracks, candidates); }
PROCESS_SWITCH(JetFinderHFTask, processD0ChargedJetsData, "D0 jet finding on data", false);

void processD0ChargedJetsMCD(soa::Join<aod::Collisions, aod::EvSels>::iterator const& collision,
JetTracks const& tracks,
soa::Filtered<soa::Join<aod::HfCand2Prong, aod::HfSelD0, aod::HfCand2ProngMcRec>> const& candidates)
{
analyseMCD(collision, tracks, candidates);
}
void processD0ChargedJetsMCD(soa::Join<aod::Collisions, aod::EvSels>::iterator const& collision, JetTracks const& tracks, CandidateD0MC const& candidates) { analyseMCD(collision, tracks, candidates); }
PROCESS_SWITCH(JetFinderHFTask, processD0ChargedJetsMCD, "D0 finding on MC detector level", false);

void processBPlusChargedJetsData(soa::Filtered<soa::Join<aod::Collisions, aod::EvSels>>::iterator const& collision,
JetTracks const& tracks,
soa::Filtered<soa::Join<aod::HfCandBplus, aod::HfSelBplusToD0Pi>> const& candidates,
aod::HfCand2Prong const& HFdaughters)
{
analyseData(collision, tracks, candidates);
}
void processBPlusChargedJetsData(soa::Filtered<soa::Join<aod::Collisions, aod::EvSels>>::iterator const& collision, JetTracks const& tracks, CandidateBPlusData const& candidates, aod::HfCand2Prong const& HFdaughters) { analyseData(collision, tracks, candidates); }
PROCESS_SWITCH(JetFinderHFTask, processBPlusChargedJetsData, "B+ jet finding on data", false);

void processBPlusChargedJetsMCD(soa::Join<aod::Collisions, aod::EvSels>::iterator const& collision,
JetTracks const& tracks,
soa::Filtered<soa::Join<aod::HfCandBplus, aod::HfSelBplusToD0Pi, aod::HfCandBplusMcRec>> const& candidates,
aod::HfCand2Prong const& HFdaughters)
{
analyseMCD(collision, tracks, candidates);
}
void processBPlusChargedJetsMCD(soa::Join<aod::Collisions, aod::EvSels>::iterator const& collision, JetTracks const& tracks, CandidateBPlusMC const& candidates, aod::HfCand2Prong const& HFdaughters) { analyseMCD(collision, tracks, candidates); }
PROCESS_SWITCH(JetFinderHFTask, processBPlusChargedJetsMCD, "B+ finding on MC detector level", false);

void processLcChargedJetsData(soa::Filtered<soa::Join<aod::Collisions, aod::EvSels>>::iterator const& collision,
JetTracks const& tracks,
soa::Filtered<soa::Join<aod::HfCand3Prong, aod::HfSelLc>> const& candidates)
{
analyseData(collision, tracks, candidates);
}
void processLcChargedJetsData(soa::Filtered<soa::Join<aod::Collisions, aod::EvSels>>::iterator const& collision, JetTracks const& tracks, CandidateLcData const& candidates) { analyseData(collision, tracks, candidates); }
PROCESS_SWITCH(JetFinderHFTask, processLcChargedJetsData, "Lc jet finding on data", false);

void processLcChargedJetsMCD(soa::Join<aod::Collisions, aod::EvSels>::iterator const& collision,
JetTracks const& tracks,
soa::Filtered<soa::Join<aod::HfCand3Prong, aod::HfSelLc, aod::HfCand3ProngMcRec>> const& candidates)
{
analyseMCD(collision, tracks, candidates);
}
void processLcChargedJetsMCD(soa::Join<aod::Collisions, aod::EvSels>::iterator const& collision, JetTracks const& tracks, CandidateLcMC const& candidates) { analyseMCD(collision, tracks, candidates); }
PROCESS_SWITCH(JetFinderHFTask, processLcChargedJetsMCD, "Lc finding on MC detector level", false);

void process2ProngJetsMCP(aod::McCollision const& collision,
Expand Down
8 changes: 8 additions & 0 deletions PWGJE/Tasks/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -56,4 +56,12 @@ if(FastJet_FOUND)
SOURCES jetvalidationqa.cxx
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::PWGJECore O2Physics::AnalysisCore
COMPONENT_NAME Analysis)
o2physics_add_dpl_workflow(jet-finder-hf-qa
SOURCES jetfinderhfQA.cxx
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::PWGJECore O2Physics::AnalysisCore
COMPONENT_NAME Analysis)
o2physics_add_dpl_workflow(jet-tutorial
SOURCES jetTutorial.cxx
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::PWGJECore O2Physics::AnalysisCore
COMPONENT_NAME Analysis)
endif()
Loading