Generic histogram writer - should make main code more palatable.
1333 for (
int iSample = 0; iSample < sample->
GetNsamples(); ++iSample) {
1334 SampleDir[iSample]->cd();
1336 for(
int iDim1 = 0; iDim1 < sample->
GetNDim(iSample); iDim1++) {
1337 std::string ProjectionName = sample->
GetKinVarName(iSample, iDim1);
1338 std::string ProjectionSuffix =
"_1DProj" + std::to_string(iDim1);
1342 for (
int iMode = 0; iMode < modes->
GetNModes(); ++iMode) {
1350 for (
int iChan = 0; iChan < sample->
GetNOscChannels(iSample); ++iChan) {
1357 if (by_mode && by_channel) {
1358 for (
int iMode = 0; iMode < modes->
GetNModes(); ++iMode) {
1359 for (
int iChan = 0; iChan < sample->
GetNOscChannels(iSample); ++iChan) {
1367 if (!by_mode && !by_channel) {
1368 auto hist = sample->
Get1DVarHist(iSample, ProjectionName);
1372 for (
int iDim2 = iDim1 + 1; iDim2 < sample->
GetNDim(iSample); ++iDim2) {
1374 std::string XVarName = sample->
GetKinVarName(iSample, iDim1);
1375 std::string YVarName = sample->
GetKinVarName(iSample, iDim2);
1378 auto hist2D = sample->
Get2DVarHist(iSample, XVarName, YVarName);
1381 std::string suffix2D =
"_2DProj_" + std::to_string(iDim1) +
"_vs_" + std::to_string(iDim2) + suffix;
void WriteHistograms(TH1 *hist, const std::string &baseName)
Helper to write histograms.
KS: Class describing MaCh3 modes used in the analysis, it is being initialised from config.
int GetNModes() const
KS: Get number of modes, keep in mind actual number is +1 greater due to unknown category.
std::string GetMaCh3ModeName(const int Index) const
KS: Get normal name of mode, if mode not known you will get UNKNOWN_BAD.
virtual std::string GetKinVarName(const int iSample, const int Dimension) const =0
Return Kinematic Variable name for specified sample and dimension for example "Reconstructed_Neutrino...
MaCh3Modes * GetMaCh3Modes() const
Return pointer to MaCh3 modes.
virtual std::string GetFlavourName(const int iSample, const int iChannel) const =0
virtual 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={})=0
virtual TH1 * Get1DVarHistByModeAndChannel(const int iSample, const std::string &ProjectionVar_Str, int kModeToFill=-1, int kChannelToFill=-1, int WeightStyle=0, TAxis *Axis=nullptr)=0
virtual 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={})=0
virtual int GetNOscChannels(const int iSample) const =0
virtual M3::int_t GetNsamples()
virtual std::string GetSampleTitle(const int Sample) const =0
virtual int GetNDim(const int Sample) const =0
DB Function to differentiate 1D or 2D binning.