27constexpr char const* kNTupleMainFileName =
"ntpl006_data.root";
28constexpr char const* kNTupleFriendFileName =
"ntpl006_reco.root";
36 constexpr int kMaxTrack = 500;
38 auto modelData = RNTupleModel::Create();
39 auto fldPx = modelData->MakeField<std::vector<float>>(
"px");
40 auto fldPy = modelData->MakeField<std::vector<float>>(
"py");
41 auto fldPz = modelData->MakeField<std::vector<float>>(
"pz");
43 auto modelFriend = RNTupleModel::Create();
44 auto fldPt = modelFriend->MakeField<std::vector<float>>(
"pt");
46 auto ntupleData = RNTupleWriter::Recreate(std::move(modelData),
"data", kNTupleMainFileName);
47 auto ntupleReco = RNTupleWriter::Recreate(std::move(modelFriend),
"reco", kNTupleFriendFileName);
49 for (
int i=0;
i < 1000;
i++) {
50 int ntracks =
gRandom->Rndm() * (kMaxTrack - 1);
51 for (
int n = 0;
n < ntracks;
n++) {
52 fldPx->emplace_back(
gRandom->Gaus( 0, 1));
53 fldPy->emplace_back(
gRandom->Gaus( 0, 2));
54 fldPz->emplace_back(
gRandom->Gaus(10, 5));
55 fldPt->emplace_back(
TMath::Sqrt(fldPx->at(
n) * fldPx->at(
n) + fldPy->at(
n) * fldPy->at(
n)));
72 std::vector<RNTupleReader::ROpenSpec> friends{
73 {
"data", kNTupleMainFileName},
74 {
"reco", kNTupleFriendFileName} };
75 auto ntuple = RNTupleReader::OpenFriends(friends);
77 auto c =
new TCanvas(
"c",
"", 200, 10, 700, 500);
78 TH1F h(
"h",
"pz {pt > 3.}", 100, -15, 35);
80 auto viewPz = ntuple->GetView<
float>(
"data.pz._0");
81 auto viewPt = ntuple->GetView<
float>(
"reco.pt._0");
82 for (
auto i : viewPt.GetFieldRange()) {
R__EXTERN TRandom * gRandom
The RNTupleModel encapulates the schema of an ntuple.
An RNTuple that is used to read data from storage.
An RNTuple that gets filled with entries (data) and writes them to storage.
1-D histogram with a float per channel (see TH1 documentation)
Double_t Sqrt(Double_t x)
Returns the square root of x.