00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef LRHelpFunctions_h
00010 #define LRHelpFunctions_h
00011
00020 #include <cmath>
00021 #include <iostream>
00022
00023 #include "TROOT.h"
00024 #include "TString.h"
00025 #include "TFile.h"
00026 #include "TKey.h"
00027 #include "TH1F.h"
00028 #include "TH2F.h"
00029 #include "TF1.h"
00030 #include "TGraph.h"
00031 #include "TList.h"
00032 #include "TPaveText.h"
00033 #include "TText.h"
00034 #include "TCanvas.h"
00035
00036
00037 class LRHelpFunctions {
00038
00039 public:
00040 LRHelpFunctions();
00041 LRHelpFunctions(std::vector<int>, int, std::vector<double>, std::vector<double>,std::vector<const char*>);
00042 LRHelpFunctions(int, double, double, const char*);
00043 ~LRHelpFunctions();
00044 void recreateFitFct(std::vector<int> obsNr, std::vector<const char*> functions);
00045 void initLRHistsAndFits(int, double, double, const char*);
00046 void setObsFitParameters(int obs,std::vector<double>);
00047 void fillToSignalHists(std::vector<double>, double weight = 1.0);
00048 void fillToBackgroundHists(std::vector<double>, double weight = 1.0);
00049 void fillToSignalHists(int, double, double weight = 1.0);
00050 void fillToBackgroundHists(int, double, double weight = 1.0);
00051 void fillToSignalCorrelation(int obsNbr1, double obsVal1, int obsNbr2,
00052 double obsVal2, double weight);
00053 void normalizeSandBhists();
00054 void makeAndFitSoverSplusBHists();
00055 void readObsHistsAndFits(TString,std::vector<int>,bool);
00056 void storeToROOTfile(TString);
00057 void storeControlPlots(TString);
00058 void fillLRSignalHist(double, double weight = 1.0);
00059 void fillLRBackgroundHist(double, double weight = 1.0);
00060 void makeAndFitPurityHists();
00061 double calcLRval(std::vector<double>);
00062 double calcPtdrLRval(std::vector<double> vals, bool useCorrelation = false);
00063 double calcProb(double);
00064 bool obsFitIncluded(int);
00065 void setXlabels(const std::vector<std::string> & xLabels);
00066 void setYlabels(const std::vector<std::string> & yLabels);
00067 void singlePlot(TString fname, int obsNbr, TString extension= TString("eps"));
00068 void purityPlot(TString fname, TString extension= TString("eps"));
00069
00070
00071 private:
00072 std::vector<TH1F*> hObsS, hObsB, hObsSoverSplusB;
00073 std::vector<TH2F*> hObsCorr;
00074 std::vector<TF1*> fObsSoverSplusB;
00075 TH1F *hLRtotS, *hLRtotB, *hLRtotSoverSplusB;
00076 TF1 *fLRtotSoverSplusB;
00077 TGraph *hEffvsPur, *hLRValvsPur, *hLRValvsEff;
00078 bool constructPurity;
00079 std::vector<int> obsNumbers;
00080 };
00081
00082 #endif