Skip to content

Commit 2895b99

Browse files
committed
improvements to SoA track monitoring plugins
1 parent e794816 commit 2895b99

File tree

5 files changed

+62
-32
lines changed

5 files changed

+62
-32
lines changed

DQM/SiPixelHeterogeneous/plugins/SiPixelCompareTrackSoA.cc

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ class SiPixelCompareTrackSoA : public DQMEDAnalyzer {
9595
MonitorElement* hChi2VsPhi_;
9696
MonitorElement* hChi2VsEta_;
9797
MonitorElement* hpt_;
98+
MonitorElement* hCurvature_;
9899
MonitorElement* hptLogLog_;
99100
MonitorElement* heta_;
100101
MonitorElement* hphi_;
@@ -110,10 +111,10 @@ class SiPixelCompareTrackSoA : public DQMEDAnalyzer {
110111
MonitorElement* htipdiffMatched_;
111112

112113
//for matching eff vs region: derive the ratio at harvesting
113-
MonitorElement* hpt_eta_tkAllCPU_;
114-
MonitorElement* hpt_eta_tkAllCPUMatched_;
115-
MonitorElement* hphi_z_tkAllCPU_;
116-
MonitorElement* hphi_z_tkAllCPUMatched_;
114+
MonitorElement* hpt_eta_tkAllRef_;
115+
MonitorElement* hpt_eta_tkAllRefMatched_;
116+
MonitorElement* hphi_z_tkAllRef_;
117+
MonitorElement* hphi_z_tkAllRefMatched_;
117118
};
118119

119120
//
@@ -187,6 +188,7 @@ void SiPixelCompareTrackSoA<T>::analyze(const edm::Event& iEvent, const edm::Eve
187188
float phiCPU = helper::phi(tsoaCPU.view(), it);
188189
float zipCPU = helper::zip(tsoaCPU.view(), it);
189190
float tipCPU = helper::tip(tsoaCPU.view(), it);
191+
auto qCPU = helper::charge(tsoaCPU.view(), it);
190192

191193
if (!(ptCPU > 0.))
192194
continue;
@@ -211,17 +213,18 @@ void SiPixelCompareTrackSoA<T>::analyze(const edm::Event& iEvent, const edm::Eve
211213
}
212214
}
213215

214-
hpt_eta_tkAllCPU_->Fill(etaCPU, ptCPU); //all CPU tk
215-
hphi_z_tkAllCPU_->Fill(phiCPU, zipCPU);
216+
hpt_eta_tkAllRef_->Fill(etaCPU, ptCPU); //all CPU tk
217+
hphi_z_tkAllRef_->Fill(phiCPU, zipCPU);
216218
if (closestTkidx == notFound)
217219
continue;
218220
nLooseAndAboveTracksCPU_matchedGPU++;
219221

220222
hchi2_->Fill(tsoaCPU.view()[it].chi2(), tsoaGPU.view()[closestTkidx].chi2());
221-
hCharge_->Fill(helper::charge(tsoaCPU.view(), it), helper::charge(tsoaGPU.view(), closestTkidx));
223+
hCharge_->Fill(qCPU, helper::charge(tsoaGPU.view(), closestTkidx));
222224
hnHits_->Fill(helper::nHits(tsoaCPU.view(), it), helper::nHits(tsoaGPU.view(), closestTkidx));
223225
hnLayers_->Fill(tsoaCPU.view()[it].nLayers(), tsoaGPU.view()[closestTkidx].nLayers());
224226
hpt_->Fill(ptCPU, tsoaGPU.view()[closestTkidx].pt());
227+
hCurvature_->Fill(qCPU / ptCPU, helper::charge(tsoaGPU.view(), closestTkidx) / tsoaGPU.view()[closestTkidx].pt());
225228
hptLogLog_->Fill(ptCPU, tsoaGPU.view()[closestTkidx].pt());
226229
heta_->Fill(etaCPU, tsoaGPU.view()[closestTkidx].eta());
227230
hphi_->Fill(phiCPU, helper::phi(tsoaGPU.view(), closestTkidx));
@@ -234,8 +237,8 @@ void SiPixelCompareTrackSoA<T>::analyze(const edm::Event& iEvent, const edm::Eve
234237
hphidiffMatched_->Fill(reco::deltaPhi(phiCPU, helper::phi(tsoaGPU.view(), closestTkidx)));
235238
hzdiffMatched_->Fill(zipCPU - helper::zip(tsoaGPU.view(), closestTkidx));
236239
htipdiffMatched_->Fill(tipCPU - helper::tip(tsoaGPU.view(), closestTkidx));
237-
hpt_eta_tkAllCPUMatched_->Fill(etaCPU, tsoaCPU.view()[it].pt()); //matched to gpu
238-
hphi_z_tkAllCPUMatched_->Fill(etaCPU, zipCPU);
240+
hpt_eta_tkAllRefMatched_->Fill(etaCPU, tsoaCPU.view()[it].pt()); //matched to gpu
241+
hphi_z_tkAllRefMatched_->Fill(etaCPU, zipCPU);
239242
}
240243
hnTracks_->Fill(nTracksCPU, nTracksGPU);
241244
hnLooseAndAboveTracks_->Fill(nLooseAndAboveTracksCPU, nLooseAndAboveTracksGPU);
@@ -273,24 +276,25 @@ void SiPixelCompareTrackSoA<T>::bookHistograms(DQMStore::IBooker& iBook,
273276
hCharge_ = iBook.book2I("charge",fmt::sprintf("%s;CPU;GPU",toRep),3, -1.5, 1.5, 3, -1.5, 1.5);
274277

275278
hpt_ = iBook.book2I("pt", "Track (quality #geq loose) p_{T} [GeV];CPU;GPU", 200, 0., 200., 200, 0., 200.);
279+
hCurvature_ = iBook.book2I("curvature", "Track (quality #geq loose) q/p_{T} [GeV^{-1}];CPU;GPU", 60,- 3., 3., 60, -3., 3. );
276280
hptLogLog_ = make2DIfLog(iBook, true, true, "ptLogLog", "Track (quality #geq loose) p_{T} [GeV];CPU;GPU", 200, log10(0.5), log10(200.), 200, log10(0.5), log10(200.));
277281
heta_ = iBook.book2I("eta", "Track (quality #geq loose) #eta;CPU;GPU", 30, -3., 3., 30, -3., 3.);
278282
hphi_ = iBook.book2I("phi", "Track (quality #geq loose) #phi;CPU;GPU", 30, -M_PI, M_PI, 30, -M_PI, M_PI);
279283
hz_ = iBook.book2I("z", "Track (quality #geq loose) z [cm];CPU;GPU", 30, -30., 30., 30, -30., 30.);
280284
htip_ = iBook.book2I("tip", "Track (quality #geq loose) TIP [cm];CPU;GPU", 100, -0.5, 0.5, 100, -0.5, 0.5);
281285
//1D difference plots
282-
hptdiffMatched_ = iBook.book1D("ptdiffmatched", " p_{T} diff [GeV] between matched tracks; #Delta p_{T} [GeV]", 60, -30., 30.);
283-
hCurvdiffMatched_ = iBook.book1D("curvdiffmatched", "q/p_{T} diff [GeV] between matched tracks; #Delta q/p_{T} [GeV]", 60, -30., 30.);
284-
hetadiffMatched_ = iBook.book1D("etadiffmatched", " #eta diff between matched tracks; #Delta #eta", 160, -0.04 ,0.04);
285-
hphidiffMatched_ = iBook.book1D("phidiffmatched", " #phi diff between matched tracks; #Delta #phi", 160, -0.04 ,0.04);
286-
hzdiffMatched_ = iBook.book1D("zdiffmatched", " z diff between matched tracks; #Delta z [cm]", 300, -1.5, 1.5);
287-
htipdiffMatched_ = iBook.book1D("tipdiffmatched", " TIP diff between matched tracks; #Delta TIP [cm]", 300, -1.5, 1.5);
286+
hptdiffMatched_ = iBook.book1D("ptdiffmatched", " p_{T} diff [GeV] between matched tracks; #Delta p_{T} [GeV]", 61, -30.5, 30.5);
287+
hCurvdiffMatched_ = iBook.book1D("curvdiffmatched", "q/p_{T} diff [GeV^{-1}] between matched tracks; #Delta q/p_{T} [GeV^{-1}]", 61, -3.05, 3.05);
288+
hetadiffMatched_ = iBook.book1D("etadiffmatched", " #eta diff between matched tracks; #Delta #eta", 161, -0.045 ,0.045);
289+
hphidiffMatched_ = iBook.book1D("phidiffmatched", " #phi diff between matched tracks; #Delta #phi", 161, -0.045 ,0.045);
290+
hzdiffMatched_ = iBook.book1D("zdiffmatched", " z diff between matched tracks; #Delta z [cm]", 301, -1.55, 1.55);
291+
htipdiffMatched_ = iBook.book1D("tipdiffmatched", " TIP diff between matched tracks; #Delta TIP [cm]", 301, -1.55, 1.55);
288292
//2D plots for eff
289-
hpt_eta_tkAllCPU_ = iBook.book2I("ptetatrkAllCPU", "Track (quality #geq loose) on CPU; #eta; p_{T} [GeV];", 30, -M_PI, M_PI, 200, 0., 200.);
290-
hpt_eta_tkAllCPUMatched_ = iBook.book2I("ptetatrkAllCPUmatched", "Track (quality #geq loose) on CPU matched to GPU track; #eta; p_{T} [GeV];", 30, -M_PI, M_PI, 200, 0., 200.);
293+
hpt_eta_tkAllRef_ = iBook.book2I("ptetatrkAllReference", "Track (quality #geq loose) on CPU; #eta; p_{T} [GeV];", 30, -M_PI, M_PI, 200, 0., 200.);
294+
hpt_eta_tkAllRefMatched_ = iBook.book2I("ptetatrkAllReferencematched", "Track (quality #geq loose) on CPU matched to GPU track; #eta; p_{T} [GeV];", 30, -M_PI, M_PI, 200, 0., 200.);
291295

292-
hphi_z_tkAllCPU_ = iBook.book2I("phiztrkAllCPU", "Track (quality #geq loose) on CPU; #phi; z [cm];", 30, -M_PI, M_PI, 30, -30., 30.);
293-
hphi_z_tkAllCPUMatched_ = iBook.book2I("phiztrkAllCPUmatched", "Track (quality #geq loose) on CPU; #phi; z [cm];", 30, -M_PI, M_PI, 30, -30., 30.);
296+
hphi_z_tkAllRef_ = iBook.book2I("phiztrkAllReference", "Track (quality #geq loose) on CPU; #phi; z [cm];", 30, -M_PI, M_PI, 30, -30., 30.);
297+
hphi_z_tkAllRefMatched_ = iBook.book2I("phiztrkAllReferencematched", "Track (quality #geq loose) on CPU; #phi; z [cm];", 30, -M_PI, M_PI, 30, -30., 30.);
294298

295299
}
296300

@@ -303,7 +307,7 @@ void SiPixelCompareTrackSoA<T>::fillDescriptions(edm::ConfigurationDescriptions&
303307
desc.add<std::string>("topFolderName", "SiPixelHeterogeneous/PixelTrackCompareGPUvsCPU");
304308
desc.add<bool>("useQualityCut", true);
305309
desc.add<std::string>("minQuality", "loose");
306-
desc.add<double>("deltaR2cut", 0.04);
310+
desc.add<double>("deltaR2cut", 0.02 * 0.02)->setComment("deltaR2 cut between track on CPU and GPU");
307311
descriptions.addWithDefaultLabel(desc);
308312
}
309313

DQM/SiPixelHeterogeneous/plugins/SiPixelCompareTracks.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@ void SiPixelCompareTracks<T>::bookHistograms(DQMStore::IBooker& iBook,
299299
hCharge_ = iBook.book2I("charge",fmt::sprintf("%s;Reference;Target",toRep),3, -1.5, 1.5, 3, -1.5, 1.5);
300300

301301
hpt_ = iBook.book2I("pt", "Track (quality #geq loose) p_{T} [GeV];Reference;Target", 200, 0., 200., 200, 0., 200.);
302-
hCurvature_ = iBook.book2I("curvature", "Track (quality #geq loose) q/p_{T} [GeV^{-1}];Reference;Target", 60,- 30, 30., 60, -30, 30 );
302+
hCurvature_ = iBook.book2I("curvature", "Track (quality #geq loose) q/p_{T} [GeV^{-1}];Reference;Target", 60,- 3., 3., 60, -3., 3. );
303303
hptLogLog_ = make2DIfLog(iBook, true, true, "ptLogLog", "Track (quality #geq loose) p_{T} [GeV];Reference;Target", 200, log10(0.5), log10(200.), 200, log10(0.5), log10(200.));
304304
heta_ = iBook.book2I("eta", "Track (quality #geq loose) #eta;Reference;Target", 30, -3., 3., 30, -3., 3.);
305305
hphi_ = iBook.book2I("phi", "Track (quality #geq loose) #phi;Reference;Target", 30, -M_PI, M_PI, 30, -M_PI, M_PI);
@@ -308,7 +308,7 @@ void SiPixelCompareTracks<T>::bookHistograms(DQMStore::IBooker& iBook,
308308

309309
//1D difference plots
310310
hptdiffMatched_ = iBook.book1D("ptdiffmatched", " p_{T} diff [GeV] between matched tracks; #Delta p_{T} [GeV]", 61, -30.5, 30.5);
311-
hCurvdiffMatched_ = iBook.book1D("curvdiffmatched", "q/p_{T} diff [GeV] between matched tracks; #Delta q/p_{T} [GeV]", 61, -30.5, 30.5);
311+
hCurvdiffMatched_ = iBook.book1D("curvdiffmatched", "q/p_{T} diff [GeV^{-1}] between matched tracks; #Delta q/p_{T} [GeV^{-1}]", 61, -3.05, 3.05);
312312
hetadiffMatched_ = iBook.book1D("etadiffmatched", " #eta diff between matched tracks; #Delta #eta", 161, -0.045 ,0.045);
313313
hphidiffMatched_ = iBook.book1D("phidiffmatched", " #phi diff between matched tracks; #Delta #phi", 161, -0.045 ,0.045);
314314
hzdiffMatched_ = iBook.book1D("zdiffmatched", " z diff between matched tracks; #Delta z [cm]", 301, -1.55, 1.55);

DQM/SiPixelHeterogeneous/plugins/SiPixelMonitorTrackSoA.cc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ class SiPixelMonitorTrackSoA : public DQMEDAnalyzer {
5252
MonitorElement* hChi2VsPhi;
5353
MonitorElement* hChi2VsEta;
5454
MonitorElement* hpt;
55+
MonitorElement* hCurvature;
5556
MonitorElement* heta;
5657
MonitorElement* hphi;
5758
MonitorElement* hz;
@@ -112,6 +113,7 @@ void SiPixelMonitorTrackSoA<T>::analyze(const edm::Event& iEvent, const edm::Eve
112113
float zip = helper::zip(tsoa.const_view(), it);
113114
float eta = tsoa.view()[it].eta();
114115
float tip = helper::tip(tsoa.const_view(), it);
116+
auto charge = helper::charge(tsoa.const_view(), it);
115117

116118
hchi2->Fill(chi2);
117119
hChi2VsPhi->Fill(phi, chi2);
@@ -123,6 +125,7 @@ void SiPixelMonitorTrackSoA<T>::analyze(const edm::Event& iEvent, const edm::Eve
123125
hnLayersVsPhi->Fill(phi, nLayers);
124126
hnLayersVsEta->Fill(eta, nLayers);
125127
hpt->Fill(pt);
128+
hCurvature->Fill(charge / pt);
126129
heta->Fill(eta);
127130
hphi->Fill(phi);
128131
hz->Fill(zip);
@@ -165,6 +168,7 @@ void SiPixelMonitorTrackSoA<T>::bookHistograms(DQMStore::IBooker& iBook,
165168
// clang-format on
166169

167170
hpt = iBook.book1D("pt", ";Track (quality #geq loose) p_{T} [GeV];#tracks", 200, 0., 200.);
171+
hCurvature = iBook.book1D("curvature", ";Track (quality #geq loose) q/p_{T} [GeV^{-1}];#tracks", 100, -3., 3.);
168172
heta = iBook.book1D("eta", ";Track (quality #geq loose) #eta;#tracks", 30, -3., 3.);
169173
hphi = iBook.book1D("phi", ";Track (quality #geq loose) #phi;#tracks", 30, -M_PI, M_PI);
170174
hz = iBook.book1D("z", ";Track (quality #geq loose) z [cm];#tracks", 30, -30., 30.);

DQM/SiPixelHeterogeneous/plugins/SiPixelMonitorTrackSoAAlpaka.cc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ class SiPixelMonitorTrackSoAAlpaka : public DQMEDAnalyzer {
5252
MonitorElement* hChi2VsPhi;
5353
MonitorElement* hChi2VsEta;
5454
MonitorElement* hpt;
55+
MonitorElement* hCurvature;
5556
MonitorElement* heta;
5657
MonitorElement* hphi;
5758
MonitorElement* hz;
@@ -112,6 +113,7 @@ void SiPixelMonitorTrackSoAAlpaka<T>::analyze(const edm::Event& iEvent, const ed
112113
float zip = tsoa.view()[it].state()(4);
113114
float eta = tsoa.view()[it].eta();
114115
float tip = tsoa.view()[it].state()(1);
116+
auto charge = reco::charge(tsoa.view(), it);
115117

116118
hchi2->Fill(chi2);
117119
hChi2VsPhi->Fill(phi, chi2);
@@ -123,6 +125,7 @@ void SiPixelMonitorTrackSoAAlpaka<T>::analyze(const edm::Event& iEvent, const ed
123125
hnLayersVsPhi->Fill(phi, nLayers);
124126
hnLayersVsEta->Fill(eta, nLayers);
125127
hpt->Fill(pt);
128+
hCurvature->Fill(charge / pt);
126129
heta->Fill(eta);
127130
hphi->Fill(phi);
128131
hz->Fill(zip);
@@ -165,6 +168,7 @@ hChi2VsEta = iBook.bookProfile("nChi2ndofVsEta", fmt::format("{} vs track #eta;T
165168
// clang-format on
166169

167170
hpt = iBook.book1D("pt", ";Track (quality #geq loose) p_{T} [GeV];#tracks", 200, 0., 200.);
171+
hCurvature = iBook.book1D("curvature", ";Track (quality #geq loose) q/p_{T} [GeV^{-1}];#tracks", 100, -3., 3.);
168172
heta = iBook.book1D("eta", ";Track (quality #geq loose) #eta;#tracks", 30, -3., 3.);
169173
hphi = iBook.book1D("phi", ";Track (quality #geq loose) #phi;#tracks", 30, -M_PI, M_PI);
170174
hz = iBook.book1D("z", ";Track (quality #geq loose) z [cm];#tracks", 30, -30., 30.);

DQM/SiPixelHeterogeneous/plugins/SiPixelTrackComparisonHarvester.cc

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,31 @@ SiPixelTrackComparisonHarvester::SiPixelTrackComparisonHarvester(const edm::Para
2828
: topFolder_(iConfig.getParameter<std::string>("topFolderName")) {}
2929

3030
void SiPixelTrackComparisonHarvester::dqmEndJob(DQMStore::IBooker& ibooker, DQMStore::IGetter& igetter) {
31-
MonitorElement* hpt_eta_tkAllCPU = igetter.get(topFolder_ + "/ptetatrkAllCPU");
32-
MonitorElement* hpt_eta_tkAllCPUmatched = igetter.get(topFolder_ + "/ptetatrkAllCPUmatched");
33-
MonitorElement* hphi_z_tkAllCPU = igetter.get(topFolder_ + "/phiztrkAllCPU");
34-
MonitorElement* hphi_z_tkAllCPUmatched = igetter.get(topFolder_ + "/phiztrkAllCPUmatched");
31+
MonitorElement* hpt_eta_tkAllReference = igetter.get(topFolder_ + "/ptetatrkAllReference");
32+
if (hpt_eta_tkAllReference == nullptr) {
33+
edm::LogError("SiPixelTrackComparisonHarvester")
34+
<< "MonitorElement not found: " << topFolder_ << "/ptetatrkAllReference. Skipping.";
35+
return;
36+
}
37+
38+
MonitorElement* hpt_eta_tkAllReferencematched = igetter.get(topFolder_ + "/ptetatrkAllReferencematched");
39+
if (hpt_eta_tkAllReferencematched == nullptr) {
40+
edm::LogError("SiPixelTrackComparisonHarvester")
41+
<< "MonitorElement not found: " << topFolder_ << "/ptetatrkAllReferencematched. Skipping.";
42+
return;
43+
}
44+
45+
MonitorElement* hphi_z_tkAllReference = igetter.get(topFolder_ + "/phiztrkAllReference");
46+
if (hphi_z_tkAllReference == nullptr) {
47+
edm::LogError("SiPixelTrackComparisonHarvester")
48+
<< "MonitorElement not found: " << topFolder_ << "/phiztrkAllReference. Skipping.";
49+
return;
50+
}
3551

36-
if (hpt_eta_tkAllCPU == nullptr or hpt_eta_tkAllCPUmatched == nullptr or hphi_z_tkAllCPU == nullptr or
37-
hphi_z_tkAllCPUmatched == nullptr) {
52+
MonitorElement* hphi_z_tkAllReferencematched = igetter.get(topFolder_ + "/phiztrkAllReferencematched");
53+
if (hphi_z_tkAllReferencematched == nullptr) {
3854
edm::LogError("SiPixelTrackComparisonHarvester")
39-
<< "MEs needed for this module are not found in the input file. Skipping.";
55+
<< "MonitorElement not found: " << topFolder_ << "/phiztrkAllReferencematched. Skipping.";
4056
return;
4157
}
4258

@@ -47,8 +63,8 @@ void SiPixelTrackComparisonHarvester::dqmEndJob(DQMStore::IBooker& ibooker, DQMS
4763
MonitorElement* hphi_z_matchRatio = ibooker.book2D(
4864
"matchingeff_phi_z", "Efficiency of track matching; #phi; z [cm];", 30, -M_PI, M_PI, 30, -30., 30.);
4965

50-
hpt_eta_matchRatio->divide(hpt_eta_tkAllCPUmatched, hpt_eta_tkAllCPU, 1., 1., "B");
51-
hphi_z_matchRatio->divide(hphi_z_tkAllCPUmatched, hphi_z_tkAllCPU, 1., 1., "B");
66+
hpt_eta_matchRatio->divide(hpt_eta_tkAllReferencematched, hpt_eta_tkAllReference, 1., 1., "B");
67+
hphi_z_matchRatio->divide(hphi_z_tkAllReferencematched, hphi_z_tkAllReference, 1., 1., "B");
5268

5369
// now create the 1D projection from the 2D histograms
5470
std::vector<std::string> listOfMEsToProject = {"nTracks",
@@ -59,20 +75,22 @@ void SiPixelTrackComparisonHarvester::dqmEndJob(DQMStore::IBooker& ibooker, DQMS
5975
"nChi2ndof",
6076
"charge",
6177
"pt",
78+
"curvature",
6279
"eta",
6380
"phi",
6481
"z",
6582
"tip"};
6683
for (const auto& me : listOfMEsToProject) {
6784
MonitorElement* input2D = igetter.get(topFolder_ + "/" + me);
85+
edm::LogPrint("SiPixelTrackComparisonHarvester") << "processing " << topFolder_ + "/" + me;
6886
this->project2DalongDiagonal(input2D, ibooker);
6987
}
7088
}
7189

7290
void SiPixelTrackComparisonHarvester::project2DalongDiagonal(MonitorElement* input2D, DQMStore::IBooker& ibooker) {
7391
if (input2D == nullptr) {
7492
edm::LogError("SiPixelTrackComparisonHarvester")
75-
<< "MEs needed for diagonal projection are not found in the input file. Skipping.";
93+
<< "ME needed for diagonal projection is not found in the input file at" << topFolder_ << ". Skipping.";
7694
return;
7795
}
7896

0 commit comments

Comments
 (0)