egcs-1.1.2-12cm.ppc.rpmSRPM は
egcs-c++-1.1.2-12cm.ppc.rpm
egcs-g77-1.1.2-12c.ppc.rpm
egcs-g77-1.1.2-12cm.ppc.rpm
egcs-objc-1.1.2-12cm.ppc.rpm
egcs-1.1.2-12cm.src.rpmである。
もちろん、FORTRAN 関数を含む共有ライブラリーを作るなどということをしなければ、全く不要の変更である。"rpm
-Uvh" で放り込んで使っているが、今の所何の問題もない(もちろん、FORTRAN
以外の部分では何の変更もないはずである)。FORTRAN 関数を含む共有ライブラリーも問題なくダイナミックロードできるので思惑どおおりである。とはいえ、作るのも自己責任なら使うのも自己責任。
class LockableLVector : public Lockable, public LVector;
から
class LockableLVector : public LVector, public Lockable
に変更したら解決した。
理由は調べていないが、
class Lockable
(Root Objectでない)
class LVector
(Root Object つまり TObject を継承)
なので、多重継承では Root Object を先に置く必要があるようである。
ジェットファインダーの使い方
ジェットファインダーは、TObjArray tracks がイベント中のトラックの LockableLVector のアレイとして
Double_t ycut = 0.001; // ycut の設定のように使う。jclust.FindJets() をやらずにいきなり jclust.FrorceNJets(njets) をしてもよい。
ANLJadeEJetFinder jclust(ycut); // JetFinder のインスタンスの生成
jclust.Initialize(tracks); // クラスタリングする track をセット
jclust.FindJets(); // 与えられた ycut でジェットクラスタリングを実行Int_t njets = 6; // ジェットの本数を指定
jclust.FrorceNJets(njets); // その本数になるように ycut を調整
ジェットファインディングの結果は
TObjArray &jets = jclust.GetJets(); // 結果の参照を TObjArray として返してもらうのように使える。現在、広島大学の池松氏とともに、孤立レプトン検出、カット、イベントシェイプ、その他の解析用クラスを開発中。今月の終わりくらいにはベータ版をリリース予定。その後は、測定器シミュレーター、イベントジェネレーターと進むつもり。
TIter nextjet(&jets); // その TObjArray にアクセスする iterator を生成
ANLJet *jetPntr;
while ((jetPntr = (ANLJet *)nextjet())) {
ANLJet &jet = *jetPntr;
LockableLVector p4jet = jet(); // ジェットの4元運動量を取得
histEjet->Fill(p4jet.E()); // ジェットのエネルギーのヒストグラムをフィル
.....
}