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

Annotation of /gpamela/gpspe/gpdspe.F

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3.4 - (hide annotations) (download)
Wed Jan 18 09:41:33 2006 UTC (18 years, 10 months ago) by bottai
Branch: MAIN
Changes since 3.3: +8 -5 lines
 Some correction to the spe plane ID due to the new geometry tree

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

  ViewVC Help
Powered by ViewVC 1.1.23