+++ /dev/null
-*
-* $Id$
-*
-* $Log$
-* Revision 1.1.1.1 1995/10/24 10:20:56 cernlib
-* Geant
-*
-*
-#include "geant321/pilot.h"
-*CMZ : 3.21/02 29/03/94 15.41.30 by S.Giani
-*-- Author :
- SUBROUTINE GTRMUL(DX1,RMAT1,DX2,IROT,DXNEW,RMATN)
-C.
-C. ******************************************************************
-C * *
-C * ROUTINE TO FORM THE TRANSFORMATION RESULTING FROM *
-C * THE APPLICATION OF FIRST THE TRANSFORMATION GIVEN *
-C * BY THE POINT DX1 AND THE MATRIX RMAT1 FOLLOWED BY *
-C * THE APPLICATION OF THE TRANSFORMATION GIVEN BY THE *
-C * POINT DX2 AND THE MATRIX IN THE GEANT ROTATION *
-C * MATRIX BANKS WITH INDEX NUMBER IROT. THE RESULTING *
-C * TRANSFORMATION IS STORED AS THE POINT DXNEW AND *
-C * MATRIX RMATN. *
-C. * *
-C. * ==>Called by : GFTRAC,GINVOL,GLVOLU,GMEDIV,GMEPOS,GSTRAC, *
-C. * GTMEDI *
-C. * Author A.McPherson ********* *
-C. * *
-C. ******************************************************************
-C.
-#include "geant321/gcbank.inc"
- DIMENSION DX1(3),RMAT1(10),DX2(3),DXNEW(3),RMATN(10)
-C.
-C. ------------------------------------------------------------------
-C.
- IF(RMAT1(10).EQ.0.0)THEN
- DXNEW(1) = DX1(1) + DX2(1)
- DXNEW(2) = DX1(2) + DX2(2)
- DXNEW(3) = DX1(3) + DX2(3)
- IF(IROT.EQ.0)THEN
- DO 20 I = 1, 10, 2
- RMATN(I) = RMAT1(I)
- RMATN(I+1) = RMAT1(I+1)
- 20 CONTINUE
- ELSE
- JR=LQ(JROTM-IROT)
- DO 30 I = 1, 9
- RMATN(I) = Q(JR+I)
- 30 CONTINUE
- RMATN(10)=1.
- ENDIF
- ELSE
-C
- DXTEM1 = DX2(1)*RMAT1(1) + DX2(2)*RMAT1(4) + DX2(3)*RMAT1(7)
- DXTEM2 = DX2(1)*RMAT1(2) + DX2(2)*RMAT1(5) + DX2(3)*RMAT1(8)
- DXTEM3 = DX2(1)*RMAT1(3) + DX2(2)*RMAT1(6) + DX2(3)*RMAT1(9)
-C
- IF(IROT.EQ.0)THEN
- DO 50 I = 1, 10, 2
- RMATN(I) = RMAT1(I)
- RMATN(I+1) = RMAT1(I+1)
- 50 CONTINUE
- ELSE
- CALL GRMUL(RMAT1,IROT,RMATN)
- ENDIF
- DXNEW(1) = DX1(1) + DXTEM1
- DXNEW(2) = DX1(2) + DXTEM2
- DXNEW(3) = DX1(3) + DXTEM3
- ENDIF
- END