Locked History Actions

Diff for "ANAROOT/Manual/analoop"

Differences between revisions 3 and 4
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
Line 4: Line 3:
=== analoopの書き方 ===
valに詰める -> Add関数
=== AnaLoopの2つの使い方 ===
==== libraryに組み込み ====
source/AnaLoop以下に正しく作れはroot上で見える。
標準的なものを作ってblack boxとしてユーザーに使わせるのに向いている。

==== 手元にmacroとして置いておいて動的にload ====
libraryに組み込むのと同じソースをroot上で動的にloadすることもできる。
{{{
root[i] .L macros/TArtAnaLoopUser.C+
}}}
こう書くとコンパイルしてロードしてくれる。
.xはコンパイルして実行なのでだめ。
ちょくちょく書き換える場合やrootに慣れていて直接TH1とかをanaloopクラス内で
constructする場合に向いている。

=== AnaLoopの概要 ===
AnaLoopとは解析の流れ、およびコントロールをするインターフェースクラス。
TArtAnaLoopが正確な名前でこれを継承したクラスを作成し、解析内容を実装する。
子クラスではConstruct(), Calculate(), Destruct(), ClassName()の実装が
要求される。
以下に各関数の説明を書くが、macros/analoopにあるsampleやsourceを見るほうがわかりやすい気もする。

==== Construct() ====
TArtCalibNEBULAとかをnewする。
TH1とかのnewはConstruct()やコンストラクタではなく、
book関数をオーバーロードしてその中で行なってください。
具体的には、TArtAnaLoopUserクラスを作った場合なら、
{{{
void book(TArtAnaLoopUser* analoop)
}}}
という関数を作るということです。
具体例がmacros/analoop/TArtAnaLoopUser.Cにあるはずです。
newしたTH1のdeleteはデストラクタで。

==== Calculate() ====
毎loop呼ばれるので、oneloopの処理を書く。
手動でif文で条件別けして途中で抜けるのは構わない。

==== Destruct() ====
newしたTArtCalibNEBULAとかをdeleteする。

==== ClassName() ====
これは実は単にstatus()で表示するためだけに存在する。

=== valに詰める -> Add関数 ===

AnaLoopの2つの使い方

libraryに組み込み

source/AnaLoop以下に正しく作れはroot上で見える。 標準的なものを作ってblack boxとしてユーザーに使わせるのに向いている。

手元にmacroとして置いておいて動的にload

libraryに組み込むのと同じソースをroot上で動的にloadすることもできる。

root[i] .L macros/TArtAnaLoopUser.C+

こう書くとコンパイルしてロードしてくれる。 .xはコンパイルして実行なのでだめ。 ちょくちょく書き換える場合やrootに慣れていて直接TH1とかをanaloopクラス内で constructする場合に向いている。

AnaLoopの概要

AnaLoopとは解析の流れ、およびコントロールをするインターフェースクラス。 TArtAnaLoopが正確な名前でこれを継承したクラスを作成し、解析内容を実装する。 子クラスではConstruct(), Calculate(), Destruct(), ClassName()の実装が 要求される。 以下に各関数の説明を書くが、macros/analoopにあるsampleやsourceを見るほうがわかりやすい気もする。

Construct()

TArtCalibNEBULAとかをnewする。 TH1とかのnewはConstruct()やコンストラクタではなく、 book関数をオーバーロードしてその中で行なってください。 具体的には、TArtAnaLoopUserクラスを作った場合なら、

void book(TArtAnaLoopUser* analoop)

という関数を作るということです。 具体例がmacros/analoop/TArtAnaLoopUser.Cにあるはずです。 newしたTH1のdeleteはデストラクタで。

Calculate()

毎loop呼ばれるので、oneloopの処理を書く。 手動でif文で条件別けして途中で抜けるのは構わない。

Destruct()

newしたTArtCalibNEBULAとかをdeleteする。

ClassName()

これは実は単にstatus()で表示するためだけに存在する。

valに詰める -> Add関数

このときanapawではデータが無いときに非物理量(-1000等)を詰めていたが、 anarootではAddしなければhistogramにはfillされない。 例えばTDCのover flowを詰めたいのなら詰めて構わないがその分パフォーマンスは落ちる。