ROOT
v6-32
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
21
void
writeTree
()
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
}
TFile.h
TTreeReaderValue.h
TTreeReader.h
TTree.h
TFile::Open
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
myDetectorData
Definition
data2Tree.hxx:20
myDetectorData::clear
void clear()
Definition
data2Tree.cxx:17
myDetectorData::time
double time
Definition
data2Tree.hxx:27
myDetectorData::detectorID
int detectorID
Definition
data2Tree.hxx:29
myDetectorData::energy
double energy
Definition
data2Tree.hxx:28
data2Tree.hxx
writeTree
void writeTree()
Definition
writeTree.cxx:21
tutorials
tree
dictionary
writeTree.cxx
ROOT v6-32 - Reference Guide Generated on Thu Dec 12 2024 15:06:29 (GVA Time) using Doxygen 1.9.8