Differences between revisions 3 and 4
Revision 3 as of 2020-06-28 21:54:30
Size: 1349
Comment:
Revision 4 as of 2020-06-28 22:23:38
Size: 1677
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= pyROOT = = pyROOTとgwpyを組み合わせて使う =

== pyROOT ==
Line 25: Line 27:
h.SetContent(array('d', np.insert( value, 0,0).tolist() ) )
h.SetError( array('d', np.insert(error.value, 0,0).tolist() ) )
h.SetContent(array('d', np.insert( value, 0,0) ) )
h.SetError( array('d', np.insert(error.value, 0,0) ) )
Line 29: Line 31:
for文でSetBinContentして行っても良いが、pythonでは極力ループを避けるべきなので、配列として渡す。<<BR>>
numpy.ndarrayは直接渡せないので、array.arrayを介す必要がある。([[https://oxon.hatenablog.com/entry/20101014/1287009414|参考]])<<BR>>

pyROOTとgwpyを組み合わせて使う

pyROOT

高エネルギー宇宙物理学のためのROOT入門 ‒第6回‒

KamonoWiki

QumaWiki

gwpyのFrequencySeriesをROOTのTH1にする

   1 mean  = FrequencySeries(...)
   2 error = FrequencySeries(...)
   3 
   4 nbin = mean.size
   5 value = mean.value
   6 freqs = mean.frequencies.value
   7 df = mean.df.value
   8 fmin = freqs[0] - df*0.5
   9 fmax = freqs[-1]+ df*0.5
  10 
  11 h = TH1F('h', ';Frequency [Hz]', nbin, fmin, fmax)
  12 h.Sumw2()
  13 h.SetContent(array('d', np.insert(      value, 0,0) ) )
  14 h.SetError(  array('d', np.insert(error.value, 0,0) ) )

for文でSetBinContentして行っても良いが、pythonでは極力ループを避けるべきなので、配列として渡す。
numpy.ndarrayは直接渡せないので、array.arrayを介す必要がある。(参考)
SetContent()SetError()はゼロbin目(アンダーフロー)から詰めるため、ndarrayの先頭にゼロを追加しておく必要がある。

root_numpyを使えばもっと効率よく書けるかもしれないが、これはインストールの敷居が高いので保留

KAGRA/Subgroups/PEM/PythonMemoJP/pyROOT (last edited 2020-06-28 22:23:38 by tatsuki.washimi)