Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions CIValidations/SplineValidations.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ void SplineMonolithValidations(std::ostream& outFile) {

std::vector<RespFuncType> SplineType = {kTSpline3_red, kTSpline3_red, kTSpline3_red, kTSpline3_red};
const unsigned int Nevents = MasterSpline.size();
auto Splines = std::make_unique<SMonolith>(MasterSpline, SplineType, true);
auto Splines = std::make_unique<UnbinnedSplineHandler>(MasterSpline, SplineType, true);
CleanSpline(MasterSpline);
std::vector< const M3::float_t* > splineParsPointer(Dials.size());
for (unsigned int i = 0; i < Dials.size(); ++i) {
Expand All @@ -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<SMonolith>("SplineFile.root");
auto SplinesFlat = std::make_unique<UnbinnedSplineHandler>("SplineFile.root");
for (unsigned int i = 0; i < Dials.size(); ++i) {
splineParsPointer[i] = &Dial_Values[i];
}
Expand Down
27 changes: 13 additions & 14 deletions CIValidations/pValueValidations.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -59,32 +59,31 @@ 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 {
return "null"; (void) iSample; (void) iChannel;
};
int GetNDim(const int Sample) const override { return 2; }

TH1 *Get1DVarHist(const int iSample, const std::string &ProjectionVar,
std::unique_ptr<TH1> Get1DVarHist(const int iSample, const std::string &ProjectionVar,
const std::vector<KinematicCut> &EventSelectionVec = {}, int WeightStyle = 0,
TAxis *Axis = nullptr, const std::vector<KinematicCut> &SubEventSelectionVec = {}) override {return PolyHist[iSample];}
TH2* Get2DVarHist(const int iSample, const std::string& ProjectionVarX, const std::string& ProjectionVarY,
const std::vector<KinematicCut> &SubEventSelectionVec = {}) override {return M3::Clone(PolyHist[iSample]);}
std::unique_ptr<TH2> 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<TH1> 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<TH2> 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<std::string> SampleBlarbTitle;
std::vector<std::string> KinemBlarbTitle;
Expand Down
4 changes: 2 additions & 2 deletions SamplesTutorial/SampleHandlerTutorial.cpp
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
#include "SamplesTutorial/SampleHandlerTutorial.h"

#include <random>
// ************************************************
SampleHandlerTutorial::SampleHandlerTutorial(const std::string& config_name, ParameterHandlerGeneric* parameter_handler,
const std::shared_ptr<OscillationHandler>& Oscillator_)
: SampleHandlerFD(config_name, parameter_handler, Oscillator_) {
: SampleHandlerBase(config_name, parameter_handler, Oscillator_) {
// ************************************************
KinematicParameters = &KinematicParametersTutorial;
ReversedKinematicParameters = &ReversedKinematicParametersTutorial;
Expand Down
5 changes: 2 additions & 3 deletions SamplesTutorial/SampleHandlerTutorial.h
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
#pragma once

#include "Samples/SampleHandlerFD.h"
#include "Samples/SampleHandlerBase.h"
#include "StructsTutorial.h"
#include "SplinesTutorial/BinnedSplinesTutorial.h"
#include <random>

class SampleHandlerTutorial : public SampleHandlerFD
class SampleHandlerTutorial : public SampleHandlerBase
{
public:
SampleHandlerTutorial(const std::string& config_name, ParameterHandlerGeneric* parameter_handler,
Expand Down
42 changes: 6 additions & 36 deletions Tutorial/KinemDistributionTutorial.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ struct PlotKinematicCut {
struct Plot {
std::string Name;
std::vector<std::string> VarStrings;
std::vector<std::vector<double>> BinEdges;
std::vector<PlotKinematicCut> SelectionCuts = {};
};

Expand Down Expand Up @@ -41,7 +40,7 @@ int main(int argc, char **argv) {
//JM Read in kinematic distribution plots from config
std::vector<Plot> PlotsToDraw = {};
auto ConfigPlots = FitManager->raw()["KinematicDistributionPlots"];

for (const auto& ConfigPlot : ConfigPlots) {
Plot PlotToDraw;
PlotToDraw.Name = Get<std::string>(ConfigPlot["Name"], __FILE__, __LINE__);
Expand All @@ -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<std::vector<std::vector<double>>>(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<PlotToDraw.BinEdges.size(); iBinning++) {
if (PlotToDraw.BinEdges[iBinning].size() == 3) {
double nbins = PlotToDraw.BinEdges[iBinning][0];
double xmin = PlotToDraw.BinEdges[iBinning][1];
double xmax = PlotToDraw.BinEdges[iBinning][2];
double step = (xmax-xmin)/nbins;
PlotToDraw.BinEdges[iBinning] = {};
for (double iBinEdge=xmin; iBinEdge<=xmax; iBinEdge+=step) {
PlotToDraw.BinEdges[iBinning].push_back(iBinEdge);
}
if (PlotToDraw.BinEdges[iBinning].size() == nbins+1) {
PlotToDraw.BinEdges[iBinning].back() = xmax;
} else {
PlotToDraw.BinEdges[iBinning].push_back(xmax);
}
}
}


for (const auto& Cut : ConfigPlot["KinematicCuts"]) {
PlotKinematicCut SelectionCut;
SelectionCut.ParamToCutOn = Cut["VarString"].as<std::string>();
std::vector<double> range = Cut["Range"].as<std::vector<double>>();

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__);
Expand Down Expand Up @@ -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<PlotsToDraw.size(); iHist++) {
MACH3LOG_INFO("Plotting kinematic distributions in config: {} / {}", iHist+1, PlotsToDraw.size());

std::vector<std::string> 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++){
Expand All @@ -152,13 +123,13 @@ int main(int argc, char **argv) {
EventSelectionVector.push_back(Selection);
}
}

std::unique_ptr<TH1> 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);
Expand All @@ -167,7 +138,6 @@ int main(int argc, char **argv) {
Hist->SetStats(false);
Hist->Draw("COLZ");
Canv->Print(OutputName);
delete Hist;
}
}
}
Expand Down
2 changes: 0 additions & 2 deletions TutorialConfigs/FitterConfig.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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]]
2 changes: 1 addition & 1 deletion Utils/SplineMonoUtils.h
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#pragma once

// MaCh3 spline includes
#include "Splines/SplineMonolith.h"
#include "Splines/UnbinnedSplineHandler.h"


std::vector< std::vector<TResponseFunction_red*> > GetMasterSpline(
Expand Down
Loading