From e4d33c9d0844157dcfd08f3b6abf7603b4370dad Mon Sep 17 00:00:00 2001 From: Kamil Skwarczynski Date: Mon, 30 Mar 2026 15:49:43 +0000 Subject: [PATCH 1/2] Implement data intialistion hook --- CIValidations/Benchmark/MaCh3Benchmark.cpp | 42 +++++++--------------- SamplesTutorial/SampleHandlerTutorial.cpp | 12 +++++++ SamplesTutorial/SampleHandlerTutorial.h | 4 ++- 3 files changed, 28 insertions(+), 30 deletions(-) diff --git a/CIValidations/Benchmark/MaCh3Benchmark.cpp b/CIValidations/Benchmark/MaCh3Benchmark.cpp index 537a55f..a335372 100755 --- a/CIValidations/Benchmark/MaCh3Benchmark.cpp +++ b/CIValidations/Benchmark/MaCh3Benchmark.cpp @@ -85,9 +85,9 @@ TEST_CASE("Benchmark MaCh3") { Covs.push_back(xsec.get()); // Initialise samplePDF - auto BeamSamples = MaCh3SampleHandlerFactory({"TutorialConfigs/Samples/SampleHandler_Tutorial.yaml"}, xsec.get()); - auto ATMSamples = MaCh3SampleHandlerFactory({"TutorialConfigs/Samples/SampleHandler_Tutorial_ATM.yaml"}, xsec.get()); - auto NDSamples = MaCh3SampleHandlerFactory({"TutorialConfigs/Samples/SampleHandler_Tutorial_ND.yaml"}, xsec.get()); + auto BeamSamples = std::make_unique({"TutorialConfigs/Samples/SampleHandler_Tutorial.yaml"}, xsec.get()); + auto ATMSamples = std::make_unique({"TutorialConfigs/Samples/SampleHandler_Tutorial_ATM.yaml"}, xsec.get()); + auto NDSamples = std::make_unique({"TutorialConfigs/Samples/SampleHandler_Tutorial_ND.yaml"}, xsec.get()); BENCHMARK("Beam Reweight") { for (size_t s = 0; s < Covs.size(); ++s) { @@ -95,17 +95,13 @@ TEST_CASE("Benchmark MaCh3") { Covs[s]->AcceptStep(); Covs[s]->GetLikelihood(); } - for(unsigned int ivs = 0; ivs < BeamSamples.size(); ivs++ ) { - BeamSamples[ivs]->Reweight(); - BeamSamples[ivs]->GetLikelihood(); - } + BeamSamples->Reweight(); + BeamSamples->GetLikelihood(); }; BENCHMARK("Beam Reweight w/o Osc") { - for(unsigned int ivs = 0; ivs < BeamSamples.size(); ivs++ ) { - BeamSamples[ivs]->Reweight(); - BeamSamples[ivs]->GetLikelihood(); - } + BeamSamples->Reweight(); + BeamSamples->GetLikelihood(); }; BENCHMARK("ATM Reweight") { @@ -114,10 +110,9 @@ TEST_CASE("Benchmark MaCh3") { Covs[s]->AcceptStep(); Covs[s]->GetLikelihood(); } - for(unsigned int ivs = 0; ivs < ATMSamples.size(); ivs++ ) { - ATMSamples[ivs]->Reweight(); - ATMSamples[ivs]->GetLikelihood(); - } + + ATMSamples->Reweight(); + ATMSamples->GetLikelihood(); }; BENCHMARK("ND Reweight") { @@ -126,10 +121,9 @@ TEST_CASE("Benchmark MaCh3") { Covs[s]->AcceptStep(); Covs[s]->GetLikelihood(); } - for(unsigned int ivs = 0; ivs < NDSamples.size(); ivs++ ) { - NDSamples[ivs]->Reweight(); - NDSamples[ivs]->GetLikelihood(); - } + + NDSamples->Reweight(); + NDSamples->GetLikelihood(); }; CreateChungusYaml("ChungusSystematics.yaml", 2000); @@ -175,14 +169,4 @@ TEST_CASE("Benchmark MaCh3") { NonUniformBinning->FindGlobalBin(0, KinVars, NomBins); } }; - - for (size_t i = 0; i < NDSamples.size(); ++i) { - delete NDSamples[i]; - } - for (size_t i = 0; i < BeamSamples.size(); ++i) { - delete BeamSamples[i]; - } - for (size_t i = 0; i < ATMSamples.size(); ++i) { - delete ATMSamples[i]; - } } diff --git a/SamplesTutorial/SampleHandlerTutorial.cpp b/SamplesTutorial/SampleHandlerTutorial.cpp index 45dd7fd..5ad2f0a 100755 --- a/SamplesTutorial/SampleHandlerTutorial.cpp +++ b/SamplesTutorial/SampleHandlerTutorial.cpp @@ -308,6 +308,18 @@ void SampleHandlerTutorial::FillParticles(int eventIndex, int nParticles, int PD } } + +// ************************************************ +void SampleHandlerTutorial::InititialiseData() { +// ************************************************ + // Reweight MC to match + Reweight(); + // set asimov data + for(int iSample = 0; iSample < GetNSamples(); iSample++) { + AddData(iSample, GetMCArray(iSample)); + } +} + double SampleHandlerTutorial::ReturnKinematicParameter(const int KinematicVariable, const int iEvent) const { const double* paramPointer = GetPointerToKinematicParameter(KinematicVariable, iEvent); return *paramPointer; diff --git a/SamplesTutorial/SampleHandlerTutorial.h b/SamplesTutorial/SampleHandlerTutorial.h index 87acbc2..e1cfe88 100755 --- a/SamplesTutorial/SampleHandlerTutorial.h +++ b/SamplesTutorial/SampleHandlerTutorial.h @@ -38,8 +38,10 @@ class SampleHandlerTutorial : public SampleHandlerBase // =========================================================================== const double* GetPointerToKinematicParameter(const int KinematicVariable, const int iEvent) const final; - + /// @brief Function which translates experiment struct into core struct void SetupMC() final; + /// @brief Function responsible for loading data from file or loading from file + void InititialiseData() final; void CalcWeightFunc(const int iEvent) final {return; (void)iEvent;} std::vector TutorialSamples; From d6b874e5f03244337663fcd4788c760075b58434 Mon Sep 17 00:00:00 2001 From: Kamil Skwarczynski Date: Mon, 30 Mar 2026 16:12:18 +0000 Subject: [PATCH 2/2] TargetNucleus --- SamplesTutorial/SampleHandlerTutorial.cpp | 2 +- SamplesTutorial/SampleHandlerTutorial.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/SamplesTutorial/SampleHandlerTutorial.cpp b/SamplesTutorial/SampleHandlerTutorial.cpp index 5ad2f0a..0684909 100755 --- a/SamplesTutorial/SampleHandlerTutorial.cpp +++ b/SamplesTutorial/SampleHandlerTutorial.cpp @@ -355,7 +355,7 @@ const double* SampleHandlerTutorial::GetPointerToKinematicParameter(const int Ki return &TutorialSamples[iEvent].Mode; case kOscChannel: return GetPointerToOscChannel(iEvent); - case kTarget: + case kTargetNucleus: return &TutorialSamples[iEvent].Target; default: MACH3LOG_ERROR("Unrecognized Kinematic Parameter type: {}", KinPar); diff --git a/SamplesTutorial/SampleHandlerTutorial.h b/SamplesTutorial/SampleHandlerTutorial.h index e1cfe88..1131679 100755 --- a/SamplesTutorial/SampleHandlerTutorial.h +++ b/SamplesTutorial/SampleHandlerTutorial.h @@ -51,7 +51,7 @@ class SampleHandlerTutorial : public SampleHandlerBase {"TrueNeutrinoEnergy", kTrueNeutrinoEnergy}, {"TrueQ2", kTrueQ2}, {"Mode", kM3Mode}, - {"Target", kTarget}, + {"TargetNucleus", kTargetNucleus}, {"RecoNeutrinoEnergy", kRecoNeutrinoEnergy}, {"OscillationChannel", kOscChannel}, }; @@ -60,7 +60,7 @@ class SampleHandlerTutorial : public SampleHandlerBase {kTrueNeutrinoEnergy, "TrueNeutrinoEnergy"}, {kTrueQ2, "TrueQ2"}, {kM3Mode, "Mode"}, - {kTarget, "Target"}, + {kTargetNucleus, "TargetNucleus"}, {kRecoNeutrinoEnergy, "RecoNeutrinoEnergy"}, {kOscChannel, "OscillationChannel"}, };