Skip to content

Commit bc453a7

Browse files
authored
Merge pull request #48276 from mmusich/mm_dev_shortTrackResol_upgrade
Improve shortened track monitoring
2 parents 51b4137 + 4c89c05 commit bc453a7

File tree

9 files changed

+218
-120
lines changed

9 files changed

+218
-120
lines changed

Alignment/OfflineValidation/plugins/ShortenedTrackValidation.cc

Lines changed: 92 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -403,108 +403,101 @@ T *ShortenedTrackValidation::book(const TFileDirectory &dir, const Args &...args
403403

404404
//__________________________________________________________________________________
405405
void ShortenedTrackValidation::beginJob() {
406-
std::string currentFolder = folderName_ + "/Resolutions";
407-
TFileDirectory ShortTrackResolution = fs_->mkdir(currentFolder);
408-
currentFolder = folderName_ + "/Tracks";
409-
TFileDirectory TrackQuals = fs_->mkdir(currentFolder);
406+
const std::string resFolder = folderName_ + "/Resolutions";
407+
const std::string trackFolder = folderName_ + "/Tracks";
408+
TFileDirectory resDir = fs_->mkdir(resFolder);
409+
TFileDirectory trackDir = fs_->mkdir(trackFolder);
410+
411+
const size_t n = hitsRemain_.size();
412+
histsPtRatioAll_.reserve(n);
413+
histsPtDiffAll_.reserve(n);
414+
histsEtaDiffAll_.reserve(n);
415+
histsPhiDiffAll_.reserve(n);
416+
histsPtRatioVsDeltaRAll_.reserve(n);
417+
histsDeltaPtOverPtAll_.reserve(n);
418+
histsPtAll_.reserve(n);
419+
histsNhitsAll_.reserve(n);
420+
histsDeltaRAll_.reserve(n);
421+
comparators_.resize(n);
422+
423+
// Lambda helpers
424+
auto book1DRes = [&](const std::string &name, const std::string &title, int bins, double xmin, double xmax) {
425+
return book<TH1F>(resDir, name.c_str(), title.c_str(), bins, xmin, xmax);
426+
};
410427

411-
for (unsigned int i = 0; i < hitsRemain_.size(); ++i) {
412-
histsPtRatioAll_.push_back(
413-
book<TH1F>(ShortTrackResolution,
414-
fmt::sprintf("trackPtRatio_%s", hitsRemain_[i]).c_str(),
415-
fmt::sprintf("Short Track p_{T} / Full Track p_{T} - %s layers;p_{T}^{short}/p_{T}^{full};n. tracks",
416-
hitsRemain_[i])
417-
.c_str(),
418-
100,
419-
0.5,
420-
1.5));
421-
422-
histsPtDiffAll_.push_back(book<TH1F>(
423-
ShortTrackResolution,
424-
fmt::sprintf("trackPtDiff_%s", hitsRemain_[i]).c_str(),
425-
fmt::sprintf("Short Track p_{T} - Full Track p_{T} - %s layers;p_{T}^{short} - p_{T}^{full} [GeV];n. tracks",
426-
hitsRemain_[i])
427-
.c_str(),
428-
100,
429-
-10.,
430-
10.));
431-
432-
histsEtaDiffAll_.push_back(
433-
book<TH1F>(ShortTrackResolution,
434-
fmt::sprintf("trackEtaDiff_%s", hitsRemain_[i]).c_str(),
435-
fmt::sprintf("Short Track #eta - Full Track #eta - %s layers;#eta^{short} - #eta^{full};n. tracks",
436-
hitsRemain_[i])
437-
.c_str(),
438-
100,
439-
-0.001,
440-
0.001));
441-
442-
histsPhiDiffAll_.push_back(
443-
book<TH1F>(ShortTrackResolution,
444-
fmt::sprintf("trackPhiDiff_%s", hitsRemain_[i]).c_str(),
445-
fmt::sprintf("Short Track #phi - Full Track #phi - %s layers;#phi^{short} - #phi^{full};n. tracks",
446-
hitsRemain_[i])
447-
.c_str(),
448-
100,
449-
-0.001,
450-
0.001));
451-
452-
histsPtRatioVsDeltaRAll_.push_back(
453-
book<TH2F>(ShortTrackResolution,
454-
fmt::sprintf("trackPtRatioVsDeltaR_%s", hitsRemain_[i]).c_str(),
455-
fmt::sprintf("Short Track p_{T} / Full Track p_{T} - %s layers vs "
456-
"#DeltaR;#DeltaR(short,full);p_{T}^{short}/p_{T}^{full} [GeV];n. tracks",
457-
hitsRemain_[i])
458-
.c_str(),
459-
100,
460-
0.,
461-
0.01,
462-
101,
463-
-0.05,
464-
2.05));
465-
466-
histsDeltaPtOverPtAll_.push_back(
467-
book<TH1F>(ShortTrackResolution,
468-
fmt::sprintf("trackDeltaPtOverPt_%s", hitsRemain_[i]).c_str(),
469-
fmt::sprintf("Short Track p_{T} - Full Track p_{T} / Full Track p_{T} - %s layers;p_{T}^{short} - "
470-
"p_{T}^{full} / p^{full}_{T};n. tracks",
471-
hitsRemain_[i])
472-
.c_str(),
473-
101,
474-
-5.,
475-
5.));
476-
477-
histsPtAll_.push_back(
478-
book<TH1F>(TrackQuals,
479-
fmt::sprintf("trackPt_%s", hitsRemain_[i]).c_str(),
480-
fmt::sprintf("Short Track p_{T} - %s layers;p_{T}^{short} [GeV];n. tracks", hitsRemain_[i]).c_str(),
481-
100,
482-
0.,
483-
100.));
484-
485-
histsNhitsAll_.push_back(
486-
book<TH1F>(TrackQuals,
487-
fmt::sprintf("trackNhits_%s", hitsRemain_[i]).c_str(),
488-
fmt::sprintf("Short Track n. hits - %s layers; n. hits per track;n. tracks", hitsRemain_[i]).c_str(),
489-
20,
490-
-0.5,
491-
19.5));
492-
493-
histsDeltaRAll_.push_back(book<TH1F>(
494-
TrackQuals,
495-
fmt::sprintf("trackDeltaR_%s", hitsRemain_[i]).c_str(),
496-
fmt::sprintf("Short Track / Long Track #DeltaR %s layers;#DeltaR(short,long);n. tracks", hitsRemain_[i]).c_str(),
497-
100,
498-
0.,
499-
0.005));
500-
501-
currentFolder = fmt::sprintf("%s/Compare_%sHit", folderName_, hitsRemain_[i]);
502-
comparators_[i]->book(fs_->mkdir(currentFolder));
428+
auto book1DTrack = [&](const std::string &name, const std::string &title, int bins, double xmin, double xmax) {
429+
return book<TH1F>(trackDir, name.c_str(), title.c_str(), bins, xmin, xmax);
430+
};
431+
432+
auto book2DRes = [&](const std::string &name,
433+
const std::string &title,
434+
int xbins,
435+
double xmin,
436+
double xmax,
437+
int ybins,
438+
double ymin,
439+
double ymax) {
440+
return book<TH2F>(resDir, name.c_str(), title.c_str(), xbins, xmin, xmax, ybins, ymin, ymax);
441+
};
442+
443+
for (size_t i = 0; i < n; ++i) {
444+
const auto &label = hitsRemain_[i];
445+
446+
std::string name, title;
447+
448+
// --- Resolutions ---
449+
name = fmt::sprintf("trackPtRatio_%s", label);
450+
title =
451+
fmt::sprintf("Short Track p_{T} / Full Track p_{T} - %s layers;p_{T}^{short}/p_{T}^{full};n. tracks", label);
452+
histsPtRatioAll_.push_back(book1DRes(name, title, 100, 0.5, 1.5));
453+
454+
name = fmt::sprintf("trackPtDiff_%s", label);
455+
title = fmt::sprintf(
456+
"Short Track p_{T} - Full Track p_{T} - %s layers;p_{T}^{short} - p_{T}^{full} [GeV];n. tracks", label);
457+
histsPtDiffAll_.push_back(book1DRes(name, title, 100, -10., 10.));
458+
459+
name = fmt::sprintf("trackEtaDiff_%s", label);
460+
title = fmt::sprintf("Short Track #eta - Full Track #eta - %s layers;#eta^{short} - #eta^{full};n. tracks", label);
461+
histsEtaDiffAll_.push_back(book1DRes(name, title, 100, -0.001, 0.001));
462+
463+
name = fmt::sprintf("trackPhiDiff_%s", label);
464+
title = fmt::sprintf("Short Track #phi - Full Track #phi - %s layers;#phi^{short} - #phi^{full};n. tracks", label);
465+
histsPhiDiffAll_.push_back(book1DRes(name, title, 100, -0.001, 0.001));
466+
467+
name = fmt::sprintf("trackPtRatioVsDeltaR_%s", label);
468+
title = fmt::sprintf(
469+
"Short Track p_{T} / Full Track p_{T} - %s layers vs #DeltaR;#DeltaR(short,full);p_{T}^{short}/p_{T}^{full};n. "
470+
"tracks",
471+
label);
472+
histsPtRatioVsDeltaRAll_.push_back(book2DRes(name, title, 100, 0., 0.01, 101, -0.05, 2.05));
473+
474+
name = fmt::sprintf("trackDeltaPtOverPt_%s", label);
475+
title = fmt::sprintf(
476+
"(Short - Full) p_{T} / Full Track p_{T} - %s layers;(p_{T}^{short} - p_{T}^{full})/p_{T}^{full};n. tracks",
477+
label);
478+
histsDeltaPtOverPtAll_.push_back(book1DRes(name, title, 101, -5., 5.));
479+
480+
// --- Track quality ---
481+
name = fmt::sprintf("trackPt_%s", label);
482+
title = fmt::sprintf("Short Track p_{T} - %s layers;p_{T}^{short} [GeV];n. tracks", label);
483+
histsPtAll_.push_back(book1DTrack(name, title, 100, 0., 100.));
484+
485+
name = fmt::sprintf("trackNhits_%s", label);
486+
title = fmt::sprintf("Short Track n. hits - %s layers;n. hits per track;n. tracks", label);
487+
histsNhitsAll_.push_back(book1DTrack(name, title, 20, -0.5, 19.5));
488+
489+
name = fmt::sprintf("trackDeltaR_%s", label);
490+
title = fmt::sprintf("Short / Long Track #DeltaR - %s layers;#DeltaR(short,long);n. tracks", label);
491+
histsDeltaRAll_.push_back(book1DTrack(name, title, 100, 0., 0.005));
492+
493+
// --- Comparator ---
494+
const std::string compareFolder = fmt::format("{}/Compare_{}Hit", folderName_, label);
495+
comparators_[i]->book(fs_->mkdir(compareFolder));
503496
}
504497

505-
currentFolder = folderName_ + "/OriginalTrack";
506-
TFileDirectory original = fs_->mkdir(currentFolder);
507-
originalTrack.book(original);
498+
// --- Original track histos ---
499+
const std::string originalFolder = folderName_ + "/OriginalTrack";
500+
originalTrack.book(fs_->mkdir(originalFolder));
508501
}
509502

510503
//__________________________________________________________________________________

Alignment/OfflineValidation/test/BuildFile.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
<test name="Genericall" command="testingScripts/test_unitGeneric.sh">
3131
<flags PRE_TEST="validateAlignments"/>
3232
</test>
33+
<test name="PVValidation" command="testingScripts/test_unitPVValidation.sh"/>
3334
<bin file="testTrackAnalyzers.cc" name="testTrackAnalysis">
3435
<use name="FWCore/TestProcessor"/>
3536
<use name="catch2"/>
@@ -59,6 +60,7 @@
5960
<use name="Alignment/OfflineValidation"/>
6061
</bin>
6162
<test name="Miscellanea" command="testingScripts/test_unitMiscellanea.sh"/>
63+
<test name="ShortTrackValidation" command="testingScripts/test_unitShortTrackValidation.sh"/>
6264
<test name="SagittaBiasNtuplizer" command="testingScripts/test_unitSagittaBiasNtuplizer.sh"/>
6365
<bin file="testanalyzeDiMuonBiases.cpp" name="testDiMuonBiasesPlotting">
6466
<flags PRE_TEST="SagittaBiasNtuplizer"/>

Alignment/OfflineValidation/test/testShortenedTrackValidation_cfg.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
process.MeasurementTrackerEvent.inactiveStripDetectorLabels = cms.VInputTag()
4747

4848
process.maxEvents = cms.untracked.PSet(
49-
input = cms.untracked.int32(1000000)
49+
input = cms.untracked.int32(options.maxEvents)
5050
)
5151

5252
#####################################################################

Alignment/OfflineValidation/test/test_all_Phase2_cfg.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import FWCore.ParameterSet.Config as cms
22
import sys
33
from enum import Enum
4-
from Alignment.OfflineValidation.TkAlAllInOneTool.defaultInputFiles_cff import filesDefaultMC_MinBiasPUPhase2RECO
4+
from Alignment.OfflineValidation.TkAlAllInOneTool.defaultInputFiles_cff import filesDefaultMC_TTbarPhase2RECO
55

66
class RefitType(Enum):
77
STANDARD = 1
@@ -27,7 +27,7 @@ class RefitType(Enum):
2727
# Event source and run selection
2828
###################################################################
2929
process.source = cms.Source("PoolSource",
30-
fileNames = filesDefaultMC_MinBiasPUPhase2RECO,
30+
fileNames = filesDefaultMC_TTbarPhase2RECO,
3131
duplicateCheckMode = cms.untracked.string('checkAllFilesOpened')
3232
)
3333

Alignment/OfflineValidation/test/test_all_cfg.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ class RefitType(Enum):
9191
####################################################################
9292
process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
9393
from Configuration.AlCa.GlobalTag import GlobalTag
94-
process.GlobalTag = GlobalTag(process.GlobalTag, 'auto:phase1_2022_realistic', '')
94+
process.GlobalTag = GlobalTag(process.GlobalTag, '125X_mcRun3_2022_realistic_v3', '')
9595

9696
if allFromGT:
9797
print("############ testPVValidation_cfg.py: msg%-i: All is taken from GT")

Alignment/OfflineValidation/test/testingScripts/testPVValidation.sh

Lines changed: 0 additions & 6 deletions
This file was deleted.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#! /bin/bash
2+
3+
function die { echo $1: status $2 ; exit $2; }
4+
5+
echo "TESTING Alignment/OfflineValidation/test/test_all_cfg.py ..."
6+
cmsRun ${CMSSW_BASE}/src/Alignment/OfflineValidation/test/test_all_cfg.py || die "Failure running test_all_cfg.py" $?
7+
8+
echo "TESTING Alignment/OfflineValidation/test/test_all_Phase2_cfg.py ..."
9+
cmsRun ${CMSSW_BASE}/src/Alignment/OfflineValidation/test/test_all_Phase2_cfg.py || die "Failure running test_all_Phase2_cfg.py" $?
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#! /bin/bash
2+
3+
function die { echo $1: status $2 ; exit $2; }
4+
5+
echo "TESTING Short Track Validation..."
6+
cmsRun ${CMSSW_BASE}/src/Alignment/OfflineValidation/test/testShortenedTrackValidation_cfg.py maxEvents=1000 || die "Failure running testShortenedTrackValidation_cfg.py" $?

0 commit comments

Comments
 (0)