Skip to content

Commit dfe70ba

Browse files
Merge pull request #235 from mach3-software/kskwarczynski/breaking/handlerInterface
breaking: Farewell to SampleHandlerFD
2 parents 5639227 + 243f524 commit dfe70ba

7 files changed

Lines changed: 26 additions & 60 deletions

File tree

CIValidations/SplineValidations.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ void SplineMonolithValidations(std::ostream& outFile) {
2929

3030
std::vector<RespFuncType> SplineType = {kTSpline3_red, kTSpline3_red, kTSpline3_red, kTSpline3_red};
3131
const unsigned int Nevents = MasterSpline.size();
32-
auto Splines = std::make_unique<SMonolith>(MasterSpline, SplineType, true);
32+
auto Splines = std::make_unique<UnbinnedSplineHandler>(MasterSpline, SplineType, true);
3333
CleanSpline(MasterSpline);
3434
std::vector< const M3::float_t* > splineParsPointer(Dials.size());
3535
for (unsigned int i = 0; i < Dials.size(); ++i) {
@@ -50,7 +50,7 @@ void SplineMonolithValidations(std::ostream& outFile) {
5050
////// Testing Pre Computed Spline
5151
MACH3LOG_INFO("Testing Spline Monolith with Flattened ROOT inputs");
5252

53-
auto SplinesFlat = std::make_unique<SMonolith>("SplineFile.root");
53+
auto SplinesFlat = std::make_unique<UnbinnedSplineHandler>("SplineFile.root");
5454
for (unsigned int i = 0; i < Dials.size(); ++i) {
5555
splineParsPointer[i] = &Dial_Values[i];
5656
}

CIValidations/pValueValidations.cpp

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#include "SamplesTutorial/SampleHandlerTutorial.h"
44
#include "Fitters/SampleSummary.h"
55

6-
class samplePDFpValue : public SampleHandlerBase
6+
class samplePDFpValue : public SampleHandlerInterface
77
{
88
public:
99
samplePDFpValue(std::string mc_version, ParameterHandlerGeneric* xsec_cov)
@@ -59,32 +59,31 @@ class samplePDFpValue : public SampleHandlerBase
5959

6060
void PrintRates(const bool DataOnly = false) override {return;};
6161

62-
TH1* GetDataHist(const int Selection) override {return PolyHist[Selection];}
63-
TH1* GetMCHist(const int Selection) override {return PolyHist[Selection];}
64-
TH1* GetW2Hist(const int Selection) override {return PolyHist[Selection];}
62+
const TH1* GetDataHist(const int Selection) override {return PolyHist[Selection];}
63+
const TH1* GetMCHist(const int Selection) override {return PolyHist[Selection];}
64+
const TH1* GetW2Hist(const int Selection) override {return PolyHist[Selection];}
6565

6666

6767
std::string GetFlavourName(const int iSample, const int iChannel) const override {
6868
return "null"; (void) iSample; (void) iChannel;
6969
};
7070
int GetNDim(const int Sample) const override { return 2; }
7171

72-
TH1 *Get1DVarHist(const int iSample, const std::string &ProjectionVar,
72+
std::unique_ptr<TH1> Get1DVarHist(const int iSample, const std::string &ProjectionVar,
7373
const std::vector<KinematicCut> &EventSelectionVec = {}, int WeightStyle = 0,
74-
TAxis *Axis = nullptr, const std::vector<KinematicCut> &SubEventSelectionVec = {}) override {return PolyHist[iSample];}
75-
TH2* Get2DVarHist(const int iSample, const std::string& ProjectionVarX, const std::string& ProjectionVarY,
74+
const std::vector<KinematicCut> &SubEventSelectionVec = {}) override {return M3::Clone(PolyHist[iSample]);}
75+
std::unique_ptr<TH2> Get2DVarHist(const int iSample, const std::string& ProjectionVarX, const std::string& ProjectionVarY,
7676
const std::vector< KinematicCut >& EventSelectionVec = {},
77-
int WeightStyle = 0, TAxis* AxisX = nullptr, TAxis* AxisY = nullptr,
78-
const std::vector< KinematicCut >& SubEventSelectionVec = {}) override {return PolyHist[iSample];}
77+
int WeightStyle = 0,
78+
const std::vector< KinematicCut >& SubEventSelectionVec = {}) override {return M3::Clone(PolyHist[iSample]);}
7979

8080

81-
TH1* Get1DVarHistByModeAndChannel(const int iSample, const std::string& ProjectionVar_Str,
81+
std::unique_ptr<TH1> Get1DVarHistByModeAndChannel(const int iSample, const std::string& ProjectionVar_Str,
8282
int kModeToFill = -1, int kChannelToFill = -1,
83-
int WeightStyle = 0, TAxis* Axis = nullptr) override {return PolyHist[iSample];}
84-
TH2* Get2DVarHistByModeAndChannel(const int iSample, const std::string& ProjectionVar_StrX,
83+
int WeightStyle = 0) override {return M3::Clone(PolyHist[iSample]);}
84+
std::unique_ptr<TH2> Get2DVarHistByModeAndChannel(const int iSample, const std::string& ProjectionVar_StrX,
8585
const std::string& ProjectionVar_StrY, int kModeToFill = -1,
86-
int kChannelToFill = -1, int WeightStyle = 0,
87-
TAxis* AxisX = nullptr, TAxis* AxisY = nullptr) override {return PolyHist[iSample];}
86+
int kChannelToFill = -1, int WeightStyle = 0) override {return M3::Clone(PolyHist[iSample]);}
8887

8988
std::vector<std::string> SampleBlarbTitle;
9089
std::vector<std::string> KinemBlarbTitle;

SamplesTutorial/SampleHandlerTutorial.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
#include "SamplesTutorial/SampleHandlerTutorial.h"
2-
2+
#include <random>
33
// ************************************************
44
SampleHandlerTutorial::SampleHandlerTutorial(const std::string& config_name, ParameterHandlerGeneric* parameter_handler,
55
const std::shared_ptr<OscillationHandler>& Oscillator_)
6-
: SampleHandlerFD(config_name, parameter_handler, Oscillator_) {
6+
: SampleHandlerBase(config_name, parameter_handler, Oscillator_) {
77
// ************************************************
88
KinematicParameters = &KinematicParametersTutorial;
99
ReversedKinematicParameters = &ReversedKinematicParametersTutorial;

SamplesTutorial/SampleHandlerTutorial.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
#pragma once
22

3-
#include "Samples/SampleHandlerFD.h"
3+
#include "Samples/SampleHandlerBase.h"
44
#include "StructsTutorial.h"
55
#include "SplinesTutorial/BinnedSplinesTutorial.h"
6-
#include <random>
76

8-
class SampleHandlerTutorial : public SampleHandlerFD
7+
class SampleHandlerTutorial : public SampleHandlerBase
98
{
109
public:
1110
SampleHandlerTutorial(const std::string& config_name, ParameterHandlerGeneric* parameter_handler,

Tutorial/KinemDistributionTutorial.cpp

Lines changed: 6 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ struct PlotKinematicCut {
1111
struct Plot {
1212
std::string Name;
1313
std::vector<std::string> VarStrings;
14-
std::vector<std::vector<double>> BinEdges;
1514
std::vector<PlotKinematicCut> SelectionCuts = {};
1615
};
1716

@@ -41,7 +40,7 @@ int main(int argc, char **argv) {
4140
//JM Read in kinematic distribution plots from config
4241
std::vector<Plot> PlotsToDraw = {};
4342
auto ConfigPlots = FitManager->raw()["KinematicDistributionPlots"];
44-
43+
4544
for (const auto& ConfigPlot : ConfigPlots) {
4645
Plot PlotToDraw;
4746
PlotToDraw.Name = Get<std::string>(ConfigPlot["Name"], __FILE__, __LINE__);
@@ -50,36 +49,12 @@ int main(int argc, char **argv) {
5049
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)");
5150
throw MaCh3Exception(__FILE__,__LINE__);
5251
}
53-
PlotToDraw.BinEdges = Get<std::vector<std::vector<double>>>(ConfigPlot["VarBins"], __FILE__,__LINE__);
54-
if (PlotToDraw.BinEdges.size() != 1 && PlotToDraw.BinEdges.size() != 2) {
55-
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)");
56-
throw MaCh3Exception(__FILE__,__LINE__);
57-
}
58-
59-
//If binning vector is of size 3, treat as [nbins, xmin, xmax] (otherwise treat as bin edges)
60-
for (unsigned int iBinning=0; iBinning<PlotToDraw.BinEdges.size(); iBinning++) {
61-
if (PlotToDraw.BinEdges[iBinning].size() == 3) {
62-
double nbins = PlotToDraw.BinEdges[iBinning][0];
63-
double xmin = PlotToDraw.BinEdges[iBinning][1];
64-
double xmax = PlotToDraw.BinEdges[iBinning][2];
65-
double step = (xmax-xmin)/nbins;
66-
PlotToDraw.BinEdges[iBinning] = {};
67-
for (double iBinEdge=xmin; iBinEdge<=xmax; iBinEdge+=step) {
68-
PlotToDraw.BinEdges[iBinning].push_back(iBinEdge);
69-
}
70-
if (PlotToDraw.BinEdges[iBinning].size() == nbins+1) {
71-
PlotToDraw.BinEdges[iBinning].back() = xmax;
72-
} else {
73-
PlotToDraw.BinEdges[iBinning].push_back(xmax);
74-
}
75-
}
76-
}
77-
52+
7853
for (const auto& Cut : ConfigPlot["KinematicCuts"]) {
7954
PlotKinematicCut SelectionCut;
8055
SelectionCut.ParamToCutOn = Cut["VarString"].as<std::string>();
8156
std::vector<double> range = Cut["Range"].as<std::vector<double>>();
82-
57+
8358
if (range.size() != 2) {
8459
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());
8560
throw MaCh3Exception(__FILE__,__LINE__);
@@ -122,16 +97,12 @@ int main(int argc, char **argv) {
12297

12398
delete Canv;
12499
Canv = new TCanvas("Canv","");
125-
TH1* Hist;
126100
int WeightStyle = 1;
127101
for (size_t iHist=0; iHist<PlotsToDraw.size(); iHist++) {
128102
MACH3LOG_INFO("Plotting kinematic distributions in config: {} / {}", iHist+1, PlotsToDraw.size());
129103

130104
std::vector<std::string> PlotVar_Str = PlotsToDraw[iHist].VarStrings;
131105
int histdim = PlotVar_Str.size();
132-
TAxis AxisX = TAxis(PlotsToDraw[iHist].BinEdges[0].size()-1,PlotsToDraw[iHist].BinEdges[0].data());
133-
TAxis AxisY;
134-
if (histdim == 2) AxisY = TAxis(PlotsToDraw[iHist].BinEdges[1].size()-1,PlotsToDraw[iHist].BinEdges[1].data());
135106

136107
for (size_t iPDF = 0;iPDF < mySamples.size(); iPDF++) {
137108
for(int iSample = 0; iSample < mySamples[iPDF]->GetNSamples(); iSample++){
@@ -152,13 +123,13 @@ int main(int argc, char **argv) {
152123
EventSelectionVector.push_back(Selection);
153124
}
154125
}
155-
126+
std::unique_ptr<TH1> Hist;
156127
if (histdim == 1) {
157-
Hist = (TH1*)mySamples[iPDF]->Get1DVarHist(iSample, PlotVar_Str[0], EventSelectionVector, WeightStyle, &AxisX, SubEventSelectionVector);
128+
Hist = mySamples[iPDF]->Get1DVarHist(iSample, PlotVar_Str[0], EventSelectionVector, WeightStyle, SubEventSelectionVector);
158129
Hist->GetYaxis()->SetTitle("Events");
159130
}
160131
else {
161-
Hist = (TH1*)mySamples[iPDF]->Get2DVarHist(iSample, PlotVar_Str[0], PlotVar_Str[1], EventSelectionVector, WeightStyle, &AxisX, &AxisY, SubEventSelectionVector);
132+
Hist = mySamples[iPDF]->Get2DVarHist(iSample, PlotVar_Str[0], PlotVar_Str[1], EventSelectionVector, WeightStyle, SubEventSelectionVector);
162133
Hist->GetYaxis()->SetTitle(PlotVar_Str[1].c_str());
163134
}
164135
Canv->cd(1);
@@ -167,7 +138,6 @@ int main(int argc, char **argv) {
167138
Hist->SetStats(false);
168139
Hist->Draw("COLZ");
169140
Canv->Print(OutputName);
170-
delete Hist;
171141
}
172142
}
173143
}

TutorialConfigs/FitterConfig.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,10 +131,8 @@ AdaptionOptions:
131131
KinematicDistributionPlots:
132132
- Name: "True Neutrino Energy (0.5 GeV < Enu < 3 GeV)"
133133
VarStrings: ["TrueNeutrinoEnergy"]
134-
VarBins: [[40,0,4]]
135134
KinematicCuts:
136135
- VarString: "TrueNeutrinoEnergy"
137136
Range: [0.5,3]
138137
- Name: "Q2 vs True Enu"
139138
VarStrings: ["TrueNeutrinoEnergy", "TrueQ2"]
140-
VarBins: [[50,0,4],[50,0,6]]

Utils/SplineMonoUtils.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#pragma once
22

33
// MaCh3 spline includes
4-
#include "Splines/SplineMonolith.h"
4+
#include "Splines/UnbinnedSplineHandler.h"
55

66

77
std::vector< std::vector<TResponseFunction_red*> > GetMasterSpline(

0 commit comments

Comments
 (0)