Skip to content

Conversation

@hahnjo
Copy link
Member

@hahnjo hahnjo commented Mar 28, 2025

For a number of reasons, it is not what we want for the future generation of histogram classes in ROOT:

  • It is templated on the DIMENSIONS, the PRECISION, and optional bin statistics. This makes it hard(er) to use for IO.
  • The RHist interface has a pointer to an abstract, polymorphic RHistImplBase.
  • The concrete RHistImpl is templated on the processed axis types.
  • The polymorphic pointer makes the current prototype incompatible with RNTuple (unless using streamer fields).
  • It also takes minutes to compile for higher dimensions because concrete RHistImpl have to be generated for all combinations of axis types, which grows exponentially.

The plan is to remove the current prototype now, in time for the next ROOT release v6.36, and then add a new implementation after.

@hahnjo hahnjo added the in:Hist label Mar 28, 2025
@hahnjo hahnjo requested review from dpiparo, hageboeck and pcanal March 28, 2025 15:47
@hahnjo hahnjo self-assigned this Mar 28, 2025
@linev
Copy link
Member

linev commented Mar 28, 2025

There is significant peace of code in JSROOT. Do we want to keep it?

@hahnjo
Copy link
Member Author

hahnjo commented Mar 28, 2025

There is significant peace of code in JSROOT. Do we want to keep it?

Yes, I saw it but I'm not expert enough in that code. We may want to remove it as well, I'm not sure how much could (or even should) be reused with a future prototype

@github-actions
Copy link

github-actions bot commented Mar 28, 2025

Test Results

    18 files      18 suites   4d 4h 1m 47s ⏱️
 2 717 tests  2 717 ✅ 0 💤 0 ❌
47 196 runs  47 196 ✅ 0 💤 0 ❌

Results for commit a608dde.

♻️ This comment has been updated with latest results.

Copy link
Member

@pcanal pcanal left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks.

@linev
Copy link
Member

linev commented Mar 31, 2025

Yes, I saw it but I'm not expert enough in that code. We may want to remove it as well, I'm not sure how much could (or even should) be reused with a future prototype

It is very much depends how future prototype will looks like.
Probably I will remove code from repository for next ROOT/JSROOT releases,
but one can reuse it later again. Many draw options (like lego) reuse same code anyway for TH2 and RH2.

@hageboeck
Copy link
Member

hageboeck commented Mar 31, 2025

It is very much depends how future prototype will looks like.
Probably I will remove code from repository for next ROOT/JSROOT releases,
but one can reuse it later again.

Indeed. The code can still be found and checked out and adapted after removal. We would only lose the ability to git log the files. Is that OK @linev ?

Edit: I see you approved already. 🙂

For a number of reasons, it is not what we want for the future
generation of histogram classes in ROOT:

 * It is templated on the DIMENSIONS, the PRECISION, and optional
   bin statistics. This makes it hard(er) to use for IO.
 * The RHist interface has a pointer to an abstract, polymorphic
   RHistImplBase.
 * The concrete RHistImpl is templated on the processed axis types.
 * The polymorphic pointer makes the current prototype incompatible
   with RNTuple (unless using streamer fields).
 * It also takes minutes to compile for higher dimensions because
   concrete RHistImpl have to be generated for all combinations of
   axis types, which grows exponentially.

The plan is to remove the current prototype now, in time for the
next ROOT release v6.36, and then add a new implementation after.
@hahnjo
Copy link
Member Author

hahnjo commented Apr 3, 2025

Build failure on mac-beta is related to latest SDK update

@hahnjo hahnjo merged commit 9aa2fc5 into root-project:master Apr 3, 2025
22 of 23 checks passed
@hahnjo hahnjo deleted the rm-rhist branch April 3, 2025 10:52
jmcarcell added a commit to jmcarcell/rootbench that referenced this pull request Sep 8, 2025
It was removed in root-project/root#18191
and prevents compilation.
guitargeek pushed a commit to root-project/rootbench that referenced this pull request Nov 11, 2025
It was removed in root-project/root#18191
and prevents compilation.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants