ROOT
v6-28
Reference Guide
Loading...
Searching...
No Matches
pyroot006_tcontext_context_manager.py
Go to the documentation of this file.
1
## \file
2
## \ingroup tutorial_pyroot
3
## \notebook -nodraw
4
##
5
## This tutorial demonstrates the usage of the TContext class as a Python context
6
## manager. This functionality is related with how TFile works, so it is
7
## suggested to also take a look at the pyroot005 tutorial.
8
##
9
## \macro_code
10
## \macro_output
11
##
12
## \date March 2022
13
## \author Vincenzo Eduardo Padulano CERN/UPV
14
import
os
15
16
import
ROOT
17
from
ROOT
import
TDirectory, TFile
18
19
# Sometimes it is useful to have multiple open files at once. In such cases,
20
# the current directory will always be the file that was open last.
21
file_1 =
TFile
(
"pyroot006_file_1.root"
,
"recreate"
)
22
file_2 =
TFile
(
"pyroot006_file_2.root"
,
"recreate"
)
23
print(
"Current directory: '{}'.\n"
.
format
(ROOT.gDirectory.GetName()))
24
# Changing directory into another file can be safely done through a TContext
25
# context manager.
26
with
TDirectory.TContext
(file_1):
27
# Inside the statement, the current directory is file_1
28
print(
"Current directory: '{}'.\n"
.
format
(ROOT.gDirectory.GetName()))
29
histo_1 = ROOT.TH1F(
"histo_1"
,
"histo_1"
, 10, 0, 10)
30
file_1.WriteObject(histo_1,
"my_histogram"
)
31
32
# After the context, the current directory is restored back to file_2. Also, the
33
# two files are kept open. This means that objects read, written or modified
34
# inside the context are still available afterwards.
35
print(
"Current directory: '{}'.\n"
.
format
(ROOT.gDirectory.GetName()))
36
if
file_1.IsOpen()
and
file_2.IsOpen():
37
print(
"'{}' and '{}' are open.\n"
.
format
(file_1.GetName(), file_2.GetName()))
38
39
# TContext and TFile context managers can also be used in conjunction, allowing
40
# for safely:
41
# - Opening a file, creating, modifying, writing and reading objects in it.
42
# - Closing the file, storing it on disk.
43
# - Restoring the previous value of gDirectory to the latest file opened before
44
# this context, rather than to the global ROOT.gROOT
45
# Remember that the TContext must be initialized before the TFile, otherwise the
46
# current directory would already be set to the file opened for this context.
47
with
TDirectory.TContext
(),
TFile
(
"pyroot006_file_3.root"
,
"recreate"
)
as
f:
48
print(
"Current directory: '{}'.\n"
.
format
(ROOT.gDirectory.GetName()))
49
histo_2 = ROOT.TH1F(
"histo_2"
,
"histo_2"
, 10, 0, 10)
50
f.WriteObject(histo_2,
"another_histogram"
)
51
52
print(
"Current directory: '{}'.\n"
.
format
(ROOT.gDirectory.GetName()))
53
54
# Cleanup the files created for this tutorial
55
file_1.Close();
56
file_2.Close();
57
for
i
in
range(1, 4):
58
os.remove(
"pyroot006_file_{}.root"
.
format
(i))
format
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t format
Definition
TGWin32VirtualXProxy.cxx:249
TDirectory::TContext
TDirectory::TContext keeps track and restore the current directory.
Definition
TDirectory.h:89
TFile
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
Definition
TFile.h:51
tutorials
pyroot
pyroot006_tcontext_context_manager.py
ROOT v6-28 - Reference Guide Generated on Thu Oct 24 2024 01:50:04 (GVA Time) using Doxygen 1.9.8