Hello everyone,
I want to convert a root file into .csv file format. Could someone provide the best way to go about this?.
Many Thanks,
Hello everyone,
I want to convert a root file into .csv file format. Could someone provide the best way to go about this?.
Many Thanks,
Hi,
I think there is no out-of-the-box procedure for that: you’ll have to implement the converter yourself.
What we provide, on the other hand, is the opposite, i.e. seamless csv reading into ROOT:
Cheers,
D
depending on the layout of the TTree stored in your ROOT file, go-hep/rootio
might help do what you want.
I’ve just whipped up a little naive root2csv
command:
e.g.:
$> root-ls -t ./small-flat-tree.root
=== [./small-flat-tree.root] ===
version: 60806
TTree tree my tree title (entries=100)
Int32 "Int32/I" TBranch
Int64 "Int64/L" TBranch
UInt32 "UInt32/i" TBranch
UInt64 "UInt64/l" TBranch
Float32 "Float32/F" TBranch
Float64 "Float64/D" TBranch
Str "Str/C" TBranch
ArrayInt32 "ArrayInt32[10]/I" TBranch
ArrayInt64 "ArrayInt64[10]/L" TBranch
ArrayUInt32 "ArrayInt32[10]/i" TBranch
ArrayUInt64 "ArrayInt64[10]/l" TBranch
ArrayFloat32 "ArrayFloat32[10]/F" TBranch
ArrayFloat64 "ArrayFloat64[10]/D" TBranch
N "N/I" TBranch
SliceInt32 "SliceInt32[N]/I" TBranch
SliceInt64 "SliceInt64[N]/L" TBranch
SliceUInt32 "SliceInt32[N]/i" TBranch
SliceUInt64 "SliceInt64[N]/l" TBranch
SliceFloat32 "SliceFloat32[N]/F" TBranch
SliceFloat64 "SliceFloat64[N]/D" TBranch
and now, converting it:
$> root2csv -o out.csv -t tree -f ./small-flat-tree.root
root2csv: scanning leaves...
root2csv: >>> "ArrayInt32" [10]int32 not supported
root2csv: >>> "ArrayInt64" [10]int64 not supported
root2csv: >>> "ArrayInt32" [10]int32 not supported
root2csv: >>> "ArrayInt64" [10]int64 not supported
root2csv: >>> "ArrayFloat32" [10]float32 not supported
root2csv: >>> "ArrayFloat64" [10]float64 not supported
root2csv: >>> "SliceInt32" []int32 not supported
root2csv: >>> "SliceInt64" []int64 not supported
root2csv: >>> "SliceInt32" []int32 not supported
root2csv: >>> "SliceInt64" []int64 not supported
root2csv: >>> "SliceFloat32" []float32 not supported
root2csv: >>> "SliceFloat64" []float64 not supported
root2csv: scanning leaves... [done]
$> head out.csv
## Automatically generated from "./small-flat-tree.root"
Int32;Int64;UInt32;UInt64;Float32;Float64;Str;N
0;0;0;0;0;0;evt-000;0
1;1;1;1;1;1;evt-001;1
2;2;2;2;2;2;evt-002;2
3;3;3;3;3;3;evt-003;3
4;4;4;4;4;4;evt-004;4
5;5;5;5;5;5;evt-005;5
6;6;6;6;6;6;evt-006;6
7;7;7;7;7;7;evt-007;7
hth,
-s
forgot to say that, if you want to test it, you either need to have Go installed and then do:
$> go get go-hep.org/x/hep/cmd/root2csv
or (if you haven’t installed Go already, but really, you should as it is such a nice language :P) directly download the binary for your platform I put there:
many thanks for your help
(if that was directed to me: thanks )
(also, feel free to bug me if you need some more features (like writing or not the CSV header, changing the default CSV-delimiter, etc…) or – god forbid! – find a bug. that’s quite possible, I really hacked it together in a few minutes)
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.