Re: ROOT & GEANT

Alexander Zvyagin (zvyagin@mx.ihep.su)
Tue, 24 Feb 1998 13:22:45 GMT+03:00


IHEP, Protvino, Russia, 24-FEB-1998

Dear ALL!

Creation of ROOT geometry is simpler than creation of GEANT one. So it may be
good to change GEANT geometry description to ROOT style.

I managed to write some code
( http://gams.ihep.su/~zvyagin/home/ROOT_GEANT/1998-02-24/ROOT_GEANT.c )
that produces GEANT geometry from TGeometry. It works with very simple
geometries. But it WORKS. See
http://gams.ihep.su/~zvyagin/home/ROOT_GEANT/1998-02-24/test/GEANT/

One problem stops me. I do not know how to insert correctly
in mother TNode several identical son-TNodes. This is GSPOS level of GEANT
calls. The next code is bad:

TNode *mother=....; // mother node.
mother->cd();
TNode *son=...; // pointer to node that we want to insert several times
son->SetParent(NULL);
for( int j=0; j<son_nodes_amount; j++ )
{
TNode *son_node = (TNode*) son->Clone(); // The problem is here.
mother->GetListOfNodes->Add(cell_node);
char name[111];
sprintf(name,"n%d",j);
son_node->SetName(name);
son_node->SetPosition(....);
son->SetParent(mother);
}

The problem is in TNode->Clone(). See
http://root.cern.ch/root/roottalk/roottalk98/0217.html
The call time of TNode->Clone() depends strongly on geometry.

At present time I don not know how to solve the problem...

I belive that other steps of this work (in automatic creation of GEANT geometry
from ROOT TGeometry) are simpler.
Step I. GEANT::GSVOLU does not place volume to mother one.
but
ROOT::TNode do it.
Step II. We need add some new classes or modify the current ones.
Example: GEANT::GSPOS uses "volume copy number", geant material has
"radiation length", "absorbtion length".
See http://gams.ihep.su/~zvyagin/home/ROOT_GEANT/1998-02-24/TNode_G.h
Step III. Something else...

P.S. I hope that GEANT4 will solve a lot of problems ...