Belle II Software  release-05-02-19
DataDriven.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2016 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Thomas Keck *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #pragma once
12 #ifndef INCLUDE_GUARD_BELLE2_MVA_SPLOT_HEADER
13 #define INCLUDE_GUARD_BELLE2_MVA_SPLOT_HEADER
14 
15 #include <mva/interface/Dataset.h>
16 #include <mva/utility/Binning.h>
17 #include <mva/interface/Expert.h>
18 
19 
20 namespace Belle2 {
25  namespace MVA {
26 
31  class ReweightingDataset : public Dataset {
32 
33  public:
40  ReweightingDataset(const GeneralOptions& general_options, Dataset& dataset, const std::vector<float>& weights);
41 
45  virtual unsigned int getNumberOfFeatures() const override { return m_dataset.getNumberOfFeatures(); }
46 
50  virtual unsigned int getNumberOfSpectators() const override { return m_dataset.getNumberOfSpectators(); }
51 
55  virtual unsigned int getNumberOfEvents() const override { return m_dataset.getNumberOfEvents(); };
56 
61  virtual std::vector<float> getFeature(unsigned int iFeature) override { return m_dataset.getFeature(iFeature); }
62 
67  virtual std::vector<float> getSpectator(unsigned int iSpectator) override { return m_dataset.getSpectator(iSpectator); }
68 
72  virtual std::vector<float> getWeights() override
73  {
74  auto weights = m_dataset.getWeights();
75  for (unsigned int iEvent = 0; iEvent < weights.size(); ++iEvent) {
76  weights[iEvent] *= m_weights[iEvent];
77  }
78  return weights;
79  }
80 
84  virtual std::vector<float> getTargets() override { return m_dataset.getTargets(); }
85 
89  virtual std::vector<bool> getSignals() override { return m_dataset.getSignals(); }
90 
95  virtual void loadEvent(unsigned int event) override;
96 
97  private:
99  std::vector<float> m_weights;
100  };
101 
106  class SidebandDataset : public Dataset {
107 
108  public:
116  SidebandDataset(const GeneralOptions& general_options, Dataset& dataset, Dataset& mc_dataset, const std::string& sideband_variable);
117 
121  virtual unsigned int getNumberOfFeatures() const override { return m_dataset.getNumberOfFeatures(); }
122 
126  virtual unsigned int getNumberOfSpectators() const override { return m_dataset.getNumberOfSpectators(); }
127 
131  virtual unsigned int getNumberOfEvents() const override { return m_dataset.getNumberOfEvents(); };
132 
137  virtual std::vector<float> getFeature(unsigned int iFeature) override { return m_dataset.getFeature(iFeature); }
138 
143  virtual std::vector<float> getSpectator(unsigned int iSpectator) override { return m_dataset.getSpectator(iSpectator); }
144 
149  virtual void loadEvent(unsigned int event) override;
150 
151  private:
157  };
158 
163  class SPlotDataset : public Dataset {
164 
165  public:
173  SPlotDataset(const GeneralOptions& general_options, Dataset& dataset, const std::vector<float>& weights, float signalFraction);
174 
178  virtual unsigned int getNumberOfFeatures() const override { return m_dataset.getNumberOfFeatures(); }
179 
183  virtual unsigned int getNumberOfSpectators() const override { return m_dataset.getNumberOfSpectators(); }
184 
188  virtual unsigned int getNumberOfEvents() const override { return 2 * m_dataset.getNumberOfEvents(); };
189 
194  virtual void loadEvent(unsigned int event) override;
195 
199  virtual float getSignalFraction() override;
200 
201  private:
203  std::vector<float> m_weights;
205  };
206 
212  std::vector<float> getSPlotWeights(Dataset& dataset, Binning& binning);
213 
219  std::vector<float> getBoostWeights(Dataset& dataset, Binning& binning);
220 
227  std::vector<float> getAPlotWeights(Dataset& dataset, Binning& binning, const std::vector<float>& boost_prediction);
228 
229  }
231 }
232 #endif
Belle2::MVA::SPlotDataset::SPlotDataset
SPlotDataset(const GeneralOptions &general_options, Dataset &dataset, const std::vector< float > &weights, float signalFraction)
Constructs a new SPlotDataset.
Definition: DataDriven.cc:163
Belle2::MVA::SidebandDataset::loadEvent
virtual void loadEvent(unsigned int event) override
Load the event number iEvent.
Definition: DataDriven.cc:137
Belle2::MVA::SidebandDataset::getNumberOfFeatures
virtual unsigned int getNumberOfFeatures() const override
Returns the number of features in this dataset.
Definition: DataDriven.h:121
Belle2::MVA::ReweightingDataset::getWeights
virtual std::vector< float > getWeights() override
Returns all weights.
Definition: DataDriven.h:72
Belle2::MVA::Dataset
Abstract base class of all Datasets given to the MVA interface The current event can always be access...
Definition: Dataset.h:34
Belle2::MVA::ReweightingDataset::getNumberOfSpectators
virtual unsigned int getNumberOfSpectators() const override
Returns the number of features in this dataset.
Definition: DataDriven.h:50
Belle2::MVA::Dataset::getNumberOfFeatures
virtual unsigned int getNumberOfFeatures() const =0
Returns the number of features in this dataset.
Belle2::MVA::ReweightingDataset::getNumberOfFeatures
virtual unsigned int getNumberOfFeatures() const override
Returns the number of features in this dataset.
Definition: DataDriven.h:45
Belle2::MVA::Dataset::getFeature
virtual std::vector< float > getFeature(unsigned int iFeature)
Returns all values of one feature in a std::vector<float>
Definition: Dataset.cc:86
Belle2::MVA::SidebandDataset::getNumberOfEvents
virtual unsigned int getNumberOfEvents() const override
Returns the number of events in this dataset.
Definition: DataDriven.h:131
Belle2::MVA::ReweightingDataset::getSpectator
virtual std::vector< float > getSpectator(unsigned int iSpectator) override
Returns all values of one spectator in a std::vector<float>
Definition: DataDriven.h:67
Belle2::MVA::Dataset::getSpectator
virtual std::vector< float > getSpectator(unsigned int iSpectator)
Returns all values of one spectator in a std::vector<float>
Definition: Dataset.cc:98
Belle2::MVA::SPlotDataset
Dataset for sPlot Wraps a dataset and provides each data-point twice, once as signal and once as back...
Definition: DataDriven.h:163
Belle2::MVA::ReweightingDataset::m_weights
std::vector< float > m_weights
sPlot weights
Definition: DataDriven.h:99
Belle2::MVA::Dataset::getWeights
virtual std::vector< float > getWeights()
Returns all weights.
Definition: Dataset.cc:110
Belle2::MVA::SidebandDataset::m_spectator_index
int m_spectator_index
spectator containing the sideband variable
Definition: DataDriven.h:153
Belle2::MVA::SidebandDataset::m_dataset
Dataset & m_dataset
Wrapped dataset.
Definition: DataDriven.h:152
Belle2::MVA::SPlotDataset::getNumberOfFeatures
virtual unsigned int getNumberOfFeatures() const override
Returns the number of features in this dataset.
Definition: DataDriven.h:178
Belle2::MVA::Dataset::getNumberOfSpectators
virtual unsigned int getNumberOfSpectators() const =0
Returns the number of spectators in this dataset.
Belle2::MVA::ReweightingDataset::loadEvent
virtual void loadEvent(unsigned int event) override
Load the event number iEvent.
Definition: DataDriven.cc:38
Belle2::MVA::SPlotDataset::loadEvent
virtual void loadEvent(unsigned int event) override
Load the event number iEvent.
Definition: DataDriven.cc:172
Belle2::MVA::Dataset::getSignals
virtual std::vector< bool > getSignals()
Returns all is Signals.
Definition: Dataset.cc:134
Belle2::MVA::SPlotDataset::m_dataset
Dataset & m_dataset
Wrapped dataset.
Definition: DataDriven.h:202
Belle2::MVA::SidebandDataset::SidebandDataset
SidebandDataset(const GeneralOptions &general_options, Dataset &dataset, Dataset &mc_dataset, const std::string &sideband_variable)
Constructs a new SidebandDataset.
Definition: DataDriven.cc:48
Belle2::MVA::SPlotDataset::getSignalFraction
virtual float getSignalFraction() override
Returns the signal fraction of the whole sample.
Definition: DataDriven.cc:167
Belle2::MVA::ReweightingDataset::getNumberOfEvents
virtual unsigned int getNumberOfEvents() const override
Returns the number of events in this dataset.
Definition: DataDriven.h:55
Belle2::MVA::SidebandDataset
Dataset for Sideband Substraction Wraps a dataset and provides each data-point with a new weight.
Definition: DataDriven.h:106
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::MVA::SidebandDataset::getNumberOfSpectators
virtual unsigned int getNumberOfSpectators() const override
Returns the number of features in this dataset.
Definition: DataDriven.h:126
Belle2::MVA::SidebandDataset::m_background_weight
double m_background_weight
the weight for background events
Definition: DataDriven.h:155
Belle2::MVA::SidebandDataset::getFeature
virtual std::vector< float > getFeature(unsigned int iFeature) override
Returns all values of one feature in a std::vector<float>
Definition: DataDriven.h:137
Belle2::MVA::ReweightingDataset::ReweightingDataset
ReweightingDataset(const GeneralOptions &general_options, Dataset &dataset, const std::vector< float > &weights)
Constructs a new ReweightingDataset.
Definition: DataDriven.cc:35
Belle2::MVA::ReweightingDataset
Dataset for Reweighting Wraps a dataset and provides each data-point with a new weight.
Definition: DataDriven.h:31
Belle2::MVA::GeneralOptions
General options which are shared by all MVA trainings.
Definition: Options.h:64
Belle2::MVA::SidebandDataset::m_negative_signal_weight
double m_negative_signal_weight
the weight for negative signal events
Definition: DataDriven.h:156
Belle2::MVA::ReweightingDataset::getSignals
virtual std::vector< bool > getSignals() override
Returns all is Signals.
Definition: DataDriven.h:89
Belle2::MVA::SidebandDataset::getSpectator
virtual std::vector< float > getSpectator(unsigned int iSpectator) override
Returns all values of one spectator in a std::vector<float>
Definition: DataDriven.h:143
Belle2::MVA::SPlotDataset::m_weights
std::vector< float > m_weights
sPlot weights
Definition: DataDriven.h:203
Belle2::MVA::ReweightingDataset::getFeature
virtual std::vector< float > getFeature(unsigned int iFeature) override
Returns all values of one feature in a std::vector<float>
Definition: DataDriven.h:61
Belle2::MVA::SPlotDataset::getNumberOfEvents
virtual unsigned int getNumberOfEvents() const override
Returns the number of events in this dataset.
Definition: DataDriven.h:188
Belle2::MVA::Dataset::getTargets
virtual std::vector< float > getTargets()
Returns all targets.
Definition: Dataset.cc:122
Belle2::MVA::Binning
Binning of a data distribution Provides PDF and CDF values of the distribution per bin.
Definition: Binning.h:29
Belle2::MVA::SPlotDataset::getNumberOfSpectators
virtual unsigned int getNumberOfSpectators() const override
Returns the number of features in this dataset.
Definition: DataDriven.h:183
Belle2::MVA::Dataset::getNumberOfEvents
virtual unsigned int getNumberOfEvents() const =0
Returns the number of events in this dataset.
Belle2::MVA::SPlotDataset::m_signalFraction
float m_signalFraction
Signal fraction.
Definition: DataDriven.h:204
Belle2::MVA::ReweightingDataset::getTargets
virtual std::vector< float > getTargets() override
Returns all targets.
Definition: DataDriven.h:84
Belle2::MVA::SidebandDataset::m_signal_weight
double m_signal_weight
the weight for signal events
Definition: DataDriven.h:154
Belle2::MVA::ReweightingDataset::m_dataset
Dataset & m_dataset
Wrapped dataset.
Definition: DataDriven.h:98