Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-06-01 00:41:16

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