43 const uint32_t _nbins,
55 ptbin_low(_ptbin_low),
56 ptbin_high(_ptbin_high),
57 etabin_low(_etabin_low),
58 etabin_high(_etabin_high) {}
63 assert(plot_ !=
nullptr);
86 std::unique_ptr<TH1F> _base_hist,
93 base_hist(
std::
move(_base_hist)),
94 ptbin_low(_ptbin_low),
95 ptbin_high(_ptbin_high),
96 etabin_low(_etabin_low),
97 etabin_high(_etabin_high) {}
102 assert(plot_ !=
nullptr);
136 for (
auto&
pset : response_plots) {
138 const auto ptbin_low =
pset.getParameter<
double>(
"ptBinLow");
143 const auto response_nbins =
pset.getParameter<uint32_t>(
"responseNbins");
144 const auto response_low =
pset.getParameter<
double>(
"responseLow");
145 const auto response_high =
pset.getParameter<
double>(
"responseHigh");
151 name, title, response_nbins, response_low, response_high,
ptbin_low, ptbin_high, etabin_low, etabin_high));
154 throw std::runtime_error(
"Requested too many jet response plots, aborting as this seems unusual.");
159 for (
auto&
pset : genjet_plots_pset) {
164 const auto ptbins_d =
pset.getParameter<std::vector<double>>(
"ptBins");
165 std::vector<float>
ptbins(ptbins_d.begin(), ptbins_d.end());
180 std::make_unique<TH1F>(
name.c_str(), title.c_str(),
static_cast<int>(
ptbins.size()) - 1,
ptbins.data()),
196 const auto& response_plots = iConfig.
getParameter<std::vector<edm::ParameterSet>>(
"responsePlots");
199 const auto& genjet_plots = iConfig.
getParameter<std::vector<edm::ParameterSet>>(
"genJetPlots");
207 bool use_rawpt =
false;
210 std::vector<int> matchIndices;
213 for (
unsigned int i = 0;
i < genJetCollection.
size();
i++) {
214 const auto& genJet = genJetCollection.
at(
i);
215 const auto pt_gen = genJet.pt();
216 const auto eta_gen =
abs(genJet.eta());
217 const int iMatch = matchIndices[
i];
221 if (
plot.isInEtaBin(eta_gen)) {
228 const auto& recoJet = recoJetCollection[iMatch];
229 auto pt_reco = recoJet.pt();
231 pt_reco *= recoJet.jecFactor(
"Uncorrected");
232 const auto response = pt_reco / pt_gen;
238 if (
plot.isInPtEtaBin(pt_gen, eta_gen)) {
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX)
T getParameter(std::string const &) const
void dqmEndRun(const edm::Run &, const edm::EventSetup &) override
edm::EDGetTokenT< edm::View< pat::Jet > > recoJetsToken
Plot1DInBin(const std::string _name, const std::string _title, const uint32_t _nbins, const float _min, const float _max, float _ptbin_low, float _ptbin_high, float _etabin_low, float _etabin_high)
void book(DQMStore::IBooker &booker)
void prepareJetResponsePlots(const std::vector< edm::ParameterSet > &genjet_plots_pset)
void match(const C &candCollection, const M &matchedCandCollection, std::vector< int > &matchIndices, bool matchCharge=false, float dRMax=-1)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
void setCurrentFolder(std::string const &fullpath)
std::vector< Plot1DInBin > jetResponsePlots
bool isInBin(float v, float low, float high)
void fillJetResponse(edm::View< pat::Jet > &recoJetCollection, edm::View< reco::Jet > &genJetCollection)
void dqmBeginRun(const edm::Run &, const edm::EventSetup &) override
edm::EDGetTokenT< edm::View< reco::Jet > > genJetsToken
PFJetAnalyzerDQM(const edm::ParameterSet &)
bool isInBin(float v, float low, float high)
bool isInPtEtaBin(float pt, float eta)
edm::InputTag genJetsLabel
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
#define DEFINE_FWK_MODULE(type)
void book(DQMStore::IBooker &booker)
Abs< T >::type abs(const T &t)
std::unique_ptr< TH1F > base_hist
edm::InputTag recoJetsLabel
edm::EDGetTokenT< reco::CandViewMatchMap > srcRefToJetMap
std::vector< Plot1DInBinVariable > genJetPlots
bool isInEtaBin(float eta)
void analyze(const edm::Event &, const edm::EventSetup &) override
void prepareGenJetPlots(const std::vector< edm::ParameterSet > &genjet_plots_pset)
Plot1DInBinVariable(const std::string _name, const std::string _title, std::unique_ptr< TH1F > _base_hist, float _ptbin_low, float _ptbin_high, float _etabin_low, float _etabin_high)
bool isInPtEtaBin(float pt, float eta)
const_reference at(size_type pos) const
bool isInEtaBin(float eta)