problem2 with g2root

Alexander Zvyagin (zvyagin@mx.ihep.su)
Fri, 27 Feb 1998 07:48:48 GMT+03:00


IHEP, Protvino, Russia, 27-FEB-1998

Dear ALL!

I have GEANT3 program (the FULL fortran code is at the end of the E-mail)
that produce RZ-file.

Then I run g2root (at this case it works) and convert GEANT geometry
to root one.

The problem is that this two geometries arn't equal!
Root geometry does not contain shape PIN.

Why?

P.S. All files (with g.rz file) are in
http://gams.ihep.su/~zvyagin/home/ALICE/work/test/

Thanks in advance,
Alexander Zvyagin.

-------------------------------------------------------------------------------
File g.f
******************************************************************************

PROGRAM MAIN

PARAMETER (NWGEAN=1000000,NWPAW=1000000)
COMMON/GCBANK/GEANT(NWGEAN)
COMMON/PAWC/PAW(NWPAW)

CALL GPAWPP(NWGEAN,NWPAW)

END

*****************************************************************************

SUBROUTINE GUTREV
C.
C. *
C. * User routine to control tracking of one event
C. *
C. * Called by GRUN
C. *
C.
CALL GTREVE
C
END

*****************************************************************************

SUBROUTINE GUTRACK
CALL GTRACK
END

*****************************************************************************

SUBROUTINE QNEXT
END

******************************************************************************

SUBROUTINE UGINIT
CALL GINIT
* CALL GFFGO
CALL GZINIT
CALL GPART
CALL GMATE
CALL UGEOM
CALL GPHYSI

CALL GRFILE(21,'g.rz','ON')
END

******************************************************************************

SUBROUTINE UGEOM
IMPLICIT NONE
real max_displ_for_mult_scat ,
, max_fract_energy_loss_step ,
, boundary_precision ,
, min_step_energy_loss__mult_scat ,
, magnetic_field ,
, field_max ,
, angle_max ,
, cell_size ,
, cell_length ,
, crystal_length ,
, air_thikness ,
, wrap_thikness ,
, PIN_size ,
, PIN_length ,
, par(3) ,
, x,y,z

INTEGER sensitive_volume ,
, ifield ,
, flag

max_displ_for_mult_scat = 1.
max_fract_energy_loss_step = 0.05
boundary_precision = 1e-3
min_step_energy_loss__mult_scat= 0.001
magnetic_field = 0.
field_max = 0.
angle_max = 10.
sensitive_volume = 0
ifield = 0

crystal_length = 18.
air_thikness = 0.3
wrap_thikness = 0.2
PIN_length = 0.5
PIN_size = 1.5
cell_size = 2.2
cell_length = crystal_length+wrap_thikness+
, PIN_length

CALL GSTMED(1,'AIR $',15, sensitive_volume, ifield,
, field_max, angle_max, max_displ_for_mult_scat,
, max_fract_energy_loss_step, boundary_precision,
, min_step_energy_loss__mult_scat, 0, 0 )

par(1) = 50.
par(2) = 50.
par(3) = 50.
CALL GSVOLU('PHOS','BOX ',1,par,3,flag)

par(1) = cell_size/2
par(2) = cell_size/2
par(3) = cell_length/2
CALL GSVOLU('CELL','BOX ',1,par,3,flag)

par(1) = cell_size/2-air_thikness
par(2) = cell_size/2-air_thikness
par(3) = crystal_length/2+wrap_thikness/2
CALL GSVOLU('WRAP','BOX ',1,par,3,flag)

par(1) = cell_size/2-air_thikness-wrap_thikness
par(2) = cell_size/2-air_thikness-wrap_thikness
par(3) = crystal_length/2
CALL GSVOLU("CRST","BOX ",1,par,3,flag)

par(1) = PIN_size/2
par(2) = PIN_size/2
par(3) = PIN_length/2
CALL GSVOLU('PIN ','BOX ',1,par,3,flag)

x = 0.
y = 0.
z = -wrap_thikness/2
CALL GSPOS('CRST',1,'WRAP',x,y,z,0,'ONLY')

x = 0.
y = 0.
z = PIN_length/2
CALL GSPOS('WRAP',1,'CELL',x,y,z,0,'ONLY')

x = 0.
y = 0.
z = -crystal_length/2-wrap_thikness/2
CALL GSPOS('PIN ',1,'CELL',x,y,z,0,'ONLY')

CALL GSPOS('CELL',1,'PHOS',0.,0.,0.,0,'ONLY');

CALL GPMATE(0)
CALL GPTMED(0)
CALL GPVOLU(0)

CALL GGCLOS
END

******************************************************************************

SUBROUTINE UGLAST
CALL GLAST
END

******************************************************************************

//File g.C
void g()
{
//
// This file has been generated automatically via the root
// utility g2root from an interactive version of GEANT
// (see ROOT class TGeometry header for an example of use)
//
TMaterial *mat;
TMixture *mix;
TRotMatrix *rot;
TNode *Node, *Node1;

TGeometry *g = new TGeometry("g","g.C");

//-----------List of Materials and Mixtures--------------

mat = new TMaterial("mat1","HYDROGEN",1.01,1,.0708);
mat = new TMaterial("mat2","DEUTERIUM",2.01,1,.162);
mat = new TMaterial("mat3","HELIUM",4,2,.125);
mat = new TMaterial("mat4","LITHIUM",6.94,3,.534);
mat = new TMaterial("mat5","BERILLIUM",9.01,4,1.848);
mat = new TMaterial("mat6","CARBON",12.01,6,2.265);
mat = new TMaterial("mat7","NITROGEN",14.01,7,.808);
mat = new TMaterial("mat8","NEON",20.18,10,1.207);
mat = new TMaterial("mat9","ALUMINIUM",26.97999,13,2.7);
mat = new TMaterial("mat10","IRON",55.84999,26,7.869999);
mat = new TMaterial("mat11","COPPER",63.54,29,8.96);
mat = new TMaterial("mat12","TUNGSTEN",183.85,74,19.29999);
mat = new TMaterial("mat13","LEAD",207.19,82,11.35);
mat = new TMaterial("mat14","URANIUM",238.0299,92,18.95);
mat = new TMaterial("mat15","AIR",14.60999,7.3,.001205);
mat = new TMaterial("mat16","VACUUM",0,0,0);

//-----------List of Rotation matrices--------------

//-----------List of Volumes--------------

TBRIK *PHOS = new TBRIK("PHOS","PHOS","mat15",50,50,50);
TBRIK *CELL = new TBRIK("CELL","CELL","mat15",1.1,1.1,9.35);
TBRIK *WRAP = new TBRIK("WRAP","WRAP","mat15",.8,.8,9.1);
TBRIK *CRST = new TBRIK("CRST","CRST","mat15",.6,.6,9);
TBRIK *PIN_ = new TBRIK("PIN_","PIN_","mat15",.75,.75,.25);

//-----------List of Nodes--------------

Node1 = new TNode("PHOS1","PHOS1","PHOS");
Node1->cd();
TNode *Node2;
Node2 = new TNode("CELL1","CELL1","CELL",0,0,0,"");
Node2->cd();
TNode *Node3;
Node3 = new TNode("WRAP1","WRAP1","WRAP",0,0,.25,"");
Node3->cd();
Node = new TNode("CRST1","CRST1","CRST",0,0,-.1,"");
Node2->cd();
Node1->cd();
}