6 #include "chookHybAS.f" 7 #include "ctemplCeren.f" 16 #include "Zmanagerp.h" 52 write(msg, *)
'Skeleton is judged at obs.pos=',
Where 54 write(msg, *)
' Ngmin=',ngmin,
55 *
' SumEGmin=',sumegmin/1000.,
'TeV' 57 write(msg, *)
' Nhmin=',nhmin,
58 *
' SumEHmin=',sumehmin/1000.,
'TeV' 62 inquire(file=mskel(1:klena(mskel)), opened=opn, exist=ex)
65 call cerrormsg(
' already opened: starange', 0)
67 * append(1:klena(append)) .eq.
'append' )
then 68 open(mdev, file=mskel, form=
'unformatted',status=
'old')
69 call cerrormsg(
'skeleton node info. will be appended', 1)
76 * append(1:klena(append)) .ne.
'append' )
then 78 *
'Old skeleton node info. file exists', 1)
80 *
'but node info. will NOT be appended', 1)
82 open(mdev, file=mskel(1:klena(mskel)), form=
'unformatted',
88 open(wdev, file=wskel(1:klena(wskel)), form=
'unformatted',
111 #include "Zprivate.h" 121 real*8 svEasWait, svEthin(2), kepn
127 kepn = incident.
p.fm.
p(4)
131 ethresh = kepn * waitratio
134 svethin(1) = ethin(1)
135 svethin(2) = ethin(2)
136 call csetemin(generate2, keminobs2, cutneg, cuteg)
138 ethin(1) = svethin(1)
139 ethin(2) = svethin(2)
145 eventno = eventno + 1
148 * sngl(obssites(i).pos.
depth),
157 1000
format(f10.3,i9,3i4,e15.5,3(1
x,f12.8))
179 #include "Zprivate.h" 191 common /testcos/sumg,
ng(20),
nth, eventno
193 integer ng, nth, EventNo
199 equivalence(user, usere(1)), (user, useri(1))
203 if( id .eq. 2 .and. atrack.
p.
code .ne.
kneumu .and.
206 if( np .gt. npmax)
then 208 *
'# of particles >NpMax in observation', 0)
210 o(np).
where = atrack.
where 214 o(np).atime = atrack.
t 215 o(np).
erg = atrack.
p.fm.
p(4)
217 o(np).
x = atrack.pos.
xyz.
r(1)
218 o(np).
y = atrack.pos.
xyz.
r(2)
219 o(np).wx =atrack.vec.w.
r(1)
220 o(np).wy =atrack.vec.w.
r(2)
221 o(np).wz =atrack.vec.w.
r(3)
224 o(np).user = atrack.user
226 if(
o(np).
code .eq. 3)
then 238 * useri(1)/1000., useri(2)/1000., usere(2)
241 959
format(3g14.3,e11.3)
263 #include "Zmanagerp.h" 264 #include "Zprivate.h" 280 if(
o(i).
where .eq.
where)
then 283 sumeg = sumeg +
o(i).
erg 289 sumeh = sumeh +
o(i).
erg 295 memorize =(ng .ge. ngmin .and. sumeg .ge. sumegmin) .or.
296 * ( nh .ge. nhmin .and. sumeh .ge. sumehmin)
299 write(0,*)
' memo=', memorize,
300 *
' ng=',ng,
' seg=',sumeg,
' nh=',nh,
' seh=',sumeh
306 accepted = accepted + 1
321 #include "Zprivate.h" 328 write(msg,
'(i8, a)') accepted,
329 *
' events are memorized as skeleton' 331 call cerrormsg(
'their seeds are also memorized', 1)
371 h1 = trackbefmove.pos.
height- obssites(noofsites).pos.
height 372 h2 = movedtrack.pos.
height - obssites(noofsites).pos.
height 384 #include "Zprivate.h" 411 if(never .lt. 0)
then 414 pwork(1) = movedtrack.
p 421 if( movedtrack.
asflag .eq. 0 )
then 422 if( movedtrack.
p.fm.
p(4) .lt. ethresh )
then 429 if(movedtrack.
asflag .eq. -1)
then 446 #include "Zprivate.h" 476 #include "Zprivate.h" 487 equivalence(user, usere(1)), (user, useri(1))
500 * intinfarray(processno).
process .eq.
'coll' 514 movedtrack.user = user
519 tgt.fm.
p(4) = tgt.
mass 523 call cgeqm(pj, tgt, cmsptcl, icon)
524 call cbst1(1, cmsptcl, pj, pjcm)
532 do i = stackpos-nstacked+1, stackpos
535 call cbst1(1, cmsptcl, aptcl, aptcl)
536 call cyeta(aptcl, y, eta)
540 usere(2)= aptcl.fm.
p(3)/pjcm.fm.
p(3)
549 if(aptcl.
code .le. 5)
then 569 if(never .eq. 0)
then 580 #include "Zprivate.h" 629 equivalence(user, usere(1)), (user, useri(1))
637 ke = pwork(i).fm.
p(4) - pwork(i).
mass 639 * ke .ge. cuteg ) .or.
641 * ke .ge. cutneg ) )
then 643 if(flag .ne. -3)
then 644 if( ke .lt. keminobs)
then 661 if(nlow .eq. 0 .and. movedtrack.
asflag .ne. -1)
return 664 p.posx = movedtrack.pos.
xyz.
r(1)
665 p.posy = movedtrack.pos.
xyz.
r(2)
666 p.posz = movedtrack.pos.
xyz.
r(3)
669 if( movedtrack.pos.
colheight .gt. 1.e36)
then 674 p.atime = movedtrack.
t 675 p.
where = movedtrack.
where 678 p.
erg = movedtrack.
p.fm.
p(4)
680 p.user = movedtrack.user
698 ke = pwork(i).fm.
p(4) - pwork(i).
mass 700 * ke .ge. cuteg ) .or.
702 * ke .ge. cutneg ) )
then 703 if(flag .eq. -3 .or. ke .lt. keminobs)
then 707 c.fm(1) = pwork(i).fm.
p(1)
708 c.fm(2) = pwork(i).fm.
p(2)
709 c.fm(3) = pwork(i).fm.
p(3)
710 c.fm(4) = pwork(i).fm.
p(4)
712 if(bgevent .and. neporeg .eq. 3 )
then 714 call cirot3vec(1, incip, pwork(i), aptcl)
715 call cbst1(1, cmsptcl, aptcl, aptcl)
716 call cyeta(aptcl, y, eta)
720 usere(2)= aptcl.fm.
p(3)/pjcm.fm.
p(3)
722 if(pwork(i).
code .le. 5)
then 758 integer num, cumnum, irevent(2)
771 write(to) cumnum, num, irevent, zfirst
773 write(0,*)
' first Z=',zfirst.pos.
depth*0.1,
' g/cm2',
783 #include "Zprivate.h" 801 #include "Zprivate.h" 808 do while ( nlow .ge. 0 )
subroutine cgetfname(fnin, fn)
*Zfirst p fm *Zfirst p Zfirst p Zfirst p *Zfirst p *Zfirst pos xyz Zfirst pos xyz *Zfirst pos *Zfirst pos depth
subroutine cerrormsg(msg, needrtn)
subroutine cqincident(incident, AngleAtObs)
subroutine krsetbit(i, bit)
subroutine cbst1(init, p1, p2, po)
subroutine chookgint(never)
subroutine cputnodinfo(from, to)
dE dx *! Nuc Int sampling table e
*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
*Zfirst p fm *Zfirst p Zfirst p Zfirst p *Zfirst p *Zfirst pos xyz r
! parameters for Elemag process(-> ---------------------------------------------- real *8 RecoilKineMinE !2 Recoil Kinetic Min Energy above which the recoil(=knock-on process) ! is treated. Below this energy, the effect is included as continuous ! energy loss. Used only if KnockOnRatio $>$ 1. ! If this is 0 or if KnockOnRatio=1, KEminObs(gamma)=KEminObs(elec) is used. ! See also KnockOnRatio. real *8 KnockOnRatio !2 KnockOnRatio *KEminoObs is used instead of RecoilKineMinE if KnockOnRatio $< $1. real *8 X0 !2 Radiation length in kg/m$^2$ for air. Normally the user should not touch this. real *8 Ecrit !2 Critical energy in GeV. \newline ! Employed only when calculating air shower size in the hybrid ! air shower generation. The value would be dependent on the ! experimental purpose. The default value, 81 MeV, is bit too ! small in many applications(The air shower size is overestimated). ! Comparisons of sizes by the hybrid method and by the full Monte ! Carlo tell that \newline ! $N_e$(full 3-D M.C) $< N_e$(hybrid AS with $E_c=81$ MeV) $< N_e$(full 1-D M.C) ! $ {\ \lower-1.2pt\vbox{\hbox{\rlap{$<$}\lower5pt\vbox{\hbox{$\sim$}}}}\ } ! N_e$(hybrid AS with $E_c={76}$ MeV) at around shower maximum. ! Hybrid AS is always essentially 1-D. logical Knockon !2 Obsolete. Don 't use this. See RecoilKineMinE ! and KnockonRatio. real *8 AnihiE !2 If E(positron) $<$ AnihiE, annihilation is considered. real *8 Es !2 Modified scattering constant. 19.3d-3 GeV real *8 MaxComptonE !2 Above this energy, Compton scattering is neglected. real *8 MaxPhotoE !2 Above this energy, photoelectric effect is neglected. real *8 MinPhotoProdE !1 Below this energy, no photo-prod of hadron. See also PhotoProd. logical PhotoProd !1 Switch. if .false., no photo prod. of hadron is considered at all. ! See also MinPhotoProdE, HowPhotoP real *8 Excom1 !2(GeV). If photon energy is<=Excom1, use XCOM data for ! compton/p.e/coherent scattering(must be< 100 GeV). real *8 Excom2 !2(GeV). If photon energy is<=Excom2, use XCOM data for ! pair creation cross-section.(must be< 100 GeV). integer Moliere !2 2$\rightarrow$ use Moliere scat.\newline ! 0$\rightarrow$ use Gaussian scattrign. \newline ! 1$\rightarrow$ use Moli\`ere scattering for non-electrons \newline ! 2$\rightarrow$ use Moli\`ere scattering for all charged ! particles. But treatment is not so rigorous as case of 3. ! \newline ! 3$\rightarrow$ use rigorus Moliere scattering. Diff. from 2 is verysmall. May be some effect in the ! core region. integer ALateCor !2 1$\rightarrow$ angular and lateral correlation is taken into account when Moliere=0 .\newline ! t$\rightarrow$ Use angular-lateral correlation by Gaussian ! approximation. No effect is seen if path length is short. !<-) ---------------------------------------------- common/Zelemagc/RecoilKineMinE
max ptcl codes in the kgnuc
subroutine cmemorize(from, to)
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
max ptcl codes in the kelec
subroutine chooknepint(never)
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
subroutine cprintprim(out)
max ptcl codes in the kneue
subroutine cgeqm(p1, p2, q, icon)
subroutine cwriteparam(io, force)
subroutine cirot3vec(init, p1, p2, po)
subroutine csetemin(gen, eminob, emin, emCas)
********************block data cblkHeavy ********************integer j data *HeavyG2symbol p
subroutine ksetbit(i, bit)
subroutine cquhookr(i, rv)
*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
*Zfirst p fm *Zfirst p Zfirst p code
subroutine cmemonode(dev, flag)
********************block data cblkHeavy ********************integer j data *HeavyG2symbol *data *HeavyG2code knuc
max ptcl codes in the kneumu
*Zfirst p fm *Zfirst p Zfirst p Zfirst p *Zfirst p *Zfirst pos xyz Zfirst pos xyz *Zfirst pos *Zfirst pos Zfirst pos height
latitude latitude this system is used *****************************************************************! type coord sequence union map real y
subroutine cqeventno(num, cumnum)
*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
*Zfirst p fm *Zfirst p Zfirst p Zfirst p *Zfirst p charge
subroutine chookobs(aTrack, id)
subroutine cquhooki(i, iv)
subroutine cmkptc(code, subcode, charge, p)
*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
subroutine cquhookc(i, cv)
*Zfirst p fm *Zfirst p mass
max ptcl codes in the kpion
subroutine cyeta(p, y, eta)
*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 wgt
subroutine cgetcurrentstackpos(stackpos)
subroutine chookeint(never)
! 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
*Zfirst p fm *Zfirst p Zfirst p Zfirst p subcode
dE dx *! Nuc Int sampling table c