Skip to content

Commit 5493fb1

Browse files
Merge pull request #239 from mach3-software/kskwarczynski/feat/InitDataHook
breaking: Data Initialization Hook
2 parents df57d52 + d6b874e commit 5493fb1

3 files changed

Lines changed: 31 additions & 33 deletions

File tree

‎CIValidations/Benchmark/MaCh3Benchmark.cpp‎

Lines changed: 13 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -85,27 +85,23 @@ TEST_CASE("Benchmark MaCh3") {
8585
Covs.push_back(xsec.get());
8686

8787
// Initialise samplePDF
88-
auto BeamSamples = MaCh3SampleHandlerFactory<SampleHandlerTutorial>({"TutorialConfigs/Samples/SampleHandler_Tutorial.yaml"}, xsec.get());
89-
auto ATMSamples = MaCh3SampleHandlerFactory<SampleHandlerTutorial>({"TutorialConfigs/Samples/SampleHandler_Tutorial_ATM.yaml"}, xsec.get());
90-
auto NDSamples = MaCh3SampleHandlerFactory<SampleHandlerTutorial>({"TutorialConfigs/Samples/SampleHandler_Tutorial_ND.yaml"}, xsec.get());
88+
auto BeamSamples = std::make_unique<SampleHandlerTutorial>({"TutorialConfigs/Samples/SampleHandler_Tutorial.yaml"}, xsec.get());
89+
auto ATMSamples = std::make_unique<SampleHandlerTutorial>({"TutorialConfigs/Samples/SampleHandler_Tutorial_ATM.yaml"}, xsec.get());
90+
auto NDSamples = std::make_unique<SampleHandlerTutorial>({"TutorialConfigs/Samples/SampleHandler_Tutorial_ND.yaml"}, xsec.get());
9191

9292
BENCHMARK("Beam Reweight") {
9393
for (size_t s = 0; s < Covs.size(); ++s) {
9494
Covs[s]->ProposeStep();
9595
Covs[s]->AcceptStep();
9696
Covs[s]->GetLikelihood();
9797
}
98-
for(unsigned int ivs = 0; ivs < BeamSamples.size(); ivs++ ) {
99-
BeamSamples[ivs]->Reweight();
100-
BeamSamples[ivs]->GetLikelihood();
101-
}
98+
BeamSamples->Reweight();
99+
BeamSamples->GetLikelihood();
102100
};
103101

104102
BENCHMARK("Beam Reweight w/o Osc") {
105-
for(unsigned int ivs = 0; ivs < BeamSamples.size(); ivs++ ) {
106-
BeamSamples[ivs]->Reweight();
107-
BeamSamples[ivs]->GetLikelihood();
108-
}
103+
BeamSamples->Reweight();
104+
BeamSamples->GetLikelihood();
109105
};
110106

111107
BENCHMARK("ATM Reweight") {
@@ -114,10 +110,9 @@ TEST_CASE("Benchmark MaCh3") {
114110
Covs[s]->AcceptStep();
115111
Covs[s]->GetLikelihood();
116112
}
117-
for(unsigned int ivs = 0; ivs < ATMSamples.size(); ivs++ ) {
118-
ATMSamples[ivs]->Reweight();
119-
ATMSamples[ivs]->GetLikelihood();
120-
}
113+
114+
ATMSamples->Reweight();
115+
ATMSamples->GetLikelihood();
121116
};
122117

123118
BENCHMARK("ND Reweight") {
@@ -126,10 +121,9 @@ TEST_CASE("Benchmark MaCh3") {
126121
Covs[s]->AcceptStep();
127122
Covs[s]->GetLikelihood();
128123
}
129-
for(unsigned int ivs = 0; ivs < NDSamples.size(); ivs++ ) {
130-
NDSamples[ivs]->Reweight();
131-
NDSamples[ivs]->GetLikelihood();
132-
}
124+
125+
NDSamples->Reweight();
126+
NDSamples->GetLikelihood();
133127
};
134128

135129
CreateChungusYaml("ChungusSystematics.yaml", 2000);
@@ -175,14 +169,4 @@ TEST_CASE("Benchmark MaCh3") {
175169
NonUniformBinning->FindGlobalBin(0, KinVars, NomBins);
176170
}
177171
};
178-
179-
for (size_t i = 0; i < NDSamples.size(); ++i) {
180-
delete NDSamples[i];
181-
}
182-
for (size_t i = 0; i < BeamSamples.size(); ++i) {
183-
delete BeamSamples[i];
184-
}
185-
for (size_t i = 0; i < ATMSamples.size(); ++i) {
186-
delete ATMSamples[i];
187-
}
188172
}

‎SamplesTutorial/SampleHandlerTutorial.cpp‎

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,18 @@ void SampleHandlerTutorial::FillParticles(int eventIndex, int nParticles, int PD
308308
}
309309
}
310310

311+
312+
// ************************************************
313+
void SampleHandlerTutorial::InititialiseData() {
314+
// ************************************************
315+
// Reweight MC to match
316+
Reweight();
317+
// set asimov data
318+
for(int iSample = 0; iSample < GetNSamples(); iSample++) {
319+
AddData(iSample, GetMCArray(iSample));
320+
}
321+
}
322+
311323
double SampleHandlerTutorial::ReturnKinematicParameter(const int KinematicVariable, const int iEvent) const {
312324
const double* paramPointer = GetPointerToKinematicParameter(KinematicVariable, iEvent);
313325
return *paramPointer;
@@ -343,7 +355,7 @@ const double* SampleHandlerTutorial::GetPointerToKinematicParameter(const int Ki
343355
return &TutorialSamples[iEvent].Mode;
344356
case kOscChannel:
345357
return GetPointerToOscChannel(iEvent);
346-
case kTarget:
358+
case kTargetNucleus:
347359
return &TutorialSamples[iEvent].Target;
348360
default:
349361
MACH3LOG_ERROR("Unrecognized Kinematic Parameter type: {}", KinPar);

‎SamplesTutorial/SampleHandlerTutorial.h‎

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,10 @@ class SampleHandlerTutorial : public SampleHandlerBase
3838
// ===========================================================================
3939

4040
const double* GetPointerToKinematicParameter(const int KinematicVariable, const int iEvent) const final;
41-
41+
/// @brief Function which translates experiment struct into core struct
4242
void SetupMC() final;
43+
/// @brief Function responsible for loading data from file or loading from file
44+
void InititialiseData() final;
4345
void CalcWeightFunc(const int iEvent) final {return; (void)iEvent;}
4446

4547
std::vector<TutorialMCInfo> TutorialSamples;
@@ -49,7 +51,7 @@ class SampleHandlerTutorial : public SampleHandlerBase
4951
{"TrueNeutrinoEnergy", kTrueNeutrinoEnergy},
5052
{"TrueQ2", kTrueQ2},
5153
{"Mode", kM3Mode},
52-
{"Target", kTarget},
54+
{"TargetNucleus", kTargetNucleus},
5355
{"RecoNeutrinoEnergy", kRecoNeutrinoEnergy},
5456
{"OscillationChannel", kOscChannel},
5557
};
@@ -58,7 +60,7 @@ class SampleHandlerTutorial : public SampleHandlerBase
5860
{kTrueNeutrinoEnergy, "TrueNeutrinoEnergy"},
5961
{kTrueQ2, "TrueQ2"},
6062
{kM3Mode, "Mode"},
61-
{kTarget, "Target"},
63+
{kTargetNucleus, "TargetNucleus"},
6264
{kRecoNeutrinoEnergy, "RecoNeutrinoEnergy"},
6365
{kOscChannel, "OscillationChannel"},
6466
};

0 commit comments

Comments
 (0)