00001
00002 #ifndef _MULTIJETJESUNCERTAINTYPROVIDER_
00003 #define _MULTIJETJESUNCERTAINTYPROVIDER_
00004
00005 #include "topUtils/JESUncertaintyProvider.h"
00006
00007 class MultijetJESUncertaintyProvider : public JESUncertaintyProvider{
00008
00009 public:
00010
00011
00012 MultijetJESUncertaintyProvider(std::string CollectionName="AntiKt6TopoJetsEM", std::string AnalysisFileName="JESUncertainty.root", std::string FileName="JESUncertainty.root");
00013 ~MultijetJESUncertaintyProvider();
00014
00015
00016
00017 virtual void init();
00018 void includeFlavorComposition(bool include = true);
00019
00020
00021
00022
00023
00024
00025
00026
00027 double getRelPosUncert(double pT, double Eta, double dRmin=3.0, Components UncertComps = JESUncertaintyProvider::NOPILEUP, unsigned int nVtx=1);
00028
00029 double getAbsPosUncert(double pT, double Eta, double dRmin=3.0, Components UncertComps = JESUncertaintyProvider::NOPILEUP, unsigned int nVtx=1);
00030
00031 double getRelNegUncert(double pT, double Eta, double dRmin=3.0, Components UncertComps = JESUncertaintyProvider::NOPILEUP, unsigned int nVtx=1);
00032
00033 double getAbsNegUncert(double pT, double Eta, double dRmin=3.0, Components UncertComps = JESUncertaintyProvider::NOPILEUP, unsigned int nVtx=1);
00034
00035
00036
00037
00038 double getRelUncert(double pT, double Eta, double dRmin, bool isUp, Components UncertComps = JESUncertaintyProvider::NOPILEUP, unsigned int nVtx=1);
00039
00040
00041
00042
00043
00044
00045
00046 #ifdef JES_STANDALONE
00047 ClassDef(MultijetJESUncertaintyProvider,1);
00048 #endif //JES_STANDALONE
00049
00050 private:
00051
00052
00053 TH2D* m_flavorCompGluGraph;
00054 TH2D* m_flavorCompLightGraph;
00055
00056
00057 TH2D* m_deltaRGraph;
00058
00059
00060
00061 TH2D* m_gluonFraction;
00062
00063 TH2D* m_gluonFractionError;
00064
00065 TH2D* m_responseSample;
00066
00067
00068
00069 TFile* m_analysisInputFile;
00070
00071
00072 std::string m_analysisFileName;
00073
00074
00075 bool m_includeFlavorComp;
00076
00077
00078
00079 static int m_counter;
00080
00081
00082 static void incrementCounter(){
00083 m_counter++;
00084 }
00085
00086
00087 virtual bool setInputCollection(std::string CollectionName);
00088
00089
00090 double getComponents(double pT, double Eta, double dRmin, bool isUp, Components UncertComps, unsigned int nVtx);
00091
00092
00093 double getAlphaC(int currentBin, bool isUp);
00094
00095
00096 double getAlphaR(int currentBin, bool isUp, double alphaC, double avgResponse);
00097
00098
00099 double getResponseSample(int currentBin);
00100
00101 };
00102
00103
00104 #endif