116 static const std::map<int,std::string> theMuonCategories = {
131 std::string categoryPath = muonContainerName +
"/" + category +
"/";
139 if (category ==
"All") {
154 std::make_unique<MuonTrackValidationPlots>(
nullptr, categoryPath,
"MSOnlyMETrackParticles",
m_isData));
159 std::make_unique<MuonTrackValidationPlots>(
nullptr, categoryPath,
"IDSelectedTrackParticles",
m_isData));
163 std::make_unique<MuonTrackValidationPlots>(
nullptr, categoryPath,
"IDForwardTrackParticles",
m_isData));
166 if (category != theMuonCategories.at(
ALL))
continue;
175 m_oUnmatchedRecoMuonPlots = std::make_unique<Muon::RecoMuonPlotOrganizer>(
nullptr, muonContainerName +
"/UnmatchedRecoMuons/");
176 m_oUnmatchedTruthMuonPlots = std::make_unique<Muon::TruthMuonPlotOrganizer>(
nullptr, muonContainerName +
"/UnmatchedTruthMuons/");
196 m_h_overview_Z_mass =
new TH1F(Form(
"%s_Overview_Z_mass", muonContainerName.c_str()),
"", 20, 76, 106);
198 m_h_overview_Z_mass_ME =
new TH1F(Form(
"%s_Overview_Z_mass_ME", muonContainerName.c_str()),
"", 20, 76, 106);
200 m_h_overview_Z_mass_ID =
new TH1F(Form(
"%s_Overview_Z_mass_ID", muonContainerName.c_str()),
"", 20, 76, 106);
204 m_h_overview_nObjects.emplace_back(
new TH1F(Form(
"%s_Overview_N_perevent_truth_muons", muonContainerName.c_str()),
205 "Number of truth Muons per event", 20, -0.5, 19.5));
207 new TH1F(Form(
"%s_Overview_N_perevent_muons", muonContainerName.c_str()),
"Number of Muons per event", 20, -0.5, 19.5));
209 new TH1F(Form(
"%s_Overview_N_perevent_tracks", muonContainerName.c_str()),
"Number of Tracks per event", 50, -0.5, 49.5));
210 m_h_overview_nObjects.emplace_back(
new TH1F(Form(
"%s_Overview_N_perevent_truth_segments", muonContainerName.c_str()),
211 "Number of truth Segments per event", 200, -0.5, 199.5));
213 new TH1F(Form(
"%s_Overview_N_perevent_segments", muonContainerName.c_str()),
"Number of Segments per event", 200, -0.5, 199.5));
219 new TH1F(Form(
"%s_Overview_reco_category", muonContainerName.c_str()),
"", 4, 0, 4);
220 for (
int i = 1; i < 4; i++) {
226 int nAuth =
static_cast<int>(xAOD::Muon::Author::NumberOfMuonAuthors);
227 for (
int i = 1; i < 4; i++) {
228 m_h_overview_reco_authors.emplace_back(
new TH1F((muonContainerName +
"_" + theMuonCategories.at(i) +
"_reco_authors").c_str(),
229 (muonContainerName +
"_" + theMuonCategories.at(i) +
"_reco_authors").c_str(),
230 nAuth + 1, -0.5, nAuth + 0.5));
233 (muonContainerName +
"_Other_reco_authors").c_str(), nAuth + 1, -0.5, nAuth + 0.5));
239 return StatusCode::SUCCESS;
327 std::vector<std::pair<const xAOD::Muon*, const xAOD::Muon*> > pairs;
335 pairs.emplace_back(std::make_pair(mu1, mu2));
340 float dMmin {1e10}, mZ{0.};
341 for (std::pair<const xAOD::Muon*, const xAOD::Muon*>&
x : pairs) {
343 const TLorentzVector mu1{
x.first->p4()}, mu2{
x.second->p4()};
344 const float M = (mu1 + mu2).M();
345 if (M < 66000. || M > 116000.)
continue;
348 float dM = std::abs(M - 91187.);
349 if (dM > dMmin)
continue;
363 if (metr1 && metr2) {
364 const TLorentzVector mu1ME{metr1->
p4()}, mu2ME{metr2->
p4()};
376 const TLorentzVector mu1ID{tr1->
p4()}, mu2ID{tr2->
p4()};
387 for (
const auto truthMu : *TruthMuons)
handleTruthMuon(truthMu, beamSpotWeight);
391 for (
const auto smu : *SlowMuons) {
393 const MuonLink link = smu->muonLink();
394 if (!link.isValid())
continue;
408 for (
const auto tp : *IDTracks)
handleMuonTrack(tp, xAOD::Muon::InnerDetectorTrackParticle, beamSpotWeight);
414 for (
const auto tp : *FwdIDTracks)
handleMuonTrack(tp, xAOD::Muon::InnerDetectorTrackParticle, beamSpotWeight);
421 for (
const auto tp : *MuonTracks)
handleMuonTrack(tp, xAOD::Muon::MuonSpectrometerTrackParticle, beamSpotWeight);
425 if (MuonExtrapolatedTracks) {
427 for (
const auto tp : *MuonExtrapolatedTracks)
428 handleMuonTrack(tp, xAOD::Muon::ExtrapolatedMuonSpectrometerTrackParticle, beamSpotWeight);
433 if (MSOnlyMuonExtrapolatedTracks) {
435 for (
const auto tp : *MSOnlyMuonExtrapolatedTracks)
436 handleMuonTrack(tp, xAOD::Muon::MSOnlyExtrapolatedMuonSpectrometerTrackParticle, beamSpotWeight);
441 if (TruthMuonSegments) {
444 for (
const auto truthMuSeg : *TruthMuonSegments)
handleTruthMuonSegment(truthMuSeg, TruthMuons, beamSpotWeight);
457 auto chainGroups =
m_trigDec->getChainGroup(
"HLT_.*mu.*");
458 for (
auto& trig : chainGroups->getListOfTriggers()) {
464 auto L1chainGroups =
m_trigDec->getChainGroup(
"L1_MU.*");
465 for (
auto& L1trig : L1chainGroups->getListOfTriggers()) {
473 if (mu->author() == xAOD::Muon::Author::MuidCo) {
475 ATH_MSG_DEBUG(
"##### m_vRecoMuons_EffDen_CB pt:" << mu->pt() <<
" phi:" << mu->phi() <<
" eta:" << mu->eta());
476 }
else if (mu->author() == xAOD::Muon::Author::MuidSA) {
478 ATH_MSG_DEBUG(
"##### m_vRecoMuons_EffDen_MS pt:" << mu->pt() <<
" phi:" << mu->phi() <<
" eta:" << mu->eta());
497 if (L2SAMuons->
size() != 0) {
498 for (
const auto L2SAmu : *L2SAMuons) {
499 ATH_MSG_DEBUG(
"Muon L2SA Trigger: pt " << L2SAmu->pt() <<
" phi " << L2SAmu->phi() <<
" eta " << L2SAmu->eta()
500 <<
" roiWord " << L2SAmu->roiWord() <<
" sAddress " << L2SAmu->sAddress());
504 if (mu->pt() != 0.) {
509 for (
unsigned int i = 0; i <
m_vL2SAMuons.size(); i++) {
510 unsigned int cont = 0;
524 std::vector<Trig::Feature<xAOD::L2StandAloneMuonContainer> > vec_muons;
525 TString muonItem_str = (TString)muonItem;
526 if (muonItem_str.Contains(
"_OR_")) {
527 muonItem_str.ReplaceAll(
"_OR_",
" ");
529 for (
int i = 0; i < (int)v_subchains.size(); i++) {
531 std::vector<Trig::Feature<xAOD::L2StandAloneMuonContainer> > vec_muons_1 =
533 for (
const auto& mufeat : vec_muons_1) { vec_muons.emplace_back(mufeat); }
539 ATH_MSG_DEBUG(
"Size of vector Trig::Feature<xAOD::L2StandAloneMuonContainer> for chain " << muonItem <<
" = "
540 << vec_muons.size());
541 for (
const auto& mufeat : vec_muons) {
542 ATH_MSG_DEBUG(muonItem <<
" vec_muons.size() = " << vec_muons.size()
543 <<
" mufeat.cptr()->size() = " << mufeat.cptr()->size());
544 for (
unsigned int i = 0; i < mufeat.cptr()->
size(); i++) {
545 ATH_MSG_DEBUG(
"#####" << muonItem <<
" L2SA feature pt: " << (*mufeat.cptr())[i]->pt()
546 <<
" eta: " << (*mufeat.cptr())[i]->eta() <<
" phi: " << (*mufeat.cptr())[i]->phi());
556 if (L2CBMuons->
size() != 0) {
557 for (
const auto L2CBmu : *L2CBMuons) {
558 ATH_MSG_DEBUG(
"Muon L2CB Trigger: pt " << L2CBmu->pt() <<
" phi " << L2CBmu->phi() <<
" eta " << L2CBmu->eta());
561 for (
unsigned int i = 0; i <
m_vL2CBMuons.size(); i++) {
567 for (
unsigned int i = 0; i <
m_vL2CBMuons.size(); i++) {
568 unsigned int cont = 0;
582 std::vector<Trig::Feature<xAOD::L2CombinedMuonContainer> > vec_muons;
583 TString muonItem_str = (TString)muonItem;
584 if (muonItem_str.Contains(
"_OR_")) {
585 muonItem_str.ReplaceAll(
"_OR_",
" ");
587 for (
int i = 0; i < (int)v_subchains.size(); i++) {
589 std::vector<Trig::Feature<xAOD::L2CombinedMuonContainer> > vec_muons_1 =
591 for (
const auto& mufeat : vec_muons_1) { vec_muons.emplace_back(mufeat); }
597 ATH_MSG_DEBUG(
"Size of vector Trig::Feature<xAOD::L2CombinedMuonContainer> for chain " << muonItem <<
" = "
598 << vec_muons.size());
599 for (
const auto& mufeat : vec_muons) {
600 ATH_MSG_DEBUG(muonItem <<
" vec_muons.size() = " << vec_muons.size()
601 <<
" mufeat.cptr()->size() = " << mufeat.cptr()->size());
602 for (
unsigned int i = 0; i < mufeat.cptr()->
size(); i++) {
603 ATH_MSG_DEBUG(
"#####" << muonItem <<
" L2CB feature pt: " << (*mufeat.cptr())[i]->pt()
604 <<
" eta: " << (*mufeat.cptr())[i]->eta() <<
" phi: " << (*mufeat.cptr())[i]->phi());
617 if (EFCombTrigMuons->
size() != 0) {
618 for (
const auto Trigmu : *EFCombTrigMuons) {
619 ATH_MSG_DEBUG(
"Muon EF Trigger: pt " << Trigmu->pt() <<
" phi " << Trigmu->phi() <<
" eta " << Trigmu->eta()
620 <<
" author" << Trigmu->author());
624 for (
unsigned int i = 0; i <
m_vEFMuons.size(); i++) {
625 unsigned int cont = 0;
641 for (
const auto truthMu : *TruthMuons) {
642 ATH_MSG_DEBUG(
"TRUTH:: pt=" << truthMu->pt() <<
" eta=" << truthMu->eta() <<
" phi=" << truthMu->phi());
650 if ((muonItem.find(
"msonly") != std::string::npos)) {
654 std::vector<Trig::Feature<xAOD::MuonContainer> > vec_muons;
655 TString muonItem_str = (TString)muonItem;
656 if (muonItem_str.Contains(
"_OR_")) {
657 muonItem_str.ReplaceAll(
"_OR_",
" ");
659 for (
int i = 0; i < (int)v_subchains.size(); i++) {
662 for (
const auto& mufeat : vec_muons_1) { vec_muons.emplace_back(mufeat); }
668 ATH_MSG_DEBUG(
"Size of vector Trig::Feature<xAOD::MuonContainer> for chain " << muonItem <<
" = " << vec_muons.size());
669 for (
const auto& mufeat : vec_muons) {
670 ATH_MSG_DEBUG(muonItem <<
" vec_muons.size() = " << vec_muons.size()
671 <<
" mufeat.cptr()->size() = " << mufeat.cptr()->size());
672 for (
unsigned int i = 0; i < mufeat.cptr()->
size(); i++) {
673 ATH_MSG_DEBUG(
"#####" << muonItem <<
" EF feature pt: " << (*mufeat.cptr())[i]->pt()
674 <<
" eta: " << (*mufeat.cptr())[i]->eta() <<
" phi: " << (*mufeat.cptr())[i]->phi()
675 <<
" author: " << (*mufeat.cptr())[i]->author());
685 bool break_flag =
false;
691 for (
const auto& mufeat : vec_muons) {
692 for (
unsigned int i = 0; i < mufeat.cptr()->
size(); i++) {
693 if ((
static_cast<int>((*mufeat.cptr())[i]->author()) ==
m_SelectedAuthor) &&
701 << muonItem <<
" pt: " << (*mufeat.cptr())[i]->pt()
702 <<
" eta: " << (*mufeat.cptr())[i]->eta() <<
" phi: " << (*mufeat.cptr())[i]->phi()
703 <<
" author: " << (*mufeat.cptr())[i]->author() <<
" rel_p "
717 if (break_flag)
break;
726 if (L1MuonItem ==
"L1_MU4")
threshold = 4000;
727 else if (L1MuonItem ==
"L1_MU6")
threshold = 6000;
728 else if (L1MuonItem ==
"L1_MU10")
threshold = 10000;
729 else if (L1MuonItem ==
"L1_MU11")
threshold = 11000;
730 else if (L1MuonItem ==
"L1_MU15")
threshold = 15000;
731 else if (L1MuonItem ==
"L1_MU20")
threshold = 20000;
732 for (
const auto TrigL1mu : *L1TrigMuons) {
746 for (
const auto TrigL1mu : *L1TrigMuons) {
747 if (((TrigL1mu->thrValue()) >=
threshold) &&
754 ATH_MSG_DEBUG(
" $$$ L1 feature " << L1MuonItem <<
" pt: " << TrigL1mu->thrValue()
755 <<
" eta: " << TrigL1mu->eta() <<
" phi: " << TrigL1mu->phi());
767 for (
unsigned int m = 0; m <
m_muonItems.size(); m++) {
768 std::vector<Trig::Feature<xAOD::MuonContainer> > vec_muons;
770 if (muonItem_str.Contains(
"_OR_")) {
771 muonItem_str.ReplaceAll(
"_OR_",
" ");
773 for (
int i = 0; i < (int)v_subchains.size(); i++) {
776 for (
const auto& mufeat : vec_muons_1) { vec_muons.emplace_back(mufeat); }
796 bool break_flag =
false;
797 for (
const auto TrigL1mu : *L1TrigMuons) {
798 if (((TrigL1mu->thrValue()) >=
threshold) &&
806 for (
const auto& mufeat : vec_muons) {
807 for (
unsigned int i = 0; i < mufeat.cptr()->
size(); i++) {
808 if ((
static_cast<int>((*mufeat.cptr())[i]->author()) ==
m_SelectedAuthor) &&
820 if (break_flag)
break;
829 return StatusCode::SUCCESS;
1392 std::string histname = hist->GetName();
1395 if (histname.find(
"parameters_z0") != std::string::npos) {
1396 hist->GetXaxis()->Set(80, -200., 200.);
1398 if (histname.find(
"parameters_d0") != std::string::npos && histname.find(
"parameters_d0_small") == std::string::npos) {
1399 hist->GetXaxis()->Set(80, -1., 1.);
1400 hist->GetYaxis()->SetTitle(
"Entries / 0.025 mm");
1403 if (histname.find(
"parameters_d0") != std::string::npos && histname.find(
"parameters_d0_small") == std::string::npos) {
1405 hist->GetYaxis()->SetTitle(
"Entries / 2.5 mm");
1410 if (histname.find(
"trigger_L1_pt") != std::string::npos) {
1411 hist->SetTitle(
"L1Trigger Muons pt threshold");
1412 hist->GetXaxis()->SetTitle(
"L1Trigger Muons pt threshold [GeV]");
1413 hist->GetXaxis()->Set(30, -0.5, 29.5);
1415 if (histname.find(
"trigger_L1_eta_pt") != std::string::npos) {
1416 hist->SetTitle(
"L1Trigger Muons pt threshold vs eta");
1417 hist->GetYaxis()->Set(90, -0.5, 29.5);
1418 hist->GetYaxis()->SetTitle(
"L1Trigger Muons pt threshold [GeV]");
1421 if (histname.find(
"trigger") != std::string::npos &&
1422 ((histname.find(
"Denom_pt") != std::string::npos) || (histname.find(
"Numer_pt") != std::string::npos) ||
1423 (histname.find(
"Features_pt") != std::string::npos)))
1424 hist->GetXaxis()->Set(200, 0., 200.);
1426 if (histname.find(
"hits") != std::string::npos) {
1427 if (histname.find(
"etaLayer2") != std::string::npos)
1428 hist->GetXaxis()->Set(15, -0.5, 14.5);
1429 else if (histname.find(
"etaLayer") != std::string::npos)
1430 hist->GetXaxis()->Set(11, -0.5, 10.5);
1434 bool is2D = !(histname.find(
"_vs_") == std::string::npos);
1437 if (histname.find(
"METrackParticles") != std::string::npos) {
1438 if (histname.find(
"Res_eta") != std::string::npos) {
1440 hist->GetYaxis()->Set(50, -0.025, 0.025);
1442 hist->GetXaxis()->Set(50, -0.025, 0.025);
1443 }
else if (histname.find(
"Res_phi") != std::string::npos) {
1445 hist->GetYaxis()->Set(50, -0.02, 0.02);
1447 hist->GetXaxis()->Set(50, -0.02, 0.02);
1449 }
else if (histname.find(
"MSTrackParticles") != std::string::npos) {
1450 if (histname.find(
"Res_eta") != std::string::npos) {
1452 hist->GetYaxis()->Set(50, -0.025, 0.025);
1454 hist->GetXaxis()->Set(50, -0.025, 0.025);
1455 }
else if (histname.find(
"Res_phi") != std::string::npos) {
1457 hist->GetYaxis()->Set(50, -0.05, 0.05);
1459 hist->GetXaxis()->Set(50, -0.05, 0.05);
1462 if (histname.find(
"Res_eta") != std::string::npos) {
1464 hist->GetYaxis()->Set(50, -0.005, 0.005);
1466 hist->GetXaxis()->Set(50, -0.005, 0.005);
1467 }
else if (histname.find(
"Res_phi") != std::string::npos) {
1469 hist->GetYaxis()->Set(50, -0.002, 0.002);
1471 hist->GetXaxis()->Set(50, -0.002, 0.002);
1475 if (histname.find(
"trigger") != std::string::npos) {
1477 if ((!
m_isData) && histname.find(
"MuidCo") != std::string::npos &&
1478 (histname.find(
"BARREL") != std::string::npos || histname.find(
"WHOLE_DETECT") != std::string::npos)) {
1479 if (histname.find(
"Res_pT") != std::string::npos && histname.find(
"_vs_") == std::string::npos) {
1480 hist->GetXaxis()->Set(100, -0.04, 0.04);
1482 if (histname.find(
"Res_pT_vs_") != std::string::npos) { hist->GetYaxis()->Set(100, -0.04, 0.04); }
1483 if (histname.find(
"Res_eta") != std::string::npos && histname.find(
"_vs_") == std::string::npos) {
1484 hist->GetXaxis()->Set(100, -0.0005, 0.0005);
1486 if (histname.find(
"Res_eta_vs_") != std::string::npos) { hist->GetYaxis()->Set(100, -0.0005, 0.0005); }
1488 if (histname.find(
"Res_phi") != std::string::npos && histname.find(
"_vs_") == std::string::npos) {
1489 hist->GetXaxis()->Set(100, -0.0002, 0.0002);
1491 if (histname.find(
"Res_phi_vs_") != std::string::npos) { hist->GetYaxis()->Set(100, -0.0002, 0.0002); }
1493 if ((!
m_isData) && histname.find(
"MuidCo") != std::string::npos && (histname.find(
"ENDCAPS") != std::string::npos)) {
1494 if (histname.find(
"Res_pT") != std::string::npos && histname.find(
"_vs_") == std::string::npos) {
1495 hist->GetXaxis()->Set(100, -0.05, 0.05);
1497 if (histname.find(
"Res_pT_vs_") != std::string::npos) { hist->GetYaxis()->Set(100, -0.05, 0.05); }
1498 if (histname.find(
"Res_eta") != std::string::npos && histname.find(
"_vs_") == std::string::npos) {
1499 hist->GetXaxis()->Set(100, -0.001, 0.001);
1501 if (histname.find(
"Res_eta_vs_") != std::string::npos) { hist->GetYaxis()->Set(100, -0.001, 0.001); }
1503 if (histname.find(
"Res_phi") != std::string::npos && histname.find(
"_vs_") == std::string::npos) {
1504 hist->GetXaxis()->Set(100, -0.0003, 0.0003);
1506 if (histname.find(
"Res_phi_vs_") != std::string::npos) { hist->GetYaxis()->Set(100, -0.0003, 0.0003); }
1508 if ((!
m_isData) && histname.find(
"MuidSA") != std::string::npos) {
1509 if (histname.find(
"Res_eta") != std::string::npos && histname.find(
"_vs_") == std::string::npos) {
1510 hist->GetXaxis()->Set(100, -0.03, 0.03);
1512 if (histname.find(
"Res_eta_vs_") != std::string::npos) { hist->GetYaxis()->Set(100, -0.03, 0.03); }
1514 if (histname.find(
"Res_phi") != std::string::npos && histname.find(
"_vs_") == std::string::npos) {
1515 hist->GetXaxis()->Set(100, -0.03, 0.03);
1517 if (histname.find(
"Res_phi_vs_") != std::string::npos) { hist->GetYaxis()->Set(100, -0.03, 0.03); }
1519 if ((!
m_isData) && histname.find(
"MuidSA") != std::string::npos && (histname.find(
"BARREL") != std::string::npos)) {
1520 if (histname.find(
"Res_pT") != std::string::npos && histname.find(
"_vs_") == std::string::npos) {
1521 hist->GetXaxis()->Set(100, -0.15, 0.15);
1523 if (histname.find(
"Res_pT_vs_") != std::string::npos) { hist->GetYaxis()->Set(100, -0.15, 0.15); }
1525 if ((!
m_isData) && histname.find(
"MuidSA") != std::string::npos &&
1526 (histname.find(
"ENDCAPS") != std::string::npos || histname.find(
"WHOLE_DETECT") != std::string::npos)) {
1527 if (histname.find(
"Res_pT") != std::string::npos && histname.find(
"_vs_") == std::string::npos) {
1528 hist->GetXaxis()->Set(100, -0.2, 0.2);
1530 if (histname.find(
"Res_pT_vs_") != std::string::npos) { hist->GetYaxis()->Set(100, -0.2, 0.2); }
1534 if ((
m_isData) && histname.find(
"MuidCo") != std::string::npos &&
1535 (histname.find(
"BARREL") != std::string::npos || histname.find(
"WHOLE_DETECT") != std::string::npos)) {
1536 if (histname.find(
"Res_pT") != std::string::npos && histname.find(
"_vs_") == std::string::npos) {
1537 hist->GetXaxis()->Set(100, -0.06, 0.06);
1539 if (histname.find(
"Res_pT_vs_") != std::string::npos) { hist->GetYaxis()->Set(100, -0.06, 0.06); }
1540 if (histname.find(
"Res_eta") != std::string::npos && histname.find(
"_vs_") == std::string::npos) {
1541 hist->GetXaxis()->Set(100, -0.001, 0.001);
1543 if (histname.find(
"Res_eta_vs_") != std::string::npos) { hist->GetYaxis()->Set(100, -0.001, 0.001); }
1545 if (histname.find(
"Res_phi") != std::string::npos && histname.find(
"_vs_") == std::string::npos) {
1546 hist->GetXaxis()->Set(100, -0.0005, 0.0005);
1548 if (histname.find(
"Res_phi_vs_") != std::string::npos) { hist->GetYaxis()->Set(100, -0.0005, 0.0005); }
1550 if ((
m_isData) && histname.find(
"MuidCo") != std::string::npos && (histname.find(
"ENDCAPS") != std::string::npos)) {
1551 if (histname.find(
"Res_pT") != std::string::npos && histname.find(
"_vs_") == std::string::npos) {
1552 hist->GetXaxis()->Set(100, -0.1, 0.1);
1554 if (histname.find(
"Res_pT_vs_") != std::string::npos) { hist->GetYaxis()->Set(100, -0.1, 0.1); }
1555 if (histname.find(
"Res_eta") != std::string::npos && histname.find(
"_vs_") == std::string::npos) {
1556 hist->GetXaxis()->Set(100, -0.0015, 0.0015);
1558 if (histname.find(
"Res_eta_vs_") != std::string::npos) { hist->GetYaxis()->Set(100, -0.0015, 0.0015); }
1560 if (histname.find(
"Res_phi") != std::string::npos && histname.find(
"_vs_") == std::string::npos) {
1561 hist->GetXaxis()->Set(100, -0.0005, 0.0005);
1563 if (histname.find(
"Res_phi_vs_") != std::string::npos) { hist->GetYaxis()->Set(100, -0.0005, 0.0005); }
1565 if ((
m_isData) && histname.find(
"MuidSA") != std::string::npos) {
1566 if (histname.find(
"Res_eta") != std::string::npos && histname.find(
"_vs_") == std::string::npos) {
1567 hist->GetXaxis()->Set(100, -0.03, 0.03);
1569 if (histname.find(
"Res_eta_vs_") != std::string::npos) { hist->GetYaxis()->Set(100, -0.03, 0.03); }
1571 if (histname.find(
"Res_phi") != std::string::npos && histname.find(
"_vs_") == std::string::npos) {
1572 hist->GetXaxis()->Set(100, -0.03, 0.03);
1574 if (histname.find(
"Res_phi_vs_") != std::string::npos) { hist->GetYaxis()->Set(100, -0.03, 0.03); }
1576 if ((
m_isData) && histname.find(
"MuidSA") != std::string::npos && (histname.find(
"BARREL") != std::string::npos)) {
1577 if (histname.find(
"Res_pT") != std::string::npos && histname.find(
"_vs_") == std::string::npos) {
1578 hist->GetXaxis()->Set(100, -0.3, 0.3);
1580 if (histname.find(
"Res_pT_vs_") != std::string::npos) { hist->GetYaxis()->Set(100, -0.3, 0.3); }
1582 if ((
m_isData) && histname.find(
"MuidSA") != std::string::npos &&
1583 (histname.find(
"ENDCAPS") != std::string::npos || histname.find(
"WHOLE_DETECT") != std::string::npos)) {
1584 if (histname.find(
"Res_pT") != std::string::npos && histname.find(
"_vs_") == std::string::npos) {
1585 hist->GetXaxis()->Set(100, -0.5, 0.5);
1587 if (histname.find(
"Res_pT_vs_") != std::string::npos) { hist->GetYaxis()->Set(100, -0.5, 0.5); }
1591 if ((histname.find(
"L2_StandAlone") != std::string::npos)) {
1592 if (histname.find(
"Res_eta") != std::string::npos && histname.find(
"_vs_") == std::string::npos) {
1593 hist->GetXaxis()->Set(100, -0.03, 0.03);
1595 if (histname.find(
"Res_eta_vs_") != std::string::npos) { hist->GetYaxis()->Set(100, -0.03, 0.03); }
1597 if (histname.find(
"Res_phi") != std::string::npos && histname.find(
"_vs_") == std::string::npos) {
1598 hist->GetXaxis()->Set(100, -0.03, 0.03);
1600 if (histname.find(
"Res_phi_vs_") != std::string::npos) { hist->GetYaxis()->Set(100, -0.03, 0.03); }
1602 if ((histname.find(
"L2_StandAlone") != std::string::npos) && (histname.find(
"BARREL") != std::string::npos)) {
1603 if (histname.find(
"Res_pT") != std::string::npos && histname.find(
"_vs_") == std::string::npos) {
1604 hist->GetXaxis()->Set(100, -0.3, 0.3);
1606 if (histname.find(
"Res_pT_vs_") != std::string::npos) { hist->GetYaxis()->Set(100, -0.3, 0.3); }
1608 if ((histname.find(
"L2_StandAlone") != std::string::npos) &&
1609 ((histname.find(
"ENDCAPS") != std::string::npos) || (histname.find(
"WHOLE_DETECT") != std::string::npos))) {
1610 if (histname.find(
"Res_pT") != std::string::npos && histname.find(
"_vs_") == std::string::npos) {
1611 hist->GetXaxis()->Set(100, -0.5, 0.5);
1613 if (histname.find(
"Res_pT_vs_") != std::string::npos) { hist->GetYaxis()->Set(100, -0.5, 0.5); }
1616 if ((histname.find(
"L2_Combined") != std::string::npos)) {
1617 if (histname.find(
"Res_eta") != std::string::npos && histname.find(
"_vs_") == std::string::npos) {
1618 hist->GetXaxis()->Set(100, -0.002, 0.002);
1620 if (histname.find(
"Res_eta_vs_") != std::string::npos) { hist->GetYaxis()->Set(100, -0.002, 0.002); }
1622 if (histname.find(
"Res_phi") != std::string::npos && histname.find(
"_vs_") == std::string::npos) {
1623 hist->GetXaxis()->Set(100, -0.001, 0.001);
1625 if (histname.find(
"Res_phi_vs_") != std::string::npos) { hist->GetYaxis()->Set(100, -0.001, 0.001); }
1626 if (histname.find(
"Res_pT") != std::string::npos && histname.find(
"_vs_") == std::string::npos) {
1627 hist->GetXaxis()->Set(100, -0.2, 0.2);
1629 if (histname.find(
"Res_pT_vs_") != std::string::npos) { hist->GetYaxis()->Set(100, -0.2, 0.2); }