20 R__LOAD_LIBRARY(ROOTNTuple)
22 #include <ROOT/RNTuple.hxx>
40 using RNTupleModel = ROOT::Experimental::RNTupleModel;
41 using RNTupleReader = ROOT::Experimental::RNTupleReader;
42 using RNTupleWriter = ROOT::Experimental::RNTupleWriter;
44 constexpr
char const* kNTupleFileName =
"ntpl001_staff.root";
48 ifstream fin(gROOT->GetTutorialDir() +
"/tree/cernstaff.dat");
49 assert(fin.is_open());
52 auto model = RNTupleModel::Create();
56 auto fldCategory = model->MakeField<
int>(
"Category");
57 auto fldFlag = model->MakeField<
unsigned int>(
"Flag");
58 auto fldAge = model->MakeField<
int>(
"Age");
59 auto fldService = model->MakeField<
int>(
"Service");
60 auto fldChildren = model->MakeField<
int>(
"Children");
61 auto fldGrade = model->MakeField<
int>(
"Grade");
62 auto fldStep = model->MakeField<
int>(
"Step");
63 auto fldHrweek = model->MakeField<
int>(
"Hrweek");
64 auto fldCost = model->MakeField<
int>(
"Cost");
65 auto fldDivision = model->MakeField<std::string>(
"Division");
66 auto fldNation = model->MakeField<std::string>(
"Nation");
70 auto ntuple = RNTupleWriter::Recreate(std::move(model),
"Staff", kNTupleFileName);
73 while (std::getline(fin, record)) {
74 std::istringstream iss(record);
75 iss >> *fldCategory >> *fldFlag >> *fldAge >> *fldService >> *fldChildren >> *fldGrade >> *fldStep >> *fldHrweek
76 >> *fldCost >> *fldDivision >> *fldNation;
86 auto model = RNTupleModel::Create();
89 std::shared_ptr<int> fldAge = model->MakeField<
int>(
"Age");
92 auto ntuple = RNTupleReader::Open(std::move(model),
"Staff", kNTupleFileName);
98 auto c =
new TCanvas(
"c",
"", 200, 10, 700, 500);
99 TH1I h(
"h",
"Age Distribution CERN, 1988", 100, 0, 100);
102 for (
auto entryId : *ntuple) {
104 ntuple->LoadEntry(entryId);
111 void ntpl001_staff() {