/* * DO NOT MANUALLY UPDATE THIS FILE. * If needed: make cpp_headers * * fortran2c.py - automatic conversion * trackr.inc -> trackr.h */ #ifndef __TRACKR__ #define __TRACKR__ #include "types.h" #ifdef __cplusplus extern "C" { #endif // * //=== trackr ===========================================================* // * //----------------------------------------------------------------------* // * // Copyright (C) 2003-2019: CERN & INFN * // All Rights Reserved. * // * // TRACKs Recording by Alfredo Ferrari, INFN - Milan * // * // included in : * // bdnopt * // crnkvp * // dedx * // delthr * // doeimb * // dohimb * // doiosp * // donimb * // estprf * // electr * // em2fls * // emdedx * // emfgeo * // emfsco * // emnwnp * // eventv * // evxtes * // fkbirk * // flnwst * // kasemf * // kaskad * // kashea * // kasneu * // kasoph * // kasray * // geoden * // geofar * // geomag * // geomtr * // geonor * // lbxrfl * // mageas * // magnew * // photfl * // photon * // propph * // prtstp * // scntlp * // stprnc * // usrsco * // usrsrn * // zeroin * // * // Ntrack = number of track segments * // Mtrack = number of energy deposition events along the track * // 0 < i < Ntrack * // Xtrack = end x-point of the ith track segment * // Ytrack = end y-point of the ith track segment * // Ztrack = end z-point of the ith track segment * // 1 < i < Ntrack * // Ttrack = length of the ith track segment * // 1 < j < Mtrack * // Dtrack = energy deposition of the jth deposition event * // Dptrck = momentum loss of the jth deposition event * // * // Jtrack = identity number of the particle: for recoils or * // kerma deposition it can be outside the allowed * // particle id range, assuming values like: * // 208: "heavy" recoil * // 211: EM below threshold * // 308: low energy neutron kerma * // in those cases the id of the particle originating * // the interaction is saved inside J0trck (which othe-* // rwise is zero) * // J0trck = see above * // Ifltrk = flag used for internal debugging (trying to solve * // possible residual issues with Mgdraw driven * // quenching) * // Etrack = total energy of the particle * // Ptrack = momentum of the particle (not always defined, if * // < 0 must be obtained from Etrack) * // Cx,y,ztrck = direction cosines of the current particle * // Cx,y,ztrpl = polarization cosines of the current particle * // Wtrack = weight of the particle * // Wscrng = scoring weight: it can differ from Wtrack if some * // biasing techniques are used (for example inelastic * // interaction length biasing) * // Ctrack = total curved path * // Cmtrck = cumulative curved path since particle birth * // Zfftrk = of the particle * // Zfrttk = actual Z_eff of the particle * // Atrack = age of the particle * // Akshrt = Kshrt amplitude for K0/K0bar * // Aklong = Klong amplitude for K0/K0bar * // Wninou = neutron algebraic balance of interactions (both * // for "high" energy particles and "low" energy * // neutrons) * // Wcinou = charge algebraic balance of interactions (for * // all interactions) * // Spausr = user defined spare variables for the current * // particle * // Sttrck = macroscopic total cross section for low energy * // neutron collisions * // Satrck = macroscopic absorption cross section for low energy* // neutron collisions (it can be negative for Pnab>1) * // Tkniel = fraction of energy deposition going into (unres- * // tricted) NIEL * // Tkrnie = fraction of energy deposition going into (res- * // tricted) NIEL * // Tkedpa = fraction of energy deposition going into DPAs * // Tkearc = fraction of energy deposition going into arcDPAs * // Tkenrt = fraction of energy deposition going into DPA-NRTs * // Aftrck = extra infos: for EM particles a non zero value is * // the kinetic energy of a possible delta ray parent * // (excluding Moller and Bhabha) * // Eptrck = kinetic energy of the parent of the last inelastic * // interaction * // Ktrack = if > 0 neutron group of the particle (neutron) * // * // Ntrack > 0, Mtrack > 0 : energy loss distributed along the * // track * // Ntrack > 0, Mtrack = 0 : no energy loss along the track * // Ntrack = 0, Mtrack = 0 : local energy deposition (the * // value and the point are not re- * // corded in Trackr) * // Mmtrck = flag recording the material index for low energy * // neutron collisions * // Lt1trk = initial lattice cell of the current track * // (or lattice cell for a point energy deposition) * // Lt2trk = final lattice cell of the current track * // Ihspnt = current geometry history pointer (not set if -1) * // Iftrck = extra infos: for EM particles a non zero value is * // the (coded) id of a possible delta ray parent * // (excluding Moller and Bhabha) * // Lftrck = extra infos: for EM particles a non zero value is * // the generation of a possible delta ray parent * // (excluding Moller and Bhabha) * // Iptrck = (Paprop) id of the parent of the last inelastic * // interaction * // Iprodc = flag for prompt(=1)/radioactive products(=2) * // Ltrack = flag recording the generation number * // Llouse = user defined flag for the current particle * // Iaztrk = copy of IRDAZM id of parent radioactive isotope * // if any * // Ispusr = user defined spare flags for the current particle * // Lfsssc = logical flag for inelastic interactions ending with* // fission (used also for low energy neutrons) * // Lpkill = logical (user) flag for sudden particle death * // * //----------------------------------------------------------------------* // * const int MXTRCK = 2500; extern struct { double xtrack[MXTRCK+1]; double ytrack[MXTRCK+1]; double ztrack[MXTRCK+1]; double ttrack[MXTRCK]; double dtrack[MXTRCK]; double dptrck[MXTRCK][3]; double etrack; double ptrack; double cxtrck; double cytrck; double cztrck; double wtrack; double cxtrpl; double cytrpl; double cztrpl; double zfftrk; double zfrttk; double atrack; double ctrack; double cmtrck; double akshrt; double aklong; double wscrng; double wninou; double spausr[MKBMX1]; double sttrck; double satrck; double tkniel; double tkrnie; double tkedpa; double tkearc; double tkenrt; double wcinou; double aftrck; double eptrck; int ntrack; int mtrack; int ifltrk; int jtrack; int j0trck; int ktrack; int iftrck; int lftrck; int iptrck; int mmtrck; long long lt1trk; long long lt2trk; long long ihspnt; int ltrack; int llouse; int iprodc; int iaztrk; int ispusr[MKBMX2]; logical lfsssc; logical lpkill; } trackr_; const int trackr_xtrack_base = 0; const int trackr_ytrack_base = 0; const int trackr_ztrack_base = 0; #ifdef __cplusplus } #endif #endif