COSMOS v7.655  COSMOSv7655
(AirShowerMC)
chookSkel.f File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine chookbgrun
 
subroutine chookbgevent
 
subroutine chookobs (aTrack, id)
 
subroutine chookenevent
 
subroutine chookenrun
 
subroutine chooktrace
 
subroutine chookeint (never)
 
subroutine chookgint (never)
 
subroutine chooknepint (never)
 
subroutine cmemonode (dev, flag)
 
subroutine cmemorize (from, to)
 
subroutine cputhes (to)
 
subroutine cputnodinfo (from, to)
 

Function/Subroutine Documentation

◆ chookbgevent()

subroutine chookbgevent ( )

Definition at line 114 of file chookSkel.f.

References charge, code, cqincident(), csetemin(), depth, e, kgnuc, p, r, subcode, and x.

114  implicit none
115 #include "Zprivate.h"
116 #include "Ztrack.h"
117 #include "Ztrackv.h"
118 #include "Ztrackp.h"
119 #include "Zobs.h"
120 #include "Zobsp.h"
121 #include "Zobsv.h"
122 #include "Zcode.h"
123 
124 
125 
126  type(track)::incident
127  type(coord)::angle
128 
129 
130  integer eventno
131  integer i, j
132  integer seed(2)
133  real*8 sveaswait, svethin(4), kepn
134 
135 
136  np = 0
137  call cqincident( incident, angle)
138  kepn = incident.p.fm.p(4)
139  if( incident.p.code .eq. kgnuc ) then
140  kepn = kepn/ incident.p.subcode
141  endif
142  ethresh = kepn * waitratio
143 
144  sveaswait = easwait ! for safety save
145  svethin(1) = ethin(1) ! //
146  svethin(2) = ethin(2) ! //
147  svethin(3) = ethin(3) ! //
148  svethin(4) = ethin(4) ! //
149  call csetemin(generate2, keminobs2(1), cutneg, cuteg)
150  easwait = sveaswait ! restore
151  ethin(1) = svethin(1)
152  ethin(2) = svethin(2)
153  ethin(3) = svethin(3)
154  ethin(4) = svethin(4)
155 
156  rewind wdev
157 
158 ! ===================================================
159 
160  eventno = eventno + 1
161  do i = 1, noofsites
162  write(*, 1000)
163  * sngl(obssites(i).pos.depth),
164  * eventno,
165  * incident.p.code,
166  * incident.p.subcode,
167  * incident.p.charge,
168  * incident.p.fm.e,
169  * -angle.r(1),
170  * -angle.r(2),
171  * -angle.r(3)
172  1000 format(f10.3,i9,3i4,e15.5,3(1x,f12.8))
173  enddo
174 
175 
176 ! ===================================================
*Zfirst p fm *Zfirst p Zfirst p Zfirst p *Zfirst p *Zfirst pos xyz Zfirst pos xyz *Zfirst pos *Zfirst pos depth
Definition: ZavoidUnionMap.h:1
subroutine cqincident(incident, AngleAtObs)
Definition: cmkIncident.f:486
dE dx *! Nuc Int sampling table e
Definition: cblkMuInt.h:130
*Zfirst p fm *Zfirst p Zfirst p Zfirst p *Zfirst p *Zfirst pos xyz r
Definition: ZavoidUnionMap.h:1
nodes i
max ptcl codes in the kgnuc
Definition: Zcode.h:2
Definition: Ztrack.h:44
subroutine csetemin(gen, eminob, emin, emCas)
Definition: ciniTracking.f:242
********************block data cblkHeavy ********************integer j data *HeavyG2symbol p
Definition: cblkHeavy.h:7
********************block data cblkHeavy ********************integer j data *HeavyG2symbol *data *HeavyG2code kiron data j
Definition: cblkHeavy.h:36
*Zfirst p fm *Zfirst p Zfirst p code
Definition: ZavoidUnionMap.h:1
*Zfirst p fm *Zfirst p Zfirst p Zfirst p *Zfirst p charge
Definition: ZavoidUnionMap.h:1
Definition: Zcoord.h:43
! structure defining a particle at production ! Basic idea of what is to be contained in ! the particle structue is that dynamical ones should be included those derivable from the particle code ! is not included ******************************************************type fmom momentum sequence union map real e endmap map real * x
Definition: Zptcl.h:21
*Zfirst p fm *Zfirst p Zfirst p Zfirst p subcode
Definition: ZavoidUnionMap.h:1
Here is the call graph for this function:

◆ chookbgrun()

subroutine chookbgrun ( )

Definition at line 14 of file chookSkel.f.

References cerrormsg(), cgetfname(), cprintobs(), cprintprim(), cquhookc(), cquhooki(), cquhookr(), cwriteparam(), mpirank, true, and where.

14  implicit none
15 #include "Zmaxdef.h"
16 #include "Zmanagerp.h"
17 #include "Zprivate.h"
18 #include "Ztrack.h"
19 ! #include "mpif.h"
20 ! #include "Zmpi.h"
21 #if defined (DOMPI)
22 #include "mpif.h"
23 #include "Zmpi.h"
24  real*8 etime1
25  etime1 = mpi_wtime()
26  write(0,*) 'rank=',mpirank, ' time start=',etime1
27 #else
28  integer::mpirank=-1
29 #endif
30  character*10 append
31  character*100 msg
32  logical ex, opn
33  integer klena
34  if(mpirank .le. 0) then
35 ! namelist output
36  call cwriteparam(errorout, 0)
37 ! primary information
38  call cprintprim(errorout)
39 ! observation level information
40  call cprintobs(errorout)
41  endif
42 
43 
44 
45  call cquhooki(1, mdev) ! get skeleton memo dev #
46  call cquhooki(2, wdev) ! get working disk dev #
47 
48 
49  call cquhooki(3, ngmin) ! get Nh min
50  call cquhooki(4, nhmin) ! get Ng min
51  call cquhooki(5, where) ! where to check
52 
53  call cquhookr(1, sumegmin) ! sum E min
54  call cquhookr(2, sumehmin)
55 
56 
57 
58  call cquhookc(1, msg) ! get file name for sekelton memo
59  call cgetfname(msg, mskel) ! add host name etc if needed
60  call cquhookc(2, msg) ! get file name for working
61  call cgetfname(msg, wskel) ! add host name etc if neededn
62  call cquhookc(3, append) ! append data, if Mskel already exists
63 
64  write(msg, *) 'Skeleton is judged at obs.pos=', Where
65  call cerrormsg(msg, 1)
66  write(msg, *) ' Ngmin=',ngmin,
67  * ' SumEGmin=',sumegmin/1000.,'TeV'
68  call cerrormsg(msg, 1)
69  write(msg, *) ' Nhmin=',nhmin,
70  * ' SumEHmin=',sumehmin/1000.,'TeV'
71  call cerrormsg(msg, 1)
72 
73 !
74  inquire(file=mskel(1:klena(mskel)), opened=opn, exist=ex)
75  if(opn) then
76  call cerrormsg(mskel, 1)
77  call cerrormsg(' already opened: starange', 0)
78  elseif(ex .and.
79  * append(1:klena(append)) .eq. 'append' ) then
80  open(mdev, file=mskel, form='unformatted',status='old')
81  call cerrormsg('skeleton node info. will be appended', 1)
82 ! skip to the end of file
83  do while( .true. )
84  read(mdev, end=100)
85  enddo
86  else
87  if(ex .and.
88  * append(1:klena(append)) .ne. 'append' ) then
89  call cerrormsg(
90  * 'Old skeleton node info. file exists', 1)
91  call cerrormsg(
92  * 'but node info. will NOT be appended', 1)
93  endif
94  open(mdev, file=mskel(1:klena(mskel)), form='unformatted',
95  * status='unknown')
96  endif
97 
98  100 continue
99 
100  open(wdev, file=wskel(1:klena(wskel)), form='unformatted',
101  * status='unknown' )
102 
103  accepted = 0 ! counter; accepted as skeleton
104 !
subroutine cgetfname(fnin, fn)
Definition: copenf.f:275
subroutine cerrormsg(msg, needrtn)
Definition: cerrorMsg.f:4
subroutine cprintobs(io)
Definition: cprintObs.f:2
block data cblkElemag data *AnihiE ! Eposi< 1 TeV, anihilation considered *X0/365.667/, ! radiation length of air in kg/m2 *Ecrit/81.e-3/, ! critical energy of air in GeV *MaxComptonE/1./, ! compton is considered below 1 GeV *MaxPhotoE/1.e-3/, ! above this, PhotoElectric effect neg. *MinPhotoProdE/153.e-3/, ! below 153 MeV, no gp --> hadrons ! scattering const not MeV *Knockon true
Definition: cblkElemag.h:7
subroutine cprintprim(out)
Definition: cprintPrim.f:3
subroutine cwriteparam(io, force)
Definition: cwriteParam.f:4
integer mpirank
Definition: Zmpibasic.h:1
subroutine cquhookr(i, rv)
Definition: cqUHookr.f:2
integer function klena(cha)
Definition: klena.f:20
subroutine cquhooki(i, iv)
Definition: cqUHookr.f:15
*Zfirst p fm *Zfirst p Zfirst p Zfirst p *Zfirst p *Zfirst pos xyz Zfirst pos xyz *Zfirst pos *Zfirst pos Zfirst pos *Zfirst pos *Zfirst Zfirst vec w *Zfirst vec w Zfirst vec *Zfirst Zfirst where
Definition: ZavoidUnionMap.h:1
subroutine cquhookc(i, cv)
Definition: cqUHookr.f:28
Here is the call graph for this function:

◆ chookeint()

subroutine chookeint ( integer  never)

Definition at line 382 of file chookSkel.f.

References asflag, cmemonode(), code, kelec, and p.

382  implicit none
383 #include "Zprivate.h"
384 #include "Ztrack.h"
385 #include "Ztrackv.h"
386 #include "Zcode.h"
387 ! #include "Ztrackp.h"
388  integer never ! input & output
389  integer nlow
390 !
391 ! If Job = 'newskel', input "never" may be < 0, and MovedTrack
392 ! may not be an electron.
393 ! never = -1 : MovedTrack K.E becomes < KEminObs due to
394 ! energy loss during traveling.
395 ! never = -2 : The same as above, but the particle crosses an
396 ! observation depth, so the calling point to this
397 ! routine is different from the never = -1 case.
398 ! never = -3 : K.E >= KEminiObs. The ptcl is observed at the
399 ! current deepest Obs. level. but at the flesh time
400 ! the deepest level will be more deep so that
401 ! this must be memorized.
402 !
403 ! For above cases, the product is only MovedTrack and
404 ! no particle is in PWork.
405 ! Otherwise,
406 ! MovedTrack is the electron that made interaction
407 ! Pwork contains produced particles (normally gamma, but mayb e).
408 ! Nproduced has the number of particles in Pwork (normally 1)
409 ! IntInfArray(ProcessNo) contains the type of interaction
410 ! IntInfArray(ProcessNo).process will have one of
411 ! 'brems', 'mscat', 'bscat' 'anihi' or 'mbrem'
412 !
413  if(never .lt. 0) then
414  nproduced = 1
415 ! IBM user must modify next
416  pwork(1) = movedtrack.p
417  endif
418 
419 ! high energy parent at node might be used
420 ! for hybrid AS generation if it is in some
421 ! energy region.
422  if( movedtrack.p.code .eq. kelec ) then
423  if( movedtrack.asflag .eq. 0 ) then
424  if( movedtrack.p.fm.p(4) .lt. ethresh ) then
425  movedtrack.asflag = -1
426  endif
427  endif
428  endif
429 
430  call cmemonode(wdev, never)
431  if(movedtrack.asflag .eq. -1) then
432 ! decendent should not be used to generae A.S
433  movedtrack.asflag = -2
434  endif
435 
436  10 continue
437  never = 0
max ptcl codes in the kelec
Definition: Zcode.h:2
********************block data cblkHeavy ********************integer j data *HeavyG2symbol p
Definition: cblkHeavy.h:7
*Zfirst p fm *Zfirst p Zfirst p Zfirst p *Zfirst p *Zfirst pos xyz Zfirst pos xyz *Zfirst pos *Zfirst pos Zfirst pos *Zfirst pos *Zfirst Zfirst vec w *Zfirst vec w Zfirst vec *Zfirst Zfirst Zfirst asflag
Definition: ZavoidUnionMap.h:1
*Zfirst p fm *Zfirst p Zfirst p code
Definition: ZavoidUnionMap.h:1
subroutine cmemonode(dev, flag)
Definition: chookSkel.f:467
Here is the call graph for this function:

◆ chookenevent()

subroutine chookenevent ( )

Definition at line 257 of file chookSkel.f.

References cmemorize(), code, erg, kelec, kgnuc, knuc, kpion, o, p, and where.

257 
258  implicit none
259 #include "Ztrack.h"
260 #include "Zcode.h"
261 #include "Ztrackv.h"
262 #include "Zobs.h"
263 #include "Zobsp.h"
264 #include "Zobsv.h"
265 #include "Zmanagerp.h"
266 #include "Zprivate.h"
267 
268  integer i
269  integer seed(2)
270  real sumeg, sumeh
271  logical memorize
272 
273  integer ng, nh
274 
275  ng = 0
276  nh = 0
277 
278  sumeg = 0
279  sumeh =0
280 ! count sum Eg etc
281  do i = 1, np
282  if(o(i).where .eq. where) then
283  if(o(i).code .le. kelec) then
284  ng = ng + 1
285  sumeg = sumeg + o(i).erg
286  elseif( ( o(i).code .ge. kpion .and.
287  * o(i).code .le. knuc )
288  * .or.
289  * o(i).code .eq. kgnuc) then
290  nh = nh + 1
291  sumeh = sumeh + o(i).erg
292  endif
293  endif
294  enddo
295 
296 ! ===================================================
297  memorize =(ng .ge. ngmin .and. sumeg .ge. sumegmin) .or.
298  * ( nh .ge. nhmin .and. sumeh .ge. sumehmin)
299 
300 !/////
301  write(0,*) ' memo=', memorize,
302  * ' ng=',ng, ' seg=',sumeg, ' nh=',nh,' seh=',sumeh
303 !//////
304 
305 
306 ! ===================================================
307  if(memorize) then
308  accepted = accepted + 1
309 !c call cwriteSeed
310 ! ! SeedFile (seed will be written by cmemorize)
311 ! flag for end of 1 event on working disk
312  write(wdev) -1, p
313  call cmemorize(wdev, mdev) ! reocord this event
314  endif
others if is ng
Definition: cblkManager.h:9
nodes i
max ptcl codes in the kgnuc
Definition: Zcode.h:2
subroutine cmemorize(from, to)
Definition: chookSkel.f:599
max ptcl codes in the kelec
Definition: Zcode.h:2
********************block data cblkHeavy ********************integer j data *HeavyG2symbol p
Definition: cblkHeavy.h:7
*Zfirst p fm *Zfirst p Zfirst p code
Definition: ZavoidUnionMap.h:1
********************block data cblkHeavy ********************integer j data *HeavyG2symbol *data *HeavyG2code knuc
Definition: cblkHeavy.h:7
struct ob o[NpMax]
Definition: Zprivate.h:34
float erg[maxp]
Definition: Zprivate.h:7
int nh[nl][nth]
Definition: Zprivate.h:13
*Zfirst p fm *Zfirst p Zfirst p Zfirst p *Zfirst p *Zfirst pos xyz Zfirst pos xyz *Zfirst pos *Zfirst pos Zfirst pos *Zfirst pos *Zfirst Zfirst vec w *Zfirst vec w Zfirst vec *Zfirst Zfirst where
Definition: ZavoidUnionMap.h:1
max ptcl codes in the kpion
Definition: Zcode.h:2
Here is the call graph for this function:

◆ chookenrun()

subroutine chookenrun ( )

Definition at line 322 of file chookSkel.f.

References cerrormsg(), and cprintstatus().

322  implicit none
323 #include "Zprivate.h"
324  character*100 msg
325 ! =========================================
326 
327 
328 ! =========================================
329  call cerrormsg('++++++++++++', 1)
330  write(msg, '(i8, a)') accepted,
331  * ' events are memorized as skeleton'
332  call cerrormsg(msg, 1)
333  call cerrormsg('their seeds are also memorized', 1)
334  call cerrormsg('-----------',1)
335  close(mdev)
336  call cprintstatus ! if don't like, comment out
subroutine cerrormsg(msg, needrtn)
Definition: cerrorMsg.f:4
subroutine cprintstatus
Definition: cendRun.f:35
Here is the call graph for this function:

◆ chookgint()

subroutine chookgint ( integer  never)

Definition at line 444 of file chookSkel.f.

References cmemonode().

444  implicit none
445 #include "Zprivate.h"
446 #include "Ztrack.h"
447 #include "Ztrackv.h"
448 ! #include "Ztrackp.h"
449 
450  integer never ! input & output
451 
452 ! don't make never = 1, if you want to get
453 ! information after a gamma ray made interaction
454 ! if this is made non zero, this routine will never be called.
455 !
456 ! MovedTrack is the gamma that made interaction
457 ! Pwork contains produced particles.
458 ! Nproduced has the number of particles in Pwork
459 ! IntInfArray(ProcessNo) contains the type of interaction
460 ! IntInfArray(ProcessNo).process will have one of
461 ! 'pair', 'comp', 'photoe' 'photop' 'mpair'
462  call cmemonode(wdev, 1)
463  never = 0
subroutine cmemonode(dev, flag)
Definition: chookSkel.f:467
Here is the call graph for this function:

◆ chooknepint()

subroutine chooknepint ( integer  never)

Definition at line 470 of file chookSkel.f.

References cmemonode().

470  implicit none
471 #include "Zprivate.h"
472 #include "Ztrack.h"
473 #include "Ztrackv.h"
474 #include "Ztrackp.h"
475 
476  integer never ! input & output
477 
478 
479 ! don't make never = 1, if you want to get
480 ! information after a non-e-g particle made interaction
481 ! if this is made non zero, this routine will never be called.
482 !
483 ! MovedTrack is the particle that made interaction
484 ! Pwork contains produced particles.
485 ! Nproduced has the number of particles in Pwork
486 ! IntInfArray(ProcessNo) contains the type of interaction
487 !
488 
489  call cmemonode(wdev, 1)
490  never = 0
subroutine cmemonode(dev, flag)
Definition: chookSkel.f:467
Here is the call graph for this function:

◆ chookobs()

subroutine chookobs ( type(track aTrack,
integer  id 
)

Definition at line 185 of file chookSkel.f.

References cerrormsg(), charge, code, coszenith, erg, kneue, kneumu, mass, ng, nth, o, p, r, subcode, t, x, xyz, and y.

185 !
186 ! Note that every real variable is in double precision so
187 ! that you may output it in sigle precision to save the memory.
188 ! In some cases it is essential to put it in sigle (say,
189 ! for gnuplot).
190 !
191  implicit none
192 #include "Zcode.h"
193 #include "Ztrack.h"
194 #include "Zprivate.h"
195  integer id ! input. 2 ==> reached at an observation level
196 ! 1 ==> aTrack is going out from
197 ! outer boundery.
198 ! 2 ==> reached at an observation level
199 ! 3 ==> reached at inner boundery.
200  type(track)::atrack
201 !
202 ! For id =2, you need not output the z value, because it is always
203 ! 0 (within the computational accuracy).
204 !
205 ! ===================================================
206  common /testcos/sumg, ng(20), nth, eventno
207  real*8 sumg
208  integer ng, nth, eventno
209 
210 ! ===================================================
211  if( id .eq. 2 .and. atrack.p.code .ne. kneumu .and.
212  * atrack.p.code .ne. kneue) then
213  np = np + 1
214  if( np .gt. npmax) then
215  call cerrormsg(
216  * '# of particles >NpMax in observation', 0)
217  endif
218  o(np).where = atrack.where
219  o(np).code = atrack.p.code
220  o(np).subcode = atrack.p.subcode
221  o(np).charge = atrack.p.charge
222  o(np).atime = atrack.t
223  o(np).erg = atrack.p.fm.p(4)
224  o(np).mass = atrack.p.mass
225  o(np).x = atrack.pos.xyz.r(1)
226  o(np).y = atrack.pos.xyz.r(2)
227  o(np).wx =atrack.vec.w.r(1)
228  o(np).wy =atrack.vec.w.r(2)
229  o(np).wz =atrack.vec.w.r(3)
230  o(np).zenith = atrack.vec.coszenith
231 ! ===================================================
232  if( o(np).code .le. 6 .and. o(np).code .ne. 3 ) then
233  write(*, 959)
234  * o(np).where,
235  * o(np).code,
236  * o(np).charge,
237  * ( o(np).erg - o(np).mass ),
238  * ( o(np).x ), ( o(np).y ) ,
239  * ( o(np).wx ),
240  * ( o(np).wy ),
241  * ( o(np).wz ),
242  * ( o(np).zenith )
243  959 format(3i3, g14.3,2f16.6,4(1x,f12.8))
244  endif
245 
246 ! ===================================================
247  endif
248 ! ===================================================
249 
250 ! ===================================================
subroutine cerrormsg(msg, needrtn)
Definition: cerrorMsg.f:4
others if is ng
Definition: cblkManager.h:9
*Zfirst p fm *Zfirst p Zfirst p Zfirst p *Zfirst p *Zfirst pos xyz r
Definition: ZavoidUnionMap.h:1
latitude latitude this system is used *****************************************************************! type coord sequence union map real z z in m endmap xyz map real ! latitude in deg is to the north ! longitude in deg is to the east *h ! height in m endmap llh map real ! polar angle ! azimuthal angle *radius ! radial distance endmap sph endunion character *sys ! which system xyz
Definition: Zcoord.h:25
Definition: Ztrack.h:44
max ptcl codes in the kneue
Definition: Zcode.h:2
!onst int nth
Definition: Zprivate.h:2
********************block data cblkHeavy ********************integer j data *HeavyG2symbol p
Definition: cblkHeavy.h:7
*Zfirst p fm *Zfirst p Zfirst p code
Definition: ZavoidUnionMap.h:1
struct ob o[NpMax]
Definition: Zprivate.h:34
max ptcl codes in the kneumu
Definition: Zcode.h:2
latitude latitude this system is used *****************************************************************! type coord sequence union map real y
Definition: Zcoord.h:25
*Zfirst p fm *Zfirst p Zfirst p Zfirst p *Zfirst p *Zfirst pos xyz Zfirst pos xyz *Zfirst pos *Zfirst pos Zfirst pos *Zfirst pos *Zfirst Zfirst vec w *Zfirst vec w Zfirst vec coszenith
Definition: ZavoidUnionMap.h:1
float erg[maxp]
Definition: Zprivate.h:7
*Zfirst p fm *Zfirst p Zfirst p Zfirst p *Zfirst p charge
Definition: ZavoidUnionMap.h:1
nodes t
*Zfirst p fm *Zfirst p mass
Definition: ZavoidUnionMap.h:1
! structure defining a particle at production ! Basic idea of what is to be contained in ! the particle structue is that dynamical ones should be included those derivable from the particle code ! is not included ******************************************************type fmom momentum sequence union map real e endmap map real * x
Definition: Zptcl.h:21
*Zfirst p fm *Zfirst p Zfirst p Zfirst p subcode
Definition: ZavoidUnionMap.h:1
Here is the call graph for this function:

◆ chooktrace()

subroutine chooktrace ( )

Definition at line 347 of file chookSkel.f.

References height.

347  implicit none
348 
349 #include "Ztrack.h"
350 #include "Ztrackv.h"
351 #include "Ztrackp.h"
352 #include "Zobs.h"
353 #include "Zobsv.h"
354 
355  real*4 h1, h2
356 !
357 ! Every time a particle is moved in the atmosphere, this routine is called,
358 ! if trace > 100
359 ! For a one track segment,
360 ! TrackBefMove has track information at the beginning of the segment.
361 ! MoveTrack has track information at the end of the segment.
362 !
363 ! You can know the information a track contains in the
364 ! chookObs routine. (Note however, no conversion of coordinate
365 ! has been done. The values are in the Earth xyz system.)
366 ! Besides quantities explained there, you can use, for a given 'track'
367 !
368 ! atrack.pos.xyz.x, atrack.pos.xyz.y, atrack.pos.xyz.z (x,y.z)
369 ! atrack.pos.radiallen (distance from the center of the earth)
370 ! atrack.pos.depth (vertical depth)
371 ! atrack.pos.height (vertical heigth from sea level)
372 !
373 
374  h1 = trackbefmove.pos.height- obssites(noofsites).pos.height
375  h2 = movedtrack.pos.height - obssites(noofsites).pos.height
376 
*Zfirst p fm *Zfirst p Zfirst p Zfirst p *Zfirst p *Zfirst pos xyz Zfirst pos xyz *Zfirst pos *Zfirst pos Zfirst pos height
Definition: ZavoidUnionMap.h:1

◆ cmemonode()

subroutine cmemonode ( integer  dev,
integer  flag 
)

Definition at line 494 of file chookSkel.f.

References asflag, c, charge, code, colheight, coszenith, depth, erg, height, kelec, mass, p, r, subcode, t, and xyz.

494  implicit none
495 #include "Zcode.h"
496 #include "Ztrack.h"
497 #include "Ztrackv.h"
498 #include "Ztrackp.h"
499 #include "Zprivate.h"
500 !
501  integer dev ! input. fortran logical dev. number for data write
502  integer flag ! input. If this is -3, high energy particles must
503  ! also be memorized.
504 !
505 !
506 ! memorize nodal information at interaction.
507 !
508 ! \
509 ! \ projectile = MovedTrack
510 ! /|\ produced particles.: Pwork(i), i=1~Nproduced
511 ! / | \
512 !
513 ! From projectile, the track information is extracted
514 ! From produced particles, only those of K.E< KEminObs is
515 ! extracted and information needed for further tracking is
516 ! obtaned and memorized. The position information is common
517 ! to all the children.
518 !
519 ! Track information; pos =
520 ! xyz = r(1~3), sys
521 ! radiallen, depth, height, colheight
522 ! t
523 ! vec =
524 ! w = r(1~3), sys
525 ! coszenith
526 ! wgt
527 ! where
528 ! asflag
529 !
530 ! Among these, we don't memorize
531 ! sys which is always 'xyz'
532 ! radiallen: can be computed from height
533 ! vec; children knows their direction
534 ! wgt: normally not needed, it should be 1 for skeleton making
535 ! So thinsamping must not be used when making skeleton.
536 ! asflag: should be always F, (assume for skeleton making, hybrid
537 ! air shower is not requested)
538 !
539 ! write track info. of projectile
540 !
541  integer i, nlow
542  real*8 ke
543 
544 !
545 !
546  nlow = 0
547  do i = 1, nproduced
548  ke = pwork(i).fm.p(4) - pwork(i).mass
549  if( ( pwork(i).code .le. kelec .and.
550  * ke .ge. cuteg ) .or.
551  * ( pwork(i).code .gt. kelec .and.
552  * ke .ge. cutneg ) ) then
553 ! count low energy ptcls
554  if(flag .ne. -3) then
555  if( ke .lt. keminobs(1)) then
556  nlow = nlow + 1
557  endif
558  else
559 ! all ptcl must be memorized
560  nlow = nlow + 1
561  endif
562  endif
563  enddo
564 ! next is harmful for B-approx air shower
565 ! because, parent is not memorized and cannot
566 ! generate AS at flesh time at proper positon
567 ! asflag == -1 must apear in flesh
568 ! if(nlow .eq. 0 ) return ! *************
569 ! if there is no return here, the size of skeleton data
570 ! becomes 3.2 times larger
571  if(nlow .eq. 0 .and. movedtrack.asflag .ne. -1) return
572 
573 
574  p.posx = movedtrack.pos.xyz.r(1)
575  p.posy = movedtrack.pos.xyz.r(2)
576  p.posz = movedtrack.pos.xyz.r(3)
577  p.depth = movedtrack.pos.depth
578  p.height = movedtrack.pos.height
579  if( movedtrack.pos.colheight .gt. 1.e36) then
580  p.colheight = 1.e36 ! no col. yet.
581  else
582  p.colheight = movedtrack.pos.colheight
583  endif
584  p.atime = movedtrack.t
585  p.where = movedtrack.where
586  p.coszenith = movedtrack.vec.coszenith
587  p.code = movedtrack.p.code
588  p.erg = movedtrack.p.fm.p(4)
589  p.asflag = movedtrack.asflag
590 
591 
592 !c
593 !c * p.posx, p.posy, p.posz, p.depth, p.height,
594 !c * p.colHeight, p.atime, p.where
595 !c
596 ! write particle info
597 ! p(1~4)
598 ! mass
599 ! code
600 ! subcode
601 ! charge
602 !
603 
604 
605  write(dev) nlow, p
606 
607 
608  do i = 1, nproduced
609  ke = pwork(i).fm.p(4) - pwork(i).mass
610  if( ( pwork(i).code .le. kelec .and.
611  * ke .ge. cuteg ) .or.
612  * ( pwork(i).code .gt. kelec .and.
613  * ke .ge. cutneg ) ) then
614 
615  if(flag .eq. -3 .or. ke .lt. keminobs(1)) then
616  c.code = pwork(i).code
617  c.subcode = pwork(i).subcode
618  c.charge = pwork(i).charge
619  c.fm(1) = pwork(i).fm.p(1)
620  c.fm(2) = pwork(i).fm.p(2)
621  c.fm(3) = pwork(i).fm.p(3)
622  c.fm(4) = pwork(i).fm.p(4)
623  c.mass = pwork(i).mass
624 
625  write(dev) c
626  endif
627  endif
628  enddo
*Zfirst p fm *Zfirst p Zfirst p Zfirst p *Zfirst p *Zfirst pos xyz Zfirst pos xyz *Zfirst pos *Zfirst pos depth
Definition: ZavoidUnionMap.h:1
*Zfirst p fm *Zfirst p Zfirst p Zfirst p *Zfirst p *Zfirst pos xyz Zfirst pos xyz *Zfirst pos *Zfirst pos Zfirst pos *Zfirst pos colheight
Definition: ZavoidUnionMap.h:1
*Zfirst p fm *Zfirst p Zfirst p Zfirst p *Zfirst p *Zfirst pos xyz r
Definition: ZavoidUnionMap.h:1
nodes i
latitude latitude this system is used *****************************************************************! type coord sequence union map real z z in m endmap xyz map real ! latitude in deg is to the north ! longitude in deg is to the east *h ! height in m endmap llh map real ! polar angle ! azimuthal angle *radius ! radial distance endmap sph endunion character *sys ! which system xyz
Definition: Zcoord.h:25
max ptcl codes in the kelec
Definition: Zcode.h:2
********************block data cblkHeavy ********************integer j data *HeavyG2symbol p
Definition: cblkHeavy.h:7
*Zfirst p fm *Zfirst p Zfirst p Zfirst p *Zfirst p *Zfirst pos xyz Zfirst pos xyz *Zfirst pos *Zfirst pos Zfirst pos *Zfirst pos *Zfirst Zfirst vec w *Zfirst vec w Zfirst vec *Zfirst Zfirst Zfirst asflag
Definition: ZavoidUnionMap.h:1
*Zfirst p fm *Zfirst p Zfirst p code
Definition: ZavoidUnionMap.h:1
integer maxn LabEquivE real * ke(maxn) integer indx(maxn) integer nevent integer outzero
*Zfirst p fm *Zfirst p Zfirst p Zfirst p *Zfirst p *Zfirst pos xyz Zfirst pos xyz *Zfirst pos *Zfirst pos Zfirst pos height
Definition: ZavoidUnionMap.h:1
*Zfirst p fm *Zfirst p Zfirst p Zfirst p *Zfirst p *Zfirst pos xyz Zfirst pos xyz *Zfirst pos *Zfirst pos Zfirst pos *Zfirst pos *Zfirst Zfirst vec w *Zfirst vec w Zfirst vec coszenith
Definition: ZavoidUnionMap.h:1
float erg[maxp]
Definition: Zprivate.h:7
*Zfirst p fm *Zfirst p Zfirst p Zfirst p *Zfirst p charge
Definition: ZavoidUnionMap.h:1
nodes t
*Zfirst p fm *Zfirst p mass
Definition: ZavoidUnionMap.h:1
*Zfirst p fm *Zfirst p Zfirst p Zfirst p subcode
Definition: ZavoidUnionMap.h:1
dE dx *! Nuc Int sampling table c
Definition: cblkMuInt.h:130

◆ cmemorize()

subroutine cmemorize ( integer  from,
integer  to 
)

Definition at line 633 of file chookSkel.f.

References cputhes(), cputnodinfo(), cqeventno(), cqinirn(), depth, and height.

633  implicit none
634 #include "Zmaxdef.h"
635 #include "Ztrack.h"
636 #include "Ztrackv.h"
637 #ifdef DOMPI
638 #include "mpif.h"
639 #include "Zmpi.h"
640 #else
641  integer::mpirank = -1
642 #endif
643  integer from ! working disk file
644  integer to ! permanent disk file where skeleton is sotered
645 
646 
647 
648 
649  integer num, cumnum, irevent(2)
650 ! record /track/ incident
651 ! record /coord/ angle
652 
653 
654  rewind from
655 ! need not memorize, can be generated at flesh
656 ! call cqIncident(incident, angle)
657 
658  call cqeventno(num, cumnum)
659 
660  call cqinirn(irevent) ! seed of the event
661 
662  write(to) cumnum, num, irevent,
663 #if defined (KEKB) || defined (KEKA)
664 #include "ZavoidUnionMap.h"
665 #else
666  * zfirst
667 #endif
668  call cputhes(to) ! put high energy showers.
669  write(0,*) 'rank=',mpirank,
670  * ' first Z=',zfirst.pos.depth*0.1, ' g/cm2',
671  * zfirst.pos.height, ' m ir=', irevent
672 
673  call cputnodinfo(from, to) ! put nordal info.
674 
*Zfirst p fm *Zfirst p Zfirst p Zfirst p *Zfirst p *Zfirst pos xyz Zfirst pos xyz *Zfirst pos *Zfirst pos depth
Definition: ZavoidUnionMap.h:1
subroutine cputhes(to)
Definition: chookSkel.f:630
subroutine cputnodinfo(from, to)
Definition: chookSkel.f:647
real(8), dimension(:,:,:,:), allocatable, save num
Definition: chook.f:40
integer mpirank
Definition: Zmpibasic.h:1
integer maxbin nregion c minsave drx2 ! drawing region real maxdep integer maxpos integer to
Definition: Zfit.h:15
*Zfirst p fm *Zfirst p Zfirst p Zfirst p *Zfirst p *Zfirst pos xyz Zfirst pos xyz *Zfirst pos *Zfirst pos Zfirst pos height
Definition: ZavoidUnionMap.h:1
subroutine cqeventno(num, cumnum)
Definition: cqEventNo.f:3
subroutine cqinirn(ir)
Definition: cwriteSeed.f:4
integer maxbin nregion c minsave drx2 ! drawing region real maxdep integer maxpos integer from
Definition: Zfit.h:15
Here is the call graph for this function:

◆ cputhes()

subroutine cputhes ( integer  to)

Definition at line 678 of file chookSkel.f.

References o.

678  implicit none
679 #include "Zprivate.h"
680  integer to
681 !
682 ! write high energy sekeleton data into 'to'
683 !
684  integer i
685 
686  write(to) np
687 
688  do i = 1, np
689  write(to) o(i)
690  enddo
691 
nodes i
integer maxbin nregion c minsave drx2 ! drawing region real maxdep integer maxpos integer to
Definition: Zfit.h:15
struct ob o[NpMax]
Definition: Zprivate.h:34

◆ cputnodinfo()

subroutine cputnodinfo ( integer  from,
integer  to 
)

Definition at line 695 of file chookSkel.f.

References c, and p.

695  implicit none
696 #include "Zprivate.h"
697 
698  integer from, to
699 
700  integer i, nlow
701 
702  nlow = 1
703  do while ( nlow .ge. 0 )
704  read(from) nlow, p
705  write(to) nlow, p
706  do i = 1, nlow
707  read(from) c
708  write(to) c
709  enddo
710  enddo
711 
nodes i
********************block data cblkHeavy ********************integer j data *HeavyG2symbol p
Definition: cblkHeavy.h:7
integer maxbin nregion c minsave drx2 ! drawing region real maxdep integer maxpos integer to
Definition: Zfit.h:15
integer maxbin nregion c minsave drx2 ! drawing region real maxdep integer maxpos integer from
Definition: Zfit.h:15
dE dx *! Nuc Int sampling table c
Definition: cblkMuInt.h:130