Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-06-22 02:23:32

0001 from __future__ import print_function
0002 import FWCore.ParameterSet.Config as cms
0003 
0004 import sys
0005 if 'runkey=hi_run' in sys.argv:
0006   from Configuration.Eras.Era_Run3_pp_on_PbPb_cff import Run3_pp_on_PbPb
0007   process = cms.Process("SiStripApproxMonitor", Run3_pp_on_PbPb)
0008 else:
0009   from Configuration.Eras.Era_Run3_cff import Run3
0010   process = cms.Process("SiStripApproxMonitor", Run3)
0011 
0012 process.load('FWCore.MessageService.MessageLogger_cfi')
0013 process.MessageLogger.debugModules = cms.untracked.vstring('siStripDigis',
0014                                                            'siStripClusters',
0015                                                            'siStripZeroSuppression',
0016                                                            'SiStripClusterizer',
0017                                                            'siStripApproximateClusterComparator')
0018 process.MessageLogger.cout = cms.untracked.PSet(threshold = cms.untracked.string('ERROR'))
0019 
0020 live=True
0021 unitTest=False
0022 
0023 if 'unitTest=True' in sys.argv:
0024     live=False
0025     unitTest=True
0026 
0027 # uncomment for running on lxplus
0028 #live=False
0029 offlineTesting=not live
0030 #print "live: "+str(live)+" ==> offlineTesting: "+str(offlineTesting)
0031 
0032 #----------------------------
0033 # Event Source
0034 #-----------------------------
0035 # for live online DQM in P5
0036 if (unitTest):
0037   process.load("DQM.Integration.config.unitteststreamerinputsource_cfi")
0038   from DQM.Integration.config.unitteststreamerinputsource_cfi import options
0039 elif (live):
0040   process.load("DQM.Integration.config.inputsource_cfi")
0041   from DQM.Integration.config.inputsource_cfi import options
0042 # for testing in lxplus
0043 elif(offlineTesting):
0044   process.load("DQM.Integration.config.fileinputsource_cfi")
0045   from DQM.Integration.config.fileinputsource_cfi import options
0046 
0047 #----------------------------
0048 # DQM Live Environment
0049 #-----------------------------
0050 
0051 process.load("DQM.Integration.config.environment_cfi")
0052 process.DQM.filter = '^(SiStripApproximateClusters)(/[^/]+){0,5}$'
0053 
0054 process.dqmEnv.subSystemFolder    = "SiStripApproximateClusters"
0055 process.dqmSaver.tag = "SiStripApproximateClusters"
0056 process.dqmSaver.backupLumiCount = 30
0057 process.dqmSaver.runNumber = options.runNumber
0058 process.dqmSaverPB.tag = "SiStripApproximateClusters"
0059 process.dqmSaverPB.runNumber = options.runNumber
0060 
0061 from DQMServices.Core.DQMEDAnalyzer import DQMEDAnalyzer
0062 process.dqmEnvTr = DQMEDAnalyzer('DQMEventInfo',
0063                                  subSystemFolder = cms.untracked.string('SiStripApproximateClusters'),
0064                                  eventRateWindow = cms.untracked.double(0.5),
0065                                  eventInfoFolder = cms.untracked.string('EventInfo'))
0066 
0067 #-----------------------------
0068 # Magnetic Field
0069 #-----------------------------
0070 process.load('Configuration.StandardSequences.MagneticField_cff')
0071 
0072 #-------------------------------------------------
0073 # GEOMETRY
0074 #-------------------------------------------------
0075 process.load("Configuration.StandardSequences.GeometryRecoDB_cff")
0076 
0077 #--------------------------
0078 # Calibration
0079 #--------------------------
0080 # Condition for P5 cluster
0081 if (live):
0082     process.load("DQM.Integration.config.FrontierCondition_GT_cfi")
0083 # Condition for lxplus: change and possibly customise the GT
0084 elif(offlineTesting):
0085     process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_cff')
0086     from Configuration.AlCa.GlobalTag import GlobalTag as gtCustomise
0087     #you may need to set manually the GT in the line below
0088     process.GlobalTag = gtCustomise(process.GlobalTag, 'auto:run3_hlt', '')
0089 
0090 print("Will process with GlobalTag: %s" % process.GlobalTag.globaltag.value())
0091 
0092 #--------------------------------------------
0093 # Patch to avoid using Run Info information in reconstruction
0094 #--------------------------------------------
0095 process.siStripQualityESProducer.ListOfRecordToMerge = cms.VPSet(
0096    cms.PSet( record = cms.string("SiStripDetVOffRcd"),    tag    = cms.string("") ),
0097    cms.PSet( record = cms.string("SiStripDetCablingRcd"), tag    = cms.string("") ),
0098    cms.PSet( record = cms.string("SiStripBadChannelRcd"), tag    = cms.string("") ),
0099    cms.PSet( record = cms.string("SiStripBadFiberRcd"),   tag    = cms.string("") ),
0100    cms.PSet( record = cms.string("SiStripBadModuleRcd"),  tag    = cms.string("") )
0101    )
0102 #-------------------------------------------
0103 
0104 #-----------------------
0105 #  Reconstruction Modules
0106 #-----------------------
0107 ## Collision Reconstruction
0108 process.load("Configuration.StandardSequences.RawToDigi_Data_cff")
0109 process.load("Configuration.StandardSequences.Reconstruction_cff")
0110 
0111 import RecoVertex.BeamSpotProducer.onlineBeamSpotESProducer_cfi as _mod
0112 process.BeamSpotESProducer = _mod.onlineBeamSpotESProducer.clone()
0113 
0114 # for running offline enhance the time validity of the online beamspot in DB
0115 if ((not live) or process.isDqmPlayback.value): 
0116   process.BeamSpotESProducer.timeThreshold = cms.int32(int(1e6))
0117 
0118 import RecoVertex.BeamSpotProducer.BeamSpotOnline_cfi
0119 process.offlineBeamSpot = RecoVertex.BeamSpotProducer.BeamSpotOnline_cfi.onlineBeamSpotProducer.clone()
0120 
0121 #
0122 # Strip FED check
0123 #
0124 rawDataCollectorLabel = 'rawDataCollector'
0125 
0126 #--------------------------
0127 # Service
0128 #--------------------------
0129 process.AdaptorConfig = cms.Service("AdaptorConfig")
0130 
0131 # Simple filter for event
0132 process.eventFilter = cms.EDFilter("SimpleEventFilter",
0133 #                   EventsToSkip = cms.untracked.int32(3)
0134                    EventsToSkip = cms.untracked.int32(100)
0135 )
0136 
0137 #--------------------------
0138 # Producers
0139 #--------------------------
0140 # Event History Producer
0141 process.load("DPGAnalysis.SiStripTools.eventwithhistoryproducerfroml1abc_cfi")
0142 
0143 # APV Phase Producer
0144 process.load("DPGAnalysis.SiStripTools.apvcyclephaseproducerfroml1tsDB_cfi")
0145 
0146 #--------------------------
0147 # Filters
0148 #--------------------------
0149 # HLT Filter
0150 # 0=random, 1=physics, 2=calibration, 3=technical
0151 process.hltTriggerTypeFilter = cms.EDFilter("HLTTriggerTypeFilter",
0152     SelectedTriggerType = cms.int32(1)
0153 )
0154 
0155 # L1 Trigger Bit Selection (bit 40 and 41 for BSC trigger)
0156 process.load('L1TriggerConfig.L1GtConfigProducers.L1GtTriggerMaskTechTrigConfig_cff')
0157 process.load('HLTrigger/HLTfilters/hltLevel1GTSeed_cfi')
0158 process.hltLevel1GTSeed.L1TechTriggerSeeding = True
0159 process.hltLevel1GTSeed.L1SeedsLogicalExpression = 'NOT (36 OR 37 OR 38 OR 39)'
0160 
0161 # HLT trigger selection (HLT_ZeroBias)
0162 # modified for 0 Tesla HLT menu (no ZeroBias_*)
0163 process.load('HLTrigger.HLTfilters.hltHighLevel_cfi')
0164 if (process.runType.getRunType() == process.runType.hi_run):
0165     #--------------------------
0166     # HI Runs HLT path
0167     #--------------------------
0168     process.hltHighLevel.HLTPaths = ['HLT_ZeroBias_*' , 'HLT_HIZeroBias*' , 'HLT_ZeroBias1_*' , 'HLT_PAZeroBias_*' , 'HLT_PAZeroBias1_*', 'HLT_PAL1MinimumBiasHF_OR_SinglePixelTrack_*' , 'HLT_HICentralityVeto*','HLT_HIMinimumBias*', 'HLT_HIPhysics*']
0169 else:
0170     process.hltHighLevel.HLTPaths = ['HLT_ZeroBias_*' , 'HLT_ZeroBias1_*' , 'HLT_PAZeroBias_*' , 'HLT_PAZeroBias1_*', 'HLT_PAL1MinimumBiasHF_OR_SinglePixelTrack_*']
0171 process.hltHighLevel.andOr = True
0172 process.hltHighLevel.throw = False
0173 
0174 if (process.runType.getRunType() == process.runType.hi_run):
0175     process.RecoForDQM_LocalReco     = cms.Sequence(process.siPixelDigis*process.siStripDigis*process.trackerlocalreco)
0176 else :
0177     process.RecoForDQM_LocalReco     = cms.Sequence(process.siPixelDigis*process.siStripDigis*process.gtDigis*process.trackerlocalreco)
0178 
0179 process.DQMCommon = cms.Sequence(process.dqmEnv*process.dqmEnvTr*process.dqmSaver*process.dqmSaverPB)
0180 
0181 print("Running with run type = ", process.runType.getRunTypeName())
0182 
0183 ### HEAVY ION SETTING
0184 if process.runType.getRunType() == process.runType.hi_run:
0185     rawDataRepackerLabel = 'rawDataRepacker'
0186     process.castorDigis.InputLabel = rawDataRepackerLabel
0187     process.csctfDigis.producer = rawDataRepackerLabel
0188     process.dttfDigis.DTTF_FED_Source = rawDataRepackerLabel
0189     process.ecalDigisCPU.InputLabel = rawDataRepackerLabel
0190     process.ecalPreshowerDigis.sourceTag = rawDataRepackerLabel
0191     process.gctDigis.inputLabel = rawDataRepackerLabel
0192     process.hcalDigis.InputLabel = rawDataRepackerLabel
0193     process.muonCSCDigis.InputObjects = rawDataRepackerLabel
0194     process.muonDTDigis.inputLabel = rawDataRepackerLabel
0195     process.muonRPCDigis.InputLabel = rawDataRepackerLabel
0196     process.scalersRawToDigi.scalersInputTag = rawDataRepackerLabel
0197     process.siPixelDigis.cpu.InputLabel = rawDataRepackerLabel
0198     process.siStripDigis.ProductLabel = rawDataRepackerLabel
0199 
0200     if ((process.runType.getRunType() == process.runType.hi_run) and live):
0201         process.source.SelectEvents = [
0202 #            'HLT_HICentralityVeto*', # present in 2018 and 2022 HIon menus
0203             'HLT_HIMinimumBias*',     # replaced HLT_HICentralityVeto starting from the 2023 HIon menu
0204 #            'HLT_HIZeroBias*',       # present in DQM stream of HIon menu, but not used in this client
0205             'HLT_HIPhysics*'
0206         ]
0207 
0208     process.load('RecoTracker.IterativeTracking.InitialStepPreSplitting_cff')
0209     process.InitialStepPreSplittingTask.remove(process.initialStepTrackRefsForJetsPreSplitting)
0210     process.InitialStepPreSplittingTask.remove(process.caloTowerForTrkPreSplitting)
0211     process.InitialStepPreSplittingTask.remove(process.ak4CaloJetsForTrkPreSplitting)
0212     process.InitialStepPreSplittingTask.remove(process.jetsForCoreTrackingPreSplitting)
0213     process.InitialStepPreSplittingTask.remove(process.siPixelClusters)
0214     process.InitialStepPreSplittingTask.remove(process.siPixelRecHits)
0215     process.InitialStepPreSplittingTask.remove(process.MeasurementTrackerEvent)
0216 
0217     # Redefinition of siPixelClusters: has to be after RecoTracker.IterativeTracking.InitialStepPreSplitting_cff
0218     process.load("RecoLocalTracker.SiPixelClusterizer.SiPixelClusterizer_cfi")
0219 
0220     # Select events based on the pixel cluster multiplicity
0221     import  HLTrigger.special.hltPixelActivityFilter_cfi
0222     process.multFilter = HLTrigger.special.hltPixelActivityFilter_cfi.hltPixelActivityFilter.clone(
0223         inputTag = 'siPixelClusters',
0224         minClusters = 1,
0225         maxClusters = 50000
0226     )
0227 
0228     from RecoTracker.TkSeedingLayers.PixelLayerTriplets_cfi import *
0229     process.PixelLayerTriplets.BPix.HitProducer = 'siPixelRecHitsPreSplitting'
0230     process.PixelLayerTriplets.FPix.HitProducer = 'siPixelRecHitsPreSplitting'
0231     from RecoTracker.PixelTrackFitting.PixelTracks_cff import *
0232     process.pixelTracksHitTriplets.SeedComparitorPSet.clusterShapeCacheSrc = 'siPixelClusterShapeCachePreSplitting'
0233 
0234     process.RecoForDQM_TrkReco = cms.Sequence(
0235         process.offlineBeamSpot
0236       * process.MeasurementTrackerEventPreSplitting
0237       * process.siPixelClusterShapeCachePreSplitting
0238       * process.recopixelvertexing
0239       * process.InitialStepPreSplitting
0240     )
0241 
0242     # append the approximate clusters monitoring for the HI run case
0243     from DQM.SiStripMonitorApproximateCluster.SiStripMonitorApproximateCluster_cfi import SiStripMonitorApproximateCluster
0244     process.siStripApproximateClusterComparator = SiStripMonitorApproximateCluster.clone(
0245         compareClusters = True,
0246         ClustersProducer = "siStripClusters"
0247     )
0248 
0249     process.p = cms.Path(
0250         process.scalersRawToDigi*
0251         process.tcdsDigis*
0252         process.onlineMetaDataDigis*
0253         process.APVPhases*
0254         process.consecutiveHEs*
0255         process.hltTriggerTypeFilter*
0256         process.RecoForDQM_LocalReco*
0257         process.siPixelClusters*
0258         process.DQMCommon*
0259         process.multFilter*
0260         ##### TRIGGER SELECTION #####
0261         process.hltHighLevel*
0262         process.RecoForDQM_TrkReco*
0263         process.siStripApproximateClusterComparator
0264     )
0265 
0266 ### process customizations included here
0267 from DQM.Integration.config.online_customizations_cfi import *
0268 process = customise(process)
0269 print("Final Source settings:", process.source)