From 2d5f6dcefbe037a288596e725292c82199a90074 Mon Sep 17 00:00:00 2001 From: Kamil Skwarczynski Date: Tue, 20 Jan 2026 18:42:56 +0000 Subject: [PATCH] Change format of accessing binning and modify GetMCHist --- CIValidations/BinningValidations.cpp | 28 +++++++++--- CIValidations/FitterValidations.cpp | 2 +- CIValidations/SamplePDFValidations.cpp | 45 ++++++------------- CIValidations/SigmaVarValidations.cpp | 6 +-- CIValidations/pValueValidations.cpp | 6 +-- .../Samples/SampleHandler_Tutorial.yaml | 5 ++- .../Samples/SampleHandler_Tutorial_ATM.yaml | 5 ++- .../Samples/SampleHandler_Tutorial_ND.yaml | 37 +++++++-------- 8 files changed, 66 insertions(+), 68 deletions(-) diff --git a/CIValidations/BinningValidations.cpp b/CIValidations/BinningValidations.cpp index 4da13b7..9379fe6 100755 --- a/CIValidations/BinningValidations.cpp +++ b/CIValidations/BinningValidations.cpp @@ -6,23 +6,37 @@ void BinningHandlerValidations(std::ostream& outFile) { auto Binning = std::make_unique(); std::string yamlBinning1 = R"( -XVarStr : "RecoNeutrinoEnergy" -XVarBins: [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1] -YVarStr : "TrueQ2" -YVarBins: [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1] +VarStr : ["RecoNeutrinoEnergy", "TrueQ2"] +VarBins: [ [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1], + [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1] ] +Uniform: true )"; YAML::Node Binning1 = STRINGtoYAML(yamlBinning1); SampleInfo SingleSample; Binning->SetupSampleBinning(Binning1, SingleSample); - +/////// + MACH3LOG_INFO(""); std::string yamlContent = R"( -XVarStr : "RecoNeutrinoEnergy" -XVarBins: [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1] +VarStr : ["RecoNeutrinoEnergy"] +VarBins: [[0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1]] +Uniform: true )"; YAML::Node Binning2 = STRINGtoYAML(yamlContent); Binning->SetupSampleBinning(Binning2, SingleSample); +/////// + MACH3LOG_INFO(""); +std::string yamlContent3 = R"( +VarStr : ["RecoNeutrinoEnergy", "TrueQ2", "Wacky"] +VarBins: [ [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1], + [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1], + [-1., 0, 1.] ] +Uniform: true +)"; + + YAML::Node Binning3 = STRINGtoYAML(yamlContent3); + Binning->SetupSampleBinning(Binning3, SingleSample); std::vector Samples = {0, 1}; std::vector XVars = {-1, 0, 0.5, 0.7, 1, 10}; diff --git a/CIValidations/FitterValidations.cpp b/CIValidations/FitterValidations.cpp index f74b320..74c2218 100755 --- a/CIValidations/FitterValidations.cpp +++ b/CIValidations/FitterValidations.cpp @@ -52,7 +52,7 @@ void FitVal(const std::string& Algo, bool MoreTests) for(int iSample = 0; iSample < Sample->GetNsamples(); iSample++){ std::string name = Sample->GetSampleTitle(iSample); TString NameTString = TString(name.c_str()); - TH1D *SampleHistogramPrior = (TH1D*)Sample->GetMCHist(iSample, 1)->Clone(NameTString+"_Prior"); + TH1 *SampleHistogramPrior = static_cast(Sample->GetMCHist(iSample)->Clone(NameTString+"_Prior")); Sample->AddData(iSample, SampleHistogramPrior); } MaCh3Fitter->AddSystObj(xsec.get()); diff --git a/CIValidations/SamplePDFValidations.cpp b/CIValidations/SamplePDFValidations.cpp index abe72af..c98f619 100755 --- a/CIValidations/SamplePDFValidations.cpp +++ b/CIValidations/SamplePDFValidations.cpp @@ -55,14 +55,10 @@ void SampleLLHValidation(std::ostream& outFile, const std::string& OriginalSampl auto Sample = std::make_unique(tempConfigPath, xsec); Sample->Reweight(); - for(int iSample = 0; iSample < Sample->GetNsamples(); iSample++){ - if (Sample->GetNDim(iSample) == 1) { - TH1D* SampleHistogramPrior = static_cast(Sample->GetMCHist(iSample, 1)->Clone((NameTString + "_Prior").c_str())); - Sample->AddData(iSample, SampleHistogramPrior); - } else { - TH2D* SampleHistogramPrior = static_cast(Sample->GetMCHist(iSample, 2)->Clone((NameTString + "_Prior").c_str())); - Sample->AddData(iSample, SampleHistogramPrior); - } + for(int iSample = 0; iSample < Sample->GetNsamples(); iSample++) { + TH1* SampleHistogramPrior = static_cast(Sample->GetMCHist(iSample)->Clone((NameTString + "_Prior").c_str())); + Sample->AddData(iSample, SampleHistogramPrior); + // Set oscillation parameters and reweight for posterior std::vector OscParProp = {0.3, 0.5, 0.020, 7.53e-5, 2.494e-3, 0.0, 295, 2.6, 0.5, 15}; xsec->SetGroupOnlyParameters("Osc", OscParProp); @@ -96,13 +92,7 @@ void ValidateTestStatistic(std::ostream& outFile, const std::string& OriginalSam auto Sample = std::make_unique(OriginalSample, xsec); Sample->Reweight(); for(int iSample = 0; iSample < Sample->GetNsamples(); iSample++){ - if (Sample->GetNDim(iSample) == 1) { - TH1D* SampleHistogramPrior = static_cast(Sample->GetMCHist(iSample, 1)->Clone("Blarb_Prior")); - Sample->AddData(iSample, SampleHistogramPrior); - } else { - TH2D* SampleHistogramPrior = static_cast(Sample->GetMCHist(iSample, 2)->Clone("Blarb_Prior")); - Sample->AddData(iSample, SampleHistogramPrior); - } + Sample->AddData(iSample, Sample->GetMCArray(iSample)); } // Define test vectors, feel free to expand it @@ -164,14 +154,9 @@ void LoadSplineValidation(std::ostream& outFile, const std::string& OriginalSamp Sample->Reweight(); for(int iSample = 0; iSample < Sample->GetNsamples(); iSample++){ - TH1* SampleHistogramPrior = nullptr; - if (Sample->GetNDim(iSample) == 1) { - SampleHistogramPrior = static_cast(Sample->GetMCHist(iSample, 1)->Clone((NameTString + "_Prior").c_str())); - Sample->AddData(iSample, static_cast(SampleHistogramPrior)); - } else { - SampleHistogramPrior = static_cast(Sample->GetMCHist(iSample, 2)->Clone((NameTString + "_Prior").c_str())); - Sample->AddData(iSample, static_cast(SampleHistogramPrior)); - } + TH1* SampleHistogramPrior = static_cast(Sample->GetMCHist(iSample)->Clone((NameTString + "_Prior").c_str())); + Sample->AddData(iSample, SampleHistogramPrior); + // Set oscillation parameters and reweight for posterior std::vector OscParProp = {0.3, 0.5, 0.020, 7.53e-5, 2.494e-3, 0.0, 295, 2.6, 0.5, 15}; xsec->SetGroupOnlyParameters("Osc", OscParProp); @@ -212,14 +197,9 @@ int main(int argc, char *argv[]) // Reweight and process prior histogram Sample->Reweight(); - TH1* SampleHistogramPrior = nullptr; - if (Sample->GetNDim(iSample) == 1) { - SampleHistogramPrior = static_cast(Sample->GetMCHist(iSample, 1)->Clone((NameTString + "_Prior").Data())); - Sample->AddData(iSample, static_cast(SampleHistogramPrior)); - } else { - SampleHistogramPrior = static_cast(Sample->GetMCHist(iSample, 2)->Clone((NameTString + "_Prior").Data())); - Sample->AddData(iSample, static_cast(SampleHistogramPrior)); - } + TH1* SampleHistogramPrior = static_cast(Sample->GetMCHist(iSample)->Clone((NameTString + "_Prior").Data())); + Sample->AddData(iSample, SampleHistogramPrior); + // Write initial info to file outFile << "Info for sample: " << NameTString << std::endl; outFile << "Rates Prior: " << SampleHistogramPrior->Integral() << std::endl; @@ -231,9 +211,10 @@ int main(int argc, char *argv[]) Sample->Reweight(); // Process posterior histogram - TH1D *SampleHistogramPost = (TH1D*)Sample->GetMCHist(iSample, 1)->Clone(NameTString + "_Post"); + TH1 *SampleHistogramPost = static_cast(Sample->GetMCHist(iSample)->Clone(NameTString + "_Post")); outFile << "Rates Post:" << SampleHistogramPrior->Integral() << std::endl; outFile << "Likelihood:" << std::fabs(Sample->GetLikelihood()) << std::endl; + delete SampleHistogramPost; } MACH3LOG_INFO("Now trying to compare each weight individually"); diff --git a/CIValidations/SigmaVarValidations.cpp b/CIValidations/SigmaVarValidations.cpp index 535081e..867fd0f 100755 --- a/CIValidations/SigmaVarValidations.cpp +++ b/CIValidations/SigmaVarValidations.cpp @@ -96,9 +96,9 @@ class samplePDFSigmaVar : public SampleHandlerBase void PrintRates(const bool DataOnly = false) override {return;}; - TH1* GetData(const int Selection) override {return PolyHist[Selection];} - TH1* GetPDF(const int Selection) override {return PolyHist[Selection];} - TH2Poly* GetW2(const int Selection) override {return PolyHist[Selection];} + TH1* GetDataHist(const int Selection) override {return PolyHist[Selection];} + TH1* GetMCHist(const int Selection) override {return PolyHist[Selection];} + TH1* GetW2Hist(const int Selection) override {return PolyHist[Selection];} TH1* GetPDFMode(const int Selection, const int Mode) override {return PolyHist[Selection];} std::vector SampleBlarbTitle; diff --git a/CIValidations/pValueValidations.cpp b/CIValidations/pValueValidations.cpp index ab4b3e3..a0a33d6 100755 --- a/CIValidations/pValueValidations.cpp +++ b/CIValidations/pValueValidations.cpp @@ -56,9 +56,9 @@ class samplePDFpValue : public SampleHandlerBase void PrintRates(const bool DataOnly = false) override {return;}; - TH1* GetData(const int Selection) override {return PolyHist[Selection];} - TH1* GetPDF(const int Selection) override {return PolyHist[Selection];} - TH2Poly* GetW2(const int Selection) override {return PolyHist[Selection];} + TH1* GetDataHist(const int Selection) override {return PolyHist[Selection];} + TH1* GetMCHist(const int Selection) override {return PolyHist[Selection];} + TH1* GetW2Hist(const int Selection) override {return PolyHist[Selection];} TH1* GetPDFMode(const int Selection, const int Mode) override {return PolyHist[Selection];} std::vector SampleBlarbTitle; diff --git a/TutorialConfigs/Samples/SampleHandler_Tutorial.yaml b/TutorialConfigs/Samples/SampleHandler_Tutorial.yaml index 6e79aee..bcdfa09 100755 --- a/TutorialConfigs/Samples/SampleHandler_Tutorial.yaml +++ b/TutorialConfigs/Samples/SampleHandler_Tutorial.yaml @@ -26,8 +26,9 @@ Tutorial: SampleTitle: "Tutorial" Binning: - XVarStr : "RecoNeutrinoEnergy" - XVarBins: [0., 0.5, 1., 1.25, 1.5, 1.75, 2., 2.25, 2.5, 2.75, 3., 3.25, 3.5, 3.75, 4., 5., 6., 10.] + VarStr : [ "RecoNeutrinoEnergy" ] + VarBins: [[0., 0.5, 1., 1.25, 1.5, 1.75, 2., 2.25, 2.5, 2.75, 3., 3.25, 3.5, 3.75, 4., 5., 6., 10.]] + Uniform: true InputFiles: mtupleprefix: "TutorialConfigs/MC/NuWro_" diff --git a/TutorialConfigs/Samples/SampleHandler_Tutorial_ATM.yaml b/TutorialConfigs/Samples/SampleHandler_Tutorial_ATM.yaml index 04144b0..248bbf0 100755 --- a/TutorialConfigs/Samples/SampleHandler_Tutorial_ATM.yaml +++ b/TutorialConfigs/Samples/SampleHandler_Tutorial_ATM.yaml @@ -28,8 +28,9 @@ Tutorial_ATM: Bounds: [ 0., 4 ] Binning: - XVarStr : "RecoNeutrinoEnergy" - XVarBins: [0., 0.5, 1., 1.25, 1.5, 1.75, 2., 2.25, 2.5, 2.75, 3., 3.25, 3.5, 3.75, 4., 5., 6., 10.] + VarStr : [ "RecoNeutrinoEnergy" ] + VarBins: [[0., 0.5, 1., 1.25, 1.5, 1.75, 2., 2.25, 2.5, 2.75, 3., 3.25, 3.5, 3.75, 4., 5., 6., 10.]] + Uniform: true InputFiles: mtupleprefix: "TutorialConfigs/MC/NuWro_" diff --git a/TutorialConfigs/Samples/SampleHandler_Tutorial_ND.yaml b/TutorialConfigs/Samples/SampleHandler_Tutorial_ND.yaml index dfe0cbc..5b3e655 100755 --- a/TutorialConfigs/Samples/SampleHandler_Tutorial_ND.yaml +++ b/TutorialConfigs/Samples/SampleHandler_Tutorial_ND.yaml @@ -20,10 +20,10 @@ ND_CC0pi: SampleTitle: "ND_CC0pi" Binning: - XVarStr : "RecoNeutrinoEnergy" - XVarBins: [0., 0.5, 1., 1.25, 1.5, 1.75, 2., 2.25, 2.5, 2.75, 3., 3.25, 3.5, 3.75, 4., 5., 6., 10.] - YVarStr : "TrueQ2" - YVarBins: [0., 0.5, 1., 1.25, 1.5, 1.75, 2., 5] + VarStr : ["RecoNeutrinoEnergy", "TrueQ2"] + VarBins: [ [0., 0.5, 1., 1.25, 1.5, 1.75, 2., 2.25, 2.5, 2.75, 3., 3.25, 3.5, 3.75, 4., 5., 6., 10.], + [0., 0.5, 1., 1.25, 1.5, 1.75, 2., 5] ] + Uniform: true InputFiles: mtupleprefix: "TutorialConfigs/MC/NuWro" @@ -44,10 +44,10 @@ ND_CC1pip: SampleTitle: "ND_CC1pip" Binning: - XVarStr : "RecoNeutrinoEnergy" - XVarBins: [0., 0.5, 1., 1.25, 1.5, 1.75, 2., 2.25, 2.5, 2.75, 3., 3.25, 3.5, 3.75, 4., 5., 6., 10.] - YVarStr : "TrueQ2" - YVarBins: [0., 0.5, 1., 1.25, 1.5, 1.75, 2., 5] + VarStr : [ "RecoNeutrinoEnergy", "TrueQ2" ] + VarBins: [ [0., 0.5, 1., 1.25, 1.5, 1.75, 2., 2.25, 2.5, 2.75, 3., 3.25, 3.5, 3.75, 4., 5., 6., 10.], + [0., 0.5, 1., 1.25, 1.5, 1.75, 2., 5] ] + Uniform: true InputFiles: mtupleprefix: "TutorialConfigs/MC/NuWro" @@ -68,10 +68,10 @@ ND_CCPi0: SampleTitle: "ND_CCPi0" Binning: - XVarStr : "RecoNeutrinoEnergy" - XVarBins: [0., 0.5, 1., 1.25, 1.5, 1.75, 2., 2.25, 2.5, 2.75, 3., 3.25, 3.5, 3.75, 4., 5., 6., 10.] - YVarStr : "TrueQ2" - YVarBins: [0., 0.5, 1., 1.25, 1.5, 1.75, 2., 5] + VarStr : [ "RecoNeutrinoEnergy", "TrueQ2" ] + VarBins: [ [0., 0.5, 1., 1.25, 1.5, 1.75, 2., 2.25, 2.5, 2.75, 3., 3.25, 3.5, 3.75, 4., 5., 6., 10.], + [0., 0.5, 1., 1.25, 1.5, 1.75, 2., 5] ] + Uniform: true InputFiles: mtupleprefix: "TutorialConfigs/MC/NuWro" @@ -92,10 +92,10 @@ ND_NC0pi: SampleTitle: "ND_NC0pi" Binning: - XVarStr : "RecoNeutrinoEnergy" - XVarBins: [0., 0.5, 1., 1.25, 1.5, 1.75, 2., 2.25, 2.5, 2.75, 3., 3.25, 3.5, 3.75, 4.] - YVarStr : "TrueQ2" - YVarBins: [0., 0.5, 1., 1.25, 1.5, 1.75, 2.] + VarStr : [ "RecoNeutrinoEnergy", "TrueQ2" ] + VarBins: [ [0., 0.5, 1., 1.25, 1.5, 1.75, 2., 2.25, 2.5, 2.75, 3., 3.25, 3.5, 3.75, 4.], + [0., 0.5, 1., 1.25, 1.5, 1.75, 2.] ] + Uniform: true InputFiles: mtupleprefix: "TutorialConfigs/MC/NuWro" @@ -116,8 +116,9 @@ ND_NC1pi0: SampleTitle: "ND_NC1pi0" Binning: - XVarStr : "RecoNeutrinoEnergy" - XVarBins: [0., 0.5, 1., 1.25, 1.5, 1.75, 2., 2.25, 2.5, 2.75, 3., 3.25, 3.5, 3.75, 4., 5., 6., 10.] + VarStr : [ "RecoNeutrinoEnergy" ] + VarBins: [ [0., 0.5, 1., 1.25, 1.5, 1.75, 2., 2.25, 2.5, 2.75, 3., 3.25, 3.5, 3.75, 4., 5., 6., 10.] ] + Uniform: true InputFiles: mtupleprefix: "TutorialConfigs/MC/NuWro"