МИВК Многофункциональный
информационно-вычислительный
комплекс ОИЯИ

Помимо пакетов минимизации TMinuit и TFumili, использующихся для аппроксимации по методу наименьших квадратов или максимального правдоподобия для статистического анализа можно использовать специализированный пакет RooStats.

Проект RooStats направлен на предоставление всеобъемлющего, гибкого и проверенного набора статистических инструментов в ROOT. В этом пакете для моделирования данных было решено использовать подход , разработанный в RooFit, который уже хорошо зарекомендовал себя в физике высоких энергий. Таким образом, пакет RooStats можно рассматривать как предоставляющий статистические инструменты высокого уровня, в то время как RooFit предоставляет основной язык моделирования данных, а также многие низкоуровневые аспекты функциональности. В процессе разработки и RooStats и RooFit быстро развиваются. Одна из основных целей RooStats - предоставить единую структуру для различных статистических методов.

Основной класс интерфейса имеет название TestStatistic. Он определяет метод Evaluate (data, parameterPoint), который возвращает значение типа double. Этот класс можно использовать для создания выборочных распределений для определяемой пользователем тестовой статистики. В настоящее время доступны следующие конкретные реализации интерфейса TestStatistic. NumEventsTestStat - возвращает количество событий в наборе данных. Этот метод полезен для счетных экспериментов. DebuggingTestStat - возвращает равномерное случайное число между 0,1.

 

void f12() {
   Double_t angle = TMath::Pi()/4.;
   Double_t cosphi = TMath::Cos(angle);
   Double_t sinphi = TMath::Sin(angle);
   
   TH2F *h2 = new TH2F("h2","h2",100,0,0.8,100,0,0.8);
   TRandom r;     
   for (Int_t i=0;i<1000;i++) {
      Double_t x = r.Uniform(0,1);
      Double_t y = r.Gaus(0,0.02);
      Double_t u = cosphi*x -sinphi*y;
      Double_t v = sinphi*x +cosphi*y;
      h2->Fill(u,v);
   }
   TF1 *f1 = new TF1("f1","[0]+[1]*x",0,1);
   f1->SetParameters(0.,1.);
   f1->SetLineColor(kRed);
   h2->Fit(f1);
   h2->Draw();
   f1->Draw("same");
}