119 lines
3.5 KiB
Plaintext
119 lines
3.5 KiB
Plaintext
HIJING interface
|
||
----------------
|
||
|
||
Khaled Abdel-Waged
|
||
--------------------
|
||
|
||
version 0.0, 1-11-2012
|
||
----------------------
|
||
|
||
>Installation requirements
|
||
--------------------------
|
||
|
||
The Geant4 interface to HIJING uses the following software tools and packages:
|
||
|
||
1. HIJING (available at fttp://nta0.lbl.gov/pub/xnwang/hijing)
|
||
2. The following Geant4 versions:
|
||
− ver.9.5 or above
|
||
|
||
The interface and original HIJING code have been compiled and tested using:
|
||
• gcc 4.1.2 with gfortran (FORTRAN95) and GNUmake)
|
||
|
||
Operating systems used for this test is:
|
||
Red Hat Linux 4.1.2-64
|
||
|
||
|
||
>Changes in the Fortran code
|
||
----------------------------
|
||
|
||
1) The main subroutines
|
||
SUBROUTINE HIJSET(EFRM, FRAME, PROJ, TARG, IAP, IZP, IAT, IZT)
|
||
is replaced with
|
||
SUBROUTINE HIJSET(EFRM)
|
||
|
||
SUBROUTINE HIJING (FRAME, BMIN, BMAX)
|
||
is replaced with
|
||
SUBROUTINE HIJING (BMIN, BMAX)
|
||
|
||
|
||
The input variables are directly inserted into the following common block:
|
||
|
||
COMMON/HIPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
|
||
Projectile:
|
||
IHNT2(1)=IAP // Nucleus mass number
|
||
or IHNT2(1)=1 //Hadron
|
||
IHNT2(2)=IZP //charge
|
||
IHNT2(5)=0 //id code
|
||
Target:
|
||
IHNT2(3)=IAT
|
||
IHNT2(4)=IZT
|
||
IHNT2(6)=0 //id Target (Fixed)
|
||
Rest Mass:
|
||
HINT1(8)= //projectile
|
||
HINT1(9)= //Target
|
||
|
||
2) In subroutines HIJSET and HIJING,
|
||
|
||
Since Geant4 hadronic cascade models always works in the LABoratory frame
|
||
|
||
the statement Frame=”LAB” is inserted.
|
||
|
||
|
||
3)Random number generator
|
||
|
||
The two random generator functions become one!
|
||
|
||
This is done by replacing
|
||
RAN(NSEED) with RLU(0) in hijing1.383.f
|
||
|
||
|
||
>Consequences of conversion from f77 (g77) to gfortran
|
||
------------------------------------------------------
|
||
|
||
When running HIJING code in gfortran directly, the execution is blocked.
|
||
This problem is solved by the following changes
|
||
|
||
1) You have to add in the GNUmake file, the line
|
||
|
||
FFLAGS=-fno-automatic
|
||
|
||
This treats each program unit as if the SAVE statement were specified
|
||
for every local variable and array referenced in it.
|
||
|
||
|
||
2) Problem related to the function ROMG(x) in hijing1.383.f:
|
||
|
||
FUNCTION ROMG(X)
|
||
C This gives the eikonal function from a table
|
||
C calculated in the first call
|
||
DIMENSION FR(0:1000)
|
||
DATA I0/0/
|
||
|
||
COMMON/EIKONAL/FR !New->Khaled
|
||
|
||
IF(I0.NE.0) GO TO 100
|
||
DO 50 I=1,1001
|
||
XR=(I-1)*0.01
|
||
FR(I-1)=OMG0(XR)
|
||
50 CONTINUE
|
||
100 I0=1
|
||
IF(X.GE.10.0) THEN
|
||
ROMG=0.0
|
||
RETURN
|
||
ENDIF
|
||
IX=INT(X*100)
|
||
ROMG=(FR(IX)*((IX+1)*0.01-X)+FR(IX+1)*(X-IX*0.01))/0.01
|
||
RETURN
|
||
END
|
||
|
||
Our analysis shows that the array FR() is not saved in the subsequent calls of the function ROMG().
|
||
Therefore, the statement “COMMON/EIKONAL/FR” is inserted, as shown above.
|
||
|
||
|
||
>Interface design
|
||
-----------------
|
||
|
||
The use of HIJING physics in Geant4 has resulted in the introduction of a new event model (G4HIJING_Model).
|
||
The G4HIJING_Model class is derived from G4HadronicInteraction, and is defined within the Geant4 user physics
|
||
list if access to HIJING physics is required. It controls initialisation of HIJING through common block variables.
|