/[PAMELA software]/gpamela/gpcal/gpucal.F
ViewVC logotype

Contents of /gpamela/gpcal/gpucal.F

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3.2 - (show annotations) (download)
Wed Dec 17 11:32:48 2003 UTC (20 years, 11 months ago) by pamela
Branch: MAIN
CVS Tags: v4r0, v4r1
Changes since 3.1: +65 -26 lines
CALO SIMULATION COMPLETED: geometry and special tracking parameters updated and simulation checked by a comparison with the Trieste's standalone Monte Carlo simulation

1 *
2 * $Id: gpucal.F,v 3.1.1.1 2002/07/11 16:02:14 cafagna Exp $
3 *
4 * $Log: gpucal.F,v $
5 * Revision 3.1.1.1 2002/07/11 16:02:14 cafagna
6 * First GPAMELA release on CVS
7 *
8 *
9 *CMZ : 2.03/00 31/10/2000 10.57.01 by Francesco Cafagna
10 *CMZ : 2.01/00 05/04/2000 14.35.18 by Marialuigia Ambriola
11 *CMZ : 2.00/00 29/02/2000 10.23.24 by Francesco Cafagna
12 *CMZ : 1.02/00 08/02/2000 21.29.53 by Francesco Cafagna
13 *CMZ : 1.00/02 04/04/96 16.47.16 by Francesco Cafagna
14 *-- Author : Francesco Cafagna 21/02/96
15 SUBROUTINE GPUCAL(IACT,IS,ID,IPA,IT,DELOSS,PATH,
16 + TRAPAR,NUMVOL,IMEC)
17 ************************************************************************
18 * *
19 * To collect and store the hit structure for CAL *
20 * *
21 * Variables definition: *
22 * IN: *
23 * IACT, integer specifing the action to be taken. It is the INWVOL *
24 * variable in GCTRAK common *
25 * IS , set number *
26 * ID , detector number *
27 * IPA , particle number *
28 * IT , track number *
29 * DELOSS, energy loss in the step *
30 * PATH , current track lenght *
31 * TRAPAR, track parameter, is the VECT vector in GCTRAK common *
32 * NUMVOL, integer array of numbers identifying the DETECTOR *
33 * IMEC , integer indicating the LOSS mecanism position inside NMEC *
34 * vector, zero if not present *
35 * *
36 * *
37 * NOTE: The IT variable is overwritten and the GSCHIT is used *
38 * to account for the multi-tracks produced in an e.m. shower *
39 * *
40 * Called by: GUSTEP *
41 * Author: Francesco Cafagna, 21/02/96 16.13.51 *
42 * *
43 ************************************************************************
44 #include "gphit.inc"
45 #include "gcunit.inc"
46 *ml: (19/02/03)
47 #include "gckine.inc"
48 #include "gcflag.inc"
49 #include "gpencal.inc"
50 *end ml
51 *EM:
52 PARAMETER (CALIB=0.0001085200)
53 *END EM.
54 INTEGER IACT,IS,ID,IPA,IT,NUMVOL(20),IMEC,IDHIT
55 CML17/04/03 REAL DELOSS,PATH,TRAPAR(7),VHIT(NHCAL),XYZM(3),XYZD(3)
56 REAL DELOSS,PATH,TRAPAR(7),XYZM(3),XYZD(3)
57 REAL DELTA2,SIGMA2,SIGMA,GRNDM0,GPGAUS,PATHINI
58 LOGICAL SAVE
59 *
60 *ml (19/02/02):
61 INTEGER IPL,IMOD,IST
62 DATA IEVOLD/-1/
63 *
64 * It's a new event
65 *
66 IF(IEVOLD.NE.IEVENT) THEN
67 c print*,'IS,ID,NUMVOL=',IS,ID,NUMVOL
68 c print*,'GPUCAL:last event=',ievold
69 IEVOLD=IEVENT
70 CALL VZERO(ENEMAT,44*9*32)
71 ENDIF
72 *end ml.
73 *
74 * Track is inside a volume
75 *
76 IF(IACT.EQ.0) THEN
77 IF(IMEC.GT.0) THEN
78 SAVE = .TRUE.
79 *EM:
80 cccc VHIT(4) = (DELOSS/CALIB) + VHIT(4)
81 * END EM
82 C ML
83 CML17/04/03 VHIT(4) = DELOSS + VHIT(4)
84 ENEMAT(NUMVOL(1),NUMVOL(2),NUMVOL(3))=
85 + ENEMAT(NUMVOL(1),NUMVOL(2),NUMVOL(3))+DELOSS
86 *END ML
87 ENDIF
88 ENDIF
89 *
90 * Entering a new volume or is a new track
91 *
92 IF(IACT.EQ.1) THEN
93 SAVE = .FALSE.
94 CML17/04/03 CALL VZERO(VHIT,NHCAL)
95 CML17/04/03 DO I=1,3
96 CML17/04/03 VHIT(I) = TRAPAR(I)
97 CML17/04/03 ENDDO
98 IF(IMEC.GT.0) THEN
99 SAVE = .TRUE.
100 *EM:
101 c VHIT(4) = DELOSS/CALIB
102 *END EM.
103 CML17/04/03 VHIT(4) = DELOSS
104 C ML:
105 ENEMAT(NUMVOL(1),NUMVOL(2),NUMVOL(3))=
106 + ENEMAT(NUMVOL(1),NUMVOL(2),NUMVOL(3))+DELOSS
107 *END ML
108 ENDIF
109 IDHIT = -1
110 * Store the particle and momentum if is the first track
111 c IF(IT.EQ.1) THEN
112 c VHIT(5) = IPA
113 c VHIT(6) = TRAPAR(7)
114 c ENDIF
115 PATHINI = PATH
116 ENDIF
117 *
118 * Track is exiting current volume
119 *
120 IF(IACT.EQ.2) THEN
121 IF(IMEC.GT.0) THEN
122 SAVE = .TRUE.
123 *EM:
124 c VHIT(4) = (DELOSS/CALIB) + VHIT(4)
125 *END EM
126 CML17/04/03 VHIT(4) = DELOSS + VHIT(4)
127 *ML:
128 ENEMAT(NUMVOL(1),NUMVOL(2),NUMVOL(3))=
129 + ENEMAT(NUMVOL(1),NUMVOL(2),NUMVOL(3))+DELOSS
130 *END EM
131 ENDIF
132 #if defined(GPAMELA_NOGFLUCT)
133 *
134 * change in de/dx with gaussian convolution
135 * see Hall paper: NIM 220 (1984) 356.
136 *
137 * FIRST: Look if the STOP mechanism is present
138 *
139 IF(IMEC.EQ.1) THEN
140 * This particle has NOT been stopped. So gaussian energy spread...
141 * Delta is in GeV^2/cm
142 DELTA2=.5E-8
143 SIGMA2=DELTA2*(PATH - PATHINI)
144 SIGMA=SQRT(SIGMA2)
145 GRNDM0 = GPGAUS(0.)
146 *EM:
147 c VHIT(4)=VHIT(4)+GRNDM0*SIGMA/CALIB
148 CML17/04/03 VHIT(4)=VHIT(4)+GRNDM0*SIGMA
149 *END EM
150 CML17/04/03 IF(VHIT(4).LT.0.) VHIT(4)=0.
151 ENDIF
152 #endif
153 *
154 * Store the hit
155 *
156 IF(IDHIT.EQ.-1) THEN
157 *ML:
158 * IF(SAVE) CALL GSCHIT (IS,ID,1,NUMVOL,VHIT,4,IDHIT)
159 CL IF(SAVE) CALL GSCHIT (IS,ID,1,NUMVOL,VHIT,1,IDHIT)
160 *END ML.
161 IF (IDHIT.EQ.0) THEN
162 WRITE(CHMAIL,10000) IS,ID,IT
163 CALL GMAIL(1,0)
164 ENDIF
165 ELSE
166 WRITE(CHMAIL,10100) IS,ID,IT
167 CALL GMAIL(1,0)
168 ENDIF
169 ENDIF
170 *
171 * Track is exiting the set up
172 *
173 IF(IACT.EQ.3) THEN
174 *
175 * Check if the hit have been previously stored or not
176 *
177 IF(IDHIT.LT.0) THEN
178 IF(IMEC.GT.0) THEN
179 SAVE = .TRUE.
180 *EM:
181 c VHIT(4) = (DELOSS/CALIB) + VHIT(4)
182 * END EM.
183 CML17/04/03 VHIT(4) = DELOSS + VHIT(4)
184 *ML:
185 ENEMAT(NUMVOL(1),NUMVOL(2),NUMVOL(3))=
186 + ENEMAT(NUMVOL(1),NUMVOL(2),NUMVOL(3))+DELOSS
187 *END ML.
188 ENDIF
189 #if defined(GPAMELA_NOGFLUCT)
190 *
191 * change in de/dx with gaussian convolution
192 * see Hall paper: NIM 220 (1984) 356.
193 *
194 * FIRST: Look if the STOP mechanism is present
195 *
196 IF(IMEC.EQ.1) THEN
197 * This particle has NOT been stopped. So gaussian energy spread...
198 * Delta is in GeV^2/cm
199 DELTA2=.5E-8
200 SIGMA2=DELTA2*(PATH - PATHINI)
201 SIGMA=SQRT(SIGMA2)
202 GRNDM0 = GPGAUS(0.)
203 *EM:
204 c VHIT(4)=VHIT(4)+GRNDM0*SIGMA/CALIB
205 CML17/04/03 VHIT(4)=VHIT(4)+GRNDM0*SIGMA
206 *END EM.
207 CML17/04/03 IF(VHIT(4).LT.0.) VHIT(4)=0.
208 ENDIF
209 #endif
210 *
211 * Store the hit
212 *
213 IF(IDHIT.EQ.-1) THEN
214 *ML
215 * IF (SAVE) CALL GSCHIT (IS,ID,1,NUMVOL,VHIT,4,IDHIT)
216 CL IF (SAVE) CALL GSCHIT (IS,ID,1,NUMVOL,VHIT,1,IDHIT)
217 *END ML.
218 IF (IDHIT.EQ.0) THEN
219 WRITE(CHMAIL,10200) IS,ID,IT
220 CALL GMAIL(1,0)
221 ENDIF
222 ELSE
223 WRITE(CHMAIL,10300) IS,ID,IT
224 CALL GMAIL(1,0)
225 ENDIF
226 ENDIF
227 ENDIF
228 10000 FORMAT(' GPUCAL error: HIT have not be stored for SET='
229 + ,I4,', DET=',I4,', TRACK=',I6)
230 10100 FORMAT(' GPUCAL error: HIT have not be initialized for SET='
231 + ,I4,', DET=',I4,', TRACK=',I6)
232 10200 FORMAT(' GPUCAL error: HIT have not be stored for SET='
233 + ,I4,', DET=',I4,', TRACK=',I6)
234 10300 FORMAT(' GPUCAL error: HIT have not be initialized for SET='
235 + ,I4,', DET=',I4,', TRACK=',I6)
236 RETURN
237 END

  ViewVC Help
Powered by ViewVC 1.1.23