4. Subroutines and variables
4.1. User accessible types
- type coord
During the paticle tracking, this system is used.
- Type fields
% r (3) [real*8]
% sys [character(4)] :: which system. one of ‘xyz’, ‘llh’ or, ‘sph’.
- Header
Zcoord.h
- type position
location of a particle
- Type fields
% xyz [coord] :: in xyz
% radiallen [real(8)] :: in m . radial length
% depth [real(8)] :: in kg/m2 depth
% height [real(8)] :: in m. vertical height(from sea level
% colheight [real(8)] :: in m. where the latest nuclear collision took place. (iniitial value is very large value).
- Header
Zpos.h
- type direc
- Type fields
% w [coord]
% coszenith [real(8)] :: cos of the zenith angle. it is defined as follows: Let’s assume w and position are given in xyz sytem.
- Header
Zdirec.h
- type fmom
- Type fields
% p (4) [real(8)] :: four momentum in GeV. p(1) is x component. Note. Momentum is given in the Earth xyz system.
- type ptcl
particle at production
- Type fields
% fm [fmom] :: 4 momentum
% mass [real(8)] :: mass
% code [integer(2)] :: particle code
% subcode [integer(2)] :: used mainly to identify paticle/antiparticle if the difference is important. To set particle, “ptcl” is used. anti-partilce, ‘antip” is used for particles For particles of which partilce/antiparticle nature can be judded by its code and charge, the user need not specify it when using cmkptc subroutine. give 0. subcode for gamma ray may be used to identify brems gamma and direct gamma by kdiretg, kcasg
% charge [integer(2)] :: charge
- Header
Zptcl.h
- type track
full particle attributes in Cosmos
- Type fields
% p [ptcl] :: basic ptcl attributes.
% pos [position] :: position
% t [real(8)] :: time in length/beta (m)
% vec [direc] :: direction
% wgt [real(4)] :: weight for thin sampling
% where [integer(2)] :: current obsSite no. (0 is initial value)
% asflag [integer(2)] :: non 0, if As has been generated from this ptcl (only for electrons)
% user [real(8)] :: user use
% inip [ptcl] :: Particle at production
% inipos [position]
% init [real(8)] :: time in length/beta (m)
% inivec [direc]
% parp [ptcl] :: parent particle
% parvec [direc]
% label [integer] :: (if LABELING > 0) put a label (1,2,…) on each particle. There is a global label_counter which is cleared at the start of 1 event generation. it is counted up when a particle is poped up from the stack. The label_counter is given to the label of the poped up particle. This may be needed to judge if the same particle crosses a given observation place more than once.
% info [integer] :: (if LABELING > 0) for each particle, when a particle is born this is initialized to 0. If the ptcl goes higher than 380km, 1 is added. This is for AMS observation.
- Header
Ztrack.h
- type element
- Type fields
% A [real(8)] :: mass number
% Z [real(8)] :: atomic number
% N [integer] :: nucleon number. N-Z is number of neutrons.
- Header
Zelement.h
- type epmedia
- Type fields
% noOfElem [integer] :: actual number of elements
% elem (maxElements) [element]
% No (maxElements) [real(8)] :: number of each element; copied to OrigNo and then normalized. so that sum be 1.0
% OrigNo (maxElements) [real(8)] :: number of each element
% MolMass [real(8)] :: olar mass normally no unit but in that case the value should be the same as the one in the unit of g/mol. default init value 0 will be given just before reading the data. Normally not used except for atmosphere. For the gas media, better to be given.
% w (maxElements) [real(8)] :: No(i)A(i)/sum(No(i)A(i)) same note as No
% npercm3 (maxElements) [real(8)] :: # of i-th element /cm3=No/Ai*rho*wi same note as No
% nsigma (maxElements) [real(8)] :: No(i)s_i
% sumns [real(8)] :: sum of above
% ndpsigma (maxElements) [real(8)] :: No(i)dps_i for DP
% sumndps [real(8)] :: sum of above
% sumNo [real(8)] :: sum of OrigNo(:)
% colElem [integer] :: element # at which interaction took place
% colA [integer] :: A of such one:. int(elem(colElm)%A+0.5)
% colZ [integer] :: Z of such one: int(elem(colElm)%Z)
% colXs [real(8)] :: x-section for that target(mb)
% xs [real(8)] :: this is xs for the media.
% ndensity [real(8)] :: effective number density /cm^3
% wp [real(8)] :: plasma frequency x hbar (GeV)
% n [real(8)] :: refractive index
% nd [real(8)] :: number of ingredients / cm^3
% A [real(8)] :: sum No x Ai
% Z [real(8)] :: sum No x Zi
% Z2 [real(8)] :: sum No x Zi**2
% ZZ1 [real(8)] :: sum No x Zi(Zi+1) for electron; this * t /(gamma beta2)^2 = Xc^2 (t g/cm2)
% MoliereForXc2 [real(8)]
% MoliereExpb [real(8)] :: exp(b) = t x this (t in g/cm2)a for z=1 and beta =1. this = 6702 sum/A sum = Sum No x Zi^(1/3)(Zi+1)/(1+3.327(Ziz/137)^2)
% Z1_3rd [real(8)] :: <Z^1/3> not <Z>^(1/3)
% Z2_3rd [real(8)] :: <Z^2/3> not <Z>^(2/3)
% mbtoPgrm [real(8)] :: 10^-27 x N0/A. If multiplied to sigma in mb, we obtain probability / (g/cm2).
% mbtoPkgrm [real(8)] :: mbtoPgrm/10d0
% mbtoPcm [real(8)] :: rho x mbtoPgrm. If multiplied to sigma in mb, we obtaind probability / cm
% mbtoPX0 [real(8)] :: mbtoPgrm x X0g. If multiplied to sigma in mb, we obtain probability /radation length. next ones are used when we approximate a compound /molecule as an atom
% mbtoPgrm2 [real(8)]
% mbtoPcm2 [real(8)]
% mbtoPX02 [real(8)]
% Z2byAeff [real(8)] :: sum wi x Zi**2/Ai
% Z5byAeff [real(8)] :: sum wi x Zi**5/Ai
% Aeff [real(8)] :: sum wi x Ai
% Z2eff [real(8)] :: Z2byAeff x Aeff
% Zeff [real(8)] :: sqrt(Z2eff)
% Zeff3 [real(8)] :: Zeff**(1/3)
% LogZ [real(8)] :: log(Zeff)
% A2eff [real(8)] :: sum wi x Ai^2
% ZbyAeff [real(8)] :: sum wi x Zi/Ai
% I [real(8)] :: average ionization potential energy in GeV.
% rho [real(8)] :: density in g/cm^3
% X0 [real(8)] :: radiation length. in cm
% X0m [real(8)] :: radiation lenght in m.
% X0g [real(8)] :: radiation length. in g/cm^2
% X0kg [real(8)] :: reaiation length in kg/m^2 =X0g*10
% gtocm [real(8)] :: g/cm^2 to cm.
% kgtom [real(8)] :: gtocm*1.0d-3: kg/m2 to m.
% dEdxatp3m [real(8)] :: dE/dx at p=3me for electron. ~ Ecrit
% Ecrit [real(8)] :: GeV for electron
% Ecritmu [real(8)] :: GeV for muon
% rhoc [real(8)] :: comp.rhoc is copied whenever new comp. comes note;this is real*8 while comp.rhoc is real*4
% gasF [integer] :: flag for gas. If 1, media is gas, 0 –>solid
% name [character(8)] :: name of media
% format [integer] :: format of the basic table. (1 or 2)
% s1 [real(8)] :: Migdal’s s1
% logs1 [real(8)] :: log(s1)
% basearea [real(8)] :: pi x Re**2 * N* Z /A *X0g = 0.15 Z/A*X0g
% cScrC1 [real(8)] :: const which appears in the complete screening crossection
% cScrC2 [real(8)] :: the other such one
% cScrMain [real(8)] :: (4/3C1 + C2)
% BirksC1 [real(8)] :: quenching correction coef.
% BirksC2 [real(8)]
% BirksCC [real(8)]
% Birks [character(1)] :: flag to identify what quenching correction should be applied using BirksC1, etc.
% srim [integer] :: index for srim data in module srimdata
% tbl [bpTbl]
% sh [sternh]
% cnst [SmpCnst]
% pe [photoE]
% urb [urban]
% mu [mubpn]
% xcom [epxcom]
- Header
Zmedia.h
- type SmpCnst
- Type fields
% CompScrE [real(8)] :: Energy above which we can use complete screening cross-sections. evaluate at Eg/Ee=x= 0.99.
% BrScrE [real(8)] :: below this, partial screened cross-section is needed ( = ComScrE)
% BremEgmin [real(8)] :: min. ratio Eg/Ee for brems at high energy region
% BremEemin [real(8)] :: Below this, partial screening brems x-section is not made. (Seltzer table 1 is used)
% BremLEemin [real(8)] :: log10 of BremEemin
% BremEeminLPM [real(8)] :: Min. energy of e+/e- above which LPM can be applied, if wanted.( Acutal application will be done if, Ee > Flpm*this and LPMeffect=T. Flpm and LPMeffect can be controled by epicsfile
% BremTXTL [integer] :: Size of the Brems total x-section table. in the energy region BremEemin ~ BrScrE: ~log10(BrScrE/BremEemin)*10
% BremEsize [integer] :: Size of log10 energy for 2D table for brems in the region A. BremTXTL/2
% BremUminLA [real(8)] :: min of uniform random number in the region A at energies BremEemin ~ BrScrE: 0.1
% BremUmaxLA [real(8)] :: max of uniform random number in the region A at energies BremEemin ~ BrScrE: 1.0
% BremUszLA [integer] :: Size of uniform random nubmbers for 2D table for brems in the region A.: 20
% BremdULA [real(8)] :: step of u in region A at Low energies
% BremdETXL [real(8)] :: log10E step for brem total cross secton log10(BrScrE/BremEemin)/(BremTXTL-1)
% BremdEL [real(8)] :: log10 step for 2D brem table at low energies
% BremUminLB [real(8)] :: min of uniform random number in the region B0. sqrt(u)
% BremUmaxLB [real(8)] :: max. sqrt(BremUminLA)
% BremUszLB [integer] :: u talbe size in region B. 20
% BremdULB [real(8)] :: step of u in B
% PairEgmin [real(8)] :: min. Eg above which pair cross section is computed 1.1 MeV. However, at energies from PairEgmin to PairNonSc, B.H original xsection is used as xsec= Norm * B.H where Norm * B.H(10MeV) = Pair(10MeV)
% PairNonSc [real(8)] :: see above.
% PairLEgmin [real(8)] :: log10 of PairEgmin
% PairEgmaxL [real(8)] :: Eg where LPM effect starts to appear
% PrScrE [real(8)] :: below this, screened cross-section is used.
% PairTXTL [integer] :: Size of the Pair total x-section table. in the energy region PairEgmin ~ PairEgmaxL; log10(PairEgmaxL/PairEgemin)*10
% PairEsize [integer] :: Size of log10 energy for 2D table for pair in the region A,B. PairTXTL/2
% PairUminLA [real(8)] :: min of uniform random number in the region A at energies PairEgmin ~ PairEgmaxL: 0.05
% PairUmaxLA [real(8)] :: max of uniform random number in the region A at energies PairEgmin ~ PairEgmaxL: 1.0
% PairUszLA [integer] :: Size of uniform random nubmbers for 2D table for pair in the region A.: 20
% PairdULA [real(8)] :: step of u in region A at Low energies
% PairdETXL [real(8)] :: log10 step of total pair cross-sec at low E
% PairUminLB [real(8)] :: min of uniform random number in the region B 0. sqrt(u)
% PairUmaxLB [real(8)] :: max. sqrt(PairUminLA)
% PairUszLB [integer] :: u talbe size in region B. 20
% PairdULB [real(8)] :: PairdULB=(PairUmaxLB-PairUminLB)/(PairUszLB-1))
% PairdELA [real(8)] :: log10(PairEgmaxL/ PairEgmin) /( PairEsize-1)
% PairdELB [real(8)] :: sqrt( log10(PairEgmaxL/ PairEgmin) )/( PairEsize-1)
% BrEeminS [real(8)] :: for Seltzer cross-section; lower energy region
% BrEgminS [real(8)] :: Eg min for Seltzer Brems. (not ratio 1keV)
% BrLEeminS [real(8)]
% BrEemaxS [real(8)]
% BrTXTS [integer]
% BrES [integer]
% BrUminSA [real(8)]
% BrUmaxSA [real(8)]
% BrUszSA [integer]
% BrdUSA [real(8)]
% BrdETXS [real(8)]
% BrdES [real(8)]
% BrUszSB [integer]
% BrUminSB [real(8)]
% BrUmaxSB [real(8)]
% BrdUSB [real(8)]
% BrEeminS2 [real(8)] :: for Seltzer cross-section; higher energy region upto 10 GeV
% BrEgminS2 [real(8)] :: Eg/Ee min for Seltzer Brems.
% BrLEeminS2 [real(8)]
% BrEemaxS2 [real(8)]
% BrTXTS2 [integer]
% BrES2 [integer]
% BrUminSA2 [real(8)]
% BrUmaxSA2 [real(8)]
% BrUszSA2 [integer]
% BrdUSA2 [real(8)]
% BrdETXS2 [real(8)]
% BrdES2 [real(8)]
% BrUszSB2 [integer]
% BrUminSB2 [real(8)]
% BrUmaxSB2 [real(8)]
% BrdUSB2 [real(8)]
% BrEgminH [real(8)] :: for LPM
% BrEe1H [real(8)]
% BrLEe1H [real(8)] :: log10( BrEe1H)
% BrneH [integer]
% BrdU1H [real(8)]
% BrdEH [real(8)] :: log E step cnst.BrdEH= log10(cnst.BrEe2H/cnst.BrEe1H)/(cnst.BrneH-1) inverse of the above
% BrEe2H [real(8)] :: max Ee where table is available
% BrU1H [real(8)]
% BrU2H [real(8)]
% Brnu1H [integer] :: =(cnst.BrU2H-cnst.BrU1H+0.00001d0)/cnst.BrdU1H+1
% BrneH2 [integer] :: for 2D table E size
% BrdEH2 [real(8)] :: // E bin
% BrEe2H2 [real(8)] :: max E for 2D table
% BrU3H [real(8)]
% BrU4H [real(8)]
% Brnu2H [integer]
% BrdVU2H [integer] :: = cnst.Brnu2H-1
% BrdU2H [real(8)] :: = (cnst.BrU4H - cnst.BrU3H)/cnst.BrdVU2H
% BrPow [real(8)]
% PrEg1H [real(8)] :: minimum Eg above which LPM works
% PrLEg1H [real(8)] :: log10 of PrEg1H
% PrneH [integer] :: number of Eg bins
% PrdU1H [real(8)] :: du
% PrdEH [real(8)] :: dE in log10(Eg)
% PrU1H [real(8)] :: minimum u= 0
% PrU2H [real(8)] :: maximum u= 1
% Prnu1H [integer] :: numboer of u bins
% PrEg2H [real(8)] :: max Eg where table is available. ———–muons nuclear interaction
% muNVmin [real(8)] :: min of Eg(virtual)/Emu by muon nuc. int.
% muNdU [real(8)] :: du for sampling table
% muNTXT [integer] :: total xs, dEdx(v<vmin), dEdx(vall), tab size.
% muNEmin [real(8)] :: above this, muon nuc. int. is treatable
% muNLEmin [real(8)] :: log10 of muNEmin
% muNEmax [real(8)] :: above this, use some scaling(sampling)
% muNEmax1 [real(8)] :: max E of 1D table
% muNdETX [real(8)] :: log10 Energy step for total muon nuc. int prob.
% muNdE [real(8)] :: log10 Energy step for sampling table
% muNUsize [integer] :: sampling table size for u.
% muNEsize [integer] :: sampling table size for log10 E
% muNpwtx [real(8)] :: prob/X0 energy dependence; power. set after table for total prob. is read
% muNpwdEdx0 [real(8)] :: dEdx(v<vmin)/Emu enery dependence; power set after table is read
% muNpwdEdxt [real(8)] :: dEdXt(v<vmax)/Emu energy dependence, power set after table is read
% muBrVmin [real(8)] :: brems min of Eg/Emu. for muon Brems
% muBrdU [real(8)] :: du for sampling table
% muBrTXT [integer] :: total xs, dEdx(v<vmin), dEdx(vall), tab size.
% muBrEmin [real(8)] :: above this, muon brems is treatable
% muBrLEmin [real(8)] :: log10 of muBrEmin
% muBrEmax [real(8)] :: above this, use some scaling
% muBrEmax1 [real(8)] :: max E of 1D table
% muBrdETX [real(8)] :: log10 Energy step for total muon brems prob.
% muBrdE [real(8)] :: log10 Energy step for sampling table
% muBrUsize [integer] :: sampling table size for u.
% muBrEsize [integer] :: sampling table size for log10 E dependence can be neglected
% muPrVmin [real(8)] :: pair creation min of Eg(virtual)/Emu by muon pair cre.
% muPrdU [real(8)] :: du for sampling table
% muPrTXT [integer] :: total xs, dEdx(v<vmin), dEdx(vall), tab size.
% muPrEmin [real(8)] :: above this, muon pair creation is treatable
% muPrLEmin [real(8)] :: log10 of muPrEmin
% muPrEmax [real(8)] :: above this, use some scaling
% muPrEmax1 [real(8)] :: max E of 1D table
% muPrdETX [real(8)] :: log10 Energy step for total muon pair prob.
% muPrdE [real(8)] :: log10 Energy step for sampling table
% muPrUsize [integer] :: sampling table size for u.
% muPrEsize [integer] :: sampling table size for log10 E dependence can be neglected
% how [integer]
% NormS [real(8)] :: normalization const
% NormPS [real(8)] :: normalization const
% NormCS [real(8)] :: normalization const
% NormSH [real(8)] :: normalization const
- Header
ZbpSample.h
- type bpTbl
- Type fields
% BrTXL (mxBrTXL,2) [real(8)]
% BrSTLA (mxBrTblLA, 1) [real(8)]
% BrSTLB (mxBrTblLB, 1) [real(8)]
% BrTXH (mxBrTXH,2) [real(8)]
% BrSTHA (mxBrTblHA, 1) [real(8)]
% BrSTHB (mxBrTblHB, 1) [real(8)]
% PrTXL (mxPrTXL) [real(8)]
% PrSTLA (mxPrTblLA, 1) [real(8)]
% PrSTLB (mxPrTblLB, 1) [real(8)]
% PrTXH (mxPrTXH) [real(8)]
% PrSTH (mxPrTblH, 1) [real(8)]
% BrTXS (mxBrTXS,2) [real(8)]
% BrSTSA (mxBrTblSA, 1) [real(8)]
% BrSTSB (mxBrTblSB, 1) [real(8)]
% BrTXS2 (mxBrTXS2,2) [real(8)]
% BrSTSA2 (mxBrTblSA2, 1) [real(8)]
% BrSTSB2 (mxBrTblSB2, 1) [real(8)]
% MuNTX (mxMuNTX) [real(8)]
% MuNdEdx0 (mxMuNTX) [real(8)]
% MuNdEdxt (mxMuNTX) [real(8)]
% MuBrTX (mxMuBrTX) [real(8)]
% MuBrdEdx0 (mxMuBrTX) [real(8)]
% MuBrdEdxt (mxMuBrTX) [real(8)]
% MuPrTX (mxMuPrTX) [real(8)]
% MuPrdEdx0 (mxMuPrTX) [real(8)]
% MuPrdEdxt (mxMuPrTX) [real(8)]
% MuNTbl (mxMuNTbl, 1) [real(8)]
% MuBrTbl (mxMuBrTbl, 1) [real(8)]
% MuPrTbl (mxMuPrTbl, 1) [real(8)]
- Header
ZbpTbl.h
- type site
- Type fields
% pos [position]
% Txyz2det (3,3) [real(8)] :: xyz to detector system transform mat
% Tdet2xyz (3,3) [real(8)] :: inverse of above
% zpl [real(8)] :: z value in 1ry system
% mu [real(8)]
% minitime [real(8)]
- Header
Zobsv.h
- type assite
- Type fields
% pos [position]
% zpl [real(8)]
% mu [real(8)] :: Moliere Unit
% esize [real(8)] :: electron size
% age [real(8)] :: size weighted age
- Header
Zobsv.h
- type magfield
- Type fields
% x [real(8)] :: in earth_center coordinate
% y [real(8)]
% z [real(8)]
% sys [character(4)] :: which system. ‘xyz’, ‘ned’, ‘hva’
- Header
Zmagfield.h
4.2. User accessible subroutines
- subroutine cwriteParam(io, force)
write parameters on the error output
- Parameters
io [integer,in] :: utput logical dev. #. ErrorOut –> stderr
force [integer,in] :: if non zero, Hidden parameters are written. hidden ones are also written when Hidden=T
- subroutine cprintPrim(out)
print primary information
- Parameters
out [integer,in] :: output logical device #
- subroutine cprintPrim(out)
print observation information
- Parameters
out [integer,in] :: output logical device #
- subroutine ckf2cos(kf, code, subcode, chg)
kf code to cosmos code.
- Parameters
kf [integer,in]
code [integer,out]
subcode [integer,out]
chg [integer,out]
- subroutine ccos2kf(code, subcode, chg, kf)
cosmos code to kf code;
- Parameters
code [integer,in]
subcode [integer,in]
chg [integer,in]
kf [integer,out]
- subroutine epResetEcrit(io, name, newV, oldV, icon)
reset Crittical energy of a given media with “name”
- Parameters
io [integer,in] ::
output message device #
0
some message is put as standard Fortran error message
6
some message is put as sysout.
>0
assume logical device is open with that number
<0
no message is put, but see next
name [character(*),in] :: media name such as “Air” if media with “name” is not found eroor message is
newV [real(8),in] :: new critical energy (GeV) new value is set to media%Ecrit
oldV [real(8),out] :: E crit so far defined. (GeV)
icon [integer,out] :: 0 if ok. -1 if some error
- subroutine modCodeConv/ccos2pdg(aPtcl, pdgcode)
convert from Cosmos particle structure to PDG code
- Parameters
aPtcl [ptcl,in] :: Cosmos particle structure
pdgcode [integer,out] :: PDG particle code
- subroutine cavedEdx(eno, age, dedx)
Average dedx (\(2.2 \times 10^{-2}\) for the test)
- Parameters
eno [real(8),in] :: electon size
age [real(8),in] :: age of the shower
dedx [real(8),out] :: average dedx as defined in GeV/(kg/m2)
- subroutine cgetNmu(eth, nmu)
compute muon numbers this is not yet made. tentatively nmu = 0 is given.
- Parameters
eth [real(8),in] :: Threshold energy of muons. (GeV)
nmu (NoOfASSites) [real(8),out] :: output. number of muons E>eth
- subroutine cxyz2det(ly, a, b)
convert coord value in the “xyz” system into “det” system.
- Parameters
ly [integer(2),in] :: layer # of the observation depth. Its origin is used to convert particle coordinate (‘a’ in E-xyz) into the detector coordinate (‘b’). Detector origin is the crossing point of 1ry direction and spherical surface at a given depth (height). Z-axis is vertical, X-axis is XaxisFromSouth (~90 deg normally magnetic East at the BaseL. The x-y plane is tangential to the spherical surface at the origin. ly is normally
MovedTrack%where
(integer(2))a [coord,in] :: coord in ‘xyz’
b [coord,out] :: coord in ‘det’
- subroutine cdet2xyz(ly, a, b)
convert coord value in the “det” system into “det” system. See the parameter description of
cxyz2det()
- subroutine cxyz2detD(ly, a, b)
convert coord value in the “xyz” system into “det” system for Direction cos. See the parameter description of
cxyz2det()
- subroutine cdet2xyzD(ly, a, b)
convert coord value in the “det” system into “det” system for Direction cos. See the parameter description of
cxyz2det()
- subroutine cllh2eCent(llh, xyz)
convert llh coordinates to E-xyz
- Parameters
llh [coord,in] :: containing data in latitude, longitude, height.
xyz [coord,out] ::
The coordinate system is such that the origin is at the center of the earth
x-axis
directed to (0, 0) latitude and longitude.
y-axis
directed to (0, 90) latitude and longitude.
z-axis
directed to the north pole.
xyz.r(1)
x coordinate value in m
xyz.r(2)
y
xyz.r(3)
z
note: xyz can be the same as llh. time component is unchanged
- subroutine csetPos(location)
set position information for a given xyz
- Parameters
location [position,inout] :: coord part of location is input.
- subroutine cgeomag(yearin, llh, h, icon)
- Parameters
yearin [real(8),in] :: such as 1990.5
llh [coord,in] :: position around the earth. in ‘llh’ form is better. if not ‘llh’ conversion is done here.
h [magfield,out] :: magnetic field is set in the form of ‘ned’ (north, east-down). The unit is T.
icon [integer,out] ::
0
o.k
1
too heigh location. result could be suspicious.
2
input parameter wrong….
- subroutine ctransMagTo(sys, pos, a, b)
transform magnetic field components in one coordinate sytem to another.
a.sys \ sys
‘xyz’
‘hva’
‘ned’
‘xyz’
o
o
o
‘hva’
o
o
o
‘ned’
o
o
o
- subroutine cqEventNo(num, cumnum)
inquire the event number
- Parameters
num [integer,out] :: number of events in the current run
cumnum [integer,out] :: cummulative number of events so far. may be used after the initialization of an event, then this gives the number for that event. It will differ from
num
ifCont=t
is used.
- subroutine cqIniRn(ir)
inquire the initial random seed
- Parameters
ir (2) [integer,out] :: the initial seed of the random number generator for the event.
- subroutine cqIncident(aTrack, angleAtObs)
inquire incident particle
- subroutine cqFirstColMedia(A, Z, xs)
retrns first col. element and Xsecion on it
- Parameters
A [integer,out]
Z [integer,out]
xs [real(8),out] :: Xsection
- subroutine cqIncident(incident, AngleAtObs)
inquire incident particle
- subroutine csetMagField(sys, b1, b2, b3, b)
set Calculated magnetic field to /magfield/ b
- Parameters
sys [character(3),in] :: which system. ‘xyz’, ‘hva’, ‘ned’ etc
b1 [real(8)] :: 3 components of mag. in the system ‘sys’
b [magfield,out] :: /magfield/
- function cvh2temp(vh)
temperature in Kelvin of ‘site’
- Parameters
vh [real(8),in] :: height in meter
- Return
cv2temp [real(8)] :: temperature in Kelvin
- function cvh2den(vh)
density of air
- Parameters
vh [real(8),in] :: height in meter
- Return
cvh2den [real(8)] :: density in kg/m3
- function klena(cha)
actual length of character string. note: if no character dec. is given for string, klena=0 will result. e.g. a=’abc’, klena(a). but klena(‘abc’) is ok.
- Parameters
cha [character*(*),in] :: character string
- Return
klena [integer] :: length of the string
4.3. User accessible variables
- NoOfSites [integer]
No of particle observation sites (Zobsv.h)
- NoOfASSites [integer]
maximum index for observation depths. (Zobsv.h)
- CompASNe (i) [real(8)]
component A.S size produced by the input electron. For depths where this value is 0, avoid doing something here. (i=1, NoOfASSites; index for observation depths) (Zobsv.h)
- CompASAge (i) [real(8)]
age of component A.S produced by the input electron. If this value is 2.0, the A.S is assumed to be very old and the CompASNe(i) is 0. You should skip treating deeper depths. (i=1,
NoOfASSites
; index for observation depths) (Zobsv.h)
- ASObsSites (i) [assite]
i=1,
NoOfASSites
(Zobsv.h)
- MediaNo [integer]
current Media number. (ZmediaLoft.h)