Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-04-14 23:40:55

0001 import FWCore.ParameterSet.Config as cms
0002 
0003 import sys
0004 if 'runkey=hi_run' in sys.argv:
0005   from Configuration.Eras.Era_Run3_pp_on_PbPb_approxSiStripClusters_cff import Run3_pp_on_PbPb_approxSiStripClusters
0006   process = cms.Process("SiStripMonitor", Run3_pp_on_PbPb_approxSiStripClusters)
0007 else:
0008   from Configuration.Eras.Era_Run3_2025_cff import Run3_2025
0009   process = cms.Process("SiStripMonitor", Run3_2025)
0010 
0011 process.load('FWCore.MessageService.MessageLogger_cfi')
0012 process.MessageLogger.debugModules = cms.untracked.vstring('siStripDigis',
0013                                                            'siStripClusters',
0014                                                            'siStripZeroSuppression',
0015                                                            'SiStripClusterizer')
0016 process.MessageLogger.cout = cms.untracked.PSet(threshold = cms.untracked.string('ERROR'))
0017 
0018 live=True
0019 unitTest=False
0020 
0021 if 'unitTest=True' in sys.argv:
0022     live=False
0023     unitTest=True
0024 
0025 # uncomment for running on lxplus
0026 #live=False
0027 offlineTesting=not live
0028 #print "live: "+str(live)+" ==> offlineTesting: "+str(offlineTesting)
0029 
0030 #----------------------------
0031 # Event Source
0032 #-----------------------------
0033 # for live online DQM in P5
0034 if (unitTest):
0035     process.load("DQM.Integration.config.unittestinputsource_cfi")
0036     from DQM.Integration.config.unittestinputsource_cfi import options
0037 elif (live):
0038     process.load("DQM.Integration.config.inputsource_cfi")
0039     from DQM.Integration.config.inputsource_cfi import options
0040 # for testing in lxplus
0041 elif(offlineTesting):
0042     process.load("DQM.Integration.config.fileinputsource_cfi")
0043     from DQM.Integration.config.fileinputsource_cfi import options
0044 
0045 #----------------------------
0046 # DQM Live Environment
0047 #-----------------------------
0048 #from DQM.Integration.config.environment_cfi import HEAVYION
0049 
0050 #process.runType.setRunType('cosmic_run')
0051 #process.runType.setRunType('pp_run')
0052 
0053 process.load("DQM.Integration.config.environment_cfi")
0054 process.DQM.filter = '^(SiStrip|Tracking)(/[^/]+){0,5}$'
0055 
0056 process.dqmEnv.subSystemFolder    = "SiStrip"
0057 process.dqmSaver.tag = "SiStrip"
0058 process.dqmSaver.backupLumiCount = 30
0059 process.dqmSaver.runNumber = options.runNumber
0060 # process.dqmSaverPB.tag = "SiStrip"
0061 # process.dqmSaverPB.runNumber = options.runNumber
0062 
0063 from DQMServices.Core.DQMEDAnalyzer import DQMEDAnalyzer
0064 process.dqmEnvTr = DQMEDAnalyzer('DQMEventInfo',
0065                  subSystemFolder = cms.untracked.string('Tracking'),
0066                  eventRateWindow = cms.untracked.double(0.5),
0067                  eventInfoFolder = cms.untracked.string('EventInfo')
0068 )
0069 
0070 
0071 #-----------------------------
0072 # Magnetic Field
0073 #-----------------------------
0074 process.load('Configuration.StandardSequences.MagneticField_cff')
0075 
0076 #-------------------------------------------------
0077 # GEOMETRY
0078 #-------------------------------------------------
0079 process.load("Configuration.StandardSequences.GeometryRecoDB_cff")
0080 
0081 #--------------------------
0082 # Calibration
0083 #--------------------------
0084 # Condition for P5 cluster
0085 if (live):
0086     process.load("DQM.Integration.config.FrontierCondition_GT_cfi")
0087 # Condition for lxplus: change and possibly customise the GT
0088 elif(offlineTesting):
0089     process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_cff')
0090     from Configuration.AlCa.GlobalTag import GlobalTag as gtCustomise
0091     #you may need to set manually the GT in the line below
0092     process.GlobalTag = gtCustomise(process.GlobalTag, 'auto:hltonline', '')
0093 
0094 #--------------------------------------------
0095 ## Patch to avoid using Run Info information in reconstruction
0096 #
0097 
0098 process.siStripQualityESProducer.ListOfRecordToMerge = cms.VPSet(
0099    cms.PSet( record = cms.string("SiStripDetVOffRcd"),    tag    = cms.string("") ),
0100    cms.PSet( record = cms.string("SiStripDetCablingRcd"), tag    = cms.string("") ),
0101    cms.PSet( record = cms.string("SiStripBadChannelRcd"), tag    = cms.string("") ),
0102    cms.PSet( record = cms.string("SiStripBadFiberRcd"),   tag    = cms.string("") ),
0103    cms.PSet( record = cms.string("SiStripBadModuleRcd"),  tag    = cms.string("") )
0104    )
0105 #-------------------------------------------
0106 
0107 #-----------------------
0108 #  Reconstruction Modules
0109 #-----------------------
0110 ## Collision Reconstruction
0111 process.load("Configuration.StandardSequences.RawToDigi_Data_cff")
0112 
0113 ## Cosmic Track Reconstruction
0114 if (process.runType.getRunType() == process.runType.cosmic_run or process.runType.getRunType() == process.runType.cosmic_run_stage1):
0115     process.load("RecoTracker.Configuration.RecoTrackerP5_cff")
0116     process.load("Configuration.StandardSequences.ReconstructionCosmics_cff")
0117 else:
0118     process.load("Configuration.StandardSequences.Reconstruction_cff")
0119 
0120 import RecoVertex.BeamSpotProducer.BeamSpotOnline_cfi
0121 process.offlineBeamSpot = RecoVertex.BeamSpotProducer.BeamSpotOnline_cfi.onlineBeamSpotProducer.clone()
0122 
0123 #
0124 # Strip FED check
0125 #
0126 rawDataCollectorLabel = 'rawDataCollector'
0127 
0128 process.load("DQM.SiStripMonitorHardware.siStripFEDCheck_cfi")
0129 process.siStripFEDCheck.RawDataTag = rawDataCollectorLabel
0130 process.siStripFEDCheck.DirName    = 'SiStrip/FEDIntegrity_SM/'
0131 process.siStripFEDCheck.doPLOTfedsPresent       = False # already produced by fedtest
0132 process.siStripFEDCheck.doPLOTfedFatalErrors    = False # already produced by fedtest
0133 process.siStripFEDCheck.doPLOTfedNonFatalErrors = False # already produced by fedtest
0134 process.siStripFEDCheck.doPLOTnFEDinVsLS        = True
0135 process.siStripFEDCheck.doPLOTnFEDinWdataVsLS   = True
0136 
0137 #------------------------------
0138 # Strip and Tracking DQM Source
0139 #------------------------------
0140 process.load("DQM.SiStripMonitorClient.SiStripSourceConfigP5_cff")
0141 process.load("DQM.TrackingMonitorSource.TrackingSourceConfigP5_cff")
0142 process.TrackMon_gentk.doLumiAnalysis = False
0143 process.TrackMon_ckf.doLumiAnalysis = False
0144 process.TrackMon_hi.doLumiAnalysis = False
0145 process.TrackMon_ckf.AlgoName = 'CKFTk'
0146 
0147 #--------------------------
0148 # Quality Test
0149 #--------------------------
0150 from DQMServices.Core.DQMQualityTester import DQMQualityTester
0151 process.stripQTester = DQMQualityTester(
0152     qtList = cms.untracked.FileInPath('DQM/SiStripMonitorClient/data/sistrip_qualitytest_config.xml'),
0153     prescaleFactor = cms.untracked.int32(3),
0154     getQualityTestsFromFile = cms.untracked.bool(True),
0155     qtestOnEndLumi = cms.untracked.bool(True),
0156     qtestOnEndRun = cms.untracked.bool(True)
0157 )
0158 
0159 process.trackingQTester = DQMQualityTester(
0160     qtList = cms.untracked.FileInPath('DQM/TrackingMonitorClient/data/tracking_qualitytest_config.xml'),
0161     prescaleFactor = cms.untracked.int32(3),
0162     getQualityTestsFromFile = cms.untracked.bool(True),
0163     qtestOnEndLumi = cms.untracked.bool(True),
0164     qtestOnEndRun = cms.untracked.bool(True)
0165 )
0166 
0167 
0168 #--------------------------
0169 # Service
0170 #--------------------------
0171 process.AdaptorConfig = cms.Service("AdaptorConfig")
0172 
0173 # Simple filter for event
0174 process.eventFilter = cms.EDFilter("SimpleEventFilter",
0175 #                   EventsToSkip = cms.untracked.int32(3)
0176                    EventsToSkip = cms.untracked.int32(100)
0177 )
0178 
0179 #--------------------------
0180 # Producers
0181 #--------------------------
0182 # Event History Producer
0183 process.load("DPGAnalysis.SiStripTools.eventwithhistoryproducerfroml1abc_cfi")
0184 
0185 # APV Phase Producer
0186 process.load("DPGAnalysis.SiStripTools.apvcyclephaseproducerfroml1tsDB_cfi")
0187 
0188 #--------------------------
0189 # Filters
0190 #--------------------------
0191 # HLT Filter
0192 # 0=random, 1=physics, 2=calibration, 3=technical
0193 process.hltTriggerTypeFilter = cms.EDFilter("HLTTriggerTypeFilter",
0194     SelectedTriggerType = cms.int32(1)
0195 )
0196 
0197 # L1 Trigger Bit Selection (bit 40 and 41 for BSC trigger)
0198 process.load('L1TriggerConfig.L1GtConfigProducers.L1GtTriggerMaskTechTrigConfig_cff')
0199 process.load('HLTrigger/HLTfilters/hltLevel1GTSeed_cfi')
0200 process.hltLevel1GTSeed.L1TechTriggerSeeding = True
0201 process.hltLevel1GTSeed.L1SeedsLogicalExpression = 'NOT (36 OR 37 OR 38 OR 39)'
0202 
0203 # HLT trigger selection (HLT_ZeroBias)
0204 # modified for 0 Tesla HLT menu (no ZeroBias_*)
0205 process.load('HLTrigger.HLTfilters.hltHighLevel_cfi')
0206 if (process.runType.getRunType() == process.runType.hi_run):
0207     #--------------------------
0208     # HI Runs HLT path
0209     #--------------------------
0210     process.hltHighLevel.HLTPaths = ['HLT_ZeroBias_*' , 'HLT_HIZeroBias*' , 'HLT_ZeroBias1_*' , 'HLT_PAZeroBias_*' , 'HLT_PAZeroBias1_*', 'HLT_PAL1MinimumBiasHF_OR_SinglePixelTrack_*' , 'HLT_HICentralityVeto*','HLT_HIMinimumBias*', 'HLT_HIPhysics*']
0211 else:
0212     process.hltHighLevel.HLTPaths = ['HLT_ZeroBias_*' , 'HLT_ZeroBias1_*' , 'HLT_PAZeroBias_*' , 'HLT_PAZeroBias1_*', 'HLT_PAL1MinimumBiasHF_OR_SinglePixelTrack_*']
0213 process.hltHighLevel.andOr = True
0214 process.hltHighLevel.throw =  False
0215 
0216 #--------------------------
0217 # Scheduling
0218 #--------------------------
0219 process.SiStripSources_LocalReco = cms.Sequence(process.siStripFEDMonitor*process.SiStripMonitorDigi*process.SiStripMonitorClusterReal)
0220 if (process.runType.getRunType() == process.runType.commissioning_run):
0221     process.DQMCommon                = cms.Sequence(process.dqmEnv*process.dqmEnvTr*process.dqmSaver)#*process.dqmSaverPB)
0222 else:
0223     process.DQMCommon                = cms.Sequence(process.stripQTester*process.trackingQTester*process.dqmEnv*process.dqmEnvTr*process.dqmSaver)#*process.dqmSaverPB)
0224 if (process.runType.getRunType() == process.runType.hi_run):
0225     process.RecoForDQM_LocalReco     = cms.Sequence(process.siPixelDigis*process.siStripDigis*process.trackerlocalreco)
0226 else :
0227     process.RecoForDQM_LocalReco     = cms.Sequence(process.siPixelDigis*process.siStripDigis*process.gtDigis*process.trackerlocalreco)
0228 
0229     from Configuration.Eras.Modifier_stage2L1Trigger_cff import stage2L1Trigger
0230     # Replace gtDigis with gtStage2Digis when stage2L1Trigger is active
0231     stage2L1Trigger.toReplaceWith(
0232       process.RecoForDQM_LocalReco,
0233       cms.Sequence(process.siPixelDigis * process.siStripDigis * process.gtStage2Digis * process.trackerlocalreco)
0234     )
0235 #------------------------------------------------------
0236 # Switch for channel errors per FED ID trend plots.
0237 #------------------------------------------------------
0238 process.siStripFEDMonitor.fedErrorsVsIdVsLumiHistogramConfig.globalswitchon = True
0239 
0240 #--------------------------
0241 # Global Plot Switches
0242 #--------------------------
0243 process.SiStripMonitorDigi.TotalNumberOfDigisFailure.subdetswitchon = False
0244 
0245 ### COSMIC RUN SETTING
0246 if (process.runType.getRunType() == process.runType.cosmic_run or process.runType.getRunType() == process.runType.cosmic_run_stage1):
0247     # event selection for cosmic data
0248     if ((process.runType.getRunType() == process.runType.cosmic_run) and live): process.source.SelectEvents = ['HLT*SingleMu*','HLT_L1*']
0249     # Reference run for cosmic
0250     # Source config for cosmic data
0251     process.SiStripSources_TrkReco_cosmic = cms.Sequence(process.SiStripMonitorTrack_ckf*process.TrackMon_ckf)
0252     # Client config for cosmic data
0253     ### STRIP
0254     process.load("DQM.SiStripMonitorClient.SiStripClientConfigP5_Cosmic_cff")
0255     process.SiStripAnalyserCosmic.RawDataTag = rawDataCollectorLabel
0256     process.SiStripAnalyserCosmic.TkMapCreationFrequency  = -1
0257     process.SiStripAnalyserCosmic.ShiftReportFrequency = -1
0258     process.SiStripAnalyserCosmic.StaticUpdateFrequency = 5
0259     process.SiStripAnalyserCosmic.MonitorSiStrip_PSet.MonitorSiStripBackPlaneCorrection = False
0260     process.SiStripClients           = cms.Sequence(process.SiStripAnalyserCosmic)
0261     ### TRACKING
0262     process.load("DQM.TrackingMonitorClient.TrackingClientConfigP5_Cosmic_cff")
0263     process.TrackingAnalyserCosmic.RawDataTag           = rawDataCollectorLabel
0264     process.TrackingAnalyserCosmic.ShiftReportFrequency = -1
0265     process.TrackingAnalyserCosmic.StaticUpdateFrequency = 5
0266     process.TrackingClient = cms.Sequence( process.TrackingAnalyserCosmic )
0267 
0268     # Reco for cosmic data
0269     process.load('RecoTracker.SpecialSeedGenerators.SimpleCosmicBONSeeder_cfi')
0270     process.simpleCosmicBONSeeds.ClusterCheckPSet.MaxNumberOfStripClusters = 450
0271     process.combinatorialcosmicseedfinderP5.MaxNumberOfStripClusters = 450
0272 
0273     process.RecoForDQM_TrkReco_cosmic = cms.Sequence(process.offlineBeamSpot*process.MeasurementTrackerEvent*process.ctftracksP5)
0274 
0275     process.stripQTester.qtList = cms.untracked.FileInPath('DQM/SiStripMonitorClient/data/sistrip_qualitytest_config_cosmic.xml')
0276     process.stripQTester.prescaleFactor          = 2
0277     process.stripQTester.getQualityTestsFromFile = True
0278     process.stripQTester.qtestOnEndLumi          = True
0279     process.stripQTester.qtestOnEndRun           = True
0280 
0281     process.trackingQTester.qtList                  = 'DQM/TrackingMonitorClient/data/tracking_qualitytest_config_cosmic.xml'
0282     process.trackingQTester.prescaleFactor          = 1
0283     process.trackingQTester.getQualityTestsFromFile = True
0284     process.trackingQTester.qtestOnEndLumi          = True
0285     process.trackingQTester.qtestOnEndRun           = True
0286 
0287     process.p = cms.Path(process.scalersRawToDigi*
0288                          process.tcdsDigis*
0289                          process.onlineMetaDataDigis*
0290                          process.APVPhases*
0291                          process.consecutiveHEs*
0292                          process.hltTriggerTypeFilter*
0293                          process.siStripFEDCheck *
0294                          process.RecoForDQM_LocalReco*
0295                          process.DQMCommon*
0296                          process.SiStripClients*
0297                          process.SiStripSources_LocalReco*
0298                          process.RecoForDQM_TrkReco_cosmic*
0299                          process.SiStripSources_TrkReco_cosmic*
0300                          process.TrackingClient
0301                          )
0302 
0303 
0304 ### COMMISSIONING RUN SETTINGS
0305 if (process.runType.getRunType() == process.runType.commissioning_run):
0306     #event selection for commissioning runs
0307     if ((process.runType.getRunType() == process.runType.commissioning_run) and live):
0308         process.source.SelectEvents = ['HLT_*']
0309 
0310     process.SiStripFedMonitor = cms.Sequence(process.siStripFEDMonitor)
0311     process.p = cms.Path(
0312         process.siStripFEDCheck *
0313         process.SiStripFedMonitor *
0314         process.DQMCommon
0315     )
0316 
0317 #else :
0318 ### pp COLLISION SETTING
0319 if (process.runType.getRunType() == process.runType.pp_run or process.runType.getRunType() == process.runType.pp_run_stage1):
0320     #event selection for pp collisions
0321     if ((process.runType.getRunType() == process.runType.pp_run) and live):
0322         process.source.SelectEvents = [
0323             'HLT_L1*',
0324             'HLT_Jet*',
0325             'HLT_Physics*',
0326             'HLT_ZeroBias*',
0327             'HLT_PAL1*',
0328             'HLT_PAZeroBias*',
0329             'HLT_PAAK*'
0330             ]
0331 
0332     # Source and Client config for pp collisions
0333 
0334     process.SiStripMonitorDigi.UseDCSFiltering = False
0335     process.SiStripMonitorClusterReal.UseDCSFiltering = False
0336 
0337     process.MonitorTrackResiduals_gentk.Tracks                 = 'initialStepTracksPreSplitting'
0338     process.MonitorTrackResiduals_gentk.trajectoryInput        = 'initialStepTracksPreSplitting'
0339     process.TrackMon_gentk.TrackProducer    = 'initialStepTracksPreSplitting'
0340     process.TrackMon_gentk.allTrackProducer = 'initialStepTracksPreSplitting'
0341     process.SiStripMonitorTrack_gentk.TrackProducer = 'initialStepTracksPreSplitting'
0342 
0343     process.SiStripSources_TrkReco   = cms.Sequence(process.SiStripMonitorTrack_gentk*process.MonitorTrackResiduals_gentk*process.TrackMon_gentk)
0344 
0345     ### STRIP
0346     process.load("DQM.SiStripMonitorClient.SiStripClientConfigP5_cff")
0347     process.SiStripAnalyser.TkMapCreationFrequency  = -1
0348     process.SiStripAnalyser.ShiftReportFrequency = -1
0349     process.SiStripAnalyser.StaticUpdateFrequency = 5
0350     process.SiStripAnalyser.RawDataTag = rawDataCollectorLabel
0351     process.SiStripAnalyser.MonitorSiStrip_PSet.MonitorSiStripBackPlaneCorrection = False
0352     process.SiStripClients           = cms.Sequence(process.SiStripAnalyser)
0353 
0354     process.SiStripMonitorDigi.TotalNumberOfDigisFailure.integrateNLumisections = 25
0355     ### TRACKING
0356     process.load("DQM.TrackingMonitorClient.TrackingClientConfigP5_cff")
0357     process.TrackingAnalyser.ShiftReportFrequency = -1
0358     process.TrackingAnalyser.StaticUpdateFrequency = 5
0359     process.TrackingAnalyser.RawDataTag = rawDataCollectorLabel
0360     if offlineTesting :
0361         process.TrackingAnalyser.verbose = True
0362     process.TrackingClient = cms.Sequence( process.TrackingAnalyser )
0363 
0364     process.trackingQTester.qtList                  = 'DQM/TrackingMonitorClient/data/tracking_qualitytest_config.xml'
0365     process.trackingQTester.prescaleFactor          = 1
0366     process.trackingQTester.getQualityTestsFromFile = True
0367     process.trackingQTester.qtestOnEndLumi          = True
0368     process.trackingQTester.qtestOnEndRun           = True
0369 
0370     # Reco for pp collisions
0371 
0372     process.load('RecoTracker.IterativeTracking.InitialStepPreSplitting_cff')
0373     '''process.InitialStepPreSplitting.remove(process.initialStepTrackRefsForJetsPreSplitting)
0374     process.InitialStepPreSplitting.remove(process.caloTowerForTrkPreSplitting)
0375     process.InitialStepPreSplitting.remove(process.ak4CaloJetsForTrkPreSplitting)
0376     process.InitialStepPreSplitting.remove(process.jetsForCoreTrackingPreSplitting)
0377     process.InitialStepPreSplitting.remove(process.siPixelClusters)
0378     process.InitialStepPreSplitting.remove(process.siPixelRecHits)
0379     process.InitialStepPreSplitting.remove(process.MeasurementTrackerEvent)
0380     process.InitialStepPreSplitting.remove(process.siPixelClusterShapeCache)'''
0381 
0382     process.InitialStepPreSplittingTask.remove(process.initialStepTrackRefsForJetsPreSplitting)
0383     process.InitialStepPreSplittingTask.remove(process.caloTowerForTrkPreSplitting)
0384     process.InitialStepPreSplittingTask.remove(process.ak4CaloJetsForTrkPreSplitting)
0385     process.InitialStepPreSplittingTask.remove(process.jetsForCoreTrackingPreSplitting)
0386     process.InitialStepPreSplittingTask.remove(process.siPixelClusters)
0387     process.InitialStepPreSplittingTask.remove(process.siPixelRecHits)
0388     process.InitialStepPreSplittingTask.remove(process.MeasurementTrackerEvent)
0389 
0390     # Redefinition of siPixelClusters: has to be after RecoTracker.IterativeTracking.InitialStepPreSplitting_cff
0391     from RecoLocalTracker.SiPixelClusterizer.SiPixelClusterizer_cfi import siPixelClusters as _siPixelClusters
0392     process.siPixelClusters = _siPixelClusters.clone()
0393 
0394     from RecoTracker.TkSeedingLayers.PixelLayerTriplets_cfi import *
0395     process.PixelLayerTriplets.BPix.HitProducer = cms.string('siPixelRecHitsPreSplitting')
0396     process.PixelLayerTriplets.FPix.HitProducer = cms.string('siPixelRecHitsPreSplitting')
0397     from RecoTracker.PixelTrackFitting.PixelTracks_cff import *
0398     process.pixelTracksHitTriplets.SeedComparitorPSet.clusterShapeCacheSrc = 'siPixelClusterShapeCachePreSplitting'
0399 
0400     process.RecoForDQM_TrkReco = cms.Sequence(process.offlineBeamSpot*process.MeasurementTrackerEventPreSplitting*process.siPixelClusterShapeCachePreSplitting*process.recopixelvertexing*process.InitialStepPreSplitting)
0401 
0402     process.p = cms.Path(
0403         process.scalersRawToDigi*
0404         process.tcdsDigis*
0405         process.onlineMetaDataDigis*
0406         process.APVPhases*
0407         process.consecutiveHEs*
0408         process.hltTriggerTypeFilter*
0409         process.siStripFEDCheck *
0410         process.RecoForDQM_LocalReco*
0411         process.siPixelClusters*
0412         process.DQMCommon*
0413         process.SiStripClients*
0414         process.SiStripSources_LocalReco*
0415         ##### TRIGGER SELECTION #####
0416         process.hltHighLevel*
0417         process.RecoForDQM_TrkReco*
0418         process.SiStripSources_TrkReco*
0419         process.TrackingClient
0420         )
0421 
0422 #--------------------------------------------------
0423 # For high PU run - no tracking in cmssw42x
0424 #--------------------------------------------------
0425 if (process.runType.getRunType() == process.runType.hpu_run):
0426 
0427     # Simple filter for event
0428     # 2012.07.09 highPU fill should have /cdaq/special/HighPUFill/July2012/HLT/V6 as trigger table
0429     # where HLT_ZeroBias in the DQM stream has ~50Hz
0430     # the expected reconstruction time should be ~ several seconds
0431     # => PRESCALE = 50
0432     # but try firstly w/ 30, maybe it is enough
0433     process.eventFilter.EventsToSkip = 30
0434 
0435     # change the HLT trigger path selection
0436     # it should already be ok, but the name could be changed
0437     process.hltHighLevel.HLTPaths = ['HLT_ZeroBias*'] 
0438 
0439  #        process.DQMEventStreamerReader.SelectEvents = cms.untracked.PSet(SelectEvents = cms.vstring('HLT_600Tower*','HLT_L1*','HLT_Jet*','HLT_HT*','HLT_MinBias_*','HLT_Physics*', 'HLT_ZeroBias*'))
0440 #
0441 
0442     process.SiStripMonitorDigi.UseDCSFiltering = False
0443     process.SiStripMonitorClusterReal.UseDCSFiltering = False
0444 
0445     process.MonitorTrackResiduals_gentk.Tracks                 = 'earlyGeneralTracks'
0446     process.MonitorTrackResiduals_gentk.trajectoryInput        = 'earlyGeneralTracks'
0447     process.TrackMon_gentk.TrackProducer          = "earlyGeneralTracks"
0448     process.TrackMon_gentk.allTrackProducer = "earlyGeneralTracks"
0449     process.SiStripMonitorTrack_gentk.TrackProducer    = 'earlyGeneralTracks'
0450 
0451     process.SiStripSources_TrkReco   = cms.Sequence(process.SiStripMonitorTrack_gentk*process.MonitorTrackResiduals_gentk*process.TrackMon_gentk)
0452     process.load("DQM.SiStripMonitorClient.SiStripClientConfigP5_cff")
0453     process.SiStripAnalyser.TkMapCreationFrequency  = -1
0454     process.SiStripAnalyser.ShiftReportFrequency = -1
0455     process.SiStripAnalyser.StaticUpdateFrequency = 5
0456     process.SiStripAnalyser.RawDataTag = rawDataCollectorLabel
0457     process.SiStripAnalyser.MonitorSiStrip_PSet.MonitorSiStripBackPlaneCorrection = False
0458     process.SiStripClients           = cms.Sequence(process.SiStripAnalyser)
0459     ### TRACKING
0460     process.load("DQM.TrackingMonitorClient.TrackingClientConfigP5_cff")
0461     process.TrackingAnalyser.ShiftReportFrequency = -1
0462     process.TrackingAnalyser.StaticUpdateFrequency = 5
0463     process.TrackingAnalyser.RawDataTag = cms.untracked.InputTag(rawDataCollectorLabel)
0464     process.TrackingClient = cms.Sequence( process.TrackingAnalyser )
0465 
0466     # Reco for pp collisions
0467 
0468     process.load('RecoTracker.Configuration.RecoTracker_cff')
0469 
0470     #process.newCombinedSeeds.seedCollections = cms.VInputTag(
0471     #    cms.InputTag('initialStepSeeds'),
0472     #    )
0473 
0474     process.load('RecoTracker.FinalTrackSelectors.MergeTrackCollections_cff')
0475     import RecoTracker.FinalTrackSelectors.earlyGeneralTracks_cfi
0476     process.load('RecoTracker.FinalTrackSelectors.earlyGeneralTracks_cfi')
0477     process.earlyGeneralTracks.TrackProducers = cms.VInputTag(cms.InputTag('initialStepTracks'))
0478     process.earlyGeneralTracks.hasSelector=cms.vint32(1)
0479     process.earlyGeneralTracks.selectedTrackQuals = cms.VInputTag(
0480 #        cms.InputTag("initialStepSelector","initialStep"),
0481         cms.InputTag("initialStep"),
0482         )
0483     process.earlyGeneralTracks.setsToMerge = cms.VPSet( cms.PSet( tLists=cms.vint32(0), pQual=cms.bool(True) ) )
0484 
0485     process.load("RecoTracker.IterativeTracking.iterativeTk_cff")
0486 
0487     process.iterTracking_FirstStep =cms.Sequence(
0488         process.InitialStep
0489         *process.earlyGeneralTracks
0490         )
0491 
0492     process.RecoForDQM_TrkReco       = cms.Sequence(process.offlineBeamSpot*process.MeasurementTrackerEvent*process.siPixelClusterShapeCache*process.recopixelvertexing*process.iterTracking_FirstStep)
0493 
0494     process.p = cms.Path(process.scalersRawToDigi*
0495                          process.tcdsDigis*
0496                          process.onlineMetaDataDigis*
0497                          process.APVPhases*
0498                          process.consecutiveHEs*
0499                          process.hltTriggerTypeFilter*
0500                          process.siStripFEDCheck *
0501                          process.RecoForDQM_LocalReco*
0502                          process.DQMCommon*
0503                          process.SiStripClients*
0504                          process.SiStripSources_LocalReco*
0505                          process.hltHighLevel*
0506                          process.eventFilter*
0507                          process.RecoForDQM_TrkReco*
0508                          process.SiStripSources_TrkReco*
0509                          process.TrackingClient
0510                          )
0511 
0512 process.castorDigis.InputLabel = rawDataCollectorLabel
0513 process.csctfDigis.producer = rawDataCollectorLabel
0514 process.dttfDigis.DTTF_FED_Source = rawDataCollectorLabel
0515 process.ecalDigisCPU.InputLabel = rawDataCollectorLabel
0516 process.ecalPreshowerDigis.sourceTag = rawDataCollectorLabel
0517 process.gctDigis.inputLabel = rawDataCollectorLabel
0518 process.gtDigis.DaqGtInputTag = rawDataCollectorLabel
0519 process.gtStage2Digis.InputLabel = rawDataCollectorLabel
0520 process.hcalDigis.InputLabel = rawDataCollectorLabel
0521 process.muonCSCDigis.InputObjects = rawDataCollectorLabel
0522 process.muonDTDigis.inputLabel = rawDataCollectorLabel
0523 process.muonRPCDigis.InputLabel = rawDataCollectorLabel
0524 process.scalersRawToDigi.scalersInputTag = rawDataCollectorLabel
0525 process.siPixelDigis.InputLabel = rawDataCollectorLabel
0526 process.siStripDigis.ProductLabel = rawDataCollectorLabel
0527 process.siStripFEDMonitor.RawDataTag = rawDataCollectorLabel
0528 #--------------------------------------------------
0529 # Heavy Ion Specific Fed Raw Data Collection Label
0530 #--------------------------------------------------
0531 
0532 print("Running with run type = ", process.runType.getRunType())
0533 
0534 ### HEAVY ION SETTING
0535 if process.runType.getRunType() == process.runType.hi_run:
0536     rawDataRepackerLabel = 'rawDataRepacker'
0537     process.castorDigis.InputLabel = rawDataRepackerLabel
0538     process.csctfDigis.producer = rawDataRepackerLabel
0539     process.dttfDigis.DTTF_FED_Source = rawDataRepackerLabel
0540     process.ecalDigisCPU.InputLabel = rawDataRepackerLabel
0541     process.ecalPreshowerDigis.sourceTag = rawDataRepackerLabel
0542     process.gctDigis.inputLabel = rawDataRepackerLabel
0543     process.hcalDigis.InputLabel = rawDataRepackerLabel
0544     process.muonCSCDigis.InputObjects = rawDataRepackerLabel
0545     process.muonDTDigis.inputLabel = rawDataRepackerLabel
0546     process.muonRPCDigis.InputLabel = rawDataRepackerLabel
0547     process.scalersRawToDigi.scalersInputTag = rawDataRepackerLabel
0548     process.siPixelDigis.InputLabel = rawDataRepackerLabel
0549     process.siStripDigis.ProductLabel = rawDataRepackerLabel
0550     process.siStripFEDMonitor.RawDataTag = rawDataRepackerLabel
0551     process.tcdsDigis.InputLabel = rawDataRepackerLabel
0552 
0553     if ((process.runType.getRunType() == process.runType.hi_run) and live):
0554         process.source.SelectEvents = [
0555 #            'HLT_HICentralityVeto*', # present in 2018 and 2022 HIon menus
0556             'HLT_HIMinimumBias*',     # replaced HLT_HICentralityVeto starting from the 2023 HIon menu
0557 #            'HLT_HIZeroBias*',       # present in DQM stream of HIon menu, but not used in this client
0558             'HLT_HIPhysics*'
0559         ]
0560 
0561     process.SiStripMonitorDigi.UseDCSFiltering = False
0562     process.SiStripMonitorClusterReal.UseDCSFiltering = False
0563 
0564     process.MonitorTrackResiduals_gentk.Tracks          = 'initialStepTracksPreSplitting'
0565     process.MonitorTrackResiduals_gentk.trajectoryInput = 'initialStepTracksPreSplitting'
0566     process.TrackMon_gentk.TrackProducer                = 'initialStepTracksPreSplitting'
0567     process.TrackMon_gentk.allTrackProducer             = 'initialStepTracksPreSplitting'
0568     process.SiStripMonitorTrack_gentk.TrackProducer     = 'initialStepTracksPreSplitting'
0569 
0570     process.SiStripSources_TrkReco = cms.Sequence(
0571         process.SiStripMonitorTrack_gentk
0572       * process.MonitorTrackResiduals_gentk
0573       * process.TrackMon_gentk
0574     )
0575 
0576     ### STRIP
0577     process.load("DQM.SiStripMonitorClient.SiStripClientConfigP5_cff")
0578     process.SiStripAnalyser.TkMapCreationFrequency  = -1
0579     process.SiStripAnalyser.ShiftReportFrequency = -1
0580     process.SiStripAnalyser.StaticUpdateFrequency = 5
0581     process.SiStripAnalyser.RawDataTag = rawDataRepackerLabel
0582     process.SiStripAnalyser.MonitorSiStrip_PSet.MonitorSiStripBackPlaneCorrection = False
0583     process.SiStripClients           = cms.Sequence(process.SiStripAnalyser)
0584 
0585     process.SiStripMonitorDigi.TotalNumberOfDigisFailure.integrateNLumisections = 25
0586     ### TRACKING
0587     process.load("DQM.TrackingMonitorClient.TrackingClientConfigP5_cff")
0588     process.TrackingAnalyser.ShiftReportFrequency = -1
0589     process.TrackingAnalyser.StaticUpdateFrequency = 5
0590     process.TrackingAnalyser.RawDataTag = rawDataRepackerLabel
0591     if offlineTesting:
0592         process.TrackingAnalyser.verbose = True
0593     process.TrackingClient = cms.Sequence( process.TrackingAnalyser )
0594 
0595     process.stripQTester.qtList = 'DQM/SiStripMonitorClient/data/sistrip_qualitytest_config_heavyion.xml'
0596     process.stripQTester.prescaleFactor          = 2
0597     process.stripQTester.getQualityTestsFromFile = True
0598     process.stripQTester.qtestOnEndLumi          = True
0599     process.stripQTester.qtestOnEndRun           = True
0600 
0601     process.trackingQTester.qtList                  = 'DQM/TrackingMonitorClient/data/tracking_qualitytest_config_heavyion.xml'
0602     process.trackingQTester.prescaleFactor          = 1
0603     process.trackingQTester.getQualityTestsFromFile = True
0604     process.trackingQTester.qtestOnEndLumi          = True
0605     process.trackingQTester.qtestOnEndRun           = True
0606 
0607     # Reco for pp collisions
0608 
0609     process.load('RecoTracker.IterativeTracking.InitialStepPreSplitting_cff')
0610 #    process.InitialStepPreSplitting.remove(process.initialStepTrackRefsForJetsPreSplitting)
0611 #    process.InitialStepPreSplitting.remove(process.caloTowerForTrkPreSplitting)
0612 #    process.InitialStepPreSplitting.remove(process.ak4CaloJetsForTrkPreSplitting)
0613 #    process.InitialStepPreSplitting.remove(process.jetsForCoreTrackingPreSplitting)
0614 #    process.InitialStepPreSplitting.remove(process.siPixelClusters)
0615 #    process.InitialStepPreSplitting.remove(process.siPixelRecHits)
0616 #    process.InitialStepPreSplitting.remove(process.MeasurementTrackerEvent)
0617 #    process.InitialStepPreSplitting.remove(process.siPixelClusterShapeCache)
0618 
0619     process.InitialStepPreSplittingTask.remove(process.initialStepTrackRefsForJetsPreSplitting)
0620     process.InitialStepPreSplittingTask.remove(process.caloTowerForTrkPreSplitting)
0621     process.InitialStepPreSplittingTask.remove(process.ak4CaloJetsForTrkPreSplitting)
0622     process.InitialStepPreSplittingTask.remove(process.jetsForCoreTrackingPreSplitting)
0623     process.InitialStepPreSplittingTask.remove(process.siPixelClusters)
0624     process.InitialStepPreSplittingTask.remove(process.siPixelRecHits)
0625     process.InitialStepPreSplittingTask.remove(process.MeasurementTrackerEvent)
0626 
0627     # Redefinition of siPixelClusters: has to be after RecoTracker.IterativeTracking.InitialStepPreSplitting_cff
0628     from RecoLocalTracker.SiPixelClusterizer.SiPixelClusterizer_cfi import siPixelClusters as _siPixelClusters
0629     process.siPixelClusters = _siPixelClusters.clone()
0630 
0631     # Select events based on the pixel cluster multiplicity
0632     import  HLTrigger.special.hltPixelActivityFilter_cfi
0633     process.multFilter = HLTrigger.special.hltPixelActivityFilter_cfi.hltPixelActivityFilter.clone(
0634         inputTag = 'siPixelClusters',
0635         minClusters = 1,
0636         maxClusters = 50000
0637     )
0638 
0639     # BaselineValidator Module
0640     from EventFilter.SiStripRawToDigi.SiStripDigis_cfi import siStripDigis as _siStripDigis
0641     process.siStripDigisNoZS = _siStripDigis.clone( ProductLabel = rawDataCollectorLabel )
0642     process.SiStripBaselineValidator.srcProcessedRawDigi = 'siStripDigisNoZS:ZeroSuppressed'
0643 
0644     from RecoTracker.TkSeedingLayers.PixelLayerTriplets_cfi import *
0645     process.PixelLayerTriplets.BPix.HitProducer = 'siPixelRecHitsPreSplitting'
0646     process.PixelLayerTriplets.FPix.HitProducer = 'siPixelRecHitsPreSplitting'
0647     from RecoTracker.PixelTrackFitting.PixelTracks_cff import *
0648     process.pixelTracksHitTriplets.SeedComparitorPSet.clusterShapeCacheSrc = 'siPixelClusterShapeCachePreSplitting'
0649 
0650     process.RecoForDQM_TrkReco = cms.Sequence(
0651         process.offlineBeamSpot
0652       * process.MeasurementTrackerEventPreSplitting
0653       * process.siPixelClusterShapeCachePreSplitting
0654       * process.recopixelvertexing
0655       * process.InitialStepPreSplitting
0656     )
0657 
0658     process.p = cms.Path(
0659         process.scalersRawToDigi*
0660         process.tcdsDigis*
0661         process.onlineMetaDataDigis*
0662         process.APVPhases*
0663         process.consecutiveHEs*
0664         process.hltTriggerTypeFilter*
0665         process.siStripFEDCheck *
0666         process.siStripDigisNoZS*
0667         process.SiStripBaselineValidator*
0668         process.RecoForDQM_LocalReco*
0669         process.siPixelClusters*
0670         process.DQMCommon*
0671         process.SiStripClients*
0672         process.SiStripSources_LocalReco*
0673         process.multFilter*
0674         ##### TRIGGER SELECTION #####
0675         process.hltHighLevel*
0676         process.RecoForDQM_TrkReco*
0677         process.SiStripSources_TrkReco*
0678         process.TrackingClient
0679     )
0680 
0681     # append the approximate clusters monitoring for the HI run case
0682     from DQM.SiStripMonitorApproximateCluster.SiStripMonitorApproximateCluster_cfi import SiStripMonitorApproximateCluster
0683     process.siStripApproximateClusterComparator = SiStripMonitorApproximateCluster.clone(
0684         folder = "SiStrip/ApproximateClusterValidation",
0685         compareClusters = True,
0686         ClustersProducer = "hltSiStripClusterizerForRawPrime"
0687     )
0688     process.p.insert(process.p.index(process.TrackingClient)+1,process.siStripApproximateClusterComparator)
0689 
0690 ### process customizations included here
0691 from DQM.Integration.config.online_customizations_cfi import *
0692 process = customise(process)
0693 print("Global Tag used:", process.GlobalTag.globaltag.value())
0694 print("Final Source settings:", process.source)