def customiseForQuadrupletsByCellularAutomaton(process): for module in process._Process__producers.values(): if not hasattr(module, "OrderedHitsFactoryPSet"): continue pset = getattr(module, "OrderedHitsFactoryPSet") if not hasattr(pset, "ComponentName"): continue if not (pset.ComponentName == "CombinedHitQuadrupletGenerator"): continue # Adjust seeding layers seedingLayersName = module.OrderedHitsFactoryPSet.SeedingLayers.getModuleLabel( ) # Configure seed generator / pixel track producer quadruplets = module.OrderedHitsFactoryPSet.clone() from RecoPixelVertexing.PixelTriplets.CAHitQuadrupletGenerator_cfi import CAHitQuadrupletGenerator as _CAHitQuadrupletGenerator module.OrderedHitsFactoryPSet = _CAHitQuadrupletGenerator.clone( ComponentName=cms.string("CAHitQuadrupletGenerator"), extraHitRPhitolerance=quadruplets.GeneratorPSet. extraHitRPhitolerance, maxChi2=dict( pt1=0.8, pt2=2, value1=200, value2=100, enabled=True, ), useBendingCorrection=True, fitFastCircle=True, fitFastCircleChi2Cut=True, SeedingLayers=cms.InputTag(seedingLayersName), CAThetaCut=cms.double(0.00125), CAPhiCut=cms.double(0.1), CAHardPtCut=cms.double(0), ) if hasattr(quadruplets.GeneratorPSet, "SeedComparitorPSet"): pset.SeedComparitorPSet = quadruplets.GeneratorPSet.SeedComparitorPSet return process
def customiseLegacySeeding(module): pset = getattr(module, "OrderedHitsFactoryPSet") if not hasattr(pset, "ComponentName"): return if pset.ComponentName != "CombinedHitQuadrupletGenerator": return # Adjust seeding layers seedingLayersName = module.OrderedHitsFactoryPSet.SeedingLayers.getModuleLabel( ) # Configure seed generator / pixel track producer quadruplets = module.OrderedHitsFactoryPSet.clone() from RecoPixelVertexing.PixelTriplets.CAHitQuadrupletGenerator_cfi import CAHitQuadrupletGenerator as _CAHitQuadrupletGenerator module.OrderedHitsFactoryPSet = _CAHitQuadrupletGenerator.clone( ComponentName="CAHitQuadrupletGenerator", extraHitRPhitolerance=quadruplets.GeneratorPSet.extraHitRPhitolerance, SeedingLayers=seedingLayersName, **_CAParameters) if hasattr(quadruplets.GeneratorPSet, "SeedComparitorPSet"): module.OrderedHitsFactoryPSet.SeedComparitorPSet = quadruplets.GeneratorPSet.SeedComparitorPSet
def customiseLegacySeeding(module): pset = getattr(module, "OrderedHitsFactoryPSet") if not hasattr(pset, "ComponentName"): return if pset.ComponentName != "CombinedHitQuadrupletGenerator": return # Adjust seeding layers seedingLayersName = module.OrderedHitsFactoryPSet.SeedingLayers.getModuleLabel() # Configure seed generator / pixel track producer quadruplets = module.OrderedHitsFactoryPSet.clone() from RecoPixelVertexing.PixelTriplets.CAHitQuadrupletGenerator_cfi import CAHitQuadrupletGenerator as _CAHitQuadrupletGenerator module.OrderedHitsFactoryPSet = _CAHitQuadrupletGenerator.clone( ComponentName = "CAHitQuadrupletGenerator", extraHitRPhitolerance = quadruplets.GeneratorPSet.extraHitRPhitolerance, SeedingLayers = seedingLayersName, **_CAParameters ) if hasattr(quadruplets.GeneratorPSet, "SeedComparitorPSet"): module.OrderedHitsFactoryPSet.SeedComparitorPSet = quadruplets.GeneratorPSet.SeedComparitorPSet
def customizeHLTForPFTrackingPhaseI2017(process): process = customizeHLTPhaseIPixelGeom(process) process.hltPixelLayerTriplets.layerList = cms.vstring( 'BPix1+BPix2+BPix3', 'BPix2+BPix3+BPix4', 'BPix1+BPix3+BPix4', 'BPix1+BPix2+BPix4', 'BPix2+BPix3+FPix1_pos', 'BPix2+BPix3+FPix1_neg', 'BPix1+BPix2+FPix1_pos', 'BPix1+BPix2+FPix1_neg', 'BPix2+FPix1_pos+FPix2_pos', 'BPix2+FPix1_neg+FPix2_neg', 'BPix1+FPix1_pos+FPix2_pos', 'BPix1+FPix1_neg+FPix2_neg', 'FPix1_pos+FPix2_pos+FPix3_pos', 'FPix1_neg+FPix2_neg+FPix3_neg' ) process.hltPixelLayerQuadruplets = cms.EDProducer("SeedingLayersEDProducer", BPix = cms.PSet( useErrorsFromParam = cms.bool( True ), hitErrorRPhi = cms.double( 0.0027 ), TTRHBuilder = cms.string( "hltESPTTRHBuilderPixelOnly" ), HitProducer = cms.string( "hltSiPixelRecHits" ), hitErrorRZ = cms.double( 0.006 ) ), FPix = cms.PSet( useErrorsFromParam = cms.bool( True ), hitErrorRPhi = cms.double( 0.0051 ), TTRHBuilder = cms.string( "hltESPTTRHBuilderPixelOnly" ), HitProducer = cms.string( "hltSiPixelRecHits" ), hitErrorRZ = cms.double( 0.0036 ) ), MTEC = cms.PSet( ), MTIB = cms.PSet( ), MTID = cms.PSet( ), MTOB = cms.PSet( ), TEC = cms.PSet( ), TIB = cms.PSet( ), TID = cms.PSet( ), TOB = cms.PSet( ), layerList = cms.vstring( 'BPix1+BPix2+BPix3+BPix4', 'BPix1+BPix2+BPix3+FPix1_pos', 'BPix1+BPix2+BPix3+FPix1_neg', 'BPix1+BPix2+FPix1_pos+FPix2_pos', 'BPix1+BPix2+FPix1_neg+FPix2_neg', 'BPix1+FPix1_pos+FPix2_pos+FPix3_pos', 'BPix1+FPix1_neg+FPix2_neg+FPix3_neg' ) ) # Configure seed generator / pixel track producer from RecoPixelVertexing.PixelTriplets.CAHitQuadrupletGenerator_cfi import CAHitQuadrupletGenerator as _CAHitQuadrupletGenerator process.hltPixelTracks.OrderedHitsFactoryPSet = _CAHitQuadrupletGenerator.clone( ComponentName = cms.string("CAHitQuadrupletGenerator"), extraHitRPhitolerance = cms.double(0.032), maxChi2 = dict( pt1 = 0.7, pt2 = 2, value1 = 200, value2 = 50, enabled = True, ), useBendingCorrection = True, fitFastCircle = True, fitFastCircleChi2Cut = True, SeedingLayers = cms.InputTag("hltPixelLayerQuadruplets"), CAThetaCut = cms.double(0.0012), CAPhiCut = cms.double(0.2), CAHardPtCut = cms.double(0), SeedComparitorPSet = cms.PSet( ComponentName = cms.string( "LowPtClusterShapeSeedComparitor" ), clusterShapeCacheSrc = cms.InputTag( "hltSiPixelClustersCache" ) ), ) process.hltPixelTracks.RegionFactoryPSet.RegionPSet = cms.PSet( precise = cms.bool( True ), beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), originRadius = cms.double(0.02), ptMin = cms.double(0.9), nSigmaZ = cms.double(4.0), ) process.HLTDoRecoPixelTracksSequence = cms.Sequence( process.hltPixelLayerQuadruplets + process.hltPixelTracks ) process.HLTIter0PSetTrajectoryFilterIT.minimumNumberOfHits = cms.int32( 4 ) process.HLTIter0PSetTrajectoryFilterIT.minHitsMinPt = cms.int32( 4 ) process.hltIter0PFlowTrackCutClassifier.mva.minLayers = cms.vint32( 3, 3, 4 ) process.hltIter0PFlowTrackCutClassifier.mva.min3DLayers = cms.vint32( 0, 3, 4 ) process.hltIter0PFlowTrackCutClassifier.mva.minPixelHits = cms.vint32( 0, 3, 4 ) process.hltIter1PixelLayerTriplets = cms.EDProducer( "SeedingLayersEDProducer", layerList = cms.vstring( 'BPix1+BPix2+BPix3', 'BPix1+BPix2+FPix1_pos', 'BPix1+BPix2+FPix1_neg', 'BPix1+FPix1_pos+FPix2_pos', 'BPix1+FPix1_neg+FPix2_neg' ), MTOB = cms.PSet( ), TEC = cms.PSet( ), MTID = cms.PSet( ), FPix = cms.PSet( HitProducer = cms.string( "hltSiPixelRecHits" ), hitErrorRZ = cms.double( 0.0036 ), useErrorsFromParam = cms.bool( True ), TTRHBuilder = cms.string( "hltESPTTRHBuilderPixelOnly" ), skipClusters = cms.InputTag( "hltIter1ClustersRefRemoval" ), hitErrorRPhi = cms.double( 0.0051 ) ), MTEC = cms.PSet( ), MTIB = cms.PSet( ), TID = cms.PSet( ), TOB = cms.PSet( ), BPix = cms.PSet( HitProducer = cms.string( "hltSiPixelRecHits" ), hitErrorRZ = cms.double( 0.006 ), useErrorsFromParam = cms.bool( True ), TTRHBuilder = cms.string( "hltESPTTRHBuilderPixelOnly" ), skipClusters = cms.InputTag( "hltIter1ClustersRefRemoval" ), hitErrorRPhi = cms.double( 0.0027 ) ), TIB = cms.PSet( ) ) process.HLTIter1PSetTrajectoryFilterIT = cms.PSet( ComponentType = cms.string('CkfBaseTrajectoryFilter'), chargeSignificance = cms.double(-1.0), constantValueForLostHitsFractionFilter = cms.double(2.0), extraNumberOfHitsBeforeTheFirstLoop = cms.int32(4), maxCCCLostHits = cms.int32(0), # offline (2), maxConsecLostHits = cms.int32(1), maxLostHits = cms.int32(1), # offline (999), maxLostHitsFraction = cms.double(0.1), maxNumberOfHits = cms.int32(100), minGoodStripCharge = cms.PSet( refToPSet_ = cms.string( "HLTSiStripClusterChargeCutNone" ) ), minHitsMinPt = cms.int32(3), minNumberOfHitsForLoopers = cms.int32(13), minNumberOfHitsPerLoop = cms.int32(4), minPt = cms.double(0.2), minimumNumberOfHits = cms.int32(4), # 3 online nSigmaMinPt = cms.double(5.0), pixelSeedExtension = cms.bool(True), seedExtension = cms.int32(1), seedPairPenalty = cms.int32(0), strictSeedExtension = cms.bool(True) ) process.HLTIter1PSetTrajectoryFilterInOutIT = cms.PSet( ComponentType = cms.string('CkfBaseTrajectoryFilter'), chargeSignificance = cms.double(-1.0), constantValueForLostHitsFractionFilter = cms.double(2.0), extraNumberOfHitsBeforeTheFirstLoop = cms.int32(4), maxCCCLostHits = cms.int32(0), # offline (2), maxConsecLostHits = cms.int32(1), maxLostHits = cms.int32(1), # offline (999), maxLostHitsFraction = cms.double(0.1), maxNumberOfHits = cms.int32(100), minGoodStripCharge = cms.PSet( refToPSet_ = cms.string( "HLTSiStripClusterChargeCutNone" ) ), minHitsMinPt = cms.int32(3), minNumberOfHitsForLoopers = cms.int32(13), minNumberOfHitsPerLoop = cms.int32(4), minPt = cms.double(0.2), minimumNumberOfHits = cms.int32(4), # 3 online nSigmaMinPt = cms.double(5.0), pixelSeedExtension = cms.bool(True), seedExtension = cms.int32(1), seedPairPenalty = cms.int32(0), strictSeedExtension = cms.bool(True) ) process.HLTIter1PSetTrajectoryBuilderIT = cms.PSet( inOutTrajectoryFilter = cms.PSet( refToPSet_ = cms.string('HLTIter1PSetTrajectoryFilterInOutIT') ), propagatorAlong = cms.string( "PropagatorWithMaterialParabolicMf" ), trajectoryFilter = cms.PSet( refToPSet_ = cms.string( "HLTIter1PSetTrajectoryFilterIT" ) ), maxCand = cms.int32( 2 ), ComponentType = cms.string( "CkfTrajectoryBuilder" ), propagatorOpposite = cms.string( "PropagatorWithMaterialParabolicMfOpposite" ), MeasurementTrackerName = cms.string( "hltIter1ESPMeasurementTracker" ), estimator = cms.string( "hltESPChi2ChargeMeasurementEstimator16" ), TTRHBuilder = cms.string( "hltESPTTRHBWithTrackAngle" ), updator = cms.string( "hltESPKFUpdator" ), alwaysUseInvalidHits = cms.bool( False ), intermediateCleaning = cms.bool( True ), lostHitPenalty = cms.double( 30.0 ), useSameTrajFilter = cms.bool(False) # new ! other iteration should have it set to True ) process.HLTIterativeTrackingIteration1 = cms.Sequence( process.hltIter1ClustersRefRemoval + process.hltIter1MaskedMeasurementTrackerEvent + process.hltIter1PixelLayerTriplets + process.hltIter1PFlowPixelSeeds + process.hltIter1PFlowCkfTrackCandidates + process.hltIter1PFlowCtfWithMaterialTracks + process.hltIter1PFlowTrackCutClassifierPrompt + process.hltIter1PFlowTrackCutClassifierDetached + process.hltIter1PFlowTrackCutClassifierMerged + process.hltIter1PFlowTrackSelectionHighPurity ) process.hltIter2PixelLayerTriplets = cms.EDProducer( "SeedingLayersEDProducer", layerList = cms.vstring( 'BPix1+BPix2+BPix3', 'BPix1+BPix2+FPix1_pos', 'BPix1+BPix2+FPix1_neg', 'BPix1+FPix1_pos+FPix2_pos', 'BPix1+FPix1_neg+FPix2_neg' ), MTOB = cms.PSet( ), TEC = cms.PSet( ), MTID = cms.PSet( ), FPix = cms.PSet( HitProducer = cms.string( "hltSiPixelRecHits" ), hitErrorRZ = cms.double( 0.0036 ), useErrorsFromParam = cms.bool( True ), TTRHBuilder = cms.string( "hltESPTTRHBuilderPixelOnly" ), skipClusters = cms.InputTag( "hltIter2ClustersRefRemoval" ), hitErrorRPhi = cms.double( 0.0051 ) ), MTEC = cms.PSet( ), MTIB = cms.PSet( ), TID = cms.PSet( ), TOB = cms.PSet( ), BPix = cms.PSet( HitProducer = cms.string( "hltSiPixelRecHits" ), hitErrorRZ = cms.double( 0.006 ), useErrorsFromParam = cms.bool( True ), TTRHBuilder = cms.string( "hltESPTTRHBuilderPixelOnly" ), skipClusters = cms.InputTag( "hltIter2ClustersRefRemoval" ), hitErrorRPhi = cms.double( 0.0027 ) ), TIB = cms.PSet( ) ) process.hltIter2PFlowPixelSeeds.OrderedHitsFactoryPSet = cms.PSet( maxElement = cms.uint32( 0 ), ComponentName = cms.string( "StandardHitTripletGenerator" ), GeneratorPSet = cms.PSet( useBending = cms.bool( True ), useFixedPreFiltering = cms.bool( False ), maxElement = cms.uint32( 100000 ), phiPreFiltering = cms.double( 0.3 ), extraHitRPhitolerance = cms.double( 0.032 ), useMultScattering = cms.bool( True ), ComponentName = cms.string( "PixelTripletHLTGenerator" ), extraHitRZtolerance = cms.double( 0.037 ), SeedComparitorPSet = cms.PSet( ComponentName = cms.string( "none" ) ) ), SeedingLayers = cms.InputTag( "hltIter2PixelLayerTriplets" ) ) process.hltIter2PFlowPixelSeeds.SeedCreatorPSet = cms.PSet( refToPSet_ = cms.string( "HLTSeedFromConsecutiveHitsTripletOnlyCreator" ) ) process.HLTIterativeTrackingIteration2 = cms.Sequence( process.hltIter2ClustersRefRemoval + process.hltIter2MaskedMeasurementTrackerEvent + process.hltIter2PixelLayerTriplets + process.hltIter2PFlowPixelSeeds + process.hltIter2PFlowCkfTrackCandidates + process.hltIter2PFlowCtfWithMaterialTracks + process.hltIter2PFlowTrackCutClassifier + process.hltIter2PFlowTrackSelectionHighPurity ) for seqName in process.sequences: seq = getattr(process,seqName) from FWCore.ParameterSet.SequenceTypes import ModuleNodeVisitor l = list() v = ModuleNodeVisitor(l) seq.visit(v) if process.hltPixelTracks in l and not process.hltPixelLayerQuadruplets in l: seq.remove(process.hltPixelLayerTriplets) index = seq.index(process.hltPixelTracks) seq.insert(index,process.hltPixelLayerQuadruplets) return process
def customizeHLTForPFTrackingPhaseI2017(process): process = customizeHLTPhaseIPixelGeom(process) process.hltPixelLayerTriplets.layerList = cms.vstring( 'BPix1+BPix2+BPix3', 'BPix2+BPix3+BPix4', 'BPix1+BPix3+BPix4', 'BPix1+BPix2+BPix4', 'BPix2+BPix3+FPix1_pos', 'BPix2+BPix3+FPix1_neg', 'BPix1+BPix2+FPix1_pos', 'BPix1+BPix2+FPix1_neg', 'BPix2+FPix1_pos+FPix2_pos', 'BPix2+FPix1_neg+FPix2_neg', 'BPix1+FPix1_pos+FPix2_pos', 'BPix1+FPix1_neg+FPix2_neg', 'FPix1_pos+FPix2_pos+FPix3_pos', 'FPix1_neg+FPix2_neg+FPix3_neg') process.hltPixelLayerQuadruplets = cms.EDProducer( "SeedingLayersEDProducer", BPix=cms.PSet(useErrorsFromParam=cms.bool(True), hitErrorRPhi=cms.double(0.0027), TTRHBuilder=cms.string("hltESPTTRHBuilderPixelOnly"), HitProducer=cms.string("hltSiPixelRecHits"), hitErrorRZ=cms.double(0.006)), FPix=cms.PSet(useErrorsFromParam=cms.bool(True), hitErrorRPhi=cms.double(0.0051), TTRHBuilder=cms.string("hltESPTTRHBuilderPixelOnly"), HitProducer=cms.string("hltSiPixelRecHits"), hitErrorRZ=cms.double(0.0036)), MTEC=cms.PSet(), MTIB=cms.PSet(), MTID=cms.PSet(), MTOB=cms.PSet(), TEC=cms.PSet(), TIB=cms.PSet(), TID=cms.PSet(), TOB=cms.PSet(), layerList=cms.vstring('BPix1+BPix2+BPix3+BPix4', 'BPix1+BPix2+BPix3+FPix1_pos', 'BPix1+BPix2+BPix3+FPix1_neg', 'BPix1+BPix2+FPix1_pos+FPix2_pos', 'BPix1+BPix2+FPix1_neg+FPix2_neg', 'BPix1+FPix1_pos+FPix2_pos+FPix3_pos', 'BPix1+FPix1_neg+FPix2_neg+FPix3_neg')) # Configure seed generator / pixel track producer from RecoPixelVertexing.PixelTriplets.CAHitQuadrupletGenerator_cfi import CAHitQuadrupletGenerator as _CAHitQuadrupletGenerator process.hltPixelTracks.OrderedHitsFactoryPSet = _CAHitQuadrupletGenerator.clone( ComponentName=cms.string("CAHitQuadrupletGenerator"), extraHitRPhitolerance=cms.double(0.032), maxChi2=dict( pt1=0.7, pt2=2, value1=200, value2=50, enabled=True, ), useBendingCorrection=True, fitFastCircle=True, fitFastCircleChi2Cut=True, SeedingLayers=cms.InputTag("hltPixelLayerQuadruplets"), CAThetaCut=cms.double(0.0012), CAPhiCut=cms.double(0.2), CAHardPtCut=cms.double(0), SeedComparitorPSet=cms.PSet( ComponentName=cms.string("LowPtClusterShapeSeedComparitor"), clusterShapeCacheSrc=cms.InputTag("hltSiPixelClustersCache")), ) process.hltPixelTracks.RegionFactoryPSet.RegionPSet = cms.PSet( precise=cms.bool(True), beamSpot=cms.InputTag("hltOnlineBeamSpot"), originRadius=cms.double(0.02), ptMin=cms.double(0.9), nSigmaZ=cms.double(4.0), ) process.HLTDoRecoPixelTracksSequence = cms.Sequence( process.hltPixelLayerQuadruplets + process.hltPixelTracks) process.HLTIter0PSetTrajectoryFilterIT.minimumNumberOfHits = cms.int32(4) process.HLTIter0PSetTrajectoryFilterIT.minHitsMinPt = cms.int32(4) process.hltIter0PFlowTrackCutClassifier.mva.minLayers = cms.vint32(3, 3, 4) process.hltIter0PFlowTrackCutClassifier.mva.min3DLayers = cms.vint32( 0, 3, 4) process.hltIter0PFlowTrackCutClassifier.mva.minPixelHits = cms.vint32( 0, 3, 4) process.hltIter1PixelLayerTriplets = cms.EDProducer( "SeedingLayersEDProducer", layerList=cms.vstring('BPix1+BPix2+BPix3', 'BPix1+BPix2+FPix1_pos', 'BPix1+BPix2+FPix1_neg', 'BPix1+FPix1_pos+FPix2_pos', 'BPix1+FPix1_neg+FPix2_neg'), MTOB=cms.PSet(), TEC=cms.PSet(), MTID=cms.PSet(), FPix=cms.PSet(HitProducer=cms.string("hltSiPixelRecHits"), hitErrorRZ=cms.double(0.0036), useErrorsFromParam=cms.bool(True), TTRHBuilder=cms.string("hltESPTTRHBuilderPixelOnly"), skipClusters=cms.InputTag("hltIter1ClustersRefRemoval"), hitErrorRPhi=cms.double(0.0051)), MTEC=cms.PSet(), MTIB=cms.PSet(), TID=cms.PSet(), TOB=cms.PSet(), BPix=cms.PSet(HitProducer=cms.string("hltSiPixelRecHits"), hitErrorRZ=cms.double(0.006), useErrorsFromParam=cms.bool(True), TTRHBuilder=cms.string("hltESPTTRHBuilderPixelOnly"), skipClusters=cms.InputTag("hltIter1ClustersRefRemoval"), hitErrorRPhi=cms.double(0.0027)), TIB=cms.PSet()) process.HLTIter1PSetTrajectoryFilterIT = cms.PSet( ComponentType=cms.string('CkfBaseTrajectoryFilter'), chargeSignificance=cms.double(-1.0), constantValueForLostHitsFractionFilter=cms.double(2.0), extraNumberOfHitsBeforeTheFirstLoop=cms.int32(4), maxCCCLostHits=cms.int32(0), # offline (2), maxConsecLostHits=cms.int32(1), maxLostHits=cms.int32(1), # offline (999), maxLostHitsFraction=cms.double(0.1), maxNumberOfHits=cms.int32(100), minGoodStripCharge=cms.PSet( refToPSet_=cms.string("HLTSiStripClusterChargeCutNone")), minHitsMinPt=cms.int32(3), minNumberOfHitsForLoopers=cms.int32(13), minNumberOfHitsPerLoop=cms.int32(4), minPt=cms.double(0.2), minimumNumberOfHits=cms.int32(4), # 3 online nSigmaMinPt=cms.double(5.0), pixelSeedExtension=cms.bool(True), seedExtension=cms.int32(1), seedPairPenalty=cms.int32(0), strictSeedExtension=cms.bool(True)) process.HLTIter1PSetTrajectoryFilterInOutIT = cms.PSet( ComponentType=cms.string('CkfBaseTrajectoryFilter'), chargeSignificance=cms.double(-1.0), constantValueForLostHitsFractionFilter=cms.double(2.0), extraNumberOfHitsBeforeTheFirstLoop=cms.int32(4), maxCCCLostHits=cms.int32(0), # offline (2), maxConsecLostHits=cms.int32(1), maxLostHits=cms.int32(1), # offline (999), maxLostHitsFraction=cms.double(0.1), maxNumberOfHits=cms.int32(100), minGoodStripCharge=cms.PSet( refToPSet_=cms.string("HLTSiStripClusterChargeCutNone")), minHitsMinPt=cms.int32(3), minNumberOfHitsForLoopers=cms.int32(13), minNumberOfHitsPerLoop=cms.int32(4), minPt=cms.double(0.2), minimumNumberOfHits=cms.int32(4), # 3 online nSigmaMinPt=cms.double(5.0), pixelSeedExtension=cms.bool(True), seedExtension=cms.int32(1), seedPairPenalty=cms.int32(0), strictSeedExtension=cms.bool(True)) process.HLTIter1PSetTrajectoryBuilderIT = cms.PSet( inOutTrajectoryFilter=cms.PSet( refToPSet_=cms.string('HLTIter1PSetTrajectoryFilterInOutIT')), propagatorAlong=cms.string("PropagatorWithMaterialParabolicMf"), trajectoryFilter=cms.PSet( refToPSet_=cms.string("HLTIter1PSetTrajectoryFilterIT")), maxCand=cms.int32(2), ComponentType=cms.string("CkfTrajectoryBuilder"), propagatorOpposite=cms.string( "PropagatorWithMaterialParabolicMfOpposite"), MeasurementTrackerName=cms.string("hltIter1ESPMeasurementTracker"), estimator=cms.string("hltESPChi2ChargeMeasurementEstimator16"), TTRHBuilder=cms.string("hltESPTTRHBWithTrackAngle"), updator=cms.string("hltESPKFUpdator"), alwaysUseInvalidHits=cms.bool(False), intermediateCleaning=cms.bool(True), lostHitPenalty=cms.double(30.0), useSameTrajFilter=cms.bool( False) # new ! other iteration should have it set to True ) process.HLTIterativeTrackingIteration1 = cms.Sequence( process.hltIter1ClustersRefRemoval + process.hltIter1MaskedMeasurementTrackerEvent + process.hltIter1PixelLayerTriplets + process.hltIter1PFlowPixelSeeds + process.hltIter1PFlowCkfTrackCandidates + process.hltIter1PFlowCtfWithMaterialTracks + process.hltIter1PFlowTrackCutClassifierPrompt + process.hltIter1PFlowTrackCutClassifierDetached + process.hltIter1PFlowTrackCutClassifierMerged + process.hltIter1PFlowTrackSelectionHighPurity) process.hltIter2PixelLayerTriplets = cms.EDProducer( "SeedingLayersEDProducer", layerList=cms.vstring('BPix1+BPix2+BPix3', 'BPix1+BPix2+FPix1_pos', 'BPix1+BPix2+FPix1_neg', 'BPix1+FPix1_pos+FPix2_pos', 'BPix1+FPix1_neg+FPix2_neg'), MTOB=cms.PSet(), TEC=cms.PSet(), MTID=cms.PSet(), FPix=cms.PSet(HitProducer=cms.string("hltSiPixelRecHits"), hitErrorRZ=cms.double(0.0036), useErrorsFromParam=cms.bool(True), TTRHBuilder=cms.string("hltESPTTRHBuilderPixelOnly"), skipClusters=cms.InputTag("hltIter2ClustersRefRemoval"), hitErrorRPhi=cms.double(0.0051)), MTEC=cms.PSet(), MTIB=cms.PSet(), TID=cms.PSet(), TOB=cms.PSet(), BPix=cms.PSet(HitProducer=cms.string("hltSiPixelRecHits"), hitErrorRZ=cms.double(0.006), useErrorsFromParam=cms.bool(True), TTRHBuilder=cms.string("hltESPTTRHBuilderPixelOnly"), skipClusters=cms.InputTag("hltIter2ClustersRefRemoval"), hitErrorRPhi=cms.double(0.0027)), TIB=cms.PSet()) process.hltIter2PFlowPixelSeeds.OrderedHitsFactoryPSet = cms.PSet( maxElement=cms.uint32(0), ComponentName=cms.string("StandardHitTripletGenerator"), GeneratorPSet=cms.PSet( useBending=cms.bool(True), useFixedPreFiltering=cms.bool(False), maxElement=cms.uint32(100000), phiPreFiltering=cms.double(0.3), extraHitRPhitolerance=cms.double(0.032), useMultScattering=cms.bool(True), ComponentName=cms.string("PixelTripletHLTGenerator"), extraHitRZtolerance=cms.double(0.037), SeedComparitorPSet=cms.PSet(ComponentName=cms.string("none"))), SeedingLayers=cms.InputTag("hltIter2PixelLayerTriplets")) process.hltIter2PFlowPixelSeeds.SeedCreatorPSet = cms.PSet( refToPSet_=cms.string("HLTSeedFromConsecutiveHitsTripletOnlyCreator")) process.HLTIterativeTrackingIteration2 = cms.Sequence( process.hltIter2ClustersRefRemoval + process.hltIter2MaskedMeasurementTrackerEvent + process.hltIter2PixelLayerTriplets + process.hltIter2PFlowPixelSeeds + process.hltIter2PFlowCkfTrackCandidates + process.hltIter2PFlowCtfWithMaterialTracks + process.hltIter2PFlowTrackCutClassifier + process.hltIter2PFlowTrackSelectionHighPurity) for seqName in process.sequences: seq = getattr(process, seqName) from FWCore.ParameterSet.SequenceTypes import ModuleNodeVisitor l = list() v = ModuleNodeVisitor(l) seq.visit(v) if process.hltPixelTracks in l and not process.hltPixelLayerQuadruplets in l: seq.remove(process.hltPixelLayerTriplets) index = seq.index(process.hltPixelTracks) seq.insert(index, process.hltPixelLayerQuadruplets) return process