Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186

import sys
import FWCore.ParameterSet.Config as cms

## Use RECO Muons flag
useMuons = False
isOfflineDQM = False

unitTest = False
if 'unitTest=True' in sys.argv:
    unitTest=True

from Configuration.Eras.Era_Run3_cff import Run3
process = cms.Process("RPCDQM", Run3)

############## Event Source #####################

if unitTest:
    process.load("DQM.Integration.config.unittestinputsource_cfi")
    from DQM.Integration.config.unittestinputsource_cfi import options
else:
    # for live online DQM in P5
    process.load("DQM.Integration.config.inputsource_cfi")
    from DQM.Integration.config.inputsource_cfi import options

# for testing in lxplus
#process.load("DQM.Integration.config.fileinputsource_cfi")
#from DQM.Integration.config.fileinputsource_cfi import options

############### HLT Filter#######################
# 0=random, 1=physics, 2=calibration, 3=technical
process.hltTriggerTypeFilter = cms.EDFilter("HLTTriggerTypeFilter",
    SelectedTriggerType = cms.int32(1)
)

################# Geometry  #####################
#process.load("Geometry.MuonCommonData.muonIdealGeometryXML_cfi")
#process.load("Geometry.RPCGeometry.rpcGeometry_cfi")
#process.load("Geometry.MuonNumbering.muonNumberingInitialization_cfi")
process.load("Configuration.StandardSequences.GeometryRecoDB_cff")
################ Condition ######################
# Condition for P5 cluster
process.load("DQM.Integration.config.FrontierCondition_GT_cfi")
# Condition for lxplus: change and possibly customise the GT
#process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_cff')
#from Configuration.AlCa.GlobalTag import GlobalTag as gtCustomise
#process.GlobalTag = gtCustomise(process.GlobalTag, 'auto:run3_data', '')
#process.GlobalTag.globaltag = "102X_dataRun2_Express_v4"
process.GlobalTag.RefreshEachRun = True

############# DQM Cetral Modules ################
#process.load("DQMServices.Core.DQM_cfg")

############## DQM Enviroment ###################
process.load("DQM.Integration.config.environment_cfi")
process.dqmEnv.subSystemFolder = 'RPC'
process.dqmSaver.tag = 'RPC'
process.dqmSaver.runNumber = options.runNumber
# process.dqmSaverPB.tag = 'RPC'
# process.dqmSaverPB.runNumber = options.runNumber


############### Scaler Producer #################
process.load("EventFilter.ScalersRawToDigi.ScalersRawToDigi_cfi")

############## RPC Unpacker  ####################
process.rpcunpacker = cms.EDProducer("RPCUnpackingModule",
    InputLabel = cms.InputTag("source"),
    doSynchro = cms.bool(False)
)

### RPC RawToDigi - from TwinMux
process.load("EventFilter.RPCRawToDigi.RPCTwinMuxRawToDigi_cff")

### RPC RawToDigi - from CPPF
process.load("EventFilter.RPCRawToDigi.RPCCPPFRawToDigi_cff")
# process.load("EventFilter.RPCRawToDigi.RPCCPPFRawToDigi_sqlite_cff") #to load CPPF link maps from the local DB

### RPC RawToDigi - from OMTF
process.omtfStage2Digis = cms.EDProducer("OmtfUnpacker",
  inputLabel = cms.InputTag('rawDataCollector'),
)

process.load("EventFilter.RPCRawToDigi.RPCDigiMerger_cff")
process.rpcDigiMerger.inputTagTwinMuxDigis = 'rpcTwinMuxRawToDigi'
process.rpcDigiMerger.inputTagOMTFDigis = 'omtfStage2Digis'
process.rpcDigiMerger.inputTagCPPFDigis = 'rpcCPPFRawToDigi'

################# RPC Rec Hits  #################
process.load("RecoLocalMuon.RPCRecHit.rpcRecHits_cfi")
process.rpcRecHits.rpcDigiLabel = 'rpcunpacker'
#######################################################
### RPCRecHit - from Merger
process.rpcMergerRecHits = process.rpcRecHits.clone(
  rpcDigiLabel = 'rpcDigiMerger'
)

################ DQM Digi Module ################
### DQM - from legacy
process.load("DQM.RPCMonitorDigi.RPCDigiMonitoring_cfi")
process.rpcdigidqm.UseMuon =  useMuons
process.rpcdigidqm.NoiseFolder = "AllHitsLegacy"
process.rpcdigidqm.RecHitLabel = "rpcRecHits"
### DQM - from Merger
process.rpcMergerdigidqm = process.rpcdigidqm.clone(
  NoiseFolder = "AllHits",
  RecHitLabel = "rpcMergerRecHits"
)

#######################################################

################# DQM Client Modules ############
process.load("DQM.RPCMonitorClient.RPCDqmClient_cfi")
process.rpcdqmclient.RPCDqmClientList = ["RPCMultiplicityTest", "RPCDeadChannelTest", "RPCClusterSizeTest", "RPCOccupancyTest","RPCNoisyStripTest"]
process.rpcdqmclient.DiagnosticPrescale = 1
process.rpcdqmclient.MinimumRPCEvents  = 100
process.rpcdqmclient.OfflineDQM = isOfflineDQM
process.rpcdqmclient.RecHitTypeFolder = "AllHitsLegacy"
### Merger
process.rpcMergerdqmclient = process.rpcdqmclient.clone(
  RecHitTypeFolder = "AllHits"
)
################# Other Clients #################
#process.load("DQM.RPCMonitorClient.RPCMon_SS_Dbx_Global_cfi")

################### FED #########################
process.load("DQM.RPCMonitorClient.RPCMonitorRaw_cfi")
process.load("DQM.RPCMonitorClient.RPCFEDIntegrity_cfi")
process.load("DQM.RPCMonitorClient.RPCMonitorLinkSynchro_cfi")

########### RPC Event Summary Module ############
process.load("DQM.RPCMonitorClient.RPCEventSummary_cfi")
process.rpcEventSummary.OfflineDQM = isOfflineDQM 
process.rpcEventSummary.MinimumRPCEvents  = 10000
process.rpcEventSummary.RecHitTypeFolder = "AllHitsLegacy"
### Merger
process.rpcEventSummaryMerger = process.rpcEventSummary.clone(
   RecHitTypeFolder = "AllHits"
)

################# Quality Tests #################
from DQMServices.Core.DQMQualityTester import DQMQualityTester
process.qTesterRPC = DQMQualityTester(
    qtList = cms.untracked.FileInPath('DQM/RPCMonitorClient/test/RPCQualityTests.xml'),
    prescaleFactor = cms.untracked.int32(5),
    qtestOnEndLumi = cms.untracked.bool(True),
    qtestOnEndRun = cms.untracked.bool(True)
)

###############  Sequences ######################
process.rpcSource = cms.Sequence( process.rpcunpacker
                      * (process.rpcTwinMuxRawToDigi + process.rpcCPPFRawToDigi + process.omtfStage2Digis) 
                      * process.rpcDigiMerger 
                      * (process.rpcRecHits + process.rpcMergerRecHits)
                      * process.scalersRawToDigi
                      * (process.rpcdigidqm + process.rpcMergerdigidqm)
                      * process.rpcMonitorRaw*process.qTesterRPC
                    )
process.rpcClient = cms.Sequence(process.rpcdqmclient*process.rpcMergerdqmclient*process.rpcEventSummary*process.rpcEventSummaryMerger*process.dqmEnv*process.dqmSaver)#*process.dqmSaverPB)
process.p = cms.Path(process.hltTriggerTypeFilter*process.rpcSource*process.rpcClient)

process.rpcunpacker.InputLabel = "rawDataCollector"
process.scalersRawToDigi.scalersInputTag = "rawDataCollector"
process.rpcCPPFRawToDigi.inputTag = "rawDataCollector"
#--------------------------------------------------
# Heavy Ion Specific Fed Raw Data Collection Label
#--------------------------------------------------

print("Running with run type = ", process.runType.getRunType())

if (process.runType.getRunType() == process.runType.hi_run):
    process.rpcunpacker.InputLabel = "rawDataRepacker"
    process.scalersRawToDigi.scalersInputTag = "rawDataRepacker"
    process.rpcTwinMuxRawToDigi.inputTag = "rawDataRepacker"
    process.rpcCPPFRawToDigi.inputTag = "rawDataRepacker"
    process.omtfStage2Digis.inputLabel = "rawDataRepacker"
    process.rpcEventSummary.MinimumRPCEvents  = 100000
    process.rpcEventSummaryMerger.MinimumRPCEvents  = 100000

### process customizations included here
from DQM.Integration.config.online_customizations_cfi import *
process = customise(process)
print("Global Tag used:", process.GlobalTag.globaltag.value())
print("Final Source settings:", process.source)