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関数 === |
Contents
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を詰めたいのなら詰めて構わないがその分パフォーマンスは落ちる。