DAS  3.0
Das Analysis System
Observable.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <iostream>
4 #include <list>
5 #include <memory>
6 #include <optional>
7 #include <utility>
8 
9 #include <Eigen/Dense>
10 
11 #include <TString.h>
12 #include <TUnfoldBinning.h>
13 
15 
16 #include "Flow.h"
17 
18 class TH1;
19 class TH2;
20 
21 namespace DAS::Unfolding {
22 
31 struct Filler {
34  virtual ~Filler () = default;
35 
41  virtual std::list<int> fillRec (DistVariation&);
42 
45  virtual void match ();
46 
49  virtual void fillMC (DistVariation&);
50 };
51 
60 class Transformer {
61 
62 protected:
63 
64  //static int offset; //!< number of bins before the present distribution in original binning
65 
68  static void AddAxis (TUnfoldBinning *,
69  TUnfoldBinning *,
70  int
71  );
72 
73 public:
74 
75  static Eigen::VectorXd y;
76 
77  TUnfoldBinning * preBinning,
79 
82  virtual ~Transformer () = default;
83 
86  virtual void Transform
87  (const Eigen::VectorXd&
88  ) const;
89 
92  virtual void RemoveBadInputBins (TH1 *,
93  TH2 *
94  );
95 
100  Transformer (TUnfoldBinning *,
101  bool = true
102  );
103 };
104 
117 struct Observable {
118 
119  static bool isMC;
120  static double maxDR;
122 
123  // The following objects may be used either directly in `getUnfHist` command
124  TUnfoldBinning * recBinning,
126 
129  virtual std::unique_ptr<Filler> getFiller (Darwin::Tools::Flow&) const;
130 
133  virtual std::unique_ptr<Transformer> getTransformer (TUnfoldBinning *) const;
134 
137  virtual void setLmatrix (const std::unique_ptr<TH1>&,
138  std::unique_ptr<TH2>&
139  );
140 
141  virtual ~Observable () = default;
142 protected:
143 
146  Observable (const char *, const char *);
147 };
148 
151 std::vector<Observable *> GetObservables
152  (boost::property_tree::ptree
153  );
154 
155 } // end of namespace DAS::Unfolding
DAS::Unfolding::Transformer::AddAxis
static void AddAxis(TUnfoldBinning *, TUnfoldBinning *, int)
Copy the axis of the source binning object into the target binning object.
Definition: Observable.cc:87
Darwin::Tools::Flow
User-friendly handling of input and output n-tuples.
Definition: Flow.h:78
DAS::Unfolding::Transformer::postBinning
TUnfoldBinning * postBinning
target binning
Definition: Observable.h:78
DAS::Unfolding::Filler::fillMC
virtual void fillMC(DistVariation &)
Fill RM, gen, miss, fake histograms for a given variation.
Definition: Observable.cc:80
DAS::Unfolding::Transformer::Transformer
Transformer(TUnfoldBinning *, bool=true)
Definition: Observable.cc:96
DAS::Unfolding::Observable::getTransformer
virtual std::unique_ptr< Transformer > getTransformer(TUnfoldBinning *) const
Constructs a filler for the observable. By default, no operation is applied.
Definition: Observable.cc:82
DAS::Unfolding::Observable::getFiller
virtual std::unique_ptr< Filler > getFiller(Darwin::Tools::Flow &) const
Constructs a filler for the observable. By default, a dummy filler is returned.
Definition: Observable.cc:72
DAS::Unfolding::Transformer
Definition: Observable.h:60
DAS::Unfolding::Observable::genBinning
TUnfoldBinning * genBinning
particle-level binning
Definition: Observable.h:125
DAS::Unfolding::Filler::match
virtual void match()
Implementation of matching algorithm.
Definition: Observable.cc:79
DAS::Unfolding
Definition: getToyCalculation.cc:37
DAS::Unfolding::Observable::~Observable
virtual ~Observable()=default
DAS::Unfolding::Transformer::preBinning
TUnfoldBinning * preBinning
source binning (either rec or gen level)
Definition: Observable.h:77
DAS::Unfolding::DistVariation
Definition: DistVariation.h:25
DAS::Unfolding::Transformer::~Transformer
virtual ~Transformer()=default
Destructor.
DAS::Unfolding::Filler
Definition: Observable.h:31
DAS::Unfolding::Observable::setLmatrix
virtual void setLmatrix(const std::unique_ptr< TH1 > &, std::unique_ptr< TH2 > &)
Construct regularisation matrix.
Definition: Observable.cc:38
DAS::Unfolding::Observable::Observable
Observable(const char *, const char *)
Constructor.
Definition: Observable.cc:26
DAS::Unfolding::Observable::isMC
static bool isMC
Definition: Observable.h:119
DAS::Unfolding::Filler::~Filler
virtual ~Filler()=default
Destructor.
DAS::Unfolding::Filler::fillRec
virtual std::list< int > fillRec(DistVariation &)
Definition: Observable.cc:78
DAS::Unfolding::Transformer::Transform
virtual void Transform(const Eigen::VectorXd &) const
Copies the input distribution by default.
Definition: Observable.cc:144
DAS::Unfolding::Transformer::y
static Eigen::VectorXd y
output vector
Definition: Observable.h:75
DAS::Unfolding::Transformer::RemoveBadInputBins
virtual void RemoveBadInputBins(TH1 *, TH2 *)
Remove bins with too low coverage for Gaussian hypothesis.
Definition: Observable.cc:122
DistVariation.h
DAS::Unfolding::Observable::recBinning
TUnfoldBinning * recBinning
detector-level binning
Definition: Observable.h:124
DAS::Unfolding::GetObservables
std::vector< Observable * > GetObservables(boost::property_tree::ptree)
Get the observables to unfold.
Definition: Observable.cc:43
DAS::Unfolding::Observable
Definition: Observable.h:117
DAS::Unfolding::Observable::maxDR
static double maxDR
max Delta R
Definition: Observable.h:121