| 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 |  | 
|---|