# Category hadr-casc History See `CONTRIBUTING.rst` for details of **required** info/format for each entry, which **must** added in reverse chronological order (newest at the top). It must **not** be used as a substitute for writing good git commit messages! ------------------------------------------------------------------------------- ## 2025-12-16 Gabriele Cosmo (hadr-casc-V11-03-02) - Directly use std::cbrt(double) in G4InuclSpecialFunctions, as now standard and available in , replacing old ad-hoc implementation. Minor code formatting. ## 2025-11-26 Vladimir ivanchenko (hadr-casc-V11-03-01) - G4BigBanger - fixed typo in the computation of probability, which is identified by the new compiler and should not change any result. ## 2025-04-22 Alberto Ribon (hadr-casc-V11-03-00) - G4CascadeFinalStateAlgorithm, G4NucleiModel : introduced the possibility to retrieve either the behavior of these classes as in Geant4 version 11.3 (default) or as in 11.2 according to the value of boolean flags in G4HadronicParameters. In the case that the behavior of the class G4CascadeFinalStateAlgorithm is chosen as in Geant4 version 11.2, the change introduced in hadr-casc-V11-02-02 is skipped; similarly, but independently, if the behavior of the class G4NucleiModel is chosen as in Geant4 version 11.2, the change introduced in hadr-casc-V11-02-00 is skipped. ( Note that the changes introduced in the two above classes in hadr-casc-V11-02-02 and hadr-casc-V11-02-00 can be considered as real improvements of the Bertini model, some degradation of thin-target data - in particular for the pion production in HARP data - are observed. This is likely due to the fact that a complete retuning of the parameters of the Bertini model would have been necessary after these changes. ) ## 2024-08-21 Gabriele Cosmo (hadr-casc-V11-02-04) - Fixed reported Coverity defect in G4NucleiModel for use of std::move(). ## 2024-08-14 Gabriele Cosmo (hadr-casc-V11-02-03) - Fixed reported Coverity defect in G4NucleiModel for unitialised data. ## 2024-01-29 Dennis Wright (hadr-casc-V11-02-02) - G4CascadeFinalStateAlgorithm::GenerateCosTheta() For 4-body and higher-body generation of cosTheta, use direct sampling of exp(1 - cosTheta) instead of previously used rejection method on sinTheta * exp(-sinTheta). This removes the reflection about cosTheta = 0 that caused a symmetric double bump in the Feynman-x distribution. ## 2024-01-24 Dennis Wright (hadr-casc-V11-02-01) - G4InuclSpecialFunctions::inuclRndm() is just a wrapper of G4UniformRand() remove method from class G4InuclSpecialFunctions and replace all occurrences of inuclRndm() with G4UniformRand() in files G4BigBanger.cc G4CascadeFinalStateAlgorithm.cc G4EquilibriumEvaporator.cc G4Fissioner.cc G4IntraNucleiCascader.cc G4InuclParamAngDst.cc G4InuclSpecialFunctions.cc G4NonEquilibriumEvaporator.cc G4NucleiModel.cc ## 2023-12-11 Dennis Wright (hadr-casc-V11-02-00) - improved calculation of di-nucleon density using Levinger quasi-deuteron model proposed by Einar Elen (Lund) and Natalia Toro (SLAC) : - add method G4NucleiModel::setDinucleonDensityScale() to calculate correction factor to be applied to dinucleon densities - modify method G4NucleiModel::getCurrentDensity() to apply this factor ## 2023-11-17 Vladimir Ivantchenko (hadr-casc-V11-01-03) - G4CascadeParamMessenger - fixed memory leak at exit and simplified the code. ## 2023-04-17 Alberto Ribon (hadr-casc-V11-01-02) - G4BigBanger : added protection in the method G4BigBanger::generateBangInSCM to avoid very rare cases of unphysical negative energy of one of the secondaries produced by the Bertini model. (Note: this problem was never reproduced in our tests, but was reported by ATLAS with Geant4 10.6; the secondaries with negative - both total and kinetic - energy were always neutrons, produced by the internal Bertini nuclear de-excitation, after the intra-nuclear cascade. Many thanks to Mihaly Novak for providing detailed debugging information!) ## 2023-04-05 Dennis Wright (hadr-casc-V11-01-01) - Fix coverity bug 60840: incorrect integer divide in fission part of G4EquilibriumEvaporator::deExcite. Changed RHS to G4double. ## 2023-03-14 Alberto Ribon (hadr-casc-V11-01-00) Extended Bertini model to allow the use of Abla as alternative post-cascade nuclear de-excitation (the default de-excitation remains unchanged). There are two ways to set Abla as de-excitation for Bertini: via C++ interface, by calling G4CascadeInterface::useAblaDeexcitation(); via environmental variable, by setting G4CASCADE_USE_ABLA=1. - G4AblaDeexcitation : new class that does the nuclear de-excitation, after the Bertini cascade, by using the Abla model, and then tranform the secondaries in Bertini objects. - G4CascadeInterface : added the new method useAblaDeexcitation() which sets Abla as nuclear de-excitation; this method can be called directly by the user, or automatically in the constructor of the class when the flag G4CascadeParameters::useAbla() is enabled. - G4InuclCollider : added new method useAblaDeexcitation() which creates an instance of the new class G4AblaDeexcitation. - G4CascadeParameters : added a boolean flag that enables the Abla de-dexcitation model in the case that the new environmental variable G4CASCADE_USE_ABLA is set. ## 2022-11-26 Gabriele Cosmo (hadr-casc-V11-00-05) - Fixed compilation warnings for implicit type conversions on macOS/XCode 14.1. ## 2022-11-13 Alberto Ribon (hadr-casc-V11-00-04) (Two bug-fixes found and suggested by Sven Menke) - G4NumIntTwoBodyAngDst.hh : corrected the incomplete initialization of the vector angDist (fixing bug #2515). - G4TwoBodyAngularDist.cc : corrected the charge exchange reaction of pion+ on neutron producing in the final state pion0 and proton (fixing bug #2516) ## 2022-08-26 Gabriele Cosmo (hadr-casc-V11-00-03) - Attempt to fix compilation warning on gcc-12.1 for G4CascadeParamMessenger::CreateDirectory(). ## 2022-05-23 Gabriele Cosmo (hadr-casc-V11-00-02) - Fixed wrong comparison between two arrays in findCrossSection(..) for G4CascadePPChannel, G4CascadeNPChanneland G4CascadeNNChannel. ## 2022-02-09 Gabriele Cosmo (hadr-casc-V11-00-01) - Fixed compilation warnings on Intel compilers for unused variables. - Use const iterator in G4InuclEvaporation::BreakItUp(..). ## 2021-12-10 Ben Morgan (hadr-casc-V11-00-00) - Change to new Markdown History format. --- # History entries prior to 11.0 4 August 2021 Alberto Ribon (hadr-casc-V10-07-04) -------------------------------------------------- - G4CascadeInterface : set the creator model ID for the secondaries produced by Bertini model using the new version of G4PhysicsModelCatalog 29 June 2021 Gabriele Cosmo (hadr-casc-V10-07-03) ------------------------------------------------- - Fixed compilation warnings occurring when c++20 is enabled. 17 May 2021 Jonathan Madsen (hadr-casc-V10-07-02) ------------------------------------------------- - Fixed TLS usage of G4CascadeChannelTables and G4CascadeParameters 16 April 2021 Ben Morgan (hadr-casc-V10-07-01) -------------------------------------------------- - Migrate build to modular CMake API 13 April 2021 Alberto Ribon (hadr-casc-V10-07-00) ----------------------------------------------------- - GNUmakefile, sources.cmake : removed the subdirectories hadronic/models/management and hadronic/models/util (that have been now deleted, with their classes moved to hadronic/util and hadronic/management). Removed also the useless dependency to hadronic/process. 5 May 2020 Gunter Folger (hadr-casc-V10-06-04) ----------------------------------------------------- - Fix for clang10: confusing indentation caused by if add {} around statements 26 February 2020 Dennis Wright (hadr-casc-V10-06-03) ----------------------------------------------------- - G4LightTargetCollider::collide() : avoid frequent energy conservation warning from G4HadronicProcess by setting up "no interaction" final state below threshold 13 January 2020 Dennis Wright (hadr-casc-V10-06-02) ---------------------------------------------------- - G4CascadeInterface.cc: fix memory leak by deleting ltcollider in class dtor 10 January 2020 Michael Kelsey (hadr-casc-V10-06-01) ----------------------------------------------------- - G4CascadeParamMessenger.cc: Ensure that Bertini-specific commands get added to /process/had/cascade/ directory, instead of /process/had. Requires resetting cmdDir=0 between CreateDirectory() calls. 16 December 2019 Vladimir Ivanchenko (hadr-casc-V10-06-00) ----------------------------------------------------------- - G4CascadeCheckBalance: fixed outstanding problem of the interface with native pre-compound model, which happens since in the default de-excitation internal electron conversion become enabled 7 November 2019 Dennis Wright (hadr-casc-V10-05-02) ----------------------------------------------------- - G4LightTargetCollider: fix crash when gamma energy below deuteron disintegration threshold and improve exception handling 5 November 2019 Dennis Wright (hadr-casc-V10-05-01) ----------------------------------------------------- - new class G4LightTargetCollider to more accurately handle collisons on p, d, t, 3He. Currently only gamma on protons and deuterons is implemented. 29 May 2019 Dennis Wright (hadr-casc-V10-05-00) ------------------------------------------------ - fix bug found in biasing/B03 example due to FPE from unprotected sqrt of pperp2 + qv - p1r*p1r in G4NucleiModel::boundaryTransition 19 November 2018 Dennis Wright (hadr-casc-V10-04-12) ----------------------------------------------------- - fix bug # 2096: non-conservation in precompound interface Four problems fixed: G4PreCompoundDeexcitation::deExcite: do not use const reference as input to theDeExcitation->DeExcite(G4Fragment) because G4PreCompound can change the fragment and upset the energy balance G4CollisionOutput::getTotalCharge: subtract electron charges in case of internal conversion in G4PreCompound G4CascadeCheckBalance::collide(const G4Fragment& fragment, G4CollisionOutput& output): Convert fragment momentum given in MeV to GeV (Bertini units) and remove electrom masses from energy balance when internal conversion occurs 09 November 2018 Gabriele Cosmo (hadr-casc-V10-04-11) ------------------------------------------------------ - Fixed few printout typos. 25 October 2018 Makoto Asai (hadr-casc-V10-04-10) -------------------------------------------------- - G4CascadeParamMessenger.cc : add description to /process/had/ directory. Addressing to bug report #2020. 27 September 2018 Dennis Wright (hadr-casc-V10-04-09) ------------------------------------------------------- - G4NucleiModel::boundaryTransition : fix by Natalia Toro (SLAC) to prevent glancing incidence at shell boundaries from reflecting too many times 19 September 2018 Dennis Wright (hadr-casc-V10-04-08) ------------------------------------------------------- - G4CascadeT11pizNChannel.cc, G4CascadeT31piNChannel.cc, G4CascadeT33piNChannel.cc : re-order particle types in final state arrays so that pion is first and nucleon is second. Two body final state methods assume this. - G4CascadeKminusNChannel.cc, G4CascadeKminusPChannel.cc, G4CascadeKplusNChannel.cc, G4CascadeKplusPChannel.cc, G4CascadeKzeroBarNChannel.cc, G4CascadeKzeroBarPChannel.cc, G4CascadeKzeroNChannel.cc, G4CascadeKzeroPChannel.cc : same as above but re-order only for two- and three-body final states. - G4CascadeT1GamNChannel.cc : re-order final state particle types so that mesons are first in two- and three-body cases 17 September 2018 Dennis Wright (hadr-casc-V10-04-07) ------------------------------------------------------- - G4NucleiModel: replace Kossov parameterization of gammaQDxsec with new values coming from smooth line through deuteron photo-disintegration data which include 2004 JLab data up to 3 GeV. 6 July 2018 Vladimir Ivanchenko (hadr-casc-V10-04-06) ------------------------------------------------------ - G4GDecay3 - fixed problem reported by CMS due to wrong kinematics in the final state by removing loop check; adding protection for low value of mother mass 7 June 2018 Dennis Wright (hadr-casc-V10-04-05) -------------------------------------------------- - G4CascadePPChannel, G4CascadeNPChannel, G4CascadeNNChannel: extend strange pair production channels to 6, 7, 8 and 9-body final states - G4CascadeT11pizNChannel.cc : fix qnum conservation problem in 8-body final states 2 May 2018 Dennis Wright (hadr-casc-V10-04-04) ------------------------------------------------- - G4ElementaryParticleCollider methods generateSCMpionAbsorption and generateSCMmuonAbsorption did not produce correct nucleon pairs when pion or muon was absorbed - both methods now re-written quantum number conservation test added to method collide(G4InuclParticle* bullet, G4InuclParticle* target, G4CollisionOutput& output) 20 March 2018 Julia Yarba (hadr-casc-V10-04-03) --------------------------------------------------- - Fix implementation of nuclear_rad_2par configurable key (G4CascadeParamMessenger.cc) 6 March 2018 Dennis Wright (hadr-casc-V10-04-02) --------------------------------------------------- - G4CascadeT11pizNChannel.cc: extend strange pair production channels to 6,7,8 and 9 body final states 27 February 2018 Alberto Ribon (hadr-casc-V10-04-01) ----------------------------------------------------- - G4NucleiModel : replaced obsolete std::bind2nd with std::bind . 2 February 2018 Dennis Wright (hadr-casc-V10-04-00) ----------------------------------------------------- - Add strange pair production channels to list of 6, 7, 8 and 9-body final states in classes G4CascadeT31piNChannel and G4CascadeT33piNChannel. Modify template values accordingly in G4CascadePiMinusNChannel.hh G4CascadePiMinusPChannel.hh G4CascadePiPlusNChannel.hh G4CascadePiPlusPChannel.hh 27 November 2017 Dennis Wright (hadr-casc-V10-03-06) ----------------------------------------------------- - G4CascadeInterface::createBullet, G4CascadeInterface::ApplyYourself: rotation to z-axis unnecessary and may cause irreproducibility. Remove it according to bug report #1990. 20 October 2017 Tatsumi Koi (hadr-casc-V10-03-05) ------------------------------------------------ - G4CascadeParameters.cc FERMI_SCALE and RAD_TRAILING are added to changeable parameters from HDP Lower and upper limits of changeable parameters form HDP are registered 6 October 2017 Tatsumi Koi (hadr-casc-V10-03-04) ------------------------------------------------ - G4CascadeParameters.cc Remove protection for using G4HadronicDeveloperParameters 5 October 2017 Tatsumi Koi (hadr-casc-V10-03-03) ------------------------------------------------ - Adding comment for BEST_PAR in G4CascadeParameters and test/README 22 May 2017 Dennis Wright (hadr-casc-V10-03-02) ------------------------------------------------ - G4ElementaryParticleCollider::generateSCMmuonAbsorption: fix rare seg fault spotted and diagnosed by Ralf Ehrlich (mu2e/Virgina). Added line particles.clear(); if GetThreeBodyMomenta() returns no momenta. 1 May 2017 Tatsumi Koi (hadr-casc-V10-03-01) --------------------------------------------------- - G4CascadeParameters.cc: Use G4HadronicDeveloperParameters as a tool for sharing parameters between developers and experienced users. Need to set environment variable of "TEST_HDP" for testing the tool. 13 April 2017 Michael Kelsey (hadr-casc-V10-03-00) --------------------------------------------------- - G4CascadeCoalescence: Remove clusterHash() function and triedClusters registry. Drop redundant calls of tryCluster() with subcombinatorics; all combinations are handled, uniquely, in main loop over indices. Eliminates significant memory usage seen with high-energy applications of BERT. - test/clusterComb.cc, test/GNUmakefile: New standalone test to exercise combinatoric behaviour of G4CascadeCoalescence (used in testing above changes). 29 November 2016 Dennis Wright (hadr-casc-V10-02-05) ----------------------------------------------------- - G4InuclCollider::photonuclearOkay(): fix segfault reported by Daren Sawkey in bug report #1883 6 October 2016 Dennis Wright (hadr-casc-V10-02-04) --------------------------------------------------- - G4EquilibriumEvaporator::deExcite: replace sampling of evaporation spectrum with original Dostrovsky method - paraMaker.cc: add comments 3 October 2016 Dennis Wright (hadr-casc-V10-02-03) --------------------------------------------------- Mike Kelsey added the lines process->PreparePhysicsTable(*part); process->BuildPhysicsTable(*part); in unit test cascade/test/cascade.cc to configure RunManager event loop 30 September 2016 Dennis Wright (hadr-casc-V10-02-02) ------------------------------------------------------ - add 8- and 9-body final states to K-, K0 and K0b induced reactions. Classes affected: G4CascadeKminusNChannel, G4CascadeKminusPChannel, G4CascadeKzeroBarNChannel, G4CascadeKzeroBarPChannel, G4CascadeKzeroNChannel, G4CascadeKzeroPChannel 14 March 2016 Dennis Wright (hadr-casc-V10-02-01) -------------------------------------------------- - G4InuclCollider.cc: re-instate getenv for photonuclearOkay(). This method causes significant performance degradation and the physics needs to be improved before it can made default 25 January 2016 Michael Kelsey (hadr-casc-V10-02-00) ----------------------------------------------------- - G4InuclCollider.cc: Remove envvar which enables "photonuclearOkay()" test. This test will now be used by default, improving the match for production of neutrons and protons in the GDR region. 6 November 2015 Dennis Wright (hadr-casc-V10-01-13) ---------------------------------------------------- - G4CascadeKplusNChannel: extend to 9-body final states and 32 GeV using same energy bins as G4CascadeKplusPChannel 16 October 2015 V.Ivanchenko (hadr-casc-V10-01-12) --------------------------------------------------- - G4CascadeCoalescence.hh: Add #include "G4InuclElementaryParticle.hh", to address compiler error from Cray (see Config HN 1764). 19 August 2015 V.Ivanchenko (hadr-casc-V10-01-11) -------------------------------------------------- - G4NucleiModel.cc - Randomize.hh header is included 13 July 2015 M. Kelsey (hadr-casc-V10-01-10) --------------------------------------------- - G4KaonSampler: Per D. Wright, modify to 30 bins, finely divided up to 1.5 GeV, very coarsely grained above 10 GeV. Binning optimized to isolate various resonances in Kp and Kn spectra. - G4CascadeKplusPChannel: Per D. Wright, use new G4KaonSampler binning, with final states tabulated up to 9-body. Should dramatically improve match to data. 26 June 2015 M. Kelsey (hadr-casc-V10-01-09) --------------------------------------------- - G4CascadeCheckBalance.cc: Address Coverity #60845-60850, with incorrect logical expression in diagnostic output. 22 June 2015 M. Kelsey (hadr-casc-V10-01-08) --------------------------------------------- Follow new G4cbrt(int) by moving powers of Z and A out of argument. Lookup table only covers real nuclei (up to about 300 or so). G4EquilibriumEvaporator.cc G4Fissioner.cc bindingEnergyAsymptotic.cc 22 June 2015 M. Kelsey (hadr-casc-V10-01-07) --------------------------------------------- Per request from G. Cosmo and A. Dotti, migrate the five "TLS" local buffers to use the new G4AutoDelete mechanism. This removes them as spurious memory leaks at end of job. G4InuclSpecialFunctions.cc G4NucleiModel.cc 19 June 2015 M. Kelsey (hadr-casc-V10-01-06) --------------------------------------------- Per request from A. Ribon, migrate few remaining instances of std::pow, std::log, and std::exp to Geant4's VDT equivalents (G4Pow, G4Log, G4Exp). Only G4Pow is problematic, requiring use of singleton pointer instead of direct replacement. G4CascadeFinalStateAlgorithm.cc G4FissionStore.cc G4Fissioner.cc G4IntraNucleiCascader.cc - G4InuclSpecialFunctions: As above, and define G4cbrt(G4int) which uses G4Pow::Z13() with lookup table for integer arguments (e.g. Z, A, N). 8 June 2015 M. Kelsey (hadr-casc-V10-01-05) -------------------------------------------- Per request from A. Ribon and ATLAS, mark every while loop in code with special comment string authenticating that it terminates. G4BigBanger.cc G4CascadeFinalStateAlgorithm.cc G4CascadeInterface.cc G4ElementaryParticleCollider.cc G4EquilibriumEvaporator.cc G4FissionStore.cc G4Fissioner.cc G4GDecay3.cc G4IntraNucleiCascader.cc G4InuclCollider.cc G4InuclNuclei.cc G4InuclParamAngDst.cc G4NonEquilibriumEvaporator.cc G4NucleiModel.cc 23 March 2015 M. Kelsey (hadr-casc-V10-01-04) ---------------------------------------------- - G4CascadeInterface.cc: Call static Initialize() function in constructor, for sequential builds or master thread. Requires global-V10-01-08. 23 April 2015 A. Ribon (hadr-casc-V10-01-03) --------------------------------------------- - G4PreCompoundDeexcitation: delete precompound products (i.e. G4ReactionProduct objects) before cleaning and deleting their vector container. 23 March 2015 M. Kelsey ------------------------ - G4KaonSampler, G4HyperonSampler: NEW Copies of G4KaonHypSampler, which will eventually diverge with different energy binning, in order to extend kaon and hyperon final state tables to ~30 GeV. 23 February 2015 M. Kelsey (hadr-casc-V10-01-02) ------------------------------------------------- - G4InuclCollider: Speed up new photonuclearOkay() filter by checking final state nucleus vs. target directly, instead of looping over secondaries. Filter is still disabled behind G4CASCADE_CHECK_PHOTONUCLEAR envvar. 2 February 2015 M. Kelsey (hadr-casc-V10-01-01) ------------------------------------------------ - G4InuclCollider: Add special end-of-cascade test to require low-energy photo-nuclear and lepto-nuclear events to produce at least one non-gamma secondary. Currently hidden behind G4CASCADE_CHECK_PHOTONUCLEAR envvar. Will address bug #1680 to increase neutron yield around the giant dipole resonance, without model changes. 11 December 2014 M. Kelsey (hadr-casc-V10-01-00) ------------------------------------------------- - G4CascadeParameters, G4CascadeParamMessenger: Make G4CASCADE_PIN_ABSORPTION a double, specifying a probability for absorption. Requirement is less-than, not less-than-or-equal, so 0. suppresses aborption in all cases. - G4ElementaryParticleCollider.cc: Use PIN_ABSORPTION value as probability. Fix boosting of pion-nucleon absorption; recoil nucleus should not be involved in boost. 11 December 2014 M. Kelsey --------------------------- - G4CollisionOutput: Move "hard tuning" from setOnShell() to separate function. Add code in setOnShell() to do "hard tuning" of quasi-elastic, recomputing momentum for single particle and nuclear recoil directly. 11 December 2014 M. Kelsey --------------------------- - G4IntraNucleiCascader: Add function to identify non-interacting particles (e.g., neutrinos); in generateCascade(), move such particles directly to output list, rather than transporting them through the nucleus. This deals with the "trapped neutrino" case (below) more efficiently. 1 December 2014 M. Kelsey (hadr-casc-V10-00-20) ------------------------------------------------ - G4CascadParticle.cc: For stopped particles (zero path length), if at core of nucleus switch "movingIn" flag to false to particle will be forced to escape. Protects against very rare infinite loop in mu- capture (nu_mu produced with tiny momentum, gets stuck in nucleus zone 0). 1 December 2014 M. Kelsey (hadr-casc-V10-00-19) ------------------------------------------------ - G4ElementaryParticleCollider.cc: In muon absorption, check return from G4GDecay3 for null vector; report no-collision status and return. - G4GDecay3.cc: Fix typo in error report to use correct class name. 21 November 2014 M. Kelsey (hadr-casc-V10-00-18) ------------------------------------------------- Per A. Dotti, introduce G4AutoDelete for all singleton classes to avoid end-of-job memory leaks: G4CascadeChannelTables.cc,.hh (also make dtor public) G4CascadeParameters.cc G4MultiBodyMomentumDist.cc G4TwoBodyAngularDist.cc 21 November 2014 M. Kelsey (hadr-casc-V10-00-17) ------------------------------------------------- - G4PreCompoundDeexcitation.cc: Per V.I., fix memory leak on exit by passing excitation handler through to PreCompound. 19 November 2014 M. Kelsey (hadr-casc-V10-00-16) ------------------------------------------------- - G4CascadeInterface.cc: Fix parentheses in retryInelasticNucleus() expression for conditional-compilation flag (does not affect defaults). 18 November 2014 M. Kelsey (hadr-casc-V10-00-15) ------------------------------------------------- - G4CascadeInterface.cc: Fix possible infinite-loop condition where (nTries >= maxTries) and momentum balance fails, by regrouping conditions in retryInelasticNucleus(). 11 November 2014 M. Kelsey (hadr-casc-V10-00-14) ------------------------------------------------- - G4CascadeParameters.cc: Revert default changes in V10-00-12 tag: turn off phase-space, trailing-effect, and PreCompound. - G4InuclCollider.cc: Replace G4Fragment::GetA() with GetA_asInt(). - G4ElementaryParticleCollider.cc: Improve optional pion-nucleon absorption. NOTE: This is DISABLED by default; used for studies of pion stopping. - G4NucleiModel.cc: Initialize local p1r variable in declaration. 30 October 2014 M. Kelsey (hadr-casc-V10-00-13) ------------------------------------------------ - G4CascadeParameters, G4CascadeParamMessenger: Add flag to enable absorbing pion on a single nucleon. See G4EPCollider below for details. - G4ElementaryParticleCollider: Add support for absorbing a pion with a single nucleon (via a charge exchange interaction, e.g. pi- p -> n), with momentum conservation handled by recoiling against the nucleus. This is intended to improve the match to data for pi- capture. - G4NucleiModel.cc: In boundaryTransition(), switch sign of "dv" so that particle sees a barrier (next_zone potential > current potential) as positive. In generateParticleFate(), pass (A,Z) to EPCollider for possible nuclear-recoil calculations. - G4CascadeCheckBalance.cc: Per V.Ivantchenko, use G4Fragment::GetZ_asInt(), GetZ_asInt(). Should have been done long ago. 1 October 2014 M. Kelsey (hadr-casc-V10-00-12) ----------------------------------------------- - G4CascadeCheckBalance: Change ctor arg from "const char*" to "const G4String&" to avoid memory deallocation problems. - G4CascadeColliderBase: Change ctor arg from "const char*" to "const G4String&" to avoid memory deallocation problems. - G4CascadeInterface.cc: Call both usePreCompoundDeexcitation() and useCascadeDeexcitation() in ctor, with if-else. - G4CascadeParameters.cc: Make PreCompound, phase space, trailing effect, and light-ion clustering active by default. User must set envvars to "0" to disable. - G4InuclCollider.cc: Make PreCompound the default in ctor. - G4VCascadeCollider: Change ctor arg from "const char*" to "const G4String&" to avoid memory deallocation problems. - G4VCascadeDeexcitation.hh: Change ctor arg from "const char*" to "const G4String&" to avoid memory deallocation problems. 27 June 2014 M. Kelsey (hadr-casc-V10-00-11) --------------------------------------------- - G4CascadeFinalStateAlgorithm.cc: Address bug #1558, using ".c_str()" in diagnostic outputs, to avoid IBM XL compiler error. 23 May 2014 M. Kelsey (hadr-casc-V10-00-10) -------------------------------------------- - G4InuclNuclei.cc: Avoid FPE in setExcitationEnergy() for zero Ekin. This must be backported to 9.6 and 10.0. 9 May 2014 M. Kelsey (hadr-casc-V10-00-09) ------------------------------------------- - G4PreCompoundDeexcitation.cc: Fix mistake in copying example code; created a local copy instead of filling the data member. 9 May 2014 M. Kelsey (hadr-casc-V10-00-08) ------------------------------------------- - 4PreCompoundDeexcitation.cc: Per V.Ivanchenko, attempt to use shared instance of PreCompound by fetching from hadronic registry. Only if that fails should a local instance be created. 9 April 2014 M. Kelsey (hadr-casc-V10-00-07) --------------------------------------------- - G4IntraNucleiCascader.cc: Use const G4PD*. - G4InuclEvaporation.cc: Remove temporary const_cast (see 10 Mar). 12 March 2014 M. Kelsey (hadr-casc-V10-00-06) ---------------------------------------------- - G4CascadeParameters: Copy Gabriele's version of the singleton here, from the 9.6-patch-03 branch. 10 March 2014 M. Kelsey (hadr-casc-V10-00-05) ---------------------------------------------- - G4CollisionOutput.cc: Use const G4PD* for G4HadronicProduct secondaries. - G4InuclParticle: Apply "const G4PD*" everywhere for consistency with hadr-util updates. - G4InuclElementaryParticle: Apply "const G4PD*" everywhere for consistency with hadr-util updates. - G4InculEvaporation.cc: TEMPORARY: Use const_cast to access ctor of G4Fragment, until new hadr-util code is public. 10 March 2014 M. Kelsey (hadr-casc-V10-00-04) ---------------------------------------------- - G4IntraNucleiCascader.cc: Fix bug #1584, memory leak in secondaries. 10 March 2014 M. Kelsey (hadr-casc-V10-00-03) ---------------------------------------------- - G4CascadeParameters.cc: Restore original 10.0 version, because January mods caused unexpected side effects in build, which aren't being fixed. 29 January 2014 G.Folger not tagged ------------------------------------- - Removed cascade/utils from cascade/sources.cmake 16 January 2014 M.Kelsey (hadr-casc-V10-00-02) ----------------------------------------------- - G4CascadeInterface: Move static member into const data, initialize in ctor. This avoids calling G4CascadeParameters::Instance() before main(). - G4CascadeCoalescence: Move static members into const data, initialize in ctor. This avoids calling G4CascadeParameters::Instance() before main(). - G4NucleiModel: Move static members which use envvars into const data, initialize in ctors (with copy-and-paste code blocks). This avoids calling G4CascadeParameters::Instance() before main(). 7 January 2014 Dennis Wright (hadr-casc-V10-00-01) --------------------------------------------------- - added new pi-nucleon 2-body angular distributions: G4PipP2PipPAngDst, G4PimP2PimPAngDst, G4Pi0P2Pi0PAngDst and G4PimP2Pi0NAngDst. Below 2.6 GeV, distributions taken from SAID phase shift calculations with Coulomb phase removed. Above 2.6 GeV, taken from data. - also modified: G4TwoBodyAngularDist, sources.cmake 6 January 2014 M.Kelsey (hadr-casc-V10-00-00) ---------------------------------------------- - G4CascadeParameters.cc: Improve singleton initialization by moving static instance to pointer in file scope (anon namespace), check for null pointer in Instance() call. Drop use of messenger (temporarily) since it's not thread safe. This change needs to be backported to 9.6 and 10.0. 2 October 2013 V.Ivanchenko (hadr-casc-V09-06-52) ---------------------------------------------------- - G4NonEquilibriumEvaporator.hh - added forward declaration of G4Pow, because after the revision of G4Pow cascade is not compiling anymore 1 October 2013 Michael Kelsey (hadr-casc-V09-06-51) ---------------------------------------------------- - G4NucleiModel: Make gammaQDinterp a regular data member, to avoid data race condition with shared (const but mutable) object. - G4EquilibriumEvaporator: Make QFinterp a regular data member, to avoid data race condition with shared (const but mutable) object. 25 September 2013 Michael Kelsey (hadr-casc-V09-06-50) ------------------------------------------------------- - G4NucleiModel: Remove G4Pow introduced below; replace usage with simple "*= 2" inside loop. 24 September 2013 Michael Kelsey (hadr-casc-V09-06-49) ------------------------------------------------------- Replace usage of std::log, std::exp, and std::pow with GEANT4 internal functions with faster polynomial implementations. G4BigBanger.cc G4CascadeFinalStateAlgorithm.cc G4EquilibriumEvaporator.cc G4InuclParamMomDst.cc G4InuclSpecialFunctions.cc G4NonEquilibriumEvaporator.cc G4NonEquilibriumEvaporator.hh G4NucleiModel.cc G4NucleiModel.hh G4NumIntTwoBodyAngDst.icc G4ParamExpTwoBodyAngDst.icc 29 August 2013 Michael Kelsey (hadr-casc-V09-06-48) ---------------------------------------------------- Address Coverity #52158 and 52161. - G4InuclSpecialFunctions.hh: Add copy action declarations to paraMaker. 8 August 2013 Michael Kelsey (hadr-casc-V09-06-47) --------------------------------------------------- More thread-safety fixes: - G4InuclSpecialFunctions.hh: Replace paraMaker[Truncated] functions with class object, in order to use thread-locally within evaporators. - paraMaker.cc: Move function code into new class member functions. - G4*EquilibriumEvaporator: Add data member for new "paraMaker" object. Per A. Dotti, move local statics to file scope to avoid thread collisions: - G4CascadeDeexciteBase.cc: Move zero vector. - G4InuclParticle.cc: Move "G4DynamicParticle empty". - G4NucleiModel.cc: Move static G4InuclElementaryParticle constructions to data members. 4 August 2013 Michael Kelsey (hadr-casc-V09-06-46) --------------------------------------------------- - G4CascadeInterface.cc: Fix bug #1513, replacing "Z=1" with "Z==1" in boolean ternary operation. 18 July 2013 Michael Kelsey (hadr-casc-V09-06-45) -------------------------------------------------- - G4CascadeDeexciteBase.cc: Address Coverity #51934, unitialized data members. - Added use of "Id" and "Name" keywords to many new files which were missing them. 11 July 2013 Michael Kelsey ---------------------------- - G4CascadeFinalStateAlgorithm: Replace name "difr_const" with "oneOverE". 5 July 2013 Michael Kelsey (hadr-casc-V09-06-44) ------------------------------------------------- - G4InuclParticleNames.hh: Provide particle identification functions, equivalent to those in G4InuclElementaryParticle, for direct use of type codes. - G4InuclElementaryParticle.hh: Replace identification functions with calls through to new G4InuclParticleNames functions. 3 July 2013 Michael Kelsey (hadr-casc-V09-06-43) ------------------------------------------------- - G4CascadeFinalStateAlgorithm: Add Kopylov N-body phase space generation, with function code copied from G4HadPhaseSpaceKopylov. Use with runtime envvar flag (G4CASCADE_USE_PHASESPACE) in place of multi-parameter 3-body and 4-body generators. Two-body distributions are not changed. - G4CascadeParameters, G4CascadeParamMessenger: Add new envvar, G4CASCADE_USE_PHASESPACE, and associated functions, to switch between multiparameter and Kopylov N-body generators. 2 July 2013 Michael Kelsey --------------------------- - G4NucleiModel.cc: Minor tweaks: generateInteractionLength() now returns "large" (1000.) instead of input path length when calculations fail; this eliminates the effect of "spath < path" vs. "spath <= path" comparisons. For dibaryon absorption, use sum of invMFPs, not average. Small improvements to some diagnostic messages. 28 June 2013 Michael Kelsey (hadr-casc-V09-06-42) -------------------------------------------------- PROBLEM: Code committed below did not include last round of changes to support multiple G4Fragments from G4Fissioner. Those were lost accidentally during directory manipulation on my local disk. - G4CascadeDeexciteBase: Add makeFragment() without momentum for at-rest nuclei. - G4Fissioner: Remove local G4InuclNuclei vector; create fission fragments as G4Fragments directly into output buffer. - G4CollisionOutput: Replace single recoil fragment with list; apply associated changes throughout support functions. - G4EquilibriumEvaporator.cc: Use G4Fragments output from G4Fissioner. - G4CascadeDeexcitation.cc: Add printing of intermediate outputs from each de-excitation stage. 28 June 2013 Michael Kelsey (hadr-casc-V09-06-41) -------------------------------------------------- Reorganize de-excitation modules to use G4Fragment throughout process. Only final ground-state nucleus will be instantiated as a G4InuclNuclei object. This should substantially reduce the load on G4IonTable in MT operations. - G4CascadeCheckBalance: Replace interface for "G4Fissioner" with version which takes G4Fragments for target and output. - G4CascadeColliderBase: Move explosion() functions and G4Fragment-related valiateOutput() functions to new G4CascadeDeexciteBase. - G4CascadeDeexciteBase: NEW concrete subclass of G4VCascadeDeexcitation. Takes over "operational" support from G4CascadeColliderBase, including explosion() functions, local copy of G4CascadeCheckBalance, and conservation checking functions. Provides utilities to extract common data from input G4Fragment for all modules, and to construct a G4Fragment. - G4CascadeDeexcitation: Inherit from G4CascadeDeexciteBase. - G4PreCompoundDeexcitation: Inherit from G4CascadeDeexciteBase. - G4VCascadeDeexcitation: Inherit directly from G4VCascadeCollider. - G4ExitonConfiguration: Add interface to copy from G4Fragment. - G4EvaporationInuclCollider, G4NonEquilibriumEvaporator, G4BigBanger, G4Fissioner, G4EquilibriumEvaporator: Move all to inherit from G4CascadeDeexciteBase, replace collide() with deExcite(), use G4Fragment in place of G4InuclNuclei everywhere except final ground-state output. - sources.cmake: Add G4CascadeDeexciteBase.hh and .cc. 28 June 2013 Michael Kelsey (hadr-casc-V09-06-40) -------------------------------------------------- Improve encapsulation of pion and muon absorption through dibaryons. - G4NucleiModel: Add optional argument to useQuasiDeuteron() (fixed spelling) to take dibaryon code, validate charge-exchange interactions. - G4ElementaryParticleCollider: Add function to split dibaryon into component particle types; use G4NM::useQuasiDeuteron() for sanity checks instead of nested if-blocks. 28 June 2013 Michael Kelsey (hadr-casc-V09-06-39) -------------------------------------------------- Address Coverity 37230 and 37385. - G4CascadeInterface.hh: Add unimplemented declarations for copy operations. 27 June 2013 Michael Kelsey (hadr-casc-V09-06-38) -------------------------------------------------- - G4NucleiModel.cc: Minor tweak: change "spath==0." test to "path==0.", to check actual path length (equivalent to zero-momentum), rather than generated random value. - G4InuclParticleNames: Add functions to convert enum values to strings, for diagnostic messages. New .cc file required for implementation. - G4CascadeData.icc: For diagnostics, use new enum-to-string function, add explicit space between xsec values, and print only 10 values per line. - G4CascadeInterpolator.icc: For diagnostics, change output to setw(6), and print only 10 values per line. - sources.cmake: Add G4InuclParticleNames.cc. 21 June 2013 Michael Kelsey (hadr-casc-V09-06-37) -------------------------------------------------- - G4VCascadeDeexcitation: Disable collide() interface, with implementation which throws exception when called. Subclasses will use deExcite() interface, with a const-reference, directly (creating a G4InuclNuclei only if necessary). - G4CascadeDeexcitation: Remove collide() interface. Move code into deExcite(), and create temporary G4InucleNuclei (with reusable buffer) as needed. Add verbosity setting function. - G4PreCompoundDeexcitation: Remove collide() interface; code uses G4Fragment directly via deExcite(). - G4CascadeCheckBalance: Add interface to take G4Fragment initial state. - G4CascadeColliderBase: Change explosion() to take const-ref G4Fragment. Use new CheckBalance(G4Fragment) interface in validateOutput(). - G4EquilibriumEvaporator.hh: Change explosion() call-through to take const-ref G4Fragment. - G4InuclCollider.cc: Use G4Fragment interface to de-excitation modules and validateOutput(). 21 June 2013 Michael Kelsey (hadr-casc-V09-06-36) -------------------------------------------------- - G4CascadeParameters: Add new flag to perform internal conservation checks, replacing compile-time G4CASCADE_CHECK_ECONS preprocessor directive. - G4CascadeParamMessenger: Add macro commands for USE_3BODYMOM and CHECK_ECONS parameter flags. - G4CascadeColliderBase: Remove doConservationChecks flag. Use run-time flag (above) to conditionally instantiate CheckBalance, test pointer before use. - G4EquilibriumEvaporator: Remove turning-off of conservation checks after fission. Follows removal of flag from G4CascadeColliderBase. - GNUmakefile: Remove G4CASCADE_CHECK_ECONS preprocessor directive. Envvar will be mapped to run-time parameter (above). 20 June 2013 Michael Kelsey (hadr-casc-V09-06-35) -------------------------------------------------- Address numerous Coverity warnings which have build up since November 2011. No modifications to working code were required. G4BigBanger.hh G4InuclCollider.hh G4CascadeCheckBalance.hh G4InuclNuclei.cc G4CascadeColliderBase.hh G4InuclParticle.cc G4CascadeDeexcitation.hh G4MultiBodyMomentumDist.hh G4CascadeInterface.cc G4NonEquilibriumEvaporator.hh G4CascadeRecoilMaker.hh G4NumIntTwoBodyAngDst.hh,.icc G4ElementaryParticleCollider.hh G4ParamExpTwoBodyAngDst.icc G4EquilibriumEvaporator.hh G4PreCompoundDeexcitation.hh G4EvaporationInuclCollider.hh G4TwoBodyAngularDist.hh G4Fissioner.hh G4VCascadeCollider.hh G4GDecay3.cc G4VCascadeDeexcitation.hh G4IntraNucleiCascader.hh 19 June 2013 Michael Kelsey (hadr-casc-V09-06-34) -------------------------------------------------- - G4TwoBodyAngularDist.hh, G4MultiBodyMomentumDist.hh: Replace use of "theInstance" with calls to "GetInstance()" to ensure instantiation in MT environment. 19 June 2013 Michael Kelsey (hadr-casc-V09-06-33) -------------------------------------------------- - G4TwoBodyAngularDist, G4MultiBodyMomentumDist: Fix thread collisions in MT operation by changing singleton instances from "static const" to "static G4ThreadLocal" pointers. GetInstance() instantiates the pointer on first call (per thread). C.f. G4CascadeChannelTables. 19 June 2013 Alberto Ribon (hadr-casc-V09-06-32) -------------------------------------------------- - G4NucleiModel.cc: fixed rare cases of non-reproducibility in the method generateParticleFate. The members current_nucl1 and current_nucl2 were not properly initialized in the case that the interaction-partners list has one single element. 12 June 2013 Michael Kelsey (hadr-casc-V09-06-31) -------------------------------------------------- Bug fix for validation problems seen leading up to 10.0-beta release. - G4NucleiModel.cc: Undo change to test "spath<=path" (V09-06-25); this caused all tested nucleons to be accepted for interaction, incorrectly. Replace with explicit test on "spath==0." to address at-rest particles. - G4CascadeFinalStateAlgorithm: Split FillDirections() into separate functions for three- and many-body states, to restore old algorithm. Three body throws the _last_ particle's direction, then computes recoils, while many-body throws the first N-2 directions. 04 June 2013 Alberto Ribon (hadr-casc-V09-06-30) ------------------------------------------------- - G4InuclNuclei.cc: Fix access to ions via the IonTable class. 24 May 2013 Michael Kelsey (hadr-casc-V09-06-29) ------------------------------------------------- - G4NucleiModel: Continue trying to resolve FPE errors with inf and NaN. Improve bounds checking on zone value passed to inverseMFP; move "large" and "small" cutoffs to static const, set globally. 23 May 2013 Michael Kelsey (hadr-casc-V09-06-28) ------------------------------------------------- - G4NucleiModel.cc: Fix initialization of dummy_convertor after setting bullet and target momenta. For stopped particle outside nucleus, reset "zone" value to outermost zone (avoid out-of-bounds accesses). 22 May 2013 Michael Kelsey (hadr-casc-V09-06-27) ------------------------------------------------- - G4ElementaryParticleCollider.cc: Add protection if N-body generator fails after too many retries. On Windows, out-of-bounds error was (correctly) thrown. - G4ParticleLargerEkin.hh, G4ParticleLargerBeta.hh: Change ">=" to ">" in both cases, to avoid error in (extremely rare) case that both inputs are identical. With floats, this is a ~2^-64 probability, but a Windows test job managed to catch it. 21 May 2013 Michael Kelsey (hadr-casc-V09-06-26) ------------------------------------------------- - sources.cmake: Added G4PP2PPAngDst. 20 May 2013 Dennis Wright -------------------------- - added class G4PP2PPAngDst, which contains elastic pp and nn angular distributions generated from numerically integrated SAID cross sections and pp scattering data. Below 2.75 GeV SAID calculations were used with Coulomb interactions turned off. Above 2.75 GeV pp scattering data is used. Files modified: G4TwoBodyAngularDist.hh, .cc 11 May 2013 Michael Kelsey (hadr-casc-V09-06-25) ------------------------------------------------- - G4NucleiModel.cc: Protections for at-rest particles (muon capture): In choosePointAlongTraj() set phat=(0,0,1); in generateInteractionPartners() apply zero-path exit only for finite momentum. Move choosePointAlongTraj up to initializeCascad(), rather than waiting for propagation. Change tests on "spath < path" to <= so that at-rest particles still interact (in these cases, spath and path will both be zero). Hide "zone 0 transition" message behind verbosity. - G4ElementaryParticleCollider.cc: Skip neutrinos silently in ::collide(). 10 May 2013 Michael Kelsey --------------------------- - G4NucleiModel.hh: Protect getPotential() from leptons, by checking for ityp<0. 9 May 2013 Michael Kelsey (hadr-casc-V09-06-24) ------------------------------------------------ - G4CascadeFinalStateAlgorithm.cc: Fix bugs where two-body and three-body momentum vectors were not properly rotated before return; caused energy and momentum violations in hydrogen target cases. Improvided diagnostic messages to match output from old G4EPCollider version. 8 May 2013 Dennis Wright/Michael Kelsey ---------------------------------------- Introduce muon-capture handling, with new particle types and three-body muon-dibaryon interactions. Modified files: G4InuclElementaryParticle.hh,.cc G4InuclParticleNames.hh G4CascadeChannelTables.cc G4CascadeInterface.cc G4ElementaryParticleCollider.hh,.cc G4NucleiModel.hh,.cc sources.cmake New files: G4CascadeMuMinusPChannel.hh,.cc G4GDecay3.hh,.cc 1 May 2013 Michael Kelsey (hadr-casc-V09-06-23) ------------------------------------------------ - G4CascadeInterface: Add static function Initialize() to create shared objects in master thread, to avoid cross-thread collisions. Currently the final-state lookup tables and quasideuteron particles are created. - G4Dineutron, G4Diproton, G4UnboundPN: Remove "G4ThreadLocal" from static pointer, to make it shared across threads. Modify initialization to get G4ParticleTable "readiness" flag, and restore saved value. 22 April 2013 Michael Kelsey (hadr-casc-V09-06-22) --------------------------------------------------- - G4CascadeChannelTables: Convert to thread-local singletons, to avoid thread collisions inside "fillSigmaBuffer()" calls within tables (since that mutable vector is shared across all threads). 22 April 2013 Michael Kelsey (hadr-casc-V09-06-21) --------------------------------------------------- NOTE: Requires hadr-mod-util-V09-06-04. - G4ElementaryParticleCollider: Replace all kinematics generation, except for pion-dibaryon absorption, with G4CascadeFinalStateGenerator. Simplify ::collide(), eliminating nested if-blocks, moving replicated code outside of if-blocks, adding returns on failure tests. 22 April 2013 Michael Kelsey (hadr-casc-V09-06-20) --------------------------------------------------- NOTE: Requires hadr-mod-util-V09-06-04. New interface for momentum and angular distribution generators, subclasses of (new) models/util/G4VHadDecayAlgorithm. These are intended to be "temporary" implementations, reproducing G4ElementaryParticleCollider behaviour. G4EPCollider will be migrated to use GENBOD or another true phase-space generator. - G4CascadeFinalStateGenerator: Subclass of G4HadDecayGenerator, which provides a "Configure" function to take Bertini-specific inputs (bullet, target, and list of particle types) to set up distributions. - G4CascadeFinalStateAlgorithm: Subclass of G4VHadDecayAlgorithm, used by G4CascadeFSGenerator to reproduce G4EPCollider kinematics. Momentum moduli are generated separately from angular distributions, then merged together and tested for consistency. - G4VThreeBodyAngDst.hh: Subclass of G4VTwoBodyAngDst, which provides interface to generate polar angle for hN -> XYZ or NN -> XYZ states, currently handled internally to G4EPCollider. - G4InuclParamAngDst: Subclass of G4VThreeBodyAngDst which implements the parametrized "abn[2][4][4]" arrays in G4EPCollider. This is exactly analogous to the recently introduced G4InuclParamMomDst. - G4HadNucl3BodyAngDst: Instance of G4InuclParamAngDst for (h,Y,g)N -> XYZ interactions. - G4NuclNucl3BodyAngDst: Instance of G4InuclParamAngDst for N N -> XYZ interactions. - G4TwoBodyAngularDist: Add interface to access three-body distributions. - sources.cmake: Add all new source files to lists. 22 April 2013 Michael Kelsey (hadr-casc-V09-06-19) --------------------------------------------------- Minor code cleanup before deploying some major revisions. - G4CascadeCoalescence: Replace _TLS_ local variable with mutable data member. - G4NucleiModel.cc: Reduce number of scoping levels by adding exit returns at strategic points. - G4VTwoBodyAngDst.hh: Remove unnecessary #include . 21 March 2013 Dennis Wright (hadr-casc-V09-06-18) --------------------------------------------------- - sources.cmake: Add new G4NP2NPAngDst class. 21 March 2013 Dennis Wright (hadr-casc-V09-06-17) --------------------------------------------------- - created class G4NP2NPAngDst to handle np and pn elastic scattering by sampling histograms taken directly from data - added above class to G4TwoBodyAngularDist, replacing old np, pn sampling 14 March 2013 Michael Kelsey (hadr-casc-V09-06-16) --------------------------------------------------- - G4CascadeCoalescence.cc, G4InuclSpecialFunctions.cc, G4NucleiModel.cc: Undo some of the changes made in hadr-casc-V09-06-01 (29 Jan 2013) per recent guidance from Andrea. Specifically, TLS pointers cannot be initialized with "new", but must be initialized null, then instantiated with an if-block. - G4InuclNuclei.cc: Replace TLS local variable in makeNuclearFragment() (static function) with a file-scoped non-const static map. Incorporate thread-locking (mutex) around all accesses to the shared map, since STL is inherently not thread safe. 11 March 2013 Michael Kelsey (hadr-casc-V09-06-15) --------------------------------------------------- - G4HadNucl4BodyMomDst.cc: Fix comment describing function as ">= 4-body". - G4MultiBodyMomentumDist.cc: Use envvar (G4CASCADE_USE_3BODYMOM) to enable separate 3-body momentum generators. - G4CascadeParameters: Add G4CASCADE_USE_3BODYMOM envvar. - G4InuclSpecialFunctions: Add new "randomInuclPowers()" function to compute power expansion of random value for momentum and cos(theta) distributions. - G4ElementaryParticleCollider.cc: Move INUCL-style calculation (powers of Ekin and random S) to G4InuclSpecialFunctions. - G4InuclParamMomDst.cc: Move INUCL-style calculation (powers of Ekin and random S) to G4InuclSpecialFunctions. 8 March 2013 Michael Kelsey ---------------------------- - G4VMultiBodyMomDst.hh, G4VTwoBodyAngDst.hh: Add GetName() function to return name string, for use with diagnostic utilities. Add SVN use of 'Id' keyword to all new source files. 7 March 2013 Michael Kelsey (hadr-casc-V09-06-14) -------------------------------------------------- Introduce multi-body final state momentum distribution classes and factory, modelled on the two-body angular distribution system. Leaf classes implement functionality of G4EPCollider::getMomModuleFor2toMany(), split by initial state and multiplicity. - G4VMultiBodyMomDst: Abstract base class for all multi-body final state momentum generators. Subclasses may cover one or several categories. - G4InuclParamMomDst: Intermediate base class implementing parametrization in G4EPCollider, derived from original INUCL Fortran code, with power expansions in Ekin and random fraction. Subclasses provide coeffient arrays for specific initial state and multiplicity, with subarrays for different final-state particles. - G4NuclNucl3BodyDst: Leaf class for pp,pn,nn 3-body final state from INUCL. - G4NuclNucl4BodyDst: Leaf class for pp,pn,nn >= 4-body final state from INUCL. - G4HadNucl3BodyDst: Leaf class for Xp,Xn 3-body final state from INUCL. - G4HadNucl4BodyDst: Leaf class for Xp,Xn >= 4-body final state from INUCL. - G4MultiBodyMomentumDist: Factory class to select individual generators above from initial-state code and multiplicity. - G4ElementaryParticleCollider.cc: Replace getMomModuleFor2toMany() with call to G4MultiBodyMomentumDist factory and constituent generators. 7 March 2013 Michael Kelsey ---------------------------- - G4ElementaryParticleCollider: Reverse order of indices for rmn[][][] array used for multibody momentum selection, and abn[][][] used for three-body angular distribution. This allows direct grouping by initial state, so functionality can be refactored later. 6 March 2013 Michael Kelsey ---------------------------- - G4CascadeChannelTables: Implement global Print() function which dumps all tables registered in map. - G4ElementaryParticleCollider: Remove printFinalStateTables() function, do work directly in G4CascadeChannelTables. Replace numeric values of particle-type checks with enums. Add detailed comments explaining array indices for momentum arrays. 6 March 2013 Michael Kelsey (hadr-casc-V09-06-13) -------------------------------------------------- Remove obsolete directories evaporation/ and utils/. - GNUmakefile, CMakeLists.txt: Remove references to obsolete subdirectories and their corresponding libraries. NOTE: This tag requires changes at the top level of processes/CMakeLists.txt and must not be used independently of those changes. 6 March 2013 Michael Kelsey (hadr-casc-V09-06-12) -------------------------------------------------- - G4CascadeHistory.cc: Cast calls to "getCharge()" to G4int to avoid compiler warnings. 5 March 2013 Michael Kelsey (hadr-casc-V09-06-10, -11) -------------------------------------------------- - G4CascadeHistory: Support "reabsorbed" cascade particles (excitons and trapped decays) using "-1 daughters" as a flag. Add heading with legend to output. - G4IntraNucleiCascader.cc: Add exciton and trapped-decay info to history. Move history reporting outside of "itry" loops (only shows final version). 4 March 2013 Michael Kelsey (hadr-casc-V09-06-09) -------------------------------------------------- - G4CascadeHistory: NEW container class to collect all secondaries, along with generated daughters, and report cascade structure hierarchically. - G4CascadParticle: Add new index data member for use with G4CascadeHistory. - G4CascadeParameters: Add new G4CASCADE_SHOW_HISTORY envvar to activate use of G4CascadeHistory. - G4CascadeParamMessenger: Add macro command for G4CASCADE_SHOW_HISTORY. - G4IntraNucleiCascader: Add option G4CascadeHistory data member, created and used only if G4CASCADE_SHOW_HISTORY envvar is set. - sources.cmake: Add G4CascadeHistory.hh and .cc. 3 March 2013 Michael Kelsey (hadr-casc-V09-06-08) -------------------------------------------------- Re-tag with subdirectories "utils" and "evaporation" (excluded by mistake). 2 March 2013 Michael Kelsey (hadr-casc-V09-06-07) -------------------------------------------------- - G4NucleiModel: Encapsulate forcing decision in forceFirst() function, apply to photons only, not hadrons. 27 February 2013 Michael Kelsey (hadr-casc-V09-06-06) ------------------------------------------------------ - G4NucleiModel: Modify choosePointAlongTraj() to use mean free path to bias point selection non-uniformly in each zone. Make member functions protected (instead of private) to allow external testing. - G4BarashenkovTwoBodyAngDst: RENAME to G4ParamExpTwoBodyAngDst; previous name was a misattribution. - sources.cmake: Follow renaming above. - G4GammaNuclAngDst, G4HadNElastic1AngDst, G4HadNElastic2AngDst, G4NuclNuclAngDst, G4PiNInelasticAngDst: Follow renaming of base class. 25 February 2013 Michael Kelsey -------------------------------- - G4RegionModel, G4BertiniElasticCollision, G4BertiniHydrogenCollision: REMOVE obsolete, unused code. - sources.cmake: Remove obsolete code above. 23 February 2013 Michael Kelsey (hadr-casc-V09-06-05) ------------------------------------------------------ - G4NucleiModel.cc: Spurious character got into .cc file during save/commit. 23 February 2013 Michael Kelsey (hadr-casc-V09-06-04) ------------------------------------------------------ - G4NucleiModel.cc: Fix zone-density weighting in choosePointAlongTraj. Now done correctly, if not with optimal code efficiency: more points will be chosen in core of nucleus than in outer shell. Work needed to reduce vector arithmetic, move std:vector<>'s out to class data members, etc. 21 February 2013 Michael Kelsey -------------------------------- - G4VTwoBodyAngDst: Bug fix: Data member "theName" should be a local copy of the ctor input string, not a reference to it. When literals are passed in, a _temporary_ object is created for the ctor which then goes out of scope, leaving an undefined reference behind. This causes segfaults when running with verbosity. - G4CascadParticle: Move ctor body to .cc file, use global envvar to set initial verbosity (no other code changes verbosity of cparticles). - G4NucleiModel: Add function to select random point along particle's trajectory, use with incident photons at initial step to nucleus. Selection is weighted by average nucleon density in each zone. Code uses mutliple local G4ThreeVector and std::vector buffers, which need to be made class members or static-local to reduce memory churn. 21 February 2013 Michael Kelsey (hadr-casc-V09-06-03) ------------------------------------------------------ - G4TwoBodyAngularDist: NEW Factory singleton containing all of the angular-distribution generators created below. Code from G4EPCollider to choose generator based on initial and final states moved here, accessed through static function. - G4ElementaryParticleCollider: Angular distribution generators moved to new singleton factory. Access to factory is through a static function, so it can be shared across MT threads. 20 February 2013 Michael Kelsey -------------------------------- - G4VTwoBodyAngDst: Add Id string. - G4NumIntTwoBodyAngDst: Convert to templated, using array dimensions as template arguments (c.f. G4CascadeSampler). Pass references to C-style arrays as ctor arguments, use to initialize C-style array const references. Add local C-style array as reuable buffer for interpolation. Add Id string. Move .cc file to .icc, referenced from .hh, as required for template instantiation. - G4GamP2NPipAngDst, G4GamP2PPi0AngDst: Follow change of base to templated form, passing arrays as base ctor args, move array initializations to namespace with "static const". Add Id string. Extract parametrized two-body angular distribution code from G4ElementaryParticleCollider to new subclasses of G4VTwoBodyAngDst. These subclasses will likely be replaced over time with numerically-integrated CDFs as above. - G4BarashenkovTwoBodyAngDst: Templated base class for double-exponential two-body parametrizations, extracted from G4EPCollider. - G4GammaNuclAngDst, G4NuclNuclAngDst, G4PiNInelasticAngDst, G4HadNElastic1AngDst, G4HadNElastic2AngDst: Sublcasses of G4BarashenkovTwoBodyAngDst, with parameter arrays and energy bins extracted G4EPCollider. - sources.cmake: Follow filename changes to G4NumIntTwoBodyAngDst.cc -> .icc, add new parametrized angular distribution classes. 31 January 2013 Dennis Wright (hadr-casc-V09-06-02) ---------------------------------------------------- Add detailed two-body final state angular distributions for (gamma,p) and (gamma,n) reactions, using tables of numerical integrals to sample cos(theta) - created base classes G4VTwoBodyAngDst and G4NumIntTwoBodyAngDst, and concrete classes G4GamP2NPipAngDst and G4GamP2PPi0AngDst to hold the tables - added these channels to G4ElementaryParticleCollider:: - added new cross section data to G4CascadeT1GamNChannel 29 January 2013 Michael Kelsey (hadr-casc-V09-06-01) ----------------------------------------------------- In consultation with Andrea Dotti, revert or modify many of the automatic code changes (below) for improved MT performance. - G4Cascade*Channel.hh,cc: Restore "static const" declarations of all final state arrays, eliminate use of "initialize()" function. In all of the .hh files, declare "static const data_t data;" to allow sharing across threads. - G4CascadeFunctions.hh,cc: Restore DATA::data as simple object, not pointer. - G4NucleiModel.hh,cc: Move function-static arrays and interpolator for gamma-quasideuteron cross sections to be class members with file-scope initialization. Eliminates need to use TLS pointers. - G4Fissioner.hh,cc: Make two-element std::vector for nuclear fragments class data member; use G4InuclNuclei::fill() to change contents. - G4InuclSpecialFunctions.cc, G4CascadeCoalescence.cc: Collapse TLS pointer initializtion to eliminate unncessary if-blocks. - G4EquilibriumEvaporator.hh,cc, G4ElementaryParticleCollider.hh,cc: Move function-static interpolators and arrays to be class members with file-scope initialization. Eliminates need to use TLS pointers. 25 January 2013 Andrea Dotti et al. ------------------------------------ Apply automatic conversion to all code for Geant4-MT thread-safe operation. 20 December 2012 Michael Kelsey -------------------------------- - G4ElementaryParticleCollider.cc: Add Omega tables to printout function, remove line referring to gamma-N as "preliminary." 06 December 2012 Michael Kelsey (hadr-casc-V09-06-00) ------------------------------------------------------ - G4IntraNucleiCascader.cc: For rescattering, set generation number of new secondaries to '1' instead of '0' (so they aren't identified as projectiles). - G4NucleiModel.cc: In generateParticleFate() set generation number of interaction daughters to one more than the parent secondary. Eliminate complex isProjectile() code in favor of checking for generation==0. 20 October 2012 Michael Kelsey (hadr-casc-V09-05-26) ----------------------------------------------------- - G4CascadePPChannel.cc, G4CascadeNNChannel.cc, G4CascadeNPChannel.cc: For continuous low-energy functions, add cutoff in K.E. to match zero-energy cross-section value, and avoid divide-by-zero divergence. 19 October 2012 Dennis Wright ------------------------------ - for classes G4CascadePPChannel, G4CascadeNNChannel, G4CascadeNPChannel use Stepanov's functions to fill in total and elastic cross section arrays at all energy bins from 10 to 320 MeV inclusive. Below 10 MeV use Stepanov's continuous functions to generate cross section. 15 October 2012 Dennis Wright (hadr-casc-V09-05-25) ---------------------------------------------------- - replace SAID cross sections with in-medium cross sections of Li & Machleidt for incident energies below 420 MeV. Classes changed: G4CascadePPChannel, G4CascadeNNChannel, G4CascadeNPChannel. - method findCrossSection removed from G4CascadePPChannel and G4CascadeNPChannel since no Coulomb is included in L&M cross sections 9 October 2012 Michael Kelsey (hadr-casc-V09-05-24) --------------------------------------------------- - G4ExitonConfiguration: Add empty() function to test exciton state, reduce printout to single line. - G4InuclNuclei.cc: Report non-empty exciton configuration in print(). - G4NonEquilibriumEvaporator.cc: Add additional diagnostic messages. - G4EquilibriumEvaporator.cc: Add additional diagnostic messages. - G4CascadeCollisionOutput: Add calculations of net strangeness. - G4CascadeCheckBalance: Add reporting of strangeness conservation (but do not require validation). 1 October 2012 Michael Kelsey (hadr-casc-V09-05-23) --------------------------------------------------- - sources.cmake: Add G4CascadeOmegaMinus*Channel.hh and .cc. 1 October 2012 Dennis Wright, M. Kelsey (hadr-casc-V09-05-22) ------------------------------------------------------------- - G4CascadeChannelTables.cc: Add "om*pro" and "om*neu" to LoadTables. - create classes G4CascadeOmegaMinusPChannel and G4CascadeOmegaMinusNChannel containing partial cross sections for omega- p and omega- n reactions 25 September 2012 Gabriele Cosmo (hadr-casc-V09-05-21) ------------------------------------------------------ - Explicitly use inclusion of headers for system of units and physical constants, in plan to remove implicit inclusion from globals.hh. 18 September 2012 Michael Kelsey (hadr-casc-V09-05-20) ------------------------------------------------------ - G4CascadeParamMessenger.cc: Fix complier warning from ctor initializers. 13 September 2012 Michael Kelsey (hadr-casc-V09-05-19) ------------------------------------------------------ - G4CascadeParamMessenger: NEW class to define UI macro commands for setting the G4CascadeParameters (string) values, as an alternative to environment variables. - G4CascadeParameters: Add new G4CascadeParamMessenger (with friendship) to fill envvar-mapped parameters (const char*) from UI interface. - sources.cmake: Add G4CascadeParamMessenger.hh,cc, add dependences on G4intercoms (libraries and include dirs). - GNUmakefile: Add -I.../intercoms/include. 9 September 2012 Michael Kelsey (hadr-casc-V09-05-18) ----------------------------------------------------- - G4CascadePPChannel.hh, G4CascadeNPChannel.hh: Replace 'typedef' with subclass of templated base. Declare overridden findCrossSection() function. - G4CascadePPChannel.cc, G4CascadeNPChannel.cc: Implement overrrided findCrossSection() function to apply analytic (parametrized) function for very low energy projectiles, falling back to base interpolation otherwise. 7 September 2012 Michael Kelsey (hadr-casc-V09-05-17) ----------------------------------------------------- - sources.cmake: Forgot to change list of source files to match renaming. 4 September 2012 Michael Kelsey (hadr-casc-V09-05-16) ----------------------------------------------------- Per Dennis, rename all three nucleon-nucleon channel files to remove the isospin designation. Files now match corresponding .hh files: G4CascadeT1ppChannel.cc -> G4CascadePPChannel.cc G4CascadeT1nnChannel.cc -> G4CascadeNNChannel.cc G4CascadeT0npChannel.cc -> G4CascadeNPChannel.cc 4 September 2012 Michael Kelsey ------------------------------- - G4CascadeT0npChannel.cc: Fix misplaced semicolon in exclusive xsec list. 3 September 2012 Dennis Wright ------------------------------ - G4CascadeT1ppChannel.cc, G4CascadeT1nnChannel.cc, G4CascadeT0npChannel.cc: Use SAID calculations for total and elastic cross-sections up to 320 MeV. 31 August 2012 Michael Kelsey ----------------------------- - G4CascadeT1NNChannel.cc: REMOVE. Split into separate pp and nn files. - G4CascadeT1ppChannel.cc: NEW. Only proton-proton part of T1NNChannel. - G4CascadeT1nnChannel.cc: NEW. Only neutron-neutron part of T1NNChannel. - sources.cmake: Remove T1NNChannel, add T1ppChannel and T1nnChannel. 22 August 2012 Michael Kelsey (hadr-casc-V09-05-15) --------------------------------------------------- Consolidate all user-configurable environment variables into singleton container class, instead of having them local to the code which uses them. This will provide a way to query and report on values in a consistent way. - G4CascadeParameters: NEW singleton container class to hold and evaluate any user-configured environment variables. Default values for parameters are provided, with code moved from original locations (see below). Three new envvars are also defined: G4CASCADE_VERBOSE Pre-set verbosity in G4CascadeInterface constructor, passes down to all constituent modules. G4CASCADE_USE_PRECOMPOUND Select use of PreCompoundModel in G4CascadeInterface constructor. G4NUCMODEL_USE_BEST Pre-set all defaults for nuclear model with physical units. - G4CascadeInterface.hh: Add new function for dumping configuration. - G4CascadeInterface.cc: Replace environment variable usage with calls to G4CascadeParameters. Add pre-setting of verbosity and PreCompoundModel. Implement configuration dump as call-through to G4CascadeParameters. - G4CascadeCoalescence.cc: Replace environment variable usage with calls to G4CascadeParameters. - G4IntraNucleiCascader.cc: Replace environment variable usage with calls to G4CascadeParameters. - G4NucleiModel.cc: Replace environment variable usage with calls to G4CascadeParameters. - sources.cmake: Add G4CascadeParameters.hh,.cc. ----- NOTE: Tag hadr-casc-V09-05-14 and changes to G4CascadeInterface.cc were lost due to SVN repository incident. ----- 3 July 2012 Michael Kelsey (hadr-casc-V09-05-13) ------------------------------------------------ - G4CascadeCoalescence.cc: Bug fix: list of clusters already tried was not cleared at start of new event, so entries from previous events prevented formation of valid clusters. Also improve diagnostic messages somewhat. 8 June 2012 Michael Kelsey (hadr-casc-V09-05-12) ------------------------------------------------ Address compiler warnings about variable-shadowing (local variable has same name as data member or global variable) which appear when "-Wshadow" is used. G4InuclSpecialFunctions.hh G4CascadeSampler.icc G4CascadeData.icc G4InuclElementaryParticle.hh G4InuclEvaporation.cc G4EquilibriumEvaporator.cc G4InuclElementaryParticle.cc G4NonEquilibriumEvaporator.cc G4NucleiModel.cc G4CascadeInterface.cc G4InuclSpecialFunctions.cc G4ElementaryParticleCollider.cc G4BigBanger.cc (evaporation) G4BENeutronChannel.cc (evaporation) G4BEChargedChannel.cc (evaporation) G4BertiniEvaporationChannel.cc 25 May 2012 Michael Kelsey (hadr-casc-V09-05-11) ------------------------------------------------ - G4Dineutron.cc, G4Diproton.cc, G4UnboundPN.cc: Add code to protect against warning messages from G4ParticleTable::Remove(), introduced with particles-V09-05-03. - G4CascadeCheckBalance.cc: Lower verbosity level for energy-conservation reports, change violation rules to allow relative OR absolute passing, consistent with new process-level checks. - G4CascadeInterface.cc: Check for small negative projectile energy and force to zero, to protect against occasional G4HadFinalState exceptions. 23 May 2012 Michael Kelsey (hadr-casc-V09-05-10) ------------------------------------------------ - G4CascadeInterface: Add local implementation of IsApplicable(), both the base class (track,nucleus) and one using G4ParticleDefinition. Returns true only if interaction tables are defined for projectile. 21 May 2012 Alberto Ribon (hadr-casc-V09-05-09) ----------------------------------------------- - G4IntraNucleiCascader.cc: Specify mass when decay trapped particle. This fixes reproducibility violations when hyperons are forced to decay inside the nucleus. 17 May 2012 Alberto Ribon (hadr-casc-V09-05-08) ----------------------------------------------- - G4Fissioner.cc: Removed static in local vectors AL1 and BET1 in the method G4Fissioner::collide, to ensure reproducibility. 4 April 2012 Michael Kelsey (hadr-casc-V09-05-07) -------------------------------------------------- - G4CascadeCoalescence.cc: Use std::ostream_iterator to report cluster indices, to avoid compiler warning. 21 March 2012 Michael Kelsey (hadr-casc-V09-05-06) --------------------------------------------------- - G4NucleiModel.cc: Add check in isProjectile() for single-zone nuclei, and ignore "movingInward" flag in that case. 20 March 2012 Michael Kelsey (hadr-casc-V09-05-05) --------------------------------------------------- - G4NucleiModel.cc: Fill zone_volumes buffer for single-zone case. 14 March 2012 Michael Kelsey ----------------------------- - test/: Tagged all existing, obsolete code as "OLD_Validation_Suite" for future recovery if desired. Remove all code and files from active use, to be replaced with our separate "ppi4GeV" utility program, suitably renamed. 9 March 2012 Michael Kelsey ---------------------------- - G4CascadeSigmaMinusPChannel.cc: Change zero-bin cross-sections for Lambda-n and Sigma0-n, based on data from M. Goossens et al. measurements of Sigma- capture (per J. Yarba). - G4NucleiModel.cc: Add scale factor, set via envvar, for gamma absorption. 8 March 2012 Michael Kelsey ---------------------------- - G4NucleiModel.cc: In absorptionCrossSection() add binned spectrum derived from Mikhail Kossov's gamma-D absorption data, for use with photons. - G4ElementaryParticleCollider.cc: Modify sanity checks on dibaryon targets to allow both photons and gamma to interact; gammas split the dibaryons the same way pi0's do. 7 March 2012 Michael Kelsey ---------------------------- - G4NucleiModel: In generateInteractionPartners() and absorptionCrossSection(), allow photons to be absorbed via dibaryon (quasideuteron) excitation. Simplify and encapsulate path-length computations in generateInteractionPartners(), with several new internal functions, and a buffer to store the zone-by-zone shell volumes. 5 March 2012 Michael Kelsey ---------------------------- - G4CascadParticle.hh: Add public accessor for cumulative path length. - G4NucleiModel.cc: In generateInteractionPartners(), check to see if CParticle is incident projectile (inbound from outside nucleus, not created in outer zone). If so, force interaction to be attempted rather than cutting on mean free path. - G4CascadeKminusPChannel.cc: Modify two-body cross-section values in zero-energy bin, to reflect stopping data from Julia Yarba. 25 January 2012 Michael Kelsey (hadr-casc-V09-05-04) ----------------------------------------------------- - G4CascadeInterface.cc: Check for no-interaction in retryInelasticProton, both in return value and in debugging report. 25 January 2012 Michael Kelsey (hadr-casc-V09-05-03) ----------------------------------------------------- - G4NucleiModel.hh: In getPotential() add test for ip==9 (photon) to return zero potential. Otherwise it will return the 7 MeV flat pion potential, which is not correct. 20 January 2012 Vladimir Ivantchenko (hadr-casc-V09-05-02) ----------------------------------------------------------- - G4PreCompoundDeexcitation.cc: Do not delete pre-compound model and excitation handler to avoid double deletion 6 January 2012 Dennis Wright (hadr-casc-V09-05-01) ---------------------------------------------------- - G4ElementaryParticleCollider.cc: add angular distributions for elastic and inelastic 2-body final states of gamma p and gamma n reactions. 19 December 2011 Michael Kelsey (hadr-casc-V09-05-00) ------------------------------------------------------ - G4ElementaryParticle.cc: Expand diagnostics in getMomModuleFor2toMany(), in generateSCMfinalState(), defer "particles.resize()" action until after final-state properties have been validated. In case no final state can be generated, this ensures that the failure propagates back up the calling chain, instead of simply looping forever. - G4NucleiModel.cc: If G4ElementaryParticle::collide() returns empty output, stop propagating. 7 November 2011 Michael Kelsey (hadr-casc-V09-04-41) ----------------------------------------------------- - G4NucleiModel.cc: Due to some validation discrepancies, revert structure parameters to old non-physical values. - G4ElementaryParticleCollider.cc: In sampleCMmomentumFor2to2(), hide message about unrecognized initial-state behind verbosity flag. 3 November 2011 Dennis Wright (hadr-casc-V09-04-40) ----------------------------------------------------- - G4CascadeInterface.hh, .cc: switch from Description() to ModelDescription() 27 October 2011 Gabriele Cosmo (hadr-casc-V09-04-39) ----------------------------------------------------- - Added workaround to use 'this' pointer for internal calls in G4CascadeFunctions.hh/.icc, to allow for compilation on Xcode on MacOX Lion. 18 October 2011 Michael Kelsey (hadr-casc-V09-04-38) ----------------------------------------------------- - G4CascadParticle.cc: In getPathToTheNextZone(), check for zero momentum (pp < 1e-9) and return zero path-length; this will support capture at rest. - G4NucleiModel.cc: Change kaon potential to be positive, not negative, so slow kaons will occasionally be captured. 7 October 2011 Dennis Wright, Michael Kelsey --------------------------------------------- - sources.cmake: Add new channel files below. - G4CascadeGamNChannel.hh, G4CascadeGamPChannel.hh, G4CascadeT1GamNChannel.cc: NEW final state tables for gamma-nucleon interactions, with final states up to 9-body, using the same energy binning as pion-nucleon. - G4CascadeChannelTables.cc: Add new gamma-nucleon interaction states to LoadTable() switch block. - G4ElementaryParticleCollider.cc: Add printing of gamma-nucleon tables. - G4EquilibriumEvaporator.cc: Replace hardwired particle codes with enums. - G4InuclParticleNames.hh: Change photon code to '9', to avoid initial state conflict between piMinus-n (= 5*2 = 10) and gamma-p (= 10*1 = 10). 4 October 2011 Michael Kelsey (hadr-casc-V09-04-37) ---------------------------------------------------- - G4IntraNucleiCascader.cc, G4ElementaryParticleCollider.cc, G4InuclCollider.cc: Prepare for gamma-N interactions by checking for existence of final-state tables, rather than for "isPhoton()". 28 September 2011 Michael Kelsey (hadr-casc-V09-04-36) ------------------------------------------------------- - evaporation/src/G4BertiniEvaporation.cc: Migrate to integer A&Z. This code is moribund; migration is to avoid compilation errors. 27 September 2011 Michael Kelsey (hadr-casc-V09-04-35) ------------------------------------------------------- - G4CascadeCoalescence.cc: BUG FIX for Windows: Replace strtof() with strtod(). 27 September 2011 Michael Kelsey (hadr-casc-V09-04-34) ------------------------------------------------------- - G4CascadeCoalescence.cc: BUG FIX for GCC>4.2: Add missing #include . 26 September 2011 Michael Kelsey (hadr-casc-V09-04-33) ------------------------------------------------------- - G4ElementaryParticleCollider.cc: Protect against non-physical arguments and FPE in two-body angular distributions. - G4IntraNucleiCascader.cc: Replace compiler flag with one-time envvar access in ctor to enable clustering. 23 September 2011 Michael Kelsey (hadr-casc-V09-04-32) ------------------------------------------------------- - sources.cmake: Add G4CascadeChannel.cc. - G4CascadeChannel: Add optional stream& argument to printTable(), and new stream operator<<, calling virtual printTable(). - G4CascadeChannelTables: Add optional stream& argument to printTable(). - G4CascadeData, G4CascadeFunctions, G4CascadeSampler, G4CascadeInterpolator: Add optional stream& argument to print() functions, and pass through to members. - G4ElementaryParticleCollider: Add optional stream& argument to printFinalStateTables(), pass through to printing tables. 22 September 2011 Michael Kelsey --------------------------------- - sources.cmake: Add G4ExitonConfiguration.cc, G4FissionConfiguration.cc - G4CascadeInterface.cc: Modify throwNonConservationFailure() to be ready to use G4ExceptionDescription, once G4HadronicException supports it. Replace most G4cout-specific print() functions with stream operators, in order to anticipate supporting G4ExceptionDescription streams. - G4CascadParticle: Add ostream& to print(), without trailing endl. Define operator<<, calling virtual print(). Affects two classes: G4IntraNucleiCascader.cc G4NucleiModel.cc - G4CollisionOutput: Add optional ostream& to printCollisionOutput(), with G4cout as the default. No clients affected. - G4ExitonConfiguration, G4FissionConfiguration: Replace print() with stream operator<<, defined in new .cc files. Affects G4FissionStore.cc. - G4InuclParticle, G4InuclNuclei, G4InuclElementaryParticle: Add ostream& to printParticle(), renamed as print(), without trailing endl. Define operator<< only in base class, calling virtual print(). Affects 12 classes: G4BigBanger.cc G4CascadParticle.cc G4CascadeCoalescence.cc G4CascadeInterface.cc G4CollisionOutput.cc G4ElementaryParticleCollider.cc G4EquilibriumEvaporator.cc G4EvaporationInuclCollider.cc G4Fissioner.cc G4IntraNucleiCascader.cc G4NonEquilibriumEvaporator.cc G4NucleiModel.cc 22 September 2011 Michael Kelsey --------------------------------- - G4CascadeCoalescence: Add list of clusters already attempted, check list at top of tryClusters() to reduce combinatorial explosion (factor of >10). 22 September 2011 Michael Kelsey (hadr-casc-V09-04-31) ------------------------------------------------------- - G4CascadeCoalescence.cc: Create light ions without excitation energy. This will violate energy conservation, but is necessary since the excess from momentum exceeds the binding energy. - G4IntraNucleiCascader.cc: Recompute recoil fragment after clustering, to account for E-violation (above). 20 September 2011 Michael Kelsey --------------------------------- - G4CascadeCoalescence.cc: Relative momenta computed in c.m. frame of nucleon pair, not in event frame. Add environment variables for cuts: DPMAX_2CLUSTER, DPMAX_3CLUSTER, DPMAX_4CLUSTER. Clean up interfaces to use cluster as argument instead of polymorphic lists. Improve combinatorics. 19 September 2011 Michael Kelsey --------------------------------- - G4CascadeCoalescence: NEW factory class to implement conversion of final-state nucleon "clusters" into light ions. Uses LAQGSM algorithm (Sec. 2.3, http://lib-www.lanl.gov/la-pubs/00818645.pdf). - G4IntraNucleiCascader: Add final-state clustering as OPTIONAL facility, controlled through compile-time flag G4CASCADE_DO_COALESCENCE. Clustering is done during cascade finalization. - G4InuclNuclei.cc: Allow A=0,Z=0 to produce null definition pointer. - G4InuclParticle: Add Coalescence to list of model IDs; move setDefinition to .cc file and allow passing null pointer. - GNUmakefile: Add G4CASCADE_DO_COALESCENCE flag. 16 September 2011 Michael Kelsey (hadr-casc-V09-04-30) ------------------------------------------------------- - G4CascadeChannelTables: Add load-on-demand via GetTable(). Move static implementations to .cc file (Windows compatibility issue). - G4CascadeFunctions.icc: Remove self-registration from ctor. - G4Cascade*Channel.cc: Remove all namespace self-instantiations; initialization is inconsistent across platforms. 31 August 2011 Michael Kelsey ------------------------------ - G4CascadeInterface.cc: Undo copying of G4V3DNucleus; creates incorrect PDG codes for proton and neutron. 31 August 2011 Michael Kelsey (hadr-casc-V09-04-29) ---------------------------------------------------- - G4NucleiModel.cc: Make "best guess" parameters defaults for structure model, leave "old" versions in place with C-style comments on each line. - G4CascadParticle.cc: Add protection against negative radicand. 29 August 2011 Michael Kelsey ------------------------------ - G4InuclNuclei: Add constructor to copy G4V3DNucleus. - G4CascadeInterface.cc: Use new G4InuclNuclei ctor in ::Propagate() - G4IntraNucleiCascader.cc: Fill excitation state with holes determined from input G4V3DNucleus "hits". 25 August 2011 Michael Kelsey (hadr-casc-V09-04-28) ---------------------------------------------------- - G4EquilibriumEvaporator.cc: Remove unprotected diagnostic statement. 25 August 2011 Michael Kelsey (hadr-casc-V09-04-27) ---------------------------------------------------- - G4NucleiModel: Remove obsolete local cross-section arrays; use standard tables, which are numerically equivalent. Add comment block with "best guess" values for converting model to physical units (these will hopefully become the defaults). 9 August 2011 Michael Kelsey (hadr-casc-V09-04-26) --------------------------------------------------- - G4CascadParticle: Add ::fill() function with ctor args to allow loading vectors by "assignment," rather than with temporaries. - G4BigBanger.cc, G4ElementaryParticleCollider.cc: Reduce memory churn by using resize() and array assignment instead of push_back() with temporaries where appropriate. - G4NucleiModel: Move return buffer from generateParticleFate to non-const input argument, eliminating unnecessary copy. - G4IntraNucleiCascader.cc: Move "new_cascad_particles" to be argument to generateParticleFate(), for filling instead of copying. - G4EquilibriumEvaporator.cc: Improve building final-state particles to reduce creation of temporaries. 9 August 2011 Michael Kelsey ----------------------------- - G4CascadeInterface.cc: Clean up Description() implementation somewhat. - G4EquilibriumEvaporator: Move foutput to data member, use reference access. 9 August 2011 Dennis Wright ---------------------------- - G4CascadeInterface: Add Description() function for autogenerated HTML. 3 August 2011 Michael Kelsey (hadr-casc-V09-04-25) --------------------------------------------------- - G4PreCompoundDeexcitation.cc: Add diagnostic output when processing results. - G4CollisionOutput.cc: Add diagnostics for copying G4ReactionProducts, and fix bug with momentum units (must convert to Bertini GeV). 2 August 2011 Michael Kelsey ----------------------------- - G4CascadeChannel.hh: Add ctor and virtual dtor (with no action) to fix Coverity report #29838. 2 August 2011 Michael Kelsey (hadr-casc-V09-04-24) --------------------------------------------------- - G4CascadeInterface.cc: Use new G4DecayKineticTracks in Propagate to handle short-lived inputs. Requires hadr-mod-util-V09-04-01. 1 August 2011 Michael Kelsey (hadr-casc-V09-04-23) --------------------------------------------------- - G4InuclElementaryParticle: Add fill() functions to reuse existing object, reducing memory churn due to creating temporaries. - G4CascadeInterface.cc: Update local buffers to use G4InuclEP::fill(). - G4CollisionOutput.cc: Use resize() and set/fill to eliminate temporary copies in addOutgoingParticles(G4ReactionProductVector*). - G4IntraNucleiCascader: Add local buffers for rescattering target, use fill to reduce memory churn, and eliminate memory leak! 31 July 2011 Michael Kelsey ---------------------------- - G4CascadeInterface: Add local buffers for bullet and target possibilities, assign pointers to buffer addresses as appropriate. Reduces per-event memory churn for each particle. - G4EquilibriumEvaporator: Move "parms" buffer (pair,vector<>>) to data member, pre-allocate known size, to reduce per-event memory churn. - G4FissionConfiguration.hh: Make ::print() const. - G4FissionStore: Move "probs" vector to data member, reducing memory churn. - G4Fissioner: Use C-style arrays as arguments to potentialMinimization, since size is fixed. Reduces memory churn. 29 July 2011 Michael Kelsey ---------------------------- - G4CascadParticle.hh: Add functions to explicitly set all data members, including initial path and generation, to support changes below. Re-order member functions in set/get pairs. - G4IntraNucleiCascader: Replace convertKineticToCascade() with processSecondary(), which writes directly to G4CascadParticle "buffer" in processing list. Eliminates new/delete cycling and memory churn. 29 July 2011 Michael Kelsey (hadr-casc-V09-04-22) -------------------------------------------------- - G4CascadeChannelTables.cc: Use FindTable() to determine if table has been created already or not. Add "clear()" to ctor to initialize empty map (GCC 4.1.2 segfaults on first insertion otherwise). Add diagnostic messages hidden with G4CASCADE_DEBUG_SAMPLER compiler flag. 28 July 2011 Michael Kelsey ---------------------------- Fix, or flag as "Ignore," all outstanding Coverity reports. 20228 G4CascadeFunctions.icc: Fix bug, compare (mult > maxMult) and set to max on true. Otherwise, mult can overflow array dimension. 20230 G4CascadeInterpolator.icc: Remove "recursive" #include of .hh file. 20231 G4CascadeSampler.icc: Remove "recursive" #include of .hh file. 22951 G4EquilibriumEvaporator.cc: Check for icase<0 after assignment loop, to avoid invalid array subscript. 22954 G4CascadeData.icc: Remove "recursive" #include of .hh file. 22955 G4CascadeFunctions.icc: Remove "recursive" #include of .hh file. 23843 G4EvaporationInuclCollider: Add dtor to delete EquilibriumEvaporator. 28776 G4InuclEvaporation.cc: Remove return following throw. 27 July 2011 Michael Kelsey (hadr-casc-V09-04-21) -------------------------------------------------- - G4CascadeInterface.cc: Simplify NoInteraction() per V.Ivantchenko. No particles are returned, but "SetEnergyChange" is used to communicate to tracking that real track should be stopped and deposit all its energy. - G4NucleiModel: Compared local kaon/hyperon cross-section tables with sum-of-exclusive tables from G4Cascade*Channel.cc; all bin values below 10 GeV are identical. The channel tables have a somewhat more realistic treatment of high energy projectiles (a logarithmic decrease rather than flat). Remove the local arrays, using channel table lookup for everything. 25 July 2011 Michael Kelsey (hadr-casc-V09-04-20) -------------------------------------------------- Make cross-section tables self-registering at job initialization. No switch blocks needed any longer: new initial-state tables become usable without any code modification. - G4CascadeData: Add data member storing initial state argument. - G4CascadeFunctions: Move constructor implementation to .icc file, where registration to lookup table is done. - G4CascadeChannelTables: Change from namespace back to class, with std::map as data member. Add public function to register new table in map, and return null pointer if lookup fails (i.e., no create-on-demand). - G4Cascade*Channel.cc: Add local instance of each cross-section table, used solely to trigger auto-registration in base class ctor. The corresponding .hh files no longer appear anywhere else in Bertini code. 25 July 2011 Michael Kelsey (hadr-casc-V09-04-19) -------------------------------------------------- - sources.cmake: Update HEADERS and SOURCES list with new code added 20 July 2011. This must be done manually. 22 July 2011 Michael Kelsey (hadr-casc-V09-04-18) -------------------------------------------------- - G4CascadeInterface.cc: In makeDynamicParticle(), allow invalid type codes in order to process, e.g., resonances from Propagate() input. - G4InuclNuclei.hh: Fix bug in ctor (mom,A,Z,Eexc,model) -- failed to set excitation energy; causes energy non-conservation in de-excitation code. 22 July 2011 Michael Kelsey (hadr-casc-V09-04-17) -------------------------------------------------- - G4IntraNucleiCascader: Deprecate local "output_particles" list in favor of using "output" (G4CollisionOutput) buffer directly. This will support handling light ions and unrecognized particles for rescattering. - G4CascadeCheckBalance: Replace std::vector argument with G4CollisionOutput in version of ::collide() for G4IntraNucleiCascader. - G4CascadeRecoilMaker: Replace std::vector argument with G4CollisionOutput in version of ::collide() for G4IntraNucleiCascader. 21 July 2011 Michael Kelsey ---------------------------- - G4IntraNucleiCascader: For pre-cascade rescattering, put resonances, or any particle which cannot be propagated by Bertini, directly onto output, without decaying. Requires G4InuclEP constructor which takes G4PartDef directly, avoiding possibly undefined type codes. NOTE: The ::rescatter() process doesn't generate a proper recoil nucleus because outgoing_particles is used, rather than output. - G4InuclParticle: Modify all constructors to take the model code as an optional argument, so that subclasses don't have to set it manually. - G4InuclNuclei: Modify constructors to pass model code to base (as above), instead of calling SetModel() explicitly. - G4InuclElementaryParticle: Modify constructors to pass model code to base (as above), instead of calling SetModel() explicitly. Add new constructor which takes G4ParticleDefinition* argument instead of type code. Allows client code to create objects without a valid (enumerated) type, e.g. for passing pre-cascade resonances through to output. 21 July 2011 Michael Kelsey (hadr-casc-V09-04-16) -------------------------------------------------- - G4ElementaryParticleCollider.cc: Hide "mult" argument to getMomModule2toMany(), as it is no longer used (V. Uzhinsky's fix). Fixes compilation warning from hadr-casc-V09-04-15. - G4CascadeInterface.cc: In NoInteraction(), only projectile should be copied to final state, not target nucleus. - G4CascadeT1NNChannel.cc: Fix final 9-body final-state list for both nn and pp: existing entries violate charge. 20 July 2011 Michael Kelsey ---------------------------- - G4CascadeInterface: Drop local copy of G4HadFinalState (theResult), available directly from base class (theParticleChange). Add NoInteraction() to copy input particle directly to return in case of problems. Modify createBullet() to leave pointer null if not a valid particle; in ApplyYourself(), check for both null bullets and bullet types without interaction tables and return NoInteraction() in those cases. Fix bug in reporting charge violation. - G4CascadeChannel.hh: Repurpose this as non-template base class for all cross-section tables, specifying public interface (pure virtual). Used with multiple inheritance for G4CascadeFunctions<> to allow instantiation and pointer return (below). - G4CascadeChannel.cc: DELETE code from previous version of name. - G4CascadeFunctions: Add inheritance from G4CascadeChannel, replace static functions with virtual; must create instance from now on. - G4CascadeChannelTables: NEW namespace with function to return cross-section tables by pointer based on two-body initial state. - G4ElementaryParticleCollider.cc: Remove all switch-blocks, replace with calls to G4CascadeChannelTables; in PrintFinalStateTables, use convenience funciton directly in G4CascadeChannelTables. - G4NucleiModel.cc: Remove use of G4CascadeXXXChannel in switch block; under "default:", make calls to G4CascadeTables. 19 July 2011 Michael Kelsey (hadr-casc-V09-04-15) -------------------------------------------------- - G4CascadeInterface.cc: If accept/reject loop fails (maximum retries), return initial state untouched rather than last generated cascade. This avoids exposing an elastic scattering event under any circumstances. 19 July 2011 Michael Kelsey (hadr-casc-V09-04-14) -------------------------------------------------- - G4ChannelData: Add new ctor argument "initialState", to specify the product of the hadrons (e.g., for KminusP, the value is "kmi*pro"). This argument is used to find the elastic channel cross-sections to be subtracted from tot[] to get inelastic[] (other two-body channels, including the quasi-elastic charge exchange, are treated as inelastic). - G4Cascade*Channel.cc: Add new ctor argument for all cross-section tables. 18 July 2011 Michael Kelsey (hadr-casc-V09-03-91) ***BRANCH TAG*** -------------------------------------------------- - G4LorentzConvertor.cc: Copy HEAD version, which includes protections for ::rotate() applied to at-rest system (i.e., z-axis ~ (0,0,0)), and simplifies calculations to avoid similar errors elsewhere. NOTE: Changes below not included in branch tag. 18 July 2011 Michael Kelsey (hadr-casc-V09-04-13) -------------------------------------------------- - G4ChannelData: Add new "inelastic" array, filled in initialize() to the sum of 3-body and higher multiplicity cross-sections. - G4CascadeInterface.cc: Change an error message to not show "ApplyYourself" - G4ElementaryParticleCollider.cc: Per V. Uzhinskiy, remove special "mult==3" case from getMomModule2toMany(). Replace magic numbers in switch blocks with particle-name enums. 1 July 2011 Michael Kelsey --------------------------- - G4NucleiModel.hh/.cc, G4InuclPartice.hh, G4InuclElementaryParticle.hh: Copy minor comment changes applied to 9.4-ref-06 and 9.5-beta to HEAD. 17 June 2011 Michael Kelsey ---------------------------- - G4NucleiModel.cc: Change "R_nucleon" (trailing effect nucleon radius) to be adjustable parameter using G4NUCMODEL_RAD_TRAILING. Also apply radius scaling factor to numerical value. This code should NOT be proposed for builds until tested with thick-target models. 2 June 2011 Michael Kelsey (hadr-casc-V09-04-12) ------------------------------------------------- - G4LorentzConvertor: Drop most "intermediate" kinematic parameters used in rotate, in favor of somewhat more direct vector operations. Change test for "degenerated" to use "small" rather than "small*small". 25 May 2011 Michael Kelsey (hadr-casc-V09-04-11) ------------------------------------------------- - G4LorentzConvertor.cc: Add diagnostic messages in both ::rotate(). - G4NucleiModel.cc: Revert length scales to pre-V09-04-04 ("2.82" factor); see 18 March 2011 notes below. Should undo visible-energy and angular distribution effects seen in GEANT4 9.4-ref-04 testing. 19 May 2011 Michael Kelsey (hadr-casc-V09-04-10) ------------------------------------------------- - G4CollisionOutput.cc: Drop unused "p2" from selectPairToTune(). - G4NucleiModel.cc: Use computed value "rho" instead of recomputing twice. - G4CascadeInterface: Add support for capturing random-engine state to user file (specified with environment variable G4CASCADE_RANDOM_FILE) at each ApplyYourself() or Propagate() invocation. This will allow (hopefully!) easier reproduction of crashes in complex applications. 3 May 2011 Michael Kelsey -------------------------- - G4LorentzConvertor.cc: Add a couple of diagnostic messages to ::rotate(). 27 April 2011 Michael Kelsey (hadr-casc-V09-04-09) -------------------------------------------------- - G4InuclNuclei.cc: Remove preface about "non-standard PDGencoding," since particles-V09-04-01 has removed the corresponding warning messages. 15 April 2011 Michael Kelsey ---------------------------- - G4ParticleLargerEkin.hh, G4ParticleLargerBeta.hh: Add interfaces to do sorting of G4CascadParticles, needed for initial setup of ::Propagate(). - G4IntraNucleiCascader.cc: In ::copySecondaries(), sort list by kinetic energy. 13 April 2011 Michael Kelsey (hadr-casc-V09-04-08, hadr-casc-V09-03-88) ----------------------------------------------------------------------- - G4ElementaryParticleCollider.cc: For 2-body scattering, adjust test to term1 to avoid divide-by-zero errors (see 19 Jan 2011, tag -00). 13 April 2011 Michael Kelsey ---------------------------- - G4NucleiModel: Encapsulate trailing effect test in ::passTrailing(). 13 April 2011 Michael Kelsey (hadr-casc-V09-04-07) -------------------------------------------------- Deploying operational rescattering. This code requires modifications to G4VIntraNuclearTransportModel.hh and G4TheoFSGenerator.hh which are included in the geant4-09-04-ref-03 build. NOTE: In testing, some input cascades lead to nuclei with excessive excitation energy; this code should not be used in production. - G4CascadeInterface.cc: Add construction of bullet from cached copy of original projectile, saved by G4TheoFSGenerator. - G4InuclCollider.cc: Adjust diagnostic messages in ::rescatter() to match those in ::collide(). - G4IntraNucleiCascader.cc: Reduce number of retries from 1000 to 100. 28 March 2011 Michael Kelsey ---------------------------- - G4CascadeCheckBalance.hh: Add non-limit ctor and explicit limit setting. - G4CascadeInterface.cc: Set internal E/p limits to match Gunter's below (currently 5% and 10 MeV, want to make them tighter). 28 March 2011 Gunter Folger ---------------------------- - Set up for E/p checking by G4HadronicProcess in ctor of G4CascadeInterface. 24 March 2011 Michael Kelsey ---------------------------- - G4NucleiModel: Add optional argument to reset() with list of collision points, for copying cascade state when rescattering. - G4IntraNucleiCascader: Add list of hit-nucleon locations, filled by copyWoundedNucleus() for initialization of G4NucleiModel (above). 24 March 2011 Dennis Wright (hadr-casc-V09-04-06) ------------------------------------------------- - G4NucleiModel - add trailing effect 23 March 2011 Michael Kelsey ---------------------------- - G4CollisionOutput.hh: Add non-const accessors for lists. 21 March 2011 Michael Kelsey (hadr-casc-V09-04-03-01, -V09-04-05) -------------------------------------------------- Fixes for compiler warnings (and one error on Windows). The -03-01 tag backs out change to G4NucleiModel.cc in -04 tag, which will be restored to the HEAD. - G4InuclElementaryParticle: Make getStrangeness() and getStrangeness(type) both return G4int. - G4CascadeColliderBase.hh: Hide names of arguments to rescatter(). - G4NucleiModel.cc: Replace strtof() with strtod(). 18 March 2011 Michael Kelsey (hadr-casc-V09-04-04) -------------------------------------------------- - G4NucleiModel.cc: Change internal length scale to use femtometers directly (instead of apparent 2.8197 fm), and internal cross-section scale to use fm^2 (instead of millibarns). 17 March 2011 Michael Kelsey (hadr-casc-V09-04-03) -------------------------------------------------- Tag all revisions for deployment in next reference build. 1) Implement most of rescattering capability (G4CascadeInterface::Propagate and dependent code). Substantial factoring of ::collide() functions to allow functional reuse by ::rescatter(). Not operational without code to capture and use primary projectile. 2) Simplify cascade test-and-repeat loops; do four-momentum balancing with nuclear fragment, now used exclusively as G4Fragment, at end of cascade, not after de-excitation. 16 March 2011 Michael Kelsey ---------------------------- More improvements to rescattering code. Not yet functional without code to construct "bullet" from original projectile. - G4CascadeInterface: Simplify target-construction functions by moving active code to one with simple (A,Z) arguments. - G4CollisionOutput.cc: Add reset() at start of trivialize(). - G4IntraNucleiCascader: Add functions to convert single G4KineticTrack to G4CascadParticle (move out of preloadCascade()), and to decay G4KT hadronic resonances in situ. Improve diagnostic messages. - G4InuclElementaryParticle.cc: Move K0S/K0L "mixing" to K0/K0bar into type(). 11 March 2011 Michael Kelsey ---------------------------- - G4CollisionOutput: Include G4Fragment as part of final state for setOnShell() (including computing totalOutputMomentum). Note that the four-momentum in G4Fragment is in GEANT4 units (MeV), not Bertini units! - G4IntraNucleiCascader.cc: Reorganize post-cascade handling to do setOnShell() check for all cases, allowing G4Fragment to be adjusted. This should leave final state fully balanced before InuclCollider sees it. - G4InuclCollider.cc: Simplify de-excitation handling (fragment test is in deexcite() function). Suppress momentum-conservation check on de-excitation unless G4CASCADE_CHECK_ECONS compiler flag was used, as all functions have been confirmed to conserve four-momentum. 8 March 2011 Michael Kelsey --------------------------- - G4InuclCollider: Move post-cascade (deexcitation) block out of collide() to separate function. Pass G4Fragment instead of G4InuclNuclei. - G4IntraNucleiCascader.cc: Don't put recoil "nucleus" onto output list. - G4CollisionOutput.cc, G4InuclNuclei.cc: Follow additions to G4Fragment interface to store and access charged and neutral holes separately. 4 March 2011 Michael Kelsey (kelsey-20110304) --------------------------------------------- Continue development of rescattering infrastructure. All executable functionality should be in place, BUT no "bullet" is available yet, so code (especially conservation checks) will crash with segmentation fault. - G4CascadeColliderBase.hh: Add ::rescatter() interface with null body, to enforce common interface in all (both) affected colliders. - G4CascadeInterface: Move conversion functions used by ::Propagate() from here down to G4IntraNucleiCascader. Just pass input arguments through. Convert cascade results to G4ReactionProducts for ::Propagate() output. - G4IntraNucleiCascader: Move conversion functions used by ::Propagate() to here from G4CascadeInterface. Replace ::rescatter() interface to take arguments from ::Propagate and do conversion locally. Remove unnecesary "itry" arguments from cascade functions. - G4InuclCollider: Follow ::rescatter() interface change above, passing arguments from G4CascadeInterface through to G4IntraNucleiCascader. - G4NucleiModel.hh: Add optional arguments to reset() to force values of neutron and proton counts (default behaviour is unchanged). 3 March 2011 Michael Kelsey --------------------------- - G4CascadeInterface: Change name of "bulletList" to "inputFragments". - G4CascadeRecoilMaker.cc: Add diagnostic message to ::wholeEvent(). - G4IntraNucleiCascader: Add function to copy input cascade particles to local list for propagation, move clearing functions to separate action. - G4NucleiModel.hh: Add accessors for radius (including zone radii), mapping radial position to zone index, and converting radius units. - G4NucleiModel.cc: Add a couple of FIXME messages about binding_energies[]. 3 March 2011 Michael Kelsey (kelsey-20110303) --------------------------------------------- - G4CascadeDeexcitation.cc: Don't do conservation check at end of process. - G4CascadeInterface.cc: Rearrange messages for G4CASCADE_DEBUG_INTERFACE. - G4CascadeOutput.cc: Fix diagnostic message reporting initial momentum. - G4IntraNucleiCascader.cc: Move model->printModel() call to G4NucleiModel. - G4NucleiModel.cc: Put printModel() call at end of generateModel(). - G4CascadeRecoilMaker.cc: Add diagnostics to goodNucleus(). - G4CollisionOutput.cc: Move ini_mom calculation to fix diagnostic output. 28 February 2011 Michael Kelsey (kelsey-20110228) ------------------------------------------------- Continue infrastructure development for rescattering. - G4CascadeInterface: New ::copyPreviousCascade() to transfer rescattering into to Bertini particles, along with data buffers for the converted list. New ::makeReactionProduct() for conversion of internal to external hadronic-tracks. New ::makeCascadParticle() for conversion of pre-cascade G4KineticTrack to Bertini type. - G4InuclCollider.cc: Set verbosity when de-excitation module is changed. 25 February 2011 Michael Kelsey (kelsey-20110225b) -------------------------------------------------- Develop infrastructure to support using Bertini as a "rescattering" model for the output of the FTF simulation. - G4CascadeColliderBase: Add ::setVerboseLevel() function which passes verbosity through to G4CheckBalance data member. - G4CascadeInterface: Add ::createTarget(G4V3DNucleus*). Move setVerboseLevel implementation to .cc file, and propagate verbosity to member objects. Move conservation checking to separate function. Begin to populate Propagate function. - G4IntraNucleiCascader: Split ::collide() into separate utility functions to handle different stages of cascade process (initialization, cascade development, final state). Add new ::rescatter() function which takes a list of pre-existing secondaries as input to "seed" the processing. Add setVerboseLevel implementation, and propagate verbosity to member objects. - G4InuclCollider: Add ::rescatter() function which calls through to G4IntraNucleiCascader(), and setVerboseLevel implementation. NOTE: G4InuclCollider above was accidentally commited to kelsey-20110225a 25 February 2011 Michael Kelsey (kelsey-20110225a) -------------------------------------------------- Infrastructure improvements to support modifying output particle lists - G4CollisionOutput: Add ::removeXXX() interfaces to take particles off of lists. - G4InuclParticle.hh, G4InuclNuclei.hh, G4ExitonConfiguration.hh: Add equality and inequality operators. NOTE: Sorting (operator<) NOT SUPPORTED. 23 February 2011 Michael Kelsey (hadr-casc-V09-04-02) ----------------------------------------------------- - G4NucleiModel: Bring changes for parametrizing "rescaled" nuclear model parameters from orphaned CVS tag kelsey-20101020b into HEAD of SVN. The scale factors are set specifically to reproduce the existing production code, but will be adjusted to give the model "natural units" (fm lengths and millibarn cross sections). Use environment variables to set scale factors: G4NUCMODEL_RAD_SCALE (3.3836/1.2 ~ 2.8197) Internal length scale (conversion from femtometers). All of the lengths in G4NucleiModel are larger by this factor than one would expected from the literature. To do all of the model parameter calculations in fm, this scale factor should be set to 1. G4NUCMODEL_RAD_2PAR (not defined) The current model computes the nuclear radius as a one-parameter function of mass: 1.2*cbrt(A) (multiplied by the length scale above). A better parametrization is 1.16*cbrt(A) - 1.3456/cbrt(A); setting this environment variable chooses that parametrization. G4NUCMODEL_RAD_SMALL (8.0/G4NUCMODEL_RAD_SCALE) For nuclei below A=5 (alphas, tritons, etc.), instead of the mass-dependent scaling, a constant radius is used. In the current model, a value of 8.0 (corresponding to 2.83 fm) is set; published data suggests 1.992 fm instead. G4NUCMODEL_RAD_ALPHA (0.70) This scale factor multiplies G4NUCMODEL_RAD_SMALL to account for the anomalous binding energy of alphas compared to nearby light nuclei. Published data suggests a value of 0.84 instead. G4NUCMODEL_FERMI_SCALE (0.685) This factor converts from the length scale (cbrt(volume)) to the Fermi momentum for each nuclear species. Published data suggests a value of 0.61 GeV/fm instead. G4NUCMODEL_XSEC_SCALE (1.) Scaling factors for total cross-sections. The current code has all the cross sections in millbarns. If we are able to migrate to a length scale in femtometers, this factor will change to 10. to convert mb to fm^2. 14 February 2011 Michael Kelsey (hadr-casc-V09-04-01) ----------------------------------------------------- - G4InuclParticle: Continue migration to enumerator Model. Replace previous enum word "default" with "DefaultModel", add "PreCompound". - G4InuclNuclei, G4InuclElementaryParticle: Follow G4InuclParticle::Model migration, and drop use of "generation." - G4CascadeRecoilMaker: Replace integer model with G4InuclParticle::Model. - G4BigBanger.cc, G4CollisionOutput.cc, G4ElementaryParticleCollider.cc, G4EqulibriumEvaporator.cc, G4Fissioner.cc, G4NonEquilibriumEvaporator.cc, G4PreCompoundDeexcitation.cc: Replace integer model code with G4InuclParticle::Model enumerator values. 31 January 2011 Michael Kelsey ------------------------------ - G4IntraNucleiCascader.cc: Move "momentum_in" calculation inside verbosity. - G4InuclElementaryParticle.hh: Change getStrangeness() to return int, use as pseudo-bool in hyperon() implementation. Drop local "generation" data member, not used anywhere. - G4InuclParticle.hh: Change "modelId" to enumerated type. Will require numerous changes throughout code. 19 January 2011 Michael Kelsey (hadr-casc-V09-04-00) ---------------------------------------------------- - G4ElementaryParticleCollider.cc: In sampleCMcosFor2to2(), protect against divide-by-zero by testing for term1==0. before other computations. Addresses ~10^-7 FPE rate reported by A. Dotti. 16 January 2011 Michael Kelsey ------------------------------ - G4InuclParticleNames.hh: Add enumerator values for some light ions as "elementary particles," and names for antibaryons and light antinuclei. These will support upcoming developments, but are not currently used. - G4InuclElementaryParticle.hh: Add antinucleon() and antibaryon() flags (the latter will cover the light-ion cases). - G4InuclElementaryParticle.cc: Add switch cases for new particles above. 24 November 2010 Michael Kelsey (hadr-casc-V09-03-87) ----------------------------------------------------- - G4InuclCollider.cc: Delete local "zbullet" before exiting. Fixes memory leak reported for 9.4 cand-01. 19 November 2010 Michael Kelsey (hadr-casc-V09-03-86) ----------------------------------------------------- - G4NucleiModel.cc: Put messages related to negative-path-length and zero-interaction-partners behind verbosity flag. 29 October 2010 Michael Kelsey (hadr-casc-V09-03-85) ---------------------------------------------------- - G4NucleiModel: Bring tagged version kelsey-20101020 (refactoring) to HEAD and tag for 9.4 release. This is the last substantive modification to be included; validated by direct |diff|ing of output vs. V09-03-84 code. 22 October 2010 Michael Kelsey (hadr-casc-V09-03-84) ---------------------------------------------------- - G4WatcherGun.cc: Change first numeric argument to G4NuclWatcher to int. NOTE: Only this change is include in tag. 20 October 2010 Michael Kelsey (kelsey-20101020b) ------------------------------------------------- - G4NucleiModel: Add scaling factors ("units") for nuclear radii and cross-sections, in order to adapt calculations to the literature. 20 October 2010 Michael Kelsey (kelsey-20101020a) ------------------------------------------------- - G4NucleiModel: Re-activate changes in worthToPropagate() to use existing nuclear potential values for kaons and hyperons to decide on trapping. 20 October 2010 Michael Kelsey (kelsey-20101020) ------------------------------------------------ - G4NucleiModel: Clean up some bugs in refactoring generateModel(). Back out changes (28 Sep) in worthToPropagate() in order to compare refactored to production code. 20 October 2010 Michael Kelsey (hadr-casc-V09-03-83) ---------------------------------------------------- - G4CascadParticle.cc: Remove debugging output left in by accident. NOTE: Tag does not include reorganization of G4NucleiModel (5 Oct 2010) 19 October 2010 Michael Kelsey ------------------------------ G4FissionStore, G4FissionConfiguration: Undo migration to integer A and Z. 19 October 2010 Michael Kelsey ------------------------------ Clean up CoVerity software analysis reports (three are ignored from obsolete code): G4Analyser.cc G4CascadeCheckBalance.cc G4CascadeInterpolator.icc G4CascadeSampler.icc G4CollisionOutput.cc G4ElementaryParticleCollider.cc G4InuclCollider.cc G4NuclWatcher.cc G4NucleiModel.hh,cc G4RegionModel.cc 14 October 2010 Michael Kelsey ------------------------------ - G4NucleiModel.cc: Fix misspelled "G4doulbe" -> G4double. Pick up several missed bits of the "integer A and Z migration," mostly in test and diagnostic code: G4Analyser.hh,cc G4FissionConfiguration.hh G4FissionStore.hh,cc G4NuclWatcher.hh,cc 14 October 2010 Michael Kelsey (hadr-casc-V09-03-82) ---------------------------------------------------- - G4CascadParticle.cc: Add protection in getPathToTheNextZone() so that d2 is always computed non-negative. Avoids 10^-5 FPEs. 05 October 2010 Michael Kelsey ------------------------------ - G4NucleiModel: Major reorganization of generateModel() code. 1) Rename integration functions from "volNumInt[1]" to "zoneIntegralxxx" with "xxx" = "WoodsSaxon" or "Gaussian". 2) Move hardwired constants out to static data members, give clear names. 3) Split function into separate pieces to set binding energies, zone radii, volume/density values, and potential heights. 4) Within new functions, simplify if-cascades where possible, eliminate duplicated code. 5) Move std::vector<> buffers out to data members. Also, modify worthToPropagate() to use non-nucleon potential heights to terminate propagation. Previously, non-nucleons could never fail, as the "getFermiKinetic" always returned zero. 28 September 2010 Michael Kelsey (hadr-casc-V09-03-81) ------------------------------------------------------ - G4BigBanger: Missed some integer A/Z migrations, which caused a bus error in test47. 26 September 2010 Michael Kelsey (hadr-casc-V09-03-80) ------------------------------------------------------ - G4VCascadeDeexcitation.hh: NEW abstract base class for post-cascade processing. Some common activities will be implemented here from the two actual modules. - G4CascadeDeexcitation, G4PreCompoundDeexcitation: Use new base class above, reorganize code in collide() to use new deExcite(G4Fragment*) where appropriate. - G4InuclCascader.hh: Reference new base class for de-excitation modules. 25 September 2010 Michael Kelsey -------------------------------- - G4CascadeColliderBase: Add explosion(G4Fragment*) and explosion(A,Z,Eexc). Move implementation to latter, and write others as call-throughs. Add Z==0 condition for explosion, regardless of A. - G4EquilibriumEvaporator.hh: Remove explosion(G4InuclNuclei*), as unnecessary. Existing explosion(A,Z,E) now overrides base class. - G4CollisionOutput: Add function to process G4ReactionProducts from PreCompound. - G4PreCompoundDeexcitation.cc: Move G4ReactionProducts loop to G4CollisionOutput. 24 September 2010 Michael Kelsey -------------------------------- - G4IntraNucleiCascader.cc: Minor shuffle of post-cascade recoil checking, in preparation for moving fragment construction and processing away. - G4CollisionOutput.cc: Replace names "TargetFragment*" and "NucleiFragment*" with "OutgoingNuclei" and "OutgoingNucleus" for consistency with "OutgoingParticles" names. This affects the following source files, all of which are modified to match (using |sed|): cascade/include/G4Analyser.hh cascade/include/G4CollisionOutput.hh cascade/src/G4Analyser.cc cascade/src/G4CascadeCheckBalance.cc cascade/src/G4CascadeDeexcitation.cc cascade/src/G4CascadeInterface.cc cascade/src/G4CollisionOutput.cc cascade/src/G4EquilibriumEvaporator.cc cascade/src/G4Fissioner.cc cascade/src/G4IntraNucleiCascader.cc cascade/src/G4InuclCollider.cc cascade/src/G4InuclEvaporation.cc cascade/src/G4NonEquilibriumEvaporator.cc cascade/src/G4PreCompoundDeexcitation.cc - G4CollisionOutput: Add new G4Fragment data member, with get() and add() accessors. This fragment is *not* used by setOnShell() or by any of the event-total calculations. It will be filled by G4IntraNucleiCascader for use by de-excitation modules. Include G4Fragment in diagnostic output if not empty. - G4CascadeRecoilMaker.cc: Remove G4Fragment::SetExcitationEnergy() call. - G4InuclNuclei: Add new constructor to create from G4Fragment input, and new makeG4Fragment() to spit out a G4Fragment. Also provide a casting operator for the latter. 24 September 2010 Michael Kelsey (hadr-casc-V09-03-79) ------------------------------------------------------ Fix numerous compilation warnings on Linux (not seen on MacOSX) left over from migration to integer A and Z (-73 tag). G4BigBanger.cc G4CascadeCheckBalance.hh G4CascadeColliderBase.cc G4CascadeRecoilMaker.cc G4EquilibriumEvaporator.hh,cc G4ExitonConfiguration.hh G4Fissioner.cc G4InuclCollider.cc G4NonEquilibriumEvaporator.cc G4NucleiModel.cc - G4PreCompoundDeexcitation.cc: Drop "G4int" casts as no longer required. 23 September 2010 Michael Kelsey (hadr-casc-V09-03-78) ------------------------------------------------------ - G4CascadeInterface, G4InuclCollider: change user selection function name to usePreCompoundDeexcitation(), per Julia Yarba. - G4PreCompoundCascadeInterface.hh,.cc, G4PreCompountInuclCollider.hh,.cc: REMOVE THESE CLASSES. These were copied and modified versions of the standard versions, in order to test the new pre-compound de-excitation. That has been integrated with runtime flags, so the parallel versions are not required. 23 September 2010 Michael Kelsey -------------------------------- - G4InuclElementaryParticle.cc: Drop warning message when converting G4ParticleDefinition to type code. - G4CascadeInterface: Add functions for user selection of which post-cascade module to use for de-excitation of the residual nucleus. These call through to the equivalent G4InuclCollider functions. - G4InuclCollider: Add functions for user selection of which post-cascade module to use for de-excitation of the residual nucleus. These delete and re-instantiate the appropriate de-excitation "collider". - G4PreCompoundDeexcitation: Remove convertFragment() function, remove pass-by-value std::vector<> from getDeExcitedFragments() (use data member instead). Clean up some obsolete code usage. - G4CascadeRecoilMaker: Change fragment-making interface: makeRecoilNuclei() now returns G4InuclNuclei* for standard Bertini colliders. makeRecoilFragment() returns G4Fragment* for external PreCompound models. addExcitonConfiguration() sets local copy of excitons, needed in order to call the individual G4Fragment->Setxxx() functions. - G4IntraNucleiCascader.cc: Follow renaming RecoilMaker::makeRecoilNuclei(), use new addExcitonConfiguration(). - G4CascadeRecoilMaker: Change fragment-making interface: makeRecoilNuclei() now returns G4InuclNuclei*. makeRecoilFragment() returns G4Fragment*. addExcitonConfiguration() sets local copy of excitons, needed in order to call the individual G4Fragment->Setxxx() functions. - G4IntraNucleiCascader.cc: Follow renaming RecoilMaker::makeRecoilNuclei(), use new addExcitonConfiguration(). 22 September 2010 Michael Kelsey -------------------------------- - G4CascadeMomentum.hh: This should have been removed from the package long ago. Apologies for the oversight. 22 September 2010 Julia Yarba ----------------------------- Added 1st prototype of interface between Bartini cascade and PreCompound model (post-cascade de-excitation). Changes only to: /geant4/source/processes/hadronic/models/cascade/cascade New developments are those G4PreCompound* classes; the GNUmakefile adapted to include necessary links. The PreComp wrapper is G4PreCompundDeexcitation class. The logic, loops, conditions, etc., in the event processing are the same as in the "native" Bertini code. I actually copied it over from G4CascadeInterface, and started from there. However, there're a few technical changes that I'd like to mention. 1. G4PreCompoundInterface inherits directly from G4HadronicInteraction. I felt that we'd not need G4VIntra..., because its only advantage is a pointer (and related access methods) to G4VPreCompoundModel. This has now moved to the de-excitation wrapper. 2. In the Collider itself, I've made the data member to be G4CascadeColliderBase* theDeexcitation This way, it can be transparently set to the native one or the PreComp one (both inherit from G4CascadeColliderBase). 3. There's a setDeExcitation(...) methond in the collider, and also in the interface (which will pass it down to the collider). 19 September 2010 Michael Kelsey (hadr-casc-V09-03-77) ------------------------------------------------------ - G4CascadeInterface.cc: Bug fix to logic in retryInelasticNucleus() 17 September 2010 Michael Kelsey (hadr-casc-V09-03-76) ------------------------------------------------------ - G4CascadeInterface: Add support to pass nucleus projectiles into collider. Not tested or guaranteed to work, but G4IntraNucleiCascader is supposed to deal with them. 16 September 2010 Michael Kelsey -------------------------------- - G4CascadeInterface: Extensive reorganization, moving most functionality out of ApplyYourself and into small member functions. Complicated end-of-loop conditions encapsulated. Data members made into pointers to hide dependences from outside world. 16 September 2010 Michael Kelsey (hadr-casc-V09-03-75) ------------------------------------------------------ - G4CascadeInterface.cc: Add parentheses in end-of-while block to fix compilation warning in GCC 4.3. - G4IntraNucleiCascader.cc: In decayTrappedParticle(), check for photon daughters and put them directly onto output list. 16 September 2010 Michael Kelsey -------------------------------- - G4CascadParticle.hh: Make getGeneration() const. - G4CascadeDeexcitation.hh: Fix compiler warning about order of data members. - G4IntraNucleiCascader: Intercept hyperons which are "trapped" in nuclear potential, and decay them immediately to produce usable secondaries. This resolves problem with sub-MeV final-state hyperons (reported by A. Dotti), but is not entire correct. Properly, the hyperon should be incorporated into a hypernucleus fragment. - G4InuclElementaryParticle.hh: Add hyperon() identification function, and constructor to take G4DynamicParticle directly. - G4InuclParticle.hh, G4InuclNuclei.hh: Add constructor to take G4DynamicParticle directly. 15 September 2010 Michael Kelsey (hadr-casc-V09-03-74) ------------------------------------------------------ - G4CascadeDeexcitation: NEW collider to handle post-cascade processing of nuclear fragment. Encapsulates BigBanger and Evaporators. Eventually will have alternative (configurable or #ifdef) implementation using G4 external "pre-compound" models instead of Bertini factories. - G4InuclCollider: Remove post-cascade colliders (BigBanger, Evaporators), replace with new G4CascadeDeexcitation. - G4LorentzConverter: Move construtor implementations to .cc file, and make sure all constructors have initializers for all data members. 14 September 2010 Michael Kelsey (hadr-casc-V09-03-73) ------------------------------------------------------ Migrate to integer A and Z values for nuclear configurations. Includes both explicit arguments for G4InuclNuclei, and function arguments, computational parameters involved in nuclear configurations, breakup, etc. G4CascadeCheckBalance.cc G4CascadeInterface.cc G4CascadeRecoilMaker.hh G4Fissioner.hh,cc G4InuclEvaporation.cc G4InuclNuclei.hh,cc G4InuclSpecialFunctions.hh G4NonEquilibriumEvaporator.hh,cc G4NucleiModel.hh,cc G4PreCompoundCascadeInterface.cc bindingEnergy.cc bindingEnergyAsymptotic.cc nuclearLevelDensity.cc paraMaker.cc - G4InuclSpecialFunctions.hh: Eliminate bindingEnergy functions which are no longer used, along with their .cc files: bindingEnergyKummel bindingEnergyExact Migration validated using 100 events (20 GeV pi+ on lead) with verbose==4. Entire log files (9.6M lines, 433 MB) identical before and after migration. 13 September 2010 Michael Kelsey -------------------------------- - G4InuclElementaryParticle: Move printParticle() implementation to .cc, and add printing of particle name to output. - G4InuclNuclei.cc: Move base-class printing to first line of output, to match G4InuclEP. 10 September 2010 Michael Kelsey (hadr-casc-V09-03-72) ------------------------------------------------------ - G4CascadeRecoilMaker: Add new goodNucleus() function with functionality from G4IntraNucleiCascader::goodCase(). Add parameter to set "rounding tolerance" for small/negative mass differences. Drop getRecoilFragment() in favor of user calling makeRecoilFragment() directly (instead of doing it collide()), which returns a non-const pointer. - G4IntraNucleiCascader: Remove previously introduced getResidualMass() and makeResidualFragment() functions, along with G4InuclNuclei object. Replace with new RecoilMaker utility. Move goodCase() to RecoilMaker, and begin to simplify end-of-cascade processing. - G4ExitonConfiguration.hh: Add function to reset values to zero. - G4InuclNuclei: Add function to zero out exciton configuration, and use it in fill() functions. 9 September 2010 Michael Kelsey ------------------------------- - G4CascadeCheckBalance: Add new collide() interface to take lists of both G4InuclElementaryParticles and G4CascadParticles; supports use by G4IntraNucleiCascader and G4CascadeRecoilMaker. - G4CascadeRecoilMaker: NEW pseudo-Collider class to compute the nuclear recoil kinematics of a cascade, either in process or completed. To be used by G4IntraNucleiCascader; uses G4CascadeCheckBalance to do work. 6 September 2010 Michael Kelsey (hadr-casc-V09-03-71) ----------------------------------------------------- - G4NucleiModel: Add protections in generateInteractionPartners() so that nucleon and quasideuteron interactions are only selected if there are "enough" nucleons of the necessary type still available (xxxNumberCurrent). - G4InuclNuclei: Add fill() functions which overwrite the entire particle structure, with same argument lists as constructors. Will be used mainly by G4IntraNucleiCascader::makeResidualFragment(). - G4IntraNucleiCascader: Hide non-physical nucleus message behind verbose flag. Add function and data member to build recoil nucleus (fragment) at end of every iteration; will eventually replace functionality of getResidualMass(). 2 September 2010 Michael Kelsey (hadr-casc-V09-03-70) ----------------------------------------------------- - G4NucleiModel.cc: Restore hadr-casc-V09-03-68 revision 1.71, and remove the two resize(3) actions. NOTE: The exercise below has (finally) resolve the cross-section discrepancy reported by Sunanda Banerjee back in July. It turns out that my use of "resize(3)" to pre-allocate the qdeutron and acsec buffers on each interaction was incorrect. This doesn't just reserve memory, it fills the vectors with three elements, so that subsequent push_back()'s fill [3], [4], etc. 2 September 2010 Michael Kelsey ------------------------------- - G4NucleiModel.cc: Reverted to hadr-casc-V09-03-38 revision 1.45, and interface changes incorporated. See NOTE below from 28 July 2010. Cross-section changes have not been resolved or validated. Since -38 revision has better data/MC matching (ratio near 1), it is restored as the baseline version, and changes will be re-done incrementally. Each increment after (0) is tagged "kelsey-20100902x", x=a,b,c,d etc. 0) Implement new ctor and generateModel() calls Make cross-section tables statically initialized Include absorptionCrossSection definition 1) Use lookup tables for cross-sections, and new interpolator Change CHC_CHECK to G4CASCADE_DEBUG_CHARGE 2) Use this package's bindingEnergy() function 3) Update diagnostic messages and verbosity levels; Add missing initializers to all constructors; Use data-member buffer for G4CollisionOutput 4) Use generateWithRandomAngles() everywhere appropriate; Collapse if-cascades to use if-return where possible 5) Make generateModel() re-usable with data-member buffers 6) Energy-momentum conservation checking; Implement generateNucleonMomentum; Remove extraneous semicolons and blank lines 7) Use local variables in passFermi(); Fix some minor LorentzVector calculations; Use generateNucleonMomentum() for quasi-deuterons 8) Use data-member buffers for quasideuterons, coords, mom. 9) Use enum labels for quasideuteron codes 10) Restore Dennis' improved potential (6-zone) calculations 4 August 2010 Michael Kelsey (hadr-casc-V09-03-69) -------------------------------------------------- - G4CascadeData: Add name data member and optional ctor argument, use when printing tables. - G4CascadeFunctions.icc: Pretty-up printing output using name string. - G4Cascade*Channel.cc: Add name string to data() ctor, use central part of class name, e.g., "PiMinusP" for G4CascadePiMinusPChannel. - G4ElementaryParticleCollider.cc: Add printing of all final-state tables, one time only, protected by G4CASCADE_DEBUG_SAMPLER. - GNUmakefile: Add G4CASCADE_DEBUG_SAMPLER preprocessor flag. 3 August 2010 Michael Kelsey (hadr-casc-V09-03-68) -------------------------------------------------- - G4CascadeData.hh: Add print() and printXsec() functions to dump tables. - G4CascadeData.icc: Move implementations out of G4CascadeData.hh file. - G4CascadeFunctions.hh,icc: Add printTable() to dump tables. - G4CascadeInterpolator.hh,icc: Add printBins() to dump energy bin edges. - G4CascadeSampler.hh,icc: Add print() to call through to interpolator. NOTE: This should be the last set of functional changes for a while. Sunanda Bannerjee reported substantial changes in validation plots for the Bertini cascade between 4.9.3-ref-05 (hadr-casc-V09-03-23-01) and 4.9.3-ref-06/4.9.4-beta-01 (hadr-casc-V09-03-43). 28 July 2010 Michael Kelsey (hadr-casc-V09-03-67) ------------------------------------------------- - G4NucleiModel.cc: Set deuteron arrays to fixed length (3). Add A/Z values to generateModel diagnostic message. - G4EquilibriumEvaporator.cc: Change some fixed length std::vector<> to simple C arrays. - G4Fissioner.cc: Move G4FissionStore to class data member for reuse. - G4FissionStore: Add ::clear() function to support reuse, move addConfig() implementation to .cc file. - G4IntraNucleiCascader: Move G4NucleiModel to class-level data member (pointer) so it can be reused across collisions. 26 July 2010 Michael Kelsey --------------------------- - G4Analyzer.cc: Use const-refs for particle lists. - G4BigBanger, G4ElementaryParticleCollider: Move std::vector<> buffers to .hh file to allow reuse. - G4NucleiModel.cc: Simplify buffers used in generateModel() to reduce G4double allocations. 23 July 2010 Michael Kelsey (hadr-casc-V09-03-66) ------------------------------------------------- - G4CascadeInterface: Move G4CollisionOutput to .hh file for reuse between events. - G4IntraNucleiCascader: Move buffers for cascade output to .hh file, so they can be reused between events. - G4NucleiModel: Move G4CollisionOutput to .hh file for reuse; use references for bullet and target args to G4EPCollider. 21 July 2010 Michael Kelsey (hadr-casc-V09-03-65) ------------------------------------------------- - GNUmakefile: Add new G4CASCADE_CHECK_ECONS to turn off all of the internal conservation checks (reduce std::vector<> memory churn!). - G4CascadeColliderBase.cc: Use G4CASCADE_CHECK_ECONS to set the default value of "doConservationChecks": true if defined, false if not defined. This is done with #ifdef-else-endif block, NOT some fancy macro. - G4CascadeInterface.cc: Use G4CASCADE_SKIP_ECONS to toggle reporting violations before end of loop (don't need to call balance.okay() twice!). - G4ElementaryParticleCollider.cc: Put verbosity check before call to validateOutput() to avoid unnecessary vector manipulations. - G4IntraNucleiCascader.cc: Set doConservationChecks = true unconditionally; used to reject bad cascades. - G4NucleiModel.cc: Use G4CASCADE_CHECK_ECONS to hide balance.collide(). 20 July 2010 Michael Kelsey (hadr-casc-V09-03-64) ------------------------------------------------- - G4CascadeColliderBase: Make G4CascadeCheckBalance a pointer member, move ctor and dtor to .cc file. Change balance tolerances to 1 per mil and 1 MeV. - G4InuclCollder: Make all colliders pointer members. - G4IntraNucleiCascader: Make EPCollider a pointer member, and call G4CollisionOutput::setOnShell() to balance energy-momentum for null fragments. - G4InuclNuclei.cc: Preserve momentum magnitude when setting excitation energy by setting mass and kinetic energy. 19 July 2010 Michael Kelsey (hadr-casc-V09-03-63) ------------------------------------------------- - G4CascadeCheckBalance.cc: Change zero-tolerance to 10 keV (1e-5) from 1 keV (1e-6). - G4CollisionOutput.hh: Fix capitalization of "numberOfOutgoingParticles". - G4EquilibriumEvaporator.cc: Remove duplicate EEXS setting. - G4InuclNuclei: Change implementation of setExitationEnergy() to adjust mass while keeping momentum vector constant. Currently done with "expensive" LorentzVector manipuation. Should be done by recomputing kinetic energy given new mass value. - G4NonEquilibriumEvaporator.cc: Modify particle-creation block to work as G4EquilibriumEvaporator now does. Simplify some if-blocks. 16 July 2010 Michael Kelsey (hadr-casc-V09-03-62) ------------------------------------------------- - G4CollisionOutput: Add interfaces to handle G4CascadParticles. - G4IntraNucleiCascader: Eliminate local "inter_case" data member and function. Use base class G4InteractionCase directly. Add functionality to test for conservation and recoil before exiting "itry" loop, and redo cascade if unbalanced recoil fragment. - G4{PreCompound}InuclCollider.cc: Drop "setInteractionCase()" function. 15 July 2010 Michael Kelsey (hadr-casc-V09-03-61) ------------------------------------------------- - G4CollisionOutput: New ::add() function to combine two objects. New accessors to get total charge and baryon number. - G4CascadeCheckBalance: Make tempOutput data member, for thread-safety, rather than static variables. Use new G4CollisionOutput accessors. - G4IntraNucleiCascader.cc: Move local output buffers outside while loop, use std::vector<>::insert() for copying. - G4InuclCollider.cc: Use new G4CollisionOutput::add() interface. - G4NucleiModel.cc: Hide conservation checks behind verbose>2. Otherwise log files get too big 15 July 2010 Michael Kelsey (hadr-casc-V09-03-60) ------------------------------------------------- - G4CascadeCheckBalance: Add layer of protection in relativeX() (check initial values) to avoid divide-by-zero errors. Add another interface to accept list of G4CascadParticles, for use with G4NucleiModel. Add check of momentum direction balance, not just magnitudes. - G4IntraNucleiCascader.cc: Rearrange end-of-loop if-blocks to allow for conservation checking prior to return. Add reporting of both too-low and too-high residual energy (at verbose=2) for single-nucleon fragments. - G4InuclCollider.cc: Remove re-named conservation checks, now all done by colliders themselves. - G4InuclParticle.hh: Add setKineticEnergy() function to simplify handling of some kinematics. - G4NucleiModel: Add G4InuclNuclei data member (created in generateModel()), for use with conservation checks. Do check at end of generateParticleFate(). 15 July 2010 Michael Kelsey (hadr-casc-V09-03-59) ------------------------------------------------- - G4InuclNuclei: Use G4DynamicParticle::theDynamicalMass to carry around excitation energy (== theDynamicalMass-thePDGMass). This allows excitation to be changed on the fly, with all kinematics handled correctly. It also allows ONLY the ground state nucleus to be created as a G4Ions object (whether global or private), reducing the number of such objects by a factor of thousands. 14 July 2010 Michael Kelsey (hadr-casc-V09-03-58) ------------------------------------------------- - G4CollisionOutput.cc: For initial four-momentum adjustment, skip over particles which would acquire negative energy after "correction." - G4ElementaryParticleCollider.cc: Bug fix for two-body final states. Kinematics should not require "rescaling." That was driven by states which were kinematically forbidden, with m1+m2 > etot_scm (e.g., pi0 p -> pi+ n with just 5 MeV kinetic energy). Now those states are caught and rejected. - G4CascadeInterface.cc, G4InuclCollider.cc: Improve diagnostics reporting number of retries. - G4EquilibriumEvaporator.cc: When computing residual excitation (EEXS_new), original thrown energy, S, should be used, not reboosted particle after recoil. Simplify evaporation kinematics to conserve four-momentum automatically (PEX -= mom). 14 July 2010 Michael Kelsey (hadr-casc-V09-03-57) ------------------------------------------------- - G4CascadeColliderBase: New subclass of G4VCascadeCollider, which takes over all of its concrete functionality, and adds conservation checker (G4CascadeCheckBalance) as data member. Wrapper functions and control flag allow colliders to user it transparently. - G4VCascadeCollider: Move concrete functionality to new base class. - All colliders: Change base class to new G4CascadeColliderBase. Remove local copies of conservation-checker, using new base function instead. cascade/include/G4BigBanger.hh cascade/include/G4ElementaryParticleCollider.hh cascade/include/G4EquilibriumEvaporator.hh cascade/include/G4EvaporationInuclCollider.hh cascade/include/G4Fissioner.hh cascade/include/G4IntraNucleiCascader.hh cascade/include/G4InuclCollider.hh cascade/include/G4NonEquilibriumEvaporator.hh cascade/include/G4PreCompoundInuclCollider.hh cascade/src/G4BigBanger.cc cascade/src/G4ElementaryParticleCollider.cc cascade/src/G4EquilibriumEvaporator.cc cascade/src/G4EvaporationInuclCollider.cc cascade/src/G4Fissioner.cc cascade/src/G4IntraNucleiCascader.cc cascade/src/G4InuclCollider.cc cascade/src/G4NonEquilibriumEvaporator.cc cascade/src/G4PreCompoundInuclCollider.cc - G4EquilibriumEvaporator: Use new functionality (above) to turn off conservation checks when evaporating fission products. - G4CascadeInterface.cc: Report number of retries in verbose messages. - G4IntraNucleiCascader.cc: Remove sanity check on afin/zfin vs. model. 13 July 2010 Michael Kelsey (hadr-casc-V09-03-56) ------------------------------------------------- - G4CascadeCheckBalance: Add zero protection (needed for momentum ratio) using a static tolerance parameter. - G4EquilibriumEvaporator.cc: Add dumping of G4CollisionOutput before exit, some fixes for "PEX" adjustments as EEXS changes. - G4NonEquilibriumEvaporator.cc: Add conservation checking, dump of output, some fixes for "PEX" adjustments as EEXS changes. - G4Fissioner.cc: Add conservation checking, remove addition of excitation energy to input nucleus mass, since already included. 13 July 2010 Michael Kelsey --------------------------- - G4CascadeCheckBalance.cc: Hide violation reports behind verbose == 1. - G4ElementaryParticleCollider.cc: Bump ::collide() message to verbose > 1. - G4EquilibriumEvaporator.cc: Add conservation checking, collapse if-cascades by doing failure tests and exits up front, add sanity check on eex_real. - G4IntraNucleiCascader.cc: Add diagnostic messages and some FIXME comments, validate afin/zfin against G4NucleiModel result. - G4InuclCollider.cc: Move conservation check outside verbosity flag. This adds to CPU usage, so may need #ifdef protection later. Adjust a few verbosity levels. - G4LorentzConvertor.cc: Bump all diagnostic messages to verbose > 2. - G4NucleiModel.cc: Simplify main if-block to put failure up front; add debugging messages when decrementing proton or neutron counts. 11 July 2010 Michael Kelsey --------------------------- - G4CascadeCheckBalance: Add ctor argument with name of parent class; use this name when reporting results. Add interface for nuclear fragment list. Allow parent class name to be changed dynamically. - G4BigBanger.cc, G4CascadeInterface.cc, G4ElementaryParticleCollider.cc, G4InuclCollider.cc, G4NucleiModel.cc: Pass name to G4CascadeCheckBalance. - G4Fissioner.cc: Use G4CascadeCheckBalance to test energy conservation. - G4InuclNuclei.hh: Add model ID as optional ctor argument. - G4InuclCollider.cc: Move balance checks on evaporators outside verbosity. Adjust name of G4CascadeCheckBalance for clear reporting. - G4VCascadeCollider.hh: Add protected function to change name dynamically. 6 July 2010 Dennis Wright (hadr-casc-V09-03-55) ----------------------------------------------- - G4IntraNucleiCascader.cc: add to final particle list those cascade particles which were formerly abandoned at cascade termination; - G4IntraNucleiCascader.cc: allow meson excitons to pass out of nucleus since they are not proper excitons, and would be lost otherwise 4 July 2010 Dennis Wright (hadr-casc-V09-03-54) ----------------------------------------------- - tag changes up to now 2 July 2010 Michael Kelsey -------------------------- - G4BigBanger.cc: Moving "generateMomentumModules()" inside loop. For three-body decays, the angles are not ajustable (so always fails). - G4CascadeInterface.cc: Set verbosity on G4CollisionOutput. - G4EquilibriumEvaporator.cc: Simplify if-cascades to reduce nesting (test for errors and exit up front, rather than in else-blocks). - G4InuclCollider.cc: Set verbosity on G4CollisionOutput. - G4IntraNucleiCascader.cc: Throw away casacde which leaves "negative energy recoil" (i.e. rest-frame energy of recoil less than mass of nucleus or nucleon). 1 July 2010 Michael Kelsey -------------------------- - G4InuclCollider.cc: Used wrong input target for conservation-law checking subsequent to G4EquilibriumEvaporator. - G4EquilibriumEvaporator.cc, G4NonEquilibriumEvaporator.cc: Handle excitation energy differently with new G4InuclNuclei interface. Compute updated values correctly, by taking nuclear mass difference then subtracting energy of evaporated particle. - G4InuclNuclei: Reorganization to properly incorporate excited states. Excitation energy included in mass in all cases. setExcitationEnergy() now replaces G4PartDefn pointer with new excited state. getNucleiMass() takes (optional) excitation, calls G4NucleiProperties to get mass value. For weird fragments, multiple isomers allowed, assigned unique non-standard PDG codes. Include particle name in printout (now in .cc file). - G4CollisionOutput.cc: Do not include nuclear excitation energy in output sum; now included with nuclear mass automatically (and properly). - G4CascadeCheckBalance.cc: Do not include nucler excitation energy in input sum; now inluded with nuclear mass automatically (and properly). - G4IntraNucleiCascader.cc: For recoil nuclear fragments, treat excitation energy properly: compute as difference between recoil "mass" (recoil-frame energy) and ground-state A/Z mass, and pass into G4InuclNuclei ctor. After the cascade, add some recoil energy checks to deal with both floating-point round-off, and quasi-elastic scatters (which change the bullet direction, and leave the nucleus with "missing" energy). - G4BigBanger.cc: Simplify boost to "target" nucleus, using "boostVector" instead of G4LorentzConvertor machinery. 30 June 2010 Michael Kelsey --------------------------- - G4BigBanger.cc: Improve handling of excitation energy as part of nuclear mass, deal with two-body explosion properly (x=0.5, not random). Some tweaks to diagnostic messages. - G4CascadeCheckBalance: Add excitation energy to total energy for bullet and target nuclei. This is done in G4CollisionOutput for secondaries. It is NOT relativistically correct (should add to mass, not energy), but is consistent. - G4CollisionOutput.cc: Use "getExitationEnergyInGeV()" instead of "0.001*". - G4IntraNucleiCascader.cc: More diagnostic messages, improve the afin/zfin sanity check by requiring A>=Z. 28 June 2010 Michael Kelsey --------------------------- - G4CascadeCheckBalance: Report violations on G4cerr always, regardless of verbosity level. Add collide(...,) interface to allow use from within G4ElementaryParticleCollider. - G4ElementaryParticleCollider.cc: Add conservation checks within ::collide(). - G4IntraNucleiCascader.cc: Add more diagnostic messages. Test for negative values of afin, zfin, and try again. Set round-off limit (1e-6), and test nuclear recoil energy for bound (setting to zero) before doing energy-violation test. - G4InuclNuclei.cc: Abort job if passed negative Z or A argument. 28 June 2010 Michael Kelsey --------------------------- - G4BigBanger.cc: Missed one instance of GetBindingEnergy(). 26 June 2010 Dennis Wright -------------------------- - G4InuclNuclei: Fix bug in calculation of PDG code. 25 June 2010 Michael Kelsey (hadr-casc-V09-03-53) ------------------------------------------------- - G4ElementaryParticleCollider.cc: MAJOR BUG FIX: Three different places in generating N-body momenta had incorrect "recoil" calculations. The Nth four-vector was computed as simply -total, which produced negative energy states (obviously). The correct calculation should have been N = G4LV(0,0,0,etot) - (total) in each instance. 24 June 2010 Michael Kelsey (hadr-casc-V09-03-52) ------------------------------------------------- - G4CascadeCheckBalance.cc: Bug fixes to limit checks; should be using std::abs(), or negative violations don't get caught! Also did some cleanup for compiler warnings see on Linux. 23 June 2010 Michael Kelsey --------------------------- - G4CascadeInterface.cc: Fix infinite-loop bug with energy-violation; must check for (nTries>maxTries) outside parenthetical, with balance.okay() inside. Do conservation checks all the time, not just with flag set. If e-violation is "infinite loop", dump last generated event and abort job. - G4CascadeCheckBalance: Add checks on baryon number, charge, and kinetic energy. "Global" sanity check (::okay() function) does not include K.E. 23 June 2010 Michael Kelsey (hadr-casc-V09-03-51) ------------------------------------------------- - bindingEnergy.cc: Replace entire function with call-through to G4NucleiProperties. Copy test for valid A/Z from there, and return 0. directly on failure; suppresses warning message in 9.4-beta. - G4EquilibriumEvaporator.cc, G4Fissioner.cc, G4IntraNucleiCascader.cc G4InuclNuclei.cc, G4NonEquilibriumEvaporator.cc, G4NucleiModel.cc G4VCascadeCollider.cc: Restore calls to local "bindingEnergy()" to get wrapper function above; suppresses warning messages in 9.4-beta. - G4NucleiModel.cc: Make class re-usable (had been assumed in -47 tag, but was not true!), by clearing all parameter vectors in generateModel(). Values of A,Z are tested first, and previous data kept if same nucleus is being modelled. 23 June 2010 Michael Kelsey --------------------------- - G4CascadeInterface.cc: Minor fix to rationalize version jumpings. - G4NucleiModel.cc: Fix bug in partners list termination mods below, and remove reflection-recoil from boundaryTransition(). 21 June 2010 Michael Kelsey (MHK-20100621) ------------------------------------------ - G4CascadeInterface.cc: Bring MHK-20100620 version back to HEAD, make same parenthesis fix for GCC 4.5 compilation. - G4IntraNucleiCascader.cc: Bug fix nuclear recoil kinematics introduced in MHK-20100620. - G4NucleiModel.cc: Bring MHK-20100620 version back to HEAD, apply ctor argument fix. Eliminate creating temporaries for terminal "partners" on list; default ctor will take care of it. Hide negative path-length report behind verbose flag, and don't return an empty list. Add block of code in ::boundaryTransition() which recoils the nucleus when the secondary is reflected off the potential, to balance the momentum transfer. This is implemented by computing the boost for the full nucleus using the computed three-momentum transfer, and applying that boost to the secondary. 23 June 2010 Michael Kelsey (hadr-casc-V09-03-50) ------------------------------------------------- - G4IntraNucleiCascader.cc: Restore G4NucleiModel as local data member. Not well designed for reuse. 21 June 2010 Michael Kelsey (hadr-casc-V09-03-49) ------------------------------------------------- NOTE: Changes below were version jumped into V09-03-48. Tag above ONLY includes these two changes! - G4CascadeInterface.cc: Add parentheses in main iteration loop to support mixed && and || (reported by gcc-4.5). - G4NucleiModel.cc: Fix mistake in passing ctor args to generateModel(). 20 June 2010 Michael Kelsey (MHK-20100620) ------------------------------------------ - G4CascadeCheckBalance: New utility class to do energy and momentum conservation testing. Implemented as a "collider" to resue interface. - G4CascadeInterface.cc: Use new G4CascadeCheckBalance for energy conservation. - G4CollisionOutput: Add setVerboseLevel() function, diagnostic reports in ::setOnShell(), and collapse if-cascades to use "if (!xxx) return" instead of multiple nestings. - G4ElementaryParticleCollider.cc: Collapse if-cascade to use "if (!xxx) return" instead of multiple nestings. - G4IntraNucleiCascader.cc: Improve diagnostic messages, change some G4cout to G4cerr. - G4InuclCollider: Make output buffers data members to reduce churn; simplify if-cascades to use "if (!xxx) return" instead of nesting; add energy-conservation checks at each stage of cascade. - G4NucleiModel.cc: Improve diagnostics, collapse if-cascades to use "if (!xxx) return" instead of multiple nestings. 18 June 2010 Michael Kelsey (hadr-casc-V09-03-48) ------------------------------------------------- - G4CascadeInterface.cc: Add check on energy conservation between initial and final states; more than 5% imbalance triggers repeat generation of cascade. This check may be disabled with flag G4CASCADE_SKIP_ECONS. Also did some minor cleanup of the code. - cascade/GNUmakefile: Add support for new flag above. 17 June 2010 Michael Kelsey (hadr-casc-V09-03-47) ------------------------------------------------- - G4CascadeInterface, G4PreCompoundCascadeInterface: Make G4InuclCollider a local data member, pass verbosity to it in ::ApplyYourself(). - G4InuclCollider, G4ElementaryParticleCollider, G4IntraNucleiCascader, G4EquilibriumEvaporator, G4BigBanger: Make all sub-colliders local data members, pass verbosity to each of them. - G4NucleiModel: Add ctors and generateModel() signatures so both can do particle or A/Z initialization. Add setVerboseLevel() function. 17 June 2010 Michael Kelsey (hadr-casc-V09-03-46) ------------------------------------------------- - cascade/GNUmakefile: Add series of "ifneq (,...)" blocks to map environment variables for debugging onto "-D..." compiler flags: G4CASCADE_COULOMB_DEV G4CASCADE_DEBUG_CHARGE G4CASCADE_DEBUG_INTERFACE G4CASCADE_DEBUG_SORT G4CASCADE_WATCHER_HIGHZ - G4CascadeInterface.cc: Replace preprocessor flags "debug_G4...Interface" with G4CASCADE_DEBUG_INTERFACE, and "BERTDEV" with G4CASCADE_COULOMB_DEV. Fix bug with information access in debugging block. - G4EquilibriumEvaporator.cc, G4IntraNucleiCascader.cc, G4NonEquilibriumEvaporator.cc: Eliminate preprocessor flag RUN and all code contained in "#else" blocks. - G4LorentzConverter.cc: Add diagnostic output with different levels: All " >>>" entry messages done for verboseLevel >= 1; all numeric reports for verboseLevel > 2. - G4NucleiModel: Replace preprocessor flag "CHC_CHECK" with G4CASCADE_DEBUG_CHARGE. - G4PreCompoundCascadeInterface.cc: Replace preprocessor flag "debug_G4...Interface" with G4CASCADE_DEBUG_INTERFACE. Fix bug with information access in debugging block. - G4WatcherGun.cc: Replace preprocessor flag "PB" with G4CASCADE_WATCHER_HIGHZ. 16 June 2010 Michael Kelsey --------------------------- - G4CascadeInterface.hh: Add setVerboseLevel() function. - G4IntraNucleiCascader.cc: Add reporting of momentum content for residual nuclear fragment, list of final-state particles, some cleanup of momentum balancing code. - G4LorentzConvertor: Add reporting of bullet and target four-vectors. - G4NucleiModel.cc: Add diagnostic output for partner-list generation, replace one random-angle code block with generateWithRandomAngles(). 15 June 2010 Michael Kelsey (hadr-casc-V09-03-45) ------------------------------------------------- - G4CascadeInterface.cc, G4PreCompoundCascadeInterface.cc: When converting output particles from K0/K0bar to K0S/K0L, convert kinetic energy from Bertini internal units (GeV) to GEANT4 units (MeV). - G4VCascadeCollider: Make two separate ctors, name and name+verbose, with no default values. All subclasses *must* provide a literal name string. 12 June 2010 Michael Kelsey (hadr-casc-V09-03-44) ------------------------------------------------- - G4CascadeT33piNChannel.cc: Swapped 8-body final state tables for pipP vs. pimN. 11 June 2010 Michael Kelsey (hadr-casc-V09-03-43) ------------------------------------------------- - G4CascadeData.hh: Equally trivial fix for compiler warking on Intel ICC for index[] array bounds in ::initialize(). Dimension array as [9], and set all values. 08 June 2010 Gunter Folger (hadr-casc-V09-03-42) ------------------------------------------------ - trivial fix for compiler warning on gcc43 on empty body in for(...) in cascade/include/G4CascadeInterpolator.icc:67 01 June 2010 Michael Kelsey (hadr-casc-V09-03-41) ------------------------------------------------- - paraMaker.cc: Fix vector initialization for Windows crash. 26 May 2010 Dennis Wright (hadr-casc-V09-03-40) ----------------------------------------------- - G4NucleiModel: remove conversion to fm, and conversion of cross sections to fm**2 21 May 2010 Michael Kelsey (hadr-casc-V09-03-39) ------------------------------------------------ Final tag for inclusion in GEANT 4.9.4-beta. Will be validated internal and included in global Hadronics tag. - G4CascadeSampler.icc: Activate time-saving checks on single bins. - G4ElementaryParticleCollider.cc: Remove special case for nucleon elastic scattering. 21 May 2010 Michael Kelsey (kelsey-20100521c) --------------------------------------------- - G4CascadeInterface, G4PreCompoundCascadeInterface, G4InuclEvaporation: Simplify code: fetch G4DynamicParticle out of outgoing G4InuclParticles, rather than creating new ones. Remove all of the *Collider data members (instantiated within G4InuclCollider). Move final state rotations to G4CollisionOutput. - G4InuclParticle: Provide accessor to return G4DynamicParticle. - G4CollisionOutput: Add function to apply LorentzRotation to both lists; used by G4CascadeInterface. - G4ElementaryParticleCollider: Avoid memory churn with G4LorentzVector temporaries. 21 May 2010 Michael Kelsey (kelsey-20100521b) --------------------------------------------- - G4VCascadeCollider: New base class for all Colliders. Carries verboseLevel data member and set-function. ::collide() is pure virtual. Additional protected member functions will be defined to include all code shared across multiple Colliders. - Migrate all of the "Collider" factories to use new base class, removing common member functions, and replace passed-in sibling colliders with local data members (pointers for now). Since none of these classes have persistent (state preserving) data members, the cost of more than one instantiation is minimal. G4BigBanger G4ElementaryParticleCollider G4EquilibriumEvaporator G4EvaporationInuclCollider G4Fissioner G4IntraNucleiCascader G4InuclCollider G4NonEquilibriumEvaporator G4PreCompoundInuclCollider - G4CascadeInterface.cc, G4InuclEvaporation.cc, G4PreCompoundCascadeInterface.cc: Remove siblings from constructors for the Colliders. - G4InteractionCase.hh: Eliminate unnecessary copying of std::pair<>'s, use initializers in ctors, add clear() function to reset to 0-0-0. Move evaluation of bullet vs. target to new set() function, replacing separate bulletTargetSetter() in the colliders. Add boolean accessors to avoid hard-coding inter_case values. Change code numbers so nucleus collisions are negative, and positive codes refer to the "is" or "rtype" numbers. - G4ElementaryParticleCollider.cc: Use G4InteractionCase to compute "is", instead of hardwiring the meaning. - G4Collider.hh: Remove empty and never-used file. - G4EvaporationInuclCollider.cc: Eliminate unnecessary creation of duplicate G4InuclNuclei: pass input through to G4EquilibriumEvaporator. - G4LorentzConvertor: Add interfaces to pass G4InuclParticles directly. 21 May 2010 Michael Kelsey (kelsey-20100521a) --------------------------------------------- Replace hand-coded interpolation of arrays with use of G4CascadeInterpolator. In all cases, local arrays are replaced with static const, and the interpolator object itself is declared static, to reduce memory churn. G4NucleiModel::totalCrossSection() G4EquilibriumEvaporator::getQF() G4InuclSpecialFunctions::paraMaker[Truncated]() (in paraMaker.cc) - G4CascadSpecialFunctions: Remove. totalCrossSection() redundant with G4NucleiModel. Move absorptionCrossSection() to G4NucleiModel. - G4CascadeInterpolator.icc: Bug fix to catch special case of exact upper bin edge (occurs when !doExtrapolation). If index == last + 0., just return upper edge value, without calculation. - G4NucleiModel.cc: Use G4Cascade{Pi*}Channel and G4Cascade{NN,NP,PP}Channel classes to get total cross-sections for pi-N and N-N scattering. Arrays for kaon and hyperon scattering should be migrated as well, once binning is resolved. Move absorptionCrossSection() here from SpecialFunctions. 20 May 2010 Michael Kelsey (kelsey-20100521) -------------------------------------------- - G4CascadeInterpolator.icc: Two bug fixes involving values at array edges. 19 May 2010 Michael Kelsey, Dennis Wright ----------------------------------------- - G4BertiniData.hh,.cc: Remove unused and unnecessary class. - G4NucleiModel.cc: convert nuclear radii to fm and cross sections to fm**2. Use six-zone model for A > 99, and make alpha a 1-zone nucleus. - G4CascadSpecialFunctions: convert pion absorption cross sections from mb to fm**2, correct spelling of method absorptionCrossSection 17 May 2010 Michael Kelsey (hadr-casc-V09-03-38) ------------------------------------------------ - paraMaker.cc (G4InuclSpecialFunctions::paraMaker[Truncated]): Upper edge of interpolation array not properly handled. Should be "if (Z >= 70.0)". This affects G4NonEquilibriumEvaporator output. 17 May 2010 Michael Kelsey (hadr-casc-V09-03-37) ------------------------------------------------ Bug fixes for compiler warnings (not seen on MacOSX, even with g++ -Wall) - G4CascadeData.hh: Dummy arrays needed double-braces for initialization. - G4CascadeInterpolator.icc: Extraneous decimal point in "for (i=0.;". - G4CascadeKzeroBarNChannel.cc: Left three "old" arrays in place during conversion. 14 May 2010 Michael Kelsey (hadr-casc-V09-03-36) ------------------------------------------------ Remove obsolete files following reorganization of two-body scattering lookup tables. G4CascadeElasticInterface.hh,.cc G4ElasticCascadeInterface.hh,.cc G4FinalStateSampler.hh,.cc G4NucleonSampler.hh,.cc G4PionSampler.hh,.cc - G4CascadeChannel.hh,.cc: All functionality removed, replaced with namespace containing only getQnums and CheckQnums validation functions. 14 May 2010 Michael Kelsey (hadr-casc-V09-03-35) ------------------------------------------------ Replace independent parallel samplers with templated base class and single implementation. This completes the reorganization of the channel tables. - G4CascadeSampler: Redefine as templated base, taking binning array as constructor argument. Move implementation file from .cc to .icc. NOTE: G4CascadeSampler.cc is removed, since not consistent with new .hh. - G4PionNucSampler: Subclass of G4CascadeSampler<30>, replaces G4FinalStateSampler, using bins array from there. - G4KaonNucSampler: Sublcass of G4CascadeSampler<31>, replaces previous G4CascadeSampler, using bins array from there. - G4Cascade*Channel.hh: Change all typedefs to pass appropriate of two new samplers in template. - G4ElementaryParticleCollider.cc: Replace long "if (is==)"-cascades with switch blocks. Move all getOutgoing calls (for pions and nucleons) into one function, and call it from outside multiplicity checks. Use G4CascadeInterpolator for angular distributions. Set modelID=3 in all G4InuclParticle constructions. 14 May 2010 Michael Kelsey (hadr-casc-V09-03-34) ------------------------------------------------ Extract lookup tables from G4PionSampler and G4NucleonSampler into individual "classes" defined and initialized with G4CascadeData. - G4CascadePi{Plus,Minus,Zero}{P,N}Channel.hh: Six new typedefs defined as with the existing G4CascadeXXXChannel, to replace G4PionSampler. - G4CascadeT33piNChannel.cc: Lookup tables for both PiPlusP and PiMinusN, implemented as with existing G4CascadeXXXChannel, from G4PionSampler.cc. - G4CascadeT31piNChannel.cc: Lookup tables for both PiMinusP and PiPlusN, implemented as with existing G4CascadeXXXChannel, from G4PionSampler.cc - G4CascadeT11pizNChannel.cc: Lookup tables for both PiZeroP and PiZeroN, implemented as with existing G4CascadeXXXChannel, from G4PionSampler.cc - G4Cascade{PP,NP,NN}Channel.hh: Three new typedefs defined as with the existing G4CascadeXXXChannel, to replace G4NucleonSampler. - G4CascadeT1NNChannel.cc: Lookup tables for both p-p and n-n scattering, implemented as with existing G4CascadeXXXChannel, from G4NucleonSampler.cc - G4CascadeT0npChannel.cc: Lookup tables for p-n scattering, implemented as with existing G4CascadeXXXChannel, from G4NucleonSampler.cc - G4CascadeFunctions.hh, .icc: Pass std::vector as non-const argument to getOutgoingParticleTypes() instead of returning internal buffer. - G4CascadeSampler.cc, G4FinalStateSampler.cc: Add some checks in findFinalStateIndex, fillSigmaBuffer, and sampleFlat(), such that single-entry ranges don't go through the analysis, just return index 0. - G4ElementaryParticleCollider.cc: Follow change to getOutgoingParticleTypes() in generateStrangeChannelPartTypes(). Replace all uses of G4PionSampler and G4NucleonSampler with new channel "classes". 14 May 2010 Michael Kelsey (hadr-casc-V09-03-33) ------------------------------------------------ Continue consolidation of two-body collision lookup tables. Unify interfaces between pion/nucleon and kaon/hyperon samplers. - G4CascadeData: Many changes to support use as data class for both kaon/hyperon and pion/nucleon tables (migration will be next tag): 1) Add new first argument to template with number of bins in energy interpolation. This replaces the (temporary) use of G4CascadeSampler::energyBins within the class definition. 2) Add two additional template arguments, N8 and N9, with default values of zero. These will be used by the pion/nucleon tables, but not by the existing kaon/hyperon tables. 3) Define additional arrays for 8- and 9-body final states, using conditional dimensioning (e.g., if N8==0, use [1]). Define second 9-body constructor to accept and initialize the new arrays. 4) Eliminate static initialization of index[], moving it into initialize(). Template specialization can't be used with data! 5) Add separate "sum" (summed N-body cross-sections) and "tot" arrays (measured inclusive xsec). Latter is a const-ref, initialized to "sum" if not provided as ctor argument, with two new ctors as needed. 6) Add accessor to return maximum multiplicity (NM+1). - G4CascadeFunctions.hh: Add second template argument to specify which "final state sampler" is the base class. Use both T::data.tot and T::data.sum in GetMultiplicity(), to support sum/tot comparisons in pion/nucleon channels. Extend GetOutputParticleTypes() to support up to multiplicity 9. - G4CascadeFunctions.icc: Implementations of template class functions. - G4CascadeXXXChannel.hh: Add "31," as initial template argument for Data. Add G4CascadeSampler as second template argument in G4CascadeXXXChannel typedef. 14 May 2010 Michael Kelsey (hadr-casc-V09-03-32) ------------------------------------------------ Continue revisions to two-body collision lookup tables. Make the kaon and hyperon channels compatible with the pion/nucleon samplers, before the next stage of unifying the structure. - G4CascadeSampler: NEW class, parallel to G4FinalStateSampler but with a different energy binning. Used as base class to G4CascadeFunctions, from which the cross-section and other arrays are passed. Implement findMultiplicity (cf. G4CascadeFunctions::getMultiplicity) to return the true value, not the array index. This class replaces functionality of G4CascadeChannel, which is redundant. - G4CascadeChannel: Remove all interpolation code, leaving only getQnums(). - G4CascadeFunctions: Inherit from G4CascadeSampler for interpolations, except for final-state extraction (where FS type arrays are dealt with locally, not passed). Public static functions rely on private instantiated version of class to do work, so that G4CascadeSampler gets instantiated. - G4CascadeData: Remove final template argument (total number of indices), as redundant with simple sum of multplicity indices. Use template args to dimension data member arrays (const references), and to statically initialize the start-stop index table. Make large cross-sections table G4double, not G4float. Define ctor to pass in array refs for initialization. Reduce index array to single dimension (start=index[i], stop=index[i+1]). - G4CascadeXXXChannel: All of the initial-state channel "classes" (typedef names) modified to follow G4CascadeData rewrite. In .cc file, the explicit lookup tables are static, and passed by const-ref to G4CascadeData. The "initializer" struct is dropped; with the static "data" object initialized by ctor here. - G4ElementaryParticleCollider.cc: In ::generateMultiplicity(), eliminate extra "+2" and "-2" applied to local "mul" variables. With change above, all functions return return true multiplicity, not array index. - G4FinalStateSampler: Add findFinalStateIndex() function, to make interface match G4CascadeSampler exactly. Reduce index array to single dimension. - G4PionSampler.cc, G4NucleonSampler.cc: Use new findFinalStateIndex() function in GetFSPartTypesXXX() functions. Reduce index array to single dimension (start=index[i], stop=index[i+1]). 14 May 2010 Michael Kelsey (hadr-casc-V09-03-31) ------------------------------------------------ Begin revisions to two-body collision lookup tables. This will be a major reorganization, splitting the G4PionSampler and G4NucleonSampler into separate little "classes" (typedefs) for each initial state, in the same way that the kaon and hyperon states are done now. The underlying templated and base classes will be unified across all of the channels. - G4CascadeInterpolator: NEW class to encapsulate interpolation procedure. Uses C-style arrays passed by dimensioned reference, to allow compile-time array bounds checking. Template argument is array dimension, and array of energy bins is saved by ctor. User array to be interpolated is passed as function argument. Last value interpolated, along with result, is saved, to allow fast multiple interpolations. This class is substantially more lightweight than G4PhysicsVector. - G4FinalStateSampler: Replace manual interpolation with G4CascadeInterpolator. Remove redundant sampleFlat(...) function with argument. Rename member functions in anticipation of merging with G4CascadeFunctions. - G4PionSampler.cc, G4NucleonSampler.cc: Follow use of G4CascadeInterpolator above, and drop local caching of interpolation results. Reduce offset list for cross-sections to one dimension (start=index[i], stop=index[i+1]). 11 May 2010 Michael Kelsey (hadr-casc-V09-03-30) ------------------------------------------------ Bug fixes in the two-body scattering code. - G4PionSampler.cc, G4NucleonSampler.cc: Fix long-standing bug with offset indices computed for cross-section tables. XXXindex[m][0] (start) and XXXindex[m][1] (stop) are computed in initChannels() as [start,stop] inclusive range (i.e., "for (i=start; i<=stop; i++)"), but used with G4FinalStateSampler::fillSigmaBuffer (and its predecessor code) as [start,stop) exclusive range (i.e., normal C style "for (i=start; i via const-references: G4CascadeInterface.cc G4EquilibriumEvaporator.cc G4IBertini.cc G4InuclCollier.cc G4NucleiModel.cc G4PreCompoundCascadeInterface.cc - G4CollisionOutput: Add new function to boost output lists to lab frame. 14 April 2010 Michael Kelsey (hadr-casc-V09-03-22) -------------------------------------------------- - G4CascadeInterface.cc, G4IBertini.cc, G4PreCompoundCascadeInterface.cc: In ::ApplyYourself(), do the check on K0L/K0S _before_ passing G4PartDefn to G4InuclElemPart::type(). This avoids unnecessary warning message. 14 April 2010 Michael Kelsey (temporary: kelsey-memClean3) ---------------------------------------------------------- All changes below within "cascade/" subdirectory: - G4FinalStateSampler: Replace "sigma" argument for sampling with data member, add functions to fill sigma buffer by passing in array references. Provide typedef for interpolator, and function to apply interpolation. - G4PionSampler, G4NucleonSampler: Follow changes to base class, eliminating much of the copy-and-paste code blocks via function calls. Replace G4float arrays with G4double, to support passing into functions. 13 April 2010 Michael Kelsey (hadr-casc-V09-03-21) -------------------------------------------------- All changes below within "cascade/" subdirectory: - G4InuclSpecialFunctions.hh, paraMaker.cc, paraMakerTruncated.cc: Drop return-by-value from paraMaker() and paraMakerTruncated(). Add second argument with non-const reference to output buffer for return. - G4EquilibriumEvaporator.cc: Follow changes above to paraMaker(), use references to address parms.first and parms.second, instead of copying. - G4NonEquilibriumEvaporator.cc: Follow changes above to paraMakerTruncaed(), use references to address parms.first and parms.second, instead of copying. - G4Dineutron, G4Diproton, G4UnboundPN: Inherit from G4VShortLivedParticle, per Kurashige. Thought it would eliminate G4ElectronOccupancy churn, but did not. 12 April 2010 Michael Kelsey (hadr-casc-V09-03-20) -------------------------------------------------- All changes below within "cascade/" subdirectory: - G4NucleiModel: Move function implementations from .hh to .cc. Replace manual sorting (inefficient O(N^2)) with std::sort() and simple "less-than" function for std::pair<> "partners". - G4CollisionOutput: Move function implementations from .hh to .cc. Use std::vevtor<>::insert() to add vectors together. - Replace return-by-value G4CollisionOutput with non-const reference buffer passed into xxx::collide(), in the following classes: G4BigBanger G4CascadeElasticInterface G4CascadeInterface G4ElasticCascadeInterface G4ElementaryParticleCollider G4EquilibriumEvaporator G4EvaporationInuclCollider G4Fissioner G4IBertini G4IntraNucleiCascader G4InuclCollider G4InuclEvaporation G4NonEquilibriumEvaporator G4NucleiModel G4PreCompoundCascadeInterface G4PreCompoundInuclCollider Note that some places where internal G4CollisionOutput buffers are being used (and their contents appended to the global output) have not been cleaned up yet. These will require some rearrangement of the algorithms, or/and elimination of debugging output. 09 April 2010 Michael Kelsey (hadr-casc-V09-03-16-01) ----------------------------------------------------- This modification is included in a pseudo-patch of hadr-casc-V09-03-16, without brining in any of the -17 through -19 modifications. - G4LorentzVector.cc: Protect two instances of sqrt() against tiny negative arguments (due to tiny-tiny subtractions). 09 April 2010 Michael Kelsey (hadr-casc-V09-03-19) -------------------------------------------------- All changes below within "cascade/" subdirectory: - G4InuclParticle, G4InuclElementaryParticle, G4InuclNuclei: Eliminate unused G4String ctor argument, introduced in hadr-casc-V09-03-01. Causes a lot of pointless memory churn. - G4BigBanger.cc: Fix type conversion warning I introduced by mistake. 08 April 2010 Michael Kelsey (hadr-casc-V09-03-18) -------------------------------------------------- All changes below within "cascade/" subdirectory: - G4PionSampler, G4NucleonSampler: For all ::GetFSPartTypes*() functions, eliminate return-by-value std::vector<>, and pass in non-const reference for filling in situ. Buffer is cleared. - G4ElementaryParticleCollider.cc: Follow changes above for Sampler calls. 07 April 2010 Michael Kelsey (hadr-casc-V09-03-17) -------------------------------------------------- All changes below within "cascade/" subdirectory: Replace return-by-value std::vector<> with either const-ref returns, or with use of an internal buffer which can be reused, to reduce memory churn due to copying, allocation, and resizing. - G4BigBanger: Create data buffer for lists of secondaries and momenta. Fill buffers in ::generateBangInSCM() and ::generateMomentumModules(), which are now non-const. Reference buffers in ::collide(). - G4CascadeFunctions::getOutgoingParticleTypes(): Make "kinds" a static variable (buffer), and return it by const-ref. - G4ElementaryParticleCollider: Eliminate return-by-value std::vector<> on the functions listed below, by creating data buffers for particles, momenta, and particle types. The functions become non-const and void: ::generateSCMfinalState(), ::generateMomModules() ::generateStrangeChannelPartTypes(), ::generateSCMpionAbsorption() Also, in ::generateStrangeChannelPartTypes(), use a switch statement instead of the long cascade of if-else-else. - G4NucleiModel: Several member functions have different modifications: ::initializeCascad(bullet,target) -- Replace return value with a passed-in (non-const reference) buffer to be filled. The calling code can pass in a data member, local variable, or whatever. ::generateParticleFate() -- Replace local "thePartners" variable with data member, filled below. Move "outgouing_cparticles" to data member (fix the spelling!), and return by const-ref. ::generateInteractionPartners() -- Eliminate return value; fill data member instead, to be used by ::generateParticleFate(). - G4IntraNucleiCascader.cc: Follow changes to initializeCascad() above. - G4NucleonSampler, G4PionSampler: ** DON'T KNOW WHAT TO DO HERE ** - G4WatcherGun: Return const-ref to list of watchers, instead of copy. Replace all uses of std::vector<>::resize(0) with ::clear(). The former causes deallocation/reallocation/resizing cycles, while clear() just removes content, preserving the allocated buffer. include/G4CollisionOutput.hh src/G4ElementaryParticleCollider.cc src/G4NucleiModel.cc src/G4WatcherGun.cc 07 April 2010 Dennis Wright (hadr-casc-V09-03-16) ------------------------------------------------- - fix negative energy bug in G4BigBanger, and switch to using G4NucleiProperties::GetBindingEnergy 07 April 2010 Michael Kelsey (hadr-casc-V09-03-15) -------------------------------------------------- All changes below within "cascade/" subdirectory: 1) Systematically replace pass-by-value function arguments with const-refs. This is the first step in reducing unnecessary memory churn, to be followed by replacing return-by-value std::vector<> with non-const argument buffers. include/G4CascadeChannel.hh include/G4FinalStateSampler.hh include/G4InuclEvaporation.hh include/G4NuclWatcher.hh src/G4CascadeChannel.cc src/G4FinalStateSampler.cc src/G4InuclEvaporation.cc src/G4NuclWatcher.cc 2) Fix constness on some operator== and operator!= definitions. include/G4CascadeElasticInterface.hh include/G4CascadeInterface.hh include/G4ElasticCascadeInterface.hh include/G4IBertini.hh include/G4PreCompoundCascadeInterface.hh 07 Apr 2010 Michael Kelsey (hadr-casc-V09-03-14) ------------------------------------------------ - G4Dineutron.hh, G4Diproton.hh, G4UnboundPN.hh: Reset static "theInstance" pointer to zero in (now virtual) destructor. - G4Dineutron.cc, G4Diproton.cc, G4UnboundPN.cc: Implement constructor to do the G4Ions initialization, rather than in ::Definition(). Drop use of G4ParticleTable; just monitor static pointer. Set "ShortLived" flag in G4Ions initialization, to avoid interactions with ProcessManager. - G4InuclNuclei.cc: In ::makeNuclearFragment(), set "ShortLived" flag for G4Ions, to avoid interactions with ProcessManager. 26 Mar 2010 Dennis Wright (hadr-casc-V09-03-13) ----------------------------------------------- - G4EquilibriumEvaporator.cc: remove line #include "G4types.hh" (file doesn't exist) 20 Mar 2010 Michael Kelsey (hadr-casc-V09-03-12) ------------------------------------------------ All changes below within "cascade/" subdirectory: - G4EquilibriumEvaporator.cc: Move subtraction of Q1[i] outside new GetBindingEnergy() call. - G4InuclNuclei.cc::makeNuclearFragment(): Add message warning users about non-physical creation. Use new GetBindingEnergy() function here as well (V09-03-05 didn't have this function, so wasn't included in migration). 19 Mar 2010 Michael Kelsey (hadr-casc-V09-03-11) ------------------------------------------------ All changes below within "cascade/" subdirectory: - G4InuclSpecialFunctions: Two new functions: ::generateWithRandomAngles() to encapsulate random-direction generation. This function and existing generateWithFixedTheta() take optional mass argument to produce proper four-vector. Replace duplicated random angle code with new function above, and use new optional mass argument where available: G4BigBanger.cc G4ElementaryParticleCollider.cc G4EquilibriumEvaporator.cc G4Fissioner.cc G4NonEquilibriumEvaporator.cc G4NucleiModel.cc ::G4cbrt(): Define cube-root in terms of log and exp, rather than pow(). Note that "cbrt()" can't be used, as it conflicts with on Linux. Eliminate unnecessary uses of std::pow() with fixed arguments. For example, "pow(x,3)" -> "x*x*x", "pow(x,1/3)" -> G4cbrt(x): G4BertiniRegionModel.cc G4EquilibriumEvaporator.cc G4EvaporationInuclCollider.cc G4Fissioner.cc G4IntraNucleiCascader.cc G4InuclCollider.cc G4NonEquilibriumEvaporator.cc G4NucleiModel.cc G4PreCompoundInuclCollider.cc G4RegionModel.cc bindingEnergyAsymptotic.cc bindingEnergyKummel.cc WARNING! In G4IntraNucleiCascader.cc, the Coulomb barrier was calculated using "std::pow(A, 0.333)", rather than the "exact" 1./3. This leads to per-mil differences in the value, and occasional differences in wheter an outgoing particle tunnels through. The new code is exact to double precision, and therefore fixes a bug. - Move "using" directive from all .hh files to corresponding .cc, along with some unnecessary #includes: G4BigBanger.hh, .cc G4ElementaryParticleCollider.hh, .cc G4EquilibriumEvaporator.hh, .cc G4EvaporationInuclCollider.hh, .cc G4Fissioner.hh, .cc G4IntraNucleiCascader.hh, .cc G4InuclCollider.hh G4InuclNuclei.hh G4NonEquilibriumEvaporator.hh, .cc G4NucleiModel.hh, .cc G4PreCompoundInuclCollider.hh, .cc - G4NuclWatcher.hh and .cc (new): Move implementation code from .hh to .cc. 18 March 2010 Michael Kelsey (hadr-casc-V09-03-10) -------------------------------------------------- All changes below within "cascade/" subdirectory: Missed one bug in repairs below, found when testing 4 GeV pi -> Pb. - G4Fissioner.cc: Replace incorrect G4LorentzVector ctor arguments (G4ThreeVector,m) with call to G4LV::setVectM(). 17 March 2010 Dennis Wright (hadr-casc-V09-03-09) ------------------------------------------------- Fix warning in G4InuclNuclei.cc: G4Ions:G4Ions was being called with a double (a) in its 13th argument, when an integer is required. Use G4lrint to convert. 16 March 2010 Michael Kelsey (hadr-casc-V09-03-08) -------------------------------------------------- All changes below within "cascade/" subdirectory: Fix bugs introduced during migration from G4CascadeMomentum to G4LorentzVector (see hadr-casc-V09-03-03). With these bug fixes, 2000 events generated with "ppi4GeV" test executable are equivalent to production output (GEANT 4.9.3), allowing for differences in hardwired nucleon masses. When compared with hadr-casc-V09-03-02 (which uses G4ParticleDefinition for all the particle masses) the 2000-event results are identical within floating point precision. - G4BigBanger.cc: Line 72, fix unit conversion bug, GeV/MeV vs. MeV/GeV. Replace incorrectly introduced cross-product with original vector manipulation, written with G4LorentzVector accessors. - G4CollisionOutput::selectPairToTune(): Test on "i3>0" not appropriate with G4LorentzVector indexing. Replace with failure-test on "i3<0". Also simplify final if-cascade for readability. - G4EquilibriumEvaporator.cc: Replace incorrect G4LorentzVector ctor arguments (px,py,pz,m) with call to G4LV::setVectM(). - G4IntraNuclearCascader.cc: Replace leftover momentum_out[0] with .e(). - G4InuclNuclei.cc,hh: Add new function ::makeNuclearFragment(a,z,exc), which "manually" construct a G4Ions object for cases where A/Z is not a valid stable or unstable nucleus. These unphysical objects are passed back from G4IntraNuclearCascader.cc and immediately passed to G4BigBanger for conversion to nucleons. A future change should move this action into G4INCascader and eliminate the need for unphysical nuclei. - G4LorentzConvertor::toTheTargetRestFrame(): Remove local declaration of scm_momentum, restoring access to data member with that name. - G4NucleiModel::generateQuasiDeutron(): Undo consolidation of dmom with local variables for each of the nucleon momenta. Stack corruption led to differences in unbound p-n state relative to pp and nn states. Minor updates: Changed all the "verboseLevel()" initializers to (0), via a shell script. This allows making the code uniformly verbose or quiet. include/G4NucleiModel.hh src/G4Analyser.cc src/G4CollisionOutput.cc src/G4ElementaryParticleCollider.cc src/G4FissionStore.cc src/G4Fissioner.cc src/G4IntraNucleiCascader.cc src/G4NonEquilibriumEvaporator.cc src/G4NucleiModel.cc src/G4WatcherGun.cc 16 March 2010 Michael Kelsey (hadr-casc-V09-03-DO-NOT-USE) -------------------------------------------------- All changes below within "cascade/" subdirectory: Restore version hadr-casc-V09-03-05 to HEAD of CVS in order to apply bug fixes and re-deploy migration from G4CascadeMomentum to G4LorentzVector. This reversion is tagged as a checkpoint only, and should not be used for testing or running (since it restores the known bugs in V09-03-03). The update to G4InteractionCase.hh by Gabriele Cosmo in hadr-casc-V09-03-07 is not touched by this reversion! The following CVS commands were used to perform the reversion: cvs update -j1.13 -j1.12 cascade/include/G4CascadParticle.hh cvs update -j1.4 -j1.3 cascade/include/G4CascadeMomentum.hh cvs update -j1.15 -j1.14 cascade/include/G4CollisionOutput.hh cvs update -j1.23 -j1.22 cascade/include/G4ElementaryParticleCollider.hh cvs update -j1.9 -j1.8 cascade/include/G4InuclCollider.hh cvs update -j1.19 -j1.18 cascade/include/G4InuclElementaryParticle.hh cvs update -j1.12 -j1.11 cascade/include/G4InuclNuclei.hh cvs update -j1.16 -j1.15 cascade/include/G4InuclParticle.hh cvs update -j1.13 -j1.12 cascade/include/G4InuclSpecialFunctions.hh cvs update -j1.13 -j1.12 cascade/include/G4LorentzConvertor.hh cvs update -j1.4 -j1.3 cascade/include/G4ParticleLargerBeta.hh cvs update -j1.9 -j1.8 cascade/include/G4ParticleLargerEkin.hh cvs update -j1.20 -j1.19 cascade/src/G4BigBanger.cc cvs update -j1.13 -j1.12 cascade/src/G4CascadParticle.cc cvs update -j1.6 -j1.5 cascade/src/G4CascadeElasticInterface.cc cvs update -j1.68 -j1.67 cascade/src/G4CascadeInterface.cc cvs update -j1.18 -j1.17 cascade/src/G4CollisionOutput.cc cvs update -j1.7 -j1.6 cascade/src/G4ElasticCascadeInterface.cc cvs update -j1.6 -j1.5 cascade/src/G4EvaporationInuclCollider.cc cvs update -j1.5 -j1.4 cascade/src/G4IBertini.cc cvs update -j1.3 -j1.2 cascade/src/G4InuclElementaryParticle.cc cvs update -j1.10 -j1.9 cascade/src/G4InuclEvaporation.cc cvs update -j1.3 -j1.2 cascade/src/G4InuclNuclei.cc cvs update -j1.4 -j1.3 cascade/src/G4InuclParticle.cc cvs update -j1.17 -j1.16 cascade/src/G4InuclSpecialFunctions.cc cvs update -j1.19 -j1.18 cascade/src/G4LorentzConvertor.cc cvs update -j1.5 -j1.4 cascade/src/G4PreCompoundCascadeInterface.cc cvs update -j1.4 -j1.3 cascade/src/G4PreCompoundInuclCollider.cc Intermediate versions below had bindingEnergy changes from -05 re-applied cvs update -j1.23 -j1.21 cascade/src/G4EquilibriumEvaporator.cc cvs update -j1.22 -j1.20 cascade/src/G4Fissioner.cc cvs update -j1.29 -j1.27 cascade/src/G4IntraNucleiCascader.cc cvs update -j1.24 -j1.22 cascade/src/G4InuclCollider.cc cvs update -j1.23 -j1.21 cascade/src/G4NonEquilibriumEvaporator.cc cvs update -j1.38 -j1.36 cascade/src/G4NucleiModel.cc G4ElementaryParticleCollider::particleSCMmomentumFor2to2: Restore new parametrization of elastic scattering added by D.Write in hadr-casc-V09-03-06 cvs update -j1.47 -j1.45 cascade/src/G4ElementaryParticleCollider.cc + editing 05 Mar 2010 Gabriele Cosmo (hadr-casc-V09-03-07) ------------------------------------------------ - Reinstated fix in G4InteractionCase.hh for initialisation in constructor to allow for porting on C++0x Standard. 07 Feb 2010 Dennis Wright (hadr-casc-V09-03-06) ----------------------------------------------- - back out changes from tags V09-03-00 to V00-03-05 by restoring HEAD to V09-02-11, and keeping the di-nucleon classes - replace Bertini method bindingEnergy() with G4NucleiProperties::GetBindingEnergy() in classes G4IntraNuclearCascader, G4InuclCollider, G4NucleiModel, G4EquilibriumModel, G4NonEquilibriumModel, G4Fissioner. Note that G4Fissioner still uses the Bertini method bindingEnergyAsymptotic. - G4ElementaryParticleCollider::particleSCMmomentumFor2to2 replace original (incorrect) pp, pn, nn 2-body to 2-body scattering angular distributions with a new parameterization of elastic scattering data using the sum of two exponentials 02 Feb 2010 Dennis Wright (hadr-casc-V09-03-05) ----------------------------------------------- - replace all uses of bindingEnergy (local Bertini method) with the Geant4 standard G4NucleiProperties::GetBindingEnergy(A,Z) files modified: G4IntraNucleiCascader.cc G4InuclCollider.cc G4NucleiModel.cc G4EquilibriumEvaporator.cc G4NonEquilibriumEvaporator.cc G4Fissioner.cc - note that G4Fissioner still uses Bertini method bindingEnergyAsymptotic 28 Jan 2010 Dennis Wright (hadr-casc-V09-03-04) ----------------------------------------------- - fix unused variable warnings in G4InuclParticle.hh, .cc and G4NonEquilibriumEvaporator.cc 26 Jan 2010 Michael Kelsey (hadr-casc-V09-03-03) ------------------------------------------------ All changes below within "cascade/" subdirectory: - G4ParticleLargerBeta.hh: Fix to use of CVS "Name" tag; no code changes. - G4CascadParticle: Replace the position std::vector<> with G4ThreeVector. - G4NucleiModel: Replace all std::vector<> coordinates with G4ThreeVector, and use vector math for computations. Remove all use of G4CascadeMomentum (a simple container with a C-style four-element array) with G4LorentzVector. This is a fairly invasive change, since G4CascMom was used for all of the three- and four-vector operations throughout the Bertini code: include/G4CascadParticle.hh include/G4CollisionOutput.hh include/G4ElementaryParticleCollider.hh include/G4InuclCollider.hh include/G4InuclElementaryParticle.hh include/G4InuclNuclei.hh include/G4InuclParticle.hh include/G4InuclSpecialFunctions.hh include/G4LorentzConvertor.hh src/G4BigBanger.cc src/G4CascadParticle.cc src/G4CascadeElasticInterface.cc src/G4CascadeInterface.cc src/G4CollisionOutput.cc src/G4ElasticCascadeInterface.cc src/G4ElementaryParticleCollider.cc src/G4EquilibriumEvaporator.cc src/G4EvaporationInuclCollider.cc src/G4Fissioner.cc src/G4IBertini.cc src/G4IntraNucleiCascader.cc src/G4InuclCollider.cc src/G4InuclElementaryParticle.cc src/G4InuclEvaporation.cc src/G4InuclNuclei.cc src/G4InuclParticle.cc src/G4InuclSpecialFunctions.cc src/G4LorentzConvertor.cc src/G4NonEquilibriumEvaporator.cc src/G4NucleiModel.cc src/G4PreCompoundCascadeInterface.cc src/G4PreCompoundInuclCollider.cc The new code is not yet entirely "correct," since Bertini also does a lot of operations by way of three-momentum, imposing masses (and hence energy conservation) separately, after the fact. 20 Jan 2010 Gabriele Cosmo -------------------------- - G4InteractionCase.hh: Minor fix in initialisation in constructor to allow for porting on C++0x Standard. 20 Jan 2010 Michael Kelsey (hadr-casc-V09-03-02) ------------------------------------------------ - G4LorentzConvertor.hh: Fix scm_momentum data member to be G4ThreeVector (as used in previous versions) rather than G4LorentzVector. NOTE: I have *retagged* cascade/include/G4LorentzConverter.hh and this History file, rather than creating a new tag, since these are private development only, not public releases. 12 Jan 2010 Michael Kelsey (hadr-casc-V09-03-02) ------------------------------------------------ All changes below within "cascade/" subdirectory: - G4CascadeMomentum: Replace use of static G4LV variables within functions with mutable data member of object; this does introduce more memory thrashing, but the plan is to get rid of the whole thing anyway. Improve implicit casting and add assignment from G4LV. - G4LorentzConverter: Change function signatures to accept G4LV as input, using implicit cast to convert existing G4CascadeMomentum argument passing. Use G4LV internally throughout, again using implicit cast to return G4CascMom values. This substantially increases (temporarily!) memory thrashing. Simplify ::rotate() functions to use G4LV and G4ThreeVec operations rather than array index gymnastics. Move some function implementations out of .hh file into .cc. - G4ParticleLargerEkin.hh: Fix use of CVS "Name" tag. No code changes. 12 Jan 2010 Michael Kelsey (hadr-casc-V09-03-01) ------------------------------------------------ All changes below within "cascade/" subdirectory: - G4ParticleLargerBeta, G4ParticleLargerEkin: Add additional operator() which takes pointers (for future mods to reduce ctor/dtor cycling), and fix ordering bug in beta sorting. Add debugging printout togged with preprocessor flag. - G4InuclParticle, G4InuclNuclei, G4InuclElementaryParticle: Rewrite to carry G4DynamicParticle data member, and to instantiate particle properties via G4ParticleDefinition subclasses. This is first stage in eventually eliminating the G4InuclParticle stuff entirely in favor of direct use of G4DynamicParticle for internal propagation. These changes have been testing using debugging output on the production (4.9.3) code compared to the above changes. |diff| shows mostly identical results, with occasional ~1e-5 floating point differences. 08 Jan 2010 Michael Kelsey (hadr-casc-V09-03-00) ------------------------------------------------ All changes below within "cascade/" subdirectory: - G4BertiniNuclearModel: REMOVE this class from the HEAD, and hopefully all future tags. It is redundant with the G4NuclearModel class, and is not used anywhere in the G4 distribtion; the latter is referenced in both regular G4 code and in examples. - G4Diproton, G4Dineutron, G4UnboundPN: New G4ParticleDefinition subclasses, which implement the Bertini-specific dibaryon states. These are not used anywhere as yet, but will be used in future modifications to the G4InuclParticle subclasses. - G4CascadeMomentum: Add interface to create from and cast to G4LorentzVector. Will be used (in future) by G4InuclParticle modifications, and provides a transition to eliminating this class entirely. 1 Dec 2009 Dennis Wright (hadr-casc-V09-02-11) ---------------------------------------------- - G4PionSampler, G4NucleonSampler: change loop variable in ctor from i to j in order to satisfy Windows compiler 11 Nov 2009 Dennis Wright (hadr-casc-V09-02-10) ----------------------------------------------- - G4CascadParticle, G4InuclElementaryParticle: add integer argument to ctor to indicate which generation cascade particle belongs to. Also change G4NucleiModel and G4BertiniNucleiModel to use this. 8 Oct 2009 Dennis Wright (hadr-casc-V09-02-09) ----------------------------------------------- - G4PionSampler: use charge exchange cross section for pi0-p, go back original Bertini pi0-p elastic partial cs. Update pi0 total cross section accordingly. Improve fits to pi-p partial cs and update pi- total cross sections. - G4NucleiModel: update pi- and pi0 total cross sections 24 Sep 2009 Dennis Wright (hadr-casc-V09-02-08) ----------------------------------------------- - add class G4NucleonSampler which replaces old pp, pn, and nn partial and total cross sections also modify other classes which use them - move large arrays which are instantiated at every call of frequently used methods. They are now initialized once in constructors. - G4CascadSpecialFunctions: put copy of total cross section method in G4NucleiModel, also remove unneeded energy scale arrays (now replaced with a new one) - G4CascadeInterface: move instantiation of various collider classes outside of loop, and put on stack instead of heap - G4ElementaryParticleCollider: re-design to use G4NucleonSampler and remove instantiation of large arrays from within loops in code - G4NucleiModel: remove instatiation of large arrays from with loops, add new total cross section sampling, remove use of all but one energy scale 17 Sep 2009 Dennis Wright (hadr-casc-V09-02-07) ----------------------------------------------- - G4PionSampler: remove large static arrays - G4FinalStateSampler: remove static array pointer to G4 particle types - G4ElementaryParticleCollider: clean up 4 Sep 2009 Dennis Wright (hadr-casc-V09-02-06) ---------------------------------------------- - add assignment operator to class G4CollisionOutput 31 Aug 2009 Dennis Wright (hadr-casc-V09-02-05) ----------------------------------------------- - add class G4FinalStateSampler which was accidentally omitted from the previous tag 25 Aug 2009 Dennis Wright (hadr-casc-V09-02-04) ----------------------------------------------- - correct bug in particle ordering in G4PionSampler - clean up dead code in G4NucleiModel and G4ElementaryParticleCollider 20 Aug 2009 Dennis Wright (hadr-casc-V09-02-03) ----------------------------------------------- - create class G4PionSampler: samples partial cross sections, multiplicities and final state particle types required for pi+, pi- and pi0 scattering within a nucleus. This class uses re-evaluated pion partial cross sections and includes production of strange particle pairs. - G4CascadeSigmaPlusNChannel: correct sigma plus cross sections - G4CascadSpecialFunctions: move pion, kaon, hyperon total cross sections to this class - G4ElementaryParticleCollider: re-write to use G4PionSampler class for cross sections and multiplicities, remove method reChargering (now redundant) 15 Apr 2009 Dennis Wright (hadr-casc-V09-02-02) ----------------------------------------------- - previous tag no longer used. Bring hadr-casc-V09-02-00 back to HEAD and re-tag 21 Feb 2009 Dennis Wright (hadr-casc-V09-02-01) ----------------------------------------------- - add printCrossSection method to G4CascadSpecialFunctions - in GeElementaryParticleCollider, add high energy flag to distinguish "string-like" behavior - G4IntraNucleiCascader.cc - allow secondaries from HE interaction to leave nucleus without interacting - G4NucleiModel - get high_energy_interaction flag value from G4ElementaryParticleCollider 11 Feb 2009 V.Ivanchenko (hadr-casc-V09-02-00) ----------------------------------------------- - set absorption coefficient 1.0 instead of 0.2 inside G4CascadSpecialFunctions (D.Wright) 25 Nov 2008 Dennis Wright (hadr-casc-V09-01-10) ----------------------------------------------- - fix multiplicity sampling in G4ElementaryParticleCollider::generateMultiplicity(). Now partial cross sections are normalized to the total cross section instead of just the sum of 2-body to 6-body final state cross sections. Also fix 2-body cross sections above 7 GeV where they were too small. Fix the same cross sections which appear in G4CascadSpecialFunctions.cc 21 Nov 2008 Dennis Wright (hadr-casc-V09-01-09) ----------------------------------------------- - add some comments to cross section tables in G4CascadSpecialFunctions.cc and G4ElementaryParticleCollider.cc 24 Oct 2008 Dennis Wright (hadr-casc-V09-01-08) ----------------------------------------------- - replace GetAtomicMass() with GetNuclearMass() in cascade/G4InuclEvaporation and evaporation/G4BertiniEvaporation - V. Ivantchenko added name to G4CascadeInterface ("Bertini Cascade") 17 Oct 2008 Dennis Wright (hadr-casc-V09-01-07) ----------------------------------------------- - added Coulomb barrier plus barrier penetration in G4IntraNucleiCascader.cc 27 Sep 2008 Dennis Wright (hadr-casc-V09-01-06) ----------------------------------------------- - Fixed 4.3 compiler warnings for G4InuclElementaryParticle.hh by providing initializers for particle type and mass - Remove unused variables totscm, totlab in G4BigBanger.cc, G4ElementaryParticleCollider.cc, and unused mom1 from G4InuclSpecialFunctions.cc 22 Sep 2008 Gabriele Cosmo (hadr-casc-V09-01-05) ------------------------------------------------ - Introduced simple wrapper class G4CascadeMomentum meant to replace usage of std::vector in the cascade code, to reduce memory allocations. Courtesy of P.Elmer (princeton Univ.). - Modified cascade code to make use of G4CascadeMomentum. 3 Sep 2008 Dennis Wright (hadr-casc-V09-01-04) ----------------------------------------------- - G4ElementaryParticleCollider.cc: in method generateMultiplicity, remove large_cut which increases multiplicity from 3 to 4 abruptly at 4 GeV and above. This caused a sharp drop-off in the single pion spectra from pH reactions. The effect in heavier nuclei is small. 29 Jun 2008 Dennis Wright (hadr-casc-V09-01-03) ----------------------------------------------- - add changes made by M. Paterno, J. Kowalkowski, and M. Fischler (FNAL) to speed up code. All G4Cascade***Channel classes and related code changed. 5 May 2008 Dennis Wright (hadr-casc-V09-01-02) ----------------------------------------------- - retag hadr-casc-V09-csbug as hadr-casc-V09-01-02 30 Apr 2008 Dennis Wright (hadr-casc-V09-csbug) ----------------------------------------------- - fix cross section bug in G4CascadSpecialFunctions that returned low or zero total cross sections for pi-p, pi+n, np, and pi0 interactions 29 Apr 2008 Dennis Wright (hadr-casc-V09-01-01) ----------------------------------------------- - bring tag hadr-casc-V09-01-coula to HEAD, make official tag 22 Apr 2008 Dennis Wright (hadr-casc-V09-01-param) -------------------------------------------------- - changed pp, nn total cross section parameterization in G4CascadSpecialFunctions to more closely reflect the PDG values (old one was off by as much as a factor of 3. 3 Apr 2008 Dennis Wright (hadr-casc-V09-01-coula) ------------------------------------------------- - removed Coulomb barrier from G4IntraNucleiCascader.cc (causes unphysical spike) 3 Apr 2008 Dennis Wright (hadr-casc-V09-01-coul) ------------------------------------------------ - Added Coulomb barrier in G4EquilibriumEvaporator.cc, G4IntraNucleiCascader.cc 17 Nov 2007 Dennis Wright (hadr-casc-V09-00-02) ----------------------------------------------- - Fix angular distribution for nucleon-nucleon elastic scattering above 2.8 GeV, by modifying G4ElementaryParticleCollider::getElasticCase 25 May 2007 Dennis Wright for Aatos Heikkinen (hadr-casc-V08-03-00) ------------------------------------------------------------------- - implemented interfaces for pre-equilibrium and equilbrium evaporation models 04 May 2007 Aatos Heikkinen (hadr-casc-V08-02-00) ------------------------------------------------- - Added protection in G4ElementaryParticleCollider against negative value to sqrt(). 08 May 2006 Dennis Wright (hadr-casc-V08-00-00) ----------------------------------------------- - cascade: remove G4BERTINI_KAON conditional assembly flags. Files affected: G4ElementaryParticleCollider.hh, cc G4InuclElementaryParticle.hh G4NucleiModel.hh, cc G4CascadeInterface.cc G4IntraNucleiCascader.cc - cascade (Pekka Kaitaniemi): G4ElasticCascadeInterface: derive from G4VIntraNuclearTransportModel instead of G4HadronElastic. Check for case when no elastic scattering occurs. If so, return original bullet and target. 24 Nov 2005 Dennis Wright (hadr-casc-V07-01-00) ---------------------------------------------- - cascade (bertini-V07-01-00 by Aatos Heikkinen) elastic scattering interface added: G4ElasticCascadeInterface.hh, .cc added G4CascadeInterface.hh modified