{
"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
}