]> git.uio.no Git - u/mrichter/AliRoot.git/blob - GEANT321/gdraw/gdssur.F
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / GEANT321 / gdraw / gdssur.F
1 *
2 * $Id$
3 *
4 * $Log$
5 * Revision 1.1.1.1  1995/10/24 10:20:28  cernlib
6 * Geant
7 *
8 *
9 #include "geant321/pilot.h"
10 *CMZ :  3.21/02 29/03/94  15.41.27  by  S.Giani
11 *-- Author :
12       SUBROUTINE GDSSUR(P1,P2,P3,P4)
13 C.
14 C.    ******************************************************************
15 C.    *                                                                *
16 C.    *       Store space points P1,P2,P3,P4 in vector SURF            *
17 C.    *       starting from SURF(ISURF)                                *
18 C.    *                                                                *
19 C.    *    ==>Called by : GDRWSC                                       *
20 C.    *       Author : P.Zanarini   *********                          *
21 C.    *                                                                *
22 C.    ******************************************************************
23 C.
24 #include "geant321/gcbank.inc"
25 #include "geant321/gcdraw.inc"
26 #include "geant321/gcvolu.inc"
27       DIMENSION SURF(2)
28       EQUIVALENCE (WS(1),SURF(1))
29       DIMENSION P1(1),P2(1),P3(1),P4(1),RP1(3),RP2(3),RP3(3),RP4(3)
30 C
31 C             MPOINT is maximum number of points that can  be stored;
32 C             at present MPOINT=(2000-12), because SURF is equivalenced
33 C             from WS(1) to WS(2000)
34 C
35       SAVE MPOINT
36       DATA MPOINT/1988/
37 C.
38 C.    ------------------------------------------------------------------
39 C.
40 C             Rotation matrix
41 C
42       CALL GINROT(P1(1),GRMAT(1,NLEVEL),RP1(1))
43       CALL GINROT(P2(1),GRMAT(1,NLEVEL),RP2(1))
44       CALL GINROT(P3(1),GRMAT(1,NLEVEL),RP3(1))
45       CALL GINROT(P4(1),GRMAT(1,NLEVEL),RP4(1))
46 C
47 C             Translation matrix
48 C
49       DO 10 I=1,3
50          RP1(I)=RP1(I)+GTRAN(I,NLEVEL)
51          RP2(I)=RP2(I)+GTRAN(I,NLEVEL)
52          RP3(I)=RP3(I)+GTRAN(I,NLEVEL)
53          RP4(I)=RP4(I)+GTRAN(I,NLEVEL)
54    10 CONTINUE
55 C
56 C             Store space points
57 C
58       SURF(ISURF)=RP1(1)
59       SURF(ISURF+1)=RP1(2)
60       SURF(ISURF+2)=RP1(3)
61       SURF(ISURF+3)=RP2(1)
62       SURF(ISURF+4)=RP2(2)
63       SURF(ISURF+5)=RP2(3)
64       SURF(ISURF+6)=RP3(1)
65       SURF(ISURF+7)=RP3(2)
66       SURF(ISURF+8)=RP3(3)
67       SURF(ISURF+9)=RP4(1)
68       SURF(ISURF+10)=RP4(2)
69       SURF(ISURF+11)=RP4(3)
70       ISURF=ISURF+12
71       NSURF=NSURF+1
72 C
73 C             If there is not enough space perform a cut
74 C             to empty the surface buffer SURF
75 C
76       IF (ISURF.GE.MPOINT) CALL GDCUT
77 C
78       END