57 BOOST_THROW_EXCEPTION( runtime_error(__func__ +
" should only be called for MC"s) );
62 for (
const auto& [rec_it,gen_it]:
matching->match_its) {
64 double genpt = gen_it->CorrPt(v),
65 geny = gen_it->AbsRap();
68 auto igenbin =
obs.
genBinning->GetGlobalBinNumber(genpt,geny);
70 double gJetW = gen_it->Weight(v);
72 if (goodGen) v.gen->Fill(igenbin, gEvW * gJetW);
74 double recpt = rec_it->CorrPt(v),
75 recy = rec_it->AbsRap();
78 auto irecbin =
obs.
recBinning->GetGlobalBinNumber(recpt,recy);
80 double rJetW = rec_it->Weight(v);
82 if ( goodRec && goodGen) { v.RM ->Fill(igenbin, irecbin, gEvW * gJetW * rEvW * rJetW );
83 v.missNoMatch->Fill(igenbin, gEvW * gJetW * (1 - rEvW * rJetW)); }
84 else if (!goodRec && goodGen) v.missOut ->Fill(igenbin, gEvW * gJetW );
85 else if ( goodRec && !goodGen) v.fakeOut ->Fill( irecbin, gEvW * gJetW * rEvW * rJetW );
88 for (
const auto& gen_it:
matching->miss_its) {
90 double pt = gen_it->CorrPt(v),
94 double gJetW = gen_it->Weight(v);
97 v.missNoMatch->Fill(igenbin, gEvW * gJetW);
98 v.gen ->Fill(igenbin, gEvW * gJetW);
101 for (
const auto& rec_it:
matching->fake_its) {
103 double pt = rec_it->CorrPt(v),
104 y = rec_it->AbsRap();
107 double rJetW = rec_it->Weight(v);
110 v.fakeNoMatch->Fill(irecbin, gEvW * rEvW * rJetW);