Releases: mach3-software/MaCh3
v2.2.2
What's Changed
- tidy: Unify default values in MCMC Processor by @KSkwarczynski in #561
- tidy: Overide compiler flag by @KSkwarczynski in #560
- bugfix: minor memory leak by @KSkwarczynski in #562
- tidy: Cmake Plotting tweak by @KSkwarczynski in #564
- bugfix: Correctly set coefficents when making TSpline3 out of TSpline3_ref by @KSkwarczynski in #566
- feat: Ability to save LogLproposed by @KSkwarczynski in #565
- feat: Savage Dickey for Jarlskog by @KSkwarczynski in #567
- tidy: Set minimal allowed standard by @KSkwarczynski in #568
- tidy: bump actions/first-interaction from 1 to 2 in /.github/workflows by @dependabot[bot] in #570
- tidy: No longer print correlation in each bin for larger matrices by @KSkwarczynski in #573
- tidy: Constexpr in spline code by @KSkwarczynski in #572
- tidy: do not allow adaption to be initialsied twice by @KSkwarczynski in #571
- feat: Total Bin instead of X and Y by @KSkwarczynski in #559
- bugfix: Stop Accessing out of bound knot by @KSkwarczynski in #563
- bugfix: small fix for FD and ND cov grabbing so it's (less) hard-coded by @EdAtkin in #576
- tidy: Step Number Sanitizer by @KSkwarczynski in #577
- tidy: Stop leaking in Plot Diag by @KSkwarczynski in #580
- feat: Sample Info by @KSkwarczynski in #578
Full Changelog: v2.2.1...v2.2.2
v2.2.1
What's Changed
- feat: Sanity Check for bound getting by @KSkwarczynski in #530
- tidy: Removal of oboslete stuff and micro optimisation by @KSkwarczynski in #529
- tidy: Update test stat documentation by @KSkwarczynski in #537
- feat: SaveProposal is now configurable by @KSkwarczynski in #531
- tidy: Modify Bot Alert threshold by @KSkwarczynski in #544
- tidy: More helpfull yaml error messages by @KSkwarczynski in #538
- tidy: More verbose GPU Printer by @KSkwarczynski in #540
- feat: Stop hardcdoing names for Osc params in MCMC Processor by @KSkwarczynski in #524
- bugfix: Graph bot udpate by @KSkwarczynski in #546
- feat: Safer Combine Chains by @KSkwarczynski in #532
- tidy: Wildcard sanitizer by @KSkwarczynski in #539
- feat: Use STL over TMath by @KSkwarczynski in #534
- tidy: Imrovments to documentation by @KSkwarczynski in #547
- tidy: Use MaCh3_CUDA by @KSkwarczynski in #548
- feat: Add more options to ProcessMCMC credible region plotting by @veeramik in #549
- feat: Wrapper around Open to safegarud from missconfigured paths by @KSkwarczynski in #542
- feat: Add labels to Diagnostics plots by @henry-wallace-phys in #552
- tidy: Tweak how we change whether fixed param by @KSkwarczynski in #550
- feat: PCA sanitizer by @KSkwarczynski in #536
- tidy: Clone Data by @KSkwarczynski in #543
- feat: Chain Reweighting MetaData by @KSkwarczynski in #535
- feat: Diagnostics readme update and file name change by @henry-wallace-phys in #554
- feat: PriorPosterior Predictive by @KSkwarczynski in #541
- feat: Post Pred bot by @KSkwarczynski in #553
- feat: Do not apply special proposal for fixed params by @KSkwarczynski in #525
- feat: Sigma Var for FD by @KSkwarczynski in #515
- feat: ICPX Bot by @KSkwarczynski in #551
- bugfix: make error message in processMCMC app a bit clearer by @ewanwm in #557
- tidy: Stop Saving Adatpive So often by @KSkwarczynski in #556
- tidy: Reduce push back in Spline Binned by @KSkwarczynski in #558
Full Changelog: v2.2.0...v2.2.1
v2.2.0
Instruction
Special Proposals
Parameter flipping or circular bounds are no longer hardcoded — they are now set via the configuration file.
Users must modify the config to specify, for example:
- Systematic:
Names:
FancyName: delta_cp
SpecialProposal:
CircularBounds: [-3.141592, 3.141592]
or
- Systematic:
Names:
FancyName: delm2_23
SpecialProposal:
FlipParameter: 0.
This is important — otherwise, the code will not reproduce previous results, even though it may appear to run without errors.
Oscillation Parameters
Oscillation parameters are no longer in a separate class but now are part of ParamterHandlerGenreic
. This only requires passing the oscillation model YAML config with the remaining yaml configs.
Previously oscillation parameters had some global step scale. While in full/merged object global step scale will be different. Therefore we recommend tuning individual step scales for osc params.
Return Parameter Binning
Previously, this was a pure virtual function. Now, the entire functionality is handled within SampleHandlerFD.
Binning is now specified via the configuration file.
First, in your sample config, add the entry:
BinningFile: "Configs/Samples/Binning.yaml"
This binning.yaml can have the following form:
TrueNeutrinoEnergy: [0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5,
5.0, 5.5, 6.0, 6.5, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5]
RecoNeutrinoEnergy: [0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5,
5.0, 5.5, 6.0, 6.5, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5]
What's Changed
- tidy: Add masses to GetMassFromPDG by @Jude412 in #495
- breaking: Improve Get MC Hist Treatment by @KSkwarczynski in #498
- bugfix: Fix W2 resetting to 0 at every step by @yash-quark in #501
- tidy: Avoid doing ==xsec_cov in FitterBase by @KSkwarczynski in #497
- tidy: Update Contributing by @KSkwarczynski in #499
- bugfix: Fix Facory for more than 1D by @KSkwarczynski in #500
- breaking: Merge Osc and Generic Param Handler by @KSkwarczynski in #494
- feat: allow plotting of particle-level kinematic parameters by @Jude412 in #493
- tidy: Additional cmake options to readme by @KSkwarczynski in #504
- feat: Flexible Config getter from chain by @KSkwarczynski in #502
- feat: Do not store binning twice by @KSkwarczynski in #503
- tidy: Fitter Base updates by @KSkwarczynski in #510
- tidy: Ensure Circular Bounds are within Physic bounds by @KSkwarczynski in #507
- breaking: Turn AMCMC into proper class by @KSkwarczynski in #512
- feat: Discrete Norm parameters by @KSkwarczynski in #506
- breaking: Return Projection binning from yaml by @KSkwarczynski in #511
- feat: Store More info In Chain output by @KSkwarczynski in #508
- tidy: Bin Edeges no longer per event and add FindXBin by @KSkwarczynski in #513
- feat: Port Jarlskog by @KSkwarczynski in #509
- Merge develop into feature/nosektom/loglcalcs by @nosektom in #519
- tidy: Stale Issue Bot will no longer disturb weekends by @KSkwarczynski in #518
- feat: Bump NuOsc version by @dbarrow257 in #522
- feat: Check for bin ordering by @KSkwarczynski in #517
- feat: Add FileTo[Init,Final]PDGMap which defines PDG for given file by @dbarrow257 in #523
- feat: LogL calculations for low MC predictinos and 0 MC predictions limits, GetTestStatLLH optimization by @nosektom in #520
- feat: Fit variabel sanitiser by @KSkwarczynski in #526
- feat: Bump NuOsc version by @dbarrow257 in #528
New Contributors
Full Changelog: v2.1.0...v2.2.0
v2.1.0
Instruction
To introduce a more flexible structure that allows for future improvements (such as storing multiple samples in one object), it was decided to remove the so-called Oscillation Loop structure.
Old Code
for (unsigned int iSample = 0; iSample < MCSamples.size(); iSample++) {
for (int iEvent = 0; iEvent < MCSamples[iSample].nEvents; iEvent++) {
MCSamples[iSample].xsec_w[iEvent] = 0.;
}
}
New Code
for (int iEvent = 0; iEvent < MCSamples[iSample].nEvents; iEvent++) {
MCSamples.xsec_w[iEvent] = 0.;
}
Memory Structure Impact
This change exacerbated an already inefficient memory layout. FarDetectorCoreInfo
, which MCSamples is based on, stores multiple vectors. Accessing elements from these vectors leads to large memory jumps—especially after removing the oscillation channel.
Event Class
To address this, the FarDetectorCoreInfo
structure was updated to store single-event values rather than vectors. As a result, most of the codebase now uses:
MCSamples[iEvent].xsec_w = 0.;
instead of:
MCSamples.xsec_w[iEvent] = 0.;
Implication for Plotting Variables
This change makes storing additional variables for plotting more problematic. Therefore, we recommend that experiment-specific plotting variables either:
• Be stored in a separate object, or
• Be conditionally compiled using #ifdef
.
Example
Separate object solution could look like:
/// header file
std::vector<ExpEventInfo> ExpEvent;
std::vector<ExpAdditionalEventInfo> ExpAddEvent;
and then you
double SampleHandlerExp::ReturnKinematicParameter(KinematicTypes KinPar, int iEvent) {
double Val;
KinematicTypes Var = static_cast<KinematicTypes>(KinVar);
switch(Var) {
case kFittTimeVariable:
Val = (ExpEvent [i].Variable);
break;
case kPlottingVariable:
Val = (ExpAddEvent [i].AnotherVariable);
break;
}
return Val;
}
CleanMemoryBeforeFit
We introduced a new pure virtual function to SampleHandler.
The main aim to to have a function which deletes all auxiliary event information before fit starts. Which would give control over structures you want to have for plotting but not necessarily during the fit time.
What's Changed
- tidy: Increase usage of groups in Doxygen by @KSkwarczynski in #443
- tidy: PCA prefit intialsition now in PCA Hnadler by @KSkwarczynski in #444
- tidy: Avoid code duplicates in Sample Handler by @KSkwarczynski in #447
- breaking: Reduce Unity type weirdness by @KSkwarczynski in #449
- tidy: turn off sliglhy annoing cuda warnings by @KSkwarczynski in #445
- tidy: More flexible parameter flipping by @KSkwarczynski in #446
- tidy: Logger to readme by @KSkwarczynski in #453
- feat: Expand CodeQL to also perform GPU compilation by @KSkwarczynski in #454
- tidy: Adaptive Handler into pointer by @KSkwarczynski in #448
- feat: Oscillation Handler by @KSkwarczynski in #450
- tidy: TypeParameterBase and unifcation of GetXParsFromSampleName by @KSkwarczynski in #451
- feat: adaptive fix par interface by @henry-wallace-phys in #452
- breaking: Osc Channel Info by @KSkwarczynski in #455
- tidy: General post renaming tidy by @KSkwarczynski in #456
- feat: Doxygen interactive SVG by @KSkwarczynski in #457
- tidy: OscParams Sanity by @KSkwarczynski in #460
- breaking: Remove Oscillation Channel Loop Structure by @KSkwarczynski in #458
- bugfix: Write the covariance settings to disk before closing the file by @nosektom in #465
- tidy: Turn PCA Handler into proper class by @KSkwarczynski in #464
- breaking: Introdcue Tunes by @KSkwarczynski in #459
- bugfix: CodeQL by @KSkwarczynski in #463
- feat: Make Sure shared NuOscillator has same number of paramters by @KSkwarczynski in #466
- tidy: Minor update to logger message by @yash-quark in #474
- tidy: Do not allow adpation and PCA by @KSkwarczynski in #472
- tidy: Remove Code duplicates related to LLH scan by @KSkwarczynski in #471
- tidy: PSO and Minutit classes by @KSkwarczynski in #469
- tidy: Check Norms can't go below 0 by @KSkwarczynski in #470
- tidy: PCA Handler reniaming and update by @KSkwarczynski in #473
- bugfix: Make GetPostFitParamPlots app work again by @ewanwm in #475
- tidy: Use GetTitle instead of GetName for refering to data histograms by @yash-quark in #481
- tidy: Update leftover GetName to GetTitle in data histogram handling by @yash-quark in #484
- bugfix: No more GPU compilation warnings by @KSkwarczynski in #478
- feat: Weekly Cmake Dependancy Graph by @KSkwarczynski in #479
- tidy: Move remaining PCA Variables by @KSkwarczynski in #483
- bugfix: Improve Cachins Steps for Correlation calcautions by @KSkwarczynski in #477
- tidy: Moving Helpers from CovBase to Utils by @KSkwarczynski in #486
- feat: Expand usage of Param Group by @KSkwarczynski in #480
- tidy: Split Structs by @KSkwarczynski in #468
- tidy: More info into contriubting by @KSkwarczynski in #489
- feat: Response Fucntion Gneration by @KSkwarczynski in #485
- feat: Average Autocorrelation plotting by @henry-wallace-phys in #490
- feat: Use break when doing bin fidning by @KSkwarczynski in #491
- feat: Parameter throwing in PCA by @KSkwarczynski in #488
- feat: CI build to work with forks by @KSkwarczynski in #482
- feat: Binary search bin finding by @KSkwarczynski in #492
- feat: Event Class by @KSkwarczynski in #467
- breaking: Before fit sanitiser by @KSkwarczynski in #496
Full Changelog: v2.0.0...v2.1.0
v2.0.0
What's Changed
- breaking: Fix Setting initial steps for adaption when starting from previous chain by @KSkwarczynski in #429
- feat: Tiny efficiency improvement by @henry-wallace-phys in #430
- feat: Bot for Task Checking by @KSkwarczynski in #435
- feat: Expand Newsletter by @KSkwarczynski in #438
- feat: Ubi9 Cuda Container by @KSkwarczynski in #441
- breaking: renaming of core classes by @EdAtkin in #424
- tidy: Add some info about C++ standard and practice to contributing by @KSkwarczynski in #436
- feat: Add Tune or Correlations to Yaml by @KSkwarczynski in #434
- feat: Individual Knot Capping for Binned Splines by @KSkwarczynski in #437
- feat: ROOT Dicitonary to recude copy pasting by @KSkwarczynski in #440
Full Changelog: v1.5.0...v2.0.0
v1.5.0
What's Changed
- feat: Override EqualBinning setting when not using binnedosc by @nosektom in #384
- feat: Add configurable options for 2D likelihood scans too by @BenJarg in #383
- breaking: det id fix by @EdAtkin in #374
- bugfix: fix the index of sample llh histograms by @nosektom in #385
- bugfix: Fix typo to make CUDA work properly by @veeramik in #387
- feat: Faster Spline Loading by @KSkwarczynski in #388
- feat: LLH Cache hits by @KSkwarczynski in #389
- feat: Bump NuOscillator by @KSkwarczynski in #390
- feat: get sample name fix by @EdAtkin in #393
- feat: functional parameters by @hank-hua in #396
- feat: More robust GPU CI by @KSkwarczynski in #401
- bugfix: Properly select test statistic by @KSkwarczynski in #403
- feat: N Threas Sanity Check by @KSkwarczynski in #402
- feat: Clone Wrapper by @KSkwarczynski in #409
- tidy: explain versioning of this package in CONTRIBUTING.md by @tdealtry in #410
- bugfix: NuOsc Equal Binning Logic Change by @dbarrow257 in #411
- feat: Yaml Merging by @KSkwarczynski in #408
- feat: Ability to turn off gpu for NuOsc by @KSkwarczynski in #407
- feat: Minor RAM tweaks for spline by @KSkwarczynski in #414
- feat: Ability to speicfy "empty" bounds by @KSkwarczynski in #412
- breaking: adaptive mcmc update by @hank-hua in #405
- feat: Valgrind bot by @KSkwarczynski in #413
- feat: Notify about contributing by @KSkwarczynski in #416
- bugfix: Improve Thread Sanity by @KSkwarczynski in #417
- feat: Universal, path-independent setup by @nosektom in #421
- feat: Safer Yaml Handling by @KSkwarczynski in #419
- breaking: Add Kinematic Cut Struct by @KSkwarczynski in #420
- feat: Universal setup: bash, sh, zsh, ksh, dash by @nosektom in #423
- feat: Shared NuOscillator object for fixed binning across all samples by @dbarrow257 in #425
- tidy: Minor Yaml and Spline tidy by @KSkwarczynski in #422
- feat: Allow to override config with another config by @KSkwarczynski in #418
- feat: Update NuOscillatorSetup.cmake to use v1.3.1 by @dbarrow257 in #426
- bugfix: Fix Shared NuOsc destructor by @KSkwarczynski in #427
- tidy: Update Contibuting by @KSkwarczynski in #428
New Contributors
Full Changelog: v1.4.8...v1.5.0
v1.4.8
v1.4.7
What's Changed
- bugfix: Correctly handle duplicate modes in GetEventSplines by @dbarrow257 in #375
Full Changelog: v1.4.6...v1.4.7
v1.4.6
What's Changed
- feat: Stop the spammy message for additional splines by @dbarrow257 in #372
Full Changelog: v1.4.5...v1.4.6
v1.4.5
What's Changed
- feat: Improve Vector Casting by @KSkwarczynski in #369
- feat: Sigma Var Bot by @KSkwarczynski in #370
- bugfix: LLHScanSkipVector yaml node group inside sigma variation function by @yash-quark in #371
Full Changelog: v1.4.4...v1.4.5