Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-03-26 01:51:06

0001 import re, os, sys
0002 import FWCore.ParameterSet.Config as cms
0003 from Configuration.DataProcessing.GetScenario import getScenario
0004 
0005 """
0006 Example configuration for online reconstruction meant for visualization clients.
0007 """
0008 
0009 unitTest = False
0010 if 'unitTest=True' in sys.argv:
0011     unitTest=True
0012 
0013 if unitTest:
0014     from DQM.Integration.config.unittestinputsource_cfi import options, runType, source
0015 else:
0016     from DQM.Integration.config.inputsource_cfi import options, runType, source, set_BeamSplashRun_settings
0017 
0018 # this is needed to map the names of the run-types chosen by DQM to the scenarios, ideally we could converge to the same names
0019 #scenarios = {'pp_run': 'ppEra_Run2_2016','cosmic_run':'cosmicsEra_Run2_2016','hi_run':'HeavyIons'}
0020 #scenarios = {'pp_run': 'ppEra_Run2_2016','pp_run_stage1': 'ppEra_Run2_2016','cosmic_run':'cosmicsEra_Run2_2016','cosmic_run_stage1':'cosmicsEra_Run2_2016','hi_run':'HeavyIonsEra_Run2_HI'}
0021 scenarios = {'pp_run': 'ppEra_Run3','cosmic_run':'cosmicsEra_Run3','hi_run':'ppEra_Run3_pp_on_PbPb_approxSiStripClusters', 'commissioning_run':'cosmicsEra_Run3'}
0022 
0023 if not runType.getRunTypeName() in scenarios.keys():
0024     msg = "Error getting the scenario out of the 'runkey', no mapping for: %s\n"%runType.getRunTypeName()
0025     raise RuntimeError(msg)
0026 
0027 scenarioName = scenarios[runType.getRunTypeName()]
0028 
0029 if not unitTest :
0030   if options.BeamSplashRun :
0031     scenarioName = 'ppEra_Run3'
0032     pass
0033 
0034 print("Using scenario:",scenarioName)
0035 
0036 try:
0037     scenario = getScenario(scenarioName)
0038 except Exception as ex:
0039     msg = "Error getting Scenario implementation for %s\n" % (
0040         scenarioName,)
0041     msg += str(ex)
0042     raise RuntimeError(msg)
0043 
0044 # A hack necessary to prevert scenario.visualizationProcessing
0045 # from overriding the connect string
0046 from DQM.Integration.config.FrontierCondition_GT_autoExpress_cfi import GlobalTag
0047 kwds = {
0048    'globalTag': GlobalTag.globaltag.value(),
0049    'globalTagConnect': GlobalTag.connect.value(),
0050    'beamSplashRun' : ":localreco+hcalOnlyGlobalRecoSequence+caloTowersRec" if options.BeamSplashRun else "",
0051 }
0052 
0053 # explicitly select the input collection, since we get multiple in online
0054 from EventFilter.RawDataCollector.rawDataMapperByLabel_cfi import rawDataMapperByLabel
0055 rawDataMapperByLabel.rawCollectionList = ["rawDataRepacker"]
0056 
0057 
0058 # example of how to add a filer IN FRONT of all the paths, eg for HLT selection
0059 #kwds['preFilter'] = 'DQM/Integration/python/config/visualizationPreFilter.hltfilter'
0060 
0061 process = scenario.visualizationProcessing(writeTiers=['FEVT'], **kwds)
0062 
0063 if unitTest:
0064     process.__dict__['_Process__name'] = "RECONEW"
0065 
0066 process.source = source
0067 
0068 if not unitTest:
0069     process.source.inputFileTransitionsEachEvent = True
0070     process.source.skipFirstLumis                = True
0071     process.source.minEventsPerLumi              = 0
0072     process.source.nextLumiTimeoutMillis         = 10000
0073     if options.BeamSplashRun :
0074       set_BeamSplashRun_settings( process.source )
0075 
0076     m = re.search(r"\((\w+)\)", str(source.runNumber))
0077     runno = str(m.group(1))
0078     outDir= options.outputBaseDir+'/EvD/run'+runno+'/streamEvDOutput'
0079 else:
0080     runno = options.runNumber
0081     outDir = "./upload"
0082 
0083 #create output directory
0084 try:
0085     os.makedirs(outDir)
0086 except:
0087     pass
0088 
0089 process.options = cms.untracked.PSet(
0090         Rethrow = cms.untracked.vstring('ProductNotFound'),
0091         wantSummary = cms.untracked.bool(True),
0092         numberOfThreads = cms.untracked.uint32(8),
0093         numberOfStreams = cms.untracked.uint32(8)
0094     )
0095 
0096 process.maxEvents = cms.untracked.PSet(
0097         input = cms.untracked.int32(-1)
0098     )
0099 oldo = process._Process__outputmodules["FEVToutput"]
0100 del process._Process__outputmodules["FEVToutput"]
0101 
0102 process.FEVToutput = cms.OutputModule("JsonWritingTimeoutPoolOutputModule",
0103     splitLevel = oldo.splitLevel,
0104     outputCommands = oldo.outputCommands,
0105     fileName = oldo.fileName,
0106     dataset = oldo.dataset,
0107     runNumber = cms.untracked.uint32(int(runno)),
0108     streamLabel = cms.untracked.string("streamEvDOutput_dqmcluster"),
0109     # output path must exist!
0110     outputPath = cms.untracked.string(outDir),
0111 )
0112 
0113 process.DQMMonitoringService = cms.Service("DQMMonitoringService")
0114 
0115 dump = False
0116 if dump:
0117     psetFile = open("RunVisualizationProcessingCfg.py", "w")
0118     psetFile.write(process.dumpPython())
0119     psetFile.close()
0120     cmsRun = "cmsRun -e RunVisualizationProcessingCfg.py"
0121     print("Now do:\n%s" % cmsRun)
0122 
0123 print("Global Tag used:", process.GlobalTag.globaltag.value())
0124 print("Final Source settings:", process.source)