TGeoManager::Import trouble with ROOT 5.15/02?

Hi Rooters

I’m working on a Mandriva 2006 64 bits Linux box. GCC version is 4.0.1 and in order to build ROOT I had to modify the Makefile.linuxx8664gcc file in order to use gfortan instead of g77.

I was working on 5.14/00b version and everything was fine. When I moved to 5.15/02 version and tried to run the tutorials/geom/geomAtlas.C script, I had the following error message:

accessing atlas.root file from root.cern.ch/files
Info: TGeoManager::Import : Reading geometry from file: root.cern.ch/files/atlas.root
Error in TGeoManager::Import: Cannot open file
Error: illegal pointer to class object gGeoManager 0x0 1170 geomAtlas.C:16:
*** Interpreter error recovered ***

It looks like TGeoManager::Import failed. I have the same problem with the geomAlice.C script
I built 5.14/00b exactly the same way than 5.15/02 and had no trouble with 5.14/00b

Any idea?
Thanks

If you installed from source yourself, did you run “make map” ?
It looks like the plugin manager cannot find teh class TGeoManager.
Also try
gSystem->Load(“libGeom”);
before calling TGeoManager.

Rene

Hi René

I tried the 2 methods you suugested me and both failed.

  1. make map. I rebuilt from scratch (untaring and everything) and issued the following commands after the configure and its arguments.
    gmake
    gmake map
    gmake install

before I used to do (and it worked on version 5.14)
gmake
gmake cintdlls
gmake install

By the way, what is the difference between “gmake map” and “gmake cintdlls”?

  1. loading “by hand” the library before executing the script. I received the same error message I told in the previous post when trying to execute the script.

Some elements are quite strange. If, before loading the library using gSystem->Load(“libGeom”), I type gGeo and use “tab” for autocompletion, I receive only one suggestion “gGeometry”. After loading the library, I have the 3 suggestions “gGeometry” “gGeoIdentity” and “gGeoManager”. So it seems like the library is indeed correctly loaded.
However the pointer gGeoManager is null:
cout << gGeoManager << endl;
returns 0
(other pointers on global variables, for instance gSystem, return a correct answer)

Another test:

  1. starting root
  2. type gGeo + “tab” returns gGeometry (fine, the library is not loaded),
  3. .x geomAlice.C failed with the message I described in my previous post
  4. type gGeo + “tab” returns gGeometry, gGeoManager and gGeoIdentity

So it looks like the plugin manager worked (since nowhere in the script there is an explicit call to load the libGeom), it is just that the pointer gGeoManager is null.

LAST MINUTE: I may have found the bug looking at the Import method in TGeoManager.cxx. The instruction:

TFile *f = TFile::Open(“http://root.cern.ch/files/atlas.root”)

failed (f returns a null pointer) and as a side effect gGeoManager remains to 0. I switched to the version 5.14 and the same instructions TFile *f … worked. This is probably due to the new I/O directory sheme as mentionned in the development note?

Regards

Matthieu,

Do you mean that you run the following one line session

TFile *f = TFile::Open("http://root.cern.ch/files/atlas.root")
you get f=0 ?

From which system are you running? Do you have a network connection?

Rene

Hi René

Yes, I just typed this one line session. And “f” is set to 0.
So this is not related to “TGeoManager”. My system is described in the first post:
Mandriva 2006 64 bits, gcc 4.01, Xeon 560.

I do have network connection, that is why the single session line worked on root 5.14 (f is not 0). I built root using the same script for 5.14 and 5.15 (except the directory for finale installation changed) and on the same machine. Since it may be a side effect due to all modules I build, I join the script in the attachment.

best regards

Sorry, the script didn’t get through because of the “.csh” extension. I send it back with .txt extension
build_root_5.15.txt (1.5 KB)

Matthieu,

I tested this statement on several systems with gcc4.01
on 32 or 64 bits machines. I do not see any problem when accessing
this file. I suspect a network authorization problem on your system.
Could you import the file on your machine and simply do

TFile::Open("atlast.root"); If it succeeds, it will be an authorization problem.

I would like to know if other people see the problem too,
or to be more positive, if you succeed with a simple session like

root > TFile *f = TFile::Open("http://root.cern.ch/files/atlas.root")
Rene

Hi René

I tried using different methods to download on my machine the file root.cern.ch/files/atlas.root but I failed each time.
For instance using konqueror, I have the messge “Problème interne du serveur root.cern.ch/files/atlas.root”. I guessed Apache would not let me download the file.

Is there another way to get the file so that I can try your test?
Thanks

Could you try the following small session?

root > TFileMerger fm; root > fm.Cp("http://root.cern.ch/files/atlas.root","atlas.root") root > TFile::Open("atlas.root")
Rene

Hello René

Here is the output I have using Root 5.15

root [0] TFileMerger fm;
root [1] fm.Cp(“http://root.cern.ch/files/atlas.root","atlas.root”)
Error in TFileMerger::Cp: cannot open source file root.cern.ch/files/atlas.root
(Bool_t)0

And under Root 5.14 (it works!):

root [0] TFileMerger fm;
root [1] fm.Cp(“http://root.cern.ch/files/atlas.root","atlas.root”)
[TFile::Cp] Total 3.99 MB |====================| 100.00 % [2.5 MB/s]
(Bool_t)1

Using the atlas.root I got from the root 5.14 /TFileMerger, I tried
TFile::Open(“atlas.root”) on root 5.15 and it works.

So it looks like I have trouble accessing root file with an URL using root 5.15 on my platform.