/* * DO NOT MANUALLY UPDATE THIS FILE. * If needed: make cpp_headers * * fortran2c.py - automatic conversion * beamcm.inc -> beamcm.h */ #ifndef __BEAMCM__ #define __BEAMCM__ #include "types.h" #ifdef __cplusplus extern "C" { #endif // //=== Beamcm ===========================================================* // //----------------------------------------------------------------------* // * // Partial (the additions wrt the original one) * // Copyright (C) 2003-2019: CERN & INFN * // All Rights Reserved. * // * // BEAM properties CoMmon: * // * // Version for Fluka9x/200x of the old BEAM common for Fluka87: * // * // Created on 22 October 1993 by Alfredo Ferrari & Paola Sala * // INFN - Milan * // * // Pbeam = average beam particle momentum (GeV/c) * // Pbmmax = maximum momentum for which tabulations must be * // generated (GeV/c) * // Dpbeam = beam momentum spread (GeV/c) * // Divbm = beam angular divergense (rad) * // Xspot = beam width in (beam frame) x-direction (cm) * // Yspot = beam width in (beam frame) y-direction (cm) * // Xbeam = beam spot centre (geom frame) x-coordinate (cm) * // Ybeam = beam spot centre (geom frame) y-coordinate (cm) * // Zbeam = beam spot centre (geom frame) z-coordinate (cm) * // Ubeam = beam direction cosine wrt the (beam frame) x-axis * // Vbeam = beam direction cosine wrt the (beam frame) y-axis * // Wbeam = beam direction cosine wrt the (beam frame) z-axis * // Ubmpol = beam polarization cosine wrt the (beam frame) x-axis * // Vbmpol = beam polarization cosine wrt the (beam frame) y-axis * // Wbmpol = beam polarization cosine wrt the (beam frame) z-axis * // Polfra = polarization fraction * // Rflood = emission radius for a uniform and isotropic source * // or maximum radius for a cylindrical/spherical volume * // source * // Rvlmax = emission radius for a uniform and isotropic source * // or maximum radius for a cylindrical/spherical volume * // source * // Rvlmin = minimum radius for a cylindrical/spherical volume * // source * // Dxvlmx = maximum Dx for a cartesian volume source * // (particle emitted inside * // [Xbeam+Dxvlmn/2, Xbeam+Dxvlmx/2] * // and inside * // [Xbeam-Dxvlmx/2, Xbeam-Dxvlmn/2] ) * // Dxvlmn = minimum Dx for a cartesian volume source * // Dyvlmx = maximum Dy for a cartesian volume source * // (particle emitted inside * // [Ybeam+Dyvlmn/2, Ybeam+Dyvlmx/2] * // and inside * // [Ybeam-Dyvlmx/2, Ybeam-Dyvlmn/2] ) * // Dyvlmn = minimum Dy for a cartesian volume source * // Dzvlmx = maximum Dz for a cartesian/cylindrical volume source * // (particle emitted inside * // [Zbeam+Dzvlmn/2, Zbeam+Dzvlmx/2] * // and inside * // [Zbeam-Dzvlmx/2, Zbeam-Dzvlmn/2] ) * // Dzvlmn = minimum Dz for a cartesian/cylindrical volume source * // Ijbeam = beam particle type (see prname in /paprop/) * // Ijhion = heavy ion type if ijbeam = -2 * // Nucdbm = neutrino interaction codeword for a neutrino beam * // Isourc = Isourc_th special source routine invoked, if > 0 * // Ldpgss = true for a gaussian momentum distribution of the * // beam particles, false for a rectangular one * // Ldvgss = true for a gaussian angular divergence distribution * // of the beam particles, false for a rectangular one * // Ldxgss = true for a gaussian spatial distribution of the beam * // spot in the x-direction, false for a rectangular one * // Ldygss = true for a gaussian spatial distribution of the beam * // spot in the y-direction, false for a rectangular one * // Beawei = weight of the beam particles * // Lbeamc = flag for an annular beam * // Lpperp = flag for polar. perp. to the beam direction * // Lpfrac = flag for interpreting the polar. fraction * // Bmaxis(j,i) = j_th component of the i_th axis used to define the * // conventional x,y,z beam reference frame * // Lbaxis = logical flag for using a beam axis frame different * // from the standard one * // Lflood = logical flag for using a uniform and isotropic beam * // source out of a sphere of radius Rflood * // Lvlcar = logical flag for using a cartesian volume source * // Lvlcyl = logical flag for using a cylindrical volume source * // Lvlsph = logical flag for using a spherical volume source * // Lsourc = logical flag for a user written source routine * // Lrdbea = logical flag for a radioactive isotope beam * // Lnufin = logical flag for (anti)neutrino (forced) interactions* // when used as primary beams * // * //----------------------------------------------------------------------* // extern struct { double pbeam; double dpbeam; double pbmmax; double divbm; double xspot; double yspot; double xbeam; double ybeam; double zbeam; double ubeam; double vbeam; double wbeam; double ubmpol; double vbmpol; double wbmpol; double polfra; double beawei; double bmaxis[3][3]; double rflood; double rvlmin; double rvlmax; double dxvlmn; double dxvlmx; double dyvlmn; double dyvlmx; double dzvlmn; double dzvlmx; int ijbeam; int ijhion; int nucdbm; int isourc; logical ldpgss; logical ldvgss; logical ldxgss; logical ldygss; logical lbeamc; logical lpperp; logical lpfrac; logical lbaxis; logical lflood; logical lvlcar; logical lvlcyl; logical lvlsph; logical lsourc; logical lrdbea; logical lnufin; } beamcm_; #ifdef __cplusplus } #endif #endif