COSMOS v7.655  COSMOSv7655
(AirShowerMC)
chookSkel.f
Go to the documentation of this file.
1 #include "cmain.f"
2 #include "chookHybAS.f"
3 #include "ctemplCeren.f"
4 #if defined (KEKB) || defined (KEKA)
5 #define DOMPI
6 #endif
7 !
8 ! *************************************** hook for Beginning of a Run
9 ! * At this moment, all (system-level) initialization for this run
10 ! * has been ended. After this routine is executed, the system goes into the
11 ! * event creation loop.
12 ! *
13  subroutine chookbgrun
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 !
105  end
106 
107 
108 ! *********************************** hook for Beginning of 1 event
109 ! * All system-level initialization for 1 event generation has been
110 ! * eneded at this moment.
111 ! * After this is executed, event generation starts.
112 ! *
113  subroutine chookbgevent
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 ! ===================================================
177  end
178 
179 
180 ! ************************************ hook for observation
181 ! * One particel information is brought here by the system.
182 ! * All information of the particle is in aTrack
183 ! *
184  subroutine chookobs(aTrack, id)
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 ! ===================================================
251  end
252 
253 ! *********************************** hook for end of 1 vent
254 ! * At this moment, 1 event generation has been ended.
255 ! *
256  subroutine chookenevent
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
315  end
316 
317 
318 ! ********************************* hook for end of a run
319 ! * all events have been created or time lacks
320 ! *
321  subroutine chookenrun
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
337  end
338 ! ********************************* hook for trace
339 ! * This is called only when trace > 100
340 ! * User should manage the trace information here.
341 ! * If you use this, you may need some output for trace
342 ! * at the beginning of 1 event generatio and at the end of 1 event
343 ! * generation so that you can identfy each event.
344 ! *
345 ! *
346  subroutine chooktrace
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 
377  end
378 ! ********************* this is the hook called when
379 ! an electron made an interaction.
380 !
381  subroutine chookeint(never)
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
438  end
439 
440 ! ********************* this is the hook called when
441 ! a gamma ray made an interaction.
442 !
443  subroutine chookgint(never)
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
464  end
465 
466 ! ********************* this is the hook called when
467 ! non e-g particle made an interaction.
468 !
469  subroutine chooknepint(never)
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
491  end
492 
493  subroutine cmemonode(dev, flag)
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
629  end
630 
631 !
632  subroutine cmemorize(from, to)
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 
675  end
676 
677  subroutine cputhes(to)
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 
692  end
693 
694  subroutine cputnodinfo(from, to)
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 
712  end
713 
714 
subroutine cgetfname(fnin, fn)
Definition: copenf.f:275
*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 cerrormsg(msg, needrtn)
Definition: cerrorMsg.f:4
subroutine cprintobs(io)
Definition: cprintObs.f:2
subroutine cqincident(incident, AngleAtObs)
Definition: cmkIncident.f:486
subroutine chookgint(never)
Definition: chook.f:191
subroutine cputhes(to)
Definition: chookSkel.f:630
subroutine cputnodinfo(from, to)
Definition: chookSkel.f:647
dE dx *! Nuc Int sampling table e
Definition: cblkMuInt.h:130
others if is ng
Definition: cblkManager.h:9
*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
max ptcl codes in the kgnuc
Definition: Zcode.h:2
subroutine cmemorize(from, to)
Definition: chookSkel.f:599
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
subroutine chookenrun
Definition: chook.f:147
Definition: Ztrack.h:44
max ptcl codes in the kelec
Definition: Zcode.h:2
subroutine chooknepint(never)
Definition: chook.f:219
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
max ptcl codes in the kneue
Definition: Zcode.h:2
!onst int nth
Definition: Zprivate.h:2
subroutine chookenevent
Definition: chook.f:116
subroutine cwriteparam(io, force)
Definition: cwriteParam.f:4
subroutine csetemin(gen, eminob, emin, emCas)
Definition: ciniTracking.f:242
********************block data cblkHeavy ********************integer j data *HeavyG2symbol p
Definition: cblkHeavy.h:7
integer mpirank
Definition: Zmpibasic.h:1
subroutine cquhookr(i, rv)
Definition: cqUHookr.f:2
*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 chooktrace
Definition: chook.f:275
subroutine cmemonode(dev, flag)
Definition: chookSkel.f:467
********************block data cblkHeavy ********************integer j data *HeavyG2symbol *data *HeavyG2code knuc
Definition: cblkHeavy.h:7
struct ob o[NpMax]
Definition: Zprivate.h:34
max ptcl codes in the kneumu
Definition: Zcode.h:2
*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
latitude latitude this system is used *****************************************************************! type coord sequence union map real y
Definition: Zcoord.h:25
subroutine cqeventno(num, cumnum)
Definition: cqEventNo.f:3
*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
subroutine chookobs(aTrack, id)
Definition: chook.f:59
subroutine chookbgevent
Definition: chook.f:39
subroutine cquhooki(i, iv)
Definition: cqUHookr.f:15
subroutine cqinirn(ir)
Definition: cwriteSeed.f:4
nodes t
*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
Definition: Zcoord.h:43
*Zfirst p fm *Zfirst p mass
Definition: ZavoidUnionMap.h:1
subroutine cprintstatus
Definition: cendRun.f:35
subroutine chookbgrun
Definition: chook.f:15
max ptcl codes in the kpion
Definition: Zcode.h:2
subroutine chookeint(never)
Definition: chook.f:162
! 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
dE dx *! Nuc Int sampling table c
Definition: cblkMuInt.h:130