| 1 | #ifndef MARS_MHMcUnfoldCoeff
|
|---|
| 2 | #define MARS_MHMcUnfoldCoeff
|
|---|
| 3 |
|
|---|
| 4 | #ifndef MARS_MH
|
|---|
| 5 | #include "MH.h"
|
|---|
| 6 | #endif
|
|---|
| 7 |
|
|---|
| 8 | class TF1;
|
|---|
| 9 | class TH1D;
|
|---|
| 10 | class TH2D;
|
|---|
| 11 | class MBinning;
|
|---|
| 12 |
|
|---|
| 13 | class MHMcUnfoldCoeff : public MH
|
|---|
| 14 | {
|
|---|
| 15 | private:
|
|---|
| 16 |
|
|---|
| 17 | TH1D* fHistAll; // histogram of all events (fine bins)
|
|---|
| 18 | TH1D* fHistWeight; // histogram of weights (fine bins)
|
|---|
| 19 |
|
|---|
| 20 | TH2D* fHistMcE; // histogram of MC energy for survivors (coarse bins)
|
|---|
| 21 | TH2D* fHistEstE; // histogram of estimated energy for survivors (coarse bins)
|
|---|
| 22 | TH2D* fHistCoeff; // histogram of coefficients for iterative unfolding
|
|---|
| 23 |
|
|---|
| 24 | Int_t fNsubbins; // number of subbins per coarse bin
|
|---|
| 25 | Double_t fEmin; // [GeV] absolute minimum energy where weights are computed
|
|---|
| 26 | Double_t fEmax; // [GeV] absolute maximum energy where weights are computed
|
|---|
| 27 | Int_t fNumMin; // minimum number of events in a fine bin required to compute the weight
|
|---|
| 28 |
|
|---|
| 29 | MBinning* fFineBinning; // fine binning (used for weights)
|
|---|
| 30 |
|
|---|
| 31 | public:
|
|---|
| 32 |
|
|---|
| 33 | MHMcUnfoldCoeff(const char *name=NULL, const char *title=NULL);
|
|---|
| 34 |
|
|---|
| 35 | virtual ~MHMcUnfoldCoeff();
|
|---|
| 36 |
|
|---|
| 37 | void FillAll(Double_t energy);
|
|---|
| 38 | void FillSel(Double_t mcenergy,Double_t estenergy,Double_t theta);
|
|---|
| 39 | void Draw(Option_t* option="");
|
|---|
| 40 | void ComputeWeights(TF1* spectrum);
|
|---|
| 41 | void ComputeCoefficients();
|
|---|
| 42 |
|
|---|
| 43 | void SetCoarseBinnings(const MBinning& binsEnergy,const MBinning& binsTheta);
|
|---|
| 44 | void SetNsubbins(Int_t n) {fNsubbins=n;}
|
|---|
| 45 | void SetEmax(Double_t emax) {fEmax=emax;}
|
|---|
| 46 | void SetEmin(Double_t emin) {fEmin=emin;}
|
|---|
| 47 | void SetNumMin(Int_t n) {fNumMin=n;}
|
|---|
| 48 |
|
|---|
| 49 | const TH1D* GetHistAll() const {return fHistAll;}
|
|---|
| 50 | const TH1D* GetHistWeight() const {return fHistWeight;}
|
|---|
| 51 | const TH2D* GetHistMcE() const {return fHistMcE;}
|
|---|
| 52 | const TH2D* GetHistEstE() const {return fHistEstE;}
|
|---|
| 53 | const TH2D* GetHistCoeff() const {return fHistCoeff;}
|
|---|
| 54 |
|
|---|
| 55 | ClassDef(MHMcUnfoldCoeff, 1) // Data Container to store Unfolding Coefficients
|
|---|
| 56 | };
|
|---|
| 57 |
|
|---|
| 58 | #endif
|
|---|
| 59 |
|
|---|