東京工業大学大学院理工学研究科基礎物理学専攻中村研究室メンバーTakayuki Sako

HBOOKのsubroutine

自分用のメモ。多分色々間違っている。
HBOOKList of Subroutines を読んだ方が正確。

subroutineとfunction

このページに挙げているもののほとんどはサブルーチンであるが、一部関数も混じっている。 subroutineというサブルーチンを実行するためには変数をx,y,zとして、
      call subroutine(x,y,z)
とすれば良い。functionという関数を実行するためには一度宣言をしてから使う。
      real function
      y = function(x)

index

common/pawcメモリの確保
HLIMITメモリの制限
HBOOK1一次元ヒストグラムの定義
HBOOK2二次元ヒストグラムの定義
HF1一次元ヒストグラムに値を代入
HF2二次元ヒストグラムに値を代入
HRPUTファイルを出力
HISTDO端末上にテキストで表示(全てのID)
HPRINT端末上にテキストで表示(指定したIDのみ)
HINDEX端末上にindexを表示
HTITLEGeneral Titleを設定
HIDOPTヒストグラムのオプションを設定
HCOPYヒストグラムをコピーする
HRESETヒストグラムの中身をリセットする
HDELETヒストグラムそのものを消去する
HSUMヒストグラムの合計値

common/pawc

common/pawc/H(1000000)
common 文で作業領域となるメモリを確保。ヒストグラムが多くなる場合はエラーを 防ぐためこの数値を大きくすれば良い。最近のマシンならばハード的なメモリの容量よりも HBOOK の仕様上の制限が先に来るはず。

HLIMIT : subroutine

HLIMIT(1000000)
前述した領域以上のメモリを使わないように制限をかける。1つ前の行で設定した数値と同じ値にすれば良い。 このあたりのMemory size controlについてはここで補足。

HBOOK1 : subroutine

HBOOK1(ID,CHTITL,NX,XMI,XMA,VMX)
一次元ヒストグラムの定義。
  • ID (integer) : ヒストグラムID。0以外の整数。
  • CHTITL (character) : ヒストグラムのタイトル。最大80文字。
  • NX (real) : ビン数(全体を何分割するか)。
  • XMI (real) : 最小値
  • XMA (real) : 最大値
  • VMX (real) : 各ビンのバッファサイズ。普通0(デフォルト値)としておけば良い。

HBOOK2 : subroutine

HBOOK2(ID,CHTITL,NX,XMI,XMA,NY,YMI,YMA,VMX)
二次元ヒストグラムの定義。
  • ID (integer) : ヒストグラムID。0以外の整数。
  • CHTITL (character) : ヒストグラムのタイトル。最大80文字。
  • NX (integer) : x軸のビン数(全体を何分割するか)。
  • XMI (real) : x軸の最小値
  • XMA (real) : x軸の最大値
  • NY (integer) : y軸のビン数(全体を何分割するか)。
  • YMI (real) : y軸の最小値
  • YMA (real) : y軸の最大値
  • VMX (real) : 各ビンのバッファサイズ。普通0(デフォルト値)としておけば良い。

HF1 : subroutine

HF1(ID,X,WEIGHT)
定義されたヒストグラムID(一次元)に実際に値を入れていく。
  • ID (integer) : ヒストグラムID。0以外の整数。
  • X (real) : 代入する値
  • WEIGHT (real) : ウェイト。重みをつけないならば1で良い。

HF2 : subroutine

HF2(ID,X,Y,WEIGHT)
定義されたヒストグラムID(二次元)に実際に値を入れていく。
  • ID (integer) : ヒストグラムID。0以外の整数。
  • X (real) : x軸側に代入する値
  • Y (real) : y軸側に代入する値
  • WEIGHT (real) : ウェイト。重みをつけないならば1で良い。

HRPUT : subroutine

HRPUT(ID,CHFILE,CHOPT)
ファイルを出力する。
  • ID (integer) : 0で全てのIDを出力。
  • CHFILE (character): ファイル名
  • CHOPT (character): Nで新たなファイルを作る。普通はNで良いはず。

HISTDO : subroutine

HISTDO
全てのヒストグラムを端末上にテキストで表示。PAW等を使うなら不要な機能だがすぐに結果を確認したいときは便利?

HPRINT : subroutine

HPRINT(ID)
HISTDOと違いこちらは指定したIDのみ端末上にテキストで表示。
  • ID (integer) : ヒストグラムID(整数)。"0"を指定するとindexを表示しない点を除けばHISTDOと同じ役割を果たす。 ここでいうindexとはHISTDOの出力結果(上の図)の最初の点線で囲まれた部分。

HINDEX : subroutine

HINDEX
上記のindexを表示する。indexの左上にはGeneral Titleが表示される。

HTITLE : subroutine

HTITLE(CHGTIT)
General Titleを設定する。
  • CHGTIT (character) : General Title。最大80文字。

HIDOPT : subroutine

HIDOPT(ID,CHOPT)
ヒストグラムのオプションを設定する。
  • ID (integer) : ヒストグラムID(整数)。"0"を指定すると全てのヒストグラム。
  • CHOPT (character) : 設定するオプション。詳しくはList of SubroutinesHIDOPT 参照
例えば
call HIDOPT(0,'ROTA')
とすると全てのヒストグラムが90°回転する。

HCOPY : subroutine

HCOPY(ID1,ID2,CHTITL)
ID1のヒストグラムをコピーして新たにID2というヒストグラムを生成する。
  • ID1 (integer) : コピー元のヒストグラムID
  • ID2 (integer) : 新たに作るヒストグラムのID。既に存在するIDを指定するとそのヒストグラムが上書きされる。
  • CHTITL (character) : 新たに作るヒストグラムのタイトル。''にするとコピー元のタイトルがそのまま使われる。

HRESET : subroutine

HRESET(ID,CHTITL)
IDのヒストグラムの中身をリセットする(ヒストグラムの定義そのものは消えない)。
  • ID (integer) : ヒストグラムID(整数)。"0"を指定すると全てのヒストグラム。
  • CHTITL (character) : リセット後のヒストグラムのタイトル。''にするとリセット前のタイトルがそのまま使われる。

HDELET : subroutine

HDELET(ID)
IDのヒストグラムそのものを消去する。
  • ID (integer) : ヒストグラムID(整数)。"0"を指定すると全てのヒストグラム。

HSUM : function

HSUM(ID)
IDのヒストグラムの中身の合計値を返す。
  • ID (integer) : ヒストグラムID(整数)。

HBPRO : subroutine

HBPRO(ID,VMX)
2次元ヒストグラムを1次元に投影。 そのIDが存在しない、もしくは1次元ヒストグラムであった場合は何もしない。 2次元ヒストグラムに値が詰まっている時のみ実行される
  • ID (integer) : 2次元ヒストグラムID(整数)。"0"を指定すると全ての2次元ヒストグラム。
  • VMX (real) : 各ビンのバッファサイズ。普通0(デフォルト値)としておけば良い。

HBPROY : subroutine

HBPROY(ID,VMX)
x軸もしくはy軸への射影
  • ID (integer) : 2次元ヒストグラムID(整数)。"0"を指定すると全ての2次元ヒストグラム。
  • VMX (real) : 各ビンのバッファサイズ。普通0(デフォルト値)としておけば良い。

HBANDX : subroutine

HBANDX(ID,YMI,YMA,VMX)
yの範囲を(YMI,YMA)に制限してx軸への射影
  • ID (integer) : 2次元ヒストグラムID(整数)。"0"を指定すると全ての2次元ヒストグラム。
  • YMI (real) : y軸の最小値
  • YMA (real) : y軸の最大値
  • VMX (real) : 各ビンのバッファサイズ。普通0(デフォルト値)としておけば良い。

HBANDY : subroutine

HBANDY(ID,XMI,XMA,VMX)
HBANDX と同様であるが、こちらはy軸への射影。
  • ID (integer) : 2次元ヒストグラムID(整数)。"0"を指定すると全ての2次元ヒストグラム。
  • XMI (real) : x軸の最小値
  • XMA (real) : x軸の最大値
  • VMX (real) : 各ビンのバッファサイズ。普通0(デフォルト値)としておけば良い。

HBSLIX : subroutine

HBSLIX(ID,NSLI,VMX)
2次元ヒストグラムを NSLI 個の1次元ヒストグラムへとスライス。それぞれのスライスはx軸への射影
  • ID (integer) : 2次元ヒストグラムID(整数)。
  • NSLI (integer?): スライスの数
  • VMX (real) : 各ビンのバッファサイズ。普通0(デフォルト値)としておけば良い。

HBSLIY : subroutine

HBSLIY(ID,NSLI,VMX)
HBSLXと同様であるが、こちらはy軸への射影
  • ID (integer) : 2次元ヒストグラムID(整数)。
  • NSLI (integer?): スライスの数
  • VMX (real) : 各ビンのバッファサイズ。普通0(デフォルト値)としておけば良い。

HBOOKB : subroutine

HBOOKB(ID,CHTITL,NCX,XBINS,VMX)
不等間隔ビン一次元ヒストグラムの定義(日本語がよく分からない)。 HBOOK1がx軸の最小値と最大値を与える等間隔のビンを前提とするのに対し、HBOOKBはNCX+1個の要素を持つ配列XBINSにより 不等間隔ビンのヒストグラムを定義する。
  • ID (integer) : ヒストグラムID。0以外の整数。
  • CHTITL (character) : ヒストグラムのタイトル。最大80文字。
  • NCX (real) : ビン数(全体を何分割するか)。
  • XBINS (real,array) :
    • XBINS[1] : 1番目のビンの最小値
    • XBINS[2] : 2番目のビンの最小値
    • XBINS[NCX+1] : 最後のビンの最大値
  • VMX (real) : 各ビンのバッファサイズ。普通0(デフォルト値)としておけば良い。

HMINIM : subroutine

HMINIM(ID,FMIN)
HBSLXと同様であるが、こちらはy軸への射影
  • ID (integer) : 2次元ヒストグラムID(整数)。
  • NSLI (integer?): スライスの数
  • VMX (real) : 各ビンのバッファサイズ。普通0(デフォルト値)としておけば良い。

HGIVE : subroutine

HGIVE(ID,CHTITL*,NX*,XMI*,XMA*,NY*,YMI*,YMA*,NWT*,LOC*)
ヒストグラムのアドレスやパラメーターを返す。
  • Input
    • ID (integer) : 次元ヒストグラムID(整数)。0はダメ
  • Output
    • CHTITL (character*80) : ヒストグラムタイトル。
    • NX (integer) : x軸のビン数(全体を何分割するか)。
    • XMI (real) : x軸の最小値
    • XMA (real) : x軸の最大値
    • NY (integer) : y軸のビン数(全体を何分割するか)。1次元ヒストグラムの場合は0を返す。
    • YMI (real) : y軸の最小値
    • YMA (real) : y軸の最大値
    • VMX (real) : 各ビンのバッファサイズ。
    • NWT (integer) : タイトルの文字数。タイトルがない場合0を返す。
    • LOC : common /PAWC/におけるヒストグラムのアドレス

HNOENT : subroutine

HNOENT(ID,NOENT)
IDのヒストグラムやNtupleのエントリーの数を返す。オーバーフローやアンダーフローも含む。
  • ID (integer) : ヒストグラムID(整数)。
  • NOENT (integer) : エントリーの数

HDUMP : subroutine

HDUMP(ID)
IDのヒストグラムに対応するHBOOKのストレージエリアのダンプを表示する。
  • ID (integer) : ヒストグラムID(整数)。


参考文献

"HBOOK Reference Manual"