1 |
//--------------------------------------------------------------------------------------------------
|
2 |
// $Id: FakeRate.h,v 1.3 2009/07/20 19:05:04 loizides Exp $
|
3 |
//
|
4 |
// FakeRate
|
5 |
//
|
6 |
// Class for storing the fake rates.
|
7 |
//
|
8 |
// Authors: S.Xie
|
9 |
//--------------------------------------------------------------------------------------------------
|
10 |
|
11 |
#ifndef MITPHYSICS_FAKEMODS_FAKERATE_H
|
12 |
#define MITPHYSICS_FAKEMODS_FAKERATE_H
|
13 |
|
14 |
#include "MitAna/DataTree/interface/DataObject.h"
|
15 |
#include "MitCommon/DataFormats/interface/TH2DAsymErr.h"
|
16 |
|
17 |
class TH1F;
|
18 |
class TH2F;
|
19 |
class TF1;
|
20 |
class TF2;
|
21 |
|
22 |
namespace mithep
|
23 |
{
|
24 |
class FakeRate : public DataObject
|
25 |
{
|
26 |
public:
|
27 |
FakeRate() {}
|
28 |
FakeRate(TString eleFRFile, TString muonFRFile, TString eleFRFunctionName,
|
29 |
TString muonFRFunctionName, TString eleFRHistName, TString muonFRHistName,
|
30 |
Bool_t use2DFakeRate,
|
31 |
Bool_t useFitFunction) : fElectronFRFilename(eleFRFile),
|
32 |
fMuonFRFilename(muonFRFile),
|
33 |
fElectronFRFunctionName(eleFRFunctionName),
|
34 |
fMuonFRFunctionName(muonFRFunctionName),
|
35 |
fElectronFRHistName(eleFRHistName),
|
36 |
fMuonFRHistName(muonFRHistName),
|
37 |
fUse2DFakeRate (use2DFakeRate),
|
38 |
fUseFitFunction(useFitFunction) {
|
39 |
fIsInit = Init();
|
40 |
}
|
41 |
|
42 |
Bool_t Init();
|
43 |
Double_t ElectronFakeRate(Double_t et, Double_t eta, Double_t phi);
|
44 |
Double_t ElectronFakeRateError(Double_t pt, Double_t eta, Double_t phi,
|
45 |
mithep::TH2DAsymErr::ErrorType errorType);
|
46 |
Double_t ElectronFakeRateStatErrorLow(Double_t pt, Double_t eta, Double_t phi);
|
47 |
Double_t ElectronFakeRateStatErrorHigh(Double_t pt, Double_t eta, Double_t phi);
|
48 |
Double_t ElectronFakeRateSysErrorLow(Double_t pt, Double_t eta, Double_t phi);
|
49 |
Double_t ElectronFakeRateSysErrorHigh(Double_t pt, Double_t eta, Double_t phi);
|
50 |
Double_t ElectronFakeRateErrorLow(Double_t pt, Double_t eta, Double_t phi);
|
51 |
Double_t ElectronFakeRateErrorHigh(Double_t pt, Double_t eta, Double_t phi);
|
52 |
Double_t MuonFakeRate(Double_t pt, Double_t eta, Double_t phi);
|
53 |
Double_t MuonFakeRateError(Double_t pt, Double_t eta, Double_t phi,
|
54 |
mithep::TH2DAsymErr::ErrorType errorType);
|
55 |
Double_t MuonFakeRateStatErrorLow(Double_t pt, Double_t eta, Double_t phi);
|
56 |
Double_t MuonFakeRateStatErrorHigh(Double_t pt, Double_t eta, Double_t phi);
|
57 |
Double_t MuonFakeRateSysErrorLow(Double_t pt, Double_t eta, Double_t phi);
|
58 |
Double_t MuonFakeRateSysErrorHigh(Double_t pt, Double_t eta, Double_t phi);
|
59 |
Double_t MuonFakeRateErrorLow(Double_t pt, Double_t eta, Double_t phi);
|
60 |
Double_t MuonFakeRateErrorHigh(Double_t pt, Double_t eta, Double_t phi);
|
61 |
|
62 |
const char *GetElectronFRFilename() { return fElectronFRFilename; }
|
63 |
const char *GetMuonFRFilename() { return fMuonFRFilename; }
|
64 |
const char *GetElectronFRFunctionName() { return fElectronFRFunctionName; }
|
65 |
const char *GetMuonFRFunctionName() { return fMuonFRFunctionName; }
|
66 |
const char *GetElectronFRHistName() { return fElectronFRHistName; }
|
67 |
const char *GetMuonFRHistName() { return fMuonFRHistName; }
|
68 |
Bool_t GetUse2DFakeRate() { return fUse2DFakeRate; }
|
69 |
Bool_t GetUseFitFunction() { return fUseFitFunction; }
|
70 |
TH2DAsymErr *GetMuonFakeRate() { return fMuonFakeRateHist_PtEta; }
|
71 |
TH2DAsymErr *GetElectronFakeRate() { return fElectronFakeRateHist_PtEta; }
|
72 |
|
73 |
void SetElectronFRFilename(const char *name) { fElectronFRFilename = name; }
|
74 |
void SetMuonFRFilename(const char *name) { fMuonFRFilename = name; }
|
75 |
void SetElectronFRFunctionName(const char *name) { fElectronFRFunctionName = name; }
|
76 |
void SetMuonFRFunctionName(const char *name) { fMuonFRFunctionName = name; }
|
77 |
void SetElectronFRHistName(const char *name) { fElectronFRHistName = name; }
|
78 |
void SetMuonFRHistName(const char *name) { fMuonFRHistName = name; }
|
79 |
void SetUse2DFakeRate(Bool_t b) { fUse2DFakeRate = b; }
|
80 |
void SetUseFitFunction(Bool_t b) { fUseFitFunction = b; }
|
81 |
|
82 |
protected:
|
83 |
void DeleteHistos();
|
84 |
TString fElectronFRFilename; //filename of file containing electron fake rate
|
85 |
TString fMuonFRFilename; //filename of file containing muon fake rate
|
86 |
TString fElectronFRFunctionName; //name of electron fake rate function
|
87 |
TString fMuonFRFunctionName; //name of muon fake rate function
|
88 |
TString fElectronFRHistName; //name of histogram containing electron fake rate
|
89 |
TString fMuonFRHistName; //name of histogram containing muon fake rate
|
90 |
Bool_t fUse2DFakeRate; //whether to use 2D pt-eta fake rate
|
91 |
Bool_t fUseFitFunction; //whether to use fit function or not
|
92 |
|
93 |
private:
|
94 |
Bool_t fIsInit; //=true if histograms are loaded
|
95 |
TH2DAsymErr *fElectronFakeRateHist_PtEta; //2D Fake Rate for electrons
|
96 |
TH2DAsymErr *fMuonFakeRateHist_PtEta; //2D Fake Rate for muons
|
97 |
TH1F *fElectronFakeRateHist_Pt; //1D Fake Rate for electrons
|
98 |
TH1F *fMuonFakeRateHist_Pt; //1D Fake Rate for electrons
|
99 |
TF2 *fElectronFakeRateFit_PtEta; //2D Fake Rate Fit for electrons
|
100 |
TF2 *fMuonFakeRateFit_PtEta; //2D Fake Rate Fit for muons
|
101 |
TF1 *fElectronFakeRateFit_Pt; //1D Fake Rate Fit for electrons
|
102 |
TF1 *fMuonFakeRateFit_Pt; //1D Fake Rate Fit for electrons
|
103 |
|
104 |
ClassDef(FakeRate, 1) // Fake rate class
|
105 |
};
|
106 |
}
|
107 |
#endif
|