]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TFluka/fluscw_1mevn.f
Code is distributed via fluka_vmc
[u/mrichter/AliRoot.git] / TFluka / fluscw_1mevn.f
diff --git a/TFluka/fluscw_1mevn.f b/TFluka/fluscw_1mevn.f
deleted file mode 100644 (file)
index e08df1a..0000000
+++ /dev/null
@@ -1,288 +0,0 @@
-*$ CREATE FLUSCW.FOR
-*COPY FLUSCW
-*                                                                      *
-*=== fluscw ===========================================================*
-*                                                                      *
-      DOUBLE PRECISION FUNCTION FLUSCW
-     #(IJ,PLA,TXX,TYY,TZZ,WEE,XX,YY,ZZ,NREG,IOLREG,LLO,NSURF)
-      INCLUDE '(DBLPRC)'
-      INCLUDE '(DIMPAR)'
-      INCLUDE '(IOUNIT)'
-      SAVE
-      INCLUDE '(PAPROP)'
-      INCLUDE '(USRBIN)'
-      INCLUDE '(USRBDX)'
-      INCLUDE '(USRTRC)'
-      INCLUDE '(SCOHLP)'
-*
-*----------------------------------------------------------------------*
-*                                                                      *
-* This functions returns neutron, proton and pion  displacement damage *
-* weight factors.                                                      *
-*                                                                      *
-*----------------------------------------------------------------------*
-*                                                                      *
-*     Input variables:                                                 *
-*                                                                      *
-*           Ij = (generalized) particle code                           *
-*          Pla = particle momentum (if > 0), or kinetic energy (if <0 )*
-*    Txx,yy,zz = particle direction cosines                            *
-*          Wee = particle weight                                       *
-*     Xx,Yy,Zz = position                                              *
-*         Nreg = (new) region number                                   *
-*       Iolreg = (old) region number                                   *
-*          Llo = particle generation                                   *
-*        Nsurf = transport flag (ignore!)                              *
-*                                                                      *
-*     Output variables:                                                *
-*                                                                      *
-*       Fluscw = factor the scored amount will be multiplied by        *
-*       Lsczer = logical flag, if true no amount will be scored        *
-*                regardless of Fluscw                                  *
-*                                                                      *
-*     Useful variables (common SCOHLP):                                *
-*                                                                      *
-*     Flux like binnings/estimators (Fluscw):                          *
-*          ISCRNG = 1 --> Boundary crossing estimator                  *
-*          ISCRNG = 2 --> Track  length     binning                    *
-*          ISCRNG = 3 --> Track  length     estimator                  *
-*          ISCRNG = 4 --> Collision density estimator                  *
-*          ISCRNG = 5 --> Yield             estimator                  *
-*          JSCRNG = # of the binning/estimator                         *
-*                                                                      *
-*----------------------------------------------------------------------*
-*
-      LOGICAL LFIRST
-
-
-      DATA LFIRST /.TRUE./
-*
-* the default is unit weight
-      FLUSCW = ONEONE
-      LSCZER = .FALSE.
-*
-* skip all scorings other than tracklength
-      IF (ISCRNG.NE.2) RETURN
-* skip all particles other than protons, pions and neutrons
-      IF ((IJ.NE.1).AND.(IJ.NE.13).AND.(IJ.NE.14).AND.(IJ.NE.8)) RETURN
-*
-* read displacement damage factors
-      IF (LFIRST) THEN
-         WRITE(LUNOUT,1000)
- 1000    FORMAT(1X,'FLUSCW:  direct conversion of neutron fluence to',
-     &       ' 1 MeV neutron equivalent requested')
-         WRITE(LUNOUT,*) ' neutrons'
-         OPEN(19,FILE='disdam_n.dat',STATUS='UNKNOWN')
-         CALL SKIP(19,7)
-         CALL RDXSC(19,LUNOUT,IDNDAM,-3)
-         CLOSE(19)
-         WRITE(LUNOUT,*) ' protons '
-         OPEN(19,FILE='disdam_p.dat',STATUS='UNKNOWN')
-         CALL SKIP(19,7)
-         CALL RDXSC(19,LUNOUT,IDPDAM,-2)
-         CLOSE(19)
-         WRITE(LUNOUT,*) ' pions   '
-         OPEN(19,FILE='disdam_pi.dat',STATUS='UNKNOWN')
-         CALL SKIP(19,7)
-         CALL RDXSC(19,LUNOUT,IDODAM,-2)
-         CLOSE(19)
-         LFIRST = .FALSE.
-      ENDIF
-*
-* should be always called with ekin ( pla < 0 ), 
-* but we leave the check for the moment..
-      IF (PLA.LT.0.0D0) THEN
-         EKIN = ABS(PLA)
-      ELSEIF (PLA.GT.0.0D0) THEN
-         EKIN = SQRT(PLA**2+AM(IJ)**2)-AM(IJ)
-      ELSE
-         RETURN
-      ENDIF
-*
-* calculate the weight
-      IF (IJ.EQ.1) THEN
-         FLUSCW = XSECT(IDPDAM,EKIN,0)
-      ELSEIF ((IJ.EQ.13).OR.(IJ.EQ.14)) THEN
-         FLUSCW = XSECT(IDODAM,EKIN,0)
-      ELSEIF (IJ.EQ.8) THEN
-         FLUSCW = XSECT(IDNDAM,EKIN,0)
-      ELSE
-         STOP ' FLUSCW: inconsistent IJ '
-      ENDIF
-
-      RETURN
-      END
-*
-*===rdxsc==============================================================*
-*
-      SUBROUTINE RDXSC(LINP,LCHK,IDXSEC,MODE)
-
-************************************************************************
-*   LINP           logical input unit                                  *
-*   LCHK    > 0    cross section data are plotted to unit LCHK         *
-*                   in equidistant log. binning using double-log.      *
-*                   interpolation                                      *
-*                   (otherwise they are not plotted)                   *
-*   IDXSEC         index of stored cross section in common             *
-*   |MODE|  = 1    cross section data given as histogram               *
-*                    i.e. E_lo(i)  sigma(i)                            *
-*                         E_hi(i)  sigma(i)                            *
-*                   with increasing energy                             *
-*           = 2    cross section data given for bin averages with      *
-*                   increasing energy                                  *
-*           = 3    cross section data given for bin averages with      *
-*                   decreasing energy                                  *
-*   if MODE < 0 the energy unit is assumed to be MeV (otherwise GeV)   *
-************************************************************************
-
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      SAVE
-
-      PARAMETER (MAXSDT = 10,
-     &           MAXSBI = 1400)
-      COMMON /CSECT/ XSEAV(MAXSDT,MAXSBI),XS(MAXSDT,MAXSBI),
-     &               NXSBIN(MAXSDT),NXSDT
-      DIMENSION TMPXS(2,MAXSBI)
-
-      LOGICAL LFIRST
-      DATA LFIRST /.TRUE./
-
-      IF (LFIRST) THEN
-         NXSDT = 0
-         DO 1 IDT=1,MAXSDT
-            NXSBIN(IDT) = 0
-            DO 2 IBIN=1,MAXSBI
-               XSEAV(IDT,IBIN) = 0.0D0
-               XS(IDT,IBIN)    = 0.0D0
-    2       CONTINUE
-    1    CONTINUE
-         LFIRST = .FALSE.
-      ENDIF
-
-      NXSDT = NXSDT+1
-
-      NEBIN = 0
-   10 CONTINUE
-         NEBIN = NEBIN+1
-         IF (NEBIN.GT.MAXSBI) STOP ' nebin > maxsbi !!!'
-         IF (IABS(MODE).EQ.1) THEN
-            READ(LINP,*,END=9000) ELOW,XS(NXSDT,NEBIN)
-            READ(LINP,*) ELHI,XS(NXSDT,NEBIN)
-            XSEAV(NXSDT,NEBIN) = SQRT(ELOW*ELHI)
-            IF (MODE.LT.0) XSEAV(NXSDT,NEBIN) = 1.D-3*XSEAV(NXSDT,NEBIN)
-         ELSEIF (IABS(MODE).EQ.2) THEN
-            READ(LINP,*,END=9000) XSEAV(NXSDT,NEBIN),XS(NXSDT,NEBIN)
-            IF (MODE.LT.0) XSEAV(NXSDT,NEBIN) = 1.D-3*XSEAV(NXSDT,NEBIN)
-         ELSEIF (IABS(MODE).EQ.3) THEN
-            READ(LINP,*,END=9000) TMPXS(1,NEBIN),TMPXS(2,NEBIN)
-            IF (MODE.LT.0) TMPXS(1,NEBIN) = 1.D-3*TMPXS(1,NEBIN)
-         ELSE
-            STOP ' RDXSC: unsupported mode ! '
-         ENDIF
-         GOTO 10
- 9000 CONTINUE
-
-      IF (IABS(MODE).EQ.3) THEN
-         DO 3 I=1,NEBIN-1
-            IDX = NEBIN-I
-            XSEAV(NXSDT,IDX) = TMPXS(1,I)
-            XS(NXSDT,IDX) = TMPXS(2,I)
-    3    CONTINUE
-      ENDIF
-
-      NXSBIN(NXSDT) = NEBIN-1
-      IDXSEC = NXSDT
-
-      IF (LCHK.GT.0) THEN
-         AELO = LOG10(XSEAV(IDXSEC,1))
-         AEHI = LOG10(XSEAV(IDXSEC,NXSBIN(IDXSEC)))
-         DAE  = (AEHI-AELO)/DBLE(NXSBIN(IDXSEC))
-         DO 4 I=1,NXSBIN(IDXSEC)+1
-            AE = AELO+DBLE(I-1)*DAE
-            E  = 10.0D0**AE
-            WRITE(LCHK,'(1X,2E15.5)') E,XSECT(IDXSEC,E,0)
-    4    CONTINUE
-      ENDIF
-
-      RETURN
-      END
-*
-*===xsect==============================================================*
-*
-      DOUBLE PRECISION FUNCTION XSECT(IDXSEC,E,MODE)
-
-************************************************************************
-*   IDXSEC         index of stored cross section in common             *
-*   E              energy                                              *
-************************************************************************
-
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      SAVE
-
-      PARAMETER (MAXSDT = 10,
-     &           MAXSBI = 1400)
-      COMMON /CSECT/ XSEAV(MAXSDT,MAXSBI),XS(MAXSDT,MAXSBI),
-     &               NXSBIN(MAXSDT),NXSDT
-
-      IF (E.LE.XSEAV(IDXSEC,1)) THEN
-         CS = 0.0D0
-      ELSEIF (E.GT.XSEAV(IDXSEC,NXSBIN(IDXSEC))) THEN
-         N  = NXSBIN(IDXSEC)-1
-         CS = XSCINT(IDXSEC,E,N)
-      ELSE
-         DO 1 J=1,NXSBIN(IDXSEC)-1
-            IF ((E.GT.XSEAV(IDXSEC,J)).AND.(E.LE.XSEAV(IDXSEC,J+1))) 
-     &                                                          THEN
-               CS = XSCINT(IDXSEC,E,J)
-               GOTO 2
-            ENDIF
-   1     CONTINUE
-         STOP ' xsection value not found '
-   2     CONTINUE
-      ENDIF
-      XSECT = CS
-
-      RETURN
-      END
-*
-*===xscint=============================================================*
-*
-      DOUBLE PRECISION FUNCTION XSCINT(IDXSEC,E,J)
-
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      SAVE
-
-      PARAMETER (MAXSDT = 10,
-     &           MAXSBI = 1400)
-      COMMON /CSECT/ XSEAV(MAXSDT,MAXSBI),XS(MAXSDT,MAXSBI),
-     &               NXSBIN(MAXSDT),NXSDT
-
-      FAC = (LOG10(E)                -LOG10(XSEAV(IDXSEC,J)))/
-     &      (LOG10(XSEAV(IDXSEC,J+1))-LOG10(XSEAV(IDXSEC,J)))
-      XSCINT = LOG10(XS(IDXSEC,J))
-     &         +(LOG10(XS(IDXSEC,J+1))-LOG10(XS(IDXSEC,J)))*FAC
-      XSCINT = 10**(XSCINT)
-
-      RETURN
-      END
-*
-*===skip===============================================================*
-*
-      SUBROUTINE SKIP(LUNIT,NSKIP)
-
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      SAVE
-      PARAMETER (LOUT=6,LLOOK=9)
-
-      CHARACTER*132 ACARD
-
-      IF (NSKIP.EQ.0) RETURN
-
-      DO 1 K=1,NSKIP
-         READ(LUNIT,'(A132)') ACARD
-    1 CONTINUE
-
-      RETURN
-      END