Skip to content

Commit

Permalink
Merge pull request #17723 from abbiendi/devNewValidation_90X_Customise
Browse files Browse the repository at this point in the history
Improved muon track validation (new code + customization)
  • Loading branch information
davidlange6 committed Mar 16, 2017
2 parents f823fd6 + 30b66fb commit 47f557b
Show file tree
Hide file tree
Showing 28 changed files with 4,019 additions and 17 deletions.
2 changes: 1 addition & 1 deletion HLTriggerOffline/Common/python/HLTValidationHarvest_cff.py
Expand Up @@ -21,7 +21,7 @@
hltpostvalidation = cms.Sequence(
postProcessorHLTtrackingSequence
+postProcessorHLTvertexing
+HLTMuonPostVal
+HLTMuonPostVal
+HLTTauPostVal
+EgammaPostVal
+ postProcessorHLTgsfTrackingSequence
Expand Down
5 changes: 0 additions & 5 deletions HLTriggerOffline/Muon/python/HLTMuonPostVal_cff.py
Expand Up @@ -8,8 +8,3 @@
hltMuonPostProcessors
)

HLTMuonPostVal_FastSim = cms.Sequence(
recoMuonPostProcessorsHLTFastSim +
hltMuonPostProcessors
)

147 changes: 147 additions & 0 deletions SimMuon/MCTruth/python/NewMuonAssociatorByHits_cfi.py
@@ -0,0 +1,147 @@
import FWCore.ParameterSet.Config as cms


NewMuonAssociatorByHitsCommonParameters = cms.PSet(
dumpInputCollections = cms.untracked.bool(False),
#
#....... general input parameters
#
# include invalid muon hits
includeZeroHitMuons = cms.bool(True),
#
# accept to match only tracker/muon stub of globalMuons
acceptOneStubMatchings = cms.bool(False),
#
# switches to be set according to the input Track collection
UseTracker = cms.bool(True),
UseMuon = cms.bool(True),
#
# cuts for the muon stub
AbsoluteNumberOfHits_muon = cms.bool(False),
NHitCut_muon = cms.uint32(0),
EfficiencyCut_muon = cms.double(0.),
PurityCut_muon = cms.double(0.),
#
# cuts for the tracker stub
AbsoluteNumberOfHits_track = cms.bool(False),
NHitCut_track = cms.uint32(0),
EfficiencyCut_track = cms.double(0.),
PurityCut_track = cms.double(0.),
#
# switches for the tracker stub
UsePixels = cms.bool(True),
UseGrouped = cms.bool(True),
UseSplitting = cms.bool(True),
ThreeHitTracksAreSpecial = cms.bool(False),
#
# for DT Hit associator
crossingframe = cms.bool(False),
simtracksTag = cms.InputTag("g4SimHits"),
simtracksXFTag = cms.InputTag("mix","g4SimHits"),
#
DTsimhitsTag = cms.InputTag("g4SimHits","MuonDTHits"),
DTsimhitsXFTag = cms.InputTag("mix","g4SimHitsMuonDTHits"),
DTdigiTag = cms.InputTag("simMuonDTDigis"),
DTdigisimlinkTag = cms.InputTag("simMuonDTDigis"),
DTrechitTag = cms.InputTag("dt1DRecHits"),
#
dumpDT = cms.bool(False),
links_exist = cms.bool(True),
associatorByWire = cms.bool(False),
#
# for CSC Hit associator
CSCsimHitsTag = cms.InputTag("g4SimHits","MuonCSCHits"),
CSCsimHitsXFTag = cms.InputTag("mix","g4SimHitsMuonCSCHits"),
CSClinksTag = cms.InputTag("simMuonCSCDigis","MuonCSCStripDigiSimLinks"),
CSCwireLinksTag = cms.InputTag("simMuonCSCDigis","MuonCSCWireDigiSimLinks"),
#
# for RPC Hit associator
RPCsimhitsTag = cms.InputTag("g4SimHits","MuonRPCHits"),
RPCsimhitsXFTag = cms.InputTag("mix","g4SimHitsMuonRPCHits"),
RPCdigisimlinkTag = cms.InputTag("simMuonRPCDigis","RPCDigiSimLink"),
#
# for GEM Hit associator
useGEMs = cms.bool(False),
GEMsimhitsTag = cms.InputTag("g4SimHits","MuonGEMHits"),
GEMsimhitsXFTag = cms.InputTag("mix","g4SimHitsMuonGEMHits"),
GEMdigisimlinkTag = cms.InputTag("simMuonGEMDigis","GEM"),
#
# for Tracker Hit associator
#
associatePixel = cms.bool(True),
associateStrip = cms.bool(True),
pixelSimLinkSrc = cms.InputTag("simSiPixelDigis"),
stripSimLinkSrc = cms.InputTag("simSiStripDigis"),
associateRecoTracks = cms.bool(True),
#
ROUList = cms.vstring('TrackerHitsTIBLowTof',
'TrackerHitsTIBHighTof',
'TrackerHitsTIDLowTof',
'TrackerHitsTIDHighTof',
'TrackerHitsTOBLowTof',
'TrackerHitsTOBHighTof',
'TrackerHitsTECLowTof',
'TrackerHitsTECHighTof',
'TrackerHitsPixelBarrelLowTof',
'TrackerHitsPixelBarrelHighTof',
'TrackerHitsPixelEndcapLowTof',
'TrackerHitsPixelEndcapHighTof'),
#
# to associate to reco::Muon segments
inputDTRecSegment4DCollection = cms.InputTag("dt4DSegments"),
inputCSCSegmentCollection = cms.InputTag("cscSegments"),
)


from Configuration.Eras.Modifier_fastSim_cff import fastSim
if fastSim.isChosen():
#if True:
obj = NewMuonAssociatorByHitsCommonParameters
obj.simtracksTag = "famosSimHits"
obj.DTsimhitsTag = "MuonSimHits:MuonDTHits"
obj.CSCsimHitsTag = "MuonSimHits:MuonCSCHits"
obj.RPCsimhitsTag = "MuonSimHits:MuonRPCHits"
obj.simtracksXFTag = "mix:famosSimHits"
obj.DTsimhitsXFTag = "mix:MuonSimHitsMuonDTHits"
obj.CSCsimHitsXFTag = "mix:MuonSimHitsMuonCSCHits"
obj.RPCsimhitsXFTag = "mix:MuonSimHitsMuonRPCHits"
obj.ROUList = ['famosSimHitsTrackerHits']


NewMuonAssociatorByHits = cms.EDProducer("MuonAssociatorEDProducer",
# COMMON CONFIGURATION
NewMuonAssociatorByHitsCommonParameters,
# for Muon Track association
#
# input collections
#
# ... reco::Track collection
# tracksTag = cms.InputTag("standAloneMuons"),
# tracksTag = cms.InputTag("standAloneMuons","UpdatedAtVtx"),
# tracksTag = cms.InputTag("standAloneSETMuons"),
# tracksTag = cms.InputTag("standAloneSETMuons","UpdatedAtVtx"),
# tracksTag = cms.InputTag("cosmicMuons"),
tracksTag = cms.InputTag("globalMuons"),
# tracksTag = cms.InputTag("tevMuons","firstHit"),
# tracksTag = cms.InputTag("tevMuons","picky"),
# tracksTag = cms.InputTag("globalSETMuons"),
# tracksTag = cms.InputTag("globalCosmicMuons"),
# tracksTag = cms.InputTag("generalTracks"),
# tracksTag = cms.InputTag("ctfWithMaterialTracksP5LHCNavigation"),
# tracksTag = cms.InputTag("hltL2Muons"),
# tracksTag = cms.InputTag("hltL2Muons","UpdatedAtVtx"),
# tracksTag = cms.InputTag("hltL3Muons")
# tracksTag = cms.InputTag("hltL3Muons","L2Seeded")
# tracksTag = cms.InputTag("hltL3TkTracksFromL2")
#
# ... TrackingParticle collection
tpTag = cms.InputTag("mix","MergedTrackTruth"),
ignoreMissingTrackCollection = cms.untracked.bool(False),
)

from Configuration.Eras.Modifier_run3_GEM_cff import run3_GEM
run3_GEM.toModify( NewMuonAssociatorByHits, useGEMs = cms.bool(True) )
from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker
phase2_tracker.toModify( NewMuonAssociatorByHits, pixelSimLinkSrc = "simSiPixelDigis:Pixel" )
phase2_tracker.toModify( NewMuonAssociatorByHits, stripSimLinkSrc = "simSiPixelDigis:Tracker" )

107 changes: 107 additions & 0 deletions Validation/RecoHI/python/NewMuonValidationHeavyIons_cff.py
@@ -0,0 +1,107 @@
import FWCore.ParameterSet.Config as cms

from Validation.RecoHI.track_selectors_cff import *
from Validation.RecoMuon.NewMuonValidation_cff import *

# MuonAssociation labels; hit-by-hit matching only,MuonAssociator
#
import SimMuon.MCTruth.NewMuonAssociatorByHits_cfi
hiMABH = SimMuon.MCTruth.NewMuonAssociatorByHits_cfi.NewMuonAssociatorByHits.clone()
# DEFAULTS ###################################
# EfficiencyCut_track = cms.double(0.),
# PurityCut_track = cms.double(0.),
# EfficiencyCut_muon = cms.double(0.),
# PurityCut_muon = cms.double(0.),
# includeZeroHitMuons = cms.bool(True),
# acceptOneStubMatchings = cms.bool(False),
##############################################
hiMABH.tpTag = 'NEWcutsTpMuons'
#hiMABH.acceptOneStubMatchings = cms.bool(True) # this was the OLD setting
hiMABH.PurityCut_track = 0.75
hiMABH.PurityCut_muon = 0.75
#hiMABH.EfficiencyCut_track = 0.5 # maybe this could be added
#hiMABH.includeZeroHitMuons = False # maybe this could be added
################################################

# sim to tracker tracks,
NEWtpToTkMuonAssociationHI = hiMABH.clone()
NEWtpToTkMuonAssociationHI.tracksTag = 'NEWcutsRecoTrkMuons'
NEWtpToTkMuonAssociationHI.UseTracker = True
NEWtpToTkMuonAssociationHI.UseMuon = False

# sim to sta, and sta:updatedAtVtx
NEWtpToStaMuonAssociationHI = hiMABH.clone()
NEWtpToStaMuonAssociationHI.tracksTag = 'standAloneMuons'
NEWtpToStaMuonAssociationHI.UseTracker = False
NEWtpToStaMuonAssociationHI.UseMuon = True

NEWtpToStaUpdMuonAssociationHI = hiMABH.clone()
NEWtpToStaUpdMuonAssociationHI.tracksTag = 'standAloneMuons:UpdatedAtVtx'
NEWtpToStaUpdMuonAssociationHI.UseTracker = False
NEWtpToStaUpdMuonAssociationHI.UseMuon = True

# sim to glb track
NEWtpToGlbMuonAssociationHI = hiMABH.clone()
NEWtpToGlbMuonAssociationHI.tracksTag = 'globalMuons'
NEWtpToGlbMuonAssociationHI.UseTracker = True
NEWtpToGlbMuonAssociationHI.UseMuon = True


# Muon association sequences
# (some are commented out until timing is addressed)
NEWhiMuonAssociation_seq = cms.Sequence(
NEWtpToTkMuonAssociationHI+
NEWtpToStaMuonAssociationHI+
NEWtpToStaUpdMuonAssociationHI+
NEWtpToGlbMuonAssociationHI
)

#----------------------------------------

from Validation.RecoMuon.histoParameters_cff import *

import Validation.RecoMuon.NewMuonTrackValidator_cfi
MTVhi = Validation.RecoMuon.NewMuonTrackValidator_cfi.NewMuonTrackValidator.clone()
MTVhi.label_tp_effic = cms.InputTag("NEWcutsTpMuons")
MTVhi.label_tp_fake = cms.InputTag("NEWcutsTpMuons")
MTVhi.maxPt = cms.double(100)

# MuonTrackValidator parameters
NEWtrkMuonTrackVMuonAssocHI = MTVhi.clone()
NEWtrkMuonTrackVMuonAssocHI.associatormap = 'NEWtpToTkMuonAssociationHI'
NEWtrkMuonTrackVMuonAssocHI.label = ['NEWcutsRecoTrkMuons']
NEWtrkMuonTrackVMuonAssocHI.muonHistoParameters = trkMuonHistoParameters

NEWglbMuonTrackVMuonAssocHI = MTVhi.clone()
NEWglbMuonTrackVMuonAssocHI.associatormap = 'NEWtpToGlbMuonAssociationHI'
NEWglbMuonTrackVMuonAssocHI.label = ['globalMuons']
NEWglbMuonTrackVMuonAssocHI.muonHistoParameters = glbMuonHistoParameters

NEWstaMuonTrackVMuonAssocHI = MTVhi.clone()
NEWstaMuonTrackVMuonAssocHI.associatormap = 'NEWtpToStaMuonAssociationHI'
NEWstaMuonTrackVMuonAssocHI.label = ('standAloneMuons',)
NEWstaMuonTrackVMuonAssocHI.muonHistoParameters = staMuonHistoParameters

NEWstaUpdMuonTrackVMuonAssocHI = MTVhi.clone()
NEWstaUpdMuonTrackVMuonAssocHI.associatormap = 'NEWtpToStaUpdMuonAssociationHI'
NEWstaUpdMuonTrackVMuonAssocHI.label = ('standAloneMuons:UpdatedAtVtx',)
NEWstaUpdMuonTrackVMuonAssocHI.muonHistoParameters = staUpdMuonHistoParameters


# Muon validation sequences
NEWhiMuonValidation_seq = cms.Sequence(
NEWtrkMuonTrackVMuonAssocHI+
NEWstaMuonTrackVMuonAssocHI+
NEWstaUpdMuonTrackVMuonAssocHI+
NEWglbMuonTrackVMuonAssocHI
)

# HI muon prevalidation
NEWhiRecoMuonPrevalidation = cms.Sequence(
NEWcutsRecoTrkMuons
* NEWcutsTpMuons
* NEWhiMuonAssociation_seq
)

# HI muon validation sequence
NEWhiRecoMuonValidation = cms.Sequence( NEWhiMuonValidation_seq )
5 changes: 2 additions & 3 deletions Validation/RecoHI/python/globalValidationHeavyIons_cff.py
Expand Up @@ -23,10 +23,10 @@


# prevalidation sequence for all EDFilters and EDProducers
#
globalPrevalidationHI = cms.Sequence(
hiTrackPrevalidation
* hiRecoMuonPrevalidation

)


Expand All @@ -49,7 +49,6 @@

+ hiTrackValidation # validation of 'hiGeneralTracks'
+ hiJetValidation # validation of pileup jet finders
+ hiRecoMuonValidation # validation of offline muon reco

+ hiRecoMuonValidation # validation of offline muon reco
)

14 changes: 14 additions & 0 deletions Validation/RecoHI/python/track_selectors_cff.py
@@ -0,0 +1,14 @@
import FWCore.ParameterSet.Config as cms

# pt-selection of reco tracks
import PhysicsTools.RecoAlgos.recoTrackSelector_cfi
NEWcutsRecoTrkMuons = PhysicsTools.RecoAlgos.recoTrackSelector_cfi.recoTrackSelector.clone()
NEWcutsRecoTrkMuons.src = "hiGeneralTracks"
NEWcutsRecoTrkMuons.quality = []
NEWcutsRecoTrkMuons.ptMin = 0.0

# pt-selection of tracking particles
import PhysicsTools.RecoAlgos.trackingParticleSelector_cfi
NEWcutsTpMuons = PhysicsTools.RecoAlgos.trackingParticleSelector_cfi.trackingParticleSelector.clone()
NEWcutsTpMuons.ptMin = 0.0

0 comments on commit 47f557b

Please sign in to comment.