Import Geant4 1.0.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-08 15:28:20 +02:00
parent aaa409b6ee
commit ca1c8cb059
2995 changed files with 106830 additions and 299600 deletions
@@ -0,0 +1,27 @@
testem3.cra is the geant3 equivalent of TestEm3
% cd geant3
% gmakeB to make an executable (Batch version)
% gmakeT to make an executable (inTeractive version)
To execute:
% cd geant3
% $G4SYSTEM/testem3.xb (for batch) or testem1.xt (for interactive)
The program will ask:
G3 > gives the filename of the data cards to be read:
run01.dat (runNN.dat is the equivalent of the G4 runNN.mac)
testem3 produce an Ntuple which is saved as testem3.ntupl if ISWIT(2)=1
Content of this Ntuple:
EAbs0 = energy deposit in absorber(0) per event
LAbs0 = charged track length in absorber(0) per event
..........
EAbsN = energy deposit in absorber(N) per event
LAbsN = charged track length in absorber(N) per event
+43
View File
@@ -0,0 +1,43 @@
#
# @(#) Script to build a Batch geant executable
#
set name=testem3
set extnam=" "
if ($G4SYSTEM == AIX-xlC) set extnam=-qextname
#
mkdir $G4SYSTEM
cd $G4SYSTEM
#
# Run patchy
#
cat > temp.cra << eocra
+USE,batch.
eocra
cat ../$name.cra >> temp.cra
#
ypatchy - $name temp $name - $name :go
rm temp.cra
#
# fortran compilation
#
fsplit $name.f
rm $name.f
hepf77 $extnam -c -g *.f
#
# Link
#
echo 'linking geant3+cernlib libraries ...'
#
hepf77 $extnam -g -o $name.xb *.o \
`cernlib geant321 pawlib graflib packlib mathlib kernlib`
#
#
chmod +x $name.xb
#
# cleanup
#
rm *.lis *.lst *.f *.o
echo 'done'
exit
+37
View File
@@ -0,0 +1,37 @@
#
# @(#) Script to build an inTeractive geant executable
#
set name=testem3
set extnam=" "
if ($G4SYSTEM == AIX-xlC) set extnam=-qextname
#
mkdir $G4SYSTEM
cd $G4SYSTEM
#
# Run patchy
#
ypatchy - $name ../$name $name - $name :go
#
# fortran compilation
#
fsplit $name.f
rm $name.f
hepf77 $extnam -c -g *.f
#
# Link
#
echo 'linking geant3+cernlib libraries...'
#
hepf77 $extnam -g -o $name.xt *.o \
`cernlib geant321 pawlib graflib packlib mathlib kernlib`
#
#
chmod +x $name.xt
#
# cleanup
#
rm *.lis *.lst *.f *.o
echo 'done'
exit
@@ -0,0 +1,17 @@
LIST
C
C Lead-liquidArgon 50 layers; electon 1 GeV
C
CALOR 2 (nbAbs) 50 (nbLay) 40. (calorYZ) 0. (field)
MATE 8 (lead) 5 (larg)
THICK 0.23(cm) 0.57 (cm)
TRIG 1000
KINE 3 (Itype) 1.0 (Ekine) 1000. (x0) 0. (y0) 0. (z0) 1. (ux) 0. (uy) 0. (uz)
DEBUG 10 5 100
SWIT 0 (draw) 1 (save)
CUTS 10.0e-6 (cutgam) 10.0e-6 (cutele) 3*10.e-3 (cutneu/had/muo)
2*10.0e-6 (bcute/m) 2*217.0e-6 (dcute/m)
ABAN 0
LOSS 1
HADR 0
TIME 2=1.
@@ -0,0 +1,17 @@
LIST
C
C Tungsten-Silicium 50 layers; electon 1 GeV
C
CALOR 2 (nbAbs) 50 (nbLay) 40. (calorYZ) 0. (field)
MATE 11 (W) 10 (Si)
THICK 0.20(cm) 0.03 (cm)
TRIG 100
KINE 3 (Itype) 1.0 (Ekine) 1000. (x0) 0. (y0) 0. (z0) 1. (ux) 0. (uy) 0. (uz)
DEBUG 10 5 100
SWIT 0 (draw) 1 (save)
CUTS 10.0e-6 (cutgam) 10.0e-6 (cutele) 3*10.e-3 (cutneu/had/muo)
2*10.0e-6 (bcute/m) 2*120.0e-6 (dcute/m)
ABAN 0
LOSS 1
HADR 0
TIME 2=1.
@@ -0,0 +1,21 @@
LIST
C
C Iron-Silicium 15 layers; electon 6, 8, 10, 12 GeV
C
C SICAPO Collaboration. CERN-PPE/91-218 Nov.91
C NIM A332 (85-90) Feb.93
C
CALOR 2 (nbAbs) 15 (nbLay) 40. (calorYZ) 0. (field)
MATE 7 (Fe) 10 (Si)
THICK 2.308(cm) 0.04 (cm)
TRIG 100
KINE 3 (Itype) 6.0 (Ekine) 1000. (x0) 0. (y0) 0. (z0) 1. (ux) 0. (uy) 0. (uz)
DEBUG 10 5 10
SWIT 0 (draw) 0 (save)
CUTS 10.0e-6 (cutgam) 10.0e-6 (cutele) 3*10.e-3 (cutneu/had/muo)
2*10.0e-6 (bcute/m) 2*541.e-6 (dcute/m)
C CUTS 10.0e-6 (cutgam) 541.e-6 (cutele)
ABAN 0
LOSS 1
HADR 0
TIME 2=1.
@@ -0,0 +1,21 @@
LIST
C
C Lead-Iron-Silicium 15 layers; electon 6, 8, 10, 12 GeV
C
C SICAPO Collaboration. CERN-PPE/91-218 Nov.91
C NIM A332 (85-90) Feb.93
C
CALOR 3 (nbAbs) 15 (nbLay) 40. (calorYZ) 0. (field)
MATE 8 (pb) 7 (Fe) 10 (Si)
THICK 1.3 (cm) 1.008 (cm) 0.04 (cm)
TRIG 100
KINE 3 (Itype) 6.0 (Ekine) 1000. (x0) 0. (y0) 0. (z0) 1. (ux) 0. (uy) 0. (uz)
DEBUG 10 5 10
SWIT 0 (draw) 0 (save)
CUTS 10.0e-6 (cutgam) 10.0e-6 (cutele) 3*10.e-3 (cutneu/had/muo)
2*10.0e-6 (bcute/m) 2*541.e-6 (dcute/m)
C CUTS 10.0e-6 (cutgam) 541.e-6 (cutele)
ABAN 0
LOSS 1
HADR 0
TIME 2=1.
@@ -0,0 +1,20 @@
LIST
C
C Lead-Silicium 10 layers; electon 2, 4, 6 GeV
C
C SICAPO Collaboration. NIM A345 (244-249) Oct.93
C
CALOR 4 (nbAbs) 10 (nbLay) 16. (calorYZ) 0. (field)
MATE 8 (pb) 12 (G10) 10 (Si) 12 (G10)
THICK 1.9 (cm) 0.02 (cm) 0.04 (cm) 0.1 (cm)
TRIG 500
KINE 3 (Itype) 6.0 (Ekine) 1000. (x0) 0. (y0) 0. (z0) 1. (ux) 0. (uy) 0. (uz)
DEBUG 10 5 10
SWIT 0 (draw) 0 (save)
CUTS 10.0e-6 (cutgam) 10.0e-6 (cutele) 3*10.e-3 (cutneu/had/muo)
2*10.0e-6 (bcute/m) 2*541.e-6 (dcute/m)
C CUTS 10.0e-6 (cutgam) 541.e-6 (cutele)
ABAN 0
LOSS 1
HADR 0
TIME 2=1.
@@ -0,0 +1,20 @@
LIST
C
C Iron-Silicium 10 layers; electon 2, 4, 6 GeV
C
C SICAPO Collaboration. NIM A345 (244-249) Oct.93
C
CALOR 4 (nbAbs) 10 (nbLay) 16. (calorYZ) 0. (field)
MATE 7 (Fe) 12 (G10) 10 (Si) 12 (G10)
THICK 3.57 (cm) 0.02 (cm) 0.04 (cm) 0.1 (cm)
TRIG 500
KINE 3 (Itype) 6.0 (Ekine) 1000. (x0) 0. (y0) 0. (z0) 1. (ux) 0. (uy) 0. (uz)
DEBUG 10 5 10
SWIT 0 (draw) 0 (save)
CUTS 10.0e-6 (cutgam) 10.0e-6 (cutele) 3*10.e-3 (cutneu/had/muo)
2*10.0e-6 (bcute/m) 2*541.e-6 (dcute/m)
C CUTS 10.0e-6 (cutgam) 541.e-6 (cutele)
ABAN 0
LOSS 1
HADR 0
TIME 2=1.
@@ -0,0 +1,17 @@
LIST
C
C LiquidArgon-Lead 2 layers; proton 500 MeV
C
CALOR 2 (nbAbs) 2 (nbLay) 1.6 (calorYZ) 0. (field)
MATE 5 (larg) 8 (lead)
THICK 0.4(cm) 0.4 (cm)
TRIG 1000
KINE 14 (Itype) 0.5 (Ekine) 1000. (x0) 0. (y0) 0. (z0) 1. (ux) 0. (uy) 0. (uz)
DEBUG 10 5 100
SWIT 0 (draw) 1 (save)
CUTS 10.0e-6 (cutgam) 10.0e-6 (cutele) 3*10.e-3 (cutneu/had/muo)
2*10.0e-6 (bcute/m) 2*455.0e-6 (dcute/m)
ABAN 0
LOSS 1
HADR 0
TIME 2=1.
@@ -0,0 +1,518 @@
+OPTION,MAPASM.
+ASM,23.
+USE,GCDES,TestEm3,T=EXE.
*
+EXE,CRA*.
*
+PAM,11,T=CARD,T=ATTACH. /cern/pro/src/car/geant321.car
+PATCH,TestEm3.
+DECK,BLANKDEK.
*
* TestEm3 2.00 /01 990723 13.00 GEANT EXAMPLES
*
* TEST PROGRAM FOR GEANT TEST
*
* Author M.Maire *********
*
*
* History
* -------
*
*
+KEEP,CALOR.
PARAMETER (MaxAbs = 10)
COMMON/CALOR/materAbs(MaxAbs),thickAbs(MaxAbs),NbAbsor,NbLayer,
& calorYZ,Field,thLayer,calorX,worldX,worldYZ
*
* NbAbsor = Number of Absorbers (data card CALOR)
* NbLayer = Number of Layers (data card CALOR)
* calorYZ = tranverse size of calor (cm) (data card CALOR)
* Field = magnetic field (tesla) (data card CALOR)
* materAbs(i) = Absorber material number. (data card MATE )
* thickAbs(i) = thickness of absorber (cm) (data card THICK)
*
* thLayer = total thickness of a layer (cm)
* calorX = total X-size of the calor (cm)
* worldX = total X-size of the world (cm)
* worldYZ = total YZ-size of the world (cm)
*
+KEEP,CELOSS.
COMMON/CELOSS/ EdepAbs(MaxAbs),TrckAbs(MaxAbs),
& sumEdep(MaxAbs),sumTrck(MaxAbs),
& su2Edep(MaxAbs),su2Trck(MaxAbs)
+DECK,main,if=batch.
PROGRAM main
*
*
PARAMETER (NGBANK=100000, NHBOOK=40000)
COMMON/GCBANK/Q(NGBANK)
COMMON/PAWC /H(NHBOOK)
*
CALL GZEBRA( NGBANK)
CALL HLIMIT(-NHBOOK)
*
* *** initialize HIGZ
CALL HPLINT(0)
*
* *** GEANT initialisation
CALL UGINIT
*
* *** Start events processing
CALL GRUN
*
* *** End of RUN
CALL UGLAST
*
STOP
END
+DECK,main,IF=-batch.
PROGRAM main
*
* GEANT main program. To link with the MOTIF user interface
* the routine GPAWPP(NWGEAN,NWPAW) should be called, whereas
* the routine GPAW(NWGEAN,NWPAW) gives access to the basic
* graphics version.
*
PARAMETER (NWGEAN=3000000, NWPAW=1000000)
COMMON/GCBANK/GEANT(NWGEAN)
COMMON/PAWC /PAW (NWPAW)
*
*
CALL GPAW (NWGEAN,NWPAW)
*
END
*
SUBROUTINE qnext
END
*
SUBROUTINE czopen
END
*
SUBROUTINE cztcp
END
*
SUBROUTINE czclos
END
*
SUBROUTINE czputa
END
+DECK,UGINIT
SUBROUTINE UGINIT
*
* To initialise GEANT/USER program and read data cards
*
+SEQ,CALOR,CELOSS.
+SEQ,GCKINE.
*
CHARACTER*20 filnam
*
* *** Define the GEANT parameters
CALL GINIT
* *** read data cards
PRINT *, 'G3 > gives the filename of the data cards to be read:'
READ (*,'(A)') filnam
IF (filnam.EQ.' ') filnam = 'testem3.dat'
OPEN (unit=5,file=filnam,status='unknown',form='formatted')
*
* *** Calor definition
CALL FFKEY('CALOR',NbAbsor,4,'MIXED')
CALL FFKEY('MATE' ,materAbs(1),MaxAbs,'INTEGER')
CALL FFKEY('THICK',thickAbs(1),MaxAbs,'REAL')
*
* *** read data cards
CALL GFFGO
*
CALL GZINIT
CALL GPART
*
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)
*
* *** Define user histograms
CALL UHINIT
*
* *** some initialisation
do k=1,MaxAbs
sumEdep(k) = 0.
sumTrck(k) = 0.
su2Edep(k) = 0.
su2Trck(k) = 0.
enddo
*
END
+DECK,UGEOM.
SUBROUTINE UGEOM
*
* *** Define user geometry set up
*
*
+SEQ,CALOR.
*
DIMENSION PAR(3)
DIMENSION Aair(2),Zair(2),Wair(2)
DIMENSION ACO2(2),ZCO2(2),WCO2(2)
DIMENSION AH2O(2),ZH2O(2),WH2O(2)
DIMENSION AG10(4),ZG10(4),WG10(4)
*
CHARACTER*4 volnam
CHARACTER*20 matnam
*
* *** Air compound parameters
DATA Aair/14.01, 16.00/
DATA Zair/ 7. , 8. /
DATA Wair/ 0.7 , 0.3 /
*
* *** CO2 compound parameters
DATA ACO2/12.01, 16.00/
DATA ZCO2/ 6. , 8. /
DATA WCO2/ 1. , 2. /
*
* *** Water compound parameters
DATA AH2O/ 1.01, 16.00/
DATA ZH2O/ 1. , 8. /
DATA WH2O/ 2. , 1. /
*
* *** G10 compound parameters
DATA AG10/ 1.01, 12.00, 16.00, 28.00/
DATA ZG10/ 1. , 6. , 8. , 14. /
DATA WG10/ 3. , 3. , 2. , 1. /
*
* *** Defines USER perticular materials
CALL GSMIXT( 1,'Air' , Aair ,Zair, 1.29E-3, 2 , Wair)
CALL GSMIXT( 2,'CO2 gas' , ACO2 ,ZCO2, 27.0E-3,-2 , WCO2)
CALL GSMATE( 3,'H2 Liquid', 1.01, 1., 0.0708 , 865., 790., 0,0)
CALL GSMIXT( 4,'Water' , AH2O ,ZH2O, 1.0 ,-2 , WH2O)
CALL GSMATE( 5,'Liquid Ar', 39.95, 18., 1.39 , 14.0, 84.0, 0,0)
CALL GSMATE( 6,'Aluminium', 26.98, 13., 2.7 , 8.9, 37.2, 0,0)
CALL GSMATE( 7,'Iron ', 55.85, 26., 7.87 , 1.76, 17.1, 0,0)
CALL GSMATE( 8,'Lead ',207.19, 82., 11.35 , 0.56, 18.5, 0,0)
CALL GSMATE( 9,'Uranium ',238.03, 92., 18.95 , 0.32, 12. , 0,0)
CALL GSMATE(10,'Silicium ', 28.09, 14., 2.33 , 9.36, 45.5, 0,0)
CALL GSMATE(11,'Tungsten ',183.85, 74., 19.30 , 0.35, 9.6, 0,0)
CALL GSMIXT(12,'NemaG10' , AG10 ,ZG10, 1.7 ,-4 , WG10)
*
*
* *** Defines USER tracking media parameters
IFIELD = 0
IF (Field.GT.0.) IFIELD = 3
FIELDM = 10*Field
TMAXFD = 10.0
STEMAX = 1000.
DEEMAX = 0.20
EPSIL = 0.001
STMIN = 0.010
*
do k=1,NbAbsor
CALL GSTMED( k,'absorber',materAbs(k), 0 ,IFIELD,FIELDM,TMAXFD,
* STEMAX,DEEMAX,EPSIL,STMIN, 0 , 0 )
enddo
*
nudef = NbAbsor+1
CALL GSTMED( nudef,'default' , 1 , 0 ,IFIELD,FIELDM,TMAXFD,
* STEMAX,DEEMAX,EPSIL,STMIN, 0 , 0 )
*
*
* *** calor dimensions
thLayer = 0.
do k=1,NbAbsor
thLayer = thLayer + thickAbs(k)
enddo
calorX = NbLayer*thLayer
worldX = 1.2*calorX
worldYZ = 1.2*calorYZ
*
* *** world
PAR(1) = worldX /2.
PAR(2) = worldYZ/2.
PAR(3) = worldYZ/2.
CALL GSVOLU('worl','BOX ',nudef,PAR,3,IVOL)
*
* *** calorimeter
PAR(1) = calorX /2.
PAR(2) = calorYZ/2.
PAR(3) = calorYZ/2.
CALL GSVOLU('calo','BOX ',nudef,PAR,3,IVOL)
CALL GSPOS ('calo',1,'worl',0.,0.,0.,0,'only')
*
* *** layers
CALL GSDVN ('layr','calo',NbLayer,1)
*
* *** absorbers
volnam = 'abs'
xfront = -0.5*thLayer
do k=1,NbAbsor
PAR(1) = thickAbs(k)/2.
PAR(2) = calorYZ/2.
PAR(3) = calorYZ/2.
volnam(4:4) = char(ichar('0')+k-1)
CALL GSVOLU(volnam,'BOX ',k,PAR,3,IVOL)
xcenter = xfront + 0.5*thickAbs(k)
CALL GSPOS (volnam,1,'layr',xcenter,0.,0.,0,'only')
xfront = xfront + thickAbs(k)
enddo
*
* *** Close geometry banks. (mandatory system routine)
CALL GGCLOS
*
* *** print geometry
PRINT 749
PRINT 751,NbLayer
do k=1,NbAbsor
call GFMATE (materAbs(k),matnam,dua,duz,dud,dur,dui,udu,idu)
PRINT 752,matnam,thickAbs(k)
enddo
PRINT 749
*
749 FORMAT(/ ,60(1H-),/)
751 FORMAT(1X,'The calorimeter is ',I2,' layers of:')
752 FORMAT(5X,A10,': ',F8.4,' cm')
*
* *** dessin
CALL GSATT ('*' ,'SEEN',1)
CALL GSATT ('layr','SEEN',0)
*
DO IX = 1,3
CALL GDOPEN (IX)
SCALE = 18./max(worldX,worldYZ)
PAXIS = 0.
SAXIS = 1.
CALL GDRAWC ('worl',IX,0.,10.,9.3,SCALE,SCALE)
CCC CALL GDAXIS (PAXIS,PAXIS,PAXIS,SAXIS)
CALL GDSCAL (10. , 0.3)
CALL GDCLOS
END DO
*
END
+DECK,UHINIT.
SUBROUTINE UHINIT
*
* To book the user's histograms
*
+SEQ,CALOR.
*
CHARACTER*5 chtags(20)
*
DATA chtags /'EAbs0','LAbs0','EAbs1','LAbs1','EAbs2','LAbs2',
+ 'EAbs3','LAbs3','EAbs4','LAbs4','EAbs5','LAbs5',
+ 'EAbs6','LAbs6','EAbs7','LAbs7','EAbs8','LAbs8',
+ 'EAbs9','LAbs9'/
*
CALL HBOOKN(1,'sum per event',2*NbAbsor,' ',4000,chtags)
*
END
+DECK,GUKINE
SUBROUTINE GUKINE
*
* Generates Kinematics for primary track
*
* Data card Kine : Itype Ekine x0 y0 z0 ux uy uz
*
+SEQ,GCBANK,GCFLAG,GCKINE.
+SEQ,CALOR.
*
DIMENSION VERTEX(3),PLAB(3)
*
* *** set/reset default kinematic
IF ((IKINE.LT.0).or.(abs(PKINE(2)).GT.0.5*worldX)) THEN
IKINE = ABS(IKINE)
PKINE(2) = -0.5*worldX
PKINE(3) = 0.
PKINE(4) = 0.
PKINE(5) = 1.
PKINE(6) = 0.
PKINE(7) = 0.
ENDIF
*
VERTEX(1) = PKINE(2)
VERTEX(2) = PKINE(3)
VERTEX(3) = PKINE(4)
*
CALL GSVERT(VERTEX,0,0,0,0,NVERT)
*
*
JPA = LQ(JPART-IKINE)
XMASS = Q(JPA+7)
PMOM = SQRT(PKINE(1)*(PKINE(1)+2*XMASS))
PLAB(1) = PMOM*PKINE(5)
PLAB(2) = PMOM*PKINE(6)
PLAB(3) = PMOM*PKINE(7)
*
CALL GSKINE(PLAB,IKINE,NVERT,0,0,NT)
*
* *** Kinematics debug
IF (IEVENT.EQ.1.OR.IDEBUG.NE.0) CALL GPRINT('KINE',0)
*
END
+DECK,GUTREV
SUBROUTINE GUTREV
*
* User routine to control tracking of one event
* Called by GRUN
*
+SEQ,CALOR,CELOSS
*
do k=1,NbAbsor
EdepAbs(k) = 0.
TrckAbs(k) = 0.
enddo
*
CALL GTREVE
*
END
+DECK,GUSTEP
SUBROUTINE GUSTEP
*
* User routine called at the end of each tracking step
*
+SEQ,GCFLAG.
+SEQ,GCKINE,GCKING,GCTRAK,GCTMED.
+SEQ,CALOR,CELOSS.
*
*
* *** Debug event and store tracks for drawing
IF (IDEBUG.NE.0) CALL GPCXYZ
IF ((ISWIT(1).EQ.1).AND.(CHARGE.NE.0.)) CALL GSXYZ
IF (ISWIT(1).EQ.2) CALL GSXYZ
*
* *** Something generated ?
IF(NGKINE.GT.0) CALL GSKING(0)
*
* *** Energy deposited and charged track length
IF (NUMED.LE.NbAbsor) THEN
if (DESTEP.NE.0.) EdepAbs(NUMED) = EdepAbs(NUMED) + DESTEP
if (CHARGE*STEP.NE.0.) TrckAbs(NUMED) = TrckAbs(NUMED) + STEP
ENDIF
*
END
+DECK,GUOUT
SUBROUTINE GUOUT
*
* User routine called at the end of each event
*
+SEQ,GCFLAG.
+SEQ,CALOR,CELOSS.
*
DIMENSION sumevent(2*MaxAbS)
CHARACTER*4 unit
*
* *** drawing
*
+self,if=-batch.
IF (ISWIT(1).NE.0) THEN
CALL GDHEAD (110110,'TestEm3',0.)
CALL GDSHOW (3)
CALL GDXYZ (0)
END IF
+self.
*
* ntuple: energies and track length per event
do k=1,NbAbsor
sumevent(2*k-1) = EdepAbs(k)
sumevent(2*k ) = TrckAbs(k)
enddo
CALL HFN(1,sumevent)
*
* cumul energy deposited and charged track length
do k=1,NbAbsor
sumEdep(k) = sumEdep(k) + EdepAbs(k)
sumTrck(k) = sumTrck(k) + TrckAbs(k)
*
su2Edep(k) = su2Edep(k) + EdepAbs(k)**2
su2Trck(k) = su2Trck(k) + TrckAbs(k)**2
enddo
*
* *** print
IF (ISWIT(1).NE.0) THEN
do k=1,NbAbsor
CALL GEVKEV (EdepAbs(k),Eunit,unit)
PRINT 751,k,Eunit,unit,TrckAbs(k)
enddo
print 749
ENDIF
749 FORMAT(/)
751 FORMAT(1X,'Absorber',I2,' : Energy deposit: ',F8.3,A4,
& ' Track length: ' ,F8.3,' cm')
*
END
+DECK,UGLAST
SUBROUTINE UGLAST
*
* Termination routine to print histograms and statistics
*
+SEQ,GCFLAG.
+SEQ,GCTRAK.
+SEQ,CALOR,CELOSS.
*
CHARACTER*20 matnam
CHARACTER*4 unitm,unitr
*
* *** mean energy deposit and track length
PRINT 749
PRINT 750,IEVENT
PRINT 751
fnorm = 1./IEVENT
do k=1,NbAbsor
call GFMATE (materAbs(k),matnam,dua,duz,dud,dur,dui,udu,idu)
aveEdep = fnorm*sumEdep(k)
rmsEdep = fnorm*sqrt(abs(IEVENT*su2Edep(k)-sumEdep(k)**2))
aveTrck = fnorm*sumTrck(k)
rmsTrck = fnorm*sqrt(abs(IEVENT*su2Trck(k)-sumTrck(k)**2))
*
CALL GEVKEV (aveEdep,Emean,unitm)
CALL GEVKEV (rmsEdep,Erms ,unitr)
PRINT 752,k-1,matnam,Emean,unitm,Erms,unitr,aveTrck,rmsTrck
enddo
PRINT 749
*
* *** geant termination
CALL GLAST
*
* *** close HIGZ
CALL HPLEND
*
* *** Save ntuple
IF (ISWIT(2).EQ.1) THEN
CALL HRPUT(0,'testem3.ntupl','N')
ENDIF
*
*
* *** formats
749 FORMAT(/ ,60(1H-),/)
750 FORMAT(1X,'Nb of events:',I6)
751 FORMAT(1X,'AbsNo Material',5X,'Energy deposit',14X,'Trck length')
752 FORMAT(I5,3X,A10,F8.3,A4,' +- ',F6.2,A4,F9.3,' cm +- ',F6.2,' cm')
*
END
+DECK,ffread,T=data.
LIST
CALOR 2 (nbAbs) 50 (nbLay) 40. (calorYZ) 0. (field)
MATE 8 (lead) 5 (larg)
THICK 0.23(cm) 0.57 (cm)
TRIG 1000
KINE 3 (Itype) 1.0 (Ekine) 1000. (x0) 0. (y0) 0. (z0) 1. (ux) 0. (uy) 0. (uz)
DEBUG 10 5 100
SWIT 0 (draw) 1 (save)
CUTS 10.0e-6 (cutgam) 10.0e-6 (cutele) 3*10.e-3 (cutneu/had/muo)
2*10.0e-6 (bcute/m) 2*217.0e-6 (dcute/m)
ABAN 0
LOSS 1
HADR 0
TIME 2=1.
+QUIT.