StackExchange のいくつかのルールに違反する可能性があることを十分に認識して、ここで質問することにしました。これは、質問するのに適切な場所ではないためかもしれませんが、CERN ROOT に関連する多くの質問を見ました。ここでは、質問に答える人々が調理済みの解決策を提供する代わりに方法を示すことを好むことを知っていますが、助けが必要であり、答えから学ぶ時間がありません。私は自分の問題の解決策だけが欲しい. あらかじめお詫び申し上げます!
ここに私の問題があります:私は2つの.rootファイルを持っています:
- スペクトルの 1 つ (「sezione_misura_90.root」)、
- バックグラウンドからの 1 つ ("sezione_fondo_90.root")。
最初から 2 番目を引いて、最終的なヒストグラムを取得する必要があります。通常、私はTBroswerでファイルを開きます.rootファイルを開くスクリプトのマクロを実装する方法や、他のすべてを行う方法がわかりません.誰かが私に方法を教えずに、私はそれを使用することになっています!!! 教授でさえ。使い方がわからない…
読んだ人がすぐに使用できるマクロまたはスクリプトを持っている場合、それを私と共有してくれた彼に永遠に感謝します. 前もって感謝します!
編集 run.cxx という名前のファイルに次の行を書き留めます
int run() {
// Open both files side-by-side
TFile* sezione_misura_90 = new TFile("sezione_misura_90.root");
TFile* sezione_fondo_90 = new TFile("sezione_fondo_90.root");
// Get the histograms from the file
// Since you didn't say from your post, I'm going to assume that
// the histograms are called "hist" and that they hold floating
// point values (meaning, they're TH1F histograms. The "F" means float)
TH1F* h_misura = (TH1F*) sezione_misura_90->Get("hist");
TH1F* h_fondo = (TH1F*) sezione_fondo_90->Get("hist");
// Now we add them together
TH1F* h_sum = h_misura->Add(*h_fondo, -1);
( や ; のようないくつかのタイプミスがありました。修正しましたが、次のようになりました。
エラー: クラス オブジェクトへの不正なポインター h_misura 0x0 139 run.cxx:21: ** インタープリター エラーが回復しました **