/[PAMELA software]/gpamela/gpspe/gpdspe.F
ViewVC logotype

Contents of /gpamela/gpspe/gpdspe.F

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3.1 - (show annotations) (download)
Thu Jul 11 16:02:13 2002 UTC (22 years, 4 months ago) by cafagna
Branch: MAIN
Branch point for: v3r0
Initial revision

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 19/01/2000 15.50.14 by Francesco Cafagna
9 *CMZ : 1.01/00 16/05/96 17.38.13 by Francesco Cafagna
10 *CMZ : 1.00/02 27/03/96 18.35.42 by Francesco Cafagna
11 *-- Author : Francesco Cafagna 23/02/96
12 SUBROUTINE GPDSPE
13 ************************************************************************
14 * *
15 * To perform SPE digitization *
16 * *
17 * Called by: GUDIGI *
18 * Author: Francesco Cafagna, 23/02/96 12.50.38 *
19 * *
20 ************************************************************************
21 #include "gcunit.inc"
22 #include "gpphit.inc"
23 PARAMETER (NH=NHSPE,NHM=NHMSPE,NVOL=4)
24 #include "gppdigi.inc"
25 c +SEQ,GPDSPE.
26 #include "gprhit.inc"
27 #include "gpspe.inc"
28 #include "gpsed.inc"
29 *
30 INTEGER IS,ID,NV,NVM,GPNHIT,NTHIT,NHFRST
31 CHARACTER*4 CSET
32 LOGICAL CONT,HF
33 *
34 * Data block for digitalization
35 *
36 INTEGER NTRA,IDIG,LTRA,NPLANE,LKDN,NTDIGI,JJ
37 INTEGER KDIGI(4),NUMBVD(NVOL)
38 REAL XI,YI,XO,YO,PATH,DE,GPGAUS
39 *
40 DATA NTRA,LTRA/1,1/
41 *
42 *
43 * Vector zeroed
44 *
45 CALL VZERO(ITRPB ,NHM)
46 CALL VZERO(ITRSL ,NHM)
47 CALL VZERO(ITSPA ,NHM)
48 CALL VZERO(XTSPA,NHM)
49 CALL VZERO(YTSPA,NHM)
50 CALL VZERO(ZTSPA,NHM)
51 CALL VZERO(XOTSPA,NHM)
52 CALL VZERO(YOTSPA,NHM)
53 CALL VZERO(ZOTSPA,NHM)
54 CALL VZERO(ERTSPA,NHM)
55 CALL VZERO(PATSPA,NHM)
56 CALL VZERO(NUMD ,NVOL)
57 CALL VZERO(NDPLAN,NDMSPE)
58 CALL VZERO(NDSIL ,NDMSPE)
59 CALL VZERO(NDISTR,NDMSPE)
60 CALL VZERO(NDIADC,NDMSPE)
61 *
62 CONT = .FALSE.
63 HF = .TRUE.
64 NTDIGI = 0
65 NDISPE = 0
66 NV = NVOL
67 NVM= NVMAX
68 IS = ISSPE
69 ID = IDTSPA
70 CSET = 'SPE '
71 IT = -1
72 *
73 * Get the total number of hits stored for TSPA detector
74 *
75 NTHIT = GPNHIT(CSET,CNSED(IS,ID) )
76 IF (NTHIT.GT.NHM) CONT=.TRUE.
77 *
78 * Check on the volume level
79 *
80 IF (NV.GT.NVM) THEN
81 WRITE(CHMAIL,10000) CSET,CNSED(IS,ID),NVOL,NVMAX,
82 + IDRUN,IDEVT
83 CALL GMAIL(1,0)
84 GO TO 20
85 ENDIF
86 CALL VZERO(VHITS,NH*NHM)
87 CALL VZERO(ITRA ,NHM)
88 CALL VZERO(NUMBV,NVOL*NHM)
89 NHITS = -1
90 NHFRST = 1
91 LKDN = 0
92 10 CALL GPRHIT(CSET,CNSED(IS,ID),IS,ID,NVOL,NH,NHM,NHFRST,
93 + IT,NUMD,ITRA,NUMBV,VHITS,NHITS)
94 *
95 * If there was a problem in GPRHIT then exit
96 *
97 IF(NHITS.LT.0.AND.(NHITS.NE.-(NHM+1)) ) THEN
98 WRITE(CHMAIL,10100) CSET,CNSED(IS,ID),NHITS,NHM,
99 + IDRUN,IDEVT
100 CALL GMAIL(1,0)
101 GO TO 20
102 ENDIF
103 IF( NHITS.EQ. -(NHM+1) ) NHITS = NHM
104 *
105 * Fill CWN entuple
106 *
107 NTHSPE = NHITS
108 DO I=1,NHITS
109 ITRPB(I) = NUMBV(1,I)
110 ITRSL(I) = NUMBV(3,I)
111 ITSPA(I) = NUMBV(4,I)
112 #if defined(GPAMELA_INTER)
113 XAVSPE(I) = VHITS(1,I)
114 YAVSPE(I) = VHITS(2,I)
115 ZAVSPE(I) = VHITS(3,I)
116 XOUTSPE(I) = VHITS(4,I)
117 YOUTSPE(I) = VHITS(5,I)
118 ZOUTSPE(I) = VHITS(6,I)
119 XINSPE(I) = 2*XAVSPE(I) - XOUTSPE(I)
120 YINSPE(I) = 2*YAVSPE(I) - YOUTSPE(I)
121 ZINSPE(I) = 2*ZAVSPE(I) - ZOUTSPE(I)
122 #endif
123 #if !defined(GPAMELA_INTER)
124 XINSPE(I) = VHITS(1,I)
125 YINSPE(I) = VHITS(2,I)
126 ZINSPE(I) = VHITS(3,I)
127 XOUTSPE(I) = VHITS(4,I)
128 YOUTSPE(I) = VHITS(5,I)
129 ZOUTSPE(I) = VHITS(6,I)
130 XAVSPE(I) = (XINSPE(I)+XOUTSPE(I))/2.
131 YAVSPE(I) = (YINSPE(I)+YOUTSPE(I))/2.
132 ZAVSPE(I) = (ZINSPE(I)+ZOUTSPE(I))/2.
133 #endif
134 ERELSPE(I) = VHITS(7,I)
135 PATHSPE(I) = VHITS(8,I)
136 IPARSPE(I) = VHITS(9,I)
137 P0SPE (I) = VHITS(10,I)
138 ENDDO
139 *
140 * Loop on the hits retrived to fill the CWN common and the DIGI bank
141 *
142 C fc IF (HF) NTHSPE = NHITS
143 C fc DO I=1,NHITS
144 C fc *
145 C fc * Start DIGI action
146 C fc *
147 C fc NPLANE=NUMBV(3,I)
148 C fc XI=VHITS(1,I)
149 C fc YI=VHITS(2,I)
150 C fc ZI=VHITS(3,I)
151 C fc XO=VHITS(4,I)
152 C fc YO=VHITS(5,I)
153 C fc ZO=VHITS(6,I)
154 C fc +SELF,IF=INTER
155 C fc * interactive case: we need the track edges
156 C fc XI=2.*XI-XO
157 C fc YI=2.*YI-YO
158 C fc ZI=2.*ZI-ZO
159 C fc +SELF.
160 C fc PATH=VHITS(8,I)
161 C fc DE=VHITS(7,I)
162 C fc IF(DE.GT.0.) THEN
163 C fc DO J=1,6
164 C fc NUMBVD(J)=NUMBV(J,I)
165 C fc ENDDO
166 C fc c+SELF,IF=PAOLO
167 C fc c CALL GPSPEHD(I,NPLANE,XI,YI,ZI,XO,YO,ZO,PATH,DE,LKDN)
168 C fc c+SELF
169 C fc c+SELF,IF=-PAOLO
170 C fc c CALL GPSPEHD(I,NUMBVD,NVSPE,XI,YI,ZI,XO,YO,ZO,PATH,DE,LKDN)
171 C fc c+SELF.
172 C fc NTDIGI = LKDN
173 C fc ENDIF
174 C fc *
175 C fc * Fill CWN common
176 C fc *
177 C fc IF(HF) THEN
178 C fc ITRPB(I) = NUMBV((NVSPE-3),I)
179 C fc ITRSL(I) = NUMBV((NVSPE-1),I)
180 C fc ITSPA(I) = NUMBV(NVSPE,I)
181 C fc XTSPA(I) = VHITS(1,I)
182 C fc YTSPA(I) = VHITS(2,I)
183 C fc ZTSPA(I) = VHITS(3,I)
184 C fc XOTSPA(I) = VHITS(4,I)
185 C fc YOTSPA(I) = VHITS(5,I)
186 C fc ZOTSPA(I) = VHITS(6,I)
187 C fc ERTSPA(I) = VHITS(7,I)
188 C fc PATSPA(I) = VHITS(8,I)
189 C fc ENDIF
190 C fc IF(CONT) HF = .FALSE.
191 C fc ENDDO
192 C fc IF(CONT) THEN
193 C fc NHFRST = NHFRST + NHM
194 C fc IF( (NTHIT-NHFRST).LE.NHM) CONT=.FALSE.
195 C fc GO TO 10
196 C fc ENDIF
197 C fc *
198 C fc * fill digits with noise included
199 C fc *
200 C fc IF(LKDN.GE.1) THEN
201 C fc DO II=1,LKDN
202 C fc * plane=0 if the signal is lesser than 1 ADC
203 C fc IF(INT(RLKD4(II)*ADCX).LE.0.AND.LKD2(II).GE.1.
204 C fc + AND.LKD2(II).LE.3) LKD1(II)=0
205 C fc IF(INT(RLKD4(II)*ADCY).LE.0.AND.LKD2(II).GE.4.
206 C fc + AND.LKD2(II).LE.5) LKD1(II)=0
207 C fc *
208 C fc JJ=LKDH(II)+(NHFRST-1)
209 C fc * KDIGI(1)=LKD1(II)
210 C fc * KDIGI(2)=LKD2(II)
211 C fc KDIGI(1)=LKD2(II)
212 C fc KDIGI(2)=LKD3(II)
213 C fc * R1=RAN(IR)
214 C fc * R2=RAN(IR)
215 C fc * GRNDM0=SIN(2.*3.14159*R1)*SQRT(-2.*LOG(R2))
216 C fc GRNDM0 = GPGAUS(0.)
217 C fc IF(LKD2(II).GE.1.AND.LKD2(II).LE.3) THEN
218 C fc RLKD4(II)=RLKD4(II)+GRNDM0*ENOISX+PIEDX
219 C fc KDIGI(3)=INT(RLKD4(II)*ADCX)
220 C fc ENDIF
221 C fc IF(LKD2(II).GE.4.AND.LKD2(II).LE.5) THEN
222 C fc RLKD4(II)=RLKD4(II)+GRNDM0*ENOISY+PIEDY
223 C fc KDIGI(3)=INT(RLKD4(II)*ADCY)
224 C fc ENDIF
225 C fc C+SELF,IF=PAOLO
226 C fc DO J=1,NVOL
227 C fc NUMBVD(J)=NUMBV(J,JJ)
228 C fc ENDDO
229 C fc C+SELF
230 C fc LTRA=ITRA(JJ)
231 C fc IF(KDIGI(3).LT.0) KDIGI(3)=0
232 C fc IF(KDIGI(3).GE.1024) KDIGI(3)=1023
233 C fc IF(KDIGI(3).GT.0.AND.LKD1(II).GT.0) THEN
234 C fc CALL GSDIGI(IS,ID,LTRA,NTRA,NUMBVD,KDIGI,IDIG)
235 C fc IF (IDIG.EQ.0) THEN
236 C fc WRITE(CHMAIL,10200) CSET,CNSED(IS,ID),NVOL,KDIGI
237 C fc CALL GMAIL(1,0)
238 C fc GO TO 20
239 C fc ENDIF
240 C fc ENDIF
241 C fc *
242 C fc * Fills CWN
243 C fc *
244 C fc IF(HF) THEN
245 C fc IF(LKD2(II).GE.1.AND.LKD2(II).LE.3) KDIGIT=INT(RLKD4(II)*
246 C fc + ADCX)
247 C fc IF(LKD2(II).GE.4.AND.LKD2(II).LE.5) KDIGIT=INT(RLKD4(II)*
248 C fc + ADCY)
249 C fc IF(KDIGIT.GT.0.AND.LKD1(II).GT.0) THEN
250 C fc NDISPE=NDISPE+1
251 C fc IF (NDISPE.LE.NDMSPE) THEN
252 C fc NDPLAN(NDISPE)=LKD1(II)
253 C fc NDSIL (NDISPE)=LKD2(II)
254 C fc NDISTR(NDISPE)=LKD3(II)
255 C fc IF(KDIGIT.LT.1024) THEN
256 C fc NDIADC(NDISPE)=KDIGIT
257 C fc ELSE
258 C fc NDIADC(NDISPE)=1023
259 C fc ENDIF
260 C fc ENDIF
261 C fc ENDIF
262 C fc ENDIF
263 C fc ENDDO
264 C fc ENDIF
265 *
266 10000 FORMAT(' GPDSPE: VOLUME level too big: SET=',A4,', DET=',A4,',
267 + NVOL=',I3,', NVMAX=',I3,', RUN=',I5,', EVT=',I8)
268 10100 FORMAT(' GPDSPE: Error in GPRHIT: SET=',A4,
269 + ', DET=',A4,',NHITS=',I5,', NHMAX=',I5,
270 + ', RUN=',I5,', EVT=',I8)
271 10200 FORMAT(' GPDSPE: digitization ERROR: SET=',A4,', DET=',A4,',
272 + NVOL=',I3,', KDIGI=',4I4)
273 20 RETURN
274 END

  ViewVC Help
Powered by ViewVC 1.1.23