Hi Rene et al,
On Fri, 2006-03-31 at 08:51 +0200, Rene Brun wrote:
> You are using the wrong classes to read the geometry.
> See an example below to draw the Alice geometry.
>
> Rene Brun
>
> {
> TGeoManager::Import("alice.root");
What's actually stored in the file `alice.geom' attached to Jochens mail, is _not_ a `TGeoManager' object, but a `TGeometry' object:
root [0] TFile* f = TFile::Open("alice.geom") root [1] f->ls() TFile** alice.geom TFile* alice.geom KEY: TGeometry AliceGeom;1 Galice Geometry for Hits root [2] TGeoManager::Import("alice.geom") Info: TGeoManager::Import : Reading geometry from file (class TGeoManager*)0x0
Perhaps what you want is something like
void SetAtt(TNode* n) { std::cout << "Processing " << n->GetName() << std::endl; Color_t c = (n->GetName()[0] == 'L' ? 2 : 4); n->SetLineColor(c); n->SetFillColor(c); n->SetFillStyle(3001); n->SetVisibility(kTRUE); TList* l = n->GetListOfNodes(); TIter next(l); TNode* nn = 0; while ((nn = static_cast<TNode*>(next()))) SetAtt(nn); } void geom() { TCanvas* c = new TCanvas("C", "C"); c->SetFillColor(1); TFile* f = TFile::Open("alice.geom"); TGeometry* g = static_cast<TGeometry*>(f->Get("AliceGeom")); TList* l = g->GetListOfNodes(); TNode* nn = 0; TIter next(l); while ((nn = static_cast<TNode*>(next()))) SetAtt(nn); g->Draw(); g->ls(); }
Yours,
-- ___ | Christian Holm Christensen |_| | ------------------------------------------------------------- | | Address: Sankt Hansgade 23, 1. th. Phone: (+45) 35 35 96 91 _| DK-2200 Copenhagen N Cell: (+45) 24 61 85 91 _| Denmark Office: (+45) 353 25 404 ____| Email: cholm_at_nbi.dk Web: www.nbi.dk/~cholm | |Received on Fri Mar 31 2006 - 16:21:24 MEST
This archive was generated by hypermail 2.2.0 : Mon Jan 01 2007 - 16:31:58 MET