Skip to content

feat: Add End-to-End Scikit-HEP Analysis Pipeline Tutorial - #96

Open
Paramveersingh-S wants to merge 7 commits into
hsf-training:mainfrom
Paramveersingh-S:feat-end-to-end-tutorial
Open

feat: Add End-to-End Scikit-HEP Analysis Pipeline Tutorial#96
Paramveersingh-S wants to merge 7 commits into
hsf-training:mainfrom
Paramveersingh-S:feat-end-to-end-tutorial

Conversation

@Paramveersingh-S

Copy link
Copy Markdown
Contributor

Description:

Summary

This PR introduces a new tutorial chapter, 08-end-to-end-analysis.ipynb, to the Scikit-HEP training module.
While the existing chapters do an excellent job of teaching individual libraries in isolation, it is incredibly helpful for newcomers to see how these libraries chain together in a realistic physics workflow. This new notebook simulates an end-to-end "discovery" analysis of the $H \rightarrow ZZ \rightarrow 4\ell$ channel.

Additions

  • 08-end-to-end-analysis.ipynb: A fully executable Jupyter notebook that:
    1. Ingests a CMS simulated dataset directly via HTTP using uproot.
    2. Manipulates and filters jagged arrays using awkward to select events with exactly 4 muons and enforce charge conservation.
    3. Computes kinematics using vector to calculate the invariant mass of the four muons.
    4. Visualizes the resulting physics peak using hist.
  • myst.yml: Added the new notebook to the Table of Contents for the rendered website.

Testing

I have verified that the notebook executes sequentially without errors using the skhep_testdata sample file uproot-HZZ.root.
(Note: Since skhep_testdata uses a heavily truncated mock dataset, the final plot is primarily to verify that the hist plotting pipeline and 4-vector arithmetic execute correctly.)
Please let me know if there are any formatting changes or additional sections you'd like me to add!

@welcome

welcome Bot commented Jun 24, 2026

Copy link
Copy Markdown

Thanks for opening your first pull request here 🚀! If you have any questions, feel free to mention one of the conveners, previous contributors, or attend our weekly meeting (see
our homepage). Also, sometimes PRs go unnoticed, so don't hesitate to @mention some of us, if we do not come back to you within a few days.

@eduardo-rodrigues

Copy link
Copy Markdown
Member

Hello @Paramveersingh-S, can you make statements on where you got this analysis from and whether you used AI to help you prepare this PR (and to which level)? Thank you.

@Paramveersingh-S

Copy link
Copy Markdown
Contributor Author

hello @eduardo-rodrigues i have implemented and tested this PR in google colab on T4 GPU
the results were : ['NJet', 'Jet_Px', 'Jet_Py', 'Jet_Pz', 'Jet_E', 'Jet_btag', 'Jet_ID', 'NMuon', 'Muon_Px', 'Muon_Py', 'Muon_Pz', 'Muon_E', 'Muon_Charge', 'Muon_Iso', 'NElectron', 'Electron_Px', 'Electron_Py', 'Electron_Pz', 'Electron_E', 'Electron_Charge', 'Electron_Iso', 'NPhoton', 'Photon_Px', 'Photon_Py', 'Photon_Pz', 'Photon_E', 'Photon_Iso', 'MET_px', 'MET_py', 'MChadronicBottom_px', 'MChadronicBottom_py', 'MChadronicBottom_pz', 'MCleptonicBottom_px', 'MCleptonicBottom_py', 'MCleptonicBottom_pz', 'MChadronicWDecayQuark_px', 'MChadronicWDecayQuark_py', 'MChadronicWDecayQuark_pz', 'MChadronicWDecayQuarkBar_px', 'MChadronicWDecayQuarkBar_py', 'MChadronicWDecayQuarkBar_pz', 'MClepton_px', 'MClepton_py', 'MClepton_pz', 'MCleptonPDGid', 'MCneutrino_px', 'MCneutrino_py', 'MCneutrino_pz', 'NPrimaryVertices', 'triggerIsoMu24', 'EventWeight']
Total events loaded: 2421
Muon energies for the first 5 events:
[[54.8, 39.4], [31.7], [54.7, 47.5], [413, 344], [121, 51.3]]
Events remaining with exactly 4 muons: 8
Events passing charge conservation: 8
Reconstructed Higgs Masses (GeV):
[178, 176, 217, 184, 209, 191, 304, 190]
image

Note: these are cell wise results.
I only used Gemini AI to write the explanation you see on the top of each cell more professionally for better understanding of the learners.

@ariostas ariostas left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Hi @Paramveersingh-S, I like the idea of having a semi-realistic analysis pipeline at the end. However, I feel like at the current state it doesn't really do that. The pipeline is pretty basic, so it feels like it's kind of just gluing together pieces of the previous chapters. And even in previous chapters there are more interesting operation being done, like looking through muon combinations with Awkward.

So I think the pipeline we should show should hopefully have these features:

  • Use real data. Something like the CMS OpenData file that is used in some of the chapters. It should be sizable, and not just a test file.
  • It should use some more interesting features of the packages. Something like the ak.combinations that was shown in a previous chapter.
  • The physics should also be interesting. I think what you picked is a good one since for $H\rightarrow ZZ \rightarrow 4\ell$ you can look for 4 muons, 4 electrons, or 2 of each.
  • End up with an interesting result. Maybe like doing some fit to find out the mass of the Higgs.

@Paramveersingh-S

Copy link
Copy Markdown
Contributor Author

Thanks @ariostas for you advices, give me some time i will work on this as soon as possible.

@Paramveersingh-S
Paramveersingh-S force-pushed the feat-end-to-end-tutorial branch from 2be8626 to bf7243d Compare August 7, 2026 14:12
@Paramveersingh-S

Copy link
Copy Markdown
Contributor Author

Hi @ariostas , according to you review, I have completely changed the pipeline with realistic data and other features.
please review the file by running on your own.
Also you can share your views if any other changes are needed.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants