Recent Releases of nestpy
nestpy - Version 2.4.0 August 14, 2023
New Physics Modeling:
- Kr83m models and defaults revised: closer to first principles and less confusing. (Matthew Szydagis, LZ / UAlbany)
- Skewness modeling off by default (in execNEST, not in NEST.cpp), but skew fits still on in order to capture the intrinsic skewness
New Code Features:
- Standard detector now LZ SR1 not LUX Run03 any longer, and secondary analysis header filed created (..._G2) with carefully selected defaults to cover both LZ SR1 and XENONnT SR0 without warnings or errors.
- GetYieldERWeighted function no longer has fixed weights: both the energy- and field-dependent weights are now adjustable
- New bash script tracker.sh in examples subfolder for simulating muons, with many comments, features, and reminders, and a smart interplay with the verbosity flag.
- To better aid in mimicking a PLR, rootNEST leakage calculation now allows NR acceptance other than 50%, Feldman-Cousin mean versus median glitch solved, plus many other rootNEST fixes for limit setting
- Xenoscope latest results on the dependences of longitudinal diffusion and electron drift velocity on E-field incorporated within new +/- 1 sigma alternative models structure.
- LArSoft Integration, with errors addressed in LArNEST examples by adding in the missing dx parameter to the FullCalculation function (Nick Carrara, DUNE / UC Davis)
- Replaced sprintf() function w/ snprintf() everywhere so new Macs stop complaining
Miscellaneous Bug Fixes:
- rootNEST now ignores bins with outlier log(S2/S1) values when calculating reduced chi^2 for GoF (Kian Trengove, LZ / UCLA)
- Repaired glitch where Nph/keV and Ne-/keV for muons were infinite, and NaN true muon energy solved.
- Exponential energy spectrum feature in execNEST restored.
- All long long int versus int64 and long long int versus long int warnings eliminated.
- Ion decays from primaries with zero kinetic energy now trigger the creation of lineages in Geant4 (Jason Brodsky, nEXO / LLNL)
- Inconsistencies in CMake Configuration Instructions made consistent (Lukas Gerritzen, MEG / Tokyo)
(NESTv2.4.0beta overlay in cyan and green)
- C++
Published by mszydagis almost 3 years ago
nestpy - Version 2.3.12 January 27, 2023
- Fano factor for all ER (betas and gammas) now a free parameter (combined-E scale) with a default of 1 and no energy or field dependence by default any more
- Allowing reverse compatibility with the older more complicated Fano factor model (energy and field dependent) for LZ SR1 especially, by entering a negative value.
- Recombination fluctuations low-field, baseline amplitude lowered from 0.05 to 0.046 everywhere, to better match the ER band widths in LZ SR1 & XENONnT SR0.
- All free-param m’s (in the sigmoids) in the GregR beta ER model are now settable by the end user. Use -1’s to get the defaults
- A bug fix within the Liquid Argon modeling: alpha-particle light yields increased after double-counting of quenching was addressed (Kate K., MEPhI)

- C++
Published by mszydagis over 3 years ago
nestpy - Version 2.3.11 Sept. 8, 2022 (XENONnT ER paper & LZ NR (WIMP) paper better matched)
New Physics Modeling:
- NR and ER band widths reduced to more closely match (still not perfect) both XENONnT for ER (https://arxiv.org/abs/2207.11330) and LZ for NR and ER (https://arxiv.org/abs/2207.03764); matching historical data like LUX Run03 will now require increased widths using linear noise terms (Greg Rischbieter, LZ/UMich)
New Code Features:
- Added detector for XENONnT’s first dark-matter-search run, SR0 (Min Zhong, XENON/UCSD)
- Overhaul of LArNEST especially for fluctuations modeling (Nick Carrara, DUNE/UCDavis)
Miscellaneous Bug Fixes:
- Work function properly sourced if a free parameter (loopNEST) for use in combined-scale energy reconstruction formula (Kirsten McMichael, nEXO/RPI)

- C++
Published by mszydagis over 3 years ago
nestpy - Version 2.3.10 Aug 13 ’22 (LZ SR1 params; generic leakage script)
New Physics Modeling:
- SE mean size based on loop not EL yield x g1_gas; loop size can be changed from one location now (Matthew Szydagis, LZ/UAlbany)
New Code Features:
- Bash script added for rapidly calculating the ER leakage fraction as a function of the drfit electric field (Matthew)
- Updated the S1 and S2 linear noise warnings for >100% instead of >10% to catch people confusing % and fraction (Greg Rischbieter, LZ/UMich)
- Added detector file for LZ’s 1st WIMP-search run (SR1) and removed virtual declaration of functions in LZ_SR1.hh (Greg R.)
Miscellaneous Bug Fixes:
- Removed glitch whereby loopNEST was stuck on tritium as source, and provided more instructions (Kirsten McMichael, nEXO/RPI)
- C++
Published by mszydagis almost 4 years ago
nestpy - Version 2.3.9 July 7, 2022 (modifiable skew, new halo mod #s, eff script)
New Physics Modeling: * Skewness can be turned off and on now for ER just like for NR. For on -> old model or fixed (Quentin Riffard, LZ/LBNL) * Older beta model is default for gaseous Xenon, a better fit to old world data at the keV scale (Eric Church, DUNE/PNNL) * New dark matter halo model defaults, bringing NEST up to date on WIMP and Sun v's (Baxter et al., arXiv:2105.00599)
New Code Features (Matthew Szydagis, LZ/UAlbany): * Verbosity level is not a Boolean any more but an integer, easily allowing different amounts * A bash script is included in the examples subfolder now for studying efficiency vs. E * rootNEST no longer quits out if efficiency fit bad but asks user what they want to do instead * rootNEST now allows for custom upper limits on the number of signal evts, for PLR mimicry
Miscellaneous Bug Fixes: * Fluctuations adjust for difference in width from truncated Gaussians for PE not just mean * Complaint that position resolution too poor does not activate until above S2 (top) of 40 PE * In the dE/dx-based model the minimum LET is now 1.0 MeV/cm not 0 to avoid weirdness

- C++
Published by mszydagis almost 4 years ago
nestpy - Version 2.3.8 June 11, 2022
Code Quality and/or Miscellaneous Bug Fixes:
- Geant4 code variable name consistency with rest of NEST, and relativistic energy in G4 (Paola Ferrario, PETALO/Basque Foundation for Science)
- More complete installation directions for Geant4 within NEST (Eric Church, DUNE/PNNL)
- Errors are always reported as NEST first in numerator, so e.g. '+' means NEST is too high in mean or width, while '-' means too low.
New Features and New Physics (Matthew Szydagis, LZ/UAlbany):
- Gaussians are now explicitly one of three possible implementations: normal, no negative but 0 pileup allowed, and re-sampled truncation: rare corner cases repaired as a result. Band means impacted due to changed S2 photo-electron normalization but only by O(0.1%). Very minor changes to the chi^2 validations with the LUX Run03 3H and D-D bands.
- S2 longitudinal diffusion model updated based on issue #155 to be higher at high fields, but also higher at low fields (a very different shape). Data in literature remain contradictory, so the Boyle model is preserved as an option, which does match LUX Run02 (surface) better.
- The MIP model has a default Fano-like factor of 1.00 now for total quanta, but F_s = 200 for scintillation versus ionization for the anti-correlation "slosh"

- C++
Published by mszydagis almost 4 years ago
nestpy - Version 2.3.7 May 9, 2022 (flexible ER widths; LArSoft compatibility)
Code Quality and/or Miscellaneous Bug Fixes:
- Keep e- momentum unit vector in Geant4 (Paola Ferrario, PETALO/Basque Foundation for Science)
- Parameters for fluctuations are now free for the beta model, with free-param vectors named more sensibly (Greg Rischbieter, LZ/UAlbany)
- LArSoft-compatible code added for neutrino experiments (Nick Carrara, DUNE/UCDavis)
- Annoying warning for negative NR yield in GXe removed (Matthew Szydagis, LZ/UAlbany)
New Physics: * NONE! (same validation table as v2.3.6 release)
- C++
Published by mszydagis about 4 years ago
nestpy - Version 2.3.6 Apr 11, 2022 (vertical cosmics; Geant field in any direction)
Code Quality and/or Miscellaneous Bug Fixes: * Geant4.9.11 & C++17 compatibility achieved (Paola Ferrario, PETALO/Basque Foundation for Science) * Multiple scatter code warning addressed: unused variable (Greg Rischbieter, LZ/UAlbany)
New Physics: * Perfectly vertical MIP tracks now work, and use latest beta model (Greg Rischbieter, LZ/UAlbany) * Field in G4 in any direction not just vertical but e.g. radial OK, ala (n)EXO and PETALO (Paola Ferrario)

- C++
Published by mszydagis about 4 years ago
nestpy - Version 2.3.5 Feb 9, 2022 (dE/dx yields func for muons + loopNEST, >=2 scatters exec)
Code Quality and/or Miscellaneous Bug Fixes: - random exponential smarter sampling for small ranges especially for Kr83m times (Scott Kravitz, LZ/LBNL) - D-D energy spectrum user-settable, serving as example for any NR calibrations (Greg Rischbieter, LZ/UAlbany) - New truncated Gauss option, w/ truncation at 0 in 1st usage to solve S2 corner case (Scott Kravitz, LZ/LBNL)
New Physics: (Matthew Szydagis, LZ/UAlbany and Greg Rischbieter) - dE/dx-based yield code moved (execNEST->NEST.cpp) for accessibility. Muons, MIPs, LIPs; random positions - Initial or average dE/dx allowed, and use of ESTAR or custom power law, with variation around a mean dE/dx - loopNEST for ER restored, with 1st-principles mod TIB model of recombination parameters for sustainability - New multiple scatter tool allows for creation of 2+ ER-like/NR-like scatters, or mixed for inelastic, Migdal, etc.

- C++
Published by mszydagis over 4 years ago
nestpy - Version 2.3.0 Nov 11, 2021 (e-EE, binom rand, Pb-206, Kr83m)
New Physics: - Carried over from v2.3 beta: A new binomial random number generator (C++ default library), e- EE models, beta model with new yields and fluctuations, non-beta-ER (XELDA). - New beta model is default regardless of E-field, but old one is still accessible - ER model (betas and gammas weighted) is its own function, callable - Pb-206 ion coming off wall from alpha decay has correct Ly and Qy versus field (Thomas-Imel box model for recomb) - The electron extraction efficiency model now includes “optimistic” high e- EE Aprile/PandaX fits (activatable with EPS_GAS negative)
Code Quality and/or Miscellaneous Bug Fixes:
- C++11 => 17 default, README updated with all new versioning requirements, but old gcc and cmake versions requested to allow backwards-compatibility with nestpy. std::clamp still doesn’t work, so similar function written by hand
- 1.1 => 1.08 for increasing Qy to match new Zurich W-value measurement, but with new more logical variable names both deep in code and in detector file for user, and with one factor universal in NEST.cpp; general variable renaming for greater clarity
- Numerous cosmetic and aesthetic changes to code, including unused variable removal, while spacing and tabbing made Google clang-format (with shell script for that now included with NEST), if/else Mac dangle warning addressed
- Kr83m yields same but code overhauled to allow min versus max time separation flexibility and easier data comparison, with bug squashed where wrong error message got replayed
- NEST is now ~30% faster, cf. v2.2.4, at least when using gcc 7+, despite the new binomial fluctuation function!
Human Credits:
- Chris, Sophia, Kirsten, Nishat, Greg R., Robert James, Jacob McLaughlin, anyone else I (Matthew) forgot to thank. LZ + XENON + nEXO.

- C++
Published by mszydagis over 4 years ago
nestpy - Version 2.3-beta Oct 10, 2021 (new beta model, non-beta ER, new W)
- Beta model updated to work with LUX C-14 (medium E-fields) in addition to XENON1T Rn-220 calibration, < 100 V/cm (Greg Rischbieter, Matthew Szydagis, Vetri Velan, and Quentin Riffard of LZ)
- Non-beta (L-shell and M-shell) ER data now matched, from the XELDA experiment, with weighting of beta and gamma models (Sophia Farrell, Rice/XENON and Greg R. UAlbany/LZ)
- Work function of 11.5 eV (EXO-200, Zurich) can now be more accurately reproduced with the "remove quanta" flag set to false, matching the EXO and Baudis (new) data sets (Kirsten McMichael, RPI/nEXO and Matthew Szydagis, UAlbany/LZ)
- Systematic error taken into account for 3D XYZ position reconstruction with S2, per LUX Mercury paper (Claudio Silva, Coimbra/LZ).
- Made the default S1 calculation mode hybrid instead of full, for faster simulation of large-energy (e.g., MeV-scale) events
- Tweaked the default detector example (LUX Run03) to work with the latest models and reproduce D-D and 3H bands perfectly still, while also adding units to this LUX detector header file (Szydagis)
- Binomial random number generator now uses default C++ library (Robert James, LZ). Code is a bit slower now (only by ~10%) but is more precise, and matches python, Flamedisx
- The e- ext eff from liquid to gas is now based on both E-field (in liquid) and temperature, not field alone, combining dozen data sets spanning decades, to address concern raised by Sergey Pereverzev, LLNL. So, it's NOT just PIXeY or LLNL, etc.
- C++
Published by mszydagis over 4 years ago
nestpy - Version 2.2.4 September 11, 2021 (gcem, internal versioning, G3)
- Fixed gcem target for external usage (Quentin Riffard, LBNL/LZ)
- Updated the project version, changing to automatic version number pulling for the future and fixing the regular expression for the version
- Updated the CMake lists text file
- Added a simple / generic G3 detector for projection studies for post-XENONnT / post-LZ (LUX Detector Performance group)
- C++
Published by mszydagis over 4 years ago
nestpy - Version 2.2.3 August 9, 2021 (execution speed, code quality/style)
- Replaced useTiming variable by an enum and made the GetS1 result a class member. Separated the S1 and S2 calculation modes.
- Made GetS1 return a ref to avoid vector copy, while also adding gcem support and constexpr to offload some redundant operations
- Made the GetS2 results a private member returned by reference, while also making GetS1 and GetS2 results "const"
- Removed useless, unused variables that caused a lot of memory allocation/deallocation; result of all this and the above: +~1-5% faster
- Updated the parametric S1 calc to account for the truncated-Gaussian SPE and DPE distributions, making it more consistent with "full"
- Changed hybrid-mode transition to be 100 keV, ~500 photon hits in modern TPCs, instead of hits directly, creating a smooth transition
- Efficiency adjustment in the S1 parametric mode that further makes the parametric and full modes (previously useTiming -1,0) closer.
- Changes driven by Quentin Riffard (LZ/LBNL) & Greg Rischbieter (LZ/UA), with ideas from Matthew (UA) & Luke Kreczko (Bristol)
- C++
Published by mszydagis almost 5 years ago
nestpy - Version 2.2.2 July 7, 2021 (high-energy LXe NR patch)
Code Quality and/or Miscellaneous Bug Fixes:
• Deleted unused redundant line in GetS1 that re-calculated the drift time (Quentin Riffard, LBNL/LZ) • Only print most error and warning messages if verbosity on (Quentin Riffard, LBNL/LZ) • Updated TravisCI link in README and added note about OSX builds (Chris Tunnell, Rice/XENON) • Use of abs value func standardized, lines broken up, multi-line string for cerr (Matthew at behest of Luke Kreczko, Bristol/LZ)
New Physics:
• Liquid Xe model for NR is now better behaved at few hundred keV and few hundred in S1: no odd increase in band width caused by Nex/Ni zeroing out and kinking the recombination probability. Mean yields model unchanged, nor recombination fluctuations / skewness. (Matthew and Greg R., UAlbany/LZ)
- C++
Published by mszydagis almost 5 years ago
nestpy - Version 2.2.1.patch02 June 1, 2021 (all small open issues closed)
Code Quality and/or Misc Bug Fixes:
- Added default density argument for LXe case, forcing an argument re-ordering (Sophia)
- Moved position of "delete detector" in execNEST to solve python problem (Albert Baker, Greg R.)
- Approx eff func for single phe made simpler, for FlameDisx (Robert James, Sophia, Matthew)
- More robust rule used for when to approximate binomial as Gaussian (Sophia, Greg R.)
- Warn that you are in a region of too-low time between S1a and S1b for Kr83m only 1x (Sophia)
- Bad-order if-statements simplified with a min within a max for <0, >1 checks (Luke K., Matthew)
New Physics:
- Liquid Ar model for ER fits all the data better now, in both energy and dE/dx bases (Kate K.)
- C++
Published by mszydagis about 5 years ago
nestpy - Version 2.2.1patch1 April 9, 2021 (Small Patch)
New “Physics”: * More natural handling of EXO’s W measurement, where extra quanta generated, then removed * Time-dep signals can be defined stochastically (out of order), precisely numbered, and saved * Continuous, Bethe-Bloch-style energy loss (dE/dx) for muons (& betas) implemented as tracks
Code Quality and/or Misc Bug Fixes: * LAr NR model no longer broken * Rounding err corrected where number of excitons could exceed number of photons for alphas.
- C++
Published by mszydagis about 5 years ago
nestpy - Version 2.2.1 February 28, 2021 (Minor Release)
New “Physics”:
- Quadratic noise added in quad to linear to account for high-E non-linearities (Grant B.)
- GXe now has long non-exp recomb time const for it as per real data (from Henrique)
- Gaussian true-energy generator to complement existing exponential and flat
- Truncated Gaussian implemented for phe, with unphysical spike at 0 removed
- Alpha model not treated as NR for EXO (for Brian Lenardo) and corrected for GXe too
- 2d radial (XY) corrections optional with flag to allow for better mimicking LUX Run04
- Ideal gas law for density and S2 size calc replaced with the van der Waals equation
- GetDensity() function allows for both liquid and gaseous Argon now (latter for GAr S2)
- Removed skew from alpha/ion recombination; made E recon and molar mass right
- Gamma-ray photoabs/Compton gen split into gamma/beta yield models (Grant Block)
- Ly reduced at all fields for LAr NR to better match 0-field (L_eff) data (Kate Kozlova)
- PMT baseline noise average made 0 in LUX example detector. Only width is non-zero
- Energy reconstruction formulae revamped to better account for effective g1 variation
Code Quality and Misc Bug Fixes:
- stdexcept header include: for throwing exceptions in some systems (Sophia Andaloro)
- All instances of == replaced w/ careful double testing to avoid corner cases (Sophia)
- Overhaul of looping in execNEST, NEST.cpp, loopNEST w/ more options, file saving
- rootNEST assumes error from omega overwhelms all others in finding skew leakages
- Compiler warnings in rootNEST and elsewhere fixed for fscanf and %l vs. %ll format
- More warning messages added for end-users to avoid cutting top off log(S2) ER band
- Kr83m warning about going below the min 100 ns separability of the 2 pulses (Sophia)
- C++
Published by mszydagis over 5 years ago
nestpy - Version 2.2.0 November 20, 2020 (full gamma model)
New Physics: * Skewness model was not really on previously, because of unit conversion mistake in work function, caught by Johanna Jakob (XENON, WWU Münster). Fixed: Vetri Velan and Matthew Szydagis (NEST/LUX/LZ) * Better gamma-handling by Grant Block (RPI/EXO) where full Compton spectrum and photoionization separate for given initial gamma energy. Improved by Luke Kreczko (Bristol/LZ) * Gushchin and Columbia electron extraction efficiencies are back, as backup options * See latest example validation plots below: bands and discrimination from first LUX science run
Code Quality and Other: * Zenodo authorship and date corrections and Travis e-mail * Bugs fixed: GXe model call, effective g1 > 1 impossible after S1 corrections * Multiple unused and uninitialized variables addressed * With help of Quentin Riffard (LZ/LUX, LBNL) more functions made static and most vectors made constant, with calls to memory address to save on copy operator time. ~5% speed-up * Massive overhaul of how errors/exceptions are thrown/handled (try, catch) by Q & Matthew, and code tidying for minimizing warnings across OSes/compilers * ~15% speed up by restoring NEST’s original numerical recipe for Gaussian random numbers in place of the C++ normal random number generator * rootNEST no longer hangs when given WIMP or Kr83m, with latter also featuring improved error handling system given its unique features * execNEST warns you again now if gamma-X is causing you to lose S1 + S2 events * ++ and -- operators reversed (e.g. i++ -> ++i) for efficiency. -Aaron Higuera (XENON, Rice) and Sophia Andaloro (XENON/NEST, Rice)

- C++
Published by mszydagis over 5 years ago
nestpy - Version 2.2.0 BETA November 8, 2020 (full skew model really on)
- Bugs fixed: GXe model call, effective g1 > 1 impossible after S1 corrections
- Skewness model was not really on previously, because of unit conversion mistake in work function, caught by Johanna Jakob (XENON, WWU Münster). Fixed: Vetri, Matt
- Multiple unused and uninitialized variables addressed
- With help of Quentin Riffard (LZ/LUX, LBNL) more functions made static and most vectors made constant, with calls to memory address to save on copy operator time. ~5% speed-up
- Massive overhaul of how errors/exceptions are thrown/handled (try, catch) by Q & Matthew, and code tidying for minimizing warnings across OSes/compilers
- ~15% speed up by restoring NEST’s original numerical recipe for Gaussian random numbers in place of the C++ normal random number generator
- rootNEST no longer hangs when given WIMP or Kr83m, with latter also featuring improved error handling system given its unique features
- execNEST warns you again now if gamma-X is causing you to lose S1 + S2 events
- ++ and -- operators reversed (e.g. i++ -> ++i) for efficiency. -Aaron Higuera (XENON, Rice) and Sophia Andaloro (XENON/NEST, Rice)
- Very early, preliminary alpha test of liquid argon models added
- C++
Published by mszydagis over 5 years ago
nestpy - Version 2.1.2 October 1, 2020 (Patch Release)
- Diffusion coefficient access (T dependence allowed) + new high-field diffusion model + Garfield integration (Ryan L.)
- Polymorphism: With negative random seed (just not -1) can now force execNEST into printing mean Nph, Ne if desired
- Average WIMP velocity correction: earth and sun deconvolved (Juergen R.)
- Pulse shape executable overhauled again: S2 width based only on left half (early times)
- Warnings for when FitS1, FitS2, FitEF left at LUX (Run03, default) values unintentionally
- Related to above bullet: Position resolution check made more explicit: Greater than 100mm, at low radii, means wrong
- proton-proton chain solar neutrinos (ER) and atmospheric neutrinos (NR) added as additional custom energy spectra, for G3
- Day 0 = January 1st for WIMPs, with peak on June 1 (for annual modulation analyses: Jack G.)
- C++
Published by mszydagis over 5 years ago
nestpy - Version 2.1.1 August 20, 2020 (Patch Release)
- README and make files consistent on min CMake and ROOT versions required. Typos corrected.
- Example bash shell scripts now get installed properly into the build directory instead of staying in the examples subfolder
- More user-definable variables at run-time, reducing the new for changes to the code itself and recompiling
- Better handling of skewness = 0 case (Gaussian) and extended validity range of non-zero skew to all energies and fields studied: higher energies and fields than in v2.1.0 (out to C-14 endpoint, and Z3 FSR's 4 kV/cm)
- rootNEST: option for band medians instead of just means, stronger fitter, improved chi^2 calc (manual for Gaussian fits)
- random X,Y but fixed Z position possible again for events.
- Charge loss can now be separately simulated for wall events such as Pb-206 implanted ions
- Livermore work incorporated: alternative electron extraction efficiency to PIXeY's is a secondary option, and new SE BG power law
- testNEST has been renamed to "execNEST" and it is made extremely clear how it does "everything"
- GetS1() and Get(S2) no longer have double[3] variables for positions which were inhibiting their python compatibility
- C++
Published by mszydagis almost 6 years ago
nestpy - Version 2.1.0 June 23, 2020 (minor fixes+updates from beta-testing of pre-release)
- Final updated ZEPLIN-III FSR detector parameter file numbers and values, from Henrique Araujo
- Greater flexibility in Kr83m yield function: end-user can specify a specific time between S1a and S1b
- The width of single-electron (SE) S2 pulses only calculated when verbosity is true.
- Skewness model restricted to closer to WIMP search and EFT energy ranges to avoid over-skew glitch on some OSes
- Geant4 bug corrected with photons being reported in new event from old one (Jason Brodsky, based on work of Paola Ferrario)
- README/comments/overall general documentation overhauled, by Greg Rischbieter
- runNESTvec makes both C++ code (testNEST) and python (when calling this func) more flexibility and user-friendly: Xin Xiang
- Pulse shape executable overhauled to be user-friendlier, less crash-prone, and more complete (S2 pulse widths included now)
- Pb-206 heavy ion yield model has deeper theoretical underpinning, for use in wall BGs (Nishat Parveen)
- S2 bottom easier to switch to, from default of S2 total for analysis
- The CMake file has been reworked, simplified, and modernized, by Luke Kreczko of LZ.
- C++
Published by mszydagis almost 6 years ago
nestpy - Skewness, loopNEST, Kr83m, Rn220, LUX examples, time dependence, EXO's W, S1 Pulse Shape
- Default detector is now LUX’s first WIMP search, though XENON10 still present, and ZEPLIN-III (FSR only) and Xed (Case Western) additional examples
- Ability built in to loop over numerous free parameters and re-fit NEST to new band data, for either ER /NR, allowing one to pull out best-fit yields, with uncertainties, to one’s own data
- New skewness model in NEST.cpp core file for recombination fluctuations, primarily for ER, from Vetri Velan of LUX and Greg Rischbieter. testNEST updated to follow with skew values output to screen, and rootNEST updated to do skew-normal fits not only Gaussian. Leakage calculations revised and checked. Energy and field dependence.
- Kr83m model completely re-written post-PIXeY. Averaging over contradictory world data
- Custom energy spectra easier to add. Rn-220/Pb-212 is the fresh example (bash script)
- Time-dep variables like e- life-time, g2, g1, and E-field now permitted; annual mod (Jack Genovesi)
- W’s (e-) rho dependence revisited (but EXO’s W handled with separate flag, extra photons)
- New func runNESTvec as requested by Xin Xiang, for getting only basics out of testNEST
- Tidied up file names and dir structures, and preserved legacy NEST models as alternatives
- More virtual functions and constants for easier usage of code in others frameworks
- Modularization in calls to yields for different particle types
- Single electron calculation revised along with g2 estimation
- Faster mode of useTiming (-1) approximates individual PMT hits faster, albeit less precisely
- More professional check for conditions allowing binomial to be approximated by Gaussian
- More comments, errors, and warning messages, and generally smarter defaults. Other aesthetic and cosmetic beautifications, non-functional, but for greater usability, flexibility, and end-user readability.
- Repeat variables/functions no longer copied in rootNEST but called from central locations
- Geant4 now starts thermal electrons with the correct velocities
- Fano factor customizable for ER in its energy and field dependencies, though defaults same as before
- Recombination fluctuation models overhauled for both ER and NR, and synced up better, while maintaining flexibility for matching future data sets.
- Random seed default is 0, but now -1 option uses clock to randomize seed
- Better but simpler approximation of energy spectra like LUX’s 1st science run’s D-D
- Complete overhaul of S1 pulse shape model: correct prompt fraction for ER and NR
- Many G4 bugs addressed, documentation added by Jason Brodsky based on experiences of Paola F.
- Improved cmake for cleaner integration as git submodule in projects (allowing for git projects to auto-download and built git into the project)
- Pulse shape code for studying energy and field dependences of PSD
- Smarter ways to warn user about poor choice of parameters’ values in analysis header file, especially when recon E and/or eff coming back as 0, and S1/S2 pulses too hi/low are the culprits.
- Grid noise option added for EXO-like detectors (field non-zero, but single-phase xenon).
- rootNEST fitting and goodness of fit techniques and reporting revamped. Chi^2s include Poisson MLE and other new custom options
- Scientific notation now accepted even for integer event counts for testNEST command line input, to make inputting larger numbers of events easier
- More robust energy reconstruction for both NR (lower energies) and ER in testNEST
- Photon energy now varies at birth as it should for Xe scintillation (G4Integration)
- Detectors other than LUX Run03 covered in comments in testNEST especially for ER yields
- S1 and S2 position dependences for TBA and bottom/total ratio have examples now (LUX)
- Sample files added of efficiency vs. MC energy for both NR and betas, and re-did how rootNEST fits the efficiency curve, with more safeguards for fit failures
- Basic PMT saturation algorithm in place, while on opposite end in energy: S2-only mode smarter
- The same S1 & S2 correction maps no longer have to be used for folding vs. unfolding (Quentin Riffard)
- Molar mass settable by user with a function instead of hard-coded with #define (super for 0vbb)
- Heavy-ion model’s recombination probability (Thomas-Imel box model) improved by Nishat Parveen
- Users are warned more effectively about enormous code slow-down associated with simulating a non-uniform drift electric field in a TPC. Many more changes too numerous to list here!
- C++
Published by mszydagis about 6 years ago
nestpy - New, flexible LXe NR yields and resolution model + G4 improvements + linear Noise + much more
• Better nuclear recoil model, with all parameters free for both means and widths • ER model now includes optional Velan weighting function for mixing betas and gammas in testNEST • "Linear noise" model for both S1 and S2 for treating unknown systematics in energy resolution • Digital, integer number of PMTs hits are now saved both before and after the coincidence requirement of N photons within X nanoseconds of each other. • More robust calculation of Nex and Ni for NR for any future model, and more protections against flaws like negative recombination probability or excitons • testNEST can be linked against in external code including python, since it has named internal function now not just "int main()" • Geant4 integration vast improvements: pair production, positrons, gammas, process trigger function, position-dependent E-field within G4 • Faster random number generator (xoroshiro) • Enriched Xenon differentiated from solid better (confusion was caused by density) • Resolved return 0, 1 for no errors versus yes an error happened • beta->NEST::beta for CentOS7 ambiguity problem • Travis was not testing anything before running testNEST, but now it runs actual simulation • README improved for python and custom projects
- C++
Published by mszydagis almost 7 years ago
nestpy - Geant4 Integration Fixes and Updates
This release fixes a few bugs and implements new options in NESTProc, the NEST Geant4 Process that can be used to add NEST calculations to an existing Geant4 project.
- C++
Published by jpbrodsky over 7 years ago
nestpy - Noble Element Simulation Technique, Version 2.0 July 18, 2018 (Major Refactor)
Fast C++ simulation of different particle types in liquid, gaseous, and solid xenon
- Mean scintillation light and ionization charge yields
- Variation in total quanta, and recombination fluctuations
- Dependencies on energy, electric field strength, and density
- Pulse shape models for both S1 and S2, including e-trains
- Additional tools, for calculating leakage and limits
Not a complete list, please see the exhaustive README file included.
- C++
Published by mszydagis almost 8 years ago