/* * DO NOT MANUALLY UPDATE THIS FILE. * If needed: make cpp_headers * * fortran2c.py - automatic conversion * wwindw.inc -> wwindw.h */ #ifndef __WWINDW__ #define __WWINDW__ #include "types.h" #ifdef __cplusplus extern "C" { #endif // //=== wwindw ===========================================================* // //----------------------------------------------------------------------* // * // Copyright (C) 2003-2019: CERN & INFN * // All Rights Reserved. * // * // region dependent Weight WINDoW parameters: * // * // Created on 02 March 1992 by Alfredo Ferrari & Paola Sala * // Infn - Milan * // * // Included in: * // * // BDNOPT * // BLNSET * // ELECTR * // FIPROU * // FLUKA * // KASKAD * // KASNEU * // PHOTON * // ZEROIN * // * // Description of the variables: * // * // Ethww1(j) = kinetic energy threshold for particle j * // * // Ethww2(j) = kinetic energy threshold for particle j below * // which the asymptotic value of the weight * // window is assumed * // * // Wwexwd(j) = Initial extra width of the weight window * // at Ethww1, if Ethww1 > Ethww2 * // * // Extwwn(j) = Multiplication factor for particle j for the * // weight window: bot and top levels are multi- * // plied by this factor * // * // Iwlbgn = starting location in blank common for the * // lower limits of region dependent weight windows* // (it is for 0 index, real numeration, that is * // R*(4xKalgnm) numeration ) * // * // Iwhbgn = starting location in blank common for the * // upper limits of region dependent weight windows* // (it is for 0 index, real numeration, that is * // R*(4xKalgnm) numeration ) * // * // Iwmbgn = starting location in blank common for the mul- * // tiplicative factor of region dependent weight * // windows * // (it is for 0 index, real numeration, that is * // R*(4xKalgnm) numeration ) * // * // Lwwndw = logical flag for setting on weight windows * // * // Lwwprm = logical flag for setting on weight windows * // for primary particles * // * // Note: if the weight window for region i is given by [RR,SP], * // with multiplicative threshold factor FM, a particle * // j with energy ekin and weight W will undergo: * // - no RR and no splitting if Eke >= FM * Ethww1 (j) * // - RR with survival probability given by W / FR, if * // W < FR = RR + RR * ( 1 / Wwexwd (j) - 1 ) * // x ( Ekin / FM - Ethww2 (j) ) / * // ( Ethww1 (j) - Ethww2 (j) ), * // for FM * Ethww1 (j) > Ekin > FM * Ethww2 (j) * // Note that FR < RR * // - Splitting if * // W > FS = SP + SP * ( Wwexwd (j) - 1 ) * // x ( Ekin / FM - Ethww2 (j) ) / * // ( Ethww1 (j) - Ethww2 (j) ), * // for FM * Ethww1 (j) > Ekin > FM * Ethww2 (j) * // Note that FS < SP * // - RR with survival probability given by W / RR * // for W < RR, Ekin < FM * Ethww2 (j) * // - Splitting for W > SP, Ekin < FM * Ethww2 (j) * // * //----------------------------------------------------------------------* // // Maximum number of consecutive splitting operations: // Multiplicative threshold to allow for consecutive splitting // operations: const int MXWWSP = 3; const double WWSPMX = 50.E+00; extern struct { double ethww1[NALLWP+6+1]; double ethww2[NALLWP+6+1]; double wwexwd[NALLWP+6+1]; double extwwn[NALLWP+6+1]; int iwlbgn; int iwhbgn; int iwmbgn; logical lwwndw; logical lwwprm; } wwindw_; const int wwindw_ethww1_base = -6; const int wwindw_ethww2_base = -6; const int wwindw_wwexwd_base = -6; const int wwindw_extwwn_base = -6; #ifdef __cplusplus } #endif #endif