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

Contents of /gpamela/gpspe/gpuspe.F

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3.1 - (show annotations) (download)
Thu Jul 11 16:02:14 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 06/03/2000 13.07.03 by Francesco Cafagna
7 *CMZ : 2.00/00 03/03/2000 15.39.06 by Francesco Cafagna
8 *CMZ : 1.02/00 22/10/99 15.34.29 by Francesco Cafagna
9 *CMZ : 1.01/00 23/05/96 15.01.53 by Francesco Cafagna
10 *CMZ : 1.00/02 04/04/96 16.47.16 by Francesco Cafagna
11 *-- Author : Francesco Cafagna 21/02/96
12 SUBROUTINE GPUSPE(IACT,IS,ID,IPA,IT,DELOSS,PATH,
13 + TRAPAR,NUMVOL,IMEC)
14 ************************************************************************
15 * *
16 * To collect and store the hit structure for SPE *
17 * *
18 * Variables definition: *
19 * IN: *
20 * IACT, integer specifing the action to be taken. It is the INWVOL *
21 * variable in GCTRAK common *
22 * IS , set number *
23 * ID , detector number *
24 * IPA , particle number *
25 * IT , track number *
26 * DELOSS, energy loss in the step *
27 * PATH , current track lenght *
28 * TRAPAR, track parameter, is the VECT vector in GCTRAK common *
29 * NUMVOL, integr array of numbers identifying the DETECTOR *
30 * IMEC , integer indicating the LOSS mecanism position inside NMEC *
31 * vector, zero if not present *
32 * *
33 * *
34 * Called by: GUSTEP *
35 * Author: Francesco Cafagna, 21/02/96 16.13.51 *
36 * *
37 ************************************************************************
38 #include "gphit.inc"
39 #include "gcunit.inc"
40 *
41 INTEGER IACT,IS,ID,IPA,IT,NUMVOL(20),IMEC,IDHIT
42 REAL DELOSS,PATH,TRAPAR(7),VHIT(NHSPE)
43 REAL DELTA2,SIGMA2,SIGMA,GRNDM0,GPGAUS
44 LOGICAL SAVE
45 *
46 * Track is inside a volume
47 *
48 IF(IACT.EQ.0) THEN
49 IF(IMEC.GT.0) THEN
50 SAVE = .TRUE.
51 VHIT(7) = DELOSS + VHIT(7)
52 ENDIF
53 ENDIF
54 *
55 * Entering a new volume or is a new track
56 *
57 IF(IACT.EQ.1) THEN
58 SAVE = .FALSE.
59 CALL VZERO(VHIT,NHSPE)
60 DO I=1,3
61 VHIT(I) = TRAPAR(I)
62 ENDDO
63 IF(IMEC.GT.0) THEN
64 SAVE = .TRUE.
65 VHIT(7) = DELOSS
66 ENDIF
67 VHIT(8) = PATH
68 VHIT(9) = IPA
69 VHIT(10)= TRAPAR(7)
70 IDHIT = -1
71 ENDIF
72 *
73 * Track is exiting current volume
74 *
75 IF(IACT.EQ.2) THEN
76 DO I=1,3
77 VHIT(I+3) = TRAPAR(I)
78 #if defined(GPAMELA_INTER)
79 * interactive case, we need the average position
80 VHIT(I) = (VHIT(I) + VHIT(I+3) )/2.
81 #endif
82 ENDDO
83 IF(IMEC.GT.0) THEN
84 SAVE = .TRUE.
85 VHIT(7) = DELOSS + VHIT(7)
86 ENDIF
87 VHIT(8) = PATH - VHIT(8)
88 #if defined(GPAMELA_NOGFLUCT)
89 *
90 * change in de/dx with gaussian convolution
91 * see Hall paper: NIM 220 (1984) 356.
92 *
93 * FIRST: Look if the STOP mechanism is present
94 *
95 IF(IMEC.EQ.1) THEN
96 * This particle has NOT been stopped. So gaussian energy spread...
97 * Delta is in GeV^2/cm
98 DELTA2=.5E-8
99 SIGMA2=DELTA2*VHIT(8)
100 SIGMA=SQRT(SIGMA2)
101 GRNDM0 = GPGAUS(0.)
102 VHIT(7)=VHIT(7)+GRNDM0*SIGMA
103 IF(VHIT(7).LT.0.) VHIT(7)=0.
104 ENDIF
105 #endif
106 *
107 * Store the hit
108 *
109 IF(IDHIT.EQ.-1) THEN
110 IF(SAVE) CALL GSAHIT (IS,ID,IT,NUMVOL,VHIT,IDHIT)
111 IF (IDHIT.EQ.0) THEN
112 WRITE(CHMAIL,10000) IS,ID,IT
113 CALL GMAIL(1,0)
114 ENDIF
115 ELSE
116 WRITE(CHMAIL,10100) IS,ID,IT
117 CALL GMAIL(1,0)
118 ENDIF
119 ENDIF
120 *
121 * Track is exiting the set up
122 *
123 IF(IACT.EQ.3) THEN
124 *
125 * Check if the hit have been previously stored or not
126 *
127 IF(IDHIT.LT.0) THEN
128 DO I=1,3
129 VHIT(I+3) = TRAPAR(I)
130 #if defined(GPAMELA_INTER)
131 * interactive case, we need the average position
132 VHIT(I) = (VHIT(I) + VHIT(I+3) )/2.
133 #endif
134 ENDDO
135 IF(IMEC.GT.0) THEN
136 SAVE = .TRUE.
137 VHIT(7) = DELOSS + VHIT(7)
138 ENDIF
139 VHIT(8) = PATH - VHIT(8)
140 #if defined(GPAMELA_NOGFLUCT)
141 *
142 * change in de/dx with gaussian convolution
143 * see Hall paper: NIM 220 (1984) 356.
144 *
145 * FIRST: Look if the STOP mechanism is present
146 *
147 IF(IMEC.EQ.1) THEN
148 * This particle has NOT been stopped. So gaussian energy spread...
149 * Delta is in GeV^2/cm
150 DELTA2=.5E-8
151 SIGMA2=DELTA2*VHIT(8)
152 SIGMA=SQRT(SIGMA2)
153 GRNDM0 = GPGAUS(0.)
154 VHIT(7)=VHIT(7)+GRNDM0*SIGMA
155 IF(VHIT(7).LT.0.) VHIT(7)=0.
156 ENDIF
157 #endif
158 *
159 * Store the hit
160 *
161 IF(IDHIT.EQ.-1) THEN
162 IF(SAVE) CALL GSAHIT (IS,ID,IT,NUMVOL,VHIT,IDHIT)
163 IF (IDHIT.EQ.0) THEN
164 WRITE(CHMAIL,10200) IS,ID,IT
165 CALL GMAIL(1,0)
166 ENDIF
167 ELSE
168 WRITE(CHMAIL,10300) IS,ID,IT
169 CALL GMAIL(1,0)
170 ENDIF
171 ENDIF
172 ENDIF
173 10000 FORMAT(' GPUSPE error: HIT have not be stored for SET='
174 + ,I4,', DET=',I4,', TRACK=',I6)
175 10100 FORMAT(' GPUSPE error: HIT have not be initialized for SET='
176 + ,I4,', DET=',I4,', TRACK=',I6)
177 10200 FORMAT(' GPUSPE error: HIT have not be stored for SET='
178 + ,I4,', DET=',I4,', TRACK=',I6)
179 10300 FORMAT(' GPUSPE error: HIT have not be initialized for SET='
180 + ,I4,', DET=',I4,', TRACK=',I6)
181 RETURN
182 END

  ViewVC Help
Powered by ViewVC 1.1.23