15 std::vector<unsigned int> authors,
bool isData,
bool doBinnedResolutionPlots,
16 bool doSeparateSAFMuons,
bool doMuonTree) :
18 m_selectedWPs(std::move(wps)),
19 m_selectedAuthors(std::move(authors)),
20 m_truthSelections(2,
""),
21 m_oTruthRelatedMuonPlots(nullptr),
23 m_doSeparateSAFMuons(doSeparateSAFMuons),
38 std::vector<int> allPlotCategories(0);
39 std::vector<int> selectedPlotCategories(0);
41 allPlotCategories.emplace_back(
i);
50 std::string sQuality = Muon::EnumDefs::toString((xAOD::Muon::Quality)
m_selectedWPs[
i]);
52 this,
"reco/" + sQuality, (sQuality ==
"Medium" || sQuality ==
"Tight") ? allPlotCategories : selectedPlotCategories));
55 bool doBinnedPlots =
false;
56 if (sQuality ==
"Medium") doBinnedPlots =
true;
65 if (sAuthor ==
"CaloTag") sAuthor =
"CaloTagTight";
100 xAOD::Muon::Quality muqual =
mu.quality();
109 if (
mu.parameter(ipar, xAOD::Muon::CaloMuonIDTag)) { ; }
110 if (ipar < 11)
continue;
114 if (
mu.muonType() != (xAOD::Muon::MuonType)xAOD::Muon::SiliconAssociatedForwardMuon || !
m_doSeparateSAFMuons)
120 if (
mu.muonType() == (xAOD::Muon::MuonType)xAOD::Muon::SiliconAssociatedForwardMuon)
146 if ((
mu) && (truthMu)) {
156 xAOD::Muon::Quality muqual =
mu->quality();
167 if (
mu->parameter(ipar, xAOD::Muon::CaloMuonIDTag)) { ; }
168 if (ipar < 11)
continue;
210 static const std::array<std::string,6> hitTypes{
"innerSmallHits",
"innerLargeHits",
"middleSmallHits",
211 "middleLargeHits",
"outerSmallHits",
"outerLargeHits"};
215 bool hasEnoughPrecHits =
false;
217 for (
const auto& hitTypeItr : hitTypes) {
220 if (nPrecHits >= minPrecHits) {
221 hasEnoughPrecHits =
true;
226 return (hasEnoughPrecHits);