{ "cells": [ { "cell_type": "markdown", "id": "88ab06cb", "metadata": {}, "source": [ "# ntpl008_import\n", "Example of converting data stored in a TTree into an RNTuple\n", "\n", "\n", "\n", "\n", "**Author:** The ROOT Team \n", "This notebook tutorial was automatically generated with ROOTBOOK-izer from the macro found in the ROOT repository on Tuesday, May 19, 2026 at 08:14 PM." ] }, { "cell_type": "code", "execution_count": 1, "id": "9caf7c7b", "metadata": { "collapsed": false, "execution": { "iopub.execute_input": "2026-05-19T20:15:03.021795Z", "iopub.status.busy": "2026-05-19T20:15:03.021683Z", "iopub.status.idle": "2026-05-19T20:15:03.027418Z", "shell.execute_reply": "2026-05-19T20:15:03.026803Z" } }, "outputs": [], "source": [ "%%cpp -d\n", "#include \n", "#include \n", "#include \n", "#include \n", "\n", "#include \n", "#include \n", "#include \n", "\n", "using RNTupleImporter = ROOT::Experimental::RNTupleImporter;\n", "\n", "constexpr char const *kTreeFileName = \"http://root.cern.ch/files/HiggsTauTauReduced/GluGluToHToTauTau.root\";\n", "constexpr char const *kTreeName = \"Events\";\n", "constexpr char const *kNTupleFileName = \"ntpl008_import.root\";" ] }, { "cell_type": "markdown", "id": "0646cba0", "metadata": {}, "source": [ "RNTupleImporter appends keys to the output file; make sure a second run of the tutorial does not fail\n", "with `Key 'Events' already exists in file ntpl008_import.root` by removing the output file." ] }, { "cell_type": "code", "execution_count": 2, "id": "3b8a0950", "metadata": { "collapsed": false, "execution": { "iopub.execute_input": "2026-05-19T20:15:03.028746Z", "iopub.status.busy": "2026-05-19T20:15:03.028627Z", "iopub.status.idle": "2026-05-19T20:15:03.361103Z", "shell.execute_reply": "2026-05-19T20:15:03.360494Z" } }, "outputs": [], "source": [ "gSystem->Unlink(kNTupleFileName);" ] }, { "cell_type": "markdown", "id": "9c741c73", "metadata": {}, "source": [ "Use multiple threads to compress RNTuple data." ] }, { "cell_type": "code", "execution_count": 3, "id": "c34b9fcf", "metadata": { "collapsed": false, "execution": { "iopub.execute_input": "2026-05-19T20:15:03.362975Z", "iopub.status.busy": "2026-05-19T20:15:03.362853Z", "iopub.status.idle": "2026-05-19T20:15:03.567420Z", "shell.execute_reply": "2026-05-19T20:15:03.566996Z" } }, "outputs": [], "source": [ "ROOT::EnableImplicitMT();" ] }, { "cell_type": "markdown", "id": "b90d19ca", "metadata": {}, "source": [ "Create a new RNTupleImporter object." ] }, { "cell_type": "code", "execution_count": 4, "id": "c6ad9e0b", "metadata": { "collapsed": false, "execution": { "iopub.execute_input": "2026-05-19T20:15:03.569621Z", "iopub.status.busy": "2026-05-19T20:15:03.569487Z", "iopub.status.idle": "2026-05-19T20:15:04.139102Z", "shell.execute_reply": "2026-05-19T20:15:04.138446Z" } }, "outputs": [], "source": [ "auto importer = RNTupleImporter::Create(kTreeFileName, kTreeName, kNTupleFileName);" ] }, { "cell_type": "markdown", "id": "10897f89", "metadata": {}, "source": [ "Begin importing." ] }, { "cell_type": "code", "execution_count": 5, "id": "f20592ef", "metadata": { "collapsed": false, "execution": { "iopub.execute_input": "2026-05-19T20:15:04.140829Z", "iopub.status.busy": "2026-05-19T20:15:04.140711Z", "iopub.status.idle": "2026-05-19T20:15:04.850539Z", "shell.execute_reply": "2026-05-19T20:15:04.849832Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Importing 'run' [std::int32_t]\n", "Importing 'luminosityBlock' [std::uint32_t]\n", "Importing 'event' [std::uint64_t]\n", "Importing 'HLT_IsoMu24_eta2p1' [bool]\n", "Importing 'HLT_IsoMu24' [bool]\n", "Importing 'HLT_IsoMu17_eta2p1_LooseIsoPFTau20' [bool]\n", "Importing 'PV_npvs' [std::int32_t]\n", "Importing 'PV_x' [float]\n", "Importing 'PV_y' [float]\n", "Importing 'PV_z' [float]\n", "Importing 'MET_pt' [float]\n", "Importing 'MET_phi' [float]\n", "Importing 'MET_sumet' [float]\n", "Importing 'MET_significance' [float]\n", "Importing 'MET_CovXX' [float]\n", "Importing 'MET_CovXY' [float]\n", "Importing 'MET_CovYY' [float]\n", "Importing (projected) 'GenPart_pt' [ROOT::VecOps::RVec]\n", "Importing (projected) 'GenPart_eta' [ROOT::VecOps::RVec]\n", "Importing (projected) 'GenPart_phi' [ROOT::VecOps::RVec]\n", "Importing (projected) 'GenPart_mass' [ROOT::VecOps::RVec]\n", "Importing (projected) 'GenPart_pdgId' [ROOT::VecOps::RVec]\n", "Importing (projected) 'GenPart_status' [ROOT::VecOps::RVec]\n", "Importing (projected) 'nGenPart' [ROOT::RNTupleCardinality]\n", "Importing (projected) 'Jet_pt' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Jet_eta' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Jet_phi' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Jet_mass' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Jet_puId' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Jet_btag' [ROOT::VecOps::RVec]\n", "Importing (projected) 'nJet' [ROOT::RNTupleCardinality]\n", "Importing (projected) 'Muon_pt' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Muon_eta' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Muon_phi' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Muon_mass' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Muon_charge' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Muon_pfRelIso03_all' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Muon_pfRelIso04_all' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Muon_tightId' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Muon_softId' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Muon_dxy' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Muon_dxyErr' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Muon_dz' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Muon_dzErr' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Muon_jetIdx' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Muon_genPartIdx' [ROOT::VecOps::RVec]\n", "Importing (projected) 'nMuon' [ROOT::RNTupleCardinality]\n", "Importing (projected) 'Tau_pt' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Tau_eta' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Tau_phi' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Tau_mass' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Tau_charge' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Tau_decayMode' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Tau_relIso_all' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Tau_jetIdx' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Tau_genPartIdx' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Tau_idDecayMode' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Tau_idIsoRaw' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Tau_idIsoVLoose' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Tau_idIsoLoose' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Tau_idIsoMedium' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Tau_idIsoTight' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Tau_idAntiEleLoose' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Tau_idAntiEleMedium' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Tau_idAntiEleTight' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Tau_idAntiMuLoose' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Tau_idAntiMuMedium' [ROOT::VecOps::RVec]\n", "Importing (projected) 'Tau_idAntiMuTight' [ROOT::VecOps::RVec]\n", "Importing (projected) 'nTau' [ROOT::RNTupleCardinality]\n", "Done, wrote 0MB, 47696 entries\n" ] } ], "source": [ "importer->Import();" ] }, { "cell_type": "markdown", "id": "099c05d5", "metadata": {}, "source": [ "Inspect the schema of the written RNTuple." ] }, { "cell_type": "code", "execution_count": 6, "id": "4c2d2e16", "metadata": { "collapsed": false, "execution": { "iopub.execute_input": "2026-05-19T20:15:04.851942Z", "iopub.status.busy": "2026-05-19T20:15:04.851820Z", "iopub.status.idle": "2026-05-19T20:15:06.256219Z", "shell.execute_reply": "2026-05-19T20:15:06.255419Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "RNTuple : Events\n", "Entries : 47696\n", "\n", "Field 1 : run (std::int32_t)\n", "Field 2 : luminosityBlock (std::uint32_t)\n", "Field 3 : event (std::uint64_t)\n", "Field 4 : HLT_IsoMu24_eta2p1 (bool)\n", "Field 5 : HLT_IsoMu24 (bool)\n", "Field 6 : HLT_IsoMu17_eta2p1_LooseIsoPFTau20 (bool)\n", "Field 7 : PV_npvs (std::int32_t)\n", "Field 8 : PV_x (float)\n", "Field 9 : PV_y (float)\n", "Field 10 : PV_z (float)\n", "Field 11 : MET_pt (float)\n", "Field 12 : MET_phi (float)\n", "Field 13 : MET_sumet (float)\n", "Field 14 : MET_significance (float)\n", "Field 15 : MET_CovXX (float)\n", "Field 16 : MET_CovXY (float)\n", "Field 17 : MET_CovYY (float)\n", "Field 18 : _collection0\n", " Field 18.1 : _0\n", " Field 18.1.1 : GenPart_pt (float)\n", " Field 18.1.2 : GenPart_eta (float)\n", " Field 18.1.3 : GenPart_phi (float)\n", " Field 18.1.4 : GenPart_mass (float)\n", " Field 18.1.5 : GenPart_pdgId (std::int32_t)\n", " Field 18.1.6 : GenPart_status (std::int32_t)\n", "Field 19 : _collection1\n", " Field 19.1 : _0\n", " Field 19.1.1 : Jet_pt (float)\n", " Field 19.1.2 : Jet_eta (float)\n", " Field 19.1.3 : Jet_phi (float)\n", " Field 19.1.4 : Jet_mass (float)\n", " Field 19.1.5 : Jet_puId (bool)\n", " Field 19.1.6 : Jet_btag (float)\n", "Field 20 : _collection2\n", " Field 20.1 : _0\n", " Field 20.1.1 : Muon_pt (float)\n", " Field 20.1.2 : Muon_eta (float)\n", " Field 20.1.3 : Muon_phi (float)\n", " Field 20.1.4 : Muon_mass (float)\n", " Field 20.1.5 : Muon_charge (std::int32_t)\n", " Field 20.1.6 : Muon_pfRelIso03_all (float)\n", " Field 20.1.7 : Muon_pfRelIso04_all (float)\n", " Field 20.1.8 : Muon_tightId (bool)\n", " Field 20.1.9 : Muon_softId (bool)\n", " Field 20.1.10 : Muon_dxy (float)\n", " Field 20.1.11 : Muon_dxyErr (float)\n", " Field 20.1.12 : Muon_dz (float)\n", " Field 20.1.13 : Muon_dzErr (float)\n", " Field 20.1.14 : Muon_jetIdx (std::int32_t)\n", " Field 20.1.15 : Muon_genPartIdx (std::int32_t)\n", "Field 21 : _collection3\n", " Field 21.1 : _0\n", " Field 21.1.1 : Tau_pt (float)\n", " Field 21.1.2 : Tau_eta (float)\n", " Field 21.1.3 : Tau_phi (float)\n", " Field 21.1.4 : Tau_mass (float)\n", " Field 21.1.5 : Tau_charge (std::int32_t)\n", " Field 21.1.6 : Tau_decayMode (std::int32_t)\n", " Field 21.1.7 : Tau_relIso_all (float)\n", " Field 21.1.8 : Tau_jetIdx (std::int32_t)\n", " Field 21.1.9 : Tau_genPartIdx (std::int32_t)\n", " Field 21.1.10 : Tau_idDecayMode (bool)\n", " Field 21.1.11 : Tau_idIsoRaw (float)\n", " Field 21.1.12 : Tau_idIsoVLoose (bool)\n", " Field 21.1.13 : Tau_idIsoLoose (bool)\n", " Field 21.1.14 : Tau_idIsoMedium (bool)\n", " Field 21.1.15 : Tau_idIsoTight (bool)\n", " Field 21.1.16 : Tau_idAntiEleLoose (bool)\n", " Field 21.1.17 : Tau_idAntiEleMedium (bool)\n", " Field 21.1.18 : Tau_idAntiEleTight (bool)\n", " Field 21.1.19 : Tau_idAntiMuLoose (bool)\n", " Field 21.1.20 : Tau_idAntiMuMedium (bool)\n", " Field 21.1.21 : Tau_idAntiMuTight (bool)\n", "Field 22 : GenPart_pt (ROOT::VecOps::RVec)\n", " Field 22.1 : _0 (float)\n", "Field 23 : GenPart_eta (ROOT::VecOps::RVec)\n", " Field 23.1 : _0 (float)\n", "Field 24 : GenPart_phi (ROOT::VecOps::RVec)\n", " Field 24.1 : _0 (float)\n", "Field 25 : GenPart_mass (ROOT::VecOps::RVec)\n", " Field 25.1 : _0 (float)\n", "Field 26 : GenPart_pdgId (ROOT::VecOps::RVec)\n", " Field 26.1 : _0 (std::int32_t)\n", "Field 27 : GenPart_status (ROOT::VecOps::RVec)\n", " Field 27.1 : _0 (std::int32_t)\n", "Field 28 : nGenPart (ROOT::RNTupleCardinality)\n", "Field 29 : Jet_pt (ROOT::VecOps::RVec)\n", " Field 29.1 : _0 (float)\n", "Field 30 : Jet_eta (ROOT::VecOps::RVec)\n", " Field 30.1 : _0 (float)\n", "Field 31 : Jet_phi (ROOT::VecOps::RVec)\n", " Field 31.1 : _0 (float)\n", "Field 32 : Jet_mass (ROOT::VecOps::RVec)\n", " Field 32.1 : _0 (float)\n", "Field 33 : Jet_puId (ROOT::VecOps::RVec)\n", " Field 33.1 : _0 (bool)\n", "Field 34 : Jet_btag (ROOT::VecOps::RVec)\n", " Field 34.1 : _0 (float)\n", "Field 35 : nJet (ROOT::RNTupleCardinality)\n", "Field 36 : Muon_pt (ROOT::VecOps::RVec)\n", " Field 36.1 : _0 (float)\n", "Field 37 : Muon_eta (ROOT::VecOps::RVec)\n", " Field 37.1 : _0 (float)\n", "Field 38 : Muon_phi (ROOT::VecOps::RVec)\n", " Field 38.1 : _0 (float)\n", "Field 39 : Muon_mass (ROOT::VecOps::RVec)\n", " Field 39.1 : _0 (float)\n", "Field 40 : Muon_charge (ROOT::VecOps::RVec)\n", " Field 40.1 : _0 (std::int32_t)\n", "Field 41 : Muon_pfRelIso03_all (ROOT::VecOps::RVec)\n", " Field 41.1 : _0 (float)\n", "Field 42 : Muon_pfRelIso04_all (ROOT::VecOps::RVec)\n", " Field 42.1 : _0 (float)\n", "Field 43 : Muon_tightId (ROOT::VecOps::RVec)\n", " Field 43.1 : _0 (bool)\n", "Field 44 : Muon_softId (ROOT::VecOps::RVec)\n", " Field 44.1 : _0 (bool)\n", "Field 45 : Muon_dxy (ROOT::VecOps::RVec)\n", " Field 45.1 : _0 (float)\n", "Field 46 : Muon_dxyErr (ROOT::VecOps::RVec)\n", " Field 46.1 : _0 (float)\n", "Field 47 : Muon_dz (ROOT::VecOps::RVec)\n", " Field 47.1 : _0 (float)\n", "Field 48 : Muon_dzErr (ROOT::VecOps::RVec)\n", " Field 48.1 : _0 (float)\n", "Field 49 : Muon_jetIdx (ROOT::VecOps::RVec)\n", " Field 49.1 : _0 (std::int32_t)\n", "Field 50 : Muon_genPartIdx (ROOT::VecOps::RVec)\n", " Field 50.1 : _0 (std::int32_t)\n", "Field 51 : nMuon (ROOT::RNTupleCardinality)\n", "Field 52 : Tau_pt (ROOT::VecOps::RVec)\n", " Field 52.1 : _0 (float)\n", "Field 53 : Tau_eta (ROOT::VecOps::RVec)\n", " Field 53.1 : _0 (float)\n", "Field 54 : Tau_phi (ROOT::VecOps::RVec)\n", " Field 54.1 : _0 (float)\n", "Field 55 : Tau_mass (ROOT::VecOps::RVec)\n", " Field 55.1 : _0 (float)\n", "Field 56 : Tau_charge (ROOT::VecOps::RVec)\n", " Field 56.1 : _0 (std::int32_t)\n", "Field 57 : Tau_decayMode (ROOT::VecOps::RVec)\n", " Field 57.1 : _0 (std::int32_t)\n", "Field 58 : Tau_relIso_all (ROOT::VecOps::RVec)\n", " Field 58.1 : _0 (float)\n", "Field 59 : Tau_jetIdx (ROOT::VecOps::RVec)\n", " Field 59.1 : _0 (std::int32_t)\n", "Field 60 : Tau_genPartIdx (ROOT::VecOps::RVec)\n", " Field 60.1 : _0 (std::int32_t)\n", "Field 61 : Tau_idDecayMode (ROOT::VecOps::RVec)\n", " Field 61.1 : _0 (bool)\n", "Field 62 : Tau_idIsoRaw (ROOT::VecOps::RVec)\n", " Field 62.1 : _0 (float)\n", "Field 63 : Tau_idIsoVLoose (ROOT::VecOps::RVec)\n", " Field 63.1 : _0 (bool)\n", "Field 64 : Tau_idIsoLoose (ROOT::VecOps::RVec)\n", " Field 64.1 : _0 (bool)\n", "Field 65 : Tau_idIsoMedium (ROOT::VecOps::RVec)\n", " Field 65.1 : _0 (bool)\n", "Field 66 : Tau_idIsoTight (ROOT::VecOps::RVec)\n", " Field 66.1 : _0 (bool)\n", "Field 67 : Tau_idAntiEleLoose (ROOT::VecOps::RVec)\n", " Field 67.1 : _0 (bool)\n", "Field 68 : Tau_idAntiEleMedium (ROOT::VecOps::RVec)\n", " Field 68.1 : _0 (bool)\n", "Field 69 : Tau_idAntiEleTight (ROOT::VecOps::RVec)\n", " Field 69.1 : _0 (bool)\n", "Field 70 : Tau_idAntiMuLoose (ROOT::VecOps::RVec)\n", " Field 70.1 : _0 (bool)\n", "Field 71 : Tau_idAntiMuMedium (ROOT::VecOps::RVec)\n", " Field 71.1 : _0 (bool)\n", "Field 72 : Tau_idAntiMuTight (ROOT::VecOps::RVec)\n", " Field 72.1 : _0 (bool)\n", "Field 73 : nTau (ROOT::RNTupleCardinality)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Info in : created default TCanvas with name c1\n" ] } ], "source": [ "auto file = std::unique_ptr(TFile::Open(kNTupleFileName));\n", "if (!file || file->IsZombie()) {\n", " std::cerr << \"cannot open \" << kNTupleFileName << std::endl;\n", " return;\n", "}\n", "auto ntpl = std::unique_ptr(file->Get(\"Events\"));\n", "auto reader = ROOT::RNTupleReader::Open(*ntpl);\n", "reader->PrintInfo();\n", "\n", "ROOT::RDataFrame df(\"Events\", kNTupleFileName);\n", "df.Histo1D({\"Jet_pt\", \"Jet_pt\", 100, 0, 0}, \"Jet_pt\")->DrawCopy();" ] }, { "cell_type": "markdown", "id": "5b2bb8f4", "metadata": {}, "source": [ "Draw all canvases " ] }, { "cell_type": "code", "execution_count": 7, "id": "f8080360", "metadata": { "collapsed": false, "execution": { "iopub.execute_input": "2026-05-19T20:15:06.257559Z", "iopub.status.busy": "2026-05-19T20:15:06.257436Z", "iopub.status.idle": "2026-05-19T20:15:06.463010Z", "shell.execute_reply": "2026-05-19T20:15:06.462087Z" } }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "
\n", "
\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "gROOT->GetListOfCanvases()->Draw()" ] } ], "metadata": { "kernelspec": { "display_name": "ROOT C++", "language": "c++", "name": "root" }, "language_info": { "codemirror_mode": "text/x-c++src", "file_extension": ".C", "mimetype": " text/x-c++src", "name": "c++" } }, "nbformat": 4, "nbformat_minor": 5 }