Отличия ROOT6 от ROOT5
1
2
3
#if ROOT_VERSION_CODE >= ROOT_VERSION(6,00,00)
Double_t *x; // ROOT 6
#else
Float_t *x; // ROOT 5
#endif
4
5
CINT в ROOT5 выполнял автоматическое повышение до производных классов в определенных контекстах, например:
TH1 * h1 = hpx
TH1F * h1f = h1;
6
Гистограммы с метками / буквенно-цифровая ось
В ROOT 6 появилось понятие буквенно-цифровой оси. Ось считается буквенно-цифровой, когда у всех бинов есть метки, прикрепленные к ним. В этом случае нужно заполнить гистограмму с помощью TH1 :: Fill (label) вместо TH1 :: Fill (x), где метка является строкой, а x является действительным числом. В случае буквенно-цифровой оси статистика гистограммы (среднее значение, среднеквадратичное значение и т. д.) больше не вычисляется, а их значения установлены на ноль. Гистограммы с буквенно-цифровой осью будут объединены путем сложения содержимого для бинов с одинаковыми метками. Если метки присутствуют для каждого бина, а пользователь не хочет, чтобы ось была буквенно-цифровой, то он может вызвать функцию TAxis :: SetNoAlphanumeric ().
Заполнение гистограммы весами, отличными от единицы
Гистограмма, заполненная весами, отличными от 1, автоматически сохраняет теперь сумму квадрата весов для каждого бина. Нет необходимости больше вызывать функцию TH1 :: Sumw2 () для взвешенных гистограмм. Если вы хотите удалить сумму массивов весов (чтобы сохранить память), необходимо вызвать TH1 :: Sumw2 (false). Также функция TH1 :: Fill (x, y) больше не должна использоваться для установки содержимого бина на y. Вместо этого следует использовать TH1 :: SetBinContent (TAxis :: FindBin (x), y). В случае, если кто-то хочет иметь прежнее поведение и избегать того, чтобы сумма квадратов веса хранилась в гистограмме, даже если она заполнена весами, отличными от единицы, тогда нужно установить бит гистограммы H1 :: kIsNotW.
Методы TH1::Copy и TH1::Clone
TH1::Copy теперь создает содержимое гистограммы с использованием конструктора копирования, но не копирует содержащиеся объекты (например, TF1). TH1::Clone копирует все, но намного медленнее, особенно в многопоточных средах из-за внутренних точек сериализации. В ROOT 6 также конструктор копирования TH1 больше не является public. Вместо этого можно использовать конструктор копирования производных классов.
Устаревшие методы TH1 в ROOT 6
TH1 :: Get / SetCellContent, Get / SetCellError удалены. Нужно использовать Get / SetBinContent и Get / SetBinError, которые имеют точно такую же функциональность.
Более быстрый внутренний метод получения / обновления содержимого бина.
TH1 теперь использует в своих функциях-членах (например, TH1 :: Add) новые защищенные виртуальные функции UpdateBinContent и RetrieveBinContent для обновления и получения содержимого bin. Эти функции имеют преимущество, в скорости перед общедоступными методами Get / SetBinContent. Если пользователь реализовал класс, производный от класса TH1, то ему может потребоваться повторная реализация этих новых защищенных виртуальных функций.