問題タブ [root-framework]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - Empty Canvas when plotting histogram with ROOT
I wrote a code that loads in ROOT file then creates TChain from file with branches. I assign variables to different branches which I use to fill histograms. I am trying to plot a histogram with a cut. However, when I run the code I get an error message that says "Can't call TH2F::Draw("colz","rnpe<300") in current scope...". You can see the code below
c++ - 複数のルート ファイルをロードするマクロ
ROOTファイルからブランチを抽出し、ヒストグラムなどをプロットできるROOTファイルにロードするコードがいくつかあります。コードは次のようになります。
これは、1 つのファイルを読み込んでそのファイルからプロットを作成するだけでうまく機能します。ただし、n個のファイルをロードして同じ操作を行いたいです。より具体的には、ロードしたいすべての ROOT ファイルで満たされたディレクトリがある場合、そのディレクトリから各ファイルをロードするプログラムを作成できますか。どんな助けでも大歓迎です。
c++ - ヘッダー ファイルで argv[1] を宣言する方法
私が書いた c++ コードには、メイン ファイル ( .C ) と別のファイル ( .h) の 2 つのファイルがあります。ヘッダー ファイル (*.h) で argv[1] を使用する必要があります。これどうやってするの?
実際、このファイルはルート経由で実行されるように書かれています。
私のAnalyzeTree.Cファイルの内容の一部は
AnalyzeTree.h ファイルの内容の一部は次のとおりです。
現在、私が得ているエラーは
crash - root (cern) が libpng の問題でクラッシュする Fedora 20
ソースからルートの最新バージョンをインストールし、cern の Web サイトからダウンロードしましたが、メッセージの最後に添付したエラーのため、TBrowser を開くことができません。ルート フォーラムでいくつかの質問について既にヘルプを検索しましたが、うまくいった、または役に立ったものは見つかりませんでした。この問題のデバッグを手伝ってくれる人はいますか? 返信ありがとう
c++ - ベクトルを別のクラスに渡すと、ROOT でしか TCanvas ベクトルの最後の要素を別の TCanvas ベクトルに設定できないのはなぜですか?
問題
プログラムの本質的に「モデル」部分から「ビュー」部分に TCanvas を動的に渡したいと考えています。私がこれを行うことを考えた方法は、起動時にビューで TCanvas を作成し、グラフがいっぱいになったらビュー TCanvas でこの TCanvas を更新することでした。テストベンチを作成して、動作するかどうかを確認しました。
動作するメソッドと壊れたメソッドを表示しました。
私は QT-ROOT を使用しています。TQtWidgetは、本質的に TCanvas に戻るカスタム ウィジェットです。
マイキャンバスの設定
この作品
対応する出力:
グラフの順序が間違っていますが。
これは動作しません
このメソッドを別のクラスに転送し、シグナル/スロットを介して TCanvas を渡します。
グラフ データは次の場所に送信されます。
これは、このメソッドの出力です。
現時点で確認できる唯一のエラーは、SetupTab で次のように表示されることです。
c++ - CERN ルート - 時間に基づいてサブツリーのイベントをフィルタリングする際のエラー
以前、公式ルート (CERN) フォーラムでこの質問をしましたが、今のところ問題は解決されていません。私の間違いを指摘するか、別の方法を提案することで、ここにいる誰かが助けてくれるでしょうか?
イベントのある TTree があります。TTree には、各イベントの UNIX 時間を持つ 1 つのブランチと、その他のいくつかのブランチがあります。これらを個別に分析できるように、時間間隔に基づいてイベントのサブセットを選択したいと考えています。選択を行うために、別のツリーを作成し、適切な時間間隔内ですべてのエントリをコピーします。
次のコードは問題なく動作し、すべてのイベントをツリーからサブツリーにコピーします。
if(true) を実際の条件に置き換えると、問題が発生します。
次のエラーが表示されます。
エラー行は (*subtree) -> Fill() を参照しています。これは、最初の例で完全に正常に機能したのと同じコードです。t を含まない条件、またはサブツリーを参照していない if-body の場合、コードは機能します。ここで何がうまくいかないのか誰でも説明できますか?
ありがとうございました!
(参考までに、元の質問へのリンク: http://root.cern.ch/phpBB3/posting.php?mode=edit&f=3&p=79722 )
python - PyROOT で TTreeReader を使用する方法
PyROOT で TTree を読み取るための TTreeReader アプローチを使用して、起動して実行しようとしています。ガイドとして、ROOT 6 Analysis Workshop ( http://root.cern.ch/drupal/content/7-using-ttreereader ) とそれに関連する ROOT ファイル ( http://root.cern.ch/root ) を使用しています。 /files/tutorials/mockupx.root )。
この後、私は少し迷っています。TTreeReader オブジェクトを使用して変数情報にアクセスしようとしましたが、うまくいきません。
ここでどこが間違っていますか?
c++ - 関数のパラメーターとしてヒストグラムを使用する
ねえ、私は現在 ROOT を使用しており、2 つのヒストグラムを取り、一方を他方から減算し、各ビンをループしてゼロ以外のビンがあるかどうかを確認するマクロを作成しました。これは、ヒストグラムが同等。
現在、関数をテストするためだけにマクロ内に 2 つのヒストグラムを作成しています。3 つ目のヒストグラムは Hist 1 - Hist 2 ですが、任意の 2 つのヒストグラムをパラメーターとしてマクロに入力してテストを実行できるようにしたいと考えています。 .
これどうやってするの?
マクロは現在これであり、内部の 2 つのヒストグラムはそれをテストするためだけにあることを思い出してください。
c++ - ROOT TSelector で切り捨てられたポインター
私は科学フレームワーク ROOT を使用しているので、それを使って何をしているのかについて具体的に説明しますが、これを引き起こす原因について一般的なアイデアを持っている人がいる場合は、ソース コードを調べて何が原因かを突き止めることができます。多くの人がROOTを使用していないことを私は知っているので、起こっています。
T.Process() を使用して TTree (ROOT データ構造) を処理しています。基本的に、T.Process は objdef というクラスを使用して、TTree 内のデータを分析します。TTree のデータをループし、新しい TTree として出力されるベクトルを塗りつぶします (尋ねられれば、より具体的に説明できますが、この質問で ROOT フレームワーク全体を説明するよりも、一般的な質問を述べた方がよいと思います)。 .
出力ベクトルへのポインターは、objdef クラス定義で宣言されます。私が実行したほとんどのサンプルでは、システム全体がうまく機能しています。ただし、一部のサンプルでは、ポインターが切り捨てられたように見える場合があり (?)、セグ フォールトが発生します。次に例を示します。
objdef 宣言で宣言されているいくつかのポインターは次のとおりです。
T.Process() を実行すると、ポインターは次のようになります。
3 番目のポインタは一体どうなっているのでしょう。どのポインターが切り捨てられるかは、コードの実行ごとにランダムであるようです。
もっと具体的に言えばいいのにと思います。おそらく、SOからのいくつかの鋭い質問が、何が起こっているのかを判断するのに役立つでしょう。または、このようなポインターの切り捨てを引き起こす可能性のある一般的なことを誰かが知っている場合は、ぜひ聞きたいです。
アップデート
不良ポインタに対して sizeof を実行すると、8 が返されます。
更新 2
明らかに、メモリが実際に割り当てられる前に、いくつかのポインタがランダムな値に初期化された(またはゼロに初期化されなかった?)ため、メモリが割り当てられませんでした。ROOT フレームワーク (具体的には Cint) の奥深くにバグがあると思われますが、回避策を見つけました。すべてのポインターを明示的に 0 に設定し、ROOT にメモリを割り当てさせ、メモリ アドレスを与えるように強制します。それは今働いています。おそらく、ポインターは実際には切り捨てられたのではなく、小さな値だったようです。それらは実際のメモリアドレスを持っていなかったので、そもそも切り捨てられることはありませんでした.