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