Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-01-18 03:42:17

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 = cms.EDProducer(
0028         "SiStripClusterizerFromRaw",
0029         ProductLabel = cms.InputTag( "rawDataCollector" ),
0030         ConditionsLabel = cms.string( "" ),
0031         onDemand = cms.bool( True ),
0032         DoAPVEmulatorCheck = cms.bool( False ),
0033         LegacyUnpacker = cms.bool( False ),
0034         HybridZeroSuppressed = cms.bool( False ),
0035         Clusterizer = cms.PSet( 
0036             ConditionsLabel = cms.string( "" ),
0037             MaxClusterSize = cms.uint32( 32 ), 
0038             ClusterThreshold = cms.double( 5.0 ),
0039             SeedThreshold = cms.double( 3.0 ),
0040             Algorithm = cms.string( "ThreeThresholdAlgorithm" ),
0041             ChannelThreshold = cms.double( 2.0 ),
0042             MaxAdjacentBad = cms.uint32( 0 ),
0043             setDetId = cms.bool( True ),
0044             MaxSequentialHoles = cms.uint32( 0 ),
0045             RemoveApvShots = cms.bool( True ),
0046             clusterChargeCut = cms.PSet(  refToPSet_ = cms.string( "HLTSiStripClusterChargeCutNone" ) ),
0047             MaxSequentialBad = cms.uint32( 1 )
0048         ),
0049         Algorithms = cms.PSet( 
0050             Use10bitsTruncation = cms.bool( False ),
0051             CommonModeNoiseSubtractionMode = cms.string( "Median" ),
0052             useCMMeanMap = cms.bool( False ),
0053             TruncateInSuppressor = cms.bool( True ),
0054             doAPVRestore = cms.bool( False ),
0055             SiStripFedZeroSuppressionMode = cms.uint32( 4 ),
0056             PedestalSubtractionFedMode = cms.bool( True )
0057         )
0058     )
0059     process.hltSiStripRawToClustersFacility.onDemand = False
0060     process.hltSiStripRawToClustersFacility.Clusterizer.MaxClusterSize = 8
0061 
0062     process.hltSiStripRecHits = SiStripRecHitConverter_cfi.siStripMatchedRecHits.clone(
0063         ClusterProducer = "hltSiStripRawToClustersFacility",
0064         StripCPE = "hltESPStripCPEfromTrackAngle:hltESPStripCPEfromTrackAngle",
0065         doMatching = False,
0066     )
0067 
0068     # Use fourth hit if one is available
0069     process.hltIter0PFLowPixelSeedsFromPixelTracks.includeFourthHit = cms.bool(True)
0070 
0071     process.load("RecoTracker.MkFit.mkFitGeometryESProducer_cfi")
0072 
0073     process.hltIter0PFlowCkfTrackCandidatesMkFitSiPixelHits = mkFitSiPixelHitConverter_cfi.mkFitSiPixelHitConverter.clone(
0074         hits = "hltSiPixelRecHits",
0075         clusters = "hltSiPixelClusters",
0076         ttrhBuilder = ":hltESPTTRHBWithTrackAngle",
0077     )
0078     process.hltIter0PFlowCkfTrackCandidatesMkFitSiStripHits = mkFitSiStripHitConverter_cfi.mkFitSiStripHitConverter.clone(
0079         rphiHits = "hltSiStripRecHits:rphiRecHit",
0080         stereoHits = "hltSiStripRecHits:stereoRecHit",
0081         clusters = "hltSiStripRawToClustersFacility",
0082         ttrhBuilder = ":hltESPTTRHBWithTrackAngle",
0083         minGoodStripCharge = dict(refToPSet_ = 'HLTSiStripClusterChargeCutLoose'),
0084     )
0085     process.hltIter0PFlowCkfTrackCandidatesMkFitEventOfHits = mkFitEventOfHitsProducer_cfi.mkFitEventOfHitsProducer.clone(
0086         beamSpot  = "hltOnlineBeamSpot",
0087         pixelHits = "hltIter0PFlowCkfTrackCandidatesMkFitSiPixelHits",
0088         stripHits = "hltIter0PFlowCkfTrackCandidatesMkFitSiStripHits",
0089     )
0090     process.hltIter0PFlowCkfTrackCandidatesMkFitSeeds = mkFitSeedConverter_cfi.mkFitSeedConverter.clone(
0091         seeds = "hltIter0PFLowPixelSeedsFromPixelTracks",
0092         ttrhBuilder = ":hltESPTTRHBWithTrackAngle",
0093     )
0094     process.hltIter0PFlowTrackCandidatesMkFitConfig = mkFitIterationConfigESProducer_cfi.mkFitIterationConfigESProducer.clone(
0095         ComponentName = 'hltIter0PFlowTrackCandidatesMkFitConfig',
0096         config = 'RecoTracker/MkFit/data/mkfit-phase1-initialStep.json',
0097     )
0098     process.hltIter0PFlowCkfTrackCandidatesMkFit = mkFitProducer_cfi.mkFitProducer.clone(
0099         pixelHits = "hltIter0PFlowCkfTrackCandidatesMkFitSiPixelHits",
0100         stripHits = "hltIter0PFlowCkfTrackCandidatesMkFitSiStripHits",
0101         eventOfHits = "hltIter0PFlowCkfTrackCandidatesMkFitEventOfHits",
0102         seeds = "hltIter0PFlowCkfTrackCandidatesMkFitSeeds",
0103         config = ('', 'hltIter0PFlowTrackCandidatesMkFitConfig'),
0104         minGoodStripCharge = dict(refToPSet_ = 'HLTSiStripClusterChargeCutNone'),
0105     )
0106     process.hltIter0PFlowCkfTrackCandidates = mkFitOutputConverter_cfi.mkFitOutputConverter.clone(
0107         seeds = "hltIter0PFLowPixelSeedsFromPixelTracks",
0108         mkFitEventOfHits = "hltIter0PFlowCkfTrackCandidatesMkFitEventOfHits",
0109         mkFitPixelHits = "hltIter0PFlowCkfTrackCandidatesMkFitSiPixelHits",
0110         mkFitStripHits = "hltIter0PFlowCkfTrackCandidatesMkFitSiStripHits",
0111         mkFitSeeds = "hltIter0PFlowCkfTrackCandidatesMkFitSeeds",
0112         tracks = "hltIter0PFlowCkfTrackCandidatesMkFit",
0113         ttrhBuilder = ":hltESPTTRHBWithTrackAngle",
0114         propagatorAlong = ":PropagatorWithMaterialParabolicMf",
0115         propagatorOpposite = ":PropagatorWithMaterialParabolicMfOpposite",
0116     )
0117 
0118     process.HLTDoLocalStripSequence += process.hltSiStripRecHits
0119 
0120     replaceWith = (process.hltIter0PFlowCkfTrackCandidatesMkFitSiPixelHits +
0121                    process.hltIter0PFlowCkfTrackCandidatesMkFitSiStripHits +
0122                    process.hltIter0PFlowCkfTrackCandidatesMkFitEventOfHits +
0123                    process.hltIter0PFlowCkfTrackCandidatesMkFitSeeds +
0124                    process.hltIter0PFlowCkfTrackCandidatesMkFit +
0125                    process.hltIter0PFlowCkfTrackCandidates)
0126 
0127     process.HLTIterativeTrackingIteration0.replace(process.hltIter0PFlowCkfTrackCandidates, replaceWith)
0128 
0129     for path in process.paths_().values():
0130       if not path.contains(process.HLTIterativeTrackingIteration0) and path.contains(process.hltIter0PFlowCkfTrackCandidates):
0131         path.replace(process.hltIter0PFlowCkfTrackCandidates, replaceWith)
0132 
0133     process.hltIter0PFlowTrackCandidatesMkFitConfig.config = 'RecoTracker/MkFit/data/mkfit-phase1-hltiter0.json'
0134 
0135     process.hltIter0PFlowTrackCutClassifier.mva.maxChi2 = cms.vdouble( 999.0, 25.0, 99.0 )
0136 
0137     process.hltIter0PFlowTrackCutClassifier.mva.maxChi2n = cms.vdouble( 1.2, 1.0, 999.0 )
0138 
0139     process.hltIter0PFlowTrackCutClassifier.mva.dr_par = cms.PSet( 
0140         d0err = cms.vdouble( 0.003, 0.003, 0.003 ),
0141         dr_par1 = cms.vdouble( 3.40282346639E38, 0.6, 0.6 ),
0142         dr_par2 = cms.vdouble( 3.40282346639E38, 0.45, 0.45 ),
0143         dr_exp = cms.vint32( 4, 4, 4 ),
0144         d0err_par = cms.vdouble( 0.001, 0.001, 0.001 )
0145     )
0146     process.hltIter0PFlowTrackCutClassifier.mva.dz_par = cms.PSet( 
0147         dz_par1 = cms.vdouble( 3.40282346639E38, 0.6, 0.6 ),
0148         dz_par2 = cms.vdouble( 3.40282346639E38, 0.51, 0.51 ),
0149         dz_exp = cms.vint32( 4, 4, 4 )
0150     )
0151 
0152     if hasattr(process, 'hltIter0PFlowTrackCutClassifierSerialSync'):
0153         process.hltIter0PFlowTrackCutClassifierSerialSync.mva.maxChi2 = cms.vdouble( 999.0, 25.0, 99.0 )
0154         process.hltIter0PFlowTrackCutClassifierSerialSync.mva.maxChi2n = cms.vdouble( 1.2, 1.0, 999.0 )
0155         process.hltIter0PFlowTrackCutClassifierSerialSync.mva.dr_par = cms.PSet( 
0156             d0err = cms.vdouble( 0.003, 0.003, 0.003 ),
0157             dr_par1 = cms.vdouble( 3.40282346639E38, 0.6, 0.6 ),
0158             dr_par2 = cms.vdouble( 3.40282346639E38, 0.45, 0.45 ),
0159             dr_exp = cms.vint32( 4, 4, 4 ),
0160             d0err_par = cms.vdouble( 0.001, 0.001, 0.001 )
0161         )
0162         process.hltIter0PFlowTrackCutClassifierSerialSync.mva.dz_par = cms.PSet( 
0163             dz_par1 = cms.vdouble( 3.40282346639E38, 0.6, 0.6 ),
0164             dz_par2 = cms.vdouble( 3.40282346639E38, 0.51, 0.51 ),
0165             dz_exp = cms.vint32( 4, 4, 4 )
0166         )
0167 
0168     return process
0169 
0170 def customizeHLTSiStripClusterizerOnDemandFalse(process):
0171 
0172     # if any of the following objects does not exist, do not apply any customisation
0173     for objLabel in [
0174         'hltSiStripRawToClustersFacility',
0175     ]:
0176         if not hasattr(process, objLabel):
0177             print(f'# WARNING: customize command failed (object with label "{objLabel}" not found) - no customisation applied !')
0178             return process
0179 
0180     # mkFit needs all clusters, so switch off the on-demand mode
0181     process.hltSiStripRawToClustersFacility.onDemand = False
0182     return process
0183 
0184 def customizeHLTSiStripClusterizerOnDemandFalseMaxClusterSize8(process):
0185 
0186     for objLabel in [
0187         'hltSiStripRawToClustersFacility',
0188     ]:
0189         if not hasattr(process, objLabel):
0190             print(f'# WARNING: customize command failed (object with label "{objLabel}" not found) - no customisation applied !')
0191             return process
0192 
0193     process.hltSiStripRawToClustersFacility = cms.EDProducer(
0194         "SiStripClusterizerFromRaw",
0195         ProductLabel = cms.InputTag( "rawDataCollector" ),
0196         ConditionsLabel = cms.string( "" ),
0197         onDemand = cms.bool( True ),
0198         DoAPVEmulatorCheck = cms.bool( False ),
0199         LegacyUnpacker = cms.bool( False ),
0200         HybridZeroSuppressed = cms.bool( False ),
0201         Clusterizer = cms.PSet( 
0202             ConditionsLabel = cms.string( "" ),
0203             MaxClusterSize = cms.uint32( 32 ), 
0204             ClusterThreshold = cms.double( 5.0 ),
0205             SeedThreshold = cms.double( 3.0 ),
0206             Algorithm = cms.string( "ThreeThresholdAlgorithm" ),
0207             ChannelThreshold = cms.double( 2.0 ),
0208             MaxAdjacentBad = cms.uint32( 0 ),
0209             setDetId = cms.bool( True ),
0210             MaxSequentialHoles = cms.uint32( 0 ),
0211             RemoveApvShots = cms.bool( True ),
0212             clusterChargeCut = cms.PSet(  refToPSet_ = cms.string( "HLTSiStripClusterChargeCutNone" ) ),
0213             MaxSequentialBad = cms.uint32( 1 )
0214         ),
0215         Algorithms = cms.PSet( 
0216             Use10bitsTruncation = cms.bool( False ),
0217             CommonModeNoiseSubtractionMode = cms.string( "Median" ),
0218             useCMMeanMap = cms.bool( False ),
0219             TruncateInSuppressor = cms.bool( True ),
0220             doAPVRestore = cms.bool( False ),
0221             SiStripFedZeroSuppressionMode = cms.uint32( 4 ),
0222             PedestalSubtractionFedMode = cms.bool( True )
0223         )
0224     )
0225     process.hltSiStripRawToClustersFacility.onDemand = False
0226     process.hltSiStripRawToClustersFacility.Clusterizer.MaxClusterSize = 8
0227 
0228     return process
0229 
0230 def modifyMinOutputModuleForTrackingValidation(process, filename="output.root"):
0231 
0232     for objLabel in [
0233         'hltOutputMinimal',
0234     ]:
0235         if not hasattr(process, objLabel):
0236             print(f'# WARNING: customize command failed (object with label "{objLabel}" not found) - no customisation applied !')
0237             return process
0238 
0239     process.hltOutputMinimal.outputCommands = cms.untracked.vstring(
0240         'drop *',
0241         'keep edmTriggerResults_*_*_*',
0242         'keep triggerTriggerEvent_*_*_*',
0243         'keep GlobalAlgBlkBXVector_*_*_*',
0244         'keep GlobalExtBlkBXVector_*_*_*',
0245         'keep l1tEGammaBXVector_*_EGamma_*',
0246         'keep l1tEtSumBXVector_*_EtSum_*',
0247         'keep l1tJetBXVector_*_Jet_*',
0248         'keep l1tMuonBXVector_*_Muon_*',
0249         'keep l1tTauBXVector_*_Tau_*',
0250         'keep *_*_*_HLTX',
0251         'drop *_hltHbherecoLegacy_*_*',
0252         'drop *_hlt*Pixel*SoA*_*_*',
0253         'keep recoGenParticles_genParticles_*_*',
0254         'keep TrackingParticles_*_*_*',
0255         'keep *_*_MergedTrackTruth_*',
0256         'keep *_simSiPixelDigis_*_*',
0257         'keep *_simSiStripDigis_*_*',
0258         'keep PSimHits_g4SimHits_*_*',
0259         'keep SimTracks_g4SimHits_*_*',
0260         'keep SimVertexs_g4SimHits_*_*',
0261         'keep PileupSummaryInfos_addPileupInfo_*_*',
0262     )
0263     process.hltOutputMinimal.fileName = filename
0264     process.schedule.remove( process.DQMOutput )
0265     return process