Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:28:13

0001 import FWCore.ParameterSet.Config as cms
0002 
0003 import RecoTracker.MkFit.mkFitGeometryESProducer_cfi as mkFitGeometryESProducer_cfi
0004 import RecoTracker.MkFit.mkFitSiPixelHitConverter_cfi as mkFitSiPixelHitConverter_cfi
0005 import RecoTracker.MkFit.mkFitSiStripHitConverter_cfi as mkFitSiStripHitConverter_cfi
0006 import RecoTracker.MkFit.mkFitEventOfHitsProducer_cfi as mkFitEventOfHitsProducer_cfi
0007 import RecoTracker.MkFit.mkFitSeedConverter_cfi as mkFitSeedConverter_cfi
0008 import RecoTracker.MkFit.mkFitIterationConfigESProducer_cfi as mkFitIterationConfigESProducer_cfi
0009 import RecoTracker.MkFit.mkFitProducer_cfi as mkFitProducer_cfi
0010 import RecoTracker.MkFit.mkFitOutputConverter_cfi as mkFitOutputConverter_cfi
0011 import RecoLocalTracker.SiStripRecHitConverter.SiStripRecHitConverter_cfi as SiStripRecHitConverter_cfi
0012 
0013 def customizeHLTIter0ToMkFit(process):
0014 
0015     # if any of the following objects does not exist, do not apply any customisation
0016     for objLabel in [
0017         'hltSiStripRawToClustersFacility',
0018         'HLTDoLocalStripSequence',
0019         'HLTIterativeTrackingIteration0',
0020         'hltIter0PFlowCkfTrackCandidates',
0021     ]:
0022         if not hasattr(process, objLabel):
0023             print(f'# WARNING: customizeHLTIter0ToMkFit failed (object with label "{objLabel}" not found) - no customisation applied !')
0024             return process
0025 
0026     # mkFit needs all clusters, so switch off the on-demand mode
0027     process.hltSiStripRawToClustersFacility.onDemand = False
0028 
0029     process.hltSiStripRecHits = SiStripRecHitConverter_cfi.siStripMatchedRecHits.clone(
0030         ClusterProducer = "hltSiStripRawToClustersFacility",
0031         StripCPE = "hltESPStripCPEfromTrackAngle:hltESPStripCPEfromTrackAngle",
0032         doMatching = False,
0033     )
0034 
0035     # Use fourth hit if one is available
0036     process.hltIter0PFLowPixelSeedsFromPixelTracks.includeFourthHit = cms.bool(True)
0037 
0038     process.hltMkFitGeometryESProducer = mkFitGeometryESProducer_cfi.mkFitGeometryESProducer.clone()
0039 
0040     process.hltIter0PFlowCkfTrackCandidatesMkFitSiPixelHits = mkFitSiPixelHitConverter_cfi.mkFitSiPixelHitConverter.clone(
0041         hits = "hltSiPixelRecHits",
0042         ttrhBuilder = ":hltESPTTRHBWithTrackAngle",
0043     )
0044     process.hltIter0PFlowCkfTrackCandidatesMkFitSiStripHits = mkFitSiStripHitConverter_cfi.mkFitSiStripHitConverter.clone(
0045         rphiHits = "hltSiStripRecHits:rphiRecHit",
0046         stereoHits = "hltSiStripRecHits:stereoRecHit",
0047         ttrhBuilder = ":hltESPTTRHBWithTrackAngle",
0048         minGoodStripCharge = dict(refToPSet_ = 'HLTSiStripClusterChargeCutLoose'),
0049     )
0050     process.hltIter0PFlowCkfTrackCandidatesMkFitEventOfHits = mkFitEventOfHitsProducer_cfi.mkFitEventOfHitsProducer.clone(
0051         beamSpot  = "hltOnlineBeamSpot",
0052         pixelHits = "hltIter0PFlowCkfTrackCandidatesMkFitSiPixelHits",
0053         stripHits = "hltIter0PFlowCkfTrackCandidatesMkFitSiStripHits",
0054     )
0055     process.hltIter0PFlowCkfTrackCandidatesMkFitSeeds = mkFitSeedConverter_cfi.mkFitSeedConverter.clone(
0056         seeds = "hltIter0PFLowPixelSeedsFromPixelTracks",
0057         ttrhBuilder = ":hltESPTTRHBWithTrackAngle",
0058     )
0059     process.hltIter0PFlowTrackCandidatesMkFitConfig = mkFitIterationConfigESProducer_cfi.mkFitIterationConfigESProducer.clone(
0060         ComponentName = 'hltIter0PFlowTrackCandidatesMkFitConfig',
0061         config = 'RecoTracker/MkFit/data/mkfit-phase1-initialStep.json',
0062     )
0063     process.hltIter0PFlowCkfTrackCandidatesMkFit = mkFitProducer_cfi.mkFitProducer.clone(
0064         pixelHits = "hltIter0PFlowCkfTrackCandidatesMkFitSiPixelHits",
0065         stripHits = "hltIter0PFlowCkfTrackCandidatesMkFitSiStripHits",
0066         eventOfHits = "hltIter0PFlowCkfTrackCandidatesMkFitEventOfHits",
0067         seeds = "hltIter0PFlowCkfTrackCandidatesMkFitSeeds",
0068         config = ('', 'hltIter0PFlowTrackCandidatesMkFitConfig'),
0069         minGoodStripCharge = dict(refToPSet_ = 'HLTSiStripClusterChargeCutLoose'),
0070     )
0071     process.hltIter0PFlowCkfTrackCandidates = mkFitOutputConverter_cfi.mkFitOutputConverter.clone(
0072         seeds = "hltIter0PFLowPixelSeedsFromPixelTracks",
0073         mkFitEventOfHits = "hltIter0PFlowCkfTrackCandidatesMkFitEventOfHits",
0074         mkFitPixelHits = "hltIter0PFlowCkfTrackCandidatesMkFitSiPixelHits",
0075         mkFitStripHits = "hltIter0PFlowCkfTrackCandidatesMkFitSiStripHits",
0076         mkFitSeeds = "hltIter0PFlowCkfTrackCandidatesMkFitSeeds",
0077         tracks = "hltIter0PFlowCkfTrackCandidatesMkFit",
0078         ttrhBuilder = ":hltESPTTRHBWithTrackAngle",
0079         propagatorAlong = ":PropagatorWithMaterialParabolicMf",
0080         propagatorOpposite = ":PropagatorWithMaterialParabolicMfOpposite",
0081     )
0082 
0083     process.HLTDoLocalStripSequence += process.hltSiStripRecHits
0084 
0085     replaceWith = (process.hltIter0PFlowCkfTrackCandidatesMkFitSiPixelHits +
0086                    process.hltIter0PFlowCkfTrackCandidatesMkFitSiStripHits +
0087                    process.hltIter0PFlowCkfTrackCandidatesMkFitEventOfHits +
0088                    process.hltIter0PFlowCkfTrackCandidatesMkFitSeeds +
0089                    process.hltIter0PFlowCkfTrackCandidatesMkFit +
0090                    process.hltIter0PFlowCkfTrackCandidates)
0091 
0092     process.HLTIterativeTrackingIteration0.replace(process.hltIter0PFlowCkfTrackCandidates, replaceWith)
0093 
0094     for path in process.paths_().values():
0095       if not path.contains(process.HLTIterativeTrackingIteration0) and path.contains(process.hltIter0PFlowCkfTrackCandidates):
0096         path.replace(process.hltIter0PFlowCkfTrackCandidates, replaceWith)
0097 
0098     return process