TTree объекты; используя параметры Draw для гистограммы разницы

Этот макрос работает с ROOT (cern) TTree объекты. Его цель — отобразить одну гистограмму, а другую вычесть из нее. Деревья дружат. Я пытаюсь использовать Draw() варианты вычитания одной гистограммы из другой;

tree1->Draw("hit_PMTid - plain.hit_PMTid");

Однако это делает неправильную ось отрицательной. Результат выглядит так;

странно симметричный график

Как я знаю, графики имеют почти одинаковую форму, это явно их отображение спина к спине. Как я могу заставить это изменить ось, на которой это вычитает, от x до y?

Это, вероятно, не нужно, но вот полный макрос;

void testReader3(){
TFile * file1 = TFile::Open("alt4aMaskOutput.root");
TTree * tree1 = (TTree*)file1->Get("HitsTree");
tree1->AddFriend("plain = HitsTree", "plainMaskOutput.root");

tree1->Draw("hit_PMTid - plain.hit_PMTid");
}

0

Решение

Команда, которую вы дали, создаст гистограмму разницы между hit_PMTid а также plain.hit_PMTid переменные для каждого события дерева. Если вместо этого вы хотите посмотреть на различия между бинами в распределениях, вам нужно заполнить две гистограммы, а затем вычесть их (используется TH1::Add). Как вы говорите, вы должны заставить тот же биннинг. Примером этого может быть:

void testReader3(){
TFile * file1 = TFile::Open("alt4aMaskOutput.root");
TTree * tree1 = (TTree*)file1->Get("HitsTree");
tree1->AddFriend("plain = HitsTree", "plainMaskOutput.root");

// Draw the two histograms from the tree, specifying the
// output histogram name and binning
tree1->Draw("hit_PMTid>>hist1(100,0,6000)");
tree1->Draw("plain.hit_PMTid>>hist2(100,0,6000)");

// Retrieve the two histograms we just created
TH1* hist1 = gDirectory->Get("hist1");
TH1* hist2 = gDirectory->Get("hist2");

// Subtract
TH1* hist_diff = (TH1*) hist1->Clone("hist_diff");
hist_diff->Add(hist2, -1);

}
2

Другие решения


По вопросам рекламы [email protected]