17 #include "RtypesCore.h" 28 #include "TVirtualPad.h" 38 #include <ext/alloc_traits.h> 39 #include <fmt/printf.h> 45 #include <type_traits> 48 #include "boost/range/adaptor/indexed.hpp" 157 isCosmics_(
pset.getParameter<
bool>(
"isCosmics")),
158 doLatencyAnalysis_(
pset.getParameter<
bool>(
"doLatencyAnalysis")) {
161 if (doLatencyAnalysis_) {
162 latencyToken_ = esConsumes<edm::Transition::BeginRun>();
168 theTrackCollectionToken_ = consumes<reco::TrackCollection>(TkTag_);
171 hltresultsToken_ = consumes<edm::TriggerResults>(TriggerResultsTag_);
174 beamspotToken_ = consumes<reco::BeamSpot>(BeamSpotTag_);
177 vertexToken_ = consumes<reco::VertexCollection>(VerticesTag_);
181 pmap = std::make_unique<TrackerMap>(
"Pixel");
182 pmap->onlyPixel(
true);
183 pmap->setTitle(
"Pixel Hit entries");
186 tmap = std::make_unique<TrackerMap>(
"Strip");
187 tmap->setTitle(
"Strip Hit entries");
192 pixelmap = std::make_unique<Phase1PixelMaps>(
"COLZ0 L");
193 pixelmap->bookBarrelHistograms(
"DMRsX",
"Median Residuals x-direction",
"Median Residuals");
194 pixelmap->bookForwardHistograms(
"DMRsX",
"Median Residuals x-direction",
"Median Residuals");
196 pixelmap->bookBarrelHistograms(
"DMRsY",
"Median Residuals y-direction",
"Median Residuals");
197 pixelmap->bookForwardHistograms(
"DMRsY",
"Median Residuals y-direction",
"Median Residuals");
200 pixelmap->setNoRescale();
203 fullPixelmapXDMR = std::make_unique<Phase1PixelSummaryMap>(
"",
"DMR-x",
"median of residuals [#mum]");
204 fullPixelmapYDMR = std::make_unique<Phase1PixelSummaryMap>(
"",
"DMR-y",
"median of residuals [#mum]");
216 template <
class OBJECT_TYPE>
218 for (
const auto &iter : vec | boost::adaptors::indexed(0)) {
219 if (iter.value() && iter.value()->GetName() ==
name) {
224 <<
" could not find " <<
name;
228 template <
typename T,
typename...
Args>
256 std::unique_ptr<TrackerMap>
tmap;
257 std::unique_ptr<TrackerMap>
pmap;
518 edm::LogVerbatim(
"DMRChecker") <<
"event #" << ievt <<
" Event ID = " <<
event.id()
519 <<
" magnetic field: " << magneticField_->
inTesla(zeroPoint) << std::endl;
524 runInfoMap_[
event.run()].first += 1;
525 runInfoMap_[
event.run()].second += tC.size();
528 edm::LogVerbatim(
"DMRChecker") <<
"Reconstructed " << tC.size() <<
" tracks" << std::endl;
535 for (
int itrig = 0; itrig != ntrigs; ++itrig) {
542 triggerMap_[
trigName].second += tC.size();
547 hrun->Fill(
event.run());
548 hlumi->Fill(
event.luminosityBlock());
550 int nHighPurityTracks = 0;
552 for (
const auto &
track : tC) {
553 auto const &residuals =
track.extra()->residuals();
555 unsigned int nHit2D = 0;
558 if (this->isHit2D(**iHit))
561 double resX = residuals.residualX(h_index);
562 double resY = residuals.residualY(h_index);
563 double pullX = residuals.pullX(h_index);
564 double pullY = residuals.pullY(h_index);
566 const DetId &
detId = (*iHit)->geographicalId();
568 unsigned int subid =
detId.subdetId();
569 uint32_t detid_db =
detId.rawId();
573 float uOrientation(-999.
F), vOrientation(-999.
F);
574 LocalPoint lPModule(0., 0., 0.), lUDirection(1., 0., 0.), lVDirection(0., 1., 0.), lWDirection(0., 0., 1.);
577 GlobalPoint gUDirection = geomDet->surface().toGlobal(lUDirection);
578 GlobalPoint gVDirection = geomDet->surface().toGlobal(lVDirection);
579 GlobalPoint gWDirection = geomDet->surface().toGlobal(lWDirection);
580 GlobalPoint gPModule = geomDet->surface().toGlobal(lPModule);
582 if (!(*iHit)->detUnit())
587 tmap->fill(detid_db, 1);
598 if (resDetailsTIB_.find(detid_db) == resDetailsTIB_.end()) {
599 resDetailsTIB_[detid_db].rDirection = gWDirection.
perp() - gPModule.
perp() >= 0 ? +1 : -1;
600 resDetailsTIB_[detid_db].zDirection = gVDirection.
z() - gPModule.
z() >= 0 ? +1 : -1;
601 resDetailsTIB_[detid_db].rOrZDirection = resDetailsTIB_[detid_db].rDirection;
604 hTIBResXPrime->Fill(uOrientation * resX *
cmToUm);
605 hTIBResXPull->Fill(
pullX);
608 this->updateOnlineMomenta(resDetailsTIB_, detid_db, uOrientation * resX *
cmToUm,
pullX);
614 hTOBResXPrime->Fill(uOrientation * resX *
cmToUm);
615 hTOBResXPull->Fill(
pullX);
618 if (resDetailsTOB_.find(detid_db) == resDetailsTOB_.end()) {
619 resDetailsTOB_[detid_db].rDirection = gWDirection.
perp() - gPModule.
perp() >= 0 ? +1 : -1;
620 resDetailsTOB_[detid_db].zDirection = gVDirection.
z() - gPModule.
z() >= 0 ? +1 : -1;
621 resDetailsTOB_[detid_db].rOrZDirection = resDetailsTOB_[detid_db].rDirection;
625 this->updateOnlineMomenta(resDetailsTOB_, detid_db, uOrientation * resX *
cmToUm,
pullX);
631 hTIDResXPrime->Fill(uOrientation * resX *
cmToUm);
632 hTIDResXPull->Fill(
pullX);
635 this->updateOnlineMomenta(resDetailsTID_, detid_db, uOrientation * resX *
cmToUm,
pullX);
641 hTECResXPrime->Fill(uOrientation * resX *
cmToUm);
642 hTECResXPull->Fill(
pullX);
645 this->updateOnlineMomenta(resDetailsTEC_, detid_db, uOrientation * resX *
cmToUm,
pullX);
654 pmap->fill(detid_db, 1);
664 int layer_num = trackerTopology_->
pxbLayer(detid_db);
667 vOrientation = gVDirection.
z() - gPModule.
z() >= 0 ? +1.F : -1.F;
670 if (resDetailsBPixX_.find(detid_db) == resDetailsBPixX_.end()) {
671 resDetailsBPixX_[detid_db].rDirection = gWDirection.
perp() - gPModule.
perp() >= 0 ? +1 : -1;
672 resDetailsBPixX_[detid_db].zDirection = gVDirection.
z() - gPModule.
z() >= 0 ? +1 : -1;
673 resDetailsBPixX_[detid_db].rOrZDirection =
674 resDetailsBPixX_[detid_db].rDirection;
678 if (resDetailsBPixY_.find(detid_db) == resDetailsBPixY_.end()) {
679 resDetailsBPixY_[detid_db].rDirection = gWDirection.
perp() - gPModule.
perp() >= 0 ? +1 : -1;
680 resDetailsBPixY_[detid_db].zDirection = gVDirection.
z() - gPModule.
z() >= 0 ? +1 : -1;
681 resDetailsBPixY_[detid_db].rOrZDirection =
682 resDetailsBPixY_[detid_db].rDirection;
685 hHitCountVsThetaBPix->Fill(GP.
theta());
686 hHitCountVsPhiBPix->Fill(GP.
phi());
688 hHitCountVsZBPix->Fill(GP.
z());
689 hHitCountVsXBPix->Fill(GP.
x());
690 hHitCountVsYBPix->Fill(GP.
y());
692 hBPixResXPrime->Fill(uOrientation * resX *
cmToUm);
693 hBPixResYPrime->Fill(vOrientation * resY *
cmToUm);
694 hBPixResXPull->Fill(
pullX);
695 hBPixResYPull->Fill(
pullY);
701 this->updateOnlineMomenta(resDetailsBPixX_, detid_db, uOrientation * resX *
cmToUm,
pullX);
704 this->updateOnlineMomenta(resDetailsBPixY_, detid_db, vOrientation * resY *
cmToUm,
pullY);
712 uOrientation = gUDirection.
perp() - gPModule.
perp() >= 0 ? +1.F : -1.F;
715 int side_num = trackerTopology_->
pxfSide(detid_db);
716 int disk_num = trackerTopology_->
pxfDisk(detid_db);
718 int packedTopo = disk_num + 3 * (side_num - 1);
721 edm::LogVerbatim(
"DMRChecker") <<
"side: " << side_num <<
" disk: " << disk_num
722 <<
" packedTopo: " << packedTopo <<
" GP.z(): " << GP.
z() << std::endl;
724 hHitCountVsThetaFPix->Fill(GP.
theta());
725 hHitCountVsPhiFPix->Fill(GP.
phi());
727 hHitCountVsZFPix->Fill(GP.
z());
728 hHitCountVsXFPix->Fill(GP.
x());
729 hHitCountVsYFPix->Fill(GP.
y());
731 hFPixResXPrime->Fill(uOrientation * resX *
cmToUm);
732 hFPixResYPrime->Fill(vOrientation * resY *
cmToUm);
733 hFPixResXPull->Fill(
pullX);
734 hFPixResYPull->Fill(
pullY);
742 if (resDetailsFPixX_.find(detid_db) == resDetailsFPixX_.end()) {
743 resDetailsFPixX_[detid_db].rDirection = gUDirection.
perp() - gPModule.
perp() >= 0 ? +1 : -1;
744 resDetailsFPixX_[detid_db].zDirection = gWDirection.
z() - gPModule.
z() >= 0 ? +1 : -1;
745 resDetailsFPixX_[detid_db].rOrZDirection =
746 resDetailsFPixX_[detid_db].zDirection;
750 if (resDetailsFPixY_.find(detid_db) == resDetailsFPixY_.end()) {
751 resDetailsFPixY_[detid_db].rDirection = gUDirection.
perp() - gPModule.
perp() >= 0 ? +1 : -1;
752 resDetailsFPixY_[detid_db].zDirection = gWDirection.
z() - gPModule.
z() >= 0 ? +1 : -1;
753 resDetailsFPixY_[detid_db].rOrZDirection =
754 resDetailsFPixY_[detid_db].zDirection;
758 this->updateOnlineMomenta(resDetailsFPixX_, detid_db, uOrientation * resX *
cmToUm,
pullX);
761 this->updateOnlineMomenta(resDetailsFPixY_, detid_db, vOrientation * resY *
cmToUm,
pullY);
764 hHitCountVsXFPixMinus->Fill(GP.
x());
765 hHitCountVsYFPixMinus->Fill(GP.
y());
766 hHitCountVsZFPixMinus->Fill(GP.
z());
767 hHitCountVsThetaFPixMinus->Fill(GP.
theta());
768 hHitCountVsPhiFPixMinus->Fill(GP.
phi());
770 hFPixZMinusResXPrime->Fill(uOrientation * resX *
cmToUm);
771 hFPixZMinusResYPrime->Fill(vOrientation * resY *
cmToUm);
772 hFPixZMinusResXPull->Fill(
pullX);
773 hFPixZMinusResYPull->Fill(
pullY);
776 hHitCountVsXFPixPlus->Fill(GP.
x());
777 hHitCountVsYFPixPlus->Fill(GP.
y());
778 hHitCountVsZFPixPlus->Fill(GP.
z());
779 hHitCountVsThetaFPixPlus->Fill(GP.
theta());
780 hHitCountVsPhiFPixPlus->Fill(GP.
phi());
782 hFPixZPlusResXPrime->Fill(uOrientation * resX *
cmToUm);
783 hFPixZPlusResYPrime->Fill(vOrientation * resY *
cmToUm);
784 hFPixZPlusResXPull->Fill(
pullX);
785 hFPixZPlusResYPull->Fill(
pullY);
793 hHit2D->Fill(nHit2D);
794 hHit->Fill(
track.numberOfValidHits());
795 hnhpxb->Fill(
track.hitPattern().numberOfValidPixelBarrelHits());
796 hnhpxe->Fill(
track.hitPattern().numberOfValidPixelEndcapHits());
797 hnhTIB->Fill(
track.hitPattern().numberOfValidStripTIBHits());
798 hnhTID->Fill(
track.hitPattern().numberOfValidStripTIDHits());
799 hnhTOB->Fill(
track.hitPattern().numberOfValidStripTOBHits());
800 hnhTEC->Fill(
track.hitPattern().numberOfValidStripTECHits());
802 runHitsMap_[
event.run()][0] +=
track.hitPattern().numberOfValidPixelBarrelHits();
803 runHitsMap_[
event.run()][1] +=
track.hitPattern().numberOfValidPixelEndcapHits();
804 runHitsMap_[
event.run()][2] +=
track.hitPattern().numberOfValidStripTIBHits();
805 runHitsMap_[
event.run()][3] +=
track.hitPattern().numberOfValidStripTIDHits();
806 runHitsMap_[
event.run()][4] +=
track.hitPattern().numberOfValidStripTOBHits();
807 runHitsMap_[
event.run()][5] +=
track.hitPattern().numberOfValidStripTECHits();
810 if (
track.hitPattern().numberOfValidPixelBarrelHits() != 0) {
811 hHitComposition->Fill(0.,
track.hitPattern().numberOfValidPixelBarrelHits());
813 pNBpixHitsVsVx->Fill(
track.vx(),
track.hitPattern().numberOfValidPixelBarrelHits());
814 pNBpixHitsVsVy->Fill(
track.vy(),
track.hitPattern().numberOfValidPixelBarrelHits());
815 pNBpixHitsVsVz->Fill(
track.vz(),
track.hitPattern().numberOfValidPixelBarrelHits());
817 if (
track.hitPattern().numberOfValidPixelEndcapHits() != 0) {
818 hHitComposition->Fill(1.,
track.hitPattern().numberOfValidPixelEndcapHits());
820 if (
track.hitPattern().numberOfValidStripTIBHits() != 0) {
821 hHitComposition->Fill(2.,
track.hitPattern().numberOfValidStripTIBHits());
823 if (
track.hitPattern().numberOfValidStripTIDHits() != 0) {
824 hHitComposition->Fill(3.,
track.hitPattern().numberOfValidStripTIDHits());
826 if (
track.hitPattern().numberOfValidStripTOBHits() != 0) {
827 hHitComposition->Fill(4.,
track.hitPattern().numberOfValidStripTOBHits());
829 if (
track.hitPattern().numberOfValidStripTECHits() != 0) {
830 hHitComposition->Fill(5.,
track.hitPattern().numberOfValidStripTECHits());
833 hCharge->Fill(
track.charge());
834 hQoverP->Fill(
track.qoverp());
835 hQoverPZoom->Fill(
track.qoverp());
836 hPt->Fill(
track.pt());
838 hchi2ndof->Fill(
track.normalizedChi2());
839 hEta->Fill(
track.eta());
840 hPhi->Fill(
track.phi());
842 if (fabs(
track.eta()) < 0.8)
843 hPhiBarrel->Fill(
track.phi());
845 hPhiOverlapPlus->Fill(
track.phi());
847 hPhiOverlapMinus->Fill(
track.phi());
848 if (
track.eta() > 1.4)
849 hPhiEndcapPlus->Fill(
track.phi());
850 if (
track.eta() < -1.4)
851 hPhiEndcapMinus->Fill(
track.phi());
853 hd0->Fill(
track.d0());
854 hdz->Fill(
track.dz());
855 hdxy->Fill(
track.dxy());
856 hvx->Fill(
track.vx());
857 hvy->Fill(
track.vy());
858 hvz->Fill(
track.vz());
860 htrkAlgo->Fill(
track.algo());
865 htrkQuality->Fill(myquality);
869 htrkQuality->Fill(myquality);
873 htrkQuality->Fill(myquality);
877 htrkQuality->Fill(myquality);
878 hPhp->Fill(
track.p());
879 hPthp->Fill(
track.pt());
880 hHithp->Fill(
track.numberOfValidHits());
881 hEtahp->Fill(
track.eta());
882 hPhihp->Fill(
track.phi());
883 hchi2ndofhp->Fill(
track.normalizedChi2());
884 hchi2Probhp->Fill(TMath::Prob(
track.chi2(),
track.ndof()));
889 htrkQuality->Fill(myquality);
893 htrkQuality->Fill(myquality);
897 static const int etaindex = this->
index(vTrackHistos_,
"h_tracketa");
898 vTrackHistos_[etaindex]->Fill(
track.eta());
899 static const int phiindex = this->
index(vTrackHistos_,
"h_trackphi");
900 vTrackHistos_[phiindex]->Fill(
track.phi());
901 static const int numOfValidHitsindex = this->
index(vTrackHistos_,
"h_trackNumberOfValidHits");
902 vTrackHistos_[numOfValidHitsindex]->Fill(
track.numberOfValidHits());
903 static const int numOfLostHitsindex = this->
index(vTrackHistos_,
"h_trackNumberOfLostHits");
904 vTrackHistos_[numOfLostHitsindex]->Fill(
track.numberOfLostHits());
907 double theLocalMagFieldInInverseGeV = magneticField_->
inInverseGeV(gPoint).
z();
908 double kappa = -
track.charge() * theLocalMagFieldInInverseGeV /
track.pt();
910 static const int kappaindex = this->
index(vTrackHistos_,
"h_curvature");
911 vTrackHistos_[kappaindex]->Fill(
kappa);
912 static const int kappaposindex = this->
index(vTrackHistos_,
"h_curvature_pos");
913 if (
track.charge() > 0)
914 vTrackHistos_[kappaposindex]->
Fill(fabs(
kappa));
915 static const int kappanegindex = this->
index(vTrackHistos_,
"h_curvature_neg");
916 if (
track.charge() < 0)
917 vTrackHistos_[kappanegindex]->
Fill(fabs(
kappa));
919 double chi2Prob = TMath::Prob(
track.chi2(),
track.ndof());
922 static const int normchi2index = this->
index(vTrackHistos_,
"h_normchi2");
923 vTrackHistos_[normchi2index]->Fill(
normchi2);
924 static const int chi2index = this->
index(vTrackHistos_,
"h_chi2");
925 vTrackHistos_[chi2index]->Fill(
track.chi2());
926 static const int chi2Probindex = this->
index(vTrackHistos_,
"h_chi2Prob");
927 vTrackHistos_[chi2Probindex]->Fill(chi2Prob);
928 static const int ptindex = this->
index(vTrackHistos_,
"h_pt");
929 static const int pt2index = this->
index(vTrackHistos_,
"h_ptrebin");
930 vTrackHistos_[ptindex]->Fill(
track.pt());
931 vTrackHistos_[pt2index]->Fill(
track.pt());
932 if (
track.ptError() != 0.) {
933 static const int ptResolutionindex = this->
index(vTrackHistos_,
"h_ptResolution");
934 vTrackHistos_[ptResolutionindex]->Fill(
track.ptError() /
track.pt());
937 static const int d0phiindex = this->
index(vTrackProfiles_,
"p_d0_vs_phi");
938 vTrackProfiles_[d0phiindex]->Fill(
track.phi(),
track.d0());
939 static const int dzphiindex = this->
index(vTrackProfiles_,
"p_dz_vs_phi");
940 vTrackProfiles_[dzphiindex]->Fill(
track.phi(),
track.dz());
941 static const int d0etaindex = this->
index(vTrackProfiles_,
"p_d0_vs_eta");
942 vTrackProfiles_[d0etaindex]->Fill(
track.eta(),
track.d0());
943 static const int dzetaindex = this->
index(vTrackProfiles_,
"p_dz_vs_eta");
944 vTrackProfiles_[dzetaindex]->Fill(
track.eta(),
track.dz());
945 static const int chiProbphiindex = this->
index(vTrackProfiles_,
"p_chi2Prob_vs_phi");
946 vTrackProfiles_[chiProbphiindex]->Fill(
track.phi(), chi2Prob);
947 static const int chiProbabsd0index = this->
index(vTrackProfiles_,
"p_chi2Prob_vs_d0");
948 vTrackProfiles_[chiProbabsd0index]->Fill(fabs(
track.d0()), chi2Prob);
949 static const int chiProbabsdzindex = this->
index(vTrackProfiles_,
"p_chi2Prob_vs_dz");
950 vTrackProfiles_[chiProbabsdzindex]->Fill(
track.dz(), chi2Prob);
951 static const int chiphiindex = this->
index(vTrackProfiles_,
"p_chi2_vs_phi");
952 vTrackProfiles_[chiphiindex]->Fill(
track.phi(),
track.chi2());
953 static const int normchiphiindex = this->
index(vTrackProfiles_,
"p_normchi2_vs_phi");
954 vTrackProfiles_[normchiphiindex]->Fill(
track.phi(),
normchi2);
955 static const int chietaindex = this->
index(vTrackProfiles_,
"p_chi2_vs_eta");
956 vTrackProfiles_[chietaindex]->Fill(
track.eta(),
track.chi2());
957 static const int normchiptindex = this->
index(vTrackProfiles_,
"p_normchi2_vs_pt");
959 static const int normchipindex = this->
index(vTrackProfiles_,
"p_normchi2_vs_p");
961 static const int chiProbetaindex = this->
index(vTrackProfiles_,
"p_chi2Prob_vs_eta");
962 vTrackProfiles_[chiProbetaindex]->Fill(
track.eta(), chi2Prob);
963 static const int normchietaindex = this->
index(vTrackProfiles_,
"p_normchi2_vs_eta");
964 vTrackProfiles_[normchietaindex]->Fill(
track.eta(),
normchi2);
965 static const int kappaphiindex = this->
index(vTrackProfiles_,
"p_kappa_vs_phi");
966 vTrackProfiles_[kappaphiindex]->Fill(
track.phi(),
kappa);
967 static const int kappaetaindex = this->
index(vTrackProfiles_,
"p_kappa_vs_eta");
968 vTrackProfiles_[kappaetaindex]->Fill(
track.eta(),
kappa);
969 static const int ptResphiindex = this->
index(vTrackProfiles_,
"p_ptResolution_vs_phi");
970 vTrackProfiles_[ptResphiindex]->Fill(
track.phi(),
track.ptError() /
track.pt());
971 static const int ptResetaindex = this->
index(vTrackProfiles_,
"p_ptResolution_vs_eta");
972 vTrackProfiles_[ptResetaindex]->Fill(
track.eta(),
track.ptError() /
track.pt());
975 static const int etaphiindex_2d = this->
index(vTrack2DHistos_,
"h2_phi_vs_eta");
976 vTrack2DHistos_[etaphiindex_2d]->Fill(
track.eta(),
track.phi());
977 static const int d0phiindex_2d = this->
index(vTrack2DHistos_,
"h2_d0_vs_phi");
978 vTrack2DHistos_[d0phiindex_2d]->Fill(
track.phi(),
track.d0());
979 static const int dzphiindex_2d = this->
index(vTrack2DHistos_,
"h2_dz_vs_phi");
980 vTrack2DHistos_[dzphiindex_2d]->Fill(
track.phi(),
track.dz());
981 static const int d0etaindex_2d = this->
index(vTrack2DHistos_,
"h2_d0_vs_eta");
982 vTrack2DHistos_[d0etaindex_2d]->Fill(
track.eta(),
track.d0());
983 static const int dzetaindex_2d = this->
index(vTrack2DHistos_,
"h2_dz_vs_eta");
984 vTrack2DHistos_[dzetaindex_2d]->Fill(
track.eta(),
track.dz());
985 static const int chiphiindex_2d = this->
index(vTrack2DHistos_,
"h2_chi2_vs_phi");
986 vTrack2DHistos_[chiphiindex_2d]->Fill(
track.phi(),
track.chi2());
987 static const int chiProbphiindex_2d = this->
index(vTrack2DHistos_,
"h2_chi2Prob_vs_phi");
988 vTrack2DHistos_[chiProbphiindex_2d]->Fill(
track.phi(), chi2Prob);
989 static const int chiProbabsd0index_2d = this->
index(vTrack2DHistos_,
"h2_chi2Prob_vs_d0");
990 vTrack2DHistos_[chiProbabsd0index_2d]->Fill(fabs(
track.d0()), chi2Prob);
991 static const int normchiphiindex_2d = this->
index(vTrack2DHistos_,
"h2_normchi2_vs_phi");
992 vTrack2DHistos_[normchiphiindex_2d]->Fill(
track.phi(),
normchi2);
993 static const int chietaindex_2d = this->
index(vTrack2DHistos_,
"h2_chi2_vs_eta");
994 vTrack2DHistos_[chietaindex_2d]->Fill(
track.eta(),
track.chi2());
995 static const int chiProbetaindex_2d = this->
index(vTrack2DHistos_,
"h2_chi2Prob_vs_eta");
996 vTrack2DHistos_[chiProbetaindex_2d]->Fill(
track.eta(), chi2Prob);
997 static const int normchietaindex_2d = this->
index(vTrack2DHistos_,
"h2_normchi2_vs_eta");
998 vTrack2DHistos_[normchietaindex_2d]->Fill(
track.eta(),
normchi2);
999 static const int kappaphiindex_2d = this->
index(vTrack2DHistos_,
"h2_kappa_vs_phi");
1000 vTrack2DHistos_[kappaphiindex_2d]->Fill(
track.phi(),
kappa);
1001 static const int kappaetaindex_2d = this->
index(vTrack2DHistos_,
"h2_kappa_vs_eta");
1002 vTrack2DHistos_[kappaetaindex_2d]->Fill(
track.eta(),
kappa);
1003 static const int normchi2kappa_2d = this->
index(vTrack2DHistos_,
"h2_normchi2_vs_kappa");
1012 if (beamSpotHandle.
isValid()) {
1025 double mindxy = 100.;
1027 if (vertexHandle.
isValid() && !isCosmics_) {
1028 for (reco::VertexCollection::const_iterator pvtx = vertexHandle->begin(); pvtx != vertexHandle->end(); ++pvtx) {
1031 mindxy =
track.dxy(mypoint);
1038 hdxyPV->Fill(mindxy);
1039 hd0PV->Fill(-mindxy);
1042 hd0PVvsphi->Fill(
track.phi(), -mindxy);
1043 hd0PVvseta->Fill(
track.eta(), -mindxy);
1044 hd0PVvspt->Fill(
track.pt(), -mindxy);
1059 hNtrk->Fill(tC.size());
1060 hNtrkZoom->Fill(tC.size());
1061 hNhighPurity->Fill(nHighPurityTracks);
1072 runInfoMap_[
run.run()].first = 0;
1073 runInfoMap_[
run.run()].second = 0;
1076 for (
int n : {0, 1, 2, 3, 4, 5}) {
1077 runHitsMap_[
run.run()][
n] = 0;
1081 magneticField_ = &
setup.getData(magFieldToken_);
1084 edm::LogInfo(
"DMRChecker") <<
"run number:" <<
run.run() <<
" magnetic field: " << B_ <<
" [T]" << std::endl;
1087 time_t start_time =
summary->m_start_time_ll;
1089 time_t end_time =
summary->m_stop_time_ll;
1092 float average_current =
summary->m_avg_current;
1093 float uptimeInSeconds =
summary->m_run_intervall_micros;
1095 <<
" | end_time: " << end_time <<
" ( " <<
summary->m_stop_time_str <<
" )" 1096 <<
" | average current: " << average_current
1097 <<
" | uptime in seconds: " << uptimeInSeconds << std::endl;
1099 double seconds = difftime(end_time, start_time) / 1.0e+6;
1104 trackerGeometry_ = &
setup.getData(geomToken_);
1114 trackerTopology_ = &
setup.getData(topoToken_);
1120 if (doLatencyAnalysis_) {
1133 conditionsMap_[
run.run()].first =
mode;
1134 conditionsMap_[
run.run()].second = B_;
1145 TH1D::SetDefaultSumw2(kTRUE);
1153 hrun = book<TH1D>(
"h_run",
"run", 100000, 230000, 240000);
1154 hlumi = book<TH1D>(
"h_lumi",
"lumi", 1000, 0, 1000);
1158 hchi2ndof = book<TH1D>(
"h_chi2ndof",
"chi2/ndf;#chi^{2}/ndf;tracks", 100, 0, 5.);
1159 hCharge = book<TH1D>(
"h_charge",
"charge;Charge of the track;tracks", 5, -2.5, 2.5);
1160 hNtrk = book<TH1D>(
"h_Ntrk",
"ntracks;Number of Tracks;events", 200, 0., 200.);
1161 hNtrkZoom = book<TH1D>(
"h_NtrkZoom",
"Number of tracks; number of tracks;events", 10, 0., 10.);
1162 hNhighPurity = book<TH1D>(
"h_NhighPurity",
"n. high purity tracks;Number of high purity tracks;events", 200, 0., 200.);
1165 htrkAlgo = book<TH1I>(
"h_trkAlgo",
"tracking step;iterative tracking step;tracks", nAlgos, -0.5, nAlgos - 0.5);
1166 for (
int nbin = 1; nbin <= htrkAlgo->GetNbinsX(); nbin++) {
1170 htrkQuality = book<TH1I>(
"h_trkQuality",
"track quality;track quality;tracks", 6, -1, 5);
1171 std::string qualities[7] = {
"undef",
"loose",
"tight",
"highPurity",
"confirmed",
"goodIterative"};
1172 for (
int nbin = 1; nbin <= htrkQuality->GetNbinsX(); nbin++) {
1173 htrkQuality->GetXaxis()->SetBinLabel(nbin,
qualities[nbin - 1].c_str());
1176 hP = book<TH1D>(
"h_P",
"Momentum;track momentum [GeV];tracks", 100, 0., 100.);
1177 hQoverP = book<TH1D>(
"h_qoverp",
"Track q/p; track q/p [GeV^{-1}];tracks", 100, -1., 1.);
1178 hQoverPZoom = book<TH1D>(
"h_qoverpZoom",
"Track q/p; track q/p [GeV^{-1}];tracks", 100, -0.1, 0.1);
1179 hPt = book<TH1D>(
"h_Pt",
"Transverse Momentum;track p_{T} [GeV];tracks", 100, 0., 100.);
1180 hHit = book<TH1D>(
"h_nHits",
"Number of hits;track n. hits;tracks", 50, -0.5, 49.5);
1181 hHit2D = book<TH1D>(
"h_nHit2D",
"Number of 2D hits; number of 2D hits;tracks", 20, 0, 20);
1185 hBPixResXPrime = book<TH1D>(
"h_BPixResXPrime",
"BPix track X-residuals;res_{X'} [#mum];hits", 100, -1000., 1000.);
1186 hFPixResXPrime = book<TH1D>(
"h_FPixResXPrime",
"FPix track X-residuals;res_{X'} [#mum];hits", 100, -1000., 1000.);
1187 hFPixZPlusResXPrime = book<TH1D>(
"h_FPixZPlusResXPrime",
"FPix (Z+) track X-residuals;res_{X'} [#mum];hits", 100, -1000., 1000.);
1188 hFPixZMinusResXPrime = book<TH1D>(
"h_FPixZMinusResXPrime",
"FPix (Z-) track X-residuals;res_{X'} [#mum];hits", 100, -1000., 1000.);
1190 hBPixResYPrime = book<TH1D>(
"h_BPixResYPrime",
"BPix track Y-residuals;res_{Y'} [#mum];hits", 100, -1000., 1000.);
1191 hFPixResYPrime = book<TH1D>(
"h_FPixResYPrime",
"FPix track Y-residuals;res_{Y'} [#mum];hits", 100, -1000., 1000.);
1192 hFPixZPlusResYPrime = book<TH1D>(
"h_FPixZPlusResYPrime",
"FPix (Z+) track Y-residuals;res_{Y'} [#mum];hits", 100, -1000., 1000.);
1193 hFPixZMinusResYPrime = book<TH1D>(
"h_FPixZMinusResYPrime",
"FPix (Z-) track Y-residuals;res_{Y'} [#mum];hits", 100, -1000., 1000.);
1195 hBPixResXPull = book<TH1D>(
"h_BPixResXPull",
"BPix track X-pulls;res_{X'}/#sigma_{res_{X'}};hits", 100, -5., 5.);
1196 hFPixResXPull = book<TH1D>(
"h_FPixResXPull",
"FPix track X-pulls;res_{X'}/#sigma_{res_{X'}};hits", 100, -5., 5.);
1197 hFPixZPlusResXPull = book<TH1D>(
"h_FPixZPlusResXPull",
"FPix (Z+) track X-pulls;res_{X'}/#sigma_{res_{X'}};hits", 100, -5., 5.);
1198 hFPixZMinusResXPull = book<TH1D>(
"h_FPixZMinusResXPull",
"FPix (Z-) track X-pulls;res_{X'}/#sigma_{res_{X'}};hits", 100, -5., 5.);
1200 hBPixResYPull = book<TH1D>(
"h_BPixResYPull",
"BPix track Y-pulls;res_{Y'}/#sigma_{res_{Y'}};hits", 100, -5., 5.);
1201 hFPixResYPull = book<TH1D>(
"h_FPixResYPull",
"FPix track Y-pulls;res_{Y'}/#sigma_{res_{Y'}};hits", 100, -5., 5.);
1202 hFPixZPlusResYPull = book<TH1D>(
"h_FPixZPlusResYPull",
"FPix (Z+) track Y-pulls;res_{Y'}/#sigma_{res_{Y'}};hits", 100, -5., 5.);
1203 hFPixZMinusResYPull = book<TH1D>(
"h_FPixZMinusResYPull",
"FPix (Z-) track Y-pulls;res_{Y'}/#sigma_{res_{Y'}};hits", 100, -5., 5.);
1207 hTIBResXPrime = book<TH1D>(
"h_TIBResXPrime",
"TIB track X-residuals;res_{X'} [#mum];hits", 100, -1000., 1000.);
1208 hTOBResXPrime = book<TH1D>(
"h_TOBResXPrime",
"TOB track X-residuals;res_{X'} [#mum];hits", 100, -1000., 1000.);
1209 hTIDResXPrime = book<TH1D>(
"h_TIDResXPrime",
"TID track X-residuals;res_{X'} [#mum];hits", 100, -1000., 1000.);
1210 hTECResXPrime = book<TH1D>(
"h_TECResXPrime",
"TEC track X-residuals;res_{X'} [#mum];hits", 100, -1000., 1000.);
1212 hTIBResXPull = book<TH1D>(
"h_TIBResXPull",
"TIB track X-pulls;res_{X'}/#sigma_{res_{X'}};hits", 100, -5., 5.);
1213 hTOBResXPull = book<TH1D>(
"h_TOBResXPull",
"TOB track X-pulls;res_{X'}/#sigma_{res_{X'}};hits", 100, -5., 5.);
1214 hTIDResXPull = book<TH1D>(
"h_TIDResXPull",
"TID track X-pulls;res_{X'}/#sigma_{res_{X'}};hits", 100, -5., 5.);
1215 hTECResXPull = book<TH1D>(
"h_TECResXPull",
"TEC track X-pulls;res_{X'}/#sigma_{res_{X'}};hits", 100, -5., 5.);
1219 hHitCountVsZBPix = book<TH1D>(
"h_HitCountVsZBpix",
"Number of BPix hits vs z;hit global z;hits", 60, -30, 30);
1220 hHitCountVsZFPix = book<TH1D>(
"h_HitCountVsZFpix",
"Number of FPix hits vs z;hit global z;hits", 100, -100, 100);
1222 hHitCountVsXBPix = book<TH1D>(
"h_HitCountVsXBpix",
"Number of BPix hits vs x;hit global x;hits", 20, -20, 20);
1223 hHitCountVsXFPix = book<TH1D>(
"h_HitCountVsXFpix",
"Number of FPix hits vs x;hit global x;hits", 20, -20, 20);
1225 hHitCountVsYBPix = book<TH1D>(
"h_HitCountVsYBpix",
"Number of BPix hits vs y;hit global y;hits", 20, -20, 20);
1226 hHitCountVsYFPix = book<TH1D>(
"h_HitCountVsYFpix",
"Number of FPix hits vs y;hit global y;hits", 20, -20, 20);
1228 hHitCountVsThetaBPix = book<TH1D>(
"h_HitCountVsThetaBpix",
"Number of BPix hits vs #theta;hit global #theta;hits", 20, 0.,
M_PI);
1229 hHitCountVsPhiBPix = book<TH1D>(
"h_HitCountVsPhiBpix",
"Number of BPix hits vs #phi;hit global #phi;hits", 20, -
M_PI,
M_PI);
1231 hHitCountVsThetaFPix = book<TH1D>(
"h_HitCountVsThetaFpix",
"Number of FPix hits vs #theta;hit global #theta;hits", 40, 0.,
M_PI);
1232 hHitCountVsPhiFPix = book<TH1D>(
"h_HitCountVsPhiFpix",
"Number of FPix hits vs #phi;hit global #phi;hits", 20, -
M_PI,
M_PI);
1236 hHitCountVsZFPixPlus = book<TH1D>(
"h_HitCountVsZFPixPlus",
"Number of FPix(Z+) hits vs z;hit global z;hits", 60, 15., 60);
1237 hHitCountVsZFPixMinus = book<TH1D>(
"h_HitCountVsZFPixMinus",
"Number of FPix(Z-) hits vs z;hit global z;hits", 100, -60., -15.);
1239 hHitCountVsXFPixPlus = book<TH1D>(
"h_HitCountVsXFPixPlus",
"Number of FPix(Z+) hits vs x;hit global x;hits", 20, -20, 20);
1240 hHitCountVsXFPixMinus = book<TH1D>(
"h_HitCountVsXFPixMinus",
"Number of FPix(Z-) hits vs x;hit global x;hits", 20, -20, 20);
1242 hHitCountVsYFPixPlus = book<TH1D>(
"h_HitCountVsYFPixPlus",
"Number of FPix(Z+) hits vs y;hit global y;hits", 20, -20, 20);
1243 hHitCountVsYFPixMinus = book<TH1D>(
"h_HitCountVsYFPixMinus",
"Number of FPix(Z-) hits vs y;hit global y;hits", 20, -20, 20);
1245 hHitCountVsThetaFPixPlus = book<TH1D>(
"h_HitCountVsThetaFPixPlus",
"Number of FPix(Z+) hits vs #theta;hit global #theta;hits", 20, 0.,
M_PI);
1246 hHitCountVsPhiFPixPlus = book<TH1D>(
"h_HitCountVsPhiFPixPlus",
"Number of FPix(Z+) hits vs #phi;hit global #phi;hits",20,-
M_PI,
M_PI);
1248 hHitCountVsThetaFPixMinus = book<TH1D>(
"h_HitCountVsThetaFPixMinus",
"Number of FPix(Z+) hits vs #theta;hit global #theta;hits", 40, 0.,
M_PI);
1249 hHitCountVsPhiFPixMinus = book<TH1D>(
"h_HitCountVsPhiFPixMinus",
"Number of FPix(Z+) hits vs #phi;hit global #phi;hits",20,-
M_PI,
M_PI);
1252 barrelLayersResidualsX = bookResidualsHistogram(ByLayerResiduals, 4,
"X",
"Res",
"BPix");
1253 endcapDisksResidualsX = bookResidualsHistogram(ByLayerResiduals, 6,
"X",
"Res",
"FPix");
1254 barrelLayersResidualsY = bookResidualsHistogram(ByLayerResiduals, 4,
"Y",
"Res",
"BPix");
1255 endcapDisksResidualsY = bookResidualsHistogram(ByLayerResiduals, 6,
"Y",
"Res",
"FPix");
1258 barrelLayersPullsX = bookResidualsHistogram(ByLayerPulls, 4,
"X",
"Pull",
"BPix");
1259 endcapDisksPullsX = bookResidualsHistogram(ByLayerPulls, 6,
"X",
"Pull",
"FPix");
1260 barrelLayersPullsY = bookResidualsHistogram(ByLayerPulls, 4,
"Y",
"Pull",
"BPix");
1261 endcapDisksPullsY = bookResidualsHistogram(ByLayerPulls, 6,
"Y",
"Pull",
"FPix");
1263 hEta = book<TH1D>(
"h_Eta",
"Track pseudorapidity; track #eta;tracks", 100, -etaMax_, etaMax_);
1264 hPhi = book<TH1D>(
"h_Phi",
"Track azimuth; track #phi;tracks", 100, -
M_PI,
M_PI);
1266 hPhiBarrel = book<TH1D>(
"h_PhiBarrel",
"hPhiBarrel (0<|#eta|<0.8);track #Phi;tracks", 100, -
M_PI,
M_PI);
1267 hPhiOverlapPlus = book<TH1D>(
"h_PhiOverlapPlus",
"hPhiOverlapPlus (0.8<#eta<1.4);track #phi;tracks", 100, -
M_PI,
M_PI);
1268 hPhiOverlapMinus = book<TH1D>(
"h_PhiOverlapMinus",
"hPhiOverlapMinus (-1.4<#eta<-0.8);track #phi;tracks", 100, -
M_PI,
M_PI);
1269 hPhiEndcapPlus = book<TH1D>(
"h_PhiEndcapPlus",
"hPhiEndcapPlus (#eta>1.4);track #phi;track", 100, -
M_PI,
M_PI);
1270 hPhiEndcapMinus = book<TH1D>(
"h_PhiEndcapMinus",
"hPhiEndcapMinus (#eta<1.4);track #phi;tracks", 100, -
M_PI,
M_PI);
1273 hPhp = book<TH1D>(
"h_P_hp",
"Momentum (high purity);track momentum [GeV];tracks", 100, 0., 100.);
1274 hPthp = book<TH1D>(
"h_Pt_hp",
"Transverse Momentum (high purity);track p_{T} [GeV];tracks", 100, 0., 100.);
1275 hHithp = book<TH1D>(
"h_nHit_hp",
"Number of hits (high purity);track n. hits;tracks", 30, 0, 30);
1276 hEtahp = book<TH1D>(
"h_Eta_hp",
"Track pseudorapidity (high purity); track #eta;tracks", 100, -etaMax_, etaMax_);
1277 hPhihp = book<TH1D>(
"h_Phi_hp",
"Track azimuth (high purity); track #phi;tracks", 100, -
M_PI,
M_PI);
1278 hchi2ndofhp = book<TH1D>(
"h_chi2ndof_hp",
"chi2/ndf (high purity);#chi^{2}/ndf;tracks", 100, 0, 5.);
1279 hchi2Probhp = book<TH1D>(
"hchi2_Prob_hp",
"#chi^{2} probability (high purity);#chi^{2}prob_{Track};Number of Tracks", 100, 0.0, 1.);
1281 hvx = book<TH1D>(
"h_vx",
"Track v_{x} ; track v_{x} [cm];tracks", 100, -1.5, 1.5);
1282 hvy = book<TH1D>(
"h_vy",
"Track v_{y} ; track v_{y} [cm];tracks", 100, -1.5, 1.5);
1283 hvz = book<TH1D>(
"h_vz",
"Track v_{z} ; track v_{z} [cm];tracks", 100, -20., 20.);
1284 hd0 = book<TH1D>(
"h_d0",
"Track d_{0} ; track d_{0} [cm];tracks", 100, -1., 1.);
1285 hdxy = book<TH1D>(
"h_dxy",
"Track d_{xy}; track d_{xy} [cm]; tracks", 100, -0.5, 0.5);
1286 hdz = book<TH1D>(
"h_dz",
"Track d_{z} ; track d_{z} [cm]; tracks", 100, -20, 20);
1288 hd0PVvsphi = book<TH2D>(
"h2_d0PVvsphi",
"hd0PVvsphi;track #phi;track d_{0}(PV) [cm]", 160, -
M_PI,
M_PI, 100, -1., 1.);
1289 hd0PVvseta = book<TH2D>(
"h2_d0PVvseta",
"hdPV0vseta;track #eta;track d_{0}(PV) [cm]", 160, -etaMax_, etaMax_, 100, -1., 1.);
1290 hd0PVvspt = book<TH2D>(
"h2_d0PVvspt",
"hdPV0vspt;track p_{T};d_{0}(PV) [cm]", 50, 0., 100., 100, -1, 1.);
1292 hdxyBS = book<TH1D>(
"h_dxyBS",
"hdxyBS; track d_{xy}(BS) [cm];tracks", 100, -0.1, 0.1);
1293 hd0BS = book<TH1D>(
"h_d0BS",
"hd0BS ; track d_{0}(BS) [cm];tracks", 100, -0.1, 0.1);
1294 hdzBS = book<TH1D>(
"h_dzBS",
"hdzBS ; track d_{z}(BS) [cm];tracks", 100, -12, 12);
1295 hdxyPV = book<TH1D>(
"h_dxyPV",
"hdxyPV; track d_{xy}(PV) [cm];tracks", 100, -0.1, 0.1);
1296 hd0PV = book<TH1D>(
"h_d0PV",
"hd0PV ; track d_{0}(PV) [cm];tracks", 100, -0.15, 0.15);
1297 hdzPV = book<TH1D>(
"h_dzPV",
"hdzPV ; track d_{z}(PV) [cm];tracks", 100, -0.1, 0.1);
1299 hnhTIB = book<TH1D>(
"h_nHitTIB",
"nhTIB;# hits in TIB; tracks", 20, 0., 20.);
1300 hnhTID = book<TH1D>(
"h_nHitTID",
"nhTID;# hits in TID; tracks", 20, 0., 20.);
1301 hnhTOB = book<TH1D>(
"h_nHitTOB",
"nhTOB;# hits in TOB; tracks", 20, 0., 20.);
1302 hnhTEC = book<TH1D>(
"h_nHitTEC",
"nhTEC;# hits in TEC; tracks", 20, 0., 20.);
1305 hvx = book<TH1D>(
"h_vx",
"Track v_{x};track v_{x} [cm];tracks", 100, -100., 100.);
1306 hvy = book<TH1D>(
"h_vy",
"Track v_{y};track v_{y} [cm];tracks", 100, -100., 100.);
1307 hvz = book<TH1D>(
"h_vz",
"Track v_{z};track v_{z} [cm];track", 100, -100., 100.);
1308 hd0 = book<TH1D>(
"h_d0",
"Track d_{0};track d_{0} [cm];track", 100, -100., 100.);
1309 hdxy = book<TH1D>(
"h_dxy",
"Track d_{xy};track d_{xy} [cm];tracks", 100, -100, 100);
1310 hdz = book<TH1D>(
"h_dz",
"Track d_{z};track d_{z} [cm];tracks", 100, -200, 200);
1312 hd0vsphi = book<TH2D>(
"h2_d0vsphi",
"Track d_{0} vs #phi; track #phi;track d_{0} [cm]", 160, -
M_PI,
M_PI, 100, -100., 100.);
1313 hd0vseta = book<TH2D>(
"h2_d0vseta",
"Track d_{0} vs #eta; track #eta;track d_{0} [cm]", 160, -etaMax_, etaMax_, 100, -100., 100.);
1314 hd0vspt = book<TH2D>(
"h2_d0vspt",
"Track d_{0} vs p_{T};track p_{T};track d_{0} [cm]", 50, 0., 100., 100, -100, 100);
1316 hdxyBS = book<TH1D>(
"h_dxyBS",
"Track d_{xy}(BS);d_{xy}(BS) [cm];tracks", 100, -100., 100.);
1317 hd0BS = book<TH1D>(
"h_d0BS",
"Track d_{0}(BS);d_{0}(BS) [cm];tracks", 100, -100., 100.);
1318 hdzBS = book<TH1D>(
"h_dzBS",
"Track d_{z}(BS);d_{z}(BS) [cm];tracks", 100, -100., 100.);
1319 hdxyPV = book<TH1D>(
"h_dxyPV",
"Track d_{xy}(PV); d_{xy}(PV) [cm];tracks", 100, -100., 100.);
1320 hd0PV = book<TH1D>(
"h_d0PV",
"Track d_{0}(PV); d_{0}(PV) [cm];tracks", 100, -100., 100.);
1321 hdzPV = book<TH1D>(
"h_dzPV",
"Track d_{z}(PV); d_{z}(PV) [cm];tracks", 100, -100., 100.);
1323 hnhTIB = book<TH1D>(
"h_nHitTIB",
"nhTIB;# hits in TIB; tracks", 30, 0., 30.);
1324 hnhTID = book<TH1D>(
"h_nHitTID",
"nhTID;# hits in TID; tracks", 30, 0., 30.);
1325 hnhTOB = book<TH1D>(
"h_nHitTOB",
"nhTOB;# hits in TOB; tracks", 30, 0., 30.);
1326 hnhTEC = book<TH1D>(
"h_nHitTEC",
"nhTEC;# hits in TEC; tracks", 30, 0., 30.);
1329 hnhpxb = book<TH1D>(
"h_nHitPXB",
"nhpxb;# hits in Pixel Barrel; tracks", 10, 0., 10.);
1330 hnhpxe = book<TH1D>(
"h_nHitPXE",
"nhpxe;# hits in Pixel Endcap; tracks", 10, 0., 10.);
1332 hHitComposition = book<TH1D>(
"h_hitcomposition",
"track hit composition;;# hits", 6, -0.5, 5.5);
1333 pNBpixHitsVsVx = book<TProfile>(
"p_NpixHits_vs_Vx",
"n. Barrel Pixel hits vs. v_{x};v_{x} (cm);n. BPix hits", 20, -20, 20);
1334 pNBpixHitsVsVy = book<TProfile>(
"p_NpixHits_vs_Vy",
"n. Barrel Pixel hits vs. v_{y};v_{y} (cm);n. BPix hits", 20, -20, 20);
1335 pNBpixHitsVsVz = book<TProfile>(
"p_NpixHits_vs_Vz",
"n. Barrel Pixel hits vs. v_{z};v_{z} (cm);n. BPix hits", 20, -100, 100);
1337 std::string dets[6] = {
"PXB",
"PXF",
"TIB",
"TID",
"TOB",
"TEC"};
1338 for (
int i = 1;
i <= hHitComposition->GetNbinsX();
i++) {
1339 hHitComposition->GetXaxis()->SetBinLabel(
i, dets[
i - 1].c_str());
1342 vTrackHistos_.push_back(book<TH1F>(
"h_tracketa",
"Track #eta;#eta_{Track};Number of Tracks", 90, -etaMax_, etaMax_));
1343 vTrackHistos_.push_back(book<TH1F>(
"h_trackphi",
"Track #phi;#phi_{Track};Number of Tracks", 90, -
M_PI,
M_PI));
1344 vTrackHistos_.push_back(book<TH1F>(
"h_trackNumberOfValidHits",
"Track # of valid hits;# of valid hits _{Track};Number of Tracks", 40, 0., 40.));
1345 vTrackHistos_.push_back(book<TH1F>(
"h_trackNumberOfLostHits",
"Track # of lost hits;# of lost hits _{Track};Number of Tracks", 10, 0., 10.));
1346 vTrackHistos_.push_back(book<TH1F>(
"h_curvature",
"Curvature #kappa;#kappa_{Track};Number of Tracks", 100, -.05, .05));
1347 vTrackHistos_.push_back(book<TH1F>(
"h_curvature_pos",
"Curvature |#kappa| Positive Tracks;|#kappa_{pos Track}|;Number of Tracks", 100, .0, .05));
1348 vTrackHistos_.push_back(book<TH1F>(
"h_curvature_neg",
"Curvature |#kappa| Negative Tracks;|#kappa_{neg Track}|;Number of Tracks", 100, .0, .05));
1349 vTrackHistos_.push_back(book<TH1F>(
"h_diff_curvature",
"Curvature |#kappa| Tracks Difference;|#kappa_{Track}|;# Pos Tracks - # Neg Tracks", 100,.0,.05));
1351 vTrackHistos_.push_back(book<TH1F>(
"h_chi2",
"Track #chi^{2};#chi^{2}_{Track};Number of Tracks", 500, -0.01, 500.));
1352 vTrackHistos_.push_back(book<TH1F>(
"h_chi2Prob",
"#chi^{2} probability;Track Prob(#chi^{2},ndof);Number of Tracks", 100, 0.0, 1.));
1353 vTrackHistos_.push_back(book<TH1F>(
"h_normchi2",
"#chi^{2}/ndof;#chi^{2}/ndof;Number of Tracks", 100, -0.01, 10.));
1356 double xBins[19] = {0., 0.15, 0.5, 1., 1.5, 2., 2.5, 3., 3.5, 4., 4.5, 5., 7., 10., 15., 25., 40., 100., 200.};
1357 vTrackHistos_.push_back(book<TH1F>(
"h_pt",
"Track p_{T};p_{T}^{track} [GeV];Number of Tracks", 250, 0., 250));
1358 vTrackHistos_.push_back(book<TH1F>(
"h_ptrebin",
"Track p_{T};p_{T}^{track} [GeV];Number of Tracks", 18,
xBins));
1360 vTrackHistos_.push_back(book<TH1F>(
"h_ptResolution",
"#delta_{p_{T}}/p_{T}^{track};#delta_{p_{T}}/p_{T}^{track};Number of Tracks", 100, 0., 0.5));
1361 vTrackProfiles_.push_back(book<TProfile>(
"p_d0_vs_phi",
"Transverse Impact Parameter vs. #phi;#phi_{Track};#LT d_{0} #GT [cm]", 100, -
M_PI,
M_PI));
1362 vTrackProfiles_.push_back(book<TProfile>(
"p_dz_vs_phi",
"Longitudinal Impact Parameter vs. #phi;#phi_{Track};#LT d_{z} #GT [cm]", 100, -
M_PI,
M_PI));
1363 vTrackProfiles_.push_back(book<TProfile>(
"p_d0_vs_eta",
"Transverse Impact Parameter vs. #eta;#eta_{Track};#LT d_{0} #GT [cm]", 100, -etaMax_, etaMax_));
1364 vTrackProfiles_.push_back(book<TProfile>(
"p_dz_vs_eta",
"Longitudinal Impact Parameter vs. #eta;#eta_{Track};#LT d_{z} #GT [cm]", 100, -etaMax_, etaMax_));
1365 vTrackProfiles_.push_back(book<TProfile>(
"p_chi2_vs_phi",
"#chi^{2} vs. #phi;#phi_{Track};#LT #chi^{2} #GT", 100, -
M_PI,
M_PI));
1366 vTrackProfiles_.push_back(book<TProfile>(
"p_chi2Prob_vs_phi",
"#chi^{2} probablility vs. #phi;#phi_{Track};#LT #chi^{2} probability#GT",100,-
M_PI,
M_PI));
1367 vTrackProfiles_.push_back(book<TProfile>(
"p_chi2Prob_vs_d0",
"#chi^{2} probablility vs. |d_{0}|;|d_{0}|[cm];#LT #chi^{2} probability#GT", 100, 0, 80));
1368 vTrackProfiles_.push_back(book<TProfile>(
"p_chi2Prob_vs_dz",
"#chi^{2} probablility vs. dz;d_{z} [cm];#LT #chi^{2} probability#GT", 100, -30, 30));
1369 vTrackProfiles_.push_back(book<TProfile>(
"p_normchi2_vs_phi",
"#chi^{2}/ndof vs. #phi;#phi_{Track};#LT #chi^{2}/ndof #GT", 100, -
M_PI,
M_PI));
1370 vTrackProfiles_.push_back(book<TProfile>(
"p_chi2_vs_eta",
"#chi^{2} vs. #eta;#eta_{Track};#LT #chi^{2} #GT", 100, -etaMax_, etaMax_));
1371 vTrackProfiles_.push_back(book<TProfile>(
"p_normchi2_vs_pt",
"norm #chi^{2} vs. p_{T}_{Track}; p_{T}_{Track};#LT #chi^{2}/ndof #GT", 18,
xBins));
1372 vTrackProfiles_.push_back(book<TProfile>(
"p_normchi2_vs_p",
"#chi^{2}/ndof vs. p_{Track};p_{Track};#LT #chi^{2}/ndof #GT", 18,
xBins));
1373 vTrackProfiles_.push_back(book<TProfile>(
"p_chi2Prob_vs_eta",
"#chi^{2} probability vs. #eta;#eta_{Track};#LT #chi^{2} probability #GT",100,-etaMax_, etaMax_));
1374 vTrackProfiles_.push_back(book<TProfile>(
"p_normchi2_vs_eta",
"#chi^{2}/ndof vs. #eta;#eta_{Track};#LT #chi^{2}/ndof #GT", 100, -etaMax_, etaMax_));
1375 vTrackProfiles_.push_back(book<TProfile>(
"p_kappa_vs_phi",
"#kappa vs. #phi;#phi_{Track};#kappa", 100, -
M_PI,
M_PI));
1376 vTrackProfiles_.push_back(book<TProfile>(
"p_kappa_vs_eta",
"#kappa vs. #eta;#eta_{Track};#kappa", 100, -etaMax_, etaMax_));
1377 vTrackProfiles_.push_back(book<TProfile>(
"p_ptResolution_vs_phi",
"#delta_{p_{T}}/p_{T}^{track};#phi^{track};#delta_{p_{T}}/p_{T}^{track}", 100,-
M_PI,
M_PI));
1378 vTrackProfiles_.push_back(book<TProfile>(
"p_ptResolution_vs_eta",
"#delta_{p_{T}}/p_{T}^{track};#eta^{track};#delta_{p_{T}}/p_{T}^{track}", 100, -etaMax_, etaMax_));
1379 vTrack2DHistos_.push_back(book<TH2F>(
"h2_d0_vs_phi",
"Transverse Impact Parameter vs. #phi;#phi_{Track};d_{0} [cm]", 100, -
M_PI,
M_PI, 100, -1., 1.));
1380 vTrack2DHistos_.push_back(book<TH2F>(
"h2_phi_vs_eta",
"Track #phi vs. #eta;#eta_{Track};#phi_{Track}",50, -etaMax_, etaMax_, 50, -
M_PI,
M_PI));
1381 vTrack2DHistos_.push_back(book<TH2F>(
"h2_dz_vs_phi",
"Longitudinal Impact Parameter vs. #phi;#phi_{Track};d_{z} [cm]",100,-
M_PI,
M_PI,100,-100.,100.));
1382 vTrack2DHistos_.push_back(book<TH2F>(
"h2_d0_vs_eta",
"Transverse Impact Parameter vs. #eta;#eta_{Track};d_{0} [cm]", 100, -etaMax_, etaMax_, 100, -1., 1.));
1383 vTrack2DHistos_.push_back(book<TH2F>(
"h2_dz_vs_eta",
"Longitudinal Impact Parameter vs. #eta;#eta_{Track};d_{z} [cm]",100, -etaMax_, etaMax_, 100,-100.,100.));
1384 vTrack2DHistos_.push_back(book<TH2F>(
"h2_chi2_vs_phi",
"#chi^{2} vs. #phi;#phi_{Track};#chi^{2}", 100, -
M_PI,
M_PI, 500, 0., 500.));
1385 vTrack2DHistos_.push_back(book<TH2F>(
"h2_chi2Prob_vs_phi",
"#chi^{2} probability vs. #phi;#phi_{Track};#chi^{2} probability",100,-
M_PI,
M_PI,100,0.,1.));
1386 vTrack2DHistos_.push_back(book<TH2F>(
"h2_chi2Prob_vs_d0",
"#chi^{2} probability vs. |d_{0}|;|d_{0}| [cm];#chi^{2} probability",100,0,80,100,0.,1.));
1387 vTrack2DHistos_.push_back(book<TH2F>(
"h2_normchi2_vs_phi",
"#chi^{2}/ndof vs. #phi;#phi_{Track};#chi^{2}/ndof", 100, -
M_PI,
M_PI, 100, 0., 10.));
1388 vTrack2DHistos_.push_back(book<TH2F>(
"h2_chi2_vs_eta",
"#chi^{2} vs. #eta;#eta_{Track};#chi^{2}", 100, -etaMax_, etaMax_, 500, 0., 500.));
1389 vTrack2DHistos_.push_back(book<TH2F>(
"h2_chi2Prob_vs_eta",
"#chi^{2} probaility vs. #eta;#eta_{Track};#chi^{2} probability",100,-
M_PI,
M_PI,100,0.,1.));
1390 vTrack2DHistos_.push_back(book<TH2F>(
"h2_normchi2_vs_eta",
"#chi^{2}/ndof vs. #eta;#eta_{Track};#chi^{2}/ndof", 100, -etaMax_, etaMax_, 100, 0., 10.));
1391 vTrack2DHistos_.push_back(book<TH2F>(
"h2_kappa_vs_phi",
"#kappa vs. #phi;#phi_{Track};#kappa", 100, -
M_PI,
M_PI, 100, .0, .05));
1392 vTrack2DHistos_.push_back(book<TH2F>(
"h2_kappa_vs_eta",
"#kappa vs. #eta;#eta_{Track};#kappa", 100, -etaMax_, etaMax_, 100, .0, .05));
1393 vTrack2DHistos_.push_back(book<TH2F>(
"h2_normchi2_vs_kappa",
"#kappa vs. #chi^{2}/ndof;#chi^{2}/ndof;#kappa", 100, 0., 10, 100, -.03, .03));
1397 fullPixelmapXDMR->createTrackerBaseMap();
1398 fullPixelmapYDMR->createTrackerBaseMap();
1403 edm::LogPrint(
"DMRChecker") <<
"*******************************" << std::endl;
1404 edm::LogPrint(
"DMRChecker") <<
"Events run in total: " << ievt << std::endl;
1405 edm::LogPrint(
"DMRChecker") <<
"n. tracks: " << itrks << std::endl;
1406 edm::LogPrint(
"DMRChecker") <<
"*******************************" << std::endl;
1408 int nFiringTriggers = !triggerMap_.empty() ? triggerMap_.size() : 1;
1409 edm::LogPrint(
"DMRChecker") <<
"firing triggers: " << triggerMap_.size() << std::endl;
1410 edm::LogPrint(
"DMRChecker") <<
"*******************************" << std::endl;
1413 book<TH1D>(
"tksByTrigger",
"tracks by HLT path;;% of # traks", nFiringTriggers, -0.5, nFiringTriggers - 0.5);
1415 book<TH1D>(
"evtsByTrigger",
"events by HLT path;;% of # events", nFiringTriggers, -0.5, nFiringTriggers - 0.5);
1418 edm::LogPrint(
"DMRChecker") << __FILE__ <<
"@" << __FUNCTION__ <<
" L-" << __LINE__ << std::endl;
1421 for (
const auto &
it : triggerMap_) {
1424 double trkpercent = ((
it.second).
second) * 100. / double(itrks);
1425 double evtpercent = ((
it.second).
first) * 100. / double(ievt);
1429 edm::LogPrint(
"DMRChecker") <<
"HLT path: " << std::setw(60) << left <<
it.first <<
" | events firing: " << right
1430 << std::setw(8) << (
it.second).
first <<
" (" << setw(8) <<
fixed << evtpercent <<
"%)" 1431 <<
" | tracks collected: " << std::setw(10) << (
it.second).
second <<
" (" << setw(8)
1432 <<
fixed << trkpercent <<
"%)";
1434 tksByTrigger_->SetBinContent(
i, trkpercent);
1435 tksByTrigger_->GetXaxis()->SetBinLabel(
i, (
it.first).c_str());
1437 evtsByTrigger_->SetBinContent(
i, evtpercent);
1438 evtsByTrigger_->GetXaxis()->SetBinLabel(
i, (
it.first).c_str());
1442 edm::LogPrint(
"DMRChecker") << __FILE__ <<
"@" << __FUNCTION__ <<
" L-" << __LINE__ << std::endl;
1444 int nRuns = conditionsMap_.size();
1448 vector<int> theRuns_;
1449 theRuns_.reserve(conditionsMap_.size());
1450 for (
const auto &
it : conditionsMap_) {
1451 theRuns_.push_back(
it.first);
1454 std::sort(theRuns_.begin(), theRuns_.end());
1455 int runRange = theRuns_.back() - theRuns_.front() + 1;
1457 edm::LogPrint(
"DMRChecker") <<
"*******************************" << std::endl;
1458 edm::LogPrint(
"DMRChecker") <<
"first run: " << theRuns_.front() << std::endl;
1459 edm::LogPrint(
"DMRChecker") <<
"last run: " << theRuns_.back() << std::endl;
1460 edm::LogPrint(
"DMRChecker") <<
"considered runs: " << nRuns << std::endl;
1461 edm::LogPrint(
"DMRChecker") <<
"*******************************" << std::endl;
1463 modeByRun_ = book<TH1D>(
"modeByRun",
1464 "Strip APV mode by run number;;APV mode (-1=deco,+1=peak)",
1466 theRuns_.front() - 0.5,
1467 theRuns_.back() + 0.5);
1468 fieldByRun_ = book<TH1D>(
"fieldByRun",
1469 "CMS B-field intensity by run number;;B-field intensity [T]",
1471 theRuns_.front() - 0.5,
1472 theRuns_.back() + 0.5);
1474 tracksByRun_ = book<TH1D>(
"tracksByRun",
1475 "n. AlCaReco Tracks by run number;;n. of tracks",
1477 theRuns_.front() - 0.5,
1478 theRuns_.back() + 0.5);
1479 hitsByRun_ = book<TH1D>(
1480 "histByRun",
"n. of hits by run number;;n. of hits",
runRange, theRuns_.front() - 0.5, theRuns_.back() + 0.5);
1482 trackRatesByRun_ = book<TH1D>(
"trackRatesByRun",
1483 "rate of AlCaReco Tracks by run number;;n. of tracks/s",
1485 theRuns_.front() - 0.5,
1486 theRuns_.back() + 0.5);
1487 eventRatesByRun_ = book<TH1D>(
"eventRatesByRun",
1488 "rate of AlCaReco Events by run number;;n. of events/s",
1490 theRuns_.front() - 0.5,
1491 theRuns_.back() + 0.5);
1493 hitsinBPixByRun_ = book<TH1D>(
"histinBPixByRun",
1494 "n. of hits in BPix by run number;;n. of BPix hits",
1496 theRuns_.front() - 0.5,
1497 theRuns_.back() + 0.5);
1498 hitsinFPixByRun_ = book<TH1D>(
"histinFPixByRun",
1499 "n. of hits in FPix by run number;;n. of FPix hits",
1501 theRuns_.front() - 0.5,
1502 theRuns_.back() + 0.5);
1504 for (
const auto &the_r : theRuns_) {
1505 if (conditionsMap_.find(the_r)->second.first != 0) {
1506 auto indexing = (the_r - theRuns_.front()) + 1;
1507 double runTime = timeMap_.find(the_r)->second;
1509 edm::LogPrint(
"DMRChecker") <<
"run:" << the_r <<
" | isPeak: " << std::setw(4)
1510 << conditionsMap_.find(the_r)->second.first
1511 <<
"| B-field: " << conditionsMap_.find(the_r)->second.second <<
" [T]" 1512 <<
"| events: " << setw(10) << runInfoMap_.find(the_r)->second.first
1513 <<
"(rate: " << setw(10) << (runInfoMap_.find(the_r)->second.first) / runTime
1515 <<
", tracks " << setw(10) << runInfoMap_.find(the_r)->second.second
1516 <<
"(rate: " << setw(10) << (runInfoMap_.find(the_r)->second.second) / runTime
1517 <<
" trk/s)" << std::endl;
1520 modeByRun_->SetBinContent(indexing, conditionsMap_.find(the_r)->second.first);
1521 modeByRun_->GetXaxis()->SetBinLabel(indexing, Form(
"%d", the_r));
1522 fieldByRun_->SetBinContent(indexing, conditionsMap_.find(the_r)->second.second);
1523 fieldByRun_->GetXaxis()->SetBinLabel(indexing, Form(
"%d", the_r));
1525 tracksByRun_->SetBinContent(indexing, runInfoMap_.find(the_r)->second.first);
1526 tracksByRun_->GetXaxis()->SetBinLabel(indexing, Form(
"%d", the_r));
1527 hitsByRun_->SetBinContent(indexing, runInfoMap_.find(the_r)->second.second);
1528 hitsByRun_->GetXaxis()->SetBinLabel(indexing, Form(
"%d", the_r));
1530 hitsinBPixByRun_->SetBinContent(indexing, (runHitsMap_.find(the_r)->second)[0]);
1531 hitsinBPixByRun_->GetXaxis()->SetBinLabel(indexing, Form(
"%d", the_r));
1532 hitsinFPixByRun_->SetBinContent(indexing, (runHitsMap_.find(the_r)->second)[1]);
1533 hitsinFPixByRun_->GetXaxis()->SetBinLabel(indexing, Form(
"%d", the_r));
1535 trackRatesByRun_->SetBinContent(indexing, (runInfoMap_.find(the_r)->second.second) / runTime);
1536 trackRatesByRun_->GetXaxis()->SetBinLabel(indexing, Form(
"%d", the_r));
1537 eventRatesByRun_->SetBinContent(indexing, (runInfoMap_.find(the_r)->second.first) / runTime);
1538 eventRatesByRun_->GetXaxis()->SetBinLabel(indexing, Form(
"%d", the_r));
1540 constexpr const char *
subdets[]{
"BPix",
"FPix",
"TIB",
"TID",
"TOB",
"TEC"};
1542 edm::LogPrint(
"DMRChecker") <<
"*******************************" << std::endl;
1543 edm::LogPrint(
"DMRChecker") <<
"Hits by SubDetector" << std::endl;
1545 for (
const auto &
entry : runHitsMap_.find(the_r)->second) {
1549 edm::LogPrint(
"DMRChecker") <<
"*******************************" << std::endl;
1556 edm::LogPrint(
"DMRChecker") << __FILE__ <<
"@" << __FUNCTION__ <<
" L-" << __LINE__ << std::endl;
1562 DMRBPixX_ = DMeanR.
make<TH1D>(
"DMRBPix-X",
"DMR of BPix-X;mean of X-residuals;modules", 100., -200, 200);
1563 DMRBPixY_ = DMeanR.
make<TH1D>(
"DMRBPix-Y",
"DMR of BPix-Y;mean of Y-residuals;modules", 100., -200, 200);
1565 DMRFPixX_ = DMeanR.
make<TH1D>(
"DMRFPix-X",
"DMR of FPix-X;mean of X-residuals;modules", 100., -200, 200);
1566 DMRFPixY_ = DMeanR.
make<TH1D>(
"DMRFPix-Y",
"DMR of FPix-Y;mean of Y-residuals;modules", 100., -200, 200);
1568 DMRTIB_ = DMeanR.
make<TH1D>(
"DMRTIB",
"DMR of TIB;mean of X-residuals;modules", 100., -200, 200);
1569 DMRTOB_ = DMeanR.
make<TH1D>(
"DMRTOB",
"DMR of TOB;mean of X-residuals;modules", 100., -200, 200);
1571 DMRTID_ = DMeanR.
make<TH1D>(
"DMRTID",
"DMR of TID;mean of X-residuals;modules", 100., -200, 200);
1572 DMRTEC_ = DMeanR.
make<TH1D>(
"DMRTEC",
"DMR of TEC;mean of X-residuals;modules", 100., -200, 200);
1576 DMRBPixXSplit_ = bookSplitDMRHistograms(DMeanRSplit,
"BPix",
"X",
true);
1577 DMRBPixYSplit_ = bookSplitDMRHistograms(DMeanRSplit,
"BPix",
"Y",
true);
1579 DMRFPixXSplit_ = bookSplitDMRHistograms(DMeanRSplit,
"FPix",
"X",
false);
1580 DMRFPixYSplit_ = bookSplitDMRHistograms(DMeanRSplit,
"FPix",
"Y",
false);
1582 DMRTIBSplit_ = bookSplitDMRHistograms(DMeanRSplit,
"TIB",
"X",
true);
1583 DMRTOBSplit_ = bookSplitDMRHistograms(DMeanRSplit,
"TOB",
"X",
true);
1588 DRnRBPixX_ = DRnRs.
make<TH1D>(
"DRnRBPix-X",
"DRnR of BPix-X;rms of normalized X-residuals;modules", 100., 0., 3.);
1589 DRnRBPixY_ = DRnRs.
make<TH1D>(
"DRnRBPix-Y",
"DRnR of BPix-Y;rms of normalized Y-residuals;modules", 100., 0., 3.);
1591 DRnRFPixX_ = DRnRs.
make<TH1D>(
"DRnRFPix-X",
"DRnR of FPix-X;rms of normalized X-residuals;modules", 100., 0., 3.);
1592 DRnRFPixY_ = DRnRs.
make<TH1D>(
"DRnRFPix-Y",
"DRnR of FPix-Y;rms of normalized Y-residuals;modules", 100., 0., 3.);
1594 DRnRTIB_ = DRnRs.
make<TH1D>(
"DRnRTIB",
"DRnR of TIB;rms of normalized X-residuals;modules", 100., 0., 3.);
1595 DRnRTOB_ = DRnRs.
make<TH1D>(
"DRnRTOB",
"DRnR of TOB;rms of normalized Y-residuals;modules", 100., 0., 3.);
1597 DRnRTID_ = DRnRs.
make<TH1D>(
"DRnRTID",
"DRnR of TID;rms of normalized X-residuals;modules", 100., 0., 3.);
1598 DRnRTEC_ = DRnRs.
make<TH1D>(
"DRnRTEC",
"DRnR of TEC;rms of normalized Y-residuals;modules", 100., 0., 3.);
1608 PixelDMRS_x_ByLayer = std::make_unique<PixelRegions::PixelRegionContainers>(&standaloneTopo, ph_info.
phase());
1609 PixelDMRS_y_ByLayer = std::make_unique<PixelRegions::PixelRegionContainers>(&standaloneTopo, ph_info.
phase());
1612 PixelDMRS_x_ByLayer->bookAll(
"Barrel Pixel DMRs",
"median(x'_{pred}-x'_{hit}) [#mum]",
"# modules", 100, -50, 50);
1613 PixelDMRS_y_ByLayer->bookAll(
"Barrel Pixel DMRs",
"median(y'_{pred}-y'_{hit}) [#mum]",
"# modules", 100, -50, 50);
1617 for (
const auto &det : dets) {
1618 auto myLocalTopo = PixelDMRS_x_ByLayer->getTheTopo();
1625 for (
auto &bpixid : resDetailsBPixX_) {
1626 DMRBPixX_->Fill(bpixid.second.runningMeanOfRes_);
1628 pixelmap->fillBarrelBin(
"DMRsX", bpixid.first, bpixid.second.runningMeanOfRes_);
1629 fullPixelmapXDMR->fillTrackerMap(bpixid.first, bpixid.second.runningMeanOfRes_);
1633 auto myLocalTopo = PixelDMRS_x_ByLayer->getTheTopo();
1634 edm::LogPrint(
"DMRChecker") << myLocalTopo->print(bpixid.first) << std::endl;
1637 PixelDMRS_x_ByLayer->fill(bpixid.first, bpixid.second.runningMeanOfRes_);
1640 if (bpixid.second.rDirection > 0) {
1641 DMRBPixXSplit_[0]->Fill(bpixid.second.runningMeanOfRes_);
1643 DMRBPixXSplit_[1]->Fill(bpixid.second.runningMeanOfRes_);
1646 if (bpixid.second.hitCount < 2)
1647 DRnRBPixX_->Fill(-1);
1649 DRnRBPixX_->Fill(
sqrt(bpixid.second.runningNormVarOfRes_ / (bpixid.second.hitCount - 1)));
1652 for (
auto &bpixid : resDetailsBPixY_) {
1653 DMRBPixY_->Fill(bpixid.second.runningMeanOfRes_);
1655 pixelmap->fillBarrelBin(
"DMRsY", bpixid.first, bpixid.second.runningMeanOfRes_);
1656 fullPixelmapYDMR->fillTrackerMap(bpixid.first, bpixid.second.runningMeanOfRes_);
1659 PixelDMRS_y_ByLayer->fill(bpixid.first, bpixid.second.runningMeanOfRes_);
1662 if (bpixid.second.rDirection > 0) {
1663 DMRBPixYSplit_[0]->Fill(bpixid.second.runningMeanOfRes_);
1665 DMRBPixYSplit_[1]->Fill(bpixid.second.runningMeanOfRes_);
1668 if (bpixid.second.hitCount < 2)
1669 DRnRBPixY_->Fill(-1);
1671 DRnRBPixY_->Fill(
sqrt(bpixid.second.runningNormVarOfRes_ / (bpixid.second.hitCount - 1)));
1674 for (
auto &fpixid : resDetailsFPixX_) {
1675 DMRFPixX_->Fill(fpixid.second.runningMeanOfRes_);
1677 pixelmap->fillForwardBin(
"DMRsX", fpixid.first, fpixid.second.runningMeanOfRes_);
1678 fullPixelmapXDMR->fillTrackerMap(fpixid.first, fpixid.second.runningMeanOfRes_);
1680 PixelDMRS_x_ByLayer->fill(fpixid.first, fpixid.second.runningMeanOfRes_);
1683 if (fpixid.second.zDirection > 0) {
1684 DMRFPixXSplit_[0]->Fill(fpixid.second.runningMeanOfRes_);
1686 DMRFPixXSplit_[1]->Fill(fpixid.second.runningMeanOfRes_);
1689 if (fpixid.second.hitCount < 2)
1690 DRnRFPixX_->Fill(-1);
1692 DRnRFPixX_->Fill(
sqrt(fpixid.second.runningNormVarOfRes_ / (fpixid.second.hitCount - 1)));
1695 for (
auto &fpixid : resDetailsFPixY_) {
1696 DMRFPixY_->Fill(fpixid.second.runningMeanOfRes_);
1698 pixelmap->fillForwardBin(
"DMRsY", fpixid.first, fpixid.second.runningMeanOfRes_);
1699 fullPixelmapXDMR->fillTrackerMap(fpixid.first, fpixid.second.runningMeanOfRes_);
1701 PixelDMRS_y_ByLayer->fill(fpixid.first, fpixid.second.runningMeanOfRes_);
1704 if (fpixid.second.zDirection > 0) {
1705 DMRFPixYSplit_[0]->Fill(fpixid.second.runningMeanOfRes_);
1707 DMRFPixYSplit_[1]->Fill(fpixid.second.runningMeanOfRes_);
1710 if (fpixid.second.hitCount < 2)
1711 DRnRFPixY_->Fill(-1);
1713 DRnRFPixY_->Fill(
sqrt(fpixid.second.runningNormVarOfRes_ / (fpixid.second.hitCount - 1)));
1718 for (
auto &tibid : resDetailsTIB_) {
1719 DMRTIB_->Fill(tibid.second.runningMeanOfRes_);
1722 if (tibid.second.rDirection > 0) {
1723 DMRTIBSplit_[0]->Fill(tibid.second.runningMeanOfRes_);
1725 DMRTIBSplit_[1]->Fill(tibid.second.runningMeanOfRes_);
1728 if (tibid.second.hitCount < 2)
1731 DRnRTIB_->Fill(
sqrt(tibid.second.runningNormVarOfRes_ / (tibid.second.hitCount - 1)));
1734 for (
auto &tobid : resDetailsTOB_) {
1735 DMRTOB_->Fill(tobid.second.runningMeanOfRes_);
1738 if (tobid.second.rDirection > 0) {
1739 DMRTOBSplit_[0]->Fill(tobid.second.runningMeanOfRes_);
1741 DMRTOBSplit_[1]->Fill(tobid.second.runningMeanOfRes_);
1744 if (tobid.second.hitCount < 2)
1747 DRnRTOB_->Fill(
sqrt(tobid.second.runningNormVarOfRes_ / (tobid.second.hitCount - 1)));
1750 for (
auto &tidid : resDetailsTID_) {
1751 DMRTID_->Fill(tidid.second.runningMeanOfRes_);
1753 if (tidid.second.hitCount < 2)
1756 DRnRTID_->Fill(
sqrt(tidid.second.runningNormVarOfRes_ / (tidid.second.hitCount - 1)));
1759 for (
auto &tecid : resDetailsTEC_) {
1760 DMRTEC_->Fill(tecid.second.runningMeanOfRes_);
1762 if (tecid.second.hitCount < 2)
1765 DRnRTEC_->Fill(
sqrt(tecid.second.runningNormVarOfRes_ / (tecid.second.hitCount - 1)));
1768 edm::LogPrint(
"DMRChecker") <<
"n. of bpix modules " << resDetailsBPixX_.size() << std::endl;
1769 edm::LogPrint(
"DMRChecker") <<
"n. of fpix modules " << resDetailsFPixX_.size() << std::endl;
1772 pmap->save(
true, 0, 0,
"PixelHitMap.pdf", 600, 800);
1773 pmap->save(
true, 0, 0,
"PixelHitMap.png", 500, 750);
1776 tmap->save(
true, 0, 0,
"StripHitMap.pdf");
1777 tmap->save(
true, 0, 0,
"StripHitMap.png");
1780 gStyle->SetPalette(kRainBow);
1781 pixelmap->beautifyAllHistograms();
1783 TCanvas cBX(
"CanvXBarrel",
"CanvXBarrel", 1200, 1000);
1784 pixelmap->drawBarrelMaps(
"DMRsX", cBX);
1785 cBX.SaveAs(
"pixelBarrelDMR_x.png");
1787 TCanvas cFX(
"CanvXForward",
"CanvXForward", 1600, 1000);
1788 pixelmap->drawForwardMaps(
"DMRsX", cFX);
1789 cFX.SaveAs(
"pixelForwardDMR_x.png");
1791 TCanvas cBY(
"CanvYBarrel",
"CanvYBarrel", 1200, 1000);
1792 pixelmap->drawBarrelMaps(
"DMRsY", cBY);
1793 cBY.SaveAs(
"pixelBarrelDMR_y.png");
1795 TCanvas cFY(
"CanvXForward",
"CanvXForward", 1600, 1000);
1796 pixelmap->drawForwardMaps(
"DMRsY", cFY);
1797 cFY.SaveAs(
"pixelForwardDMR_y.png");
1799 TCanvas cFullPixelxDMR(
"CanvFullPixelX",
"CanvFullPixelX", 3000, 2000);
1800 fullPixelmapXDMR->printTrackerMap(cFullPixelxDMR);
1801 cFullPixelxDMR.SaveAs(
"fullPixelDMR_x.png");
1803 TCanvas cFullPixelyDMR(
"CanvFullPixelX",
"CanvFullPixelY", 3000, 2000);
1804 fullPixelmapXDMR->printTrackerMap(cFullPixelyDMR);
1805 cFullPixelyDMR.SaveAs(
"fullPixelDMR_y.png");
1809 gStyle->SetOptStat(
"emr");
1810 PixelDMRS_x_ByLayer->beautify(2, 0);
1811 PixelDMRS_y_ByLayer->beautify(2, 0);
1813 TCanvas DMRxBarrel(
"DMRxBarrelCanv",
"x-coordinate", 1400, 1200);
1814 DMRxBarrel.Divide(2, 2);
1815 PixelDMRS_x_ByLayer->draw(DMRxBarrel,
true,
"HISTS");
1816 adjustCanvases(DMRxBarrel,
true);
1817 for (
unsigned int c = 1;
c <= 4;
c++) {
1818 DMRxBarrel.cd(
c)->Update();
1820 PixelDMRS_x_ByLayer->stats();
1822 TCanvas DMRxForward(
"DMRxForwardCanv",
"x-coordinate", 1400, 1200);
1823 DMRxForward.Divide(4, 3);
1824 PixelDMRS_x_ByLayer->draw(DMRxForward,
false,
"HISTS");
1825 adjustCanvases(DMRxForward,
false);
1826 for (
unsigned int c = 1;
c <= 12;
c++) {
1827 DMRxForward.cd(
c)->Update();
1829 PixelDMRS_x_ByLayer->stats();
1831 DMRxBarrel.SaveAs(
"DMR_x_Barrel_ByLayer.png");
1832 DMRxForward.SaveAs(
"DMR_x_Forward_ByRing.png");
1834 TCanvas DMRyBarrel(
"DMRyBarrelCanv",
"y-coordinate", 1400, 1200);
1835 DMRyBarrel.Divide(2, 2);
1836 PixelDMRS_y_ByLayer->draw(DMRyBarrel,
true,
"HISTS");
1837 adjustCanvases(DMRyBarrel,
true);
1838 for (
unsigned int c = 1;
c <= 4;
c++) {
1839 DMRyBarrel.cd(
c)->Update();
1841 PixelDMRS_y_ByLayer->stats();
1843 TCanvas DMRyForward(
"DMRyForwardCanv",
"y-coordinate", 1400, 1200);
1844 DMRyForward.Divide(4, 3);
1845 PixelDMRS_y_ByLayer->draw(DMRyForward,
false,
"HISTS");
1846 adjustCanvases(DMRyForward,
false);
1847 for (
unsigned int c = 1;
c <= 12;
c++) {
1848 DMRyForward.cd(
c)->Update();
1850 PixelDMRS_y_ByLayer->stats();
1852 DMRyBarrel.SaveAs(
"DMR_y_Barrel_ByLayer.png");
1853 DMRyForward.SaveAs(
"DMR_y_Forward_ByRing.png");
1860 unsigned int maxPads =
isBarrel ? 4 : 12;
1861 for (
unsigned int c = 1;
c <= maxPads;
c++) {
1866 auto ltx = TLatex();
1867 ltx.SetTextFont(62);
1868 ltx.SetTextSize(0.05);
1869 ltx.SetTextAlign(11);
1873 for (
unsigned int c = 1;
c <= maxPads;
c++) {
1876 ltx.DrawLatexNDC(gPad->GetLeftMargin(),
1877 1 - gPad->GetTopMargin() + 0.01,
1886 bool countStereoHitAs2D_ =
true;
1889 if (!
hit.isValid() ||
1900 return countStereoHitAs2D_;
1901 else if (dynamic_cast<const SiStripRecHit1D *>(&
hit) ||
dynamic_cast<const SiStripRecHit2D *
>(&
hit))
1904 else if (dynamic_cast<const SiStripMatchedRecHit2D *>(&
hit))
1906 else if (dynamic_cast<const ProjectedSiStripRecHit2D *>(&
hit)) {
1908 return (countStereoHitAs2D_ && this->isHit2D(pH->
originalHit()));
1911 <<
"Tracker hit not in pixel, neither SiStripRecHit[12]D nor " 1912 <<
"SiStripMatchedRecHit2D nor ProjectedSiStripRecHit2D.";
1918 <<
"Hit not in tracker with 'official' dimension >=2.";
1932 TH1F::SetDefaultSumw2(kTRUE);
1934 std::array<TH1D *, 2>
out;
1935 std::array<std::string, 2> sign_name = {{
"plus",
"minus"}};
1936 std::array<std::string, 2>
sign = {{
">0",
"<0"}};
1937 for (
unsigned int i = 0;
i < 2;
i++) {
1940 const char *axisTitle_;
1943 name_ = Form(
"DMR%s_%s_rDir%s", subdet.c_str(), vartype.c_str(), sign_name[
i].c_str());
1944 title_ = Form(
"Split DMR of %s-%s (rDir%s)", subdet.c_str(), vartype.c_str(),
sign[
i].c_str());
1945 axisTitle_ = Form(
"mean of %s-residuals (rDir%s);modules", vartype.c_str(),
sign[
i].c_str());
1947 name_ = Form(
"DMR%s_%s_zDir%s", subdet.c_str(), vartype.c_str(), sign_name[
i].c_str());
1948 title_ = Form(
"Split DMR of %s-%s (zDir%s)", subdet.c_str(), vartype.c_str(),
sign[
i].c_str());
1949 axisTitle_ = Form(
"mean of %s-residuals (zDir%s);modules", vartype.c_str(),
sign[
i].c_str());
1952 out[
i] =
dir.make<TH1D>(name_, fmt::sprintf(
"%s;%s", title_, axisTitle_).c_str(), 100., -200, 200);
1962 TH1F::SetDefaultSumw2(kTRUE);
1964 std::pair<double, double>
limits;
1966 if (
varType.find(
"Res") != std::string::npos) {
1967 limits = std::make_pair(-1000., 1000);
1969 limits = std::make_pair(-3., 3.);
1972 std::map<unsigned int, TH1D *>
h;
1974 for (
unsigned int i = 1;
i <= theNLayers;
i++) {
1979 if (
varType.find(
"Res") != std::string::npos) {
1980 xAxisTitle_ = fmt::sprintf(
"res_{%s'} [#mum]", resType);
1982 xAxisTitle_ = fmt::sprintf(
"res_{%s'}/#sigma_{res_{%s`}}", resType, resType);
1985 unsigned int side = -1;
1986 if (detType.find(
"FPix") != std::string::npos) {
1987 side = (
i - 1) / 3 + 1;
1988 unsigned int plane = (
i - 1) % 3 + 1;
1997 name_ = Form(
"h_%s%s%s_side%i_disk%i", detType.c_str(),
varType.c_str(), resType.c_str(),
side, plane);
1998 title_ = Form(
"%s (%s, disk %i) track %s-%s;%s;hits",
2004 xAxisTitle_.c_str());
2007 name_ = Form(
"h_%s%s%s_layer%i", detType.c_str(),
varType.c_str(), resType.c_str(),
i);
2008 title_ = Form(
"%s (layer %i) track %s-%s;%s;hits",
2013 xAxisTitle_.c_str());
2028 if (
h.count(
index) != 0) {
2032 double min =
h[
index]->GetXaxis()->GetXmin();
2033 double max =
h[
index]->GetXaxis()->GetXmax();
2048 myDetails[theID].hitCount += 1;
2053 if (myDetails[theID].hitCount != 1) {
2054 delta = the_data - myDetails[theID].runningMeanOfRes_;
2055 n_delta = the_pull - myDetails[theID].runningNormMeanOfRes_;
2056 myDetails[theID].runningMeanOfRes_ += (
delta / myDetails[theID].hitCount);
2057 myDetails[theID].runningNormMeanOfRes_ += (n_delta / myDetails[theID].hitCount);
2059 myDetails[theID].runningMeanOfRes_ = the_data;
2060 myDetails[theID].runningNormMeanOfRes_ = the_pull;
2063 float delta2 = the_data - myDetails[theID].runningMeanOfRes_;
2064 float n_delta2 = the_pull - myDetails[theID].runningNormMeanOfRes_;
2066 myDetails[theID].runningVarOfRes_ +=
delta * delta2;
2067 myDetails[theID].runningNormVarOfRes_ += n_delta * n_delta2;
2076 std::array<TH1D *, 2> DMRSplit,
2077 std::unique_ptr<PixelRegions::PixelRegionContainers> regionalDMR) {
2078 for (
const auto &element : myDetails) {
2080 DMR->Fill(element.second.runningMeanOfRes_);
2083 if (regionalDMR.get()) {
2084 regionalDMR->fill(element.first, element.second.runningMeanOfRes_);
2088 if (element.second.rOrZDirection > 0) {
2089 DMRSplit[0]->Fill(element.second.runningMeanOfRes_);
2091 DMRSplit[1]->Fill(element.second.runningMeanOfRes_);
2095 if (element.second.hitCount < 2) {
2098 DRnR->Fill(
sqrt(element.second.runningNormVarOfRes_ / (element.second.hitCount - 1)));
2109 desc.setComment(
"Generic track analyzer to check ALCARECO sample quantities / compute fast DMRs");
2114 desc.add<
bool>(
"isCosmics",
false);
2115 desc.add<
bool>(
"doLatencyAnalysis",
true);
static const std::string kSharedResource
std::array< TH1D *, 2 > bookSplitDMRHistograms(TFileDirectory dir, std::string subdet, std::string vartype, bool isBarrel)
running::estimatorMap resDetailsTEC_
Log< level::Info, true > LogVerbatim
static constexpr auto TEC
const TrackerTopology * trackerTopology_
TH1D * hFPixZMinusResYPull
void addWithDefaultLabel(ParameterSetDescription const &psetDescription)
TH1D * hHitCountVsYFPixPlus
unsigned int pxbLayer(const DetId &id) const
float runningNormVarOfRes_
TH1D * hFPixZPlusResXPrime
TH1D * hHitCountVsXFPixPlus
TH1D * hHitCountVsYFPixMinus
TH1D * hFPixZMinusResXPrime
std::unique_ptr< Phase1PixelSummaryMap > fullPixelmapXDMR
std::vector< TH1 * > vTrackProfiles_
TH1D * hHitCountVsZFPixMinus
T * book(const Args &...args) const
running::estimatorMap resDetailsBPixX_
std::map< std::string, std::pair< int, int > > triggerMap_
double z() const
z coordinate
static void fillDescriptions(edm::ConfigurationDescriptions &)
const std::vector< std::string > IDlabels
std::map< int, std::array< int, 6 > > runHitsMap_
Strings const & triggerNames() const
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
std::map< unsigned int, TH1D * > endcapDisksPullsX
running::estimatorMap resDetailsTOB_
Geom::Phi< T > phi() const
running::estimatorMap resDetailsBPixY_
Global3DPoint GlobalPoint
const char * pathToTopoXML()
std::vector< Track > TrackCollection
collection of Tracks
GlobalVector inInverseGeV(const GlobalPoint &gp) const
Field value ad specified global point, in 1/Gev.
TH1D * hFPixZPlusResYPull
ALPAKA_FN_ACC int side(int ieta, int iphi)
running::estimatorMap resDetailsFPixY_
TProfile * pNBpixHitsVsVx
TProfile * pNBpixHitsVsVz
TH1D * hHitCountVsThetaFPix
edm::InputTag TriggerResultsTag_
Log< level::Error, false > LogError
void fillByIndex(std::map< unsigned int, TH1D *> &h, unsigned int index, double x)
std::map< int, std::pair< int, int > > runInfoMap_
std::map< unsigned int, TH1D * > endcapDisksResidualsX
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
std::map< unsigned int, TH1D * > bookResidualsHistogram(TFileDirectory dir, unsigned int theNLayers, std::string resType, std::string varType, std::string detType)
edm::InputTag BeamSpotTag_
TH1D * hHitCountVsZFPixPlus
int index(const std::vector< OBJECT_TYPE *> &vec, const std::string &name)
running::estimatorMap resDetailsTID_
std::map< int, float > timeMap_
TH1D * hFPixZPlusResYPrime
TH1D * hFPixZPlusResXPull
std::array< TH1D *, 2 > DMRTIBSplit_
TH1D * hHitCountVsPhiFPix
U second(std::pair< T, U > const &p)
const SiPixelPI::phase phase() const
T * make(const Args &...args) const
make new ROOT object
std::map< uint32_t, running::Estimators > estimatorMap
std::unique_ptr< Phase1PixelSummaryMap > fullPixelmapYDMR
TH1D * hHitCountVsPhiBPix
DMRChecker(const edm::ParameterSet &pset)
const MagneticField * magneticField_
TH1D * hHitCountVsXFPixMinus
TH1D * hHitCountVsPhiFPixPlus
std::unique_ptr< PixelRegions::PixelRegionContainers > PixelDMRS_x_ByLayer
edm::EDGetTokenT< reco::TrackCollection > theTrackCollectionToken_
void beginRun(edm::Run const &run, edm::EventSetup const &setup) override
TH1D * hHitCountVsThetaFPixPlus
TH1D * hFPixZMinusResXPull
std::map< unsigned int, TH1D * > barrelLayersPullsX
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
bool isThere(GeomDetEnumerators::SubDetector subdet) const
std::unique_ptr< TrackerMap > pmap
std::array< TH1D *, 2 > DMRBPixXSplit_
const bool doLatencyAnalysis_
edm::ESGetToken< SiStripLatency, SiStripLatencyRcd > latencyToken_
edm::EDGetTokenT< reco::VertexCollection > vertexToken_
std::vector< TH1 * > vTrackHistos_
edm::EDGetTokenT< reco::BeamSpot > beamspotToken_
unsigned int pxfDisk(const DetId &id) const
Abs< T >::type abs(const T &t)
std::map< int, std::pair< int, float > > conditionsMap_
#define DEFINE_FWK_MODULE(type)
void updateOnlineMomenta(running::estimatorMap &myDetails, uint32_t theID, float the_data, float the_pull)
std::array< TH1D *, 2 > DMRFPixXSplit_
std::unique_ptr< TrackerMap > tmap
std::map< unsigned int, TH1D * > endcapDisksResidualsY
double x() const
x coordinate
static constexpr auto TOB
const TrackerGeometry * trackerGeometry_
void adjustCanvasMargins(TVirtualPad *pad, float top, float bottom, float left, float right)
running::estimatorMap resDetailsFPixX_
running::estimatorMap resDetailsTIB_
Log< level::Warning, true > LogPrint
const TrackerGeomDet * idToDet(DetId) const override
double y() const
y coordinate
const char * qualities[3]
std::map< unsigned int, TH1D * > barrelLayersResidualsX
TH1D * hHitCountVsPhiFPixMinus
TH1D * hFPixZMinusResYPrime
Log< level::Info, false > LogInfo
Detector identifier class for the strip tracker.
const edm::ESGetToken< RunInfo, RunInfoRcd > runInfoToken_
TH1D * hHitCountVsThetaFPixMinus
int16_t singleReadOutMode() const
unsigned int pxfSide(const DetId &id) const
static constexpr auto TIB
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
std::map< unsigned int, TH1D * > barrelLayersResidualsY
std::map< unsigned int, TH1D * > barrelLayersPullsY
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > topoToken_
float runningNormMeanOfRes_
std::unique_ptr< Phase1PixelMaps > pixelmap
XYZPointD XYZPoint
point in space with cartesian internal representation
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magFieldToken_
edm::EDGetTokenT< edm::TriggerResults > hltresultsToken_
TProfile * pNBpixHitsVsVy
void endRun(edm::Run const &, edm::EventSetup const &) override
std::string const & triggerName(unsigned int index) const
static const std::string algoNames[]
std::array< TH1D *, 2 > DMRFPixYSplit_
edm::InputTag VerticesTag_
SiStripRecHit2D originalHit() const
edm::Service< TFileService > fs
void adjustCanvases(TCanvas &canvas, bool isBarrel)
std::array< TH1D *, 2 > DMRTOBSplit_
TrackerTopology fromTrackerParametersXMLFile(const std::string &xmlFileName)
std::unique_ptr< PixelRegions::PixelRegionContainers > PixelDMRS_y_ByLayer
TH1D * hHitCountVsThetaBPix
void fillDMRs(const running::estimatorMap &myDetails, TH1D *DMR, TH1D *DRnR, std::array< TH1D *, 2 > DMRSplit, std::unique_ptr< PixelRegions::PixelRegionContainers > regionalDMR)
std::map< unsigned int, TH1D * > endcapDisksPullsY
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > geomToken_
Log< level::Warning, false > LogWarning
static uInt32 F(BLOWFISH_CTX *ctx, uInt32 x)
void fillByIndex(std::vector< TH1F *> &h, unsigned int index, double x, std::string tag="")
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
float pullY(const MatchPair &match)
static const std::string subdets[7]
static constexpr auto TID
static const std::vector< uint32_t > attachedDets(const PixelRegions::PixelId theId, const TrackerTopology *trackTopo, const SiPixelPI::phase &ph)
void analyze(const edm::Event &event, const edm::EventSetup &setup) override
float pullX(const MatchPair &match)
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
std::array< TH1D *, 2 > DMRBPixYSplit_
bool isHit2D(const TrackingRecHit &hit)
Geom::Theta< T > theta() const
std::vector< TH1 * > vTrack2DHistos_