これまで1次元もしくは2次元のヒストグラムを見てきましたが、実際のデー タは通常はるかに沢山のデータから成り立っています。ヒストグラムにすると いうのはそれらのデータにある基準をあてがって、その基準を満たすもののデー タの集合を選び出し、そのデータをある軸に投射してヒストグラムとするわけ です。この作業のために導入されたのがnt upleと呼ばれるものです。ntuple とはdoubleとかtriple、quadruple、quintuple、sextup le、septuple、 octuple...のn番目の表現。エヌテュープルと読みます。
通常、実験データをイベント毎に処理していくとトラックやカロリメータの クラスター等から様々な物理量が計算されます。クラスターエネルギーをヒス トグラム表示させる場合でもトラックが2本あるときの分布が見たいとか、ト ラックと結びついたクラスターだけを表示したいとか色々です。解析ではこの ような変数を定義して、イベント毎に変数に値をセットして保存します。その 結果をイベント毎に条件を与えて、満たしたイベントのデータでヒストグラム を埋めていきます。イベント毎のデータの集合がntupleと言われるものでPAW ではそれを処理する方法が用意されています。
実際にはntutpleは大量のデータになるわけですからオフライン解析のバッ チジョブで作られ、それをPAWでインタラクティブに処理するのが普通ですが、 ここでは会話的にntutp leを作って処理する方法を説明します。バッチでの扱 いは次節で説明します。
まずntutpleを定義します。NTUPLE/CREATEコマンドを使います。
PAW > NT/CRE 3001 'n-tuple demo' 4 ! 100 x y z v
ntupleはヒストグラムと同じような扱いがされます。識別は番号でされます。 この例の30 01は識別番号です。つぎの文字列はタイトル、次の4は変数の数で、 その次の!はメモリーに入りきれなくなったときに書き出すファイル名ですが、 この例ではスキップしています。100はデータをしまう場所をとりあえず確保 する領域の広さで、ここでは100とします。その後に続くのが変数名で、今の 場合x、y、z、vと名前をつけました。変数を参照するにはntupleの識別番号に. をはさんで変数名を書きます。今の例では3001.xなどとなります。
この段階ではまだntupleはデータを持っていません。ファイルから読み込み ましょう。まずデータファイルを用意します。一行に変数の数だけのデータを 並べたテキストファイルを作ります。行数は必要なだけ。読み込みは NTUPLE/READコマンドです。
PAW > NT/READ 3001 ntdemo.dat
読み込めたら確認しましょう。NTUPLE/PRINTコマンドを使います。
PAW > nt/print 1 ******************************************************** * NTUPLE ID= 3001 ENTRIES= 10 ntuple demo ******************************************************** * Var numb * Name * Lower * Upper * ******************************************************** * 1 * X * 0.100000E+01 * 0.100000E+02 * * 2 * Y * 0.100000E+01 * 0.400000E+01 * * 3 * Z * 0.100000E+01 * 0.400000E+01 * * 4 * V * 0.100000E+01 * 0.100000E+02 * ********************************************************
このデータを表示させます。それぞれの変数について1次元のヒストグラム表 示をさせます。NTUPLE/PLOTです。
PAW > NT/PLOT 3001.X
Xのデータを使ってヒストグラムをフィルしました。データの相関を見てみましょう。
PAW > NT/PLOT 3001.X%Y
変数XとYの間のスキャッタープロットが表示されました。%で変数をつないで 相関を表します。この表現は3次元も可能です。
つぎにデータ選択基準を定義します。カットと呼ばれます。カットは変数名 とその組み合わせについて定義されます。カットは$に続いて1から99までの数 字を与えて識別します。
PAW > CUT $1 X>5.0 PAW > CUT $1 CUT number = 1 Points= 1 x<5.0
1番のカットが定義されました。これを使ってntupleをプロットします。
PAW > NT/PL 3001.Y $1
これはntuple3001の変数Yについてのヒストグラムをカット1番つまり変数Xが 5.0以下の値を取るイベントについてのみフィルした結果が表示されます。
カットはファイルに保存できます。テキストファイルの形式になります。
PAW > CUT $1 W CUT1.DAT PAW > CUT $1 R CUT1.DAT
最初の例はカット$1をファイルCUT1.DATに書き出しました。後の例はカット$1 をファイルから読み込みました。
カットの定義のところで変数の範囲を書きましたが、そのかわりにヒストグ ラムのプロットからカーソル(マウス)を使って座標を与えてカットを定義する ことも出来ます。
PAW > NT/PL 3001.X%Y PAW > CUT $2 G
この例ではXとYのスキャッタープロットをまず表示させます。次にCUT定義をG オプションで呼び出しています。そうするとヒストグラム表示ウインドウにマ ウスカーソルを持っていくとカーソルの形がクロスヘアーカーソルと言われる 十字型になり、カットに使う点を定義することも出来ます。