Hi Paolo,
If you look carefully to the output you get when running your 5 lines,
you will notice the following 2:
| Warning in <TGeoManager::dtor>: deleting previous geometry: /
| ===> , created
This means that when you read the geometry from file, your:
> TGeoManager *geo=new TGeoManager();
is deleted and a new TGeoManager class is created. Since you rely on
your geo object later to fetch some volume, you naturally get a crash.
So, either do as I adviced in my previous mail:
gSystem->Load("libGeom")
TGeoManager::Import("geomfile.root"); // this is static so you don't
//need an object to call it
TGeoManager *geo = gGeoManager
...
OR:
replace geo->GetVolume("EXPH") with gGeoManager->GetVolume("EXPH");
Regards,
Andrei
paolo maestro wrote:
> Hi ,
> I have regenerated the geometry file with the latest version of ROOT.
> The geometry file has been generated in the context of a VMC application
> using the TGeoMCGeometry class.
> Then in a new ROOT session I tried to re-open the file with
>
> gSystem->Load("libGeom")
> TGeoManager *geo=new TGeoManager();
> geo->Import("geomfile.root")
> TGeoVolume* EXPH=geo->GetVolume("EXPH");
> EXPH->Draw();
>
> But I still got a crash when trying to get the EXPH volume.
> I send you in attachment the geometry file.
> I would like to stress the fact that the same procedure works fine
> with ROOT 3.10.01 and in that case it's possible to draw the geometry
> with those 5 lines of code.
> Thanks
> Paolo
>
> Andrei Gheata wrote:
>
>> Hi Paolo,
>>
>> I have no idea why you get a segv, but the way to import the geometry is:
>> root[0] gSystem->Load("libGeom");
>> root[1] TGeoManager::Import("geomfile.root");
>> ...
>>
>> Try it this way. If you still get a crash, send me your geometry file.
>> It is possible that TGeo have some backward incompatibility related to
>> I/O. Otherwise, regenerate (if you still can) the geomfile.root with a
>> more recent version.
>>
>> Regards,
>> Andrei
>>
>> paolo maestro wrote:
>> > Hi rooters,
>> > I created a detector geometry in a world wolume called EXPH using the
>> > TGeo classes and exported it
>> > to a file geomfile.root.
>> > Using Root version 3.10.01 with the following code , I can draw the
>> > geometry
>> > previously saved in the file
>> >
>> > TGeoManager *geo=new TGeoManager();
>> > geo->Import("geomfile.root")
>> > TGeoVolume* EXPH=geo->GetVolume("EXPH");
>> > EXPH->Draw();
>> >
>> > I noticed that with version 3.10.02 and 4.xx , this simple code does
>> not
>> > work anymore
>> > and gives seg. violation at the third line (of course for all the Root
>> > version, I created a related geomfile.root )
>> > when I'm trying to get the world volume.
>> > What I'm doing wrong ? Which changes do I have to apply?
>> > Thanks
>> >
>> > Paolo
>> >
>> >
>> > --
>> > Paolo Maestro
>> > Universita' di Siena-INFN
>> > Phone ++39-050-2214349
>> > ++39-050-2214356
>> > Fax ++39-050-2214317
>> >
>> >
>>
> --
> Paolo Maestro
> Universita' di Siena-INFN
> Phone ++39-050-2214349
> ++39-050-2214356
> Fax ++39-050-2214317
>
>
This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:07 MET