RXTE 衛星のデータ解析について易しい日本語で解説してみた

# 基礎情報

X線衛星の中でも時間変動解析で今でもよく使われるのがRXTE衛星で，これについて簡単に解析に至るまでの方法をまとめておく．

## 正規のマニュアル

情報の源泉はどこにあるか？は常に確認したいところであるが，それがイマイチわかりにくい．[The ABC of XTE : A Guide to Reducing XTE Data](https://heasarc.gsfc.nasa.gov/docs/xte/abc/front_page.html) をみると，

1. Read [the RXTE Getting Started Guide](https://heasarc.gsfc.nasa.gov/docs/xte/start_guide.html).
2. Read [the contents of The ABC of XTE](https://heasarc.gsfc.nasa.gov/docs/xte/abc/contents.html).
3. Read [the RXTE Cook Book](https://heasarc.gsfc.nasa.gov/docs/xte/recipes/cook_book.html).

の３つが紹介されていて，そこにいけばどこかに情報はある．以下，いきなりそれはちょっとシンドイ，，と思う人向けです．

## RXTE衛星の基礎

RXTE衛星は，ASM(全天モニタ)と，ポインティング観測のPCA(これまでのX線衛星で最大の有効面積)とHEXTE(硬X線検出器)を搭載した米国の衛星です．

一番よく使われるのは，ASMのデータをテキストでダウンロードして，状態を観察することです．

- http://xte.mit.edu/XTE/ASM_lc.html

これはweb上で，MJDの範囲を指定して，band(sum,A,B,C)を指定して，submitをすると，テキストがweb上で表示されるので，それをコピペして使うという古風なものです．

PCAとHEXTEは個別にダウンロードして解析するのが普通で，ここでは PCA の binned mode について紹介します．それがわかればほかはその応用でいけると思います(HEXTE解析したことないので違ってたらすいません)．

## RXTE PCA Configurations (DATAMODE) について

RXTE衛星のPCA検出器には Configurations といういわゆる観測モードがあって、これを確認しておかないと、時間ビンやエネルギービンがわかりません。RXTE/PCA検出器は、データ転送量の制限から、時間分解能が良いほどデータ量が多くなるので、エネルギーのビン数が少なく、逆に、時間分解能を犠牲にすると、エネルギービンが細かいデータを地上に下ろすことができます。地上で実験する場合にはデータ量が律速することは少ないかもしれませんが、人工衛星から地上におろせるデータ量は少ないため、エネルギー分解能と時間分解能が競合関係にあります。

設定については、

https://heasarc.gsfc.nasa.gov/docs/xte/appendix_f_ps.html

の

https://heasarc.gsfc.nasa.gov/FTP/xte/nra/appendix_f/postscript/section/EDS_configurations.ps

に書かれています。

あるいは、

https://drive.google.com/file/d/1vVnDltRkCBiAi_uTCB8_CvVv_gnTlvRA/view?usp=sharing

に pdf を置いています。

例えば、

B_4ms_8A_0_35_H の意味は、

- a binned mode with 4 ms time resolution (1/256 s).
- 8A indicates that the data are stored in 8 energy bins
- the numbers (0_35) indicate the range of energy channels included
- 最後のHという文字は、a particular option for the energy channel binning  

となります。

上の資料の抜粋をすると、Binned Mode の場合の例はこちら。 

| Name                | Time Bin Size  | #bits/bin  | # chan  | PCU ID  | Telem. (kbps)  |
|---------------------|----------------|------------|---------|---------|----------------|
| B_250ms_128M_0_254  | 0.25 s         | 16,8,4    | 128    | Yes     | 22.2           |
| B_16ms_64M_0_249    | 16 ms          | 8,4       | 64     | No      | 26.7           |
| B_4ms_16X_0_249_H   | 4 ms           | 8          | 16     | No      | 32.9           |
| B_4ms_16X_0_249_Q   | 4 ms           | 4          | 16     | No      | 16.5           |


など、他にも詳細な例が書かれているので、観測モードはこのようにして確認しましょう。

ftools を入れていると、[fkeyprint](https://heasarc.gsfc.nasa.gov/lheasoft/ftools/fhelp/fkeyprint.html) という ftools で、DATAMODE という keyword をプリントすると、PCA Configurations が確認できます。astopy で header の keyword で DATAMODE を確認してもよいです。

``` bash:
%P10512/10512-01-05-00/pca$ fkeyprint FS37_48fe414-48ff0a8 DATAMODE 
# FILE: FS37_48fe414-48ff0a8
# KEYNAME: DATAMODE
# EXTENSION:    0
# EXTENSION:    1
DATAMODE= 'B_4ms_8A_0_35_H'    / Configuration ID 0x020000c0
# EXTENSION:    2
# EXTENSION:    3

%P10512/10512-01-05-00/pca$ fkeyprint FS4f_48fe414-48ff0aa DATAMODE 
# FILE: FS4f_48fe414-48ff0aa
# KEYNAME: DATAMODE
# EXTENSION:    0
# EXTENSION:    1
DATAMODE= 'SB_125us_18_35_1s' / Configuration ID 0x03000147
# EXTENSION:    2
# EXTENSION:    3
```

これで、DATAMODEを確認して、どういうモードのデータなのか確認しましょう。


## 少し細かい話

特に，最初の数年はテレメトリのアンテナが壊れる前だったので，高い時間分解能と有効面積をフルに活かせたためよく使われます．それ以後は，高い時間分解能を求めるとスペクトルのビンが荒い(検出器の分解能ではなくテレメトリで決まる)モードと，エネルギー分解能を装置と同等を得ようとすると時間分解能が落ちる，という歯がゆい感じです．

確証はないのですが、、September 1 1999 Spacecraft Transmitter Problem

https://heasarc.gsfc.nasa.gov/docs/xte/whatsnew/big.html

が契機だと思われます。


# 解析の前にすること

## heasoft の install 

[heasoft](https://heasarc.gsfc.nasa.gov/lheasoft/download.html) で RXTE 選択してインストールする．特殊なこと(xspecのモデルを自作したい)とかしないのであれば，バイナリをダウンロードしてPATHを通すだけでよいはず．

## ダウンロード

1. [HEASARC Browse](https://heasarc.gsfc.nasa.gov/cgi-bin/W3Browse/w3browse.pl) から，天体情報を入れて，RXTE衛星にチェックをして，"Start Search" ボタンを押す．
2. RXTEは長生きしたので，データ数が多くて直ぐには全部出てこない場合があるので少し待つ．
3. データが出てきたら，Query Results タブを確認．欲しいデータのチェックボックスにチェックをつけて，一番下にある 「Retrieve Data Products for selected rows」 を押す.
4. 「Data Products Retrieval」 というタブに移動するので，そこで，「Create Download Script」 を押すと，wget のコマンド列が出てくるので，それをターミナルなどで実行すればよい．

# PCAの解析方法 (binned Mode Data 編)

## xdf の実行

[xdfのガイド](https://heasarc.gsfc.nasa.gov/docs/xte/start_guide.html#xdf)にしたがって，下記を実行する．

### Make Obslist 

まずは，最初のステップで，Path を正しく選択する．ダウンロードしたデータのある場所のもう一つ階層が下のディレクトリを指定する．

ここでは，70108-03-02-00 を指定して，Make ObsList ボタンを押した場合です．

<img width="798" alt="sc_xdf.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179652/1df6aec0-a425-4e12-4cbd-6d650fd6bf3a.png">

ファイルが見つからない、と怒られる場合は、`Path:` のタブには、今いる場所からの相対パスを書く必要があるので、xdf を立ち上げた場所がどこで、そこから `Path:` に書いたパスで目的地まで到達できる状況か確認しましょう。

## 解析したいファイルを選ぶ

超重要な違いとして，イベントモードと，ビンモードがある．それぞれ，AppIds/Configurations の名前で判別できる．E_125us とあれば，event mode de, 125usec の時間分解能，B_250us であれば，binned mode で 250 usec の時間分解能になる．

- [Reduction and Analysis of PCA Binned-Mode Data](https://heasarc.gsfc.nasa.gov/docs/xte/recipes/pca_spectra.html)
- [Reduction and Analysis of PCA Event-Mode Data](https://heasarc.gsfc.nasa.gov/docs/xte/recipes/pca_event_spectra.html)

で２つそれぞれで解析手法もツールの名前も違う．(seextrct と saextrct と似て非なるソフトウェアが用意されている．)

ここで，Binned Mode の説明をする．いろんな付帯事項はあるので，厳密には，
https://heasarc.gsfc.nasa.gov/docs/xte/recipes/pca_spectra.html
を読んでください．

ファイルを選択したら，Make FileList ==> Save Filelist でイベントファイルのリストをテキストファイルに保存する．これはただのテキストファイルなので，場所が間違っていれば手動で直しても問題ない．

## フィルターの選択

次に，xdf の Subsystems の一番したから Standard Products を選択して，Filter_File を選択して，Make FileList ==> Save Filelist で フィルタも保存する．ただし，xdf の仕様?なのかうまくでてこないことあるので，Resetしてやり直すと出てくることがある．

<img width="918" alt="xdb_filter.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179652/791e1430-001b-5bee-de0c-e4ea972830c7.png">

フィルターをプロットして確認する．

``` bash:
$ fplot offset=yes                                                                         
Name of FITS file and [ext#][./70108-03-02-00/stdprod/FP_fcaa899-fcae2b7.xfl] 
Name of X Axis Parameter[error][TIme] 
Name of Y Axis Parameter[error] up to 8 allowed[PCU0_ON, PCU1_ON, PCU2_ON, PCU3_ON, PCU4_ON, NUM_PCU_ON] 
Lists of rows[-] 
Device: /XWindow, /XTerm, /TK, /PS, etc[/XW] 
```

![filter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179652/16e75b39-7670-b144-accb-2296c6e4279c.png)
５つのPCUのうち，ONとなっている本数を確認する．

## saextrct でライトカーブとスペクトルを抽出する．


``` bash: 
saextrct                                                                                       [~/work/ana/astro/rxte/gx339-4/P70108]
 
Running SAEXTRCT version 4.4
==============================================
Input file name or @file-of-filenames:[@fits_files.xdf] 
Input GTI files to be OR'd with INFILE (APPLY):[-] 
Input GTI file to be AND'd with INFILE:[@filter.xdf] 
Root name for output file:[testgx339-4] 
Accumulate (ONE) or (MANY) Spectral/Light Curves:[ONE] 
Name of TIME column:[TIME] 
Name of COLUMNS to be accumulated (GOOD):[GOOD] 
Input the binsize in seconds, use 0.1 etc. if nec (INDEF):[0.1] 
Chose print option, LIGHTCURVE, SPECTRUM, or BOTH:[BOTH] 
Type of binning for LIGHTCURVE: (SUM, RATE, MEAN):[RATE] 
Type of binning for SPECTRUM (SUM, RATE, MEAN):[SUM] 
Starting time for summation (INDEF):[INDEF] 
Ending time for summation (INDEF):[INDEF] 
Input time intervals t1-t2,t3-t4 in seconds (INDEF):[INDEF] 
Minimum energy bin to include in Spectra (INDEF):[INDEF] 
Maximum energy bin to include in Spectra (INDEF):[INDEF] 
Input channels to be retained 1-2,3-4 (INDEF):[INDEF] 
Input channels for each bin 1-5,6-256 (INDEF):[INDEF] 
 
Processing GTIANDFILE
./70108-03-02-00/stdprod/FP_fcaa899-fcae2b7.xfl
 
Could not find START column number
aborting... cannot continue
SAEXTRCT version 4.4 : Error Status Returned :  219
SAEXTRCT version 4.4 : named column not found

SAEXTRCT version 4.4 :  ***** FITSIO Error Stack Dump *****
ffgcnn could not find column: START
ffgcnn could not find column: START
 
Could not find STOP column number
Check input data
aborting... cannot continue
SAEXTRCT version 4.4 : Error Status Returned :  219
SAEXTRCT version 4.4 : named column not found

SAEXTRCT version 4.4 :  ***** FITSIO Error Stack Dump *****
ffgcnn could not find column: STOP
 
This GTI file contains NO data!
Aborting processing of this GTI file.
 
The GTIANDFILE(s) contains NO pertinent data
within the TSTART+TIMEZERO and TSTOP+TIMEZERO
specified.
No valid data. Aborting processing
of GTIANDFILE information. Continuing.
 
No GTI time-ranges were found in ANY of your
GTIANDFILES! Resetting GTIANDFILES parameter
and aborting GTIAND sorting and comparisons.
 
All time-filtering criteria has been processed.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
GTIORFILE filtering time-ranges are:
 
For file number:                    1
Time-ranges allowed by GTIORFILE are:
        1   264939677.37843037       264943147.37843037
 
For file number:                    2
Time-ranges allowed by GTIORFILE are:
        2   264945331.37843037       264948847.37843037
 
For file number:                    3
Time-ranges allowed by GTIORFILE are:
        3   264951027.37843037       264954547.37843037
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Merging GTIANDFILEs and user-supplied times
(ie, either timeint or timemin/max) yielded
the following acceptable time-ranges:
        1   264939677.37843037       264954547.37843037
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
###########################################
 
 
Processing file
./70108-03-02-00/pca/FS3b_fcaa899-fcab628
 
DRYRUN set to FALSE and CHBIN set to INDEF
Errors in column formats or in files
can cause unexpected errors !!!
 
The columns that passed acceptance
criteria were:
 
XeCnt
 
CHECKSUM/DATASUM verification correct.
 
File time-ranges are given by:
  File Number       Start Time value     Stop Time Value
         1         264939677.37843037   264943147.37843037
         2         264945331.37843037   264948847.37843037
         3         264951027.37843037   264954547.37843037
 
This file contains:       1735 rows.
Each row contains:        8192 elements.
Processed          123 rows,    1007616 elements, continuing.
...
Processed         1722 rows,   14106624 elements, continuing.
Processed         1735 rows.
 
Column         Total      Good   Bad :  Time       Phase     Channel
XeCnt          2133863.0  2133863.0        0.0        0.0        0.0
 
Processing file
./70108-03-02-00/pca/FS3b_fcabeb0-fcacc6c
 
CHECKSUM/DATASUM verification correct.
 
This file contains:       1758 rows.
Each row contains:        8192 elements.
Processed          123 rows,    1007616 elements, continuing.
...
Processed         1722 rows,   14106624 elements, continuing.
Processed         1758 rows.
 
Column         Total      Good   Bad :  Time       Phase     Channel
XeCnt          1658881.0  1658881.0        0.0        0.0        0.0
 
Processing file
./70108-03-02-00/pca/FS3b_fcad4f0-fcae2b0
 
CHECKSUM/DATASUM verification correct.
 
This file contains:       1760 rows.
Each row contains:        8192 elements.
Processed          123 rows,    1007616 elements, continuing.
....
Processed         1760 rows.
 
Column         Total      Good   Bad :  Time       Phase     Channel
XeCnt          2041268.0  2041268.0        0.0        0.0        0.0
 
 TOTALS FOR ALL COLUMNS AND FILES ARE AS FOLLOWS
==================================================
 
Column         Total      Good   Bad :  Time       Phase     Channel
XeCnt          5834012.0  5834012.0        0.0        0.0        0.0
 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Total number of columns output is:                       1
 
------------------------------------------
Column that is being output is:     XeCnt
Total Counts for FITS Light Curve:            5834012.00
Total Time for FITS Light Curve:                10506.000000
Total Counts/Time for FITS Light Curve:           555.302875
 
Writing out Light Curve FITS file
 
Creating output light curve file:
testgx339-4.lc
Wrote Light Curve
 
 
Writing out GTI for Light Curve FITS file
 
Wrote out GTI extension.
Closing Light Curve.
 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Total number of columns output is:                       1
 
------------------------------------------
Column that is being output is:     XeCnt
Total Counts for FITS Spectrum:               5834012.00
Total Time for FITS Spectrum:                   10506.000000
Total Counts/Time for FITS Spectrum:              555.302875
 
Writing out Spectrum FITS file
 
Creating output spectral file:
testgx339-4.pha
 
Writing out GTI for Spectrum FITS file
Wrote Spectrum FITS file
Closing Spectrum.
 
 
Everything is finished.
Cleaning up memory and exiting.
```

## ライトカーブを確認する

これで，とりあえずはライトカーブはそこそこ綺麗に見えるはずなので，lcurveでプロットして確認する．

``` bash:
syamada] $ lcurve                                                                                         [~/work/ana/astro/rxte/gx339-4/P70108]
 
lcurve 1.0 (xronos5.22)
 
Number of time series for this task[1] 
Ser. 1 filename +options (or @file of filenames +options)[testgx339.lc] testgx339-4.lc 
 Series 1 file    1:testgx339-4.lc
 
 Selected FITS extensions: 1 - RATE TABLE;
 
 Source ............ GX339-4             Start Time (d) .... 12419 10:22:17.562
 FITS Extension ....  1 - `RATE      `   Stop Time (d) ..... 12419 14:30:07.562
 No. of Rows .......       105060        Bin Time (s) ......   0.1000
 Right Ascension ... 2.55705994E+02      Internal time sys.. Converted to TJD
 Declination ....... -4.87900009E+01     Experiment ........ XTE      PCA
 
 Corrections applied: Vignetting - No ; Deadtime - No ; Bkgd - No ; Clock - Yes
 
 Selected Columns:  1- Time;  2- Y-axis;  3- Y-error;  4- Fractional exposure;
 
 File contains binned data.
 
Name of the window file ('-' for default window)[-] 
 
 Expected Start ... 12419.43214771332  (days)      10:22:17:562  (h:m:s:ms)
 Expected Stop .... 12419.60425419480  (days)      14:30: 7:562  (h:m:s:ms)
 
 Minimum Newbin Time   0.10000000      (s)
 for Maximum Newbin No..           148700
 
 Default Newbin Time is:   29.077043    (s) (to have 1 Intv. of     512 Newbins)
 Type INDEF to accept the default value
 
Newbin Time or negative rebinning[4] 1
 
 Newbin Time ......     1.0000000      (s)
 Maximum Newbin No.             14870
 
 Default Newbins per Interval are:         512
 (giving      29 Intervals of          512 Newbins each)
 Type INDEF to accept the default value
 
Number of Newbins/Interval[3715] 14870
 Maximum of       1 Intvs. with        14870 Newbins of       1.00000     (s)
Name of output file[default] 
Do you want to plot your results?[yes] 
Enter PGPLOT device[/XW] 
 
   14870 analysis results per interval
 
100% completed
 
 Intv    1   Start 12419 10:22:18
     Ser.1     Avg  555.3        Chisq 0.1087E+06   Var  5744.     Newbs.  10506
               Min  4.000          Max  716.0    expVar  555.3      Bins 105060

```

![lc_rxte.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179652/c9c15cfc-7d38-8e38-aa8c-4a7850e57c74.png)


## PCUの使う本数を決める．

saextrct の，"Name of COLUMNS to be accumulated" の箇所で，PCUの本数を微調節できる．デフォルトのGOODだと使えるものは全部使う．

## saextrct でエネルギーでカットして、ライトカーブとスペクトルを抽出する方法

### channel と energy の関係を確認する

energy と channel の関係は、 

https://heasarc.gsfc.nasa.gov/docs/xte/e-c\_table.html

に記載がある。この表は少し読みにくいので解説すると、

Channel (Abs)   Channel (stds)  EPOCH
6    2    2.02 ...
7    3    2.27 ...
8    4    2.53 ...
... 

という表の読み方は、

- Channel (Abs) <== Channel の絶対値 (検出器固有)
- Channel (stds) <== Standard2 というイベントの Channel の定義
- EPOCH <== 観測時期ごとに定義される(ゲインが時間変化するため)エネルギー(keV)

という読み方になります。

### channel をカットして、saextrct を用いる方法

https://heasarc.gsfc.nasa.gov/lheasoft/ftools/fhelp/saextrct.html

に、

> chmin = INDEF [integer]
Minimum energy channel to include in the accumulation. If set to INDEF the minimum energy channel used is defined by the input files. Channel information supplied must be in "original" or absolute channels, prior to any on-board channel binning that may have been performed by the EDS. If, to take a simplified example, the data files contain data grouped into 10 bins, the code will search CPIX to determine in which channel bin CHMIN exists, and that ENTIRE channel bin will be included in the accumulation, along with all other bins up to and including the bin containing CHMAX. If the first two channel bins contain energy channels 0-10 and 11-50 and CHMIN is set to 40, then ALL of the second channel bin will be included.
If no CPIX information is found, a one-to-one correspondence is assumed between the bin channel and the energy detector channel, with the first channel in the file assumed to correspond to energy channel 0, and the Nth channel in the file is set to correspond to the energy channel (N-1).
chmax = INDEF [integer]
Maximum energy channel to include in analysis. If set to INDEF the maximum energy channel used is defined by the input files. See the usage notes for CHMIN for further details.

に書いてあるように、keV という単位ではなくで、channel なので、channel to keV の対応は自分で考える必要あるので、上に従って、エネルギーと　ch の関係を考えます。

上記リンクの補足事項にある、
「If the first two channel bins contain energy channels 0-10 and 11-50 and CHMIN is set to 40, then ALL of the second channel bin will be included」 の意味はわかりにくいと思うので補足すると、

https://heasarc.gsfc.nasa.gov/lheasoft/ftools/fhelp/chantrans.html

に、CPIX の例とかあり、ビンまとめとかをする場合に使うキーワードなのだと思います(僕も使ったことないです)。

英語の意味は、グルーピングが、
first 0-10
second 11-50 <== CHMIN is set to 40
...
のような場合の例を考えてみましょうと、それで、CHMINが40で、11-50の間に来る場合は、second はまるっと含まれますよ、という意味です。

そのほか、補足としては、

Minimum energy bin to include in Spectra (INDEF):[1] 
Maximum energy bin to include in Spectra (INDEF):[1] 

のように、`INDEF` という単語が出てくるが、これは、indefinite の意味で、特に指定しない、という意味です。 

## そのほか

このほかにも，自分で maketime を用いて GTI を作成したり，自分で xtefilt を用いてフィルターを作成するなど，いくつか細かいこともある．

# PCAの解析方法 (binned Mode Data 編)

## xdf を用いてファイルを選択する

この例では，GX 339-4 の QPO が強く見えている例を紹介する．データをダウンロードして，
gx339-4/P92035/92035-01-02-0 というディレクトリに移動する．

そこで，次のようにイベントファイルを選択する．

![gx339_xdf.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179652/456a45e4-86bb-1019-8349-556e8d8982cb.png)

ここで選択された E_125us_64M_0_1s というのは，時間分解能が 125 usec で，エネルギーバンドが64個，という意味である．

## フィルタ作成

ビンモードと全く同じようにしてフィルタファイルを選択する．青いバーで，選択されてないと，"Make AppIdConfigList" を押しても，動かないことには注意しよう．

![gx339-4_filter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179652/709677d2-28c8-a434-7995-48047e214a8c.png)

## seextrct の実行

``` bash:
[syamada] $ seextrct         [~/work/ana/astro/rxte/gx339-4/P92035/92035-01-02-06]
 
Running SEEXTRCT version 4.4
==============================================
Input file name or @file-of-filenames:[@fits_files.xdf] 
Input GTI files to be OR'd with INFILE (-):[APPLY] 
Input GTI file to be AND'd with INFILE (-):[@filter.xdf] 
Root name for output file: [testeve] test125usec
Name of TIME column:[TIME] 
Name of COLUMN to be accumulated:[Event] 
Input the binsize in seconds, use 0.1 etc. if nec (INDEF):[INDEF] 0.000125
Chose print option, LIGHTCURVE, SPECTRUM, or BOTH:[BOTH] 
Type of binning for LIGHTCURVE: (SUM, RATE, MEAN):[RATE] 
Type of binning for SPECTRUM (SUM, RATE, MEAN):[SUM] 
Starting time for summation in seconds (INDEF):[INDEF] 
Ending time for summation in seconds (INDEF):[INDEF] 
Input time intervals t1-t2,t3-t4 in seconds (INDEF):[INDEF] 
Minimum energy bin to include in Spectra (INDEF) or 0-255:[INDEF] 
Maximum energy bin to include in Spectra (INDEF) or 0-255:[INDEF] 
Input energy intervals to be retained 0-1,2-255 (INDEF):[INDEF] 
Input channels for each bin 0-5,6-255 (INDEF):[INDEF] 
 
GTIORFILE set to APPLY - the DEFAULT
 
All input files will have their 2nd data
extension searched for GTI information.
If you do not wish to apply this information
you will have to enter "-" for the GTIORFILE.
 
The files input with GTI (ORFILE) information are:
.//pca/FS37_18a6e8e0-18a6f6a9
 
Found GTI extensions in all input files.
Proceeding to extract and apply GTIs to input.
 
Processing GTIORFILE
.//pca/FS37_18a6e8e0-18a6f6a9+2
 
Processing GTIANDFILE
.//stdprod/x92035010206.xfl
 
Could not find START column number
aborting... cannot continue
SEEXTRCT version 4.4 : Error Status Returned :  219
SEEXTRCT version 4.4 : named column not found

SEEXTRCT version 4.4 :  ***** FITSIO Error Stack Dump *****
ffgcnn could not find column: START
ffgcnn could not find column: START
 
Could not find STOP column number
Check input data
aborting... cannot continue
SEEXTRCT version 4.4 : Error Status Returned :  219
SEEXTRCT version 4.4 : named column not found

SEEXTRCT version 4.4 :  ***** FITSIO Error Stack Dump *****
ffgcnn could not find column: STOP
 
This GTI file contains NO data!
Aborting processing of this GTI file.
 
The GTIANDFILE(s) contains NO pertinent data
within the TSTART+TIMEZERO and TSTOP+TIMEZERO
specified.
No valid data. Aborting processing
of GTIANDFILE information. Continuing.
 
No GTI time-ranges were found in ANY of your
GTIANDFILES! Resetting GTIANDFILES parameter
and aborting GTIAND sorting and comparisons.
 
All time-filtering criteria has been processed.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
GTIORFILE filtering time-ranges are:
 
For file number:                    1
Time-ranges allowed by GTIORFILE are:
        1   413591816.37842941       413593642.37842941
        2   413593643.37842941       413595305.37842941
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Merging GTIANDFILEs and user-supplied times
(ie, either timeint or timemin/max) yielded
the following acceptable time-ranges:
        1   413591816.37842941       413595305.37842941
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
File time-ranges are given by:
  File Number       Start Time value     Stop Time Value
         1         413591806.37842941   413595308.37842941
 
***************WARNING!!!******************
You are being very inefficient in processing your data!
You have files that range over a long time, and a very small bin-size.
Either increase your bin-size to a larger value,
or run GROSSTIMEFILT on your data!
 
Since SA(E)EXTRCT cycles through data in lcbinarray element sections.
And you are trying to process          28016000.00  light-bins using an array
              400000  elements in size.
 You can change this by setting lcbinarray.
At the moment the extactor will have to cycle through all of your input data
a total of                70.04  times!!! This will take a VERY long time.
A wiser course would be to use GROSSTIMEFILT to filter this data
before using this extractor code to process it.
 
If you KNOW your data is in time ascending order
you may want to set the parameter MAXMISS to
speed processing - but you could lose data.
*******************************************
Use a Cntl-C now to kill this process, or prepare to wait a VERY LONG TIME!!!
*******************************************
Setup           1  time cycles, continuing.
Setup           2  time cycles, continuing.
Setup           3  time cycles, continuing.
Setup           4  time cycles, continuing.
Setup           5  time cycles, continuing.
Setup           6  time cycles, continuing.
Setup           7  time cycles, continuing.
Setup           8  time cycles, continuing.
Setup           9  time cycles, continuing.

---

 
Processing file
.//pca/FS37_18a6e8e0-18a6f6a9
 
Column         Total      Good   Bad :  Time       Phase     Channel
Event                0.0        0.0        0.0        0.0        0.0
 
Data selection resulted in no counts
on this iteration. Continuing...
 
Writing out GTI for Light Curve FITS file
 
Wrote out GTI extension.
Closing Light Curve.
 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Total number of columns output is:                       1
 
------------------------------------------
Column that is being output is:     Event
Total Counts for FITS Spectrum:              12656023.00
Total Time for FITS Spectrum:                    3488.000021
Total Counts/Time for FITS Spectrum:             3628.446939
 
Writing out Spectrum FITS file
 
Creating output spectral file:
test125usec.pha
 
Writing out GTI for Spectrum FITS file
Wrote Spectrum FITS file.
Closing Spectrum.
 
 
Everything is finished.
Cleaning up memory and exiting.
```

## パワースペクトルを確認

``` bash:
[syamada] $ powspec          [~/work/ana/astro/rxte/gx339-4/P92035/92035-01-02-06]
 
powspec 1.0 (xronos5.22)
 
Ser. 1 filename +options (or @file of filenames +options)[test125usec.lc] 
 Series 1 file    1:test125usec.lc
 
 Selected FITS extensions: 1 - RATE TABLE;
 
 Source ............ GX_339-4            Start Time (d) .... 14139 22:37:56.562
 FITS Extension ....  1 - `RATE      `   Stop Time (d) ..... 14139 23:36:05.562
 No. of Rows .......     27904069        Bin Time (s) ......   0.1250E-03
 Right Ascension ... 2.55706299E+02      Internal time sys.. Converted to TJD
 Declination ....... -4.87896996E+01     Experiment ........ XTE      PCA
 
 Corrections applied: Vignetting - No ; Deadtime - No ; Bkgd - No ; Clock - Yes
 
 Selected Columns:  1- Time;  2- Y-axis;  3- Y-error;  4- Fractional exposure;
 
 File contains binned data.
 
Name of the window file ('-' for default window)[/Users/syamada/work/software/heasoft-6.26.1/x86_64-apple-darwin18.5.0/xrdefaults/default_win.wi] 
 
 Expected Start ... 14139.94301576886  (days)      22:37:56:562  (h:m:s:ms)
 Expected Stop .... 14139.98339771331  (days)      23:36: 5:562  (h:m:s:ms)
 
 **** Warning: Newbin Time must be an integer multiple of Minimum Newbin Time
 Minimum Newbin Time   0.12500000E-03  (s)
 for Maximum Newbin No..         27912001
 
 Default Newbin Time is:  0.42600000    (s) (to have 1 Intv. of    8192 Newbins)
 Type INDEF to accept the default value
 
Newbin Time or negative rebinning[0.1] 
 
 Newbin Time ......    0.10000000      (s)
 Maximum Newbin No.             34891
 
 Default Newbins per Interval are:        8192
 (giving       5 Intervals of         8192 Newbins each)
 Type INDEF to accept the default value
 
Number of Newbins/Interval[1024] 512
 Maximum of      69 Intvs. with          512 Newbins of      0.100000     (s)
Default intervals per frame are:        69
Type INDEF to accept the default value
Number of Intervals/Frame[35] 69
 Results from up to      69 Intvs. will be averaged in a Frame
Rebin results? (>1 const rebin, <-1 geom. rebin, 0 none)[-1] 
Name of output file[default] 
Do you want to plot your results?[yes] 
Enter PGPLOT device[/XW] 
 
     256 analysis results per interval
 
  1% completed
 Intv    1   Start 14139 22:37:56
     Ser.1     Avg  3696.        Chisq  5789.       Var 0.4179E+06 Newbs.    512
               Min  2260.          Max  58

```

![gx339-psd.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179652/f5acc2d5-eb43-0f17-d72e-4d57d847942a.png)

２つのQPOが見えている．

## エネルギースペクトルの作成方法

エネルギースペクトルを作るには、CALDBの設定が必要となる。

CALDB というのは、衛星ごとに用意された calibration database のことで、エネルギーや望遠鏡や装置の劣化具合など、装置に関するデータベースのことです。

設定方法は、

https://heasarc.gsfc.nasa.gov/docs/heasarc/caldb/install.html

から、

https://heasarc.gsfc.nasa.gov/FTP/caldb/software/tools/caldb_setup_files.tar.Z

ダウンロードする。これは汎用的な設定ファイルです。

次に、

https://heasarc.gsfc.nasa.gov/docs/heasarc/caldb/caldb_supported_missions.html

から所望のデータベースをダウンロードする。PCAであれば、

https://heasarc.gsfc.nasa.gov/FTP/caldb/data/xte/pca/goodfiles_xte_pca_20200515.tar.Z

をダウンロードする。

次に、そのファイルを展開するのですが、フォルダ構造が大事です。

下記は、私の NICER の CALDB の設定状況です。RXTEのPCAの場合でもフォルダ構造は同じです。

/Users/syamada/work/software/caldb というフォルダに、　caldb_setup_files.tar.Z と、
goodfiles_nicer_xti.tar.gz というファイルを置いて、tar -zxvf で解凍します。

その上で、

``` bash:
export CALDB=/Users/syamada/work/software/caldb
source $CALDB/software/tools/caldbinit.sh
``` 

と環境設定をします。設定としてはこれだけです。

そうすると、下記のようなフォルダ構造ができるはずです。もし動かない場合はフォルダ構造が正しいか確認してください。

``` bash:
$ pwd
/Users/syamada/work/software/caldb

$ ls
.rw-r--r--  7.8k syamada 26 4  2020 caldb_setup_files.tar.Z
drwxr-xr-x     - syamada  4 3  2021 data
.rw-r--r--@  61M syamada  4 3  2021 goodfiles_nicer_xti.tar.gz
drwxr-xr-x     - syamada  4 3  2021 software


$ tree                                                                       
.
├── caldb_setup_files.tar.Z
├── data
│   └── nicer
│       └── xti
│           ├── bcf
│           │   ├── gain
│           │   │   ├── nixtiflightpi20150901v001.fits
│           │   │   ├── nixtiflightpi20150902v001.fits
│           │   │   ├── nixtiflightpi20151027v001.fits
│           │   │   ├── nixtiflightpi20151027v002.fits
│           │   │   ├── nixtiflightpi20151028v001.fits
│           │   │   ├── nixtiflightpi20170601v001.fits
│           │   │   ├── nixtiflightpi20170601v002.fits
│           │   │   ├── nixtiflightpi20170601v003.fits
│           │   │   ├── nixtiflightpi20170601v004.fits
│           │   │   ├── nixtiflightpi20170601v005.fits
│           │   │   └── nixtiflightpi20170601v006.fits
│           │   ├── gainfast
│           │   │   ├── nixtiflightpifast20150902v001.fits
│           │   │   ├── nixtiflightpifast20151027v001.fits
│           │   │   ├── nixtiflightpifast20151028v001.fits
│           │   │   └── nixtiflightpifast20170601v001.fits
│           │   ├── gtivehicle
│           │   │   ├── nixtirobo20170601v001.fits
│           │   │   ├── nixtisoyuz20170601v001.fits
│           │   │   ├── nixtisoyuz20170601v002.fits
│           │   │   └── nixtisoyuz20170601v003.fits
│           │   ├── issman
│           │   │   ├── nixtiissman20170601v001.fits
│           │   │   ├── nixtiissman20170601v002.fits
│           │   │   ├── nixtiissman20170601v003.fits
│           │   │   ├── nixtiissman20170601v004.fits
│           │   │   ├── nixtiissman20170601v005.fits
│           │   │   └── nixtiissman20170601v006.fits
│           │   ├── pntmis
│           │   │   └── nixtipntmis20170601v001.teldef
│           │   ├── saa
│           │   │   ├── nixtisaalgreg20170601v001.fits
│           │   │   ├── nixtisaareg20170601v001.fits
│           │   │   ├── nixtisaareg20170601v002.fits
│           │   │   └── nixtisaareg20170601v003.fits
│           │   └── timebias
│           │       ├── nixtitimebias20150901v003.fits
│           │       ├── nixtitimebias20170901v001.fits
│           │       └── nixtitimebias20170901v002.fits
│           ├── caldb.indx -> index/caldb.indx20200722
│           ├── cpf
│           │   ├── arf
│           │   │   ├── nixtiaveonaxis20170601v001.arf
│           │   │   ├── nixtiaveonaxis20170601v002.arf
│           │   │   ├── nixtiaveonaxis20170601v003.arf
│           │   │   └── nixtiaveonaxis20170601v004.arf
│           │   └── rmf
│           │       ├── nixtiref20170601v001.rmf
│           │       └── nixtiref20170601v002.rmf
│           └── index
│               ├── caldb.indx20170814
│               ├── caldb.indx20180226
│               ├── caldb.indx20180403
│               ├── caldb.indx20180404
│               ├── caldb.indx20180404a
│               ├── caldb.indx20180413
│               ├── caldb.indx20180417
│               ├── caldb.indx20180419
│               ├── caldb.indx20180509
│               ├── caldb.indx20180517
│               ├── caldb.indx20180605
│               ├── caldb.indx20180711
│               ├── caldb.indx20181105
│               ├── caldb.indx20190516
│               ├── caldb.indx20200202
│               └── caldb.indx20200722
├── goodfiles_nicer_xti.tar.gz
└── software
    └── tools
        ├── alias_config.fits
        ├── caldb.config
        ├── caldbinit.csh
        └── caldbinit.sh
```

なぜか、

``` bash:
source $CALDB/software/tools/caldbinit.sh
```

では CALDBCONFIG が設定されなくて、

``` bash:
./ $CALDB/software/tools/caldbinit.sh
```

じゃないとダメなことがありますが、、深追いはしてません。ちゃんと、

``` bash:
$ echo $CALDB 
/Users/syamada/work/software/caldb
$ echo $CALDBCONFIG
/Users/syamada/work/software/caldb/software/tools/caldb.config
$ echo $CALDBALIAS
/Users/syamada/work/software/caldb/software/tools/alias_config.fits
``` 
として、必要な３つの環境変数が設定されてることを確認しましょう。

その上で、

https://heasarc.gsfc.nasa.gov/docs/xte/recipes/pca_response.html

に従って、pcarsp を実行して、レスポンスを作成して、xspec でスペクトル解析をします。

基本的な使い方は、

https://heasarc.gsfc.nasa.gov/docs/xte/recipes/pca_spectra.html

> Spectral Analysis
Here we summarize the steps and associated xspec commands used when analyzing PCA spectra. An additional subsection shows how to fit other spectra simultaneously. In this example, the files comprise:

にちょこっと書いてますが、足りない部分は、

https://hackmd.io/@tenoto/H1Q70UrGP

などを参考に補完してください。

### xspec の使い方

xspec の使い方を知らない人は、

https://qiita.com/yamadasuzaku/items/0c5f28438f7342b63975

の、

> xspec の使い方を知らない人は、下記をまずは一読しよう。

以下も参考にしてください。

## そのほか

ライトカーブやエネルギースペクトルについても確認しよう．その他，event モードの解析においては，

``` bash: 
[syamada] $ sefilter                                                           
 Running SEFILTER version 4.0a   
===========================================
Enter SE FITS file for filtering:[.//pca/FS37_18a6e8e0-18a6f6a9]  
Enter the M-token to be processed (M[1]{1}):[M[1]{1}]
```

のように，M-token というフィルターを作ったりもする．普通のイベントは M[1]{1} なので，これを入れるだけでよいし，
あとは，すごい明るい天体の場合は，処理するモードによって，どこかのバッファ?がサチるせいなのか，カウントレートが異なる場合もあるので気をつける．