Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
writeTree.cxx
Go to the documentation of this file.
1// Author: Alvaro Tolosa-Delgado CERN 07/2023
2// Author: Jorge Agramunt Ros IFIC(Valencia,Spain) 07/2023
3
4/*************************************************************************
5 * Copyright (C) 1995-2023, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#include <iostream>
13
14#include <TFile.h>
15#include <TTree.h>
16#include <TTreeReader.h>
17#include <TTreeReaderValue.h>
18
19#include "data2Tree.hxx"
20
22{
23 std::unique_ptr<TFile> ofile{TFile::Open("testFile.root", "recreate")};
24 if (!ofile || ofile->IsZombie()) {
25 throw std::runtime_error("Could not open file testFile.root");
26 }
27
28 std::unique_ptr<TTree> myTree = std::make_unique<TTree>("myTree", "");
29 myDetectorData obj_for_branch1;
30 myDetectorData obj_for_branch2;
31
32 // NOTE: the dot at the end of the branch name is semantically relevant and recommended
33 // because it causes the sub-branch names to be prefixed by the name of the top level branch.
34 // Without the dot, the prefix is not there.
35 // Here, objects of the same class appear in multiple branches, adding the dot removes ambiguities.
36 myTree->Branch("branch1.", &obj_for_branch1);
37 myTree->Branch("branch2.", &obj_for_branch2);
38
39 for (int i = 0; i < 10; ++i) {
40 //-- if i is even, fill branch2 and set branch1's entry to zero
41 if (i % 2 == 0) {
42 obj_for_branch1.clear();
43 obj_for_branch2.time = i + 5;
44 obj_for_branch2.energy = 2 * i + 5;
45 obj_for_branch2.detectorID = 3 * i + 5;
46 }
47 //-- if i is odd, we do the opposite
48 else {
49 obj_for_branch2.clear();
50 obj_for_branch1.time = i + 1;
51 obj_for_branch1.energy = 2 * i + 1;
52 obj_for_branch1.detectorID = 3 * i + 1;
53 }
54 myTree->Fill();
55 }
56
57 myTree->Print();
58
59 ofile->Write(); // This write the files and the TTree
60}
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
Create / open a file.
Definition TFile.cxx:4089
void writeTree()
Definition writeTree.cxx:21