12 #include "TPaveText.h" 62 std::ostringstream oss;
69 plotType.push_back(
"BadStripsFromAPVs");
71 std::vector<std::string> subDetName;
72 subDetName.push_back(
"TIB");
73 subDetName.push_back(
"TID+");
74 subDetName.push_back(
"TID-");
75 subDetName.push_back(
"TOB");
76 subDetName.push_back(
"TEC+");
77 subDetName.push_back(
"TEC-");
80 const bool stackHistograms =
true;
84 plotStackOptions =
"";
86 plotStackOptions =
"nostack p";
125 std::vector<TH1F*> hLayers;
128 for (std::vector<std::string>::iterator itPlot =
plotType.begin(); itPlot !=
plotType.end(); itPlot++) {
134 hTracker->Scale(1 /
findNormFactor(*itPlot,
"Tracker", stackHistograms));
173 c1 =
new TCanvas((
"c" + *itPlot +
"Tracker").c_str(),
"", 1200, 600);
181 histoStack->Add(hTIB);
186 histoStack->Add(hTID);
191 histoStack->Add(hTOB);
196 histoStack->Add(hTEC);
203 double histoStackMaximum = histoStack->GetMaximum();
204 if (histoStackMaximum == 0) {
207 histoStack->Draw(plotStackOptions.c_str());
208 if (histoStack->GetYaxis()->GetXmax() > 0.9)
209 histoStack->GetYaxis()->SetRangeUser(0., 0.1);
210 legend =
new TLegend(0.4, 0.9, 0.9, 1);
211 legend->AddEntry(hTIB,
"TIB");
212 legend->AddEntry(hTID,
"TID");
213 legend->AddEntry(hTOB,
"TOB");
214 legend->AddEntry(hTEC,
"TEC");
217 textX =
new TPaveText();
218 textY =
new TPaveText();
223 gSystem->ProcessEvents();
227 c1->SaveAs((*itPlot +
"Tracker.png").c_str());
237 for (std::vector<std::string>::iterator itSub = subDetName.begin(); itSub != subDetName.end(); itSub++) {
241 if ((*itSub) ==
"TIB") {
244 legend =
new TLegend(0.4, 0.9, 0.9, 1);
246 }
else if ((*itSub) ==
"TID+" || (*itSub) ==
"TID-") {
249 legend =
new TLegend(0.35, 0.9, 0.9, 1);
251 }
else if ((*itSub) ==
"TOB") {
254 legend =
new TLegend(0.35, 0.9, 0.9, 1);
256 }
else if ((*itSub) ==
"TEC+" || (*itSub) ==
"TEC-") {
259 legend =
new TLegend(0.35, 0.9, 1, 1);
264 std::cerr <<
"Unknown itSub type " << *itSub << std::endl;
268 c1 =
new TCanvas((
"c" + *itPlot + *itSub).c_str(),
"", 1200, 600);
283 for (
unsigned int iLayer = 1; iLayer <=
nLayers; iLayer++) {
351 histoName =
"h" + *itPlot + *itSub + layerName + oss.str();
355 histo2 =
new TH1F(*
histo);
356 histo->Scale(1 /
findNormFactor(*itPlot, *itSub +
" " + layerName +
" " + oss.str(),
false));
357 histo2->Scale(1 /
findNormFactor(*itPlot, *itSub +
" " + layerName +
" " + oss.str(), stackHistograms));
360 c2 =
new TCanvas((
"c" + *itPlot + *itSub + layerName + oss.str()).c_str(),
"", 1200, 600);
362 histo->Draw(plotHistoOptions.c_str());
363 double histoMaximum =
histo->GetMaximum();
365 if (histoMaximum == 0) {
368 legend2 =
new TLegend(0.6, 0.92, 0.9, 0.97);
369 legend2->AddEntry(
histo, (*itSub + layerName + oss.str()).c_str());
372 textX =
new TPaveText();
373 textY =
new TPaveText();
378 gSystem->ProcessEvents();
382 c2->SaveAs((*itPlot + *itSub + layerName + oss.str() +
".png").c_str());
390 hLayers.push_back(histo2);
392 histoStack->Add(hLayers.back());
393 entryLabel = *itSub +
" " + layerName +
" " + oss.str();
394 legend->AddEntry(hLayers.back(), entryLabel.c_str());
402 histoStack->Draw(plotStackOptions.c_str());
409 double histoStackMaximum = histoStack->GetMaximum();
410 if (histoStackMaximum == 0) {
413 if (histoStackMaximum > 0.01)
414 histoStack->SetMaximum(0.01);
415 textX =
new TPaveText();
416 textY =
new TPaveText();
422 gSystem->ProcessEvents();
426 c1->SaveAs((*itPlot + *itSub +
".png").c_str());
442 c->SetFrameBorderMode(0);
447 c->SetCanvasSize(1200, 600);
448 c->SetWindowSize(1200, 600);
453 h->SetMarkerStyle(3);
455 h->SetMarkerColor(1);
461 if (
h->GetNbinsX() > 25)
462 for (
int i = 1;
i <
h->GetNbinsX() - 1;
i++)
463 if ((
i % (
h->GetNbinsX() / 25 + 1)))
464 h->GetXaxis()->SetBinLabel(
i + 1,
"");
478 h->GetYaxis()->SetTitle(
"Fraction of total");
482 if (
h->GetNbinsX() > 25)
483 for (
int i = 1;
i <
h->GetNbinsX() - 1;
i++)
484 if (
i % (
h->GetNbinsX() / 25 + 1))
485 h->GetXaxis()->SetBinLabel(
i + 1,
"");
489 l->SetNColumns(nColumns);
509 TText*
t1 =
t->AddText(
"Fraction of total");
510 t1->SetTextAngle(90.);
516 std::vector<std::string> tkParts;
517 tkParts.push_back(
"Tracker");
518 tkParts.push_back(
"TIB");
519 tkParts.push_back(
"TID");
520 tkParts.push_back(
"TOB");
521 tkParts.push_back(
"TEC");
522 tkParts.push_back(
"TIB Layer 1");
523 tkParts.push_back(
"TIB Layer 2");
524 tkParts.push_back(
"TIB Layer 3");
525 tkParts.push_back(
"TIB Layer 4");
526 tkParts.push_back(
"TID+ Disk 1");
527 tkParts.push_back(
"TID+ Disk 2");
528 tkParts.push_back(
"TID+ Disk 3");
529 tkParts.push_back(
"TID- Disk 1");
530 tkParts.push_back(
"TID- Disk 2");
531 tkParts.push_back(
"TID- Disk 3");
532 tkParts.push_back(
"TOB Layer 1");
533 tkParts.push_back(
"TOB Layer 2");
534 tkParts.push_back(
"TOB Layer 3");
535 tkParts.push_back(
"TOB Layer 4");
536 tkParts.push_back(
"TOB Layer 5");
537 tkParts.push_back(
"TOB Layer 6");
538 tkParts.push_back(
"TEC+ Disk 1");
539 tkParts.push_back(
"TEC+ Disk 2");
540 tkParts.push_back(
"TEC+ Disk 3");
541 tkParts.push_back(
"TEC+ Disk 4");
542 tkParts.push_back(
"TEC+ Disk 5");
543 tkParts.push_back(
"TEC+ Disk 6");
544 tkParts.push_back(
"TEC+ Disk 7");
545 tkParts.push_back(
"TEC+ Disk 8");
546 tkParts.push_back(
"TEC+ Disk 9");
547 tkParts.push_back(
"TEC- Disk 1");
548 tkParts.push_back(
"TEC- Disk 2");
549 tkParts.push_back(
"TEC- Disk 3");
550 tkParts.push_back(
"TEC- Disk 4");
551 tkParts.push_back(
"TEC- Disk 5");
552 tkParts.push_back(
"TEC- Disk 6");
553 tkParts.push_back(
"TEC- Disk 7");
554 tkParts.push_back(
"TEC- Disk 8");
555 tkParts.push_back(
"TEC- Disk 9");
557 std::vector<unsigned int> nModulesStack;
558 nModulesStack.push_back(15148);
559 nModulesStack.push_back(15148);
560 nModulesStack.push_back(15148);
561 nModulesStack.push_back(15148);
562 nModulesStack.push_back(15148);
563 nModulesStack.push_back(2724);
564 nModulesStack.push_back(2724);
565 nModulesStack.push_back(2724);
566 nModulesStack.push_back(2724);
567 nModulesStack.push_back(408);
568 nModulesStack.push_back(408);
569 nModulesStack.push_back(408);
570 nModulesStack.push_back(408);
571 nModulesStack.push_back(408);
572 nModulesStack.push_back(408);
573 nModulesStack.push_back(5208);
574 nModulesStack.push_back(5208);
575 nModulesStack.push_back(5208);
576 nModulesStack.push_back(5208);
577 nModulesStack.push_back(5208);
578 nModulesStack.push_back(5208);
579 nModulesStack.push_back(3200);
580 nModulesStack.push_back(3200);
581 nModulesStack.push_back(3200);
582 nModulesStack.push_back(3200);
583 nModulesStack.push_back(3200);
584 nModulesStack.push_back(3200);
585 nModulesStack.push_back(3200);
586 nModulesStack.push_back(3200);
587 nModulesStack.push_back(3200);
588 nModulesStack.push_back(3200);
589 nModulesStack.push_back(3200);
590 nModulesStack.push_back(3200);
591 nModulesStack.push_back(3200);
592 nModulesStack.push_back(3200);
593 nModulesStack.push_back(3200);
594 nModulesStack.push_back(3200);
595 nModulesStack.push_back(3200);
596 nModulesStack.push_back(3200);
598 std::vector<unsigned int> nModulesNoStack;
599 nModulesNoStack.push_back(15148);
600 nModulesNoStack.push_back(2724);
601 nModulesNoStack.push_back(816);
602 nModulesNoStack.push_back(5208);
603 nModulesNoStack.push_back(6400);
604 nModulesNoStack.push_back(672);
605 nModulesNoStack.push_back(864);
606 nModulesNoStack.push_back(540);
607 nModulesNoStack.push_back(648);
608 nModulesNoStack.push_back(136);
609 nModulesNoStack.push_back(136);
610 nModulesNoStack.push_back(136);
611 nModulesNoStack.push_back(136);
612 nModulesNoStack.push_back(136);
613 nModulesNoStack.push_back(136);
614 nModulesNoStack.push_back(1008);
615 nModulesNoStack.push_back(1152);
616 nModulesNoStack.push_back(648);
617 nModulesNoStack.push_back(720);
618 nModulesNoStack.push_back(792);
619 nModulesNoStack.push_back(888);
620 nModulesNoStack.push_back(408);
621 nModulesNoStack.push_back(408);
622 nModulesNoStack.push_back(408);
623 nModulesNoStack.push_back(360);
624 nModulesNoStack.push_back(360);
625 nModulesNoStack.push_back(360);
626 nModulesNoStack.push_back(312);
627 nModulesNoStack.push_back(312);
628 nModulesNoStack.push_back(272);
629 nModulesNoStack.push_back(408);
630 nModulesNoStack.push_back(408);
631 nModulesNoStack.push_back(408);
632 nModulesNoStack.push_back(360);
633 nModulesNoStack.push_back(360);
634 nModulesNoStack.push_back(360);
635 nModulesNoStack.push_back(312);
636 nModulesNoStack.push_back(312);
637 nModulesNoStack.push_back(272);
640 std::vector<unsigned int> nFibersStack;
641 nFibersStack.push_back(36392);
642 nFibersStack.push_back(36392);
643 nFibersStack.push_back(36392);
644 nFibersStack.push_back(36392);
645 nFibersStack.push_back(36392);
646 nFibersStack.push_back(6984);
647 nFibersStack.push_back(6984);
648 nFibersStack.push_back(6984);
649 nFibersStack.push_back(6984);
650 nFibersStack.push_back(1104);
651 nFibersStack.push_back(1104);
652 nFibersStack.push_back(1104);
653 nFibersStack.push_back(1104);
654 nFibersStack.push_back(1104);
655 nFibersStack.push_back(1104);
656 nFibersStack.push_back(12096);
657 nFibersStack.push_back(12096);
658 nFibersStack.push_back(12096);
659 nFibersStack.push_back(12096);
660 nFibersStack.push_back(12096);
661 nFibersStack.push_back(12096);
662 nFibersStack.push_back(7552);
663 nFibersStack.push_back(7552);
664 nFibersStack.push_back(7552);
665 nFibersStack.push_back(7552);
666 nFibersStack.push_back(7552);
667 nFibersStack.push_back(7552);
668 nFibersStack.push_back(7552);
669 nFibersStack.push_back(7552);
670 nFibersStack.push_back(7552);
671 nFibersStack.push_back(7552);
672 nFibersStack.push_back(7552);
673 nFibersStack.push_back(7552);
674 nFibersStack.push_back(7552);
675 nFibersStack.push_back(7552);
676 nFibersStack.push_back(7552);
677 nFibersStack.push_back(7552);
678 nFibersStack.push_back(7552);
679 nFibersStack.push_back(7552);
681 std::vector<unsigned int> nFibersNoStack;
682 nFibersNoStack.push_back(36392);
683 nFibersNoStack.push_back(6984);
684 nFibersNoStack.push_back(2208);
685 nFibersNoStack.push_back(12096);
686 nFibersNoStack.push_back(15104);
687 nFibersNoStack.push_back(2016);
688 nFibersNoStack.push_back(2592);
689 nFibersNoStack.push_back(1080);
690 nFibersNoStack.push_back(1296);
691 nFibersNoStack.push_back(368);
692 nFibersNoStack.push_back(368);
693 nFibersNoStack.push_back(368);
694 nFibersNoStack.push_back(368);
695 nFibersNoStack.push_back(368);
696 nFibersNoStack.push_back(368);
697 nFibersNoStack.push_back(2016);
698 nFibersNoStack.push_back(2304);
699 nFibersNoStack.push_back(1296);
700 nFibersNoStack.push_back(1440);
701 nFibersNoStack.push_back(2376);
702 nFibersNoStack.push_back(2664);
703 nFibersNoStack.push_back(992);
704 nFibersNoStack.push_back(992);
705 nFibersNoStack.push_back(992);
706 nFibersNoStack.push_back(848);
707 nFibersNoStack.push_back(848);
708 nFibersNoStack.push_back(848);
709 nFibersNoStack.push_back(704);
710 nFibersNoStack.push_back(704);
711 nFibersNoStack.push_back(624);
712 nFibersNoStack.push_back(992);
713 nFibersNoStack.push_back(992);
714 nFibersNoStack.push_back(992);
715 nFibersNoStack.push_back(848);
716 nFibersNoStack.push_back(848);
717 nFibersNoStack.push_back(848);
718 nFibersNoStack.push_back(704);
719 nFibersNoStack.push_back(704);
720 nFibersNoStack.push_back(624);
723 std::vector<unsigned int> nAPVsStack;
724 nAPVsStack.push_back(72784);
725 nAPVsStack.push_back(72784);
726 nAPVsStack.push_back(72784);
727 nAPVsStack.push_back(72784);
728 nAPVsStack.push_back(72784);
729 nAPVsStack.push_back(13968);
730 nAPVsStack.push_back(13968);
731 nAPVsStack.push_back(13968);
732 nAPVsStack.push_back(13968);
733 nAPVsStack.push_back(2208);
734 nAPVsStack.push_back(2208);
735 nAPVsStack.push_back(2208);
736 nAPVsStack.push_back(2208);
737 nAPVsStack.push_back(2208);
738 nAPVsStack.push_back(2208);
739 nAPVsStack.push_back(24192);
740 nAPVsStack.push_back(24192);
741 nAPVsStack.push_back(24192);
742 nAPVsStack.push_back(24192);
743 nAPVsStack.push_back(24192);
744 nAPVsStack.push_back(24192);
745 nAPVsStack.push_back(15104);
746 nAPVsStack.push_back(15104);
747 nAPVsStack.push_back(15104);
748 nAPVsStack.push_back(15104);
749 nAPVsStack.push_back(15104);
750 nAPVsStack.push_back(15104);
751 nAPVsStack.push_back(15104);
752 nAPVsStack.push_back(15104);
753 nAPVsStack.push_back(15104);
754 nAPVsStack.push_back(15104);
755 nAPVsStack.push_back(15104);
756 nAPVsStack.push_back(15104);
757 nAPVsStack.push_back(15104);
758 nAPVsStack.push_back(15104);
759 nAPVsStack.push_back(15104);
760 nAPVsStack.push_back(15104);
761 nAPVsStack.push_back(15104);
762 nAPVsStack.push_back(15104);
764 std::vector<unsigned int> nAPVsNoStack;
765 nAPVsNoStack.push_back(72784);
766 nAPVsNoStack.push_back(13968);
767 nAPVsNoStack.push_back(4416);
768 nAPVsNoStack.push_back(24192);
769 nAPVsNoStack.push_back(30208);
770 nAPVsNoStack.push_back(4032);
771 nAPVsNoStack.push_back(5184);
772 nAPVsNoStack.push_back(2160);
773 nAPVsNoStack.push_back(2592);
774 nAPVsNoStack.push_back(736);
775 nAPVsNoStack.push_back(736);
776 nAPVsNoStack.push_back(736);
777 nAPVsNoStack.push_back(736);
778 nAPVsNoStack.push_back(736);
779 nAPVsNoStack.push_back(736);
780 nAPVsNoStack.push_back(4032);
781 nAPVsNoStack.push_back(4608);
782 nAPVsNoStack.push_back(2592);
783 nAPVsNoStack.push_back(2880);
784 nAPVsNoStack.push_back(4752);
785 nAPVsNoStack.push_back(5328);
786 nAPVsNoStack.push_back(1984);
787 nAPVsNoStack.push_back(1984);
788 nAPVsNoStack.push_back(1984);
789 nAPVsNoStack.push_back(1696);
790 nAPVsNoStack.push_back(1696);
791 nAPVsNoStack.push_back(1696);
792 nAPVsNoStack.push_back(1408);
793 nAPVsNoStack.push_back(1408);
794 nAPVsNoStack.push_back(1248);
795 nAPVsNoStack.push_back(1984);
796 nAPVsNoStack.push_back(1984);
797 nAPVsNoStack.push_back(1984);
798 nAPVsNoStack.push_back(1696);
799 nAPVsNoStack.push_back(1696);
800 nAPVsNoStack.push_back(1696);
801 nAPVsNoStack.push_back(1408);
802 nAPVsNoStack.push_back(1408);
803 nAPVsNoStack.push_back(1248);
806 std::vector<unsigned int> nStripsStack;
807 nStripsStack.push_back(9316352);
808 nStripsStack.push_back(9316352);
809 nStripsStack.push_back(9316352);
810 nStripsStack.push_back(9316352);
811 nStripsStack.push_back(9316352);
812 nStripsStack.push_back(1787904);
813 nStripsStack.push_back(1787904);
814 nStripsStack.push_back(1787904);
815 nStripsStack.push_back(1787904);
816 nStripsStack.push_back(282624);
817 nStripsStack.push_back(282624);
818 nStripsStack.push_back(282624);
819 nStripsStack.push_back(282624);
820 nStripsStack.push_back(282624);
821 nStripsStack.push_back(282624);
822 nStripsStack.push_back(3096576);
823 nStripsStack.push_back(3096576);
824 nStripsStack.push_back(3096576);
825 nStripsStack.push_back(3096576);
826 nStripsStack.push_back(3096576);
827 nStripsStack.push_back(3096576);
828 nStripsStack.push_back(1933312);
829 nStripsStack.push_back(1933312);
830 nStripsStack.push_back(1933312);
831 nStripsStack.push_back(1933312);
832 nStripsStack.push_back(1933312);
833 nStripsStack.push_back(1933312);
834 nStripsStack.push_back(1933312);
835 nStripsStack.push_back(1933312);
836 nStripsStack.push_back(1933312);
837 nStripsStack.push_back(1933312);
838 nStripsStack.push_back(1933312);
839 nStripsStack.push_back(1933312);
840 nStripsStack.push_back(1933312);
841 nStripsStack.push_back(1933312);
842 nStripsStack.push_back(1933312);
843 nStripsStack.push_back(1933312);
844 nStripsStack.push_back(1933312);
845 nStripsStack.push_back(1933312);
847 std::vector<unsigned int> nStripsNoStack;
848 nStripsNoStack.push_back(9316352);
849 nStripsNoStack.push_back(1787904);
850 nStripsNoStack.push_back(565248);
851 nStripsNoStack.push_back(3096576);
852 nStripsNoStack.push_back(3866624);
853 nStripsNoStack.push_back(516096);
854 nStripsNoStack.push_back(663552);
855 nStripsNoStack.push_back(276480);
856 nStripsNoStack.push_back(331776);
857 nStripsNoStack.push_back(94208);
858 nStripsNoStack.push_back(94208);
859 nStripsNoStack.push_back(94208);
860 nStripsNoStack.push_back(94208);
861 nStripsNoStack.push_back(94208);
862 nStripsNoStack.push_back(94208);
863 nStripsNoStack.push_back(516096);
864 nStripsNoStack.push_back(589824);
865 nStripsNoStack.push_back(331776);
866 nStripsNoStack.push_back(368640);
867 nStripsNoStack.push_back(608256);
868 nStripsNoStack.push_back(681984);
869 nStripsNoStack.push_back(253952);
870 nStripsNoStack.push_back(253952);
871 nStripsNoStack.push_back(253952);
872 nStripsNoStack.push_back(217088);
873 nStripsNoStack.push_back(217088);
874 nStripsNoStack.push_back(217088);
875 nStripsNoStack.push_back(180224);
876 nStripsNoStack.push_back(180224);
877 nStripsNoStack.push_back(159744);
878 nStripsNoStack.push_back(253952);
879 nStripsNoStack.push_back(253952);
880 nStripsNoStack.push_back(253952);
881 nStripsNoStack.push_back(217088);
882 nStripsNoStack.push_back(217088);
883 nStripsNoStack.push_back(217088);
884 nStripsNoStack.push_back(180224);
885 nStripsNoStack.push_back(180224);
886 nStripsNoStack.push_back(159744);
888 for (
unsigned int i = 0;
i < tkParts.size();
i++) {
910 if (currentPlotType ==
"BadModules") {
912 }
else if (currentPlotType ==
"BadFibers") {
914 }
else if (currentPlotType ==
"BadAPVs") {
916 }
else if (currentPlotType ==
"AllBadStrips" || currentPlotType ==
"BadStripsFromAPVs" ||
917 currentPlotType ==
"BadStrips") {
920 std::cout <<
"findNormFactor(): ERROR! Requested a non supported plot type: " << currentPlotType.c_str()
922 std::cout <<
" Add this to the function body or correct the error\n";
926 if (currentPlotType ==
"BadModules") {
928 }
else if (currentPlotType ==
"BadFibers") {
930 }
else if (currentPlotType ==
"BadAPVs") {
932 }
else if (currentPlotType ==
"BadStrips" || currentPlotType ==
"BadStripsFromAPVs" ||
933 currentPlotType ==
"AllBadStrips") {
936 std::cout <<
"findNormFactor(): ERROR! Requested a non supported plot type: \"" << currentPlotType.c_str()
938 std::cout <<
" Add this to the function body or correct the error otherwise.\n";
static std::map< std::string, unsigned int > modulesStackNormFactors
int main(int argc, char *argv[])
double findNormFactor(const std::string currentPlotType, const std::string currentPart, const bool stackOption)
static std::map< std::string, unsigned int > APVsNoStackNormFactors
void fillNormFactorMaps()
static std::map< std::string, unsigned int > stripsNoStackNormFactors
void setCanvasStyle(TCanvas *c, const bool logScale)
static std::map< std::string, unsigned int > stripsStackNormFactors
void setLegendStyle(TLegend *l, const unsigned int nColumns)
static std::map< std::string, unsigned int > fibersStackNormFactors
void setPaveTextStyle(TPaveText *t, const bool isHorizontal=true)
static std::map< std::string, unsigned int > modulesNoStackNormFactors
void makePlots(std::string inputFileName, std::string outputFileName)
void setHistoStyle(TH1 *h)
static std::map< std::string, unsigned int > fibersNoStackNormFactors
void setHistoStackStyle(TH1 *h, const unsigned int lineColor)
static std::map< std::string, unsigned int > APVsStackNormFactors
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.