Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Monitor conversion tracks in tracking validation #12909

Merged
merged 3 commits into from
Jan 16, 2016
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add conversion tracks to tracking validation
Aim is to have something we can monitor (efficiency, fake rate) for
now, rather than assessing the exact physics performance.
  • Loading branch information
makortel committed Jan 12, 2016
commit e67bc14369a93c5efda7b3b3953fe39af8a15646
4 changes: 2 additions & 2 deletions Validation/RecoTrack/python/PostProcessorTracker_cfi.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import FWCore.ParameterSet.Config as cms

postProcessorTrack = cms.EDAnalyzer("DQMGenericClient",
subDirs = cms.untracked.vstring("Tracking/Track/*", "Tracking/TrackFromPV/*", "Tracking/TrackFromPVAllTP/*", "Tracking/TrackAllTPEffic/*", "Tracking/TrackSeeding/*", "Tracking/TrackBuilding/*"),
subDirs = cms.untracked.vstring("Tracking/Track/*", "Tracking/TrackFromPV/*", "Tracking/TrackFromPVAllTP/*", "Tracking/TrackAllTPEffic/*", "Tracking/TrackSeeding/*", "Tracking/TrackBuilding/*", "Tracking/TrackConversion/*"),
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",
Expand Down Expand Up @@ -159,7 +159,7 @@
)

postProcessorTrackSummary = cms.EDAnalyzer("DQMGenericClient",
subDirs = cms.untracked.vstring("Tracking/Track", "Tracking/TrackFromPV", "Tracking/TrackFromPVAllTP", "Tracking/TrackAllTPEffic", "Tracking/TrackSeeding", "Tracking/TrackBuilding"),
subDirs = cms.untracked.vstring("Tracking/Track", "Tracking/TrackFromPV", "Tracking/TrackFromPVAllTP", "Tracking/TrackAllTPEffic", "Tracking/TrackSeeding", "Tracking/TrackBuilding", "Tracking/TrackConversion"),
efficiency = cms.vstring(
"effic_vs_coll 'Efficiency vs track collection' num_assoc(simToReco)_coll num_simul_coll",
"effic_vs_coll_allPt 'Efficiency vs track collection' num_assoc(simToReco)_coll_allPt num_simul_coll_allPt",
Expand Down
65 changes: 58 additions & 7 deletions Validation/RecoTrack/python/TrackValidation_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
from SimTracker.TrackerHitAssociation.clusterTpAssociationProducer_cfi import *
from SimTracker.VertexAssociation.VertexAssociatorByPositionAndTracks_cfi import *
from PhysicsTools.RecoAlgos.trackingParticleSelector_cfi import trackingParticleSelector as _trackingParticleSelector
from CommonTools.RecoAlgos.trackingParticleConversionSelector_cfi import trackingParticleConversionSelector as _trackingParticleConversionSelector
from CommonTools.RecoAlgos.sortedPrimaryVertices_cfi import sortedPrimaryVertices as _sortedPrimaryVertices
from CommonTools.RecoAlgos.recoChargedRefCandidateToTrackRefProducer_cfi import recoChargedRefCandidateToTrackRefProducer as _recoChargedRefCandidateToTrackRefProducer

Expand Down Expand Up @@ -204,6 +205,17 @@ def _addSeedToTrackProducers():
tracksValidationSelectorsFromPV.insert(0, generalTracksFromPV)


## Select conversion TrackingParticles, and define the corresponding associator
# (do not use associations because the collections of interest are not subsets of each other)
trackingParticlesConversion = _trackingParticleConversionSelector.clone()
tpClusterProducerConversion = tpClusterProducer.clone(
trackingParticleSrc = "trackingParticlesConversion",
)
quickTrackAssociatorByHitsConversion = quickTrackAssociatorByHits.clone(
cluster2TPSrc = "tpClusterProducerConversion"
)


## MTV instances
trackValidator = Validation.RecoTrack.MultiTrackValidator_cfi.multiTrackValidator.clone()
trackValidator.label = ["generalTracks", _generalTracksHp] + _selectorsByAlgo + _selectorsByAlgoHp + [
Expand Down Expand Up @@ -264,6 +276,30 @@ def _addSeedToTrackProducers():
trackValidatorAllTPEffic.histoProducerAlgoBlock.TpSelectorForEfficiencyVsVTXR.signalOnly = False
trackValidatorAllTPEffic.histoProducerAlgoBlock.TpSelectorForEfficiencyVsVTXZ.signalOnly = False

# For conversions
trackValidatorConversion = trackValidator.clone(
dirName = "Tracking/TrackConversion/",
label = [
"convStepTracks",
"conversionStepTracks",
"ckfInOutTracksFromConversions",
"ckfOutInTracksFromConversions",
],
label_tp_effic = "trackingParticlesConversion",
label_tp_fake = "trackingParticlesConversion",
associators = ["quickTrackAssociatorByHitsConversion"],
UseAssociators = True,
doSimPlots = True,
dodEdxPlots = False,
doPVAssociationPlots = False,
calculateDrSingleCollection = False,
)
# relax lip and tip
for n in ["Eta", "Phi", "Pt", "VTXR", "VTXZ"]:
pset = getattr(trackValidatorConversion.histoProducerAlgoBlock, "TpSelectorForEfficiencyVs"+n)
pset.lip = trackValidatorConversion.lipTP.value()
pset.tip = trackValidatorConversion.tipTP.value()


# the track selectors
tracksValidationSelectors = cms.Sequence(
Expand All @@ -287,26 +323,34 @@ def _addSeedToTrackProducers():
trackingParticleRecoTrackAsssociationSignal
)

if eras.fastSim.isChosen():
tracksValidationTruth.remove(tpClusterProducer)
tracksValidationTruthSignal.remove(tpClusterProducerSignal)

tracksValidationTruthConversion = cms.Sequence(
trackingParticlesConversion +
tpClusterProducerConversion +
quickTrackAssociatorByHitsConversion
)

tracksPreValidation = cms.Sequence(
tracksValidationSelectors +
tracksValidationSelectorsFromPV +
tracksValidationTruth +
tracksValidationTruthSignal
tracksValidationTruthSignal +
tracksValidationTruthConversion
)

tracksValidation = cms.Sequence(
tracksPreValidation +
trackValidator +
trackValidatorFromPV +
trackValidatorFromPVAllTP +
trackValidatorAllTPEffic
trackValidatorAllTPEffic +
trackValidatorConversion
)

if eras.fastSim.isChosen():
tracksValidationTruth.remove(tpClusterProducer)
tracksValidationTruthSignal.remove(tpClusterProducerSignal)
tracksPreValidation.remove(tracksValidationTruthConversion)
tracksValidation.remove(trackValidatorConversion)

### Then define stuff for standalone mode (i.e. MTV with RECO+DIGI input)

Expand All @@ -330,6 +374,8 @@ def _addSeedToTrackProducers():
)
for _label in ["cutsRecoTracksBtvLike", "cutsRecoTracksAK4PFJets"]:
trackValidatorAllTPEfficStandalone.label.remove(_label)
trackValidatorConversionStandalone = trackValidatorConversion.clone()
trackValidatorConversionStandalone.label.remove("convStepTracks")

# sequences
tracksValidationSelectorsStandalone = cms.Sequence(
Expand All @@ -341,7 +387,8 @@ def _addSeedToTrackProducers():
trackValidatorStandalone +
trackValidatorFromPVStandalone +
trackValidatorFromPVAllTPStandalone +
trackValidatorAllTPEfficStandalone
trackValidatorAllTPEfficStandalone +
trackValidatorConversionStandalone
)
tracksValidationStandalone = cms.Sequence(
ak4PFL1FastL2L3CorrectorChain +
Expand Down Expand Up @@ -375,6 +422,9 @@ def _addSeedToTrackProducers():
doSeedPlots = True,
)

trackValidatorConversionTrackingOnly = trackValidatorConversion.clone()
trackValidatorConversionTrackingOnly.label.remove("ckfInOutTracksFromConversions")
trackValidatorConversionTrackingOnly.label.remove("ckfOutInTracksFromConversions")

# sequences
tracksPreValidationTrackingOnly = tracksPreValidation.copy()
Expand All @@ -386,6 +436,7 @@ def _addSeedToTrackProducers():
trackValidatorSeedingTrackingOnly +
trackValidatorBuildingTrackingOnly
)
trackValidatorsTrackingOnly.replace(trackValidatorConversionStandalone, trackValidatorConversionTrackingOnly)

tracksValidationTrackingOnly = cms.Sequence(
tracksPreValidationTrackingOnly +
Expand Down