1 |
* |
2 |
* $Id$ |
3 |
* |
4 |
* $Log$ |
5 |
* |
6 |
*CMZ : 2.01/00 05/04/2000 14.35.18 by Marialuigia Ambriola |
7 |
*CMZ : 2.00/00 03/03/2000 15.39.06 by Francesco Cafagna |
8 |
*CMZ : 1.02/00 20/03/97 15.53.07 by Francesco Cafagna |
9 |
*CMZ : 1.01/00 04/05/96 10.27.46 by Francesco Cafagna |
10 |
*-- Author : Paolo (The Magic) Papini 23/04/96 |
11 |
SUBROUTINE GPSDINI |
12 |
************************************************************************ |
13 |
* * |
14 |
* To calculate parameters for spectrometer digitizing * |
15 |
* * |
16 |
* Called by: GPDIGI * |
17 |
* Author: Paolo (The Magic) Papini, 23/04/96 17.21.55 * |
18 |
* * |
19 |
************************************************************************ |
20 |
#include "gcunit.inc" |
21 |
#include "gpsed.inc" |
22 |
#include "gpgeo.inc" |
23 |
#include "gpdigi.inc" |
24 |
#include "gpdspe.inc" |
25 |
* |
26 |
INTEGER JUNK |
27 |
* |
28 |
REAL X0,X1,X2,Y0,Y1,Y2,Z0,SIG2X,SIG2Y,SIG1X,SIG1Y, |
29 |
+UDSPE(NUDSPE) |
30 |
* |
31 |
#include "gpddspe.inc" |
32 |
* |
33 |
* CHARX and CHARY calculation and CCX,CCY |
34 |
* |
35 |
STEPX=WXSTR*5.5/NPCHXY |
36 |
STEPY=WYSTR*5.5/NPCHXY |
37 |
STEPZ=2.*TSPA(3)/NPCHZ |
38 |
* |
39 |
* Silicon thickness |
40 |
* |
41 |
D=2.*TSPA(3) |
42 |
* |
43 |
* Diffusion temperature (Volt) |
44 |
* |
45 |
TVX=0.04 |
46 |
TVY=0.02 |
47 |
* |
48 |
* Volt (junction) |
49 |
* |
50 |
UD=50. |
51 |
* |
52 |
* Volt (external) |
53 |
* |
54 |
UU=100. |
55 |
* |
56 |
DO I=1,NPCHXY |
57 |
X0=(I-0.5)*STEPX |
58 |
C X1=-WXSTR/2. |
59 |
C X2=WXSTR/2. |
60 |
STRDIV=0.6 |
61 |
X1=-WXSTR*STRDIV |
62 |
X2=WXSTR*STRDIV |
63 |
X1_I=-WXSTR*(1.-STRDIV) |
64 |
X2_I=WXSTR*(1.-STRDIV) |
65 |
Y0=(I-0.5)*STEPY |
66 |
Y1=-WYSTR/2. |
67 |
Y2=WYSTR/2. |
68 |
DO J=1,NPCHZ |
69 |
Z0=(J-0.5)*STEPZ |
70 |
SIG2X=-1.*D**2*TVX/UD*LOG(1.-2.*UD*(D-Z0)/(UU+UD)/D) |
71 |
SIG2Y=-1.*D**2*TVY/UD*LOG(1.-2.*UD*(D-Z0)/(UU+UD)/D) |
72 |
SIG1X=SQRT(SIG2X) |
73 |
SIG1Y=SQRT(SIG2Y) |
74 |
CHARX(I,J)=FREQ((X2-X0)/SIG1X)-FREQ((X1-X0)/SIG1X) |
75 |
CHARX_I(I,J)=FREQ((X2_I-X0)/SIG1X)-FREQ((X1_I-X0)/SIG1X) |
76 |
CHARY(I,J)=FREQ((Y2-Y0)/SIG1Y)-FREQ((Y1-Y0)/SIG1Y) |
77 |
END DO |
78 |
END DO |
79 |
PX1=0.9 ! C1-x |
80 |
PX2=0.5 ! C2-X |
81 |
PY1=0.98 ! C1-Y |
82 |
PY2=0.5 ! C2-Y |
83 |
CCX(1)=PX1 |
84 |
CCX(2)=(1.-PX1)/2.*PX2 |
85 |
CCX(3)=(1.-PX1)/2.*(1-PX2) |
86 |
CCY(1)=PY1 |
87 |
CCY(2)=(1.-PY1)/2.*PY2 |
88 |
CCY(3)=(1.-PY1)/2.*(1.-PY2) |
89 |
* |
90 |
* Store the USER parameters into the User's DIGI bank |
91 |
* |
92 |
JUNK = 0 |
93 |
JUNK = JUNK + 1 |
94 |
IF(JUNK.LE.NUDSPE) UDSPE(JUNK) = ADCX |
95 |
JUNK = JUNK + 1 |
96 |
IF(JUNK.LE.NUDSPE) UDSPE(JUNK) = ADCY |
97 |
JUNK = JUNK + 1 |
98 |
IF(JUNK.LE.NUDSPE) UDSPE(JUNK) = PIEDX |
99 |
JUNK = JUNK + 1 |
100 |
IF(JUNK.LE.NUDSPE) UDSPE(JUNK) = PIEDY |
101 |
JUNK = JUNK + 1 |
102 |
IF(JUNK.LE.NUDSPE) UDSPE(JUNK) = ENOISX |
103 |
JUNK = JUNK + 1 |
104 |
IF(JUNK.LE.NUDSPE) UDSPE(JUNK) = ENOISY |
105 |
JUNK = JUNK + 1 |
106 |
IF(JUNK.LE.NUDSPE) UDSPE(JUNK) = NPCHXY |
107 |
JUNK = JUNK + 1 |
108 |
IF(JUNK.LE.NUDSPE) UDSPE(JUNK) = NPCHZ |
109 |
JUNK = JUNK + 1 |
110 |
IF(JUNK.LE.NUDSPE) UDSPE(JUNK) = WXSTR |
111 |
JUNK = JUNK + 1 |
112 |
IF(JUNK.LE.NUDSPE) UDSPE(JUNK) = WYSTR |
113 |
JUNK = JUNK + 1 |
114 |
IF(JUNK.LE.NUDSPE) UDSPE(JUNK) = D |
115 |
JUNK = JUNK + 1 |
116 |
IF(JUNK.LE.NUDSPE) UDSPE(JUNK) = TVX |
117 |
JUNK = JUNK + 1 |
118 |
IF(JUNK.LE.NUDSPE) UDSPE(JUNK) = TVY |
119 |
JUNK = JUNK + 1 |
120 |
IF(JUNK.LE.NUDSPE) UDSPE(JUNK) = UD |
121 |
JUNK = JUNK + 1 |
122 |
IF(JUNK.LE.NUDSPE) UDSPE(JUNK) = UU |
123 |
JUNK = JUNK + 1 |
124 |
IF(JUNK.LE.NUDSPE) UDSPE(JUNK) = PX1 |
125 |
JUNK = JUNK + 1 |
126 |
IF(JUNK.LE.NUDSPE) UDSPE(JUNK) = PX2 |
127 |
JUNK = JUNK + 1 |
128 |
IF(JUNK.LE.NUDSPE) UDSPE(JUNK) = PY1 |
129 |
JUNK = JUNK + 1 |
130 |
IF(JUNK.LE.NUDSPE) UDSPE(JUNK) = PY2 |
131 |
JUNK = JUNK + 1 |
132 |
IF(JUNK.LE.NUDSPE) UDSPE(JUNK) = STRDIV |
133 |
* |
134 |
IF(JUNK.EQ.NUDSPE) THEN |
135 |
CALL GSDETU('SPE ',CNSED(ISSPE,IDTSPA),NUDSPE,UDSPE) |
136 |
ELSE |
137 |
WRITE(CHMAIL,10000) JUNK,NUDSPE |
138 |
ENDIF |
139 |
* |
140 |
10000 FORMAT(' GPSDINI: Too many user`s DIGI parameter: NUDSPE=', |
141 |
+ I4,', NCOUNT=',I4) |
142 |
RETURN |
143 |
END |