]> git.uio.no Git - u/mrichter/AliRoot.git/blob - GEANT321/ghits/gcmwpc.F
Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / GEANT321 / ghits / gcmwpc.F
1 *
2 * $Id$
3 *
4 * $Log$
5 * Revision 1.1.1.1  1995/10/24 10:21:08  cernlib
6 * Geant
7 *
8 *
9 #include "geant321/pilot.h"
10 *CMZ :  3.21/02 29/03/94  15.41.20  by  S.Giani
11 *-- Author :
12       SUBROUTINE GCMWPC (DETREP,HITREP,IOUT)
13 C.
14 C.    ******************************************************************
15 C.    *                                                                *
16 C.    *   Routine to compute one or  two digitisations produced by a   *
17 C.    * hit on a cylindrical MWPC.                                     *
18 C.    * DETREP(1) number of wires                                      *
19 C.    * DETREP(2) wire spacing (radians)                               *
20 C.    * DETREP(3) dtheta/dz along the wires                            *
21 C.    * DETREP(4) theta of a point on wire 1                           *
22 C.    * DETREP(5) z of a point on wire 1                               *
23 C.    * DETREP(6) gap width                                            *
24 C.    * HITREP(1) theta coordinate of intersection                     *
25 C.    * HITREP(2) z coordinate                                         *
26 C.    * HITREP(3) dtheta/dr                                            *
27 C.    * HITREP(4) dz/dr                                                *
28 C.    * IOUT(1)   wire number (-1-missing)                             *
29 C.    * IOUT(2)   cluster size                                         *
30 C.    * IOUT(3)   wire number of second cluster if any                 *
31 C.    * IOUT(4)   cluster size                                         *
32 C.    *                                                                *
33 C.    *    ==>Called by : <USER>, GUDIGI                               *
34 C.    *       Author    M.Hansroul  *********                          *
35 C.    *                                                                *
36 C.    ******************************************************************
37 C.
38 #include "geant321/gconsp.inc"
39       DIMENSION HITREP(4), DETREP(6), IOUT(4)
40 #if !defined(CERNLIB_SINGLE)
41       DOUBLE PRECISION ONE
42 #endif
43       PARAMETER (ONE=1)
44 C.
45 C.    ------------------------------------------------------------------
46 C.
47       IOUT(1) = - 1
48       IOUT(3) = - 1
49       ZS     = DETREP(2)
50       IF (ZS.EQ.0.)                                   GO TO 99
51 C.
52 C.            COMPUTE WIRE NUMBER
53 C.
54       HG     = .5 * DETREP(6)
55       DT     = HG * HITREP(3)
56       DZ     = HG * HITREP(4)
57       T1     = HITREP(1) - DT
58       T2     = HITREP(1) + DT
59       Z1     = HITREP(2) - DZ
60       Z2     = HITREP(2) + DZ
61 C
62       Z0     = DETREP(5)
63       DT     = DETREP(3)
64       DZ     = Z1 - Z0
65       T1     = T1 - DZ * DT
66       DZ     = Z2 - Z0
67       T2     = T2 - DZ * DT
68       T0     = DETREP(4)
69 C
70       T1     = MOD (ONE*T1,TWOPI)
71       T2     = MOD (ONE*T2,TWOPI)
72       T0     = MOD (ONE*T0,TWOPI)
73       IF (T1.LT.0.) T1 = T1 + TWOPI
74       IF (T2.LT.0.) T2 = T2 + TWOPI
75       IF (T0.LT.0.) T0 = T0 + TWOPI
76 C
77       NN     = 0
78       W1     = (T1 - T0) / ZS
79       IF (W1.LE.0.)THEN
80          NN     = NN + 1
81          W1     = W1 + TWOPI / ZS
82       ENDIF
83 C
84       W2     = (T2 - T0) / ZS
85       IF (W2.LE.0.)THEN
86          NN     = NN + 1
87          W2     = W2 + TWOPI / ZS
88       ENDIF
89 C
90       W1     = W1 + 1.5
91       W2     = W2 + 1.5
92       IW1    = W1
93       IW2    = W2
94       NWIR   = DETREP(1)
95       IF (NN.NE.1)THEN
96 C.
97 C.            1 CLUSTER
98 C.
99          IWMIN  = MIN (IW1,IW2)
100          IWMAX  = MAX (IW1,IW2)
101          IF (IWMIN.GT.NWIR)                              GO TO 99
102 C
103          IWMAX  = MIN (NWIR,IWMAX)
104 C
105          IOUT(1) = IWMIN
106          IOUT(2) = IWMAX - IWMIN + 1
107       ELSE
108 C.
109 C.            SPECIAL CASE: SIGNAL ON WIRE 1
110 C.            AND ON WIRE 'NWIRES' --> 2 CLUSTERS
111 C.
112          IW     = MIN (IW1,IW2)
113          IW     = MIN (IW,NWIR)
114          IOUT(1) = 1
115          IOUT(2) = IW
116          IW     = MAX (IW1,IW2)
117          IF (IW.GT.NWIR)                                 GO TO 99
118          IOUT(3) = IW
119          IOUT(4) = NWIR - IW + 1
120       ENDIF
121 C
122   99  RETURN
123       END