Geant4 Cross Reference |
1 // 2 // ******************************************************************** 3 // * License and Disclaimer * 4 // * * 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. * 10 // * * 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitation of liability. * 17 // * * 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************************************** 25 // 26 // ABLAXX statistical de-excitation model 27 // Jose Luis Rodriguez, UDC (translation from ABLA07 and contact person) 28 // Pekka Kaitaniemi, HIP (initial translation of ablav3p) 29 // Aleksandra Kelic, GSI (ABLA07 code) 30 // Davide Mancusi, CEA (contact person INCL) 31 // Aatos Heikkinen, HIP (project coordination) 32 // 33 34 #pragma once 35 36 #include "globals.hh" 37 #include <cmath> 38 #include <vector> 39 40 41 constexpr const G4int nrows = 180; 42 constexpr const G4int zcols = 122; 43 44 constexpr const G4int lpcols = 13; 45 constexpr const G4int lprows = 154; 46 47 constexpr const G4int nrowsbeta = 251; 48 constexpr const G4int zcolsbeta = 137; 49 50 constexpr const G4int indexpart = 300; 51 52 // Data structures needed by ABLA evaporation code 53 54 class G4Mexp { 55 56 public: 57 G4Mexp(){}; 58 59 virtual ~G4Mexp() = default; 60 61 G4double massexp[lprows][lpcols] = {{0.}}; 62 G4double bind[lprows][lpcols] = {{0.}}; 63 G4int mexpiop[lprows][lpcols] = {{0}}; 64 }; 65 66 class G4Ec2sub { 67 public: 68 G4Ec2sub(){}; 69 70 virtual ~G4Ec2sub() = default; 71 72 G4double ecnz[nrows][zcols] = {{0.}}; 73 }; 74 75 class G4Ald { 76 public: 77 G4Ald() : av(0.0), as(0.0), ak(0.0), optafan(0.0){}; 78 79 virtual ~G4Ald() = default; 80 81 G4double av, as, ak, optafan = 0.; 82 }; 83 84 /** 85 * Shell corrections and deformations. 86 **/ 87 88 class G4Ecld { 89 90 public: 91 G4Ecld(){}; 92 virtual ~G4Ecld() = default; 93 94 /** 95 * Ground state shell correction frldm for a spherical ground state. 96 */ 97 G4double ecgnz[nrows][zcols] = {{0.}}; 98 99 /** 100 * Shell correction for the saddle point (now: == 0). 101 */ 102 G4double ecfnz[nrows][zcols] = {{0.}}; 103 104 /** 105 * Difference between deformed ground state and ldm value. 106 */ 107 G4double vgsld[nrows][zcols] = {{0.}}; 108 109 /** 110 * Alpha ground state deformation (this is not beta2!) 111 * beta2 = std::sqrt(5/(4pi)) * alpha 112 */ 113 G4double alpha[nrows][zcols] = {{0.}}; 114 115 /** 116 * RMS function for lcp emission barriers 117 */ 118 G4double rms[nrows][zcols] = {{0.}}; 119 120 /** 121 * Beta2 deformations 122 */ 123 G4double beta2[nrowsbeta][zcolsbeta] = {{0.}}; 124 125 /** 126 * Beta4 deformations 127 */ 128 G4double beta4[nrowsbeta][zcolsbeta] = {{0.}}; 129 }; 130 131 class G4Fiss { 132 /** 133 * Options and parameters for fission channel. 134 */ 135 136 public: 137 G4Fiss() 138 : bet(0.0), bethyp(0.0), ifis(0.0), ucr(0.0), dcr(0.0), optshp(0), optxfis(0), 139 optct(0), optcol(0), at(0), zt(0){}; 140 141 virtual ~G4Fiss() = default; 142 143 G4double bet, bethyp, ifis, ucr, dcr; 144 G4int optshp, optxfis, optct, optcol, at, zt; 145 }; 146 147 /** 148 * Fission barriers. 149 */ 150 151 class G4Fb { 152 153 public: 154 G4Fb(){}; 155 virtual ~G4Fb() = default; 156 157 G4double efa[nrows][zcols] = {{0.}}; 158 }; 159 160 /** 161 * Options 162 */ 163 164 class G4Opt { 165 166 public: 167 G4Opt() : optemd(0), optcha(0), optshpimf(0), optimfallowed(0), nblan0(0){}; 168 169 virtual ~G4Opt() = default; 170 171 G4int optemd, optcha, optshpimf, optimfallowed, nblan0; 172 }; 173 174 class G4VarNtp { 175 public: 176 G4VarNtp() { clear(); }; 177 178 virtual ~G4VarNtp() = default; 179 180 void clear() { 181 ntrack = 0; 182 kfis = 0; 183 itypcasc.clear(); 184 avv.clear(); 185 zvv.clear(); 186 svv.clear(); 187 enerj.clear(); 188 pxlab.clear(); 189 pylab.clear(); 190 pzlab.clear(); 191 } 192 193 /** 194 * Fission 1/0=Y/N. 195 */ 196 G4int kfis; 197 198 /** 199 * Excit energy at fis. 200 */ 201 G4double estfis = 0.; 202 203 /** 204 * Z of fiss nucleus. 205 */ 206 G4int izfis = 0; 207 208 /** 209 * A of fiss nucleus. 210 */ 211 G4int iafis = 0; 212 213 /** 214 * Number of particles. 215 */ 216 G4int ntrack; 217 218 /** 219 * Does this nucleus require Fermi break-up treatment? Only 220 * applicable when used together with Geant4. 221 * true = do fermi break-up (and skip ABLA part) 222 * false = use ABLA 223 */ 224 G4bool needsFermiBreakup = false; 225 226 /** 227 * emitted in cascade (0) or evaporation (1). 228 */ 229 std::vector<G4int> itypcasc; 230 231 /** 232 * A (-1 for pions). 233 */ 234 std::vector<G4int> avv; 235 236 /** 237 * Z 238 */ 239 std::vector<G4int> zvv; 240 241 /** 242 * S (-1 for lambda_0). 243 */ 244 std::vector<G4int> svv; 245 246 /** 247 * Kinetic energy. 248 */ 249 std::vector<G4double> enerj; 250 251 /** 252 * Momentum. 253 */ 254 std::vector<G4double> plab; 255 std::vector<G4double> pxlab; 256 std::vector<G4double> pylab; 257 std::vector<G4double> pzlab; 258 259 /** 260 * Theta angle. 261 */ 262 std::vector<G4double> tetlab; 263 264 /** 265 * Phi angle. 266 */ 267 std::vector<G4double> philab; 268 269 }; 270