diff --git a/DQM/SiPixelPhase1Heterogeneous/plugins/SiPixelPhase1MonitorVertexSoA.cc b/DQM/SiPixelPhase1Heterogeneous/plugins/SiPixelPhase1MonitorVertexSoA.cc index 2ae7480f2b7df..c51ac6ae96138 100644 --- a/DQM/SiPixelPhase1Heterogeneous/plugins/SiPixelPhase1MonitorVertexSoA.cc +++ b/DQM/SiPixelPhase1Heterogeneous/plugins/SiPixelPhase1MonitorVertexSoA.cc @@ -26,6 +26,7 @@ class SiPixelPhase1MonitorVertexSoA : public DQMEDAnalyzer { public: + using IndToEdm = std::vector; explicit SiPixelPhase1MonitorVertexSoA(const edm::ParameterSet&); ~SiPixelPhase1MonitorVertexSoA() override; void bookHistograms(DQMStore::IBooker& ibooker, edm::Run const& iRun, edm::EventSetup const& iSetup) override; @@ -35,6 +36,7 @@ class SiPixelPhase1MonitorVertexSoA : public DQMEDAnalyzer { private: edm::EDGetTokenT tokenSoAVertex_; edm::EDGetTokenT tokenBeamSpot_; + edm::EDGetTokenT tokenTracks_; std::string topFolderName_; MonitorElement* hnVertex; MonitorElement* hx; @@ -42,6 +44,7 @@ class SiPixelPhase1MonitorVertexSoA : public DQMEDAnalyzer { MonitorElement* hz; MonitorElement* hchi2; MonitorElement* hptv2; + MonitorElement* hntrks; }; // @@ -51,6 +54,7 @@ class SiPixelPhase1MonitorVertexSoA : public DQMEDAnalyzer { SiPixelPhase1MonitorVertexSoA::SiPixelPhase1MonitorVertexSoA(const edm::ParameterSet& iConfig) { tokenSoAVertex_ = consumes(iConfig.getParameter("pixelVertexSrc")); tokenBeamSpot_ = consumes(iConfig.getParameter("beamSpotSrc")); + tokenTracks_ = consumes(iConfig.getParameter("pixelTrackSrc")); topFolderName_ = iConfig.getParameter("TopFolderName"); } @@ -64,6 +68,7 @@ SiPixelPhase1MonitorVertexSoA::~SiPixelPhase1MonitorVertexSoA() { void SiPixelPhase1MonitorVertexSoA::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) { auto const& vsoa = *(iEvent.get(tokenSoAVertex_).get()); int nVertices = vsoa.nvFinal; + auto const& pixtrks = iEvent.get(tokenTracks_); auto bsHandle = iEvent.getHandle(tokenBeamSpot_); float x0 = 0., y0 = 0., z0 = 0., dxdz = 0., dydz = 0.; if (!bsHandle.isValid()) { @@ -84,9 +89,14 @@ void SiPixelPhase1MonitorVertexSoA::analyze(const edm::Event& iEvent, const edm: hx->Fill(x); hy->Fill(y); hz->Fill(z); - if (vsoa.ndof[iv] != 0) - hchi2->Fill(vsoa.chi2[iv] / vsoa.ndof[iv]); + hchi2->Fill(vsoa.chi2[iv]); hptv2->Fill(vsoa.ptv2[iv]); + unsigned int ntk = 0; + for (auto k = 0U; k < pixtrks.size(); ++k) { + if (vsoa.idv[k] == int16_t(vsoa.sortInd[iv])) + ntk++; + } + hntrks->Fill(ntk); } hnVertex->Fill(nVertices); } @@ -104,14 +114,16 @@ void SiPixelPhase1MonitorVertexSoA::bookHistograms(DQMStore::IBooker& ibooker, hx = ibooker.book1D("vx", ";Vertez x;#entries", 10, -5., 5.); hy = ibooker.book1D("vy", ";Vertez y;#entries", 10, -5., 5.); hz = ibooker.book1D("vz", ";Vertez z;#entries", 30, -30., 30); - hchi2 = ibooker.book1D("chi2", ";Vertex chi-squared over ndof;#entries", 40, 0., 20.); + hchi2 = ibooker.book1D("chi2", ";Vertex chi-squared;#entries", 40, 0., 20.); hptv2 = ibooker.book1D("ptsq", ";Vertex p_T squared;#entries", 200, 0., 200.); + hntrks = ibooker.book1D("ntrk", ";#tracks associated;#entries", 100, -0.5, 99.5); } void SiPixelPhase1MonitorVertexSoA::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { // monitorpixelVertexSoA edm::ParameterSetDescription desc; desc.add("pixelVertexSrc", edm::InputTag("pixelVerticesSoA")); + desc.add("pixelTrackSrc", edm::InputTag("pixelTracks")); desc.add("beamSpotSrc", edm::InputTag("offlineBeamSpot")); desc.add("TopFolderName", "SiPixelHeterogeneous/PixelVertexSoA"); descriptions.addWithDefaultLabel(desc);