95 lines
3.1 KiB
FortranFixed
95 lines
3.1 KiB
FortranFixed
|
|
SUBROUTINE UGINIT
|
|
*
|
|
* To initialise GEANT/USER program and read data cards
|
|
*
|
|
#include "calor.inc"
|
|
#include "celoss.inc"
|
|
#include "histo.inc"
|
|
#include "geant321/gckine.inc"
|
|
#include "geant321/gcbank.inc"
|
|
*
|
|
CHARACTER*20 filnam
|
|
*
|
|
* *** Define the GEANT parameters
|
|
CALL GINIT
|
|
*
|
|
* *** default values for histo
|
|
do ih = 1,MaxHist
|
|
histo(ih) = .false.
|
|
enddo
|
|
*
|
|
* *** Calor definition
|
|
CALL FFKEY('CALOR',NbAbsor,4,'MIXED')
|
|
CALL FFKEY('MATE' ,materAbs(1),MaxAbs,'INTEGER')
|
|
CALL FFKEY('THICK',thickAbs(1),MaxAbs,'REAL')
|
|
* *** production cuts (bcute, dcute and ppcutm) for each absorber
|
|
CALL FFKEY('CUTPR',prodcut(1) ,4*MaxAbs,'REAL')
|
|
* *** histograms
|
|
CALL FFKEY('HISTO',idhist,5,'MIXED')
|
|
* *** max allowed step size
|
|
CALL FFKEY('STEPMX',stepmax,1,'REAL')
|
|
*
|
|
* *** read data cards
|
|
PRINT *, 'G3 > gives the filename of the data cards to be read:'
|
|
READ (*,'(A)') filnam
|
|
IF (filnam.EQ.' ') filnam = 'run01.dat'
|
|
OPEN (unit=5,file=filnam,status='unknown',form='formatted')
|
|
*
|
|
* fileName for histograms, must be 1st data card !
|
|
fileName = 'testem3.paw'
|
|
READ(5,98)key,spaces,fileName
|
|
98 FORMAT(A4,A2,A25)
|
|
|
|
CALL GFFGO
|
|
*
|
|
* *** check size of arrays
|
|
if (NbAbsor.gt.MaxAbs) then
|
|
write (6,51) NbAbsor, MaxAbs
|
|
NbAbsor = MaxAbs
|
|
endif
|
|
if (NbLayer.gt.MaxLay) then
|
|
write (6,52) NbLayer, MaxLay
|
|
NbLayer = MaxLay
|
|
endif
|
|
51 FORMAT (/,5x,'warning (uginit): NbAbsor= ',I2,' truncated to ',I2)
|
|
52 FORMAT (/,5x,'warning (uginit): NbLayer= ',I3,' truncated to ',I3)
|
|
|
|
write(6,99) fileName
|
|
99 FORMAT(/,15x,'histogram file --> Name: ',A25)
|
|
|
|
CALL GZINIT
|
|
CALL GPART
|
|
CALL GPIONS
|
|
*
|
|
* *** overwrite ITRTYP for ion C12
|
|
JPA = LQ(JPART-67)
|
|
Q(JPA+6) = 8.0
|
|
*
|
|
CALL GDINIT
|
|
*
|
|
* *** Geometry and materials description
|
|
CALL UGEOM
|
|
*
|
|
* *** Energy loss and cross-sections initialisations
|
|
CALL GPHYSI
|
|
*
|
|
CALL GPRINT('MATE',0)
|
|
CALL GPRINT('TMED',0)
|
|
CALL GPRINT('VOLU',0)
|
|
*
|
|
* *** some initialisation
|
|
do k=1,MaxAbs
|
|
sumEdep(k) = 0.
|
|
sumTrck(k) = 0.
|
|
su2Edep(k) = 0.
|
|
su2Trck(k) = 0.
|
|
enddo
|
|
*
|
|
do k=1,MaxPlanes
|
|
EnerFlow(k) = 0.
|
|
EleakLat(k) = 0.
|
|
enddo
|
|
*
|
|
END
|