Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-04-29 02:41:07

0001 import FWCore.ParameterSet.Config as cms
0002 
0003 # Define once the BeamSpotOnline record name,
0004 # will be used both in BeamMonitor setup and in payload creation/upload
0005 BSOnlineRecordName = 'BeamSpotOnlineHLTObjectsRcd'
0006 BSOnlineTag = 'BeamSpotOnlineHLT'
0007 BSOnlineJobName = 'BeamSpotOnlineHLT'
0008 BSOnlineOmsServiceUrl = 'http://cmsoms-eventing.cms:9949/urn:xdaq-application:lid=100/getRunAndLumiSection'
0009 useLockRecords = True
0010 
0011 import sys
0012 if 'runkey=hi_run' in sys.argv:
0013   from Configuration.Eras.Era_Run3_pp_on_PbPb_approxSiStripClusters_cff import Run3_pp_on_PbPb_approxSiStripClusters
0014   process = cms.Process("BeamMonitorHLT", Run3_pp_on_PbPb_approxSiStripClusters)
0015 else:
0016   from Configuration.Eras.Era_Run3_2025_cff import Run3_2025
0017   process = cms.Process("BeamMonitorHLT", Run3_2025)
0018 
0019 
0020 # Message logger
0021 #process.load("FWCore.MessageLogger.MessageLogger_cfi")
0022 #process.MessageLogger = cms.Service("MessageLogger",
0023 #    debugModules = cms.untracked.vstring('*'),
0024 #    cerr = cms.untracked.PSet(
0025 #        FwkReport = cms.untracked.PSet(
0026 #            optionalPSet = cms.untracked.bool(True),
0027 #            reportEvery = cms.untracked.int32(1000),
0028 #            limit = cms.untracked.int32(999999)
0029 #        )
0030 #    ),
0031 #    destinations = cms.untracked.vstring('cerr'),
0032 #)
0033 
0034 # switch
0035 live = True # FIXME
0036 unitTest = False
0037 
0038 if 'unitTest=True' in sys.argv:
0039   live=False
0040   unitTest=True
0041   useLockRecords = False
0042 
0043 # Common part for PP and H.I Running
0044 #-----------------------------
0045 if unitTest:
0046   process.load("DQM.Integration.config.unitteststreamerinputsource_cfi")
0047   from DQM.Integration.config.unitteststreamerinputsource_cfi import options
0048   # stream label
0049   if process.runType.getRunType() == process.runType.hi_run:
0050     process.source.streamLabel = 'streamHIDQMOnlineBeamspot'
0051   else:
0052     process.source.streamLabel = 'streamDQMOnlineBeamspot'
0053 
0054 elif live:
0055   # for live online DQM in P5
0056   process.load("DQM.Integration.config.inputsource_cfi")
0057   from DQM.Integration.config.inputsource_cfi import options
0058   # stream label
0059   if process.runType.getRunType() == process.runType.hi_run:
0060     process.source.streamLabel = 'streamHIDQMOnlineBeamspot'
0061   else:
0062     process.source.streamLabel = 'streamDQMOnlineBeamspot'
0063 
0064 else:
0065   process.load("DQM.Integration.config.fileinputsource_cfi")
0066   from DQM.Integration.config.fileinputsource_cfi import options
0067 
0068 # for testing in lxplus
0069 #process.load("DQM.Integration.config.fileinputsource_cfi")
0070 #from DQM.Integration.config.fileinputsource_cfi import options
0071 
0072 #--------------------------
0073 # HLT Filter
0074 # 0=random, 1=physics, 2=calibration, 3=technical
0075 #--------------------------
0076 process.hltTriggerTypeFilter = cms.EDFilter("HLTTriggerTypeFilter",
0077     SelectedTriggerType = cms.int32(1)
0078 )
0079 
0080 #-----------------------------
0081 # DQM Live Environment
0082 #-----------------------------
0083 process.load("DQM.Integration.config.environment_cfi")
0084 process.dqmEnv.subSystemFolder = 'BeamMonitorHLT'
0085 process.dqmSaver.tag           = 'BeamMonitorHLT'
0086 process.dqmSaver.runNumber     = options.runNumber
0087 # process.dqmSaverPB.tag         = 'BeamMonitorHLT'
0088 # process.dqmSaverPB.runNumber   = options.runNumber
0089 
0090 # Configure tag and jobName if running Playback system
0091 if process.isDqmPlayback.value :
0092   BSOnlineTag = BSOnlineTag + 'Playback'
0093   BSOnlineJobName = BSOnlineJobName + 'Playback'
0094   BSOnlineOmsServiceUrl = ''
0095   useLockRecords = False
0096 
0097 #-----------------------------
0098 # BeamMonitor
0099 #-----------------------------
0100 process.load("DQM.BeamMonitor.BeamMonitor_cff")
0101 
0102 #---------------
0103 # Calibration
0104 #---------------
0105 # Condition for P5 cluster
0106 process.load("DQM.Integration.config.FrontierCondition_GT_cfi")
0107 process.GlobalTag.DBParameters.authenticationPath = cms.untracked.string('.')
0108 # Condition for lxplus: change and possibly customise the GT
0109 #from Configuration.AlCa.GlobalTag import GlobalTag as gtCustomise
0110 #process.GlobalTag = gtCustomise(process.GlobalTag, 'auto:run3_data', '')
0111 
0112 # Change Beam Monitor variables
0113 process.dqmBeamMonitor.useLockRecords = cms.untracked.bool(useLockRecords)
0114 if process.dqmRunConfig.type.value() == "production":
0115   process.dqmBeamMonitor.BeamFitter.WriteAscii = True
0116   process.dqmBeamMonitor.BeamFitter.AsciiFileName = '/nfshome0/yumiceva/BeamMonitorDQM/BeamFitResults.txt'
0117   process.dqmBeamMonitor.BeamFitter.WriteDIPAscii = True
0118   process.dqmBeamMonitor.BeamFitter.DIPFileName = '/nfshome0/dqmpro/BeamMonitorDQM/BeamFitResults.txt'
0119 else:
0120   process.dqmBeamMonitor.BeamFitter.WriteAscii = False
0121   process.dqmBeamMonitor.BeamFitter.AsciiFileName = '/nfshome0/yumiceva/BeamMonitorDQM/BeamFitResults.txt'
0122   process.dqmBeamMonitor.BeamFitter.WriteDIPAscii = True
0123   process.dqmBeamMonitor.BeamFitter.DIPFileName = '/nfshome0/dqmdev/BeamMonitorDQM/BeamFitResults.txt'
0124 
0125 process.dqmcommon = cms.Sequence(process.dqmEnv
0126                                * process.dqmSaver)#*process.dqmSaverPB)
0127 
0128 process.monitor = cms.Sequence(process.dqmBeamMonitor)
0129 
0130 #-----------------------------------------------------------
0131 # process customizations included here
0132 from DQM.Integration.config.online_customizations_cfi import *
0133 process = customise(process)
0134 
0135 # Digitisation: produce the TCDS digis containing BST record
0136 from EventFilter.OnlineMetaDataRawToDigi.tcdsRawToDigi_cfi import *
0137 process.tcdsDigis = tcdsRawToDigi.clone()
0138 
0139 # Import raw to digi modules
0140 process.load("Configuration.StandardSequences.RawToDigi_Data_cff")
0141 
0142 # Set InputTags from selected TCDS FEDs (1024, 1025) and OnlineMetaData FED (1022)
0143 # NOTE: these collections MUST be added to streamDQMOnlineBeamspot for all HLT menus (both pp and HI)
0144 rawDataInputTag        = "hltFEDSelectorTCDS"
0145 onlineMetaDataInputTag = "hltFEDSelectorOnlineMetaData"
0146 
0147 process.onlineMetaDataDigis.onlineMetaDataInputLabel = onlineMetaDataInputTag
0148 process.scalersRawToDigi.scalersInputTag             = rawDataInputTag
0149 process.tcdsDigis.InputLabel                         = rawDataInputTag
0150 
0151 #-----------------------------------------------------------
0152 # Swap offline <-> online BeamSpot as in Express and HLT
0153 import RecoVertex.BeamSpotProducer.onlineBeamSpotESProducer_cfi as _mod
0154 process.BeamSpotESProducer = _mod.onlineBeamSpotESProducer.clone()
0155 
0156 import RecoVertex.BeamSpotProducer.BeamSpotOnline_cfi
0157 process.offlineBeamSpot = RecoVertex.BeamSpotProducer.BeamSpotOnline_cfi.onlineBeamSpotProducer.clone()
0158 
0159 #--------
0160 # Do no run on events with pixel or strip with HV off
0161 
0162 process.stripTrackerHVOn = cms.EDFilter( "DetectorStateFilter",
0163     DCSRecordLabel = cms.untracked.InputTag( "onlineMetaDataDigis" ),
0164     DcsStatusLabel = cms.untracked.InputTag( "scalersRawToDigi" ),
0165     DebugOn = cms.untracked.bool( False ),
0166     DetectorType = cms.untracked.string( "sistrip" )
0167 )
0168 
0169 process.pixelTrackerHVOn = cms.EDFilter( "DetectorStateFilter",
0170     DCSRecordLabel = cms.untracked.InputTag( "onlineMetaDataDigis" ),
0171     DcsStatusLabel = cms.untracked.InputTag( "scalersRawToDigi" ),
0172     DebugOn = cms.untracked.bool( False ),
0173     DetectorType = cms.untracked.string( "pixel" )
0174 )
0175 
0176 #--------------------------
0177 # Proton-Proton Stuff
0178 #--------------------------
0179 
0180 if (process.runType.getRunType() == process.runType.pp_run or
0181     process.runType.getRunType() == process.runType.pp_run_stage1 or
0182     process.runType.getRunType() == process.runType.hpu_run or
0183     process.runType.getRunType() == process.runType.hi_run or
0184     process.runType.getRunType() == process.runType.commissioning_run):
0185 
0186     print("[beamhlt_dqm_sourceclient-live_cfg]:: Running pp")
0187 
0188     process.load("RecoVertex.BeamSpotProducer.BeamSpot_cfi")
0189 
0190     process.dqmBeamMonitor.monitorName = 'BeamMonitorHLT'
0191 
0192     process.dqmBeamMonitor.OnlineMode = True              
0193     process.dqmBeamMonitor.recordName = BSOnlineRecordName
0194 
0195     process.dqmBeamMonitor.resetEveryNLumi   = 5
0196     process.dqmBeamMonitor.resetPVEveryNLumi = 5
0197 
0198     process.dqmBeamMonitor.PVFitter.minNrVerticesForFit = 20
0199     process.dqmBeamMonitor.PVFitter.minVertexNdf        = 10
0200   
0201     # some inputs to BeamMonitor
0202     if(process.runType.getRunType() == process.runType.hi_run):
0203       process.dqmBeamMonitor.BeamFitter.TrackCollection = 'hltPFMuonMergingPPOnAA'
0204       process.dqmBeamMonitor.primaryVertex              = 'hltVerticesPFFilterPPOnAA'
0205       process.dqmBeamMonitor.PVFitter.VertexCollection  = 'hltVerticesPFFilterPPOnAA'
0206     else:
0207       process.dqmBeamMonitor.BeamFitter.TrackCollection = 'hltPFMuonMerging'
0208       process.dqmBeamMonitor.primaryVertex              = 'hltVerticesPFFilter'
0209       process.dqmBeamMonitor.PVFitter.VertexCollection  = 'hltVerticesPFFilter'
0210 
0211     # keep checking this with new release expected close to 1
0212     process.dqmBeamMonitor.PVFitter.errorScale = 0.95
0213 
0214     #TriggerName for selecting pv for DIP publication, NO wildcard needed here
0215     #it will pick all triggers which have these strings in their name
0216     process.dqmBeamMonitor.jetTrigger = cms.untracked.vstring("HLT_HT300_Beamspot",
0217                                                               "HLT_BeamSpot",
0218                                                               "HLT_PAZeroBias_v",
0219                                                               "HLT_ZeroBias_",
0220                                                               "HLT_QuadJet",
0221                                                               "HLT_HI",
0222                                                               "HLT_PixelClusters")
0223 
0224     process.dqmBeamMonitor.hltResults = "TriggerResults::HLT"
0225 
0226     #---------
0227     # Upload BeamSpotOnlineObject (HLTRcd) to CondDB
0228     if unitTest == False:
0229       process.OnlineDBOutputService = cms.Service("OnlineDBOutputService",
0230         DBParameters = cms.PSet(
0231                                 messageLevel = cms.untracked.int32(0),
0232                                 authenticationPath = cms.untracked.string('.')
0233                                ),
0234 
0235         # Upload to CondDB
0236         connect = cms.string('oracle://cms_orcon_prod/CMS_CONDITIONS'),
0237         preLoadConnectionString = cms.untracked.string('frontier://FrontierProd/CMS_CONDITIONS'),
0238         runNumber = cms.untracked.uint64(options.runNumber),
0239         omsServiceUrl = cms.untracked.string(BSOnlineOmsServiceUrl),
0240         latency = cms.untracked.uint32(2),
0241         autoCommit = cms.untracked.bool(True),
0242         saveLogsOnDB = cms.untracked.bool(True),
0243         jobName = cms.untracked.string(BSOnlineJobName), # name of the DB log record
0244         toPut = cms.VPSet(cms.PSet(
0245             record = cms.string(BSOnlineRecordName),
0246             tag = cms.string(BSOnlineTag),
0247             timetype = cms.untracked.string('Lumi'),
0248             onlyAppendUpdatePolicy = cms.untracked.bool(True)
0249         )),
0250         frontierKey = cms.untracked.string(options.runUniqueKey)
0251       )
0252 
0253     else:
0254       process.OnlineDBOutputService = cms.Service("OnlineDBOutputService",
0255         DBParameters = cms.PSet(
0256                                 messageLevel = cms.untracked.int32(0),
0257                                 authenticationPath = cms.untracked.string('.')
0258                                 ),
0259 
0260         # Upload to CondDB
0261         connect = cms.string('sqlite_file:BeamSpotOnlineHLT.db'),
0262         preLoadConnectionString = cms.untracked.string('sqlite_file:BeamSpotOnlineHLT.db'),
0263         runNumber = cms.untracked.uint64(options.runNumber),
0264         lastLumiFile = cms.untracked.string('src/DQM/Integration/python/clients/last_lumi.txt'),
0265         latency = cms.untracked.uint32(2),
0266         autoCommit = cms.untracked.bool(True),
0267         toPut = cms.VPSet(cms.PSet(
0268             record = cms.string(BSOnlineRecordName),
0269             tag = cms.string(BSOnlineTag),
0270             timetype = cms.untracked.string('Lumi'),
0271             onlyAppendUpdatePolicy = cms.untracked.bool(True)
0272         )),
0273         frontierKey = cms.untracked.string(options.runUniqueKey)
0274       )
0275 
0276     print("Configured frontierKey", options.runUniqueKey)
0277 
0278     process.p = cms.Path( process.hltTriggerTypeFilter
0279                         * process.tcdsDigis
0280                         * process.scalersRawToDigi
0281                         * process.onlineMetaDataDigis
0282                         * process.pixelTrackerHVOn
0283                         * process.stripTrackerHVOn
0284                         * process.dqmcommon
0285                         * process.offlineBeamSpot
0286                         * process.monitor )
0287 
0288 print("Global Tag used:", process.GlobalTag.globaltag.value())
0289 print("Final Source settings:", process.source)
0290