]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - GEANT321/ggeom/ggdpar.F
Merging the VirtualMC branch to the main development branch (HEAD)
[u/mrichter/AliRoot.git] / GEANT321 / ggeom / ggdpar.F
diff --git a/GEANT321/ggeom/ggdpar.F b/GEANT321/ggeom/ggdpar.F
deleted file mode 100644 (file)
index 7d08e55..0000000
+++ /dev/null
@@ -1,431 +0,0 @@
-*
-* $Id$
-*
-* $Log$
-* Revision 1.1.1.1  1995/10/24 10:20:49  cernlib
-* Geant
-*
-*
-#include "geant321/pilot.h"
-*CMZ :  3.21/02 29/03/94  15.41.28  by  S.Giani
-*-- Author :
-      SUBROUTINE GGDPAR (JVOM, IN, NVAR, LVAR, LVOM, NPAR, PAR)
-C.
-C.    ******************************************************************
-C.    *                                                                *
-C.    *    SUBR. GGDPAR (JVOM,IN,NVAR,LVAR,LVOM,NPAR*,PAR*)            *
-C.    *                                                                *
-C.    *   Computes the actual parameters for the IN'th division of the *
-C.    *    mother volume at address JVOM                               *
-C.    *   Returns the set of actual parameters in NPAR, PAR            *
-C.    *                                                                *
-C.    *   Called by : GGDVLP                                           *
-C.    *   Author    : S.Banerjee                                       *
-C.    *               (Original algorithms of A.McPherson)             *
-C.    *                                                                *
-C.    ******************************************************************
-C.
-#include "geant321/gcbank.inc"
-#include "geant321/gcflag.inc"
-#include "geant321/gcunit.inc"
-C.
-      PARAMETER (NPAMAX=50)
-C.
-      DIMENSION LVAR(*), PAR(*)
-C.
-      REAL      PARM(NPAMAX)
-      INTEGER   LAX(10,12)
-      SAVE LAX
-C.
-      DATA      LAX / 1, 2, 3, 7*0, 1, 1, 2, 3, 6*0, 1, 1, 2, 2, 3, 5*0,
-     +                3, 0, 0, 2, 1, 1, 0, 2, 1, 1, 1, 1, 3, 7*0,
-     +                1, 1, 3, 2, 2, 5*0, 3, 1, 1, 1, 1, 5*0,
-     +                3, 1, 1, 1, 1, 2, 2, 3*0, 1, 1, 2, 2, 6*0,
-     +                1, 2, 3, 7*0, 2, 2, 0, 0, 3, 1, 1, 3, 1, 1,
-     +                2, 2, 0, 3, 1, 1, 3, 1, 1, 0/
-C.
-C.    ------------------------------------------------------------------
-*
-* *** Prepares parameters for mother, in PARM, for division, in PAR
-*      and the division parameters
-*
-      JIN = LQ(JVOM-1)
-      IF (LQ(JVOM).EQ.LVOM) THEN
-*
-*      Case when current volume is source of local development
-*
-         NPARM = Q(JVOM+5)
-         CALL UCOPY (Q(JVOM+7), PARM, NPARM)
-         NDIV  = Q(JIN+3)
-         ORIG  = Q(JIN+4)
-         STEP  = Q(JIN+5)
-      ELSE
-*
-*      Other cases
-*
-         NPARM = IQ(LVOM+5)
-         CALL UCOPY (Q(LVOM+6), PARM, NPARM)
-         NDIV  = IQ(LVOM+1)
-         ORIG  = Q(LVOM+2)
-         STEP  = Q(LVOM+3)
-      ENDIF
-*
-      ISHM  = Q(JVOM+2)
-*
-      ORI   = ORIG + (IN - 1) * STEP
-      IAXIS = Q(JIN+1)
-      IVO   = Q(JIN+2)
-      JVO   = LQ(JVOLUM-IVO)
-      ISH   = Q(JVO+2)
-      NPAR  = Q(JVO+5)
-*
-* *** Prepare the division parameters
-*
-      IF (NPAR.GT.0) THEN
-         CALL UCOPY (Q(JVO+7), PAR, NPAR)
-      ELSE
-         NPAR  = NPARM
-         CALL UCOPY (PARM, PAR, NPARM)
-*
-*  **    Special treatment for phi divisions (when NPAR=0)
-*
-         IF ((ISHM.GE.5.AND.ISHM.LE.8.AND.IAXIS.EQ.2) .OR.
-     +       (ISHM.GE.11.AND.ISHM.LE.12.AND.IAXIS.EQ.2) .OR.
-     +       (ISHM.EQ.9.AND.IAXIS.EQ.3)) THEN
-            IF (ISHM.EQ.5.OR.ISHM.EQ.7) THEN
-               NPAR = NPARM + 2
-               PAR(NPAR-1) = -0.5 * STEP
-               PAR(NPAR)   =  0.5 * STEP
-            ELSE IF (ISHM.EQ.6.OR.ISHM.EQ.8) THEN
-               DP   = PARM(NPAR) - PARM(NPAR-1)
-               IF (DP.LT.0.0) DP = DP + 360.0
-               IF (ORIG-PARM(NPAR-1).LT.0.0) ORIG = ORIG + 360.0
-               IF (ORIG-PARM(NPAR-1).GT.DP ) GO TO 910
-               DP   = PARM(NPAR) - ORIG
-               IF (DP.LT.0.0) DP = DP + 360.0
-               PAR(NPAR-1) = -0.5 * DP / NDIV
-               PAR(NPAR  ) =  0.5 * DP / NDIV
-            ELSE IF (ISHM.EQ.11.OR.ISHM.EQ.12) THEN
-               IF (ISHM.EQ.11) NDIV = PARM(3)
-               STEP = PARM(2) / NDIV
-               PAR(1) = -0.5 * STEP
-               PAR(2) = STEP
-               PAR(3) = 1.
-            ELSE IF (ISHM.EQ.9) THEN
-               DP   = PARM(6) - PARM(5)
-               IF (DP.LT.0.0) DP = DP + 360.0
-               IF (ORIG-PARM(5).LT.0.0) ORIG = ORIG + 360.0
-               IF (ORIG-PARM(5).GT.DP ) GO TO 910
-               DP   = PARM(6) - ORIG
-               IF (DP.LT.0.0) DP = DP + 360.0
-               PAR(5) = -0.5 * DP / NDIV
-               PAR(6) =  0.5 * DP / NDIV
-            ENDIF
-         ENDIF
-      ENDIF
-      IF (NVAR.LE.0)  GO TO 999
-*
-* *** Compute the actual parameters
-*
-      IF (ISHM.EQ.1) THEN
-*
-* BOX
-*
-         IF (ISH.EQ.1) THEN
-            DO 10 I = 1, NVAR
-               IAX = LVAR(I)
-               IF (IAX.EQ.IAXIS) THEN
-                  PAR(IAX) = 0.5 *STEP
-               ELSE
-                  PAR(IAX) = PARM(IAX)
-               ENDIF
-   10       CONTINUE
-         ELSE
-            GO TO 900
-         ENDIF
-*
-      ELSE IF (ISHM.EQ.2) THEN
-*
-* TRD1
-*
-         IF (ISH.EQ.2) THEN
-            DO 20 I = 1, NVAR
-               IAX = LVAR(I)
-               IF (LAX(IAX,ISH).EQ.IAXIS) THEN
-                  PAR(IAX) = 0.5 * STEP
-               ELSE IF (LAX(IAX,ISH).EQ.1.AND.IAXIS.EQ.3) THEN
-                  ZZ   = ORI + PARM(4)
-                  DXDZ = 0.5 * (PARM(2) - PARM(1)) / PARM(4)
-                  IF (IAX.EQ.2) ZZ = ZZ + STEP
-                  PAR(IAX) = PARM(1) + DXDZ * ZZ
-               ELSE
-                  PAR(IAX) = PARM(IAX)
-               ENDIF
-   20       CONTINUE
-         ELSE
-            GO TO 900
-         ENDIF
-*
-      ELSE IF (ISHM.EQ.3) THEN
-*
-* TRD2
-*
-         IF (ISH.EQ.3.AND.IAXIS.EQ.3) THEN
-            DO 30 I = 1, NVAR
-               IAX = LVAR(I)
-               IF (LAX(IAX,ISH).EQ.IAXIS) THEN
-                  PAR(IAX) = 0.5 * STEP
-               ELSE
-                  IP1  = 2 * LAX(IAX,ISH) - 1
-                  IP2  = IP1 + 1
-                  ZZ   = ORI + PARM(5)
-                  DXDZ = 0.5 * (PARM(IP2) - PARM(IP1)) / PARM(5)
-                  IF (IAX.EQ.IP2) ZZ = ZZ + STEP
-                  PAR(IAX) = PARM(IP1) + DXDZ * ZZ
-               ENDIF
-   30       CONTINUE
-         ELSE IF (ISH.EQ.3) THEN
-            GO TO 910
-         ELSE
-            GO TO 900
-         ENDIF
-*
-      ELSE IF (ISHM.EQ.4) THEN
-*
-* TRAP
-*
-         IF (ISH.EQ.4.AND.IAXIS.NE.1) THEN
-         IF(IAXIS.EQ.3) THEN
-            DO 40 I = 1, NVAR
-               IAX = LVAR(I)
-               IF (IAX.EQ.1) THEN
-                  PAR(IAX) = 0.5 * STEP
-               ELSE IF (IAX.LE.6) THEN
-                  ZZ   = ORI + PARM(1)
-                  DPDZ = 0.5 * (PARM(IAX+4) - PARM(IAX)) / PARM(1)
-                  PAR(IAX) = PARM(IAX) + DPDZ * ZZ
-               ELSE
-                  ZZ   = ORI + PARM(1) + STEP
-                  DPDZ = 0.5 * (PARM(IAX) - PARM(IAX-4)) / PARM(1)
-                  PAR(IAX) = PARM(IAX-4) + DPDZ * ZZ
-               ENDIF
-   40       CONTINUE
-            HTAL = PARM(8) * PARM(11)
-            HTAH = PARM(4) * PARM(7)
-            ZZ1  = 0.5 * (ORI + PARM(1)) / PARM(1)
-            ZZ2  = 0.5 * (ORI + PARM(1) + STEP) / PARM(1)
-            PAR(7) = (HTAL*(1.0-ZZ1) + HTAH*ZZ1) / PARM(4)
-            PAR(11)= (HTAL*(1.0-ZZ2) + HTAH*ZZ2) / PARM(8)
-            CALL GNOTR1(PAR)
-            ELSE IF (IAXIS.EQ.2) THEN
-               DO 41 I = 1, NVAR
-               PAR(LVAR(I)) = PARM(LVAR(I))
-  41           CONTINUE
-               DXDY1 = 0.5*(PARM(6)-PARM(5))/PARM(4)
-               DXDY2 = 0.5*(PARM(10)-PARM(9))/PARM(8)
-               DXM1  = 0.5*(PARM(6)+PARM(5))
-               DXM2  = 0.5*(PARM(10)+PARM(9))
-               DXH1  = DXM1+(ORI+STEP)*DXDY1
-               DXH2  = DXM2+(ORI+STEP)*DXDY2
-               DXL1  = DXM1+ORI*DXDY1
-               DXL2  = DXM2+ORI*DXDY2
-               PAR(5) = DXL1
-               PAR(6) = DXH1
-               PAR(9) = DXL2
-               PAR(10) = DXH2
-            ENDIF
-         ELSE IF (ISH.EQ.4) THEN
-            GO TO 910
-         ELSE
-            GO TO 900
-         ENDIF
-*
-      ELSE IF (ISHM.EQ.5 .OR. ISHM.EQ.6) THEN
-*
-* TUBE or TUBS
-*
-         IF (ISH.EQ.5 .OR. ISH.EQ.6) THEN
-            DO 50 I = 1, NVAR
-               IAX = LVAR(I)
-               IF (LAX(IAX,ISH).EQ.IAXIS) THEN
-                  IF (IAXIS.EQ.3) THEN
-                     PAR(IAX) = 0.5 * STEP
-                  ELSE IF (IAXIS.EQ.1) THEN
-                     IF (IAX.EQ.1) THEN
-                        PAR(IAX) = ORI
-                     ELSE
-                        PAR(IAX) = ORI + STEP
-                     ENDIF
-                  ELSE
-                     GO TO 910
-                  ENDIF
-               ELSE
-                  PAR(IAX) = PARM(IAX)
-               ENDIF
-   50       CONTINUE
-         ELSE
-            GO TO 900
-         ENDIF
-*
-      ELSE IF (ISHM.EQ.7 .OR. ISHM.EQ.8) THEN
-*
-* CONE or CONS
-*
-         IF (ISH.EQ.7 .OR. ISH.EQ.8) THEN
-            DO 60 I = 1, NVAR
-               IAX = LVAR(I)
-               IF (LAX(IAX,ISH).EQ.IAXIS .AND. IAXIS.EQ.3) THEN
-                  PAR(IAX) = 0.5 * STEP
-               ELSE IF (IAXIS.EQ.3.AND.IAX.GT.1.AND.IAX.LT.6) THEN
-                  IF (IAX.EQ.2.OR.IAX.EQ.4) THEN
-                     DP   = 0.5 * (PARM(4) - PARM(2)) / PARM(1)
-                     PM   = 0.5 * (PARM(4) + PARM(2))
-                  ELSE
-                     DP   = 0.5 * (PARM(5) - PARM(3)) / PARM(1)
-                     PM   = 0.5 * (PARM(5) + PARM(3))
-                  ENDIF
-                  IF (IAX.GT.3) THEN
-                     DZ   = ORI + STEP
-                  ELSE
-                     DZ   = ORI
-                  ENDIF
-                  PAR(IAX) = PM + DP * DZ
-               ELSE IF (IAXIS.EQ.1.AND.LAX(IAX,ISH).EQ.IAXIS) THEN
-                  IF (IAX.EQ.2) THEN
-                     PAR(IAX) = ORI
-                  ELSE IF (IAX.EQ.3) THEN
-                     PAR(IAX) = ORI + STEP
-                  ELSE IF (IAX.EQ.4) THEN
-                     PAR(IAX) = ORI * PARM(IAX) / PARM(2)
-                  ELSE
-                     PAR(IAX) = (ORI + STEP) * PARM(IAX) / PARM(3)
-                  ENDIF
-               ELSE
-                  PAR(IAX) = PARM(IAX)
-               ENDIF
-   60       CONTINUE
-         ELSE
-            GO TO 900
-         ENDIF
-*
-      ELSE IF (ISHM.EQ.9) THEN
-*
-* SPHE
-*
-         IF (ISH.EQ.9) THEN
-            DO 70 I = 1, NVAR
-               IAX = LVAR(I)
-               IF (LAX(IAX,ISH).EQ.IAXIS) THEN
-                  IF (MOD(IAX,2).NE.0) THEN
-                     PAR(IAX) = ORI
-                  ELSE
-                     PAR(IAX) = ORI + STEP
-                  ENDIF
-               ELSE
-                  PAR(IAX) = PARM(IAX)
-               ENDIF
-   70       CONTINUE
-         ELSE
-            GO TO 900
-         ENDIF
-*
-      ELSE IF (ISHM.EQ.10) THEN
-*
-* PARA
-*
-         IF (ISH.EQ.10) THEN
-            DO 80 I = 1, NVAR
-               IAX = LVAR(I)
-               IF (LAX(IAX,ISH).EQ.IAXIS) THEN
-                  PAR(IAX) = 0.5 * STEP
-               ENDIF
-   80       CONTINUE
-         ELSE
-            GO TO 900
-         ENDIF
-*
-      ELSE IF (ISHM.EQ.11 .OR. ISHM.EQ.12) THEN
-*
-* PGON or PCON
-*
-         IF (ISH.EQ.ISHM) THEN
-            IF (ISH.EQ.11) THEN
-               IPNZ = 4
-            ELSE
-               IPNZ = 3
-            ENDIF
-            NZ   = PAR(IPNZ)
-            NZ1  = PARM(IPNZ)
-            IF (NZ.EQ.NZ1) THEN
-               IF (IAXIS.EQ.1) THEN
-                  RMN  = ORI
-                  RMX  = ORI + STEP
-                  DO 90 I = 1, NZ
-                     IAX1 = IPNZ + 3*I - 1
-                     IAX2 = IAX1 + 1
-                     IF (I.EQ.1) THEN
-                        PAR(IAX1) = RMN
-                        PAR(IAX2) = RMX
-                     ELSE
-                        PAR(IAX1) = RMN * PARM(IAX1) / PARM(IPNZ+2)
-                        PAR(IAX2) = RMX * PARM(IAX2) / PARM(IPNZ+3)
-                     ENDIF
-   90             CONTINUE
-               ELSE IF (IAXIS.EQ.2) THEN
-                  DO 100 I = 1, NVAR
-                     IAX = LVAR(I)
-                     PAR(IAX) = PARM(IAX)
-  100             CONTINUE
-               ELSE IF (NZ.EQ.2.AND.IAXIS.EQ.3) THEN
-                  ZL   = PARM(IPNZ+1)
-                  ZH   = PARM(IPNZ+4)
-                  DZ   = ZH - ZL
-                  DRMIDZ = (PARM(IPNZ+5)-PARM(IPNZ+2))/DZ
-                  DRMADZ = (PARM(IPNZ+6)-PARM(IPNZ+3))/DZ
-                  PAR(IPNZ+1) = -0.5 * STEP
-                  PAR(IPNZ+4) =  0.5 * STEP
-                  DO 110 I = 1, NVAR
-                     IAX = LVAR(I)-IPNZ
-                     IF(IAX.EQ.2) THEN
-                        RAD = PARM(IPNZ+2)+(IN-1)*STEP*DRMIDZ
-                     ELSEIF (IAX.EQ.3) THEN
-                        RAD = PARM(IPNZ+3)+(IN-1)*STEP*DRMADZ
-                     ELSEIF (IAX.EQ.5) THEN
-                        RAD = PARM(IPNZ+2)+IN*STEP*DRMIDZ
-                     ELSEIF (IAX.EQ.6) THEN
-                        RAD = PARM(IPNZ+3)+IN*STEP*DRMADZ
-                     ENDIF
-                     PAR(IPNZ+IAX) = RAD
-  110             CONTINUE
-               ELSE
-                  GO TO 920
-               ENDIF
-            ELSE
-               GO TO 920
-            ENDIF
-         ELSE
-            GO TO 900
-         ENDIF
-*
-      ELSE
-         GO TO 900
-      ENDIF
-*
-      GO TO 999
-*
-  900 WRITE (CHMAIL, 1001) ISH, ISHM
-      GO TO 990
-*
-  910 WRITE (CHMAIL, 1002) ISH, ISHM, IAXIS
-      GO TO 990
-*
-  920 WRITE (CHMAIL, 1003) ISH, NZ, ISHM, NZ1
-*
-  990 CALL GMAIL( 0, 0)
-      IEORUN = 1
-*
- 1001 FORMAT (' GGDPAR : Not accepted ISH,ISHM=',2I5)
- 1002 FORMAT (' GGDPAR : Not accepted ISH,ISHM,IAXIS=',3I5)
- 1003 FORMAT (' GGDPAR : Not accepted ISH,NZ,ISHM,NZ1=',4I5)
-*                                                             END GGDPAR
-  999 END