From 7bd5fb4b2778ae2df5a1dcbf75b16a1a21b8fed4 Mon Sep 17 00:00:00 2001 From: mmusich Date: Mon, 15 May 2023 15:18:04 +0200 Subject: [PATCH 1/6] modernize TrackSplittingMonitor and bug-fix ME-s booking and filling --- .../interface/TrackSplittingMonitor.h | 31 ++--- .../src/TrackSplittingMonitor.cc | 124 ++++++++---------- 2 files changed, 72 insertions(+), 83 deletions(-) diff --git a/DQM/TrackingMonitor/interface/TrackSplittingMonitor.h b/DQM/TrackingMonitor/interface/TrackSplittingMonitor.h index 94100294294fc..7dcabe2ec2963 100644 --- a/DQM/TrackingMonitor/interface/TrackSplittingMonitor.h +++ b/DQM/TrackingMonitor/interface/TrackSplittingMonitor.h @@ -40,7 +40,7 @@ class TProfile; class TrackSplittingMonitor : public DQMEDAnalyzer { public: explicit TrackSplittingMonitor(const edm::ParameterSet&); - ~TrackSplittingMonitor() override; + ~TrackSplittingMonitor() override = default; void analyze(const edm::Event&, const edm::EventSetup&) override; void bookHistograms(DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&) override; @@ -50,12 +50,11 @@ class TrackSplittingMonitor : public DQMEDAnalyzer { void doProfileX(MonitorElement* th2m, MonitorElement* me); // ----------member data --------------------------- - - // unsigned int minTracks_; + static constexpr double cmToUm = 10.e4; + static constexpr double radToUrad = 10.e3; + static constexpr double sqrt2 = 1.41421356237; std::string histname; //for naming the histograms according to algorithm used - - DQMStore* dqmStore_; edm::ParameterSet conf_; const edm::ESGetToken mfToken_; @@ -70,18 +69,16 @@ class TrackSplittingMonitor : public DQMEDAnalyzer { const CSCGeometry* cscGeometry; const RPCGeometry* rpcGeometry; - edm::InputTag splitTracks_; - edm::InputTag splitMuons_; - edm::EDGetTokenT > splitTracksToken_; - edm::EDGetTokenT > splitMuonsToken_; - - bool plotMuons_; - int pixelHitsPerLeg_; - int totalHitsPerLeg_; - double d0Cut_; - double dzCut_; - double ptCut_; - double norchiCut_; + const edm::EDGetTokenT > splitTracksToken_; + const edm::EDGetTokenT > splitMuonsToken_; + + const bool plotMuons_; + const int pixelHitsPerLeg_; + const int totalHitsPerLeg_; + const double d0Cut_; + const double dzCut_; + const double ptCut_; + const double norchiCut_; // histograms MonitorElement* ddxyAbsoluteResiduals_tracker_; diff --git a/DQM/TrackingMonitor/src/TrackSplittingMonitor.cc b/DQM/TrackingMonitor/src/TrackSplittingMonitor.cc index 5c81a747fb6f0..fb06d18cf0dc3 100644 --- a/DQM/TrackingMonitor/src/TrackSplittingMonitor.cc +++ b/DQM/TrackingMonitor/src/TrackSplittingMonitor.cc @@ -20,34 +20,25 @@ #include "TrackingTools/TrajectoryState/interface/TrajectoryStateTransform.h" #include "TrackingTools/TransientTrack/interface/TransientTrack.h" #include "TrackingTools/TransientTrack/interface/TransientTrackBuilder.h" -//#include "DQM/TrackingMonitor/interface/TrackAnalyzer.h" + #include TrackSplittingMonitor::TrackSplittingMonitor(const edm::ParameterSet& iConfig) - : dqmStore_(edm::Service().operator->()), - conf_(iConfig), + : conf_(iConfig), mfToken_(esConsumes()), tkGeomToken_(esConsumes()), dtGeomToken_(esConsumes()), cscGeomToken_(esConsumes()), - rpcGeomToken_(esConsumes()) { - splitTracks_ = conf_.getParameter("splitTrackCollection"); - splitMuons_ = conf_.getParameter("splitMuonCollection"); - splitTracksToken_ = consumes >(splitTracks_); - splitMuonsToken_ = mayConsume >(splitMuons_); - - plotMuons_ = conf_.getParameter("ifPlotMuons"); - - // cuts - pixelHitsPerLeg_ = conf_.getParameter("pixelHitsPerLeg"); - totalHitsPerLeg_ = conf_.getParameter("totalHitsPerLeg"); - d0Cut_ = conf_.getParameter("d0Cut"); - dzCut_ = conf_.getParameter("dzCut"); - ptCut_ = conf_.getParameter("ptCut"); - norchiCut_ = conf_.getParameter("norchiCut"); -} - -TrackSplittingMonitor::~TrackSplittingMonitor() = default; + rpcGeomToken_(esConsumes()), + splitTracksToken_(consumes >(conf_.getParameter("splitTrackCollection"))), + splitMuonsToken_(mayConsume >(conf_.getParameter("splitMuonCollection"))), + plotMuons_(conf_.getParameter("ifPlotMuons")), + pixelHitsPerLeg_(conf_.getParameter("pixelHitsPerLeg")), + totalHitsPerLeg_(conf_.getParameter("totalHitsPerLeg")), + d0Cut_(conf_.getParameter("d0Cut")), + dzCut_(conf_.getParameter("dzCut")), + ptCut_(conf_.getParameter("ptCut")), + norchiCut_(conf_.getParameter("norchiCut")) {} void TrackSplittingMonitor::bookHistograms(DQMStore::IBooker& ibooker, edm::Run const& /* iRun */, @@ -142,33 +133,33 @@ void TrackSplittingMonitor::bookHistograms(DQMStore::IBooker& ibooker, } ddxyAbsoluteResiduals_tracker_->setAxisTitle("(#delta d_{xy})/#sqrt{2} [#mum]"); - ddxyAbsoluteResiduals_tracker_->setAxisTitle("(#delta d_{z})/#sqrt{2} [#mum]"); - ddxyAbsoluteResiduals_tracker_->setAxisTitle("(#delta #phi)/#sqrt{2} [mrad]"); - ddxyAbsoluteResiduals_tracker_->setAxisTitle("(#delta #theta)/#sqrt{2} [mrad]"); - ddxyAbsoluteResiduals_tracker_->setAxisTitle("(#delta pT)/#sqrt{2} [GeV]"); - ddxyAbsoluteResiduals_tracker_->setAxisTitle("(#delta (1/pT))/#sqrt{2} [GeV^{-1}]"); + ddzAbsoluteResiduals_tracker_->setAxisTitle("(#delta d_{z})/#sqrt{2} [#mum]"); + dphiAbsoluteResiduals_tracker_->setAxisTitle("(#delta #phi)/#sqrt{2} [mrad]"); + dthetaAbsoluteResiduals_tracker_->setAxisTitle("(#delta #theta)/#sqrt{2} [mrad]"); + dptAbsoluteResiduals_tracker_->setAxisTitle("(#delta pT)/#sqrt{2} [GeV]"); + dcurvAbsoluteResiduals_tracker_->setAxisTitle("(#delta (1/pT))/#sqrt{2} [GeV^{-1}]"); ddxyNormalizedResiduals_tracker_->setAxisTitle("#delta d_{xy}/#sigma(d_{xy}"); - ddxyNormalizedResiduals_tracker_->setAxisTitle("#delta d_{z}/#sigma(d_{z})"); - ddxyNormalizedResiduals_tracker_->setAxisTitle("#delta #phi/#sigma(d_{#phi})"); - ddxyNormalizedResiduals_tracker_->setAxisTitle("#delta #theta/#sigma(d_{#theta})"); - ddxyNormalizedResiduals_tracker_->setAxisTitle("#delta p_{T}/#sigma(p_{T})"); - ddxyNormalizedResiduals_tracker_->setAxisTitle("#delta 1/p_{T}/#sigma(1/p_{T})"); + ddzNormalizedResiduals_tracker_->setAxisTitle("#delta d_{z}/#sigma(d_{z})"); + dphiNormalizedResiduals_tracker_->setAxisTitle("#delta #phi/#sigma(d_{#phi})"); + dthetaNormalizedResiduals_tracker_->setAxisTitle("#delta #theta/#sigma(d_{#theta})"); + dptNormalizedResiduals_tracker_->setAxisTitle("#delta p_{T}/#sigma(p_{T})"); + dcurvNormalizedResiduals_tracker_->setAxisTitle("#delta 1/p_{T}/#sigma(1/p_{T})"); if (plotMuons_) { ddxyAbsoluteResiduals_global_->setAxisTitle("(#delta d_{xy})/#sqrt{2} [#mum]"); - ddxyAbsoluteResiduals_global_->setAxisTitle("(#delta d_{z})/#sqrt{2} [#mum]"); - ddxyAbsoluteResiduals_global_->setAxisTitle("(#delta #phi)/#sqrt{2} [mrad]"); - ddxyAbsoluteResiduals_global_->setAxisTitle("(#delta #theta)/#sqrt{2} [mrad]"); - ddxyAbsoluteResiduals_global_->setAxisTitle("(#delta pT)/#sqrt{2} [GeV]"); - ddxyAbsoluteResiduals_global_->setAxisTitle("(#delta (1/pT))/#sqrt{2} [GeV^{-1}]"); + ddzAbsoluteResiduals_global_->setAxisTitle("(#delta d_{z})/#sqrt{2} [#mum]"); + dphiAbsoluteResiduals_global_->setAxisTitle("(#delta #phi)/#sqrt{2} [mrad]"); + dthetaAbsoluteResiduals_global_->setAxisTitle("(#delta #theta)/#sqrt{2} [mrad]"); + dptAbsoluteResiduals_global_->setAxisTitle("(#delta pT)/#sqrt{2} [GeV]"); + dcurvAbsoluteResiduals_global_->setAxisTitle("(#delta (1/pT))/#sqrt{2} [GeV^{-1}]"); ddxyNormalizedResiduals_global_->setAxisTitle("#delta d_{xy}/#sigma(d_{xy}"); - ddxyNormalizedResiduals_global_->setAxisTitle("#delta d_{z}/#sigma(d_{z})"); - ddxyNormalizedResiduals_global_->setAxisTitle("#delta #phi/#sigma(d_{#phi})"); - ddxyNormalizedResiduals_global_->setAxisTitle("#delta #theta/#sigma(d_{#theta})"); - ddxyNormalizedResiduals_global_->setAxisTitle("#delta p_{T}/#sigma(p_{T})"); - ddxyNormalizedResiduals_global_->setAxisTitle("#delta 1/p_{T}/#sigma(1/p_{T})"); + ddzNormalizedResiduals_global_->setAxisTitle("#delta d_{z}/#sigma(d_{z})"); + dphiNormalizedResiduals_global_->setAxisTitle("#delta #phi/#sigma(d_{#phi})"); + dthetaNormalizedResiduals_global_->setAxisTitle("#delta #theta/#sigma(d_{#theta})"); + dptNormalizedResiduals_global_->setAxisTitle("#delta p_{T}/#sigma(p_{T})"); + dcurvNormalizedResiduals_global_->setAxisTitle("#delta 1/p_{T}/#sigma(1/p_{T})"); } } @@ -205,10 +196,10 @@ void TrackSplittingMonitor::analyze(const edm::Event& iEvent, const edm::EventSe // looping through the hits for track 1 double nRechits1 = 0; double nRechitinBPIX1 = 0; - for (trackingRecHit_iterator iHit = track1.recHitsBegin(); iHit != track1.recHitsEnd(); ++iHit) { - if ((*iHit)->isValid()) { + for (auto const& iHit : track1.recHits()) { + if (iHit->isValid()) { nRechits1++; - int type = (*iHit)->geographicalId().subdetId(); + int type = iHit->geographicalId().subdetId(); if (type == int(PixelSubdetector::PixelBarrel)) { ++nRechitinBPIX1; } @@ -217,10 +208,10 @@ void TrackSplittingMonitor::analyze(const edm::Event& iEvent, const edm::EventSe // looping through the hits for track 2 double nRechits2 = 0; double nRechitinBPIX2 = 0; - for (trackingRecHit_iterator iHit = track2.recHitsBegin(); iHit != track2.recHitsEnd(); ++iHit) { - if ((*iHit)->isValid()) { + for (auto const& iHit : track2.recHits()) { + if (iHit->isValid()) { nRechits2++; - int type = (*iHit)->geographicalId().subdetId(); + int type = iHit->geographicalId().subdetId(); if (type == int(PixelSubdetector::PixelBarrel)) { ++nRechitinBPIX2; } @@ -246,7 +237,8 @@ void TrackSplittingMonitor::analyze(const edm::Event& iEvent, const edm::EventSe if ((nRechitinBPIX1 >= pixelHitsPerLeg_) && (nRechitinBPIX1 >= pixelHitsPerLeg_) && (nRechits1 >= totalHitsPerLeg_) && (nRechits2 >= totalHitsPerLeg_)) { // dca cut - if (((fabs(d01) < d0Cut_)) && (fabs(d02) < d0Cut_) && (fabs(dz2) < dzCut_) && (fabs(dz2) < dzCut_)) { + if (((std::abs(d01) < d0Cut_)) && (std::abs(d02) < d0Cut_) && (std::abs(dz2) < dzCut_) && + (std::abs(dz2) < dzCut_)) { // pt cut if ((pt1 + pt2) / 2 < ptCut_) { // chi2 cut @@ -272,20 +264,20 @@ void TrackSplittingMonitor::analyze(const edm::Event& iEvent, const edm::EventSe double pt1ErrVal = track1.ptError(); double pt2ErrVal = track2.ptError(); - ddxyAbsoluteResiduals_tracker_->Fill(10000.0 * ddxyVal / sqrt(2.0)); - ddxyAbsoluteResiduals_tracker_->Fill(10000.0 * ddzVal / sqrt(2.0)); - ddxyAbsoluteResiduals_tracker_->Fill(1000.0 * dphiVal / sqrt(2.0)); - ddxyAbsoluteResiduals_tracker_->Fill(1000.0 * dthetaVal / sqrt(2.0)); - ddxyAbsoluteResiduals_tracker_->Fill(dptVal / sqrt(2.0)); - ddxyAbsoluteResiduals_tracker_->Fill(dcurvVal / sqrt(2.0)); + ddxyAbsoluteResiduals_tracker_->Fill(cmToUm * ddxyVal / sqrt2); + ddzAbsoluteResiduals_tracker_->Fill(cmToUm * ddzVal / sqrt2); + dphiAbsoluteResiduals_tracker_->Fill(radToUrad * dphiVal / sqrt2); + dthetaAbsoluteResiduals_tracker_->Fill(radToUrad * dthetaVal / sqrt2); + dptAbsoluteResiduals_tracker_->Fill(dptVal / sqrt2); + dcurvAbsoluteResiduals_tracker_->Fill(dcurvVal / sqrt2); ddxyNormalizedResiduals_tracker_->Fill(ddxyVal / sqrt(d01ErrVal * d01ErrVal + d02ErrVal * d02ErrVal)); - ddxyNormalizedResiduals_tracker_->Fill(ddzVal / sqrt(dz1ErrVal * dz1ErrVal + dz2ErrVal * dz2ErrVal)); - ddxyNormalizedResiduals_tracker_->Fill(dphiVal / sqrt(phi1ErrVal * phi1ErrVal + phi2ErrVal * phi2ErrVal)); - ddxyNormalizedResiduals_tracker_->Fill(dthetaVal / - sqrt(theta1ErrVal * theta1ErrVal + theta2ErrVal * theta2ErrVal)); - ddxyNormalizedResiduals_tracker_->Fill(dptVal / sqrt(pt1ErrVal * pt1ErrVal + pt2ErrVal * pt2ErrVal)); - ddxyNormalizedResiduals_tracker_->Fill( + ddzNormalizedResiduals_tracker_->Fill(ddzVal / sqrt(dz1ErrVal * dz1ErrVal + dz2ErrVal * dz2ErrVal)); + dphiNormalizedResiduals_tracker_->Fill(dphiVal / sqrt(phi1ErrVal * phi1ErrVal + phi2ErrVal * phi2ErrVal)); + dthetaNormalizedResiduals_tracker_->Fill(dthetaVal / + sqrt(theta1ErrVal * theta1ErrVal + theta2ErrVal * theta2ErrVal)); + dptNormalizedResiduals_tracker_->Fill(dptVal / sqrt(pt1ErrVal * pt1ErrVal + pt2ErrVal * pt2ErrVal)); + dcurvNormalizedResiduals_tracker_->Fill( dcurvVal / sqrt(pow(pt1ErrVal, 2) / pow(pt1, 4) + pow(pt2ErrVal, 2) / pow(pt2, 4))); // if do the same for split muons @@ -347,12 +339,12 @@ void TrackSplittingMonitor::analyze(const edm::Event& iEvent, const edm::EventSe double pt1ErrValGlb = glb1->ptError(); double pt2ErrValGlb = glb2->ptError(); - ddxyAbsoluteResiduals_global_->Fill(10000.0 * ddxyValGlb / sqrt(2.0)); - ddxyAbsoluteResiduals_global_->Fill(10000.0 * ddzValGlb / sqrt(2.0)); - ddxyAbsoluteResiduals_global_->Fill(1000.0 * dphiValGlb / sqrt(2.0)); - ddxyAbsoluteResiduals_global_->Fill(1000.0 * dthetaValGlb / sqrt(2.0)); - ddxyAbsoluteResiduals_global_->Fill(dptValGlb / sqrt(2.0)); - ddxyAbsoluteResiduals_global_->Fill(dcurvValGlb / sqrt(2.0)); + ddxyAbsoluteResiduals_global_->Fill(cmToUm * ddxyValGlb / sqrt2); + ddzAbsoluteResiduals_global_->Fill(cmToUm * ddzValGlb / sqrt2); + dphiAbsoluteResiduals_global_->Fill(radToUrad * dphiValGlb / sqrt2); + dthetaAbsoluteResiduals_global_->Fill(radToUrad * dthetaValGlb / sqrt2); + dptAbsoluteResiduals_global_->Fill(dptValGlb / sqrt2); + dcurvAbsoluteResiduals_global_->Fill(dcurvValGlb / sqrt2); ddxyNormalizedResiduals_global_->Fill(ddxyValGlb / sqrt(d01ErrValGlb * d01ErrValGlb + d02ErrValGlb * d02ErrValGlb)); From 83c5a1cffe1f6177856f3dce298696c99d84bec9 Mon Sep 17 00:00:00 2001 From: mmusich Date: Mon, 15 May 2023 23:08:22 +0200 Subject: [PATCH 2/6] add a fillDescriptions method to TrackSplittingMonitor and use it --- .../interface/TrackSplittingMonitor.h | 1 + .../python/TrackSplittingMonitor_cfi.py | 76 ++++++++----------- .../src/TrackSplittingMonitor.cc | 43 ++++++++++- 3 files changed, 73 insertions(+), 47 deletions(-) diff --git a/DQM/TrackingMonitor/interface/TrackSplittingMonitor.h b/DQM/TrackingMonitor/interface/TrackSplittingMonitor.h index 7dcabe2ec2963..3e963d1fba134 100644 --- a/DQM/TrackingMonitor/interface/TrackSplittingMonitor.h +++ b/DQM/TrackingMonitor/interface/TrackSplittingMonitor.h @@ -44,6 +44,7 @@ class TrackSplittingMonitor : public DQMEDAnalyzer { void analyze(const edm::Event&, const edm::EventSetup&) override; void bookHistograms(DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&) override; + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); private: void doProfileX(TH2* th2, MonitorElement* me); diff --git a/DQM/TrackingMonitor/python/TrackSplittingMonitor_cfi.py b/DQM/TrackingMonitor/python/TrackSplittingMonitor_cfi.py index 5d16a02b9989f..2a01053b53f88 100644 --- a/DQM/TrackingMonitor/python/TrackSplittingMonitor_cfi.py +++ b/DQM/TrackingMonitor/python/TrackSplittingMonitor_cfi.py @@ -5,47 +5,35 @@ import FWCore.ParameterSet.Config as cms -from DQMServices.Core.DQMEDAnalyzer import DQMEDAnalyzer -TrackSplitMonitor = DQMEDAnalyzer('TrackSplittingMonitor', - - FolderName = cms.string('TrackSplitMonitoring'), - - splitTrackCollection = cms.InputTag("splittedTracksP5"), - splitMuonCollection = cms.InputTag("splitMuons"), - ifPlotMuons = cms.bool(True), - - pixelHitsPerLeg = cms.int32( 1 ), - totalHitsPerLeg = cms.int32( 6 ), - d0Cut = cms.double( 12.0 ), - dzCut = cms.double( 25.0 ), - ptCut = cms.double( 4.0 ), - norchiCut = cms.double( 100.0 ), - - ddxyBin = cms.int32(100), - ddxyMin = cms.double(-200.0), - ddxyMax = cms.double(200.0), - - ddzBin = cms.int32(100), - ddzMin = cms.double(-400.0), - ddzMax = cms.double(400.0), - - dphiBin = cms.int32(100), - dphiMin = cms.double(-0.01), - dphiMax = cms.double(0.01), - - dthetaBin = cms.int32(100), - dthetaMin = cms.double(-0.01), - dthetaMax = cms.double(0.01), - - dptBin = cms.int32(100), - dptMin = cms.double(-5.0), - dptMax = cms.double(5.0), - - dcurvBin = cms.int32(100), - dcurvMin = cms.double(-0.005), - dcurvMax = cms.double(0.005), - - normBin = cms.int32(100), - normMin = cms.double(-5.0), - normMax = cms.double(5.0) -) +from DQM.TrackingMonitor.trackSplittingMonitor_cfi import trackSplittingMonitor +TrackSplitMonitor = trackSplittingMonitor.clone(FolderName = cms.string('TrackSplitMonitoring'), + splitTrackCollection = "splittedTracksP5", + splitMuonCollection = "splitMuons", + ifPlotMuons = True, + pixelHitsPerLeg = 1, + totalHitsPerLeg = 6 , + d0Cut = 12.0 , + dzCut = 25.0 , + ptCut = 4.0 , + norchiCut = 100.0 , + ddxyBin = 100 , + ddxyMin = -200.0 , + ddxyMax = 200.0 , + ddzBin = 100, + ddzMin = -400.0, + ddzMax = 400.0, + dphiBin = 100, + dphiMin = -0.01, + dphiMax = 0.01, + dthetaBin = 100, + dthetaMin = -0.01, + dthetaMax = 0.01, + dptBin = 100, + dptMin = -5.0, + dptMax = 5.0, + dcurvBin = 100, + dcurvMin = -0.005, + dcurvMax = 0.005, + normBin = 100, + normMin = -5.0, + normMax = 5.0) diff --git a/DQM/TrackingMonitor/src/TrackSplittingMonitor.cc b/DQM/TrackingMonitor/src/TrackSplittingMonitor.cc index fb06d18cf0dc3..f44af724cbb8a 100644 --- a/DQM/TrackingMonitor/src/TrackSplittingMonitor.cc +++ b/DQM/TrackingMonitor/src/TrackSplittingMonitor.cc @@ -42,9 +42,7 @@ TrackSplittingMonitor::TrackSplittingMonitor(const edm::ParameterSet& iConfig) void TrackSplittingMonitor::bookHistograms(DQMStore::IBooker& ibooker, edm::Run const& /* iRun */, - edm::EventSetup const& /* iSetup */) - -{ + edm::EventSetup const& /* iSetup */) { std::string MEFolderName = conf_.getParameter("FolderName"); ibooker.setCurrentFolder(MEFolderName); @@ -368,4 +366,43 @@ void TrackSplittingMonitor::analyze(const edm::Event& iEvent, const edm::EventSe } } +void TrackSplittingMonitor::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.setComment( + "Validates track parameters resolution by splitting cosmics tracks at the PCA and comparing the parameters of " + "the two halves"); + desc.add("FolderName", "TrackSplitMonitoring"); + desc.add("splitTrackCollection", edm::InputTag("splittedTracksP5")); + desc.add("splitMuonCollection", edm::InputTag("splitMuons")); + desc.add("ifPlotMuons", true); + desc.add("pixelHitsPerLeg", 1); + desc.add("totalHitsPerLeg", 6); + desc.add("d0Cut", 12.0); + desc.add("dzCut", 25.0); + desc.add("ptCut", 4.0); + desc.add("norchiCut", 100.0); + desc.add("ddxyBin", 100); + desc.add("ddxyMin", -200.0); + desc.add("ddxyMax", 200.0); + desc.add("ddzBin", 100); + desc.add("ddzMin", -400.0); + desc.add("ddzMax", 400.0); + desc.add("dphiBin", 100); + desc.add("dphiMin", -0.01); + desc.add("dphiMax", 0.01); + desc.add("dthetaBin", 100); + desc.add("dthetaMin", -0.01); + desc.add("dthetaMax", 0.01); + desc.add("dptBin", 100); + desc.add("dptMin", -5.0); + desc.add("dptMax", 5.0); + desc.add("dcurvBin", 100); + desc.add("dcurvMin", -0.005); + desc.add("dcurvMax", 0.005); + desc.add("normBin", 100); + desc.add("normMin", -5.); + desc.add("normMax", 5.); + descriptions.addWithDefaultLabel(desc); +} + DEFINE_FWK_MODULE(TrackSplittingMonitor); From cadd923f0d2308f553bbc3602415be96fb25f01d Mon Sep 17 00:00:00 2001 From: mmusich Date: Mon, 15 May 2023 23:28:50 +0200 Subject: [PATCH 3/6] remove cosmic track splitting from collisions tracking source --- .../python/TrackingSourceConfig_Tier0_cff.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/DQM/TrackingMonitorSource/python/TrackingSourceConfig_Tier0_cff.py b/DQM/TrackingMonitorSource/python/TrackingSourceConfig_Tier0_cff.py index 7d0649a3b6316..6ae88c477ca85 100644 --- a/DQM/TrackingMonitorSource/python/TrackingSourceConfig_Tier0_cff.py +++ b/DQM/TrackingMonitorSource/python/TrackingSourceConfig_Tier0_cff.py @@ -29,9 +29,9 @@ #TrackEffMon_bhmuon.AlgoName = 'BHMuonTk' #TrackEffMon_bhmuon.FolderName = 'Tracking/TrackParameters/TrackEfficiency' -# Split Tracking -from DQM.TrackingMonitor.TrackSplittingMonitor_cfi import * -TrackSplitMonitor.FolderName = 'Tracking/TrackParameters/SplitTracks' +# # Split Tracking +# from DQM.TrackingMonitor.TrackSplittingMonitor_cfi import * +# TrackSplitMonitor.FolderName = 'Tracking/TrackParameters/SplitTracks' # DQM Services @@ -352,7 +352,7 @@ def _copyIfExists(mod, pset, name): # Sequence TrackingDQMSourceTier0 = cms.Sequence(cms.ignore(trackingDQMgoodOfflinePrimaryVertices)) # dEdx monitoring -TrackingDQMSourceTier0 += dedxHarmonicSequence * dEdxMonCommon * dEdxHitMonCommon * TrackMon_ckf * TrackSplitMonitor * dqmInfoTracking +TrackingDQMSourceTier0 += dedxHarmonicSequence * dEdxMonCommon * dEdxHitMonCommon * TrackMon_ckf * dqmInfoTracking #TrackMon_cosmicTk*TrackMon_ckf*TrackEffMon_ckf*TrackSplitMonitor*dqmInfoTracking # # temporary patch in order to have BXlumi # * lumiProducer @@ -399,7 +399,7 @@ def _copyIfExists(mod, pset, name): TrackingDQMSourceTier0Common = cms.Sequence(cms.ignore(trackingDQMgoodOfflinePrimaryVertices)) # dEdx monitoring -TrackingDQMSourceTier0Common += (dedxHarmonicSequence * dEdxMonCommon * dEdxHitMonCommon * TrackMon_ckf * TrackSplitMonitor * dqmInfoTracking) +TrackingDQMSourceTier0Common += (dedxHarmonicSequence * dEdxMonCommon * dEdxHitMonCommon * TrackMon_ckf * dqmInfoTracking) #TrackEffMon_ckf*TrackSplitMonitor*dqmInfoTracking) ## monitor track collections for tracks in selectedTracks : @@ -420,7 +420,7 @@ def _copyIfExists(mod, pset, name): TrackingDQMSourceTier0MinBias = cms.Sequence(cms.ignore(trackingDQMgoodOfflinePrimaryVertices)) # dEdx monitoring -TrackingDQMSourceTier0MinBias += dedxHarmonicSequence * dEdxMonCommon * dEdxHitMonCommon * TrackMon_ckf * TrackSplitMonitor * dqmInfoTracking +TrackingDQMSourceTier0MinBias += dedxHarmonicSequence * dEdxMonCommon * dEdxHitMonCommon * TrackMon_ckf * dqmInfoTracking #TrackMon_cosmicTk*TrackMon_ckf*TrackEffMon_ckf*TrackSplitMonitor*dqmInfoTracking#TrackMon_ckf*TrackEffMon_ckf # * lumiProducer # monitor track collections From ba9eb86f69d0d606ef021b079662a9e573c92a95 Mon Sep 17 00:00:00 2001 From: mmusich Date: Mon, 15 May 2023 23:39:54 +0200 Subject: [PATCH 4/6] fix few axis labels --- DQM/TrackingMonitor/src/TrackSplittingMonitor.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/DQM/TrackingMonitor/src/TrackSplittingMonitor.cc b/DQM/TrackingMonitor/src/TrackSplittingMonitor.cc index f44af724cbb8a..40ae0a8f355a9 100644 --- a/DQM/TrackingMonitor/src/TrackSplittingMonitor.cc +++ b/DQM/TrackingMonitor/src/TrackSplittingMonitor.cc @@ -134,10 +134,10 @@ void TrackSplittingMonitor::bookHistograms(DQMStore::IBooker& ibooker, ddzAbsoluteResiduals_tracker_->setAxisTitle("(#delta d_{z})/#sqrt{2} [#mum]"); dphiAbsoluteResiduals_tracker_->setAxisTitle("(#delta #phi)/#sqrt{2} [mrad]"); dthetaAbsoluteResiduals_tracker_->setAxisTitle("(#delta #theta)/#sqrt{2} [mrad]"); - dptAbsoluteResiduals_tracker_->setAxisTitle("(#delta pT)/#sqrt{2} [GeV]"); - dcurvAbsoluteResiduals_tracker_->setAxisTitle("(#delta (1/pT))/#sqrt{2} [GeV^{-1}]"); + dptAbsoluteResiduals_tracker_->setAxisTitle("(#delta p_{T})/#sqrt{2} [GeV]"); + dcurvAbsoluteResiduals_tracker_->setAxisTitle("(#delta (1/p_{T}))/#sqrt{2} [GeV^{-1}]"); - ddxyNormalizedResiduals_tracker_->setAxisTitle("#delta d_{xy}/#sigma(d_{xy}"); + ddxyNormalizedResiduals_tracker_->setAxisTitle("#delta d_{xy}/#sigma(d_{xy})"); ddzNormalizedResiduals_tracker_->setAxisTitle("#delta d_{z}/#sigma(d_{z})"); dphiNormalizedResiduals_tracker_->setAxisTitle("#delta #phi/#sigma(d_{#phi})"); dthetaNormalizedResiduals_tracker_->setAxisTitle("#delta #theta/#sigma(d_{#theta})"); @@ -149,10 +149,10 @@ void TrackSplittingMonitor::bookHistograms(DQMStore::IBooker& ibooker, ddzAbsoluteResiduals_global_->setAxisTitle("(#delta d_{z})/#sqrt{2} [#mum]"); dphiAbsoluteResiduals_global_->setAxisTitle("(#delta #phi)/#sqrt{2} [mrad]"); dthetaAbsoluteResiduals_global_->setAxisTitle("(#delta #theta)/#sqrt{2} [mrad]"); - dptAbsoluteResiduals_global_->setAxisTitle("(#delta pT)/#sqrt{2} [GeV]"); - dcurvAbsoluteResiduals_global_->setAxisTitle("(#delta (1/pT))/#sqrt{2} [GeV^{-1}]"); + dptAbsoluteResiduals_global_->setAxisTitle("(#delta p_{T})/#sqrt{2} [GeV]"); + dcurvAbsoluteResiduals_global_->setAxisTitle("(#delta (1/p_{T}))/#sqrt{2} [GeV^{-1}]"); - ddxyNormalizedResiduals_global_->setAxisTitle("#delta d_{xy}/#sigma(d_{xy}"); + ddxyNormalizedResiduals_global_->setAxisTitle("#delta d_{xy}/#sigma(d_{xy})"); ddzNormalizedResiduals_global_->setAxisTitle("#delta d_{z}/#sigma(d_{z})"); dphiNormalizedResiduals_global_->setAxisTitle("#delta #phi/#sigma(d_{#phi})"); dthetaNormalizedResiduals_global_->setAxisTitle("#delta #theta/#sigma(d_{#theta})"); From 4c9a20f2b15ae0edbe3d2b7702956634cbd187b7 Mon Sep 17 00:00:00 2001 From: Marco Musich Date: Wed, 17 May 2023 13:24:29 +0200 Subject: [PATCH 5/6] Apply suggestions from code review Co-authored-by: Andrea Perrotta --- DQM/TrackingMonitor/src/TrackSplittingMonitor.cc | 2 +- .../python/TrackingSourceConfig_Tier0_cff.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DQM/TrackingMonitor/src/TrackSplittingMonitor.cc b/DQM/TrackingMonitor/src/TrackSplittingMonitor.cc index 40ae0a8f355a9..67d5d7e4257ba 100644 --- a/DQM/TrackingMonitor/src/TrackSplittingMonitor.cc +++ b/DQM/TrackingMonitor/src/TrackSplittingMonitor.cc @@ -235,7 +235,7 @@ void TrackSplittingMonitor::analyze(const edm::Event& iEvent, const edm::EventSe if ((nRechitinBPIX1 >= pixelHitsPerLeg_) && (nRechitinBPIX1 >= pixelHitsPerLeg_) && (nRechits1 >= totalHitsPerLeg_) && (nRechits2 >= totalHitsPerLeg_)) { // dca cut - if (((std::abs(d01) < d0Cut_)) && (std::abs(d02) < d0Cut_) && (std::abs(dz2) < dzCut_) && + if (((std::abs(d01) < d0Cut_)) && (std::abs(d02) < d0Cut_) && (std::abs(dz1) < dzCut_) && (std::abs(dz2) < dzCut_)) { // pt cut if ((pt1 + pt2) / 2 < ptCut_) { diff --git a/DQM/TrackingMonitorSource/python/TrackingSourceConfig_Tier0_cff.py b/DQM/TrackingMonitorSource/python/TrackingSourceConfig_Tier0_cff.py index 6ae88c477ca85..3362d3b16124b 100644 --- a/DQM/TrackingMonitorSource/python/TrackingSourceConfig_Tier0_cff.py +++ b/DQM/TrackingMonitorSource/python/TrackingSourceConfig_Tier0_cff.py @@ -29,7 +29,7 @@ #TrackEffMon_bhmuon.AlgoName = 'BHMuonTk' #TrackEffMon_bhmuon.FolderName = 'Tracking/TrackParameters/TrackEfficiency' -# # Split Tracking +# Split Tracking # from DQM.TrackingMonitor.TrackSplittingMonitor_cfi import * # TrackSplitMonitor.FolderName = 'Tracking/TrackParameters/SplitTracks' From fffea8d84fd8a12a7ad1728ddc7baaa7eabeb0cc Mon Sep 17 00:00:00 2001 From: Marco Musich Date: Wed, 24 May 2023 13:26:45 +0200 Subject: [PATCH 6/6] fix bug in the BPix hits counting --- DQM/TrackingMonitor/src/TrackSplittingMonitor.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DQM/TrackingMonitor/src/TrackSplittingMonitor.cc b/DQM/TrackingMonitor/src/TrackSplittingMonitor.cc index 67d5d7e4257ba..997265c5c4868 100644 --- a/DQM/TrackingMonitor/src/TrackSplittingMonitor.cc +++ b/DQM/TrackingMonitor/src/TrackSplittingMonitor.cc @@ -232,7 +232,7 @@ void TrackSplittingMonitor::analyze(const edm::Event& iEvent, const edm::EventSe // basic selection // pixel hits and total hits - if ((nRechitinBPIX1 >= pixelHitsPerLeg_) && (nRechitinBPIX1 >= pixelHitsPerLeg_) && + if ((nRechitinBPIX1 >= pixelHitsPerLeg_) && (nRechitinBPIX2 >= pixelHitsPerLeg_) && (nRechits1 >= totalHitsPerLeg_) && (nRechits2 >= totalHitsPerLeg_)) { // dca cut if (((std::abs(d01) < d0Cut_)) && (std::abs(d02) < d0Cut_) && (std::abs(dz1) < dzCut_) &&