I HATE ROOT
ROOT is a tool that all high energy physicists depend on. Without it, and its author, Rene, the world of HEP would be a very different -- and we probably wouldn't be able to do what we can. I don't think it is an understatement to say that the previous version of ROOT, PAW, revolutionized the way we analyze data (think of it as a database optimized for the kind of work we do).
But there are times! The software (like ROOT) is like a high performance race car: if one thing is slightly out of whack... crash! I started this morning thinking I would take 10 minutes to finish up looking at a study on taus. I'd run the jobs before breakfast and they were done by the time I got into the office. Just had to look at 2 plots. First inkling that was going to be a bad day: the plots were there, but they weren't! Some funny error messages "R__unzip error: bad header" and a bunch of zeros! Ack! What to do?
Google the problem, of course. Unfortunately I couldn't find anyone else with the problem, but I did see that there had been 5 bug fix patches to the version of ROOT I was using. I downloaded those, installed, and built the tool. Now I had a real crash. Not just an error message, mind you, but a core file and everything else. I tried to rebuild, change options, everything. Nothing. Finally, I removed the patches and was back to the original error. I'd started this at about 10am, and it was now 4pm!!!
While trying to write up a bug report to send in to the experts I discovered something really weird. I could see the plot in the GUI, but not from the command line. Further investigation revealed that ROOT had written out a "directory entry" but no data! It is as if the icon appeared in your windows explorer for a picture, but when you clicked on it it said "Hey! There is no file!" Hopefully your operating system would never allow that to happen! Turns out ROOT did it without complaining.
Who knows why this happened. And why it happened for that one stupid plot (well, I know -- because it was the plot I wanted). At this point it was 6pm. I was still in a dark mood by 6:30 when I got home, but two beers out on a terrace with Paula seems to have fixed that.
I'll have to figure this out this weekend. Ugh. I hate ROOT.
napier's rods and integer reciprocals, sure would get you some respect, if this is what i think it is... (LIC-157)
Posted by: m. visaya | August 27, 2005 at 07:23 AM
ROOT is garbage as long as you want to use it like PAW. So I hate ROOT too. Interface just sucks. Look:
PAW:
PAW> h/file 80 my.rz
PAW> h/li
PAW> h/plot 100
ROOT:
TFile* f = new TFile("my.root","READ");
f.cd();
f.ls();
TH1F* h = (TH1F*)f->Get("This_is_my_histogram_with_incredibly_long_name_don_t_use_spaces_or_you_could_be_screwed");
h->Draw();
Now you print and you relized, sh*t the paper is grey.....
The amount ot typing and hence probability of typos is overwhelming making _interactive_ work almost impossible (one types all that in editor and then cuts&pastes to ROOT prompt).
They should split histogramming into completely independent package with nice user interface. The only common part between the histogram package & the rest of the ROOT should be persistancy model. That is one should be be able to fill & store some lightweight variant of histograms and ntuples to the file from one's analysis program and then be able to analyse the file produced using more advanced but dedicated package. That is something similar HBOOK and PAW (HBOOK being basic underlying library and PAW being fancy addon)
Posted by: jealous | August 27, 2005 at 09:29 AM
Scott Snyder, now at BNL, wrote a wrapper package around root which did exactly as you want. Make it look a lot more like PAW.
At the command line you could type the histogram name if you wanted and then the "->Draw()"... what would be great is if tab completion worked for that, but it doesn't. :(
Posted by: Gordon T Watts | August 27, 2005 at 06:21 PM
paradigm shifts, no need to ruin the foundation.
Posted by: m.visaya | August 27, 2005 at 11:36 PM
I hate ROOT too.
Some time ago I created a page just for that. It's at www.epalechamo.net/hate_root
Maybe you want to add some stuff to it...
Posted by: Javier | October 31, 2005 at 08:37 AM
Some addition...
Not even the persistency should be a part of the class. Even those things should be independent. The thing is that it is impossible to disentangle anything from anything because it's a big web of dependencies (some are hidden!)
ah, well... I know your post is old, but anyway...
Posted by: Javier | October 31, 2005 at 08:42 AM
Ha! Yeah. What C++ really needs is built in meta-data. That would make it much simpler to pull persistency apart from the class itself. Java, C#, python, etc., all have this now. Hopefully C++ will get it soon.
Posted by: Gordon Watts | October 31, 2005 at 01:52 PM