For CRIB members
memo
Processor の仮想関数について
TProcessor を継承して新しいプロセッサを作成するときに、TProcessor を継承し、 関数をオーバーライドするときに汎用的に使えそうな(自分が使っている)クラスメソッドの一覧のメモ。
// InitProcメソッドで呼ばれる
virtual void Init (TEventCollection *) {;}
// user defined member functions to process data
virtual void BeginOfRun() {;}
virtual void EndOfRun() {;}
virtual void PreProcess() {;}
virtual void Process() {;}
virtual void PostProcess() {;}
virtual void PreLoop() {;}
virtual void PostLoop() {;}
virtual void Terminate() {;}
使うときは、virtual 修飾子はつけなくてもよく(つけても良い)、override キーワードをつけておくとオーバーライドした関数であることがわかって良いかも。 この時は、ClassDefOverride を使う。 どのタイミングでこの関数が呼ばれるかという違いがあるが、Init と Process さえあれば行いたい処理は十分可能だと思う。
関数が呼ばれるタイミングは以下の通り。
-> Init - ->
-> BeginOfRun -> PreLoop -> (PreProcess -> Process -> PostProcess) -> (PreProcess -> Process -> PostProcess) -> ... - -> PostProcess -> PostLoop -> EndOfRun
- -> <.q> -> Terminate
途中で sus を挟んだ場合は、
- PostProcess) ->
-> PostLoop -> -> PreLoop -> (PreProcess -> Process -> PreProcess) -> ...
といったような順番で呼ばれる。