Skip to content

Releases: mach3-software/MaCh3

v2.2.2

06 Aug 13:33
849ba51
Compare
Choose a tag to compare

What's Changed

Full Changelog: v2.2.1...v2.2.2

v2.2.1

14 Jul 12:52
d893ad9
Compare
Choose a tag to compare

What's Changed

Full Changelog: v2.2.0...v2.2.1

v2.2.0

26 Jun 17:00
8ba5a17
Compare
Choose a tag to compare

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

New Contributors

Full Changelog: v2.1.0...v2.2.0

v2.1.0

05 Jun 08:55
031ba04
Compare
Choose a tag to compare

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

Full Changelog: v2.0.0...v2.1.0

v2.0.0

14 May 17:20
Compare
Choose a tag to compare

What's Changed

Full Changelog: v1.5.0...v2.0.0

v1.5.0

01 May 15:49
e738aa9
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v1.4.8...v1.5.0

v1.4.8

07 Mar 10:42
61514ad
Compare
Choose a tag to compare

What's Changed

Full Changelog: v1.4.7...v1.4.8

v1.4.7

28 Feb 09:47
edc49a5
Compare
Choose a tag to compare

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

24 Feb 21:17
1c9c88d
Compare
Choose a tag to compare

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

24 Feb 16:03
f828b14
Compare
Choose a tag to compare

What's Changed

Full Changelog: v1.4.4...v1.4.5