Skip to content

Commit

Permalink
Synchronise with CMSSW_11_0_0_pre7
Browse files Browse the repository at this point in the history
  • Loading branch information
fwyzard committed Oct 23, 2020
1 parent cb7b826 commit fc8eb9e
Show file tree
Hide file tree
Showing 5 changed files with 114 additions and 20 deletions.
70 changes: 56 additions & 14 deletions Validation/RecoTrack/python/PostProcessorTracker_cfi.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,26 @@
import FWCore.ParameterSet.Config as cms
from DQMServices.Core.DQMEDHarvester import DQMEDHarvester

def _addNoFlow(module):
_noflowSeen = set()
for eff in module.efficiency.value():
tmp = eff.split(" ")
if "cut" in tmp[0]:
continue
ind = -1
if tmp[ind] == "fake" or tmp[ind] == "simpleratio":
ind = -2
if not tmp[ind] in _noflowSeen:
module.noFlowDists.append(tmp[ind])
if not tmp[ind-1] in _noflowSeen:
module.noFlowDists.append(tmp[ind-1])

postProcessorTrack = DQMEDHarvester("DQMGenericClient",
subDirs = cms.untracked.vstring("Tracking/Track/*", "Tracking/TrackTPPtLess09/*", "Tracking/TrackFromPV/*", "Tracking/TrackFromPVAllTP/*", "Tracking/TrackAllTPEffic/*", "Tracking/TrackBuilding/*", "Tracking/TrackConversion/*", "Tracking/TrackGsf/*", "Tracking/TrackBHadron/*"),
efficiency = cms.vstring(
"effic 'Efficiency vs #eta' num_assoc(simToReco)_eta num_simul_eta",
"efficPt 'Efficiency vs p_{T}' num_assoc(simToReco)_pT num_simul_pT",
# "efficPtvseta 'Efficiency in p_{T}-#eta plane' num_assoc(simToReco)_pTvseta num_simul_pTvseta",
"effic_vs_hit 'Efficiency vs hit' num_assoc(simToReco)_hit num_simul_hit",
"effic_vs_layer 'Efficiency vs layer' num_assoc(simToReco)_layer num_simul_layer",
"effic_vs_pixellayer 'Efficiency vs pixel layer' num_assoc(simToReco)_pixellayer num_simul_pixellayer",
Expand All @@ -20,6 +35,7 @@
"effic_vs_dzpv_zoomed 'Efficiency vs Dz(PV)' num_assoc(simToReco)_dzpv_zoomed num_simul_dzpv_zoomed",
"duplicatesRate 'Duplicates Rate vs #eta' num_duplicate_eta num_reco_eta",
"duplicatesRate_Pt 'Duplicates Rate vs p_{T}' num_duplicate_pT num_reco_pT",
# "duplicatesRate_Ptvseta 'Duplicates Rate in (p_{T}-#eta) plane' num_duplicate_pTvseta num_reco_pTvseta",
"duplicatesRate_hit 'Duplicates Rate vs hit' num_duplicate_hit num_reco_hit",
"duplicatesRate_layer 'Duplicates Rate vs layer' num_duplicate_layer num_reco_layer",
"duplicatesRate_pixellayer 'Duplicates Rate vs pixel layer' num_duplicate_pixellayer num_reco_pixellayer",
Expand All @@ -39,7 +55,7 @@
"duplicatesRate_chi2 'Duplicates Rate vs normalized #chi^{2}' num_duplicate_chi2 num_reco_chi2",
"duplicatesRate_seedingLayerSet 'Duplicates rate vs. seedingLayerSet' num_duplicate_seedingLayerSet num_reco_seedingLayerSet",
"chargeMisIdRate 'Charge MisID Rate vs #eta' num_chargemisid_eta num_reco_eta",
"chargeMisIdRate_Pt 'Charge MisID Rate vs p_{T}' num_chargemisid_pT num_reco_pT",
# "chargeMisIdRate_Ptvseta 'Charge MisID Rate in (p_{T}-#eta) plane' num_chargemisid_pTvseta num_reco_pTvseta",
"chargeMisIdRate_hit 'Charge MisID Rate vs hit' num_chargemisid_hit num_reco_hit",
"chargeMisIdRate_layer 'Charge MisID Rate vs layer' num_chargemisid_hit num_reco_layer",
"chargeMisIdRate_pixellayer 'Charge MisID Rate vs pixel layer' num_chargemisid_hit num_reco_pixellayer",
Expand All @@ -65,6 +81,7 @@
"effic_vertz_fwdneg 'efficiency in endcap(-) vs z of primary interaction vertex' num_assoc(simToReco)_vertz_fwdneg num_simul_vertz_fwdneg",
"pileuprate 'Pileup Rate vs #eta' num_pileup_eta num_reco_eta",
"pileuprate_Pt 'Pileup rate vs p_{T}' num_pileup_pT num_reco_pT",
# "pileuprate_Ptvseta 'Pileup rate in (p_{T}-#eta) plane' num_pileup_pTvseta num_reco_pTvseta",
"pileuprate_hit 'Pileup rate vs hit' num_pileup_hit num_reco_hit",
"pileuprate_layer 'Pileup rate vs layer' num_pileup_layer num_reco_layer",
"pileuprate_pixellayer 'Pileup rate vs layer' num_pileup_pixellayer num_reco_pixellayer",
Expand All @@ -85,6 +102,7 @@
"pileuprate_seedingLayerSet 'Pileup rate vs. seedingLayerSet' num_pileup_seedingLayerSet num_reco_seedingLayerSet",
"fakerate 'Fake rate vs #eta' num_assoc(recoToSim)_eta num_reco_eta fake",
"fakeratePt 'Fake rate vs p_{T}' num_assoc(recoToSim)_pT num_reco_pT fake",
# "fakeratePtvseta 'Fake rate in (p_{T}-#eta) plane' num_assoc(recoToSim)_pTvseta num_reco_pTvseta fake",
"fakerate_vs_hit 'Fake rate vs hit' num_assoc(recoToSim)_hit num_reco_hit fake",
"fakerate_vs_layer 'Fake rate vs layer' num_assoc(recoToSim)_layer num_reco_layer fake",
"fakerate_vs_pixellayer 'Fake rate vs layer' num_assoc(recoToSim)_pixellayer num_reco_pixellayer fake",
Expand Down Expand Up @@ -223,21 +241,24 @@
noFlowDists = cms.untracked.vstring(),
outputFileName = cms.untracked.string("")
)
def _addNoFlow(module):
_noflowSeen = set()
for eff in module.efficiency.value():
tmp = eff.split(" ")
if "cut" in tmp[0]:
continue
ind = -1
if tmp[ind] == "fake" or tmp[ind] == "simpleratio":
ind = -2
if not tmp[ind] in _noflowSeen:
module.noFlowDists.append(tmp[ind])
if not tmp[ind-1] in _noflowSeen:
module.noFlowDists.append(tmp[ind-1])
_addNoFlow(postProcessorTrack)

postProcessorTrack2D = DQMEDHarvester("DQMGenericClient",
makeGlobalEffienciesPlot = cms.untracked.bool(False),
subDirs = cms.untracked.vstring("Tracking/Track/*", "Tracking/TrackTPPtLess09/*", "Tracking/TrackFromPV/*", "Tracking/TrackFromPVAllTP/*", "Tracking/TrackAllTPEffic/*", "Tracking/TrackBuilding/*", "Tracking/TrackConversion/*", "Tracking/TrackGsf/*", "Tracking/TrackBHadron/*"),
efficiency = cms.vstring(
"efficPtvseta 'Efficiency in p_{T}-#eta plane' num_assoc(simToReco)_pTvseta num_simul_pTvseta",
"duplicatesRate_Ptvseta 'Duplicates Rate in (p_{T}-#eta) plane' num_duplicate_pTvseta num_reco_pTvseta",
"chargeMisIdRate_Ptvseta 'Charge MisID Rate in (p_{T}-#eta) plane' num_chargemisid_pTvseta num_reco_pTvseta",
"pileuprate_Ptvseta 'Pileup rate in (p_{T}-#eta) plane' num_pileup_pTvseta num_reco_pTvseta",
"fakeratePtvseta 'Fake rate in (p_{T}-#eta) plane' num_assoc(recoToSim)_pTvseta num_reco_pTvseta fake",
),
resolution = cms.vstring(),
noFlowDists = cms.untracked.vstring(),
outputFileName = cms.untracked.string("")
)
_addNoFlow(postProcessorTrack2D)

# nrec/nsim makes sense only for
# - all tracks vs. all in-time TrackingParticles
# - PV tracks vs. signal TrackingParticles
Expand All @@ -246,12 +267,24 @@ def _addNoFlow(module):
efficiency = cms.vstring(
"nrecPerNsim 'Tracks/TrackingParticles vs #eta' num_reco2_eta num_simul_eta simpleratio",
"nrecPerNsimPt 'Tracks/TrackingParticles vs p_{T}' num_reco2_pT num_simul_pT simpleratio",
# "nrecPerNsimPtvseta 'Tracks/TrackingParticles in (p_{T}-#eta) plane' num_reco2_pTvseta num_simul_pTvseta simpleratio",
"nrecPerNsim_vs_pu 'Tracks/TrackingParticles vs pu' num_reco2_pu num_simul_pu simpleratio",
),
resolution = cms.vstring(),
noFlowDists = cms.untracked.vstring(),
)
_addNoFlow(postProcessorTrackNrecVsNsim)
postProcessorTrackNrecVsNsim2D = DQMEDHarvester("DQMGenericClient",
makeGlobalEffienciesPlot = cms.untracked.bool(False),
subDirs = cms.untracked.vstring("Tracking/TrackFromPV/*", "Tracking/TrackAllTPEffic/*"),
efficiency = cms.vstring(
"nrecPerNsimPtvseta 'Tracks/TrackingParticles in (p_{T}-#eta) plane' num_reco2_pTvseta num_simul_pTvseta simpleratio",
),
resolution = cms.vstring(),
noFlowDists = cms.untracked.vstring(),
)
_addNoFlow(postProcessorTrackNrecVsNsim2D)


postProcessorTrackSummary = DQMEDHarvester("DQMGenericClient",
subDirs = cms.untracked.vstring("Tracking/Track", "Tracking/TrackTPPtLess09", "Tracking/TrackFromPV", "Tracking/TrackFromPVAllTP", "Tracking/TrackAllTPEffic", "Tracking/TrackBuilding", "Tracking/TrackConversion", "Tracking/TrackGsf", "Tracking/TrackBHadron"),
Expand All @@ -273,6 +306,15 @@ def _addNoFlow(module):
postProcessorTrackSummary
)

postProcessorTrackPhase2 = postProcessorTrack.clone()
postProcessorTrackPhase2.subDirs.extend(["Tracking/TrackTPEtaGreater2p7/*"])
postProcessorTrackSummaryPhase2 = postProcessorTrackSummary.clone()
postProcessorTrackSummaryPhase2.subDirs.extend(["Tracking/TrackTPEtaGreater2p7/*"])

from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker
phase2_tracker.toReplaceWith(postProcessorTrack,postProcessorTrackPhase2)
phase2_tracker.toReplaceWith(postProcessorTrackSummary,postProcessorTrackSummaryPhase2)

postProcessorTrackTrackingOnly = postProcessorTrack.clone()
postProcessorTrackTrackingOnly.subDirs.extend(["Tracking/TrackSeeding/*", "Tracking/PixelTrack/*", "Tracking/PixelTrackFromPV/*", "Tracking/PixelTrackFromPVAllTP/*", "Tracking/PixelTrackBHadron/*"])
postProcessorTrackSummaryTrackingOnly = postProcessorTrackSummary.clone()
Expand Down
40 changes: 38 additions & 2 deletions Validation/RecoTrack/python/TrackValidation_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
from SimTracker.TrackAssociation.LhcParametersDefinerForTP_cfi import *
from SimTracker.TrackAssociation.CosmicParametersDefinerForTP_cfi import *
from Validation.RecoTrack.PostProcessorTracker_cfi import *
from . import cutsRecoTracks_cfi
import Validation.RecoTrack.cutsRecoTracks_cfi as cutsRecoTracks_cfi
#from . import cutsRecoTracks_cfi

from SimTracker.TrackerHitAssociation.tpClusterProducer_cfi import *
from SimTracker.VertexAssociation.VertexAssociatorByPositionAndTracks_cfi import *
Expand Down Expand Up @@ -403,6 +404,34 @@ def _getMVASelectors(postfix):
doResolutionPlotsForLabels = ["disabled"], # resolutions are same as in trackValidator, no need to repeat here
)

# for high-eta (phase2 : |eta| > 2.7)
trackValidatorTPEtaGreater2p7 = trackValidator.clone(
dirName = "Tracking/TrackTPEtaGreater2p7/",
label = [x for x in trackValidator.label.value() if ("Pt09" not in x) and ("BtvLike" not in x) and ("AK4PFJets" not in x)],
dodEdxPlots = False,
# doPVAssociationPlots = False,
minRapidityTP = -2.7,
maxRapidityTP = 2.7,
invertRapidityCutTP = True,
# ptMaxTP = 0.9, # set maximum pT globally
histoProducerAlgoBlock = dict(
TpSelectorForEfficiencyVsPt = dict(ptMin=0.005,minRapidity=-2.7,maxRapidity=2.7,invertRapidityCut=True), # enough to set min pT here
TpSelectorForEfficiencyVsEta = dict(ptMin=0.005,minRapidity=-2.7,maxRapidity=2.7,invertRapidityCut=True), # enough to set min pT here
TpSelectorForEfficiencyVsPhi = dict(ptMin=0.005,minRapidity=-2.7,maxRapidity=2.7,invertRapidityCut=True),
TpSelectorForEfficiencyVsVTXR = dict(ptMin=0.005,minRapidity=-2.7,maxRapidity=2.7,invertRapidityCut=True),
TpSelectorForEfficiencyVsVTXZ = dict(ptMin=0.005,minRapidity=-2.7,maxRapidity=2.7,invertRapidityCut=True),
generalTpSelector = dict(ptMin=0.005,minRapidity=-2.7,maxRapidity=2.7,invertRapidityCut=True),
# minEta = -4.5,
# maxEta = 4.5,
# nintEta = 90,
# minPt = 0.01,
),
doSimPlots = False, # same as in trackValidator, no need to repeat here
doRecoTrackPlots = False, # fake rates are same as in trackValidator, no need to repeat here
doResolutionPlotsForLabels = ["disabled"] # resolutions are same as in trackValidator, no need to repeat here
)


# For efficiency of signal TPs vs. signal tracks, and fake rate of
# signal tracks vs. signal TPs
trackValidatorFromPV = trackValidator.clone(
Expand Down Expand Up @@ -604,6 +633,14 @@ def _uniqueFirstLayers(layerList):
trackValidatorGsfTracks,
tracksPreValidation
)

from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker
#tracksValidationPhase2 = cms.Sequence(tracksValidation+trackValidatorTPEtaGreater2p7) # it does not work
tracksValidationPhase2 = tracksValidation.copy()
tracksValidationPhase2+=trackValidatorTPEtaGreater2p7
phase2_tracker.toReplaceWith(tracksValidation, tracksValidationPhase2)


fastSim.toReplaceWith(tracksValidation, tracksValidation.copyAndExclude([
trackValidatorBuildingPreSplitting,
trackValidatorConversion,
Expand Down Expand Up @@ -661,7 +698,6 @@ def _uniqueFirstLayers(layerList):
trackValidatorAllTPEfficStandalone = trackValidatorAllTPEffic.clone(
label = [ x for x in trackValidator.label.value() if x not in ["cutsRecoTracksBtvLike", "cutsRecoTracksAK4PFJets"] and "Pt09" not in x],
cores = "highPtJets"

)

trackValidatorConversionStandalone = trackValidatorConversion.clone(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
tip = cms.double(2.0),
minPhi = cms.double(-3.2),
maxPhi = cms.double(3.2),
invertRapidityCut = cms.bool(False)
)

from Configuration.Eras.Modifier_fastSim_cff import fastSim
Expand All @@ -29,9 +30,17 @@
def _modifyForPhase1(pset):
pset.minRapidity = -3
pset.maxRapidity = 3
pset.tip = 2.5 # beampipe is around 2.0, BPIX1 is at 2.9

from Configuration.Eras.Modifier_phase1Pixel_cff import phase1Pixel
phase1Pixel.toModify(generalTpSelectorBlock, _modifyForPhase1)
phase1Pixel.toModify(TpSelectorForEfficiencyVsEtaBlock, _modifyForPhase1)

def _modifyForPhase2(pset):
pset.minRapidity = -4.5
pset.maxRapidity = 4.5
pset.tip = 2.5 # IT1 will be around 3.0 (as in Phase1)

from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker
phase2_tracker.toModify(generalTpSelectorBlock, minRapidity=-4.5, maxRapidity=4.5)
phase2_tracker.toModify(TpSelectorForEfficiencyVsEtaBlock, minRapidity=-4.5, maxRapidity=4.5)
phase2_tracker.toModify(generalTpSelectorBlock, _modifyForPhase2)
phase2_tracker.toModify(TpSelectorForEfficiencyVsEtaBlock, _modifyForPhase2)
7 changes: 6 additions & 1 deletion Validation/RecoTrack/python/plotting/html.py
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,8 @@ def _toPixel(s):
"miniaod": "MiniAOD",
"timing": "Timing",
"hlt": "HLT",
"pixel": "Pixel tracks",
"pf": "PF",
}

_sectionNameMapOrder = collections.OrderedDict([
Expand Down Expand Up @@ -329,6 +331,7 @@ class MiniAOD: pass
class Timing: pass
class HLT: pass
class Pixel: pass
class PF: pass

class Page(object):
def __init__(self, title, sampleName):
Expand Down Expand Up @@ -712,6 +715,7 @@ def __init__(self, sample, title, fastVsFull, pileupComparison):
self._vertexPage = PageSet(*params)
self._miniaodPage = PageSet(*params)
self._timingPage = PageSet(*params)
self._pfPages = PageSet(*params)
self._hltPages = PageSet(*params, dqmSubFolderTranslatedToSectionName=lambda algoQuality: algoQuality[0])
self._pixelPages = TrackingPageSet(*params)
self._otherPages = PageSet(*params)
Expand All @@ -722,6 +726,7 @@ def __init__(self, sample, title, fastVsFull, pileupComparison):
PlotPurpose.Vertexing: self._vertexPage,
PlotPurpose.MiniAOD: self._miniaodPage,
PlotPurpose.Timing: self._timingPage,
PlotPurpose.PF: self._pfPages,
PlotPurpose.HLT: self._hltPages,
PlotPurpose.Pixel: self._pixelPages,
}
Expand All @@ -745,7 +750,7 @@ def write(self, baseDir):
" <ul>",
]

for pages in [self._summaryPage, self._iterationPages, self._pixelPages, self._vertexPage, self._miniaodPage, self._timingPage, self._hltPages, self._otherPages]:
for pages in [self._summaryPage, self._iterationPages, self._pixelPages, self._vertexPage, self._miniaodPage, self._timingPage, self._hltPages, self._pfPages, self._otherPages]:
labelFiles = pages.write(baseDir)
for label, fname in labelFiles:
ret.append(' <li><a href="%s">%s</a></li>' % (fname, label))
Expand Down
4 changes: 3 additions & 1 deletion Validation/RecoTrack/python/plotting/trackingPlots.py
Original file line number Diff line number Diff line change
Expand Up @@ -371,7 +371,9 @@ def _makeMVAPlots(num, hp=False):
Plot("chi2_prob", stat=True, normalizeToUnitArea=True, drawStyle="hist", xtitle="Prob(#chi^{2})"),
Plot("chi2mean", title="", xtitle="#eta", ytitle="< #chi^{2} / ndf >", ymin=[0, 0.5], ymax=[2, 2.5, 3, 5],
fallback={"name": "chi2_vs_eta", "profileX": True}),
Plot("ptres_vs_eta_Mean", scale=100, title="", xtitle="TP #eta (PCA to beamline)", ytitle="< #delta p_{T} / p_{T} > (%)", ymin=_minResidualPt, ymax=_maxResidualPt)
Plot("ptres_vs_eta_Mean", scale=100, title="", xtitle="TP #eta (PCA to beamline)", ytitle="< #delta p_{T} / p_{T} > (%)", ymin=_minResidualPt, ymax=_maxResidualPt),
Plot("chi2mean_vs_pt", title="", xtitle="p_{T}", ytitle="< #chi^{2} / ndf >", ymin=[0, 0.5], ymax=[2, 2.5, 3, 5], xlog=True, fallback={"name": "chi2_vs_pt", "profileX": True}),
Plot("ptres_vs_pt_Mean", title="", xtitle="p_{T}", ytitle="< #delta p_{T}/p_{T} > (%)", scale=100, ymin=_minResidualPt, ymax=_maxResidualPt,xlog=True)
])
_common = {"stat": True, "fit": True, "normalizeToUnitArea": True, "drawStyle": "hist", "drawCommand": "", "xmin": -10, "xmax": 10, "ylog": True, "ymin": 5e-5, "ymax": [0.01, 0.05, 0.1, 0.2, 0.5, 0.8, 1.025], "ratioUncertainty": False}
_pulls = PlotGroup("pulls", [
Expand Down

0 comments on commit fc8eb9e

Please sign in to comment.