[ROOT] Evaluation of the new ROOT Geometry package

From: Rene Brun (Rene.Brun@cern.ch)
Date: Thu Mar 21 2002 - 08:52:08 MET


Following my mail yesterday about the new ROOT geometry modeller, I have
received many requests for more information. I will not reply to
individual mails. Instead, I am posting the procedure to follow if you
want to participate to the evaluation phase.

A first remark. The new geometry modeller is not a replacement for Geant3
or Geant4. It is only a geometry modeller, no physics in.
But, we are hoping in a second phase to interface it to these packages 
(+Fluka).

The first version of the code will be released in a few weeks in
the development version 3.03. Meanwhile, we would be happy to test
the system with as many real configurations as possible.
To test the new package, we have developed a variant of the existing g2root
utility that generates automatically the C++ code for the modeller
starting from a Geant3 geometry file (Zebra format).

In order to test the performance of the sub-system "Where am I", "distance
to surface", we would like also to collect the result of a simulation
with the standard physics event that you use in your experiment. We also use
this file to compare the results of Geant3 with the package point per point.

I have prepared a small Fortran routine that can automatically generate
the info we are looking for (see file grecord.f in the attachment).
This routine must be compiled and linked with your Geant3 application.
It must be called from GUSTEP with:
    call grecord

This routine will create a file containing the geometry as well another
file with the info generated in GUSTEP. It would be nice if you could 
run with this call to grecord activated to generate one million steps.
The program will stop automatically once one million points will have
been generated.
Two files are produced:
  -mygeom.geom with the geometry (a few MBytes maximum)
  -mygeom.hbook a PAW ntuple with the GUSTEP info ( around 40 Mbytes)

If you want to participate to the evaluation, generate these two files
and let me know where I can access them. We will communicate to you
the results of the benchmark compared to the standard Geant3.
We also intend to apply the same procedure for Geant4 later.

Note that, we already have the 4 LHC detector geometries.

Rene Brun, Andrei & Mihaela Gheata

      SUBROUTINE grecord
*KEEP,GCFLAG.
      COMMON/GCFLAG/IDEBUG,IDEMIN,IDEMAX,ITEST,IDRUN,IDEVT,IEORUN
     +        ,IEOTRI,IEVENT,ISWIT(10),IFINIT(20),NEVENT,NRNDM(2)
      COMMON/GCFLAX/BATCH, NOLOG
      LOGICAL BATCH, NOLOG
C
      INTEGER       IDEBUG,IDEMIN,IDEMAX,ITEST,IDRUN,IDEVT,IEORUN
     +        ,IEOTRI,IEVENT,ISWIT,IFINIT,NEVENT,NRNDM
C
*KEEP,GCKINE.
      COMMON/GCKINE/IKINE,PKINE(10),ITRA,ISTAK,IVERT,IPART,ITRTYP
     +      ,NAPART(5),AMASS,CHARGE,TLIFE,VERT(3),PVERT(4),IPAOLD
C
      INTEGER       IKINE,ITRA,ISTAK,IVERT,IPART,ITRTYP,NAPART,IPAOLD
      REAL          PKINE,AMASS,CHARGE,TLIFE,VERT,PVERT
*KEEP,GCTRAK.
      INTEGER NMEC,LMEC,NAMEC,NSTEP ,MAXNST,IGNEXT,INWVOL,ISTOP,MAXMEC
     + ,IGAUTO,IEKBIN,ILOSL, IMULL,INGOTO,NLDOWN,NLEVIN,NLVSAV,ISTORY
     + ,MAXME1,NAMEC1
      REAL  VECT,GETOT,GEKIN,VOUT,DESTEP,DESTEL,SAFETY,SLENG ,STEP
     + ,SNEXT,SFIELD,TOFG  ,GEKRAT,UPWGHT
      REAL POLAR
      PARAMETER (MAXMEC=30)
      COMMON/GCTRAK/VECT(7),GETOT,GEKIN,VOUT(7),NMEC,LMEC(MAXMEC)
     + ,NAMEC(MAXMEC),NSTEP ,MAXNST,DESTEP,DESTEL,SAFETY,SLENG
     + ,STEP  ,SNEXT ,SFIELD,TOFG  ,GEKRAT,UPWGHT,IGNEXT,INWVOL
     + ,ISTOP ,IGAUTO,IEKBIN, ILOSL, IMULL,INGOTO,NLDOWN,NLEVIN
     + ,NLVSAV,ISTORY
      PARAMETER (MAXME1=30)
      COMMON/GCTPOL/POLAR(3), NAMEC1(MAXME1)
C
*KEEP,GCVOLU.
      COMMON/GCVOLU/NLEVEL,NAMES(15),NUMBER(15),
     +LVOLUM(15),LINDEX(15),INFROM,NLEVMX,NLDEV(15),LINMX(15),
     +GTRAN(3,15),GRMAT(10,15),GONLY(15),GLX(3)
C
      INTEGER NLEVEL,NAMES,NUMBER,LVOLUM,LINDEX,INFROM,NLEVMX,
     +        NLDEV,LINMX
      REAL GTRAN,GRMAT,GONLY,GLX
*-----------------------------------------------------------------------
      save ifirst
      data ifirst/0/
      data idn/1111/

      if (ifirst.eq.0) then
         call hcdir('//PAWC',' ')
         call hropen(22,'TEST','mygeom.hbook','N',1024,istat)
         call hbset('BSIZE',4096,istat)
         call hbnt(idn,'HCWN',' ')
         call hbname(idn,'vect',vect,'vect(7)')
         call hbname(idn,'ievent',ievent,'ievent')
         call hbname(idn,'itra',itra,'itra')
         call hbname(idn,'tofg',tofg,'tofg')
      endif
      ifirst = ifirst + 1
      if (ifirst.le.1000000) then
         if (mod(ifirst,10000).eq.0) then
            print *,'You have generated ',ifirst,' steps'
         endif
         call hcdir('//PAWC',' ')
         call hfnt(idn)
      else
         call hcdir('//PAWC',' ')
         call hcdir('//TEST',' ')
         ieotri = 1
         ieorun = 1
         print *,'Closing the gustep mygeom.hbook file'
         iswit(6) = 0
         call hprint(idn)
         call hrout(idn,icycle,' ')
         call hrendc('TEST')
         close(22)
         print *, 'Creating the geometry file mygeom.geom'
         call grfile(22,'mygeom.geom','on')
         stop
      endif
      end



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:46 MET