00001 #ifndef HZZ2L2NU_INCLUDE_LEPTONWEIGHT_H_ 00002 #define HZZ2L2NU_INCLUDE_LEPTONWEIGHT_H_ 00003 00004 #include <WeightBase.h> 00005 00006 #include <Dataset.h> 00007 #include <ElectronBuilder.h> 00008 #include <MuonBuilder.h> 00009 #include <Options.h> 00010 #include <PhysicsObjects.h> 00011 00012 00013 class PtEtaHistogram; 00014 00015 00029 class LeptonWeight : public WeightBase { 00030 public: 00032 LeptonWeight(Dataset &dataset, Options const &options, 00033 ElectronBuilder const *electronBuilder, 00034 MuonBuilder const *muonBuilder); 00035 00036 ~LeptonWeight(); 00037 00039 double NominalWeight() const override; 00040 00046 double ElectronSF(Electron const &electron) const; 00047 00053 double MuonSF(Muon const &muon) const; 00054 00055 private: 00057 std::vector<PtEtaHistogram> muonScaleFactors_, electronScaleFactors_; 00058 00060 ElectronBuilder const *electronBuilder_; 00061 00063 MuonBuilder const *muonBuilder_; 00064 }; 00065 00066 #endif // HZZ2L2NU_INCLUDE_LEPTONWEIGHT_H_ 00067