Go to the documentation of this file.00001 #ifndef PhysicsTools_SideBandSubtraction_h
00002 #define PhysicsTools_SideBandSubtraction_h
00003 #include <string>
00004 #include "TROOT.h"
00005 #include "RooRealVar.h"
00006
00007 class TH1F;
00008 class TF1;
00009 class RooAbsPdf;
00010 class RooDataSet;
00011 class RooFitResult;
00012
00013 typedef struct
00014 {
00015 Double_t min;
00016 Double_t max;
00017 std::string RegionName;
00018 } SbsRegion;
00019
00020 class SideBandSubtract
00021 {
00022 private:
00023 void print_plot(RooRealVar* printVar, std::string outname);
00024 Double_t getYield(std::vector<SbsRegion> Regions, RooAbsPdf *PDF);
00025 RooAbsPdf *BackgroundPDF;
00026 RooAbsPdf *ModelPDF;
00027 RooDataSet* Data;
00028 RooRealVar* SeparationVariable;
00029 bool verbose;
00030 std::vector<SbsRegion> SignalRegions;
00031 std::vector<SbsRegion> SideBandRegions;
00032 std::vector<TH1F> SideBandHistos;
00033 std::vector<TH1F> RawHistos;
00034 std::vector<TH1F> SBSHistos;
00035 std::vector<TH1F*> BaseHistos;
00036 TH1F* base_histo;
00037 RooFitResult *fit_result;
00038 Double_t SignalSidebandRatio;
00039 public:
00040 SideBandSubtract();
00041
00042
00043
00044
00045
00046
00047
00048 SideBandSubtract(RooAbsPdf *model_shape,
00049 RooAbsPdf *bkg_shape,
00050 RooDataSet* data,
00051 RooRealVar* sep_var,
00052 std::vector<TH1F*> base,
00053 bool verb);
00054 ~SideBandSubtract();
00055 void addSignalRegion(Double_t min, Double_t max);
00056 void addSideBandRegion(Double_t min, Double_t max);
00057 int doGlobalFit();
00058 int doSubtraction(RooRealVar* variable,Double_t stsratio,Int_t index);
00059 void doFastSubtraction(TH1F &Total, TH1F &Result, SbsRegion& leftRegion, SbsRegion& rightRegion);
00060 void printResults(std::string prefix="");
00061 void saveResults(std::string outname);
00062
00063
00064 void setDataSet(RooDataSet* newData);
00065 RooFitResult* getFitResult();
00066 std::vector<TH1F> getRawHistos();
00067 std::vector<TH1F> getSBSHistos();
00068 std::vector<TH1F*> getBaseHistos();
00069 Double_t getSTSRatio();
00070 void resetSBSProducts();
00071 };
00072
00073 #endif