MaCh3  2.2.3
Reference Guide
PredictiveThrower.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "Fitters/FitterBase.h"
4 
6 
16 
23 class PredictiveThrower : public FitterBase {
24  public:
29  virtual ~PredictiveThrower();
30 
32  void ProduceToys();
33 
35  void RunPredictiveAnalysis();
36 
38  void RunMCMC() override {
39  MACH3LOG_ERROR("{} is not supported in {}", __func__, GetName());
40  throw MaCh3Exception(__FILE__ , __LINE__ );
41  };
42 
43  private:
45  void SetParamters();
46 
48  void SetupToyGeneration();
49 
51  bool LoadToys();
52 
55 
57  std::unique_ptr<TH1D> MakePredictive(const std::vector<std::unique_ptr<TH1D>>& Toys,
58  const std::string& Sample_Name,
59  const std::string& suffix,
60  const bool DebugHistograms);
61 
63  std::vector<std::unique_ptr<TH2D>> ProduceSpectra(const std::vector<std::vector<std::unique_ptr<TH1D>>>& Toys,
64  const std::string suffix);
65 
67  void PosteriorPredictivepValue(const std::vector<std::unique_ptr<TH1D>>& PostPred_mc,
68  //const std::vector<std::unique_ptr<TH1D>>& PostPred_w2,
69  const std::vector<TDirectory*>& SampleDir);
70 
71 
76  double GetLLH(const std::unique_ptr<TH1D>& DatHist,
77  const std::unique_ptr<TH1D>& MCHist,
78  const std::unique_ptr<TH1D>& W2Hist,
79  SampleHandlerBase* SampleHandler);
80 
82  void MakeChi2Plots(const std::vector<std::vector<double>>& Chi2_x,
83  const std::string& Chi2_x_title,
84  const std::vector<std::vector<double>>& Chi2_y,
85  const std::string& Chi2_y_title,
86  const std::vector<TDirectory*>& SampleDir,
87  const std::string Title);
88 
90  bool FullLLH;
95 
99  std::vector<std::string> SampleNames;
101  std::vector<int> SampleObjectMap;
102 
104  int Ntoys;
106  std::vector<std::string> ParameterGroupsNotVaried;
108  std::unordered_set<int> ParameterOnlyToVary;
109 
112 
114  std::vector<std::unique_ptr<TH1D>> Data_Hist;
116  std::vector<std::unique_ptr<TH1D>> MC_Nom_Hist;
118  std::vector<std::unique_ptr<TH1D>> W2_Nom_Hist;
119 
122  std::vector<std::vector<std::unique_ptr<TH1D>>> MC_Hist_Toy;
125  std::vector<std::vector<std::unique_ptr<TH1D>>> W2_Hist_Toy;
126 
128  std::vector<double> ReweightWeight;
130  std::vector<double> PenaltyTerm;
131 };
132 
#define MACH3LOG_ERROR
Definition: MaCh3Logger.h:27
Base class for implementing fitting algorithms.
Definition: FitterBase.h:23
std::string GetName() const
Get name of class.
Definition: FitterBase.h:70
manager * fitMan
The manager.
Definition: FitterBase.h:110
Custom exception class for MaCh3 errors.
Class responsible for handling of systematic error parameters with different types defined in the con...
Implementation of Prior/Posterior Predictive and Bayesian p-Value calculations following the approach...
void SetParamters()
This set some params to prior value this way you can evaluate errors from subset of errors.
std::vector< double > PenaltyTerm
Penalty term values for each toy by default 0.
std::vector< std::string > SampleNames
Name of a single sample.
std::vector< std::unique_ptr< TH1D > > MC_Nom_Hist
Vector of MC histograms.
virtual ~PredictiveThrower()
Destructor.
bool FullLLH
KS: Use Full LLH or only sample contribution based on discussion with Asher we almost always only wan...
std::unique_ptr< TH1D > MakePredictive(const std::vector< std::unique_ptr< TH1D >> &Toys, const std::string &Sample_Name, const std::string &suffix, const bool DebugHistograms)
Produce posterior predictive distribution.
void RunPredictiveAnalysis()
Main routine responsible for producing posterior predictive distributions and $p$-value.
bool LoadToys()
Load existing toys.
PredictiveThrower(manager *const fitMan)
Constructor.
std::vector< std::vector< std::unique_ptr< TH1D > > > W2_Hist_Toy
std::unordered_set< int > ParameterOnlyToVary
KS: Index of parameters groups that will be varied.
bool Is_PriorPredictive
Whether it is Prior or Posterior predictive.
std::vector< std::string > ParameterGroupsNotVaried
KS: Names of parameter groups that will not be varied.
std::vector< std::unique_ptr< TH1D > > W2_Nom_Hist
Vector of W2 histograms.
int NModelParams
KS: Count total number of model parameters which can be used for stuff like BIC.
void RunMCMC() override
This is not used in this class.
int Ntoys
Number of toys we are generating analysing.
void SetupToyGeneration()
Setup useful variables etc before stating toy generation.
void MakeChi2Plots(const std::vector< std::vector< double >> &Chi2_x, const std::string &Chi2_x_title, const std::vector< std::vector< double >> &Chi2_y, const std::string &Chi2_y_title, const std::vector< TDirectory * > &SampleDir, const std::string Title)
Produce Chi2 plot for a single sample based on which $p$-value is calculated.
std::vector< int > SampleObjectMap
Maps if sample with given SampleHandler, useful if we have more than one sample in single object.
void SetupSampleInformation()
Setup sample information.
void PosteriorPredictivepValue(const std::vector< std::unique_ptr< TH1D >> &PostPred_mc, const std::vector< TDirectory * > &SampleDir)
Calculate Posterior Predictive $p$-value.
int TotalNumberOfSamples
Number of toys we are generating analysing.
void ProduceToys()
Produce toys by throwing from MCMC.
std::vector< std::unique_ptr< TH2D > > ProduceSpectra(const std::vector< std::vector< std::unique_ptr< TH1D >>> &Toys, const std::string suffix)
Produce Violin style spectra.
ParameterHandlerGeneric * ModelSystematic
Pointer to El Generico.
std::vector< double > ReweightWeight
Reweighting factors applied for each toy, by default 1.
double GetLLH(const std::unique_ptr< TH1D > &DatHist, const std::unique_ptr< TH1D > &MCHist, const std::unique_ptr< TH1D > &W2Hist, SampleHandlerBase *SampleHandler)
Helper functions to calculate likelihoods using TH1D.
std::vector< std::unique_ptr< TH1D > > Data_Hist
Vector of Data histograms.
std::vector< std::vector< std::unique_ptr< TH1D > > > MC_Hist_Toy
Class responsible for handling implementation of samples used in analysis, reweighting and returning ...
The manager class is responsible for managing configurations and settings.
Definition: Manager.h:16