ROOT
master
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
}
TRangeDynCast
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Definition
TCollection.h:358
TFile.h
TTreeReaderValue.h
TTreeReader.h
TTree.h
ROOT::Detail::TRangeCast
Definition
TCollection.h:311
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:4130
myDetectorData
Definition
data2Tree.hxx:20
data2Tree.hxx
writeTree
void writeTree()
Definition
writeTree.cxx:21
tutorials
io
tree
dictionary
writeTree.cxx
ROOT master - Reference Guide Generated on Mon Feb 17 2025 15:03:47 (GVA Time) using Doxygen 1.10.0