diff --git a/CIValidations/SplineValidations.cpp b/CIValidations/SplineValidations.cpp index 6b314f6..2a1e148 100755 --- a/CIValidations/SplineValidations.cpp +++ b/CIValidations/SplineValidations.cpp @@ -29,7 +29,7 @@ void SplineMonolithValidations(std::ostream& outFile) { std::vector SplineType = {kTSpline3_red, kTSpline3_red, kTSpline3_red, kTSpline3_red}; const unsigned int Nevents = MasterSpline.size(); - auto Splines = std::make_unique(MasterSpline, SplineType, true); + auto Splines = std::make_unique(MasterSpline, SplineType, true); CleanSpline(MasterSpline); std::vector< const M3::float_t* > splineParsPointer(Dials.size()); for (unsigned int i = 0; i < Dials.size(); ++i) { @@ -50,7 +50,7 @@ void SplineMonolithValidations(std::ostream& outFile) { ////// Testing Pre Computed Spline MACH3LOG_INFO("Testing Spline Monolith with Flattened ROOT inputs"); - auto SplinesFlat = std::make_unique("SplineFile.root"); + auto SplinesFlat = std::make_unique("SplineFile.root"); for (unsigned int i = 0; i < Dials.size(); ++i) { splineParsPointer[i] = &Dial_Values[i]; } diff --git a/CIValidations/pValueValidations.cpp b/CIValidations/pValueValidations.cpp index 64b18b2..0c39832 100755 --- a/CIValidations/pValueValidations.cpp +++ b/CIValidations/pValueValidations.cpp @@ -3,7 +3,7 @@ #include "SamplesTutorial/SampleHandlerTutorial.h" #include "Fitters/SampleSummary.h" -class samplePDFpValue : public SampleHandlerBase +class samplePDFpValue : public SampleHandlerInterface { public: samplePDFpValue(std::string mc_version, ParameterHandlerGeneric* xsec_cov) @@ -59,9 +59,9 @@ class samplePDFpValue : public SampleHandlerBase void PrintRates(const bool DataOnly = false) override {return;}; - 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];} + const TH1* GetDataHist(const int Selection) override {return PolyHist[Selection];} + const TH1* GetMCHist(const int Selection) override {return PolyHist[Selection];} + const TH1* GetW2Hist(const int Selection) override {return PolyHist[Selection];} std::string GetFlavourName(const int iSample, const int iChannel) const override { @@ -69,22 +69,21 @@ class samplePDFpValue : public SampleHandlerBase }; int GetNDim(const int Sample) const override { return 2; } - TH1 *Get1DVarHist(const int iSample, const std::string &ProjectionVar, + std::unique_ptr Get1DVarHist(const int iSample, const std::string &ProjectionVar, const std::vector &EventSelectionVec = {}, int WeightStyle = 0, - TAxis *Axis = nullptr, const std::vector &SubEventSelectionVec = {}) override {return PolyHist[iSample];} - TH2* Get2DVarHist(const int iSample, const std::string& ProjectionVarX, const std::string& ProjectionVarY, + const std::vector &SubEventSelectionVec = {}) override {return M3::Clone(PolyHist[iSample]);} + std::unique_ptr Get2DVarHist(const int iSample, const std::string& ProjectionVarX, const std::string& ProjectionVarY, const std::vector< KinematicCut >& EventSelectionVec = {}, - int WeightStyle = 0, TAxis* AxisX = nullptr, TAxis* AxisY = nullptr, - const std::vector< KinematicCut >& SubEventSelectionVec = {}) override {return PolyHist[iSample];} + int WeightStyle = 0, + const std::vector< KinematicCut >& SubEventSelectionVec = {}) override {return M3::Clone(PolyHist[iSample]);} - TH1* Get1DVarHistByModeAndChannel(const int iSample, const std::string& ProjectionVar_Str, + std::unique_ptr Get1DVarHistByModeAndChannel(const int iSample, const std::string& ProjectionVar_Str, int kModeToFill = -1, int kChannelToFill = -1, - int WeightStyle = 0, TAxis* Axis = nullptr) override {return PolyHist[iSample];} - TH2* Get2DVarHistByModeAndChannel(const int iSample, const std::string& ProjectionVar_StrX, + int WeightStyle = 0) override {return M3::Clone(PolyHist[iSample]);} + std::unique_ptr Get2DVarHistByModeAndChannel(const int iSample, const std::string& ProjectionVar_StrX, const std::string& ProjectionVar_StrY, int kModeToFill = -1, - int kChannelToFill = -1, int WeightStyle = 0, - TAxis* AxisX = nullptr, TAxis* AxisY = nullptr) override {return PolyHist[iSample];} + int kChannelToFill = -1, int WeightStyle = 0) override {return M3::Clone(PolyHist[iSample]);} std::vector SampleBlarbTitle; std::vector KinemBlarbTitle; diff --git a/SamplesTutorial/SampleHandlerTutorial.cpp b/SamplesTutorial/SampleHandlerTutorial.cpp index cd1e62a..194345b 100755 --- a/SamplesTutorial/SampleHandlerTutorial.cpp +++ b/SamplesTutorial/SampleHandlerTutorial.cpp @@ -1,9 +1,9 @@ #include "SamplesTutorial/SampleHandlerTutorial.h" - +#include // ************************************************ SampleHandlerTutorial::SampleHandlerTutorial(const std::string& config_name, ParameterHandlerGeneric* parameter_handler, const std::shared_ptr& Oscillator_) - : SampleHandlerFD(config_name, parameter_handler, Oscillator_) { + : SampleHandlerBase(config_name, parameter_handler, Oscillator_) { // ************************************************ KinematicParameters = &KinematicParametersTutorial; ReversedKinematicParameters = &ReversedKinematicParametersTutorial; diff --git a/SamplesTutorial/SampleHandlerTutorial.h b/SamplesTutorial/SampleHandlerTutorial.h index 0264085..f324d98 100755 --- a/SamplesTutorial/SampleHandlerTutorial.h +++ b/SamplesTutorial/SampleHandlerTutorial.h @@ -1,11 +1,10 @@ #pragma once -#include "Samples/SampleHandlerFD.h" +#include "Samples/SampleHandlerBase.h" #include "StructsTutorial.h" #include "SplinesTutorial/BinnedSplinesTutorial.h" -#include -class SampleHandlerTutorial : public SampleHandlerFD +class SampleHandlerTutorial : public SampleHandlerBase { public: SampleHandlerTutorial(const std::string& config_name, ParameterHandlerGeneric* parameter_handler, diff --git a/Tutorial/KinemDistributionTutorial.cpp b/Tutorial/KinemDistributionTutorial.cpp index b534c4c..a494b49 100755 --- a/Tutorial/KinemDistributionTutorial.cpp +++ b/Tutorial/KinemDistributionTutorial.cpp @@ -11,7 +11,6 @@ struct PlotKinematicCut { struct Plot { std::string Name; std::vector VarStrings; - std::vector> BinEdges; std::vector SelectionCuts = {}; }; @@ -41,7 +40,7 @@ int main(int argc, char **argv) { //JM Read in kinematic distribution plots from config std::vector PlotsToDraw = {}; auto ConfigPlots = FitManager->raw()["KinematicDistributionPlots"]; - + for (const auto& ConfigPlot : ConfigPlots) { Plot PlotToDraw; PlotToDraw.Name = Get(ConfigPlot["Name"], __FILE__, __LINE__); @@ -50,36 +49,12 @@ int main(int argc, char **argv) { MACH3LOG_ERROR("Error in yaml file: In KinemDistribtuion Plot {}, VarStrings is of size {}. VarString should be of size 1 or 2 (higher dimensional histogram plotting is not yet supported)"); throw MaCh3Exception(__FILE__,__LINE__); } - PlotToDraw.BinEdges = Get>>(ConfigPlot["VarBins"], __FILE__,__LINE__); - if (PlotToDraw.BinEdges.size() != 1 && PlotToDraw.BinEdges.size() != 2) { - MACH3LOG_ERROR("Error in yaml file: In KinemDistribtuion Plot {}, BinEdges is of size {}. VarString should be of size 1 or 2 (higher dimensional histogram plotting is not yet supported)"); - throw MaCh3Exception(__FILE__,__LINE__); - } - - //If binning vector is of size 3, treat as [nbins, xmin, xmax] (otherwise treat as bin edges) - for (unsigned int iBinning=0; iBinning(); std::vector range = Cut["Range"].as>(); - + if (range.size() != 2) { MACH3LOG_ERROR("Error in yaml file: In KinemDistribution Plot {}, KinematicCut {} has range of size {}. Range should be of size 2.", PlotToDraw.Name, SelectionCut.ParamToCutOn, range.size()); throw MaCh3Exception(__FILE__,__LINE__); @@ -122,16 +97,12 @@ int main(int argc, char **argv) { delete Canv; Canv = new TCanvas("Canv",""); - TH1* Hist; int WeightStyle = 1; for (size_t iHist=0; iHist PlotVar_Str = PlotsToDraw[iHist].VarStrings; int histdim = PlotVar_Str.size(); - TAxis AxisX = TAxis(PlotsToDraw[iHist].BinEdges[0].size()-1,PlotsToDraw[iHist].BinEdges[0].data()); - TAxis AxisY; - if (histdim == 2) AxisY = TAxis(PlotsToDraw[iHist].BinEdges[1].size()-1,PlotsToDraw[iHist].BinEdges[1].data()); for (size_t iPDF = 0;iPDF < mySamples.size(); iPDF++) { for(int iSample = 0; iSample < mySamples[iPDF]->GetNSamples(); iSample++){ @@ -152,13 +123,13 @@ int main(int argc, char **argv) { EventSelectionVector.push_back(Selection); } } - + std::unique_ptr Hist; if (histdim == 1) { - Hist = (TH1*)mySamples[iPDF]->Get1DVarHist(iSample, PlotVar_Str[0], EventSelectionVector, WeightStyle, &AxisX, SubEventSelectionVector); + Hist = mySamples[iPDF]->Get1DVarHist(iSample, PlotVar_Str[0], EventSelectionVector, WeightStyle, SubEventSelectionVector); Hist->GetYaxis()->SetTitle("Events"); } else { - Hist = (TH1*)mySamples[iPDF]->Get2DVarHist(iSample, PlotVar_Str[0], PlotVar_Str[1], EventSelectionVector, WeightStyle, &AxisX, &AxisY, SubEventSelectionVector); + Hist = mySamples[iPDF]->Get2DVarHist(iSample, PlotVar_Str[0], PlotVar_Str[1], EventSelectionVector, WeightStyle, SubEventSelectionVector); Hist->GetYaxis()->SetTitle(PlotVar_Str[1].c_str()); } Canv->cd(1); @@ -167,7 +138,6 @@ int main(int argc, char **argv) { Hist->SetStats(false); Hist->Draw("COLZ"); Canv->Print(OutputName); - delete Hist; } } } diff --git a/TutorialConfigs/FitterConfig.yaml b/TutorialConfigs/FitterConfig.yaml index f31d23f..a516109 100755 --- a/TutorialConfigs/FitterConfig.yaml +++ b/TutorialConfigs/FitterConfig.yaml @@ -131,10 +131,8 @@ AdaptionOptions: KinematicDistributionPlots: - Name: "True Neutrino Energy (0.5 GeV < Enu < 3 GeV)" VarStrings: ["TrueNeutrinoEnergy"] - VarBins: [[40,0,4]] KinematicCuts: - VarString: "TrueNeutrinoEnergy" Range: [0.5,3] - Name: "Q2 vs True Enu" VarStrings: ["TrueNeutrinoEnergy", "TrueQ2"] - VarBins: [[50,0,4],[50,0,6]] diff --git a/Utils/SplineMonoUtils.h b/Utils/SplineMonoUtils.h index c3a85d3..c018c5c 100755 --- a/Utils/SplineMonoUtils.h +++ b/Utils/SplineMonoUtils.h @@ -1,7 +1,7 @@ #pragma once // MaCh3 spline includes -#include "Splines/SplineMonolith.h" +#include "Splines/UnbinnedSplineHandler.h" std::vector< std::vector > GetMasterSpline(