Этот макрос работает с 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");
}
Команда, которую вы дали, создаст гистограмму разницы между 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);
}