14 std::set<int> authors,
bool isData,
bool doBinnedResolutionPlots,
15 bool doSeparateSAFMuons) :
30 m_oTruthMuonPlots.emplace_back(std::make_unique<Muon::TruthMuonPlotOrganizer>(
this,
"truth/" + truthSelection));
32 m_oTruthRelatedMuonPlots = std::make_unique<Muon::TruthRelatedMuonPlotOrganizer>(
this,
"matched/AllMuons", doBinnedResolutionPlots);
35 std::vector<int> allPlotCategories(0);
36 std::vector<int> selectedPlotCategories(0);
38 allPlotCategories.emplace_back(i);
43 m_oRecoMuonPlots = std::make_unique<Muon::RecoMuonPlotOrganizer>(
this,
"reco/AllMuons", allPlotCategories);
47 auto sQuality = xAOD::Muon::toString(
static_cast<xAOD::Muon::Quality
>(
m_selectedWPs[i]));
49 this, std::format(
"reco/{:}", sQuality), (sQuality ==
"Medium" || sQuality ==
"Tight") ? allPlotCategories : selectedPlotCategories));
52 bool doBinnedPlots =
false;
53 if (sQuality ==
"Medium") doBinnedPlots =
true;
55 std::make_unique<Muon::TruthRelatedMuonPlotOrganizer>(
this, std::format(
"matched/{:}", sQuality), doBinnedPlots));
62 std::string sAuthor{xAOD::Muon::toString(author)};
63 if (sAuthor ==
"CaloTag") sAuthor =
"CaloTagTight";
65 std::make_unique<Muon::RecoMuonPlotOrganizer>(
this,
"reco/" + sAuthor, (sAuthor ==
"MuidCo") ? allPlotCategories : selectedPlotCategories));
68 std::make_unique<Muon::TruthRelatedMuonPlotOrganizer>(
this,
"matched/" + sAuthor, doBinnedResolutionPlots));
73 if (
static_cast<xAOD::Muon::Author
>(
m_selectedAuthors[i]) == xAOD::Muon::Author::CaloTag) {
74 m_oRecoMuonPlots_perAuthor.emplace_back(std::make_unique<Muon::RecoMuonPlotOrganizer>(
this,
"reco/CaloTagLoose", selectedPlotCategories));
77 std::make_unique<Muon::TruthRelatedMuonPlotOrganizer>(
this,
"matched/CaloTagLoose", doBinnedResolutionPlots));
86 std::make_unique<Muon::TruthRelatedMuonPlotOrganizer>(
this,
"matched/SiAssocForward", doBinnedResolutionPlots));
97 xAOD::Muon::Quality muqual = mu.quality();
104 if (mu.isAuthor(author)) {
105 if (author == (xAOD::Muon::Author::CaloTag)) {
107 if (mu.parameter(ipar, xAOD::Muon::ParamDef::CaloMuonIDTag)) { ; }
108 if (ipar < 11)
continue;
112 if (mu.muonType() != xAOD::Muon::MuonType::SiliconAssociatedForwardMuon || !
m_doSeparateSAFMuons)
118 if (mu.muonType() == xAOD::Muon::MuonType::SiliconAssociatedForwardMuon)
145 if ((mu) && (truthMu)) {
150 if (mu->muonType() == xAOD::Muon::MuonType::SiliconAssociatedForwardMuon || !
m_doSeparateSAFMuons)
155 xAOD::Muon::Quality muqual = mu->quality();
164 if (mu->isAuthor(author)) {
165 if (author == xAOD::Muon::Author::CaloTag) {
167 if (mu->parameter(ipar, xAOD::Muon::ParamDef::CaloMuonIDTag)) { ; }
168 if (ipar < 11)
continue;
171 if (mu->muonType() != xAOD::Muon::MuonType::SiliconAssociatedForwardMuon || !
m_doSeparateSAFMuons)
MuonValidationPlots(PlotBase *pParent, const std::string &sDir, std::set< int > wps, std::set< int > authors, bool isData, bool doBinnedResolutionPlots, bool doSplitSAFMuons)