Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:07:41

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