00001 #ifndef TOPUTILS_MUONSMEAR_H__ 00002 #define TOPUTILS_MUONSMEAR_H__ 00003 00004 #include <vector> 00005 #include "TRandom3.h" 00006 00007 class TLorentzVector; 00008 00012 class MuonSmear { 00013 00014 public: 00015 00016 MuonSmear(); 00017 00018 void SetEtaBinEdges(const std::vector<double>& binedges); 00019 00020 void SetC1Vals(const std::vector<double>& c1vals); 00021 void SetC2Vals(const std::vector<double>& c2vals); 00022 00024 void UseTopRediscoverySmearingVals(); 00026 void UseTopRediscoverySmearingValsPlus1s(); 00028 void UseTopRediscoverySmearingValsMinus1s(); 00029 00031 void UseTopRediscoveryScaleVals(); 00033 void UseTopRediscoveryScaleValsPlus1s(); 00035 void UseTopRediscoveryScaleValsMinus1s(); 00036 00038 void UseTopRediscoveryVals(); 00040 void UseTopRediscoveryValsPlus1s(); 00042 void UseTopRediscoveryValsMinus1s(); 00043 00045 void SmearAndScale(TLorentzVector* vec); 00047 void Smear(TLorentzVector* vec); 00049 void Scale(TLorentzVector* vec); 00050 00051 00052 protected: 00053 00054 void UseTopRediscoveryBinEdges(); 00055 00056 std::vector<double> m_etabinedges; 00057 00058 std::vector<double> m_c1_vals; 00059 std::vector<double> m_c2_vals; 00060 00061 int findBin(const double eta) const; 00062 00063 TRandom3 m_rand; 00064 00065 };//class MuonSmear 00066 00067 #endif //TOPUTILS_MUONSMEAR_H__