Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-03-26 01:51:06

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_cff import Run3_pp_on_PbPb
0006   process = cms.Process("SiStripApproxMonitor", Run3_pp_on_PbPb)
0007 else:
0008   from Configuration.Eras.Era_Run3_cff import Run3
0009   process = cms.Process("SiStripApproxMonitor", Run3)
0010 
0011 process.load('FWCore.MessageService.MessageLogger_cfi')
0012 process.MessageLogger.debugModules = cms.untracked.vstring('siStripDigis',
0013                                                            'siStripClusters',
0014                                                            'siStripZeroSuppression',
0015                                                            'SiStripClusterizer',
0016                                                            'siStripApproximateClusterComparator')
0017 process.MessageLogger.cout = cms.untracked.PSet(threshold = cms.untracked.string('ERROR'))
0018 
0019 live=True
0020 unitTest=False
0021 
0022 if 'unitTest=True' in sys.argv:
0023     live=False
0024     unitTest=True
0025 
0026 # uncomment for running on lxplus
0027 #live=False
0028 offlineTesting=not live
0029 #print "live: "+str(live)+" ==> offlineTesting: "+str(offlineTesting)
0030 
0031 #----------------------------
0032 # Event Source
0033 #-----------------------------
0034 # for live online DQM in P5
0035 if (unitTest):
0036   process.load("DQM.Integration.config.unitteststreamerinputsource_cfi")
0037   from DQM.Integration.config.unitteststreamerinputsource_cfi import options
0038 elif (live):
0039   process.load("DQM.Integration.config.inputsource_cfi")
0040   from DQM.Integration.config.inputsource_cfi import options
0041 # for testing in lxplus
0042 elif(offlineTesting):
0043   process.load("DQM.Integration.config.fileinputsource_cfi")
0044   from DQM.Integration.config.fileinputsource_cfi import options
0045 
0046 #----------------------------
0047 # DQM Live Environment
0048 #-----------------------------
0049 
0050 process.load("DQM.Integration.config.environment_cfi")
0051 process.DQM.filter = '^(SiStripApproximateClusters)(/[^/]+){0,5}$'
0052 
0053 process.dqmEnv.subSystemFolder    = "SiStripApproximateClusters"
0054 process.dqmSaver.tag = "SiStripApproximateClusters"
0055 process.dqmSaver.backupLumiCount = 30
0056 process.dqmSaver.runNumber = options.runNumber
0057 # process.dqmSaverPB.tag = "SiStripApproximateClusters"
0058 # process.dqmSaverPB.runNumber = options.runNumber
0059 
0060 from DQMServices.Core.DQMEDAnalyzer import DQMEDAnalyzer
0061 process.dqmEnvTr = DQMEDAnalyzer('DQMEventInfo',
0062                                  subSystemFolder = cms.untracked.string('SiStripApproximateClusters'),
0063                                  eventRateWindow = cms.untracked.double(0.5),
0064                                  eventInfoFolder = cms.untracked.string('EventInfo'))
0065 
0066 #-----------------------------
0067 # Magnetic Field
0068 #-----------------------------
0069 process.load('Configuration.StandardSequences.MagneticField_cff')
0070 
0071 #-------------------------------------------------
0072 # GEOMETRY
0073 #-------------------------------------------------
0074 process.load("Configuration.StandardSequences.GeometryRecoDB_cff")
0075 
0076 #--------------------------
0077 # Calibration
0078 #--------------------------
0079 # Condition for P5 cluster
0080 if (live):
0081     process.load("DQM.Integration.config.FrontierCondition_GT_cfi")
0082 # Condition for lxplus: change and possibly customise the GT
0083 elif(offlineTesting):
0084     process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_cff')
0085     from Configuration.AlCa.GlobalTag import GlobalTag as gtCustomise
0086     #you may need to set manually the GT in the line below
0087     process.GlobalTag = gtCustomise(process.GlobalTag, 'auto:run3_hlt', '')
0088 
0089 print("Will process with GlobalTag: %s" % process.GlobalTag.globaltag.value())
0090 
0091 #--------------------------------------------
0092 # Patch to avoid using Run Info information in reconstruction
0093 #--------------------------------------------
0094 process.siStripQualityESProducer.ListOfRecordToMerge = cms.VPSet(
0095    cms.PSet( record = cms.string("SiStripDetVOffRcd"),    tag    = cms.string("") ),
0096    cms.PSet( record = cms.string("SiStripDetCablingRcd"), tag    = cms.string("") ),
0097    cms.PSet( record = cms.string("SiStripBadChannelRcd"), tag    = cms.string("") ),
0098    cms.PSet( record = cms.string("SiStripBadFiberRcd"),   tag    = cms.string("") ),
0099    cms.PSet( record = cms.string("SiStripBadModuleRcd"),  tag    = cms.string("") )
0100    )
0101 #-------------------------------------------
0102 
0103 #-----------------------
0104 #  Reconstruction Modules
0105 #-----------------------
0106 ## Collision Reconstruction
0107 process.load("Configuration.StandardSequences.RawToDigi_Data_cff")
0108 process.load("Configuration.StandardSequences.Reconstruction_cff")
0109 
0110 import RecoVertex.BeamSpotProducer.BeamSpotOnline_cfi
0111 process.offlineBeamSpot = RecoVertex.BeamSpotProducer.BeamSpotOnline_cfi.onlineBeamSpotProducer.clone()
0112 
0113 #
0114 # Strip FED check
0115 #
0116 rawDataCollectorLabel = 'rawDataCollector'
0117 
0118 #--------------------------
0119 # Service
0120 #--------------------------
0121 process.AdaptorConfig = cms.Service("AdaptorConfig")
0122 
0123 # Simple filter for event
0124 process.eventFilter = cms.EDFilter("SimpleEventFilter",
0125 #                   EventsToSkip = cms.untracked.int32(3)
0126                    EventsToSkip = cms.untracked.int32(100)
0127 )
0128 
0129 #--------------------------
0130 # Producers
0131 #--------------------------
0132 # Event History Producer
0133 process.load("DPGAnalysis.SiStripTools.eventwithhistoryproducerfroml1abc_cfi")
0134 
0135 # APV Phase Producer
0136 process.load("DPGAnalysis.SiStripTools.apvcyclephaseproducerfroml1tsDB_cfi")
0137 
0138 #--------------------------
0139 # Filters
0140 #--------------------------
0141 # HLT Filter
0142 # 0=random, 1=physics, 2=calibration, 3=technical
0143 process.hltTriggerTypeFilter = cms.EDFilter("HLTTriggerTypeFilter",
0144     SelectedTriggerType = cms.int32(1)
0145 )
0146 
0147 # L1 Trigger Bit Selection (bit 40 and 41 for BSC trigger)
0148 process.load('L1TriggerConfig.L1GtConfigProducers.L1GtTriggerMaskTechTrigConfig_cff')
0149 process.load('HLTrigger/HLTfilters/hltLevel1GTSeed_cfi')
0150 process.hltLevel1GTSeed.L1TechTriggerSeeding = True
0151 process.hltLevel1GTSeed.L1SeedsLogicalExpression = 'NOT (36 OR 37 OR 38 OR 39)'
0152 
0153 # HLT trigger selection (HLT_ZeroBias)
0154 # modified for 0 Tesla HLT menu (no ZeroBias_*)
0155 process.load('HLTrigger.HLTfilters.hltHighLevel_cfi')
0156 if (process.runType.getRunType() == process.runType.hi_run):
0157     #--------------------------
0158     # HI Runs HLT path
0159     #--------------------------
0160     process.hltHighLevel.HLTPaths = ['HLT_ZeroBias_*' , 'HLT_HIZeroBias*' , 'HLT_ZeroBias1_*' , 'HLT_PAZeroBias_*' , 'HLT_PAZeroBias1_*', 'HLT_PAL1MinimumBiasHF_OR_SinglePixelTrack_*' , 'HLT_HICentralityVeto*','HLT_HIMinimumBias*', 'HLT_HIPhysics*']
0161 else:
0162     process.hltHighLevel.HLTPaths = ['HLT_ZeroBias_*' , 'HLT_ZeroBias1_*' , 'HLT_PAZeroBias_*' , 'HLT_PAZeroBias1_*', 'HLT_PAL1MinimumBiasHF_OR_SinglePixelTrack_*']
0163 process.hltHighLevel.andOr = True
0164 process.hltHighLevel.throw = False
0165 
0166 if (process.runType.getRunType() == process.runType.hi_run):
0167     process.RecoForDQM_LocalReco     = cms.Sequence(process.siPixelDigis*process.siStripDigis*process.trackerlocalreco)
0168 else :
0169     process.RecoForDQM_LocalReco     = cms.Sequence(process.siPixelDigis*process.siStripDigis*process.gtDigis*process.trackerlocalreco)
0170 
0171 process.DQMCommon = cms.Sequence(process.dqmEnv*process.dqmEnvTr*process.dqmSaver)#*process.dqmSaverPB)
0172 
0173 print("Running with run type = ", process.runType.getRunTypeName())
0174 
0175 ### HEAVY ION SETTING
0176 if process.runType.getRunType() == process.runType.hi_run:
0177     rawDataRepackerLabel = 'rawDataRepacker'
0178     process.castorDigis.InputLabel = rawDataRepackerLabel
0179     process.csctfDigis.producer = rawDataRepackerLabel
0180     process.dttfDigis.DTTF_FED_Source = rawDataRepackerLabel
0181     process.ecalDigisCPU.InputLabel = rawDataRepackerLabel
0182     process.ecalPreshowerDigis.sourceTag = rawDataRepackerLabel
0183     process.gctDigis.inputLabel = rawDataRepackerLabel
0184     process.hcalDigis.InputLabel = rawDataRepackerLabel
0185     process.muonCSCDigis.InputObjects = rawDataRepackerLabel
0186     process.muonDTDigis.inputLabel = rawDataRepackerLabel
0187     process.muonRPCDigis.InputLabel = rawDataRepackerLabel
0188     process.scalersRawToDigi.scalersInputTag = rawDataRepackerLabel
0189     process.siPixelDigis.InputLabel = rawDataRepackerLabel
0190     process.siStripDigis.ProductLabel = rawDataRepackerLabel
0191     process.tcdsDigis.InputLabel = rawDataRepackerLabel
0192 
0193     if ((process.runType.getRunType() == process.runType.hi_run) and live):
0194         process.source.SelectEvents = [
0195 #            'HLT_HICentralityVeto*', # present in 2018 and 2022 HIon menus
0196             'HLT_HIMinimumBias*',     # replaced HLT_HICentralityVeto starting from the 2023 HIon menu
0197 #            'HLT_HIZeroBias*',       # present in DQM stream of HIon menu, but not used in this client
0198             'HLT_HIPhysics*'
0199         ]
0200 
0201     process.load('RecoTracker.IterativeTracking.InitialStepPreSplitting_cff')
0202     process.InitialStepPreSplittingTask.remove(process.initialStepTrackRefsForJetsPreSplitting)
0203     process.InitialStepPreSplittingTask.remove(process.caloTowerForTrkPreSplitting)
0204     process.InitialStepPreSplittingTask.remove(process.ak4CaloJetsForTrkPreSplitting)
0205     process.InitialStepPreSplittingTask.remove(process.jetsForCoreTrackingPreSplitting)
0206     process.InitialStepPreSplittingTask.remove(process.siPixelClusters)
0207     process.InitialStepPreSplittingTask.remove(process.siPixelRecHits)
0208     process.InitialStepPreSplittingTask.remove(process.MeasurementTrackerEvent)
0209 
0210     # Redefinition of siPixelClusters: has to be after RecoTracker.IterativeTracking.InitialStepPreSplitting_cff
0211     from RecoLocalTracker.SiPixelClusterizer.SiPixelClusterizer_cfi import siPixelClusters as _siPixelClusters
0212     process.siPixelClusters = _siPixelClusters.clone()
0213 
0214     # Select events based on the pixel cluster multiplicity
0215     import  HLTrigger.special.hltPixelActivityFilter_cfi
0216     process.multFilter = HLTrigger.special.hltPixelActivityFilter_cfi.hltPixelActivityFilter.clone(
0217         inputTag = 'siPixelClusters',
0218         minClusters = 1,
0219         maxClusters = 50000
0220     )
0221 
0222     from RecoTracker.TkSeedingLayers.PixelLayerTriplets_cfi import *
0223     process.PixelLayerTriplets.BPix.HitProducer = 'siPixelRecHitsPreSplitting'
0224     process.PixelLayerTriplets.FPix.HitProducer = 'siPixelRecHitsPreSplitting'
0225     from RecoTracker.PixelTrackFitting.PixelTracks_cff import *
0226     process.pixelTracksHitTriplets.SeedComparitorPSet.clusterShapeCacheSrc = 'siPixelClusterShapeCachePreSplitting'
0227 
0228     process.RecoForDQM_TrkReco = cms.Sequence(
0229         process.offlineBeamSpot
0230       * process.MeasurementTrackerEventPreSplitting
0231       * process.siPixelClusterShapeCachePreSplitting
0232       * process.recopixelvertexing
0233       * process.InitialStepPreSplitting
0234     )
0235 
0236     # append the approximate clusters monitoring for the HI run case
0237     from DQM.SiStripMonitorApproximateCluster.SiStripMonitorApproximateCluster_cfi import SiStripMonitorApproximateCluster
0238     process.siStripApproximateClusterComparator = SiStripMonitorApproximateCluster.clone(
0239         compareClusters = True,
0240         ClustersProducer = "siStripClusters"
0241     )
0242 
0243     process.p = cms.Path(
0244         process.scalersRawToDigi*
0245         process.tcdsDigis*
0246         process.onlineMetaDataDigis*
0247         process.APVPhases*
0248         process.consecutiveHEs*
0249         process.hltTriggerTypeFilter*
0250         process.RecoForDQM_LocalReco*
0251         process.siPixelClusters*
0252         process.DQMCommon*
0253         process.multFilter*
0254         ##### TRIGGER SELECTION #####
0255         process.hltHighLevel*
0256         process.RecoForDQM_TrkReco*
0257         process.siStripApproximateClusterComparator
0258     )
0259 
0260 ### process customizations included here
0261 from DQM.Integration.config.online_customizations_cfi import *
0262 process = customise(process)
0263 print("Global Tag used:", process.GlobalTag.globaltag.value())
0264 print("Final Source settings:", process.source)