Skip to content

[PWGJE] Jet substructure SoftDrop#14916

Open
louisemillot wants to merge 8 commits intoAliceO2Group:masterfrom
louisemillot:jetSubstructure
Open

[PWGJE] Jet substructure SoftDrop#14916
louisemillot wants to merge 8 commits intoAliceO2Group:masterfrom
louisemillot:jetSubstructure

Conversation

@louisemillot
Copy link

Add detailed jet substructure analysis for data, MCD, and MCP

  • Implemented soft-drop jet reclustering with constituent handling
  • Filled matched histograms for geometry- and event-wise matched jets
  • Added event selection and centrality cuts for collisions in data and MC
  • Handled weighted MC events and event-wise constituent-subtracted jets
  • Updated histograms for leading/subleading prongs, zg, rg, and thetag observables
  • Added QA histograms for collisions and pTHat checks

@github-actions github-actions bot changed the title Jet substructure SoftDrop [PWGJE] Jet substructure SoftDrop Feb 11, 2026
@nzardosh
Copy link
Collaborator

Hi @louisemillot , thanks for your PR. Unfortunately I think you need to change the structure of your task. The tables in jetSubstructure.h are not meant for common analyses, they are meant for my own analyses and I would like to keep them independent so that I can change them freely as my analysis progresses. Instead you should look to develop your own tables for this analysis and replace them in your task. The only tables that can be used are the SPs tables, since they are core tables that can then be given to the matching tasks and avoids you having to write the matching from scratch. Therefore you need to make two tasks. One to fill the SP tables and your own tables, and one to store the output after the matching.

Copy link
Collaborator

@nzardosh nzardosh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have left a few comments but the task could do witha careful chck once you have tidied it up. Just to point out, my previous comment did not suggest that you change from tables to histograms, but that instead you make your own tables for this analysis (other than the common ones used for the subjet matching)

PROCESS_SWITCH(JetSubstructureSoftDrop, processCollisionsFromData, "collisions from Data", false);

void processCollisionsFromMc(soa::Filtered<soa::Join<aod::JetCollisions, aod::JMcCollisionLbs>>::iterator const& collision,
soa::Join<aod::JetMcCollisions, aod::JMcCollisionPIs> const&,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do you add the PI tables? You wont be able to run on derived data with these. Please only include tables you actually access


void processCollisionsFromMcWeighted(soa::Join<aod::JetCollisions, aod::JMcCollisionLbs>::iterator const& collision,
soa::Join<aod::JetMcCollisions, aod::JMcCollisionPIs> const&,
soa::Join<aod::McCollisions, aod::HepMCXSections> const&)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do you include these tables? the pThard info is contained in the JMcCollisions already

}
auto z = parentSubJet2.perp() / (parentSubJet1.perp() + parentSubJet2.perp());
auto theta = parentSubJet1.delta_R(parentSubJet2);
energyMotherVec.push_back(daughterSubJet.e());
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why are you filling these vectors since you dont then use them?


fastjetutilities::fillTracks(jetConstituent, jetConstituents, jetConstituent.globalIndex());
}
jetReclustering<false, isSubtracted>(jet, weight);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

also how does this compile since you are returning a tuple here but not assigning it?

}
PROCESS_SWITCH(JetSubstructureSoftDrop, processChargedJetsMCD, "charged jet MCD substructure weighted", false);

void processChargedJetsMCDWeighted(soa::Filtered<aod::JetCollisionsMCD>::iterator const& collision,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do you have separate weighted and non weighted MC process fucntions?

ChargedMCDMatchedJets const&,
aod::JetTracksSub const& tracks)
{
if (!jetderiveddatautilities::selectCollision(collision, eventSelectionBits, skipMBGapEvents)) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

all of these checks and the ones below on centrality and occupancy could go in a function so that they are not always repeated

PROCESS_SWITCH(JetSubstructureSoftDrop, processJetsMCDEventWiseMatchedMCPWeighted, "matched mcp and mcd jets eventwise weighted", false);

int totalMCDjets = 0;
void processNumberOfMCDJetsWeighted(o2::aod::ChargedMCDetectorLevelJets const& mcdjet)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what is this process function doing? there is no output

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Development

Successfully merging this pull request may close these issues.

3 participants