Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-11-26 02:34: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_cff import Run3
0017   process = cms.Process("BeamMonitorHLT", Run3)
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 # for running offline enhance the time validity of the online beamspot in DB
0157 if ((not live) or process.isDqmPlayback.value): 
0158   process.BeamSpotESProducer.timeThreshold = cms.int32(int(1e6))
0159 
0160 import RecoVertex.BeamSpotProducer.BeamSpotOnline_cfi
0161 process.offlineBeamSpot = RecoVertex.BeamSpotProducer.BeamSpotOnline_cfi.onlineBeamSpotProducer.clone()
0162 
0163 #--------
0164 # Do no run on events with pixel or strip with HV off
0165 
0166 process.stripTrackerHVOn = cms.EDFilter( "DetectorStateFilter",
0167     DCSRecordLabel = cms.untracked.InputTag( "onlineMetaDataDigis" ),
0168     DcsStatusLabel = cms.untracked.InputTag( "scalersRawToDigi" ),
0169     DebugOn = cms.untracked.bool( False ),
0170     DetectorType = cms.untracked.string( "sistrip" )
0171 )
0172 
0173 process.pixelTrackerHVOn = cms.EDFilter( "DetectorStateFilter",
0174     DCSRecordLabel = cms.untracked.InputTag( "onlineMetaDataDigis" ),
0175     DcsStatusLabel = cms.untracked.InputTag( "scalersRawToDigi" ),
0176     DebugOn = cms.untracked.bool( False ),
0177     DetectorType = cms.untracked.string( "pixel" )
0178 )
0179 
0180 #--------------------------
0181 # Proton-Proton Stuff
0182 #--------------------------
0183 
0184 if (process.runType.getRunType() == process.runType.pp_run or
0185     process.runType.getRunType() == process.runType.pp_run_stage1 or
0186     process.runType.getRunType() == process.runType.hpu_run or
0187     process.runType.getRunType() == process.runType.hi_run or
0188     process.runType.getRunType() == process.runType.commissioning_run):
0189 
0190     print("[beamhlt_dqm_sourceclient-live_cfg]:: Running pp")
0191 
0192     process.load("RecoVertex.BeamSpotProducer.BeamSpot_cfi")
0193 
0194     process.dqmBeamMonitor.monitorName = 'BeamMonitorHLT'
0195 
0196     process.dqmBeamMonitor.OnlineMode = True              
0197     process.dqmBeamMonitor.recordName = BSOnlineRecordName
0198 
0199     process.dqmBeamMonitor.resetEveryNLumi   = 5
0200     process.dqmBeamMonitor.resetPVEveryNLumi = 5
0201 
0202     process.dqmBeamMonitor.PVFitter.minNrVerticesForFit = 20
0203     process.dqmBeamMonitor.PVFitter.minVertexNdf        = 10
0204   
0205     # some inputs to BeamMonitor
0206     if(process.runType.getRunType() == process.runType.hi_run):
0207       process.dqmBeamMonitor.BeamFitter.TrackCollection = 'hltPFMuonMergingPPOnAA'
0208       process.dqmBeamMonitor.primaryVertex              = 'hltVerticesPFFilterPPOnAA'
0209       process.dqmBeamMonitor.PVFitter.VertexCollection  = 'hltVerticesPFFilterPPOnAA'
0210     else:
0211       process.dqmBeamMonitor.BeamFitter.TrackCollection = 'hltPFMuonMerging'
0212       process.dqmBeamMonitor.primaryVertex              = 'hltVerticesPFFilter'
0213       process.dqmBeamMonitor.PVFitter.VertexCollection  = 'hltVerticesPFFilter'
0214 
0215     # keep checking this with new release expected close to 1
0216     process.dqmBeamMonitor.PVFitter.errorScale = 0.95
0217 
0218     #TriggerName for selecting pv for DIP publication, NO wildcard needed here
0219     #it will pick all triggers which have these strings in their name
0220     process.dqmBeamMonitor.jetTrigger = cms.untracked.vstring(
0221         "HLT_HT300_Beamspot", "HLT_HT300_Beamspot",
0222         "HLT_PAZeroBias_v", "HLT_ZeroBias_", "HLT_QuadJet",
0223         "HLT_HI",
0224         "HLT_PixelClusters")
0225 
0226     process.dqmBeamMonitor.hltResults = "TriggerResults::HLT"
0227 
0228     #---------
0229     # Upload BeamSpotOnlineObject (HLTRcd) to CondDB
0230     if unitTest == False:
0231       process.OnlineDBOutputService = cms.Service("OnlineDBOutputService",
0232         DBParameters = cms.PSet(
0233                                 messageLevel = cms.untracked.int32(0),
0234                                 authenticationPath = cms.untracked.string('.')
0235                                ),
0236 
0237         # Upload to CondDB
0238         connect = cms.string('oracle://cms_orcon_prod/CMS_CONDITIONS'),
0239         preLoadConnectionString = cms.untracked.string('frontier://FrontierProd/CMS_CONDITIONS'),
0240         runNumber = cms.untracked.uint64(options.runNumber),
0241         omsServiceUrl = cms.untracked.string(BSOnlineOmsServiceUrl),
0242         latency = cms.untracked.uint32(2),
0243         autoCommit = cms.untracked.bool(True),
0244         saveLogsOnDB = cms.untracked.bool(True),
0245         jobName = cms.untracked.string(BSOnlineJobName), # name of the DB log record
0246         toPut = cms.VPSet(cms.PSet(
0247             record = cms.string(BSOnlineRecordName),
0248             tag = cms.string(BSOnlineTag),
0249             timetype = cms.untracked.string('Lumi'),
0250             onlyAppendUpdatePolicy = cms.untracked.bool(True)
0251         )),
0252         frontierKey = cms.untracked.string(options.runUniqueKey)
0253       )
0254 
0255     else:
0256       process.OnlineDBOutputService = cms.Service("OnlineDBOutputService",
0257         DBParameters = cms.PSet(
0258                                 messageLevel = cms.untracked.int32(0),
0259                                 authenticationPath = cms.untracked.string('.')
0260                                 ),
0261 
0262         # Upload to CondDB
0263         connect = cms.string('sqlite_file:BeamSpotOnlineHLT.db'),
0264         preLoadConnectionString = cms.untracked.string('sqlite_file:BeamSpotOnlineHLT.db'),
0265         runNumber = cms.untracked.uint64(options.runNumber),
0266         lastLumiFile = cms.untracked.string('src/DQM/Integration/python/clients/last_lumi.txt'),
0267         latency = cms.untracked.uint32(2),
0268         autoCommit = cms.untracked.bool(True),
0269         toPut = cms.VPSet(cms.PSet(
0270             record = cms.string(BSOnlineRecordName),
0271             tag = cms.string(BSOnlineTag),
0272             timetype = cms.untracked.string('Lumi'),
0273             onlyAppendUpdatePolicy = cms.untracked.bool(True)
0274         )),
0275         frontierKey = cms.untracked.string(options.runUniqueKey)
0276       )
0277 
0278     print("Configured frontierKey", options.runUniqueKey)
0279 
0280     process.p = cms.Path( process.hltTriggerTypeFilter
0281                         * process.tcdsDigis
0282                         * process.scalersRawToDigi
0283                         * process.onlineMetaDataDigis
0284                         * process.pixelTrackerHVOn
0285                         * process.stripTrackerHVOn
0286                         * process.dqmcommon
0287                         * process.offlineBeamSpot
0288                         * process.monitor )
0289 
0290 print("Global Tag used:", process.GlobalTag.globaltag.value())
0291 print("Final Source settings:", process.source)
0292