]> git.uio.no Git - u/mrichter/AliRoot.git/blame - GEANT321/ggeom/gtrmul.F
Allow any Cherenkov-like particle to be transported
[u/mrichter/AliRoot.git] / GEANT321 / ggeom / gtrmul.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.1.1.1 1995/10/24 10:20:56 cernlib
6* Geant
7*
8*
9#include "geant321/pilot.h"
10*CMZ : 3.21/02 29/03/94 15.41.30 by S.Giani
11*-- Author :
12 SUBROUTINE GTRMUL(DX1,RMAT1,DX2,IROT,DXNEW,RMATN)
13C.
14C. ******************************************************************
15C * *
16C * ROUTINE TO FORM THE TRANSFORMATION RESULTING FROM *
17C * THE APPLICATION OF FIRST THE TRANSFORMATION GIVEN *
18C * BY THE POINT DX1 AND THE MATRIX RMAT1 FOLLOWED BY *
19C * THE APPLICATION OF THE TRANSFORMATION GIVEN BY THE *
20C * POINT DX2 AND THE MATRIX IN THE GEANT ROTATION *
21C * MATRIX BANKS WITH INDEX NUMBER IROT. THE RESULTING *
22C * TRANSFORMATION IS STORED AS THE POINT DXNEW AND *
23C * MATRIX RMATN. *
24C. * *
25C. * ==>Called by : GFTRAC,GINVOL,GLVOLU,GMEDIV,GMEPOS,GSTRAC, *
26C. * GTMEDI *
27C. * Author A.McPherson ********* *
28C. * *
29C. ******************************************************************
30C.
31#include "geant321/gcbank.inc"
32 DIMENSION DX1(3),RMAT1(10),DX2(3),DXNEW(3),RMATN(10)
33C.
34C. ------------------------------------------------------------------
35C.
36 IF(RMAT1(10).EQ.0.0)THEN
37 DXNEW(1) = DX1(1) + DX2(1)
38 DXNEW(2) = DX1(2) + DX2(2)
39 DXNEW(3) = DX1(3) + DX2(3)
40 IF(IROT.EQ.0)THEN
41 DO 20 I = 1, 10, 2
42 RMATN(I) = RMAT1(I)
43 RMATN(I+1) = RMAT1(I+1)
44 20 CONTINUE
45 ELSE
46 JR=LQ(JROTM-IROT)
47 DO 30 I = 1, 9
48 RMATN(I) = Q(JR+I)
49 30 CONTINUE
50 RMATN(10)=1.
51 ENDIF
52 ELSE
53C
54 DXTEM1 = DX2(1)*RMAT1(1) + DX2(2)*RMAT1(4) + DX2(3)*RMAT1(7)
55 DXTEM2 = DX2(1)*RMAT1(2) + DX2(2)*RMAT1(5) + DX2(3)*RMAT1(8)
56 DXTEM3 = DX2(1)*RMAT1(3) + DX2(2)*RMAT1(6) + DX2(3)*RMAT1(9)
57C
58 IF(IROT.EQ.0)THEN
59 DO 50 I = 1, 10, 2
60 RMATN(I) = RMAT1(I)
61 RMATN(I+1) = RMAT1(I+1)
62 50 CONTINUE
63 ELSE
64 CALL GRMUL(RMAT1,IROT,RMATN)
65 ENDIF
66 DXNEW(1) = DX1(1) + DXTEM1
67 DXNEW(2) = DX1(2) + DXTEM2
68 DXNEW(3) = DX1(3) + DXTEM3
69 ENDIF
70 END