diff --git a/Configuration/DataProcessing/python/Impl/AlCa.py b/Configuration/DataProcessing/python/Impl/AlCa.py index 780438e12ae75..866a0e9d69ea2 100644 --- a/Configuration/DataProcessing/python/Impl/AlCa.py +++ b/Configuration/DataProcessing/python/Impl/AlCa.py @@ -14,6 +14,9 @@ import FWCore.ParameterSet.Config as cms class AlCa(Scenario): + def __init__(self): + Scenario.__init__(self) + """ _AlCa_ @@ -37,7 +40,7 @@ def promptReco(self, globalTag, **args): dictIO(options,args) options.conditions = gtNameAndConnect(globalTag, args) - process = cms.Process('RECO') + process = cms.Process('RECO', self.eras) cb = ConfigBuilder(options, process = process, with_output = True) # Input source @@ -65,7 +68,7 @@ def alcaSkim(self, skims, **args): options.triggerResultsProcess = 'RECO' - process = cms.Process('ALCA') + process = cms.Process('ALCA', self.eras) cb = ConfigBuilder(options, process = process) # Input source @@ -92,7 +95,7 @@ def dqmHarvesting(self, datasetName, runNumber, globalTag, **args): options.name = "EDMtoMEConvert" options.conditions = gtNameAndConnect(globalTag, args) - process = cms.Process("HARVESTING") + process = cms.Process("HARVESTING", self.eras) process.source = dqmIOSource(args) configBuilder = ConfigBuilder(options, process = process) configBuilder.prepare() diff --git a/Configuration/DataProcessing/python/Impl/AlCaLumiPixels.py b/Configuration/DataProcessing/python/Impl/AlCaLumiPixels.py index 08a8adac5ce04..ddf931c9c5dde 100644 --- a/Configuration/DataProcessing/python/Impl/AlCaLumiPixels.py +++ b/Configuration/DataProcessing/python/Impl/AlCaLumiPixels.py @@ -10,6 +10,7 @@ class AlCaLumiPixels(AlCa): def __init__(self): + AlCa.__init__(self) self.skims=['LumiPixels'] """ _AlCaLumiPixels_ diff --git a/Configuration/DataProcessing/python/Impl/AlCaP0.py b/Configuration/DataProcessing/python/Impl/AlCaP0.py index bfae107fc1a19..b66768b216c49 100644 --- a/Configuration/DataProcessing/python/Impl/AlCaP0.py +++ b/Configuration/DataProcessing/python/Impl/AlCaP0.py @@ -10,6 +10,7 @@ class AlCaP0(AlCa): def __init__(self): + AlCa.__init__(self) self.skims=['@AlCaP0'] """ _AlCaP0_ diff --git a/Configuration/DataProcessing/python/Impl/AlCaPhiSymEcal.py b/Configuration/DataProcessing/python/Impl/AlCaPhiSymEcal.py index 453593d534026..a865721330751 100644 --- a/Configuration/DataProcessing/python/Impl/AlCaPhiSymEcal.py +++ b/Configuration/DataProcessing/python/Impl/AlCaPhiSymEcal.py @@ -10,6 +10,7 @@ class AlCaPhiSymEcal(AlCa): def __init__(self): + AlCa.__init__(self) self.skims=['@AlCaPhiSym'] """ _AlCaPhiSymEcal_ diff --git a/Configuration/DataProcessing/python/Impl/AlCaTestEnable.py b/Configuration/DataProcessing/python/Impl/AlCaTestEnable.py index c8d7720dc3a57..7ad31f96f1d03 100644 --- a/Configuration/DataProcessing/python/Impl/AlCaTestEnable.py +++ b/Configuration/DataProcessing/python/Impl/AlCaTestEnable.py @@ -10,6 +10,7 @@ class AlCaTestEnable(AlCa): def __init__(self): + AlCa.__init__(self) self.skims=['TkAlLAS'] """ _AlCaTestEnable_ diff --git a/Configuration/DataProcessing/python/Impl/DataScouting.py b/Configuration/DataProcessing/python/Impl/DataScouting.py index 4a3aa112cea63..8fd9eb8f2de93 100644 --- a/Configuration/DataProcessing/python/Impl/DataScouting.py +++ b/Configuration/DataProcessing/python/Impl/DataScouting.py @@ -16,6 +16,8 @@ from Configuration.DataProcessing.RecoTLR import customisePrompt,customiseExpress class DataScouting(Scenario): + def __init__(self): + Scenario.__init__(self) """ _DataScouting_ @@ -40,7 +42,7 @@ def promptReco(self, globalTag, **args): dictIO(options,args) options.conditions = gtNameAndConnect(globalTag, args) - process = cms.Process('DataScouting') + process = cms.Process('DataScouting', self.eras) cb = ConfigBuilder(options, process = process, with_output = True) # Input source @@ -64,7 +66,7 @@ def dqmHarvesting(self, datasetName, runNumber, globalTag, **args): options.name = "EDMtoMEConvert" options.conditions = gtNameAndConnect(globalTag, args) - process = cms.Process("HARVESTING") + process = cms.Process("HARVESTING", self.eras) process.source = dqmIOSource(args) configBuilder = ConfigBuilder(options, process = process) configBuilder.prepare() diff --git a/Configuration/DataProcessing/python/Impl/HeavyIons.py b/Configuration/DataProcessing/python/Impl/HeavyIons.py index 07427c22737d4..7ef44e8854657 100644 --- a/Configuration/DataProcessing/python/Impl/HeavyIons.py +++ b/Configuration/DataProcessing/python/Impl/HeavyIons.py @@ -2,62 +2,63 @@ """ _HeavyIons_ -Scenario supporting heavy-ion collisions +Scenario supporting heavy ions collisions """ import os import sys -from Configuration.DataProcessing.Scenario import * -from Configuration.DataProcessing.Utils import stepALCAPRODUCER,addMonitoring,dictIO,dqmIOSource +from Configuration.DataProcessing.Reco import Reco import FWCore.ParameterSet.Config as cms -from Configuration.DataProcessing.RecoTLR import customisePromptHI,customiseExpressHI -class HeavyIons(Scenario): +class HeavyIons(Reco): + def __init__(self): + Reco.__init__(self) + self.recoSeq='' + self.cbSc='HeavyIons' + self.promptCustoms='Configuration/DataProcessing/RecoTLR.customisePromptHI' + self.expressCustoms='Configuration/DataProcessing/RecoTLR.customiseExpressHI' + self.visCustoms='Configuration/DataProcessing/RecoTLR.customiseExpressHI' """ _HeavyIons_ - Implement configuration building for data processing for - heavy-ion collision data taking + Implement configuration building for data processing for Heavy Ions + collision data taking """ + def _checkMINIAOD(self,**args): + if 'outputs' in args: + for a in args['outputs']: + if a['dataTier'] == 'MINIAOD': + raise RuntimeError("MINIAOD is not supported in HeavyIons") + + + def _setRepackedFlag(self,args): + if not 'repacked' in args: + args['repacked']= True def promptReco(self, globalTag, **args): """ _promptReco_ - Heavy-ion collision data taking prompt reco + Heavy ions collision data taking prompt reco """ + self._checkMINIAOD(**args) + self._setRepackedFlag(args) - skims = ['SiStripCalZeroBias', - 'SiStripCalMinBias', - 'TkAlMinBiasHI', - 'HcalCalMinBias', - 'DtCalibHI'] - step = stepALCAPRODUCER(skims) - options = Options() - options.__dict__.update(defaultOptions.__dict__) - options.scenario = "HeavyIons" - options.step = 'RAW2DIGI,L1Reco,RECO'+step+',DQM,ENDJOB' - options.isRepacked = True - dictIO(options,args) - options.conditions = globalTag - - process = cms.Process('RECO') - cb = ConfigBuilder(options, process = process, with_output=True) + if not 'skims' in args: + args['skims']=['@allForPrompt'] - # Input source - process.source = cms.Source("PoolSource", - fileNames = cms.untracked.vstring() - ) - cb.prepare() + if not 'customs' in args: + args['customs']=[ ] + + args['customs'].append(self.promptCustoms) + + process = Reco.promptReco(self,globalTag, **args) - customisePromptHI(process) - addMonitoring(process) - return process @@ -65,167 +66,56 @@ def expressProcessing(self, globalTag, **args): """ _expressProcessing_ - Heavy-ion collision data taking express processing + Heavy ions collision data taking express processing """ + self._checkMINIAOD(**args) + self._setRepackedFlag(args) - skims = ['SiStripCalZeroBias', - 'TkAlMinBiasHI'] - step = stepALCAPRODUCER(skims) - options = Options() - options.__dict__.update(defaultOptions.__dict__) - options.scenario = "HeavyIons" - options.step = 'RAW2DIGI,L1Reco,RECO'+step+',DQM,ENDJOB' - options.isRepacked = True - dictIO(options,args) - options.conditions = globalTag - - process = cms.Process('RECO') - cb = ConfigBuilder(options, process = process, with_output=True) + if not 'skims' in args: + args['skims']=['@allForExpress'] - # Input source - process.source = cms.Source("NewEventStreamFileReader", - fileNames = cms.untracked.vstring() - ) - cb.prepare() + if not 'customs' in args: + args['customs']=[ ] - customiseExpressHI(process) - addMonitoring(process) + args['customs'].append( self.expressCustoms ) + + process = Reco.expressProcessing(self,globalTag, **args) return process - - def alcaSkim(self, skims, **args): + def visualizationProcessing(self, globalTag, **args): """ - _alcaSkim_ + _visualizationProcessing_ - AlcaReco processing & skims for heavy-ion collisions + Heavy ions collision data taking visualization processing """ + self._checkMINIAOD(**args) + self._setRepackedFlag(args) - globalTag = None - if 'globaltag' in args: - globalTag = args['globaltag'] - - step = "" - if 'PromptCalibProd' in skims: - step = "ALCA:PromptCalibProd" - skims.remove('PromptCalibProd') - - if len( skims ) > 0: - if step != "": - step += "," - step += "ALCAOUTPUT:" - - for skim in skims: - step += (skim+"+") - options = Options() - options.__dict__.update(defaultOptions.__dict__) - options.scenario = "HeavyIons" - options.step = step.rstrip('+') - options.isMC = False - options.isData = True - options.beamspot = None - options.eventcontent = None - options.relval = None - if globalTag != None : - options.conditions = "FrontierConditions_GlobalTag,%s" % globalTag - options.triggerResultsProcess = 'RECO' - - process = cms.Process('ALCA') - cb = ConfigBuilder(options, process = process) - - # Input source - process.source = cms.Source( - "PoolSource", - fileNames = cms.untracked.vstring() - ) + if not 'customs' in args: + args['customs']=[ ] - cb.prepare() - - # FIXME: dirty hack..any way around this? - # Tier0 needs the dataset used for ALCAHARVEST step to be a different data-tier - if 'PromptCalibProd' in step: - process.ALCARECOStreamPromptCalibProd.dataset.dataTier = cms.untracked.string('ALCAPROMPT') - - return process - - - def dqmHarvesting(self, datasetName, runNumber, globalTag, **args): - """ - _dqmHarvesting_ - - Heavy-ion collisions data taking DQM Harvesting - - """ - options = defaultOptions - options.scenario = "HeavyIons" - options.step = "HARVESTING:dqmHarvesting" - options.isMC = False - options.isData = True - options.beamspot = None - options.eventcontent = None - options.name = "EDMtoMEConvert" - options.conditions = "FrontierConditions_GlobalTag,%s" % globalTag - options.arguments = "" - options.evt_type = "" - options.filein = [] - - process = cms.Process("HARVESTING") - if args.get('newDQMIO', False): - process.source = cms.Source("DQMRootSource") - else: - process.source = cms.Source("PoolSource") - configBuilder = ConfigBuilder(options, process = process) - configBuilder.prepare() - - # - # customise process for particular job - # - process.source.processingMode = cms.untracked.string('RunsAndLumis') - process.source.fileNames = cms.untracked(cms.vstring()) - process.maxEvents.input = -1 - process.dqmSaver.workflow = datasetName - process.dqmSaver.saveByLumiSection = 1 - if 'referenceFile' in args and args.get('referenceFile', ''): - process.DQMStore.referenceFileName = \ - cms.untracked.string(args['referenceFile']) + args['customs'].append( self.visCustoms ) + process = Reco.visualizationProcessing(self,globalTag, **args) + return process - def alcaHarvesting(self, globalTag, datasetName, **args): """ _alcaHarvesting_ - Heavy-ion collisions data taking AlCa Harvesting + Heavy ions collisions data taking AlCa Harvesting """ - options = defaultOptions - options.scenario = "HeavyIons" - options.step = "ALCAHARVEST:BeamSpotByRun+BeamSpotByLumi" - options.isMC = False - options.isData = True - options.beamspot = None - options.eventcontent = None - options.name = "ALCAHARVEST" - options.conditions = globalTag - options.arguments = "" - options.evt_type = "" - options.filein = [] - - process = cms.Process("ALCAHARVEST") - process.source = cms.Source("PoolSource") - configBuilder = ConfigBuilder(options, process = process) - configBuilder.prepare() - - # - # customise process for particular job - # - process.source.processingMode = cms.untracked.string('RunsAndLumis') - process.source.fileNames = cms.untracked(cms.vstring()) - process.maxEvents.input = -1 - process.dqmSaver.workflow = datasetName - - return process + self._checkMINIAOD(**args) + + if not 'skims' in args and not 'alcapromptdataset' in args: + args['skims']=['BeamSpotByRun', + 'BeamSpotByLumi', + 'SiStripQuality'] + + return Reco.alcaHarvesting(self, globalTag, datasetName, **args) diff --git a/Configuration/DataProcessing/python/Impl/HeavyIonsEra_Run2_HI.py b/Configuration/DataProcessing/python/Impl/HeavyIonsEra_Run2_HI.py new file mode 100644 index 0000000000000..79776568e6ba9 --- /dev/null +++ b/Configuration/DataProcessing/python/Impl/HeavyIonsEra_Run2_HI.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python +""" +_HeavyIonsEra_Run2_HI_ + +Scenario supporting heavy ions collisions + +""" + +import os +import sys + +from Configuration.DataProcessing.Reco import Reco +import FWCore.ParameterSet.Config as cms +import Configuration.StandardSequences.Eras as eras + +from Configuration.DataProcessing.Impl.HeavyIons import HeavyIons + +class HeavyIonsEra_Run2_HI(HeavyIons): + def __init__(self): + HeavyIons.__init__(self) + self.eras = eras.eras.Run2_HI + """ + _HeavyIonsEra_Run2_HI_ + + Implement configuration building for data processing for Heavy Ions + collision data taking for Run2 + + """ + diff --git a/Configuration/DataProcessing/python/Impl/HeavyIonsRun2.py b/Configuration/DataProcessing/python/Impl/HeavyIonsRun2.py index 33997347e29d2..1422439fddb87 100644 --- a/Configuration/DataProcessing/python/Impl/HeavyIonsRun2.py +++ b/Configuration/DataProcessing/python/Impl/HeavyIonsRun2.py @@ -14,11 +14,12 @@ class HeavyIonsRun2(Reco): def __init__(self): + Reco.__init__(self) self.recoSeq='' self.cbSc='HeavyIons' - self.promptCustoms='Configuration/DataProcessing/RecoTLR.customiseRun2PromptHI' - self.expressCustoms='Configuration/DataProcessing/RecoTLR.customiseRun2ExpressHI' - self.visCustoms='Configuration/DataProcessing/RecoTLR.customiseRun2ExpressHI' + self.promptCustoms='Configuration/DataProcessing/RecoTLR.customiseRun2DeprecatedPromptHI' + self.expressCustoms='Configuration/DataProcessing/RecoTLR.customiseRun2DeprecatedExpressHI' + self.visCustoms='Configuration/DataProcessing/RecoTLR.customiseRun2DeprecatedExpressHI' """ _HeavyIonsRun2_ @@ -33,6 +34,11 @@ def _checkMINIAOD(self,**args): if a['dataTier'] == 'MINIAOD': raise RuntimeError("MINIAOD is not supported in HeavyIonsRun2") + + def _setRepackedFlag(self,args): + if not 'repacked' in args: + args['repacked']= True + def promptReco(self, globalTag, **args): """ _promptReco_ @@ -41,6 +47,7 @@ def promptReco(self, globalTag, **args): """ self._checkMINIAOD(**args) + self._setRepackedFlag(args) if not 'skims' in args: args['skims']=['@allForPrompt'] @@ -64,6 +71,7 @@ def expressProcessing(self, globalTag, **args): """ self._checkMINIAOD(**args) + self._setRepackedFlag(args) if not 'skims' in args: args['skims']=['@allForExpress'] @@ -86,6 +94,7 @@ def visualizationProcessing(self, globalTag, **args): """ self._checkMINIAOD(**args) + self._setRepackedFlag(args) customsFunction = self.visCustoms if not 'customs' in args: diff --git a/Configuration/DataProcessing/python/Impl/Test.py b/Configuration/DataProcessing/python/Impl/Test.py index 19e050efc5286..bd4202361addd 100644 --- a/Configuration/DataProcessing/python/Impl/Test.py +++ b/Configuration/DataProcessing/python/Impl/Test.py @@ -13,6 +13,8 @@ import FWCore.ParameterSet.Config as cms class Test(Scenario): + def __init__(self): + Scenario.__init__(self) """ _Test_ @@ -28,7 +30,7 @@ def promptReco(self, globalTag): Returns skeleton process object """ - return cms.Process("RECO") + return cms.Process("RECO", self.eras) def expressProcessing(self, globalTag): @@ -38,7 +40,7 @@ def expressProcessing(self, globalTag): Returns skeleton process object """ - return cms.Process("Express") + return cms.Process("Express", self.eras) def alcaSkim(self, skims): @@ -48,7 +50,7 @@ def alcaSkim(self, skims): Returns skeleton process object """ - return cms.Process("ALCARECO") + return cms.Process("ALCARECO", self.eras) def dqmHarvesting(self, datasetName, runNumber, globalTag, **args): @@ -85,7 +87,7 @@ def dqmHarvesting(self, datasetName, runNumber, globalTag, **args): options.__dict__.update(args) - process = cms.Process("HARVESTING") + process = cms.Process("HARVESTING", self.eras) process.source = cms.Source("PoolSource") configBuilder = ConfigBuilder(options, process = process) configBuilder.prepare() @@ -114,4 +116,4 @@ def skimming(self, *skims): Returns skeleton process object """ - return cms.Process("Skimming") + return cms.Process("Skimming", self.eras) diff --git a/Configuration/DataProcessing/python/Impl/cosmics.py b/Configuration/DataProcessing/python/Impl/cosmics.py index b378990c3b1cb..01d0e8df036c6 100644 --- a/Configuration/DataProcessing/python/Impl/cosmics.py +++ b/Configuration/DataProcessing/python/Impl/cosmics.py @@ -12,6 +12,10 @@ from Configuration.DataProcessing.Reco import Reco class cosmics(Reco): + def __init__(self): + Reco.__init__(self) + self.recoSeq='' + self.cbSc='cosmics' """ _cosmics_ @@ -30,12 +34,10 @@ def promptReco(self, globalTag, **args): """ if not 'skims' in args: args['skims']= ['@allForPromptCosmics'] - if not 'customs' in args: args['customs']=['Configuration/DataProcessing/RecoTLR.customiseCosmicData'] else: args['customs'].append('Configuration/DataProcessing/RecoTLR.customiseCosmicData') - process = Reco.promptReco(self,globalTag, **args) return process @@ -51,7 +53,6 @@ def expressProcessing(self, globalTag, **args): if not 'skims' in args: args['skims']= ['@allForExpressCosmics'] - if not 'customs' in args: args['customs']=['Configuration/DataProcessing/RecoTLR.customiseCosmicData'] else: @@ -85,6 +86,7 @@ def alcaHarvesting(self, globalTag, datasetName, **args): Proton collisions data taking AlCa Harvesting """ + if not 'skims' in args and not 'alcapromptdataset' in args: args['skims']=['SiStripQuality'] diff --git a/Configuration/DataProcessing/python/Impl/cosmicsEra_Run2_2016.py b/Configuration/DataProcessing/python/Impl/cosmicsEra_Run2_2016.py new file mode 100644 index 0000000000000..42df328c7ce0a --- /dev/null +++ b/Configuration/DataProcessing/python/Impl/cosmicsEra_Run2_2016.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python +""" +_cosmicsEra_Run2_2016_ + +Scenario supporting cosmic data taking + +""" + +import os +import sys + +import Configuration.StandardSequences.Eras as eras +from Configuration.DataProcessing.Impl.cosmics import cosmics + +class cosmicsEra_Run2_2016(cosmics): + def __init__(self): + cosmics.__init__(self) + self.eras = eras.eras.Run2_2016 + """ + _cosmicsEra_Run2_2016_ + + Implement configuration building for data processing for cosmic + data taking in Run2 + + """ diff --git a/Configuration/DataProcessing/python/Impl/cosmicsEra_Run2_25ns.py b/Configuration/DataProcessing/python/Impl/cosmicsEra_Run2_25ns.py new file mode 100644 index 0000000000000..526604cf0c7bc --- /dev/null +++ b/Configuration/DataProcessing/python/Impl/cosmicsEra_Run2_25ns.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python +""" +_cosmicsEra_Run2_25ns_ + +Scenario supporting cosmic data taking + +""" + +import os +import sys + +import Configuration.StandardSequences.Eras as eras +from Configuration.DataProcessing.Impl.cosmics import cosmics + +class cosmicsEra_Run2_25ns(cosmics): + def __init__(self): + cosmics.__init__(self) + self.eras = eras.eras.Run2_25ns + """ + _cosmicsEra_Run2_25ns_ + + Implement configuration building for data processing for cosmic + data taking in Run2 + + """ diff --git a/Configuration/DataProcessing/python/Impl/cosmicsEra_Run2_50ns.py b/Configuration/DataProcessing/python/Impl/cosmicsEra_Run2_50ns.py new file mode 100644 index 0000000000000..fa55fda259ba8 --- /dev/null +++ b/Configuration/DataProcessing/python/Impl/cosmicsEra_Run2_50ns.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python +""" +_cosmicsEra_Run2_50ns_ + +Scenario supporting cosmic data taking + +""" + +import os +import sys + +import Configuration.StandardSequences.Eras as eras +from Configuration.DataProcessing.Impl.cosmics import cosmics + +class cosmicsEra_Run2_50ns(cosmics): + def __init__(self): + cosmics.__init__(self) + self.eras = eras.eras.Run2_50ns + """ + _cosmicsEra_Run2_50ns_ + + Implement configuration building for data processing for cosmic + data taking in Run2 + + """ diff --git a/Configuration/DataProcessing/python/Impl/cosmicsRun2.py b/Configuration/DataProcessing/python/Impl/cosmicsRun2.py index fb65da3436741..2df0212aba786 100644 --- a/Configuration/DataProcessing/python/Impl/cosmicsRun2.py +++ b/Configuration/DataProcessing/python/Impl/cosmicsRun2.py @@ -13,6 +13,7 @@ class cosmicsRun2(Reco): def __init__(self): + Reco.__init__(self) self.recoSeq='' self.cbSc='cosmics' """ @@ -34,9 +35,9 @@ def promptReco(self, globalTag, **args): if not 'skims' in args: args['skims']= ['@allForPromptCosmics'] if not 'customs' in args: - args['customs']=['Configuration/DataProcessing/RecoTLR.customiseCosmicDataRun2'] + args['customs']=['Configuration/DataProcessing/RecoTLR.customiseCosmicDataRun2Deprecated'] else: - args['customs'].append('Configuration/DataProcessing/RecoTLR.customiseCosmicDataRun2') + args['customs'].append('Configuration/DataProcessing/RecoTLR.customiseCosmicDataRun2Deprecated') process = Reco.promptReco(self,globalTag, **args) return process @@ -53,9 +54,9 @@ def expressProcessing(self, globalTag, **args): if not 'skims' in args: args['skims']= ['@allForExpressCosmics'] if not 'customs' in args: - args['customs']=['Configuration/DataProcessing/RecoTLR.customiseCosmicDataRun2'] + args['customs']=['Configuration/DataProcessing/RecoTLR.customiseCosmicDataRun2Deprecated'] else: - args['customs'].append('Configuration/DataProcessing/RecoTLR.customiseCosmicDataRun2') + args['customs'].append('Configuration/DataProcessing/RecoTLR.customiseCosmicDataRun2Deprecated') process = Reco.expressProcessing(self,globalTag, **args) return process @@ -69,9 +70,9 @@ def visualizationProcessing(self, globalTag, **args): """ if not 'customs' in args: - args['customs']=['Configuration/DataProcessing/RecoTLR.customiseCosmicDataRun2'] + args['customs']=['Configuration/DataProcessing/RecoTLR.customiseCosmicDataRun2Deprecated'] else: - args['customs'].append('Configuration/DataProcessing/RecoTLR.customiseCosmicDataRun2') + args['customs'].append('Configuration/DataProcessing/RecoTLR.customiseCosmicDataRun2Deprecated') process = Reco.visualizationProcessing(self,globalTag, **args) process.reconstructionCosmics.remove(process.lumiProducer) diff --git a/Configuration/DataProcessing/python/Impl/hcalnzs.py b/Configuration/DataProcessing/python/Impl/hcalnzs.py index eb479e47929f3..89ef0b0172253 100644 --- a/Configuration/DataProcessing/python/Impl/hcalnzs.py +++ b/Configuration/DataProcessing/python/Impl/hcalnzs.py @@ -13,6 +13,7 @@ class hcalnzs(pp): def __init__(self): + pp.__init__(self) self.recoSeq=':reconstruction_HcalNZS' self.cbSc='pp' """ @@ -31,5 +32,7 @@ def promptReco(self, globalTag, **args): """ if not 'skims' in args: args['skims']=['HcalCalMinBias'] + process = pp.promptReco(self,globalTag,**args) + return process diff --git a/Configuration/DataProcessing/python/Impl/hcalnzsEra_Run2_2016.py b/Configuration/DataProcessing/python/Impl/hcalnzsEra_Run2_2016.py new file mode 100644 index 0000000000000..3bab8205260c8 --- /dev/null +++ b/Configuration/DataProcessing/python/Impl/hcalnzsEra_Run2_2016.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python +""" +_hcalnzsEra_Run2_2016_ + +Scenario supporting proton collisions + +""" + +import os +import sys + +from Configuration.DataProcessing.Impl.hcalnzs import hcalnzs +import Configuration.StandardSequences.Eras as eras + +class hcalnzsEra_Run2_2016(hcalnzs): + def __init__(self): + hcalnzs.__init__(self) + self.recoSeq=':reconstruction_HcalNZS' + self.cbSc='pp' + self.eras = eras.eras.Run2_2016 + self.promptCustoms += [ 'Configuration/DataProcessing/RecoTLR.customisePostEra_Run2_2016' ] + self.expressCustoms += [ 'Configuration/DataProcessing/RecoTLR.customisePostEra_Run2_2016' ] + self.visCustoms += [ 'Configuration/DataProcessing/RecoTLR.customisePostEra_Run2_2016' ] + """ + _hcalnzsEra_Run2_2016_ + + Implement configuration building for data processing for proton + collision data taking + + """ diff --git a/Configuration/DataProcessing/python/Impl/hcalnzsEra_Run2_25ns.py b/Configuration/DataProcessing/python/Impl/hcalnzsEra_Run2_25ns.py new file mode 100644 index 0000000000000..2dc842af5faa7 --- /dev/null +++ b/Configuration/DataProcessing/python/Impl/hcalnzsEra_Run2_25ns.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python +""" +_hcalnzsEra_Run2_25ns_ + +Scenario supporting proton collisions + +""" + +import os +import sys + +from Configuration.DataProcessing.Impl.hcalnzs import hcalnzs +import Configuration.StandardSequences.Eras as eras + +class hcalnzsEra_Run2_25ns(hcalnzs): + def __init__(self): + hcalnzs.__init__(self) + self.recoSeq=':reconstruction_HcalNZS' + self.cbSc='pp' + self.eras = eras.eras.Run2_25ns + self.promptCustoms += [ 'Configuration/DataProcessing/RecoTLR.customisePostEra_Run2_25ns' ] + self.expressCustoms += [ 'Configuration/DataProcessing/RecoTLR.customisePostEra_Run2_25ns' ] + self.visCustoms += [ 'Configuration/DataProcessing/RecoTLR.customisePostEra_Run2_25ns' ] + + """ + _hcalnzsEra_Run2_25ns_ + + Implement configuration building for data processing for proton + collision data taking + + """ diff --git a/Configuration/DataProcessing/python/Impl/hcalnzsRun2.py b/Configuration/DataProcessing/python/Impl/hcalnzsRun2.py index 97c5ec9cb7243..588f536b6d8ea 100644 --- a/Configuration/DataProcessing/python/Impl/hcalnzsRun2.py +++ b/Configuration/DataProcessing/python/Impl/hcalnzsRun2.py @@ -13,6 +13,7 @@ class hcalnzsRun2(pp): def __init__(self): + pp.__init__(self) self.recoSeq=':reconstruction_HcalNZS' self.cbSc='pp' """ @@ -33,9 +34,9 @@ def promptReco(self, globalTag, **args): args['skims']=['HcalCalMinBias'] if not 'customs' in args: - args['customs']=['Configuration/DataProcessing/RecoTLR.customisePromptRun2'] + args['customs']=['Configuration/DataProcessing/RecoTLR.customisePromptRun2Deprecated'] else: - args['customs'].append('Configuration/DataProcessing/RecoTLR.customisePromptRun2') + args['customs'].append('Configuration/DataProcessing/RecoTLR.customisePromptRun2Deprecated') process = pp.promptReco(self,globalTag,**args) diff --git a/Configuration/DataProcessing/python/Impl/pp.py b/Configuration/DataProcessing/python/Impl/pp.py index 53fca9e546107..96e907d9d2c44 100644 --- a/Configuration/DataProcessing/python/Impl/pp.py +++ b/Configuration/DataProcessing/python/Impl/pp.py @@ -13,6 +13,13 @@ import FWCore.ParameterSet.Config as cms class pp(Reco): + def __init__(self): + Reco.__init__(self) + self.recoSeq='' + self.cbSc='pp' + self.promptCustoms= [ 'Configuration/DataProcessing/RecoTLR.customisePrompt' ] + self.expressCustoms=[ 'Configuration/DataProcessing/RecoTLR.customiseExpress' ] + self.visCustoms=[ 'Configuration/DataProcessing/RecoTLR.customiseExpress' ] """ _pp_ @@ -33,9 +40,10 @@ def promptReco(self, globalTag, **args): args['skims']=['@allForPrompt'] if not 'customs' in args: - args['customs']=['Configuration/DataProcessing/RecoTLR.customisePrompt'] - else: - args['customs'].append('Configuration/DataProcessing/RecoTLR.customisePrompt') + args['customs']= [ ] + + for c in self.promptCustoms: + args['customs'].append(c) process = Reco.promptReco(self,globalTag, **args) @@ -53,9 +61,10 @@ def expressProcessing(self, globalTag, **args): args['skims']=['@allForExpress'] if not 'customs' in args: - args['customs']=['Configuration/DataProcessing/RecoTLR.customiseExpress'] - else: - args['customs'].append('Configuration/DataProcessing/RecoTLR.customiseExpress') + args['customs']=[ ] + + for c in self.expressCustoms: + args['customs'].append(c) process = Reco.expressProcessing(self,globalTag, **args) @@ -68,11 +77,11 @@ def visualizationProcessing(self, globalTag, **args): Proton collision data taking visualization processing """ - if not 'customs' in args: - args['customs']=['Configuration/DataProcessing/RecoTLR.customiseExpress'] - else: - args['customs'].append('Configuration/DataProcessing/RecoTLR.customiseExpress') + args['customs']=[ ] + + for c in self.visCustoms: + args['customs'].append(c) process = Reco.visualizationProcessing(self,globalTag, **args) @@ -86,6 +95,7 @@ def alcaHarvesting(self, globalTag, datasetName, **args): """ + if not 'skims' in args and not 'alcapromptdataset' in args: args['skims']=['BeamSpotByRun', 'BeamSpotByLumi', diff --git a/Configuration/DataProcessing/python/Impl/ppEra_Run2_2016.py b/Configuration/DataProcessing/python/Impl/ppEra_Run2_2016.py new file mode 100644 index 0000000000000..3fcbb7101bae3 --- /dev/null +++ b/Configuration/DataProcessing/python/Impl/ppEra_Run2_2016.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python +""" +_ppEra_Run2_2016_ + +Scenario supporting proton collisions + +""" + +import os +import sys + +from Configuration.DataProcessing.Reco import Reco +import FWCore.ParameterSet.Config as cms +import Configuration.StandardSequences.Eras as eras + +from Configuration.DataProcessing.Impl.pp import pp + +class ppEra_Run2_2016(pp): + def __init__(self): + pp.__init__(self) + self.recoSeq='' + self.cbSc='pp' + self.eras=eras.eras.Run2_2016 + self.promptCustoms += [ 'Configuration/DataProcessing/RecoTLR.customisePostEra_Run2_2016' ] + self.expressCustoms += [ 'Configuration/DataProcessing/RecoTLR.customisePostEra_Run2_2016' ] + self.visCustoms += [ 'Configuration/DataProcessing/RecoTLR.customisePostEra_Run2_2016' ] + """ + _ppEra_Run2_2016_ + + Implement configuration building for data processing for proton + collision data taking for Run2 + + """ diff --git a/Configuration/DataProcessing/python/Impl/ppEra_Run2_25ns.py b/Configuration/DataProcessing/python/Impl/ppEra_Run2_25ns.py new file mode 100644 index 0000000000000..6c6b7577c2412 --- /dev/null +++ b/Configuration/DataProcessing/python/Impl/ppEra_Run2_25ns.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python +""" +_ppEra_Run2_25ns_ + +Scenario supporting proton collisions + +""" + +import os +import sys + +from Configuration.DataProcessing.Reco import Reco +import FWCore.ParameterSet.Config as cms +import Configuration.StandardSequences.Eras as eras + +from Configuration.DataProcessing.Impl.pp import pp + +class ppEra_Run2_25ns(pp): + def __init__(self): + pp.__init__(self) + self.recoSeq='' + self.cbSc='pp' + self.eras=eras.eras.Run2_25ns + self.promptCustoms += [ 'Configuration/DataProcessing/RecoTLR.customisePostEra_Run2_25ns' ] + self.expressCustoms += [ 'Configuration/DataProcessing/RecoTLR.customisePostEra_Run2_25ns' ] + self.visCustoms += [ 'Configuration/DataProcessing/RecoTLR.customisePostEra_Run2_25ns' ] + """ + _ppEra_Run2_25ns_ + + Implement configuration building for data processing for proton + collision data taking for Run2 + + """ diff --git a/Configuration/DataProcessing/python/Impl/ppEra_Run2_50ns.py b/Configuration/DataProcessing/python/Impl/ppEra_Run2_50ns.py new file mode 100644 index 0000000000000..41593ca812d10 --- /dev/null +++ b/Configuration/DataProcessing/python/Impl/ppEra_Run2_50ns.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python +""" +_ppEra_Run2_50ns_ + +Scenario supporting proton collisions + +""" + +import os +import sys + +from Configuration.DataProcessing.Reco import Reco +import FWCore.ParameterSet.Config as cms +import Configuration.StandardSequences.Eras as eras + +from Configuration.DataProcessing.Impl.pp import pp + +class ppEra_Run2_50ns(pp): + def __init__(self): + pp.__init__(self) + self.recoSeq='' + self.cbSc='pp' + self.eras=eras.eras.Run2_50ns + """ + _ppEra_Run2_50ns_ + + Implement configuration building for data processing for proton + collision data taking for Run2 + + """ diff --git a/Configuration/DataProcessing/python/Impl/ppRun2.py b/Configuration/DataProcessing/python/Impl/ppRun2.py index 87936c441b8c9..884872ab06b22 100644 --- a/Configuration/DataProcessing/python/Impl/ppRun2.py +++ b/Configuration/DataProcessing/python/Impl/ppRun2.py @@ -14,6 +14,7 @@ class ppRun2(Reco): def __init__(self): + Reco.__init__(self) self.recoSeq='' self.cbSc='pp' """ @@ -36,9 +37,9 @@ def promptReco(self, globalTag, **args): args['skims']=['@allForPrompt'] if not 'customs' in args: - args['customs']=['Configuration/DataProcessing/RecoTLR.customisePromptRun2'] + args['customs']=['Configuration/DataProcessing/RecoTLR.customisePromptRun2Deprecated'] else: - args['customs'].append('Configuration/DataProcessing/RecoTLR.customisePromptRun2') + args['customs'].append('Configuration/DataProcessing/RecoTLR.customisePromptRun2Deprecated') process = Reco.promptReco(self,globalTag, **args) @@ -56,9 +57,9 @@ def expressProcessing(self, globalTag, **args): args['skims']=['@allForExpress'] if not 'customs' in args: - args['customs']=['Configuration/DataProcessing/RecoTLR.customiseExpressRun2'] + args['customs']=['Configuration/DataProcessing/RecoTLR.customiseExpressRun2Deprecated'] else: - args['customs'].append('Configuration/DataProcessing/RecoTLR.customiseExpressRun2') + args['customs'].append('Configuration/DataProcessing/RecoTLR.customiseExpressRun2Deprecated') process = Reco.expressProcessing(self,globalTag, **args) @@ -72,9 +73,9 @@ def visualizationProcessing(self, globalTag, **args): """ if not 'customs' in args: - args['customs']=['Configuration/DataProcessing/RecoTLR.customiseExpressRun2'] + args['customs']=['Configuration/DataProcessing/RecoTLR.customiseExpressRun2Deprecated'] else: - args['customs'].append('Configuration/DataProcessing/RecoTLR.customiseExpressRun2') + args['customs'].append('Configuration/DataProcessing/RecoTLR.customiseExpressRun2Deprecated') process = Reco.visualizationProcessing(self,globalTag, **args) diff --git a/Configuration/DataProcessing/python/Impl/ppRun2B0T.py b/Configuration/DataProcessing/python/Impl/ppRun2B0T.py index 9880e1b36c70a..268fa427924fa 100644 --- a/Configuration/DataProcessing/python/Impl/ppRun2B0T.py +++ b/Configuration/DataProcessing/python/Impl/ppRun2B0T.py @@ -14,6 +14,7 @@ class ppRun2B0T(Reco): def __init__(self): + Reco.__init__(self) self.recoSeq='' self.cbSc='pp' """ @@ -36,9 +37,9 @@ def promptReco(self, globalTag, **args): args['skims']=['@allForPrompt'] if not 'customs' in args: - args['customs']=['Configuration/DataProcessing/RecoTLR.customisePromptRun2B0T'] + args['customs']=['Configuration/DataProcessing/RecoTLR.customisePromptRun2DeprecatedB0T'] else: - args['customs'].append('Configuration/DataProcessing/RecoTLR.customisePromptRun2B0T') + args['customs'].append('Configuration/DataProcessing/RecoTLR.customisePromptRun2DeprecatedB0T') process = Reco.promptReco(self,globalTag, **args) @@ -55,9 +56,9 @@ def expressProcessing(self, globalTag, **args): if not 'skims' in args: args['skims']=['@allForExpress'] if not 'customs' in args: - args['customs']=['Configuration/DataProcessing/RecoTLR.customiseExpressRun2B0T'] + args['customs']=['Configuration/DataProcessing/RecoTLR.customiseExpressRun2DeprecatedB0T'] else: - args['customs'].append('Configuration/DataProcessing/RecoTLR.customiseExpressRun2B0T') + args['customs'].append('Configuration/DataProcessing/RecoTLR.customiseExpressRun2DeprecatedB0T') process = Reco.expressProcessing(self,globalTag, **args) @@ -72,9 +73,9 @@ def visualizationProcessing(self, globalTag, **args): """ if not 'customs' in args: - args['customs']=['Configuration/DataProcessing/RecoTLR.customiseExpressRun2B0T'] + args['customs']=['Configuration/DataProcessing/RecoTLR.customiseExpressRun2DeprecatedB0T'] else: - args['customs'].append('Configuration/DataProcessing/RecoTLR.customiseExpressRun2B0T') + args['customs'].append('Configuration/DataProcessing/RecoTLR.customiseExpressRun2DeprecatedB0T') process = Reco.visualizationProcessing(self,globalTag, **args) diff --git a/Configuration/DataProcessing/python/Impl/ppRun2at50ns.py b/Configuration/DataProcessing/python/Impl/ppRun2at50ns.py index 56bc9b42c29e8..23f0f9b67c3d8 100644 --- a/Configuration/DataProcessing/python/Impl/ppRun2at50ns.py +++ b/Configuration/DataProcessing/python/Impl/ppRun2at50ns.py @@ -14,6 +14,7 @@ class ppRun2at50ns(Reco): def __init__(self): + Reco.__init__(self) self.recoSeq='' self.cbSc='pp' """ @@ -36,9 +37,9 @@ def promptReco(self, globalTag, **args): args['skims']=['@allForPrompt'] if not 'customs' in args: - args['customs']=['Configuration/DataProcessing/RecoTLR.customisePromptRun2_50ns'] + args['customs']=['Configuration/DataProcessing/RecoTLR.customisePromptRun2Deprecated_50ns'] else: - args['customs'].append('Configuration/DataProcessing/RecoTLR.customisePromptRun2_50ns') + args['customs'].append('Configuration/DataProcessing/RecoTLR.customisePromptRun2Deprecated_50ns') process = Reco.promptReco(self,globalTag, **args) @@ -56,9 +57,9 @@ def expressProcessing(self, globalTag, **args): args['skims']=['@allForExpress'] if not 'customs' in args: - args['customs']=['Configuration/DataProcessing/RecoTLR.customiseExpressRun2_50ns'] + args['customs']=['Configuration/DataProcessing/RecoTLR.customiseExpressRun2Deprecated_50ns'] else: - args['customs'].append('Configuration/DataProcessing/RecoTLR.customiseExpressRun2_50ns') + args['customs'].append('Configuration/DataProcessing/RecoTLR.customiseExpressRun2Deprecated_50ns') process = Reco.expressProcessing(self,globalTag, **args) @@ -72,9 +73,9 @@ def visualizationProcessing(self, globalTag, **args): """ if not 'customs' in args: - args['customs']=['Configuration/DataProcessing/RecoTLR.customiseExpressRun2_50ns'] + args['customs']=['Configuration/DataProcessing/RecoTLR.customiseExpressRun2Deprecated_50ns'] else: - args['customs'].append('Configuration/DataProcessing/RecoTLR.customiseExpressRun2_50ns') + args['customs'].append('Configuration/DataProcessing/RecoTLR.customiseExpressRun2Deprecated_50ns') process = Reco.visualizationProcessing(self,globalTag, **args) diff --git a/Configuration/DataProcessing/python/Impl/preprodmc.py b/Configuration/DataProcessing/python/Impl/preprodmc.py index 2a9b90acdfd0a..e51ffb60391ca 100644 --- a/Configuration/DataProcessing/python/Impl/preprodmc.py +++ b/Configuration/DataProcessing/python/Impl/preprodmc.py @@ -14,6 +14,8 @@ class preprodmc(Scenario): + def __init__(self): + Scenario.__init__(self) """ _preprodmc_ @@ -41,7 +43,7 @@ def dqmHarvesting(self, datasetName, runNumber, globalTag, **args): options.evt_type = "" options.filein = [] - process = cms.Process("HARVESTING") + process = cms.Process("HARVESTING", self.eras) if args.get('newDQMIO', False): process.source = cms.Source("DQMRootSource") else: diff --git a/Configuration/DataProcessing/python/Impl/prodmc.py b/Configuration/DataProcessing/python/Impl/prodmc.py index a8a2121c8b723..f60ee69230c66 100644 --- a/Configuration/DataProcessing/python/Impl/prodmc.py +++ b/Configuration/DataProcessing/python/Impl/prodmc.py @@ -13,6 +13,8 @@ import FWCore.ParameterSet.Config as cms class prodmc(Scenario): + def __init__(self): + Scenario.__init__(self) """ _prodmc_ @@ -40,7 +42,7 @@ def dqmHarvesting(self, datasetName, runNumber, globalTag, **args): options.evt_type = "" options.filein = [] - process = cms.Process("HARVESTING") + process = cms.Process("HARVESTING", self.eras) if args.get('newDQMIO', False): process.source = cms.Source("DQMRootSource") else: diff --git a/Configuration/DataProcessing/python/Impl/relvalgen.py b/Configuration/DataProcessing/python/Impl/relvalgen.py index 46b190dd58c74..f8e58b6d79583 100644 --- a/Configuration/DataProcessing/python/Impl/relvalgen.py +++ b/Configuration/DataProcessing/python/Impl/relvalgen.py @@ -13,6 +13,8 @@ import FWCore.ParameterSet.Config as cms class relvalgen(Scenario): + def __init__(self): + Scenario.__init__(self) """ _relvalgen_ @@ -42,7 +44,7 @@ def dqmHarvesting(self, datasetName, runNumber, globalTag, **args): options.filein = [] options.harvesting = "AtJobEnd" - process = cms.Process("HARVESTING") + process = cms.Process("HARVESTING", self.eras) process.source = cms.Source("PoolSource") configBuilder = ConfigBuilder(options, process = process) configBuilder.prepare() diff --git a/Configuration/DataProcessing/python/Impl/relvalmc.py b/Configuration/DataProcessing/python/Impl/relvalmc.py index de001c08b7d5e..e44cfd54170a7 100644 --- a/Configuration/DataProcessing/python/Impl/relvalmc.py +++ b/Configuration/DataProcessing/python/Impl/relvalmc.py @@ -14,6 +14,8 @@ class relvalmc(Scenario): + def __init__(self): + Scenario.__init__(self) """ _relvalmc_ @@ -41,7 +43,7 @@ def dqmHarvesting(self, datasetName, runNumber, globalTag, **args): options.evt_type = "" options.filein = [] - process = cms.Process("HARVESTING") + process = cms.Process("HARVESTING", self.eras) process.source = cms.Source("PoolSource") configBuilder = ConfigBuilder(options, process = process) configBuilder.prepare() diff --git a/Configuration/DataProcessing/python/Impl/relvalmcfs.py b/Configuration/DataProcessing/python/Impl/relvalmcfs.py index 80f46ec6d5542..8b47f3788f72b 100644 --- a/Configuration/DataProcessing/python/Impl/relvalmcfs.py +++ b/Configuration/DataProcessing/python/Impl/relvalmcfs.py @@ -14,6 +14,8 @@ class relvalmcfs(Scenario): + def __init__(self): + Scenario.__init__(self) """ _relvalmcfs_ @@ -38,7 +40,7 @@ def dqmHarvesting(self, datasetName, runNumber, globalTag, **args): options.name = "EDMtoMEConvert" options.conditions = globalTag - process = cms.Process("HARVESTING") + process = cms.Process("HARVESTING", self.eras) process.source = cms.Source("PoolSource") configBuilder = ConfigBuilder(options, process = process) configBuilder.prepare() diff --git a/Configuration/DataProcessing/python/Reco.py b/Configuration/DataProcessing/python/Reco.py index aeeb5c8bb90d3..8d209a92dd9c2 100644 --- a/Configuration/DataProcessing/python/Reco.py +++ b/Configuration/DataProcessing/python/Reco.py @@ -16,6 +16,7 @@ class Reco(Scenario): def __init__(self): + Scenario.__init__(self) self.recoSeq='' self.cbSc=self.__class__.__name__ """ @@ -26,6 +27,16 @@ def __init__(self): """ + + def _checkRepackedFlag(self, options, **args): + if 'repacked' in args: + if args['repacked'] == True: + options.isRepacked = True + else: + options.isRepacked = False + + + def promptReco(self, globalTag, **args): """ _promptReco_ @@ -55,6 +66,7 @@ def promptReco(self, globalTag, **args): """ options.runUnscheduled=True + self._checkRepackedFlag(options, **args) if 'customs' in args: options.customisation_file=args['customs'] @@ -69,7 +81,7 @@ def promptReco(self, globalTag, **args): dictIO(options,args) options.conditions = gtNameAndConnect(globalTag, args) - process = cms.Process('RECO') + process = cms.Process('RECO', self.eras) cb = ConfigBuilder(options, process = process, with_output = True) # Input source @@ -112,11 +124,13 @@ def expressProcessing(self, globalTag, **args): options.filein = 'tobeoverwritten.xyz' if 'inputSource' in args: options.filetype = args['inputSource'] - process = cms.Process('RECO') + process = cms.Process('RECO', self.eras) if 'customs' in args: options.customisation_file=args['customs'] + self._checkRepackedFlag(options,**args) + cb = ConfigBuilder(options, process = process, with_output = True, with_input = True) cb.prepare() @@ -161,11 +175,13 @@ def visualizationProcessing(self, globalTag, **args): print "Using %s source"%options.filetype - process = cms.Process('RECO') + process = cms.Process('RECO', self.eras) if 'customs' in args: options.customisation_file=args['customs'] + self._checkRepackedFlag(options, **args) + cb = ConfigBuilder(options, process = process, with_output = True, with_input = True) cb.prepare() @@ -214,7 +230,7 @@ def alcaSkim(self, skims, **args): if 'customs' in args: options.customisation_file=args['customs'] - process = cms.Process('ALCA') + process = cms.Process('ALCA', self.eras) cb = ConfigBuilder(options, process = process) # Input source @@ -247,7 +263,7 @@ def dqmHarvesting(self, datasetName, runNumber, globalTag, **args): options.name = "EDMtoMEConvert" options.conditions = gtNameAndConnect(globalTag, args) - process = cms.Process("HARVESTING") + process = cms.Process("HARVESTING", self.eras) process.source = dqmIOSource(args) if 'customs' in args: @@ -282,7 +298,7 @@ def alcaHarvesting(self, globalTag, datasetName, **args): options.name = "ALCAHARVEST" options.conditions = gtNameAndConnect(globalTag, args) - process = cms.Process("ALCAHARVEST") + process = cms.Process("ALCAHARVEST", self.eras) process.source = cms.Source("PoolSource") if 'customs' in args: @@ -313,7 +329,7 @@ def skimming(self, skims, globalTag,**options): options.step = "SKIM:"+('+'.join(skims)) options.name = "SKIM" options.conditions = gtNameAndConnect(globalTag, args) - process = cms.Process("SKIM") + process = cms.Process("SKIM", self.eras) process.source = cms.Source("PoolSource") if 'customs' in args: @@ -331,7 +347,7 @@ def repack(self, **args): options.filein='file.dat' options.filetype='DAT' options.scenario = self.cbSc if hasattr(self,'cbSc') else self.__class__.__name__ - process = cms.Process('REPACK') + process = cms.Process('REPACK', self.eras) cb = ConfigBuilder(options, process = process, with_output = True,with_input=True) cb.prepare() print cb.pythonCfgCode diff --git a/Configuration/DataProcessing/python/RecoTLR.py b/Configuration/DataProcessing/python/RecoTLR.py index ee1061648d9c5..cd32c5d633856 100644 --- a/Configuration/DataProcessing/python/RecoTLR.py +++ b/Configuration/DataProcessing/python/RecoTLR.py @@ -21,9 +21,29 @@ def _addLumiProducer(process): return process -#gone with the fact that there is no difference between production and development sequence -#def customiseCommon(process): -# return (process) +def _overridesFor50ns(process): + process.bunchSpacingProducer.bunchSpacingOverride = cms.uint32(50) + process.bunchSpacingProducer.overrideBunchSpacing = cms.bool(True) + + return process + +############################################################################## +# post-era customizations +# these are here instead of generating Data-specific eras +############################################################################## +def _hcalCustoms25ns(process): + import RecoLocalCalo.HcalRecAlgos.RemoveAddSevLevel as HcalRemoveAddSevLevel + HcalRemoveAddSevLevel.AddFlag(process.hcalRecAlgos,"HFDigiTime",8) + HcalRemoveAddSevLevel.AddFlag(process.hcalRecAlgos,"HBHEFlatNoise",8) + return process + +def customisePostEra_Run2_25ns(process): + _hcalCustoms25ns(process) + return process + +def customisePostEra_Run2_2016(process): + _hcalCustoms25ns(process) + return process ############################################################################## @@ -42,11 +62,64 @@ def customisePPMC(process): ############################################################################## def customiseCosmicData(process): + return process + + +############################################################################## +def customiseCosmicMC(process): + return process + +############################################################################## +def customiseVALSKIM(process): + print "WARNING" + print "this method is outdated, please use RecoTLR.customisePPData" + process= customisePPData(process) return process + +############################################################################## +def customiseExpress(process): + process= customisePPData(process) + process = _swapOfflineBSwithOnline(process) + + return process +############################################################################## +def customisePrompt(process): + process= customisePPData(process) + process = _addLumiProducer(process) + + return process + +############################################################################## +# Heavy Ions +############################################################################## +# keep it in case modification is needed +def customiseCommonHI(process): + return process + +############################################################################## +def customiseExpressHI(process): + process = customiseCommonHI(process) + process = _swapOfflineBSwithOnline(process) + + return process +############################################################################## +def customisePromptHI(process): + process = customiseCommonHI(process) + + process = _addLumiProducer(process) + + return process + +############################################################################## +############################################################################## +## +## ALL FUNCTIONS BELOW ARE GOING TO BE REMOVED IN 81X +## +############################################################################## ############################################################################## # this is supposed to be added on top of other (Run1) data customs def customiseDataRun2Common(process): @@ -84,9 +157,7 @@ def customiseDataRun2Common_withStage1(process): def customiseDataRun2Common_25ns(process): process = customiseDataRun2Common_withStage1(process) - import RecoLocalCalo.HcalRecAlgos.RemoveAddSevLevel as HcalRemoveAddSevLevel - HcalRemoveAddSevLevel.AddFlag(process.hcalRecAlgos,"HFDigiTime",8) - HcalRemoveAddSevLevel.AddFlag(process.hcalRecAlgos,"HBHEFlatNoise",8) + _hcalCustoms25ns(process) from SLHCUpgradeSimulations.Configuration.postLS1Customs import customise_DQM_25ns if hasattr(process,'dqmoffline_step'): @@ -97,127 +168,70 @@ def customiseDataRun2Common_25ns(process): def customiseDataRun2Common_50nsRunsAfter253000(process): process = customiseDataRun2Common_withStage1(process) - if hasattr(process,'particleFlowClusterECAL'): - process.particleFlowClusterECAL.energyCorrector.autoDetectBunchSpacing = False - process.particleFlowClusterECAL.energyCorrector.bunchSpacing = cms.int32(50) - if hasattr(process,'ecalMultiFitUncalibRecHit'): - process.ecalMultiFitUncalibRecHit.algoPSet.useLumiInfoRunHeader = False - process.ecalMultiFitUncalibRecHit.algoPSet.bunchSpacing = cms.int32(50) + process = _overridesFor50ns(process) return process ############################################################################## -def customiseCosmicDataRun2(process): - process = customiseCosmicData(process) - process = customiseDataRun2Common_25ns(process) - return process - - -############################################################################## -def customiseCosmicMC(process): +# keep it in case modification is needed +def customiseRun2CommonHI(process): + process = customiseDataRun2Common_withStage1(process) - return process - -############################################################################## -def customiseVALSKIM(process): - print "WARNING" - print "this method is outdated, please use RecoTLR.customisePPData" - process= customisePPData(process) + process = _overridesFor50ns(process) + # HI Specific additional customizations: + # from L1Trigger.L1TCommon.customsPostLS1 import customiseSimL1EmulatorForPostLS1_Additional_HI + # process = customiseSimL1EmulatorForPostLS1_Additional_HI(process) + return process - ############################################################################## -def customiseExpress(process): - process= customisePPData(process) - process = _swapOfflineBSwithOnline(process) - +def customiseCosmicDataRun2Deprecated(process): + process = customiseCosmicData(process) + process = customiseDataRun2Common_25ns(process) return process ############################################################################## -def customiseExpressRun2(process): +def customiseExpressRun2Deprecated(process): process = customiseExpress(process) process = customiseDataRun2Common_25ns(process) return process -def customiseExpressRun2_50ns(process): +def customiseExpressRun2Deprecated_50ns(process): process = customiseExpress(process) process = customiseDataRun2Common_50nsRunsAfter253000(process) return process -def customiseExpressRun2B0T(process): +def customiseExpressRun2DeprecatedB0T(process): process=customiseForRunI(process) - process=customiseExpressRun2(process) + process=customiseExpressRun2Deprecated(process) return process ############################################################################## -def customisePrompt(process): - process= customisePPData(process) - process = _addLumiProducer(process) - - return process - -############################################################################## -def customisePromptRun2(process): +def customisePromptRun2Deprecated(process): process = customisePrompt(process) process = customiseDataRun2Common_25ns(process) return process -def customisePromptRun2_50ns(process): +def customisePromptRun2Deprecated_50ns(process): process = customisePrompt(process) process = customiseDataRun2Common_50nsRunsAfter253000(process) return process -def customisePromptRun2B0T(process): +def customisePromptRun2DeprecatedB0T(process): process=customiseForRunI(process) - process=customisePromptRun2(process) - return process - - -############################################################################## -# Heavy Ions -############################################################################## -# keep it in case modification is needed -def customiseCommonHI(process): - return process - -############################################################################## -def customiseExpressHI(process): - process = customiseCommonHI(process) - process = _swapOfflineBSwithOnline(process) - - return process - -############################################################################## -def customisePromptHI(process): - process = customiseCommonHI(process) - process = _swapOfflineBSwithOnline(process) - - process = _addLumiProducer(process) - + process=customisePromptRun2Deprecated(process) return process ############################################################################## -# keep it in case modification is needed -def customiseRun2CommonHI(process): - process = customiseDataRun2Common_withStage1(process) - - # HI Specific additional customizations: - # from L1Trigger.L1TCommon.customsPostLS1 import customiseSimL1EmulatorForPostLS1_Additional_HI - # process = customiseSimL1EmulatorForPostLS1_Additional_HI(process) - - return process - -############################################################################## -def customiseRun2ExpressHI(process): +def customiseRun2DeprecatedExpressHI(process): process = customiseRun2CommonHI(process) process = _swapOfflineBSwithOnline(process) return process ############################################################################## -def customiseRun2PromptHI(process): +def customiseRun2DeprecatedPromptHI(process): process = customiseRun2CommonHI(process) - process = _swapOfflineBSwithOnline(process) process = _addLumiProducer(process) diff --git a/Configuration/DataProcessing/python/Scenario.py b/Configuration/DataProcessing/python/Scenario.py index a756952645f0e..4f828572ba9d8 100644 --- a/Configuration/DataProcessing/python/Scenario.py +++ b/Configuration/DataProcessing/python/Scenario.py @@ -27,7 +27,7 @@ class Scenario(object): """ def __init__(self): - pass + self.eras=cms.Modifier() def promptReco(self, globalTag, **options): diff --git a/Configuration/DataProcessing/test/RunPromptReco.py b/Configuration/DataProcessing/test/RunPromptReco.py index 5a560c6da22dc..0fa8ac2f5f1ee 100644 --- a/Configuration/DataProcessing/test/RunPromptReco.py +++ b/Configuration/DataProcessing/test/RunPromptReco.py @@ -9,6 +9,7 @@ import sys import getopt +import traceback from Configuration.DataProcessing.GetScenario import getScenario @@ -29,6 +30,8 @@ def __init__(self): self.alcaRecos = None self.PhysicsSkims = None self.dqmSeq = None + self.setRepacked = False + self.isRepacked = False def __call__(self): if self.scenario == None: @@ -93,6 +96,9 @@ def __call__(self): if self.dqmSeq: kwds['dqmSeq'] = self.dqmSeq + if self.setRepacked: + kwds['repacked'] = self.isRepacked + process = scenario.promptReco(self.globalTag, **kwds) except NotImplementedError as ex: @@ -100,7 +106,7 @@ def __call__(self): return except Exception as ex: msg = "Error creating Prompt Reco config:\n" - msg += str(ex) + msg += traceback.format_exc() raise RuntimeError(msg) process.source.fileNames.append(self.inputLFN) @@ -119,7 +125,7 @@ def __call__(self): if __name__ == '__main__': valid = ["scenario=", "reco", "aod", "miniaod","dqm", "dqmio", "no-output", - "global-tag=", "lfn=", "alcarecos=", "PhysicsSkims=", "dqmSeq=" ] + "global-tag=", "lfn=", "alcarecos=", "PhysicsSkims=", "dqmSeq=", "isRepacked", "isNotRepacked" ] usage = \ """ RunPromptReco.py @@ -131,6 +137,7 @@ def __call__(self): --miniaod (to enable MiniAOD output) --dqm (to enable DQM output) --dqmio (to enable DQMIO output) + --isRepacked --isNotRepacked (to override default repacked flags) --no-output (create config with no output, overrides other settings) --global-tag=GlobalTag --lfn=/store/input/lfn @@ -182,5 +189,12 @@ def __call__(self): recoinator.PhysicsSkims = [ x for x in arg.split('+') if len(x) > 0 ] if opt == "--dqmSeq": recoinator.dqmSeq = [ x for x in arg.split('+') if len(x) > 0 ] + if opt == "--isRepacked": + recoinator.setRepacked = True + recoinator.isRepacked = True + if opt == "--isNotRepacked": + recoinator.setRepacked = True + recoinator.isRepacked = False + recoinator() diff --git a/Configuration/DataProcessing/test/run_CfgTest.sh b/Configuration/DataProcessing/test/run_CfgTest.sh index 0396b9e54bdf5..e33311b463ab4 100755 --- a/Configuration/DataProcessing/test/run_CfgTest.sh +++ b/Configuration/DataProcessing/test/run_CfgTest.sh @@ -13,7 +13,7 @@ function runTest { echo $1 ; python $1 || die "Failure for configuration: $1" $? runTest "${LOCAL_TEST_DIR}/RunRepack.py --select-events HLT:path1,HLT:path2 --lfn /store/whatever" -declare -a arr=("cosmics" "pp" "cosmicsRun2" "ppRun2" "ppRun2B0T" "HeavyIons" "ppRun2at50ns") +declare -a arr=("cosmics" "pp" "cosmicsRun2" "cosmicsEra_Run2_25ns" "cosmicsEra_Run2_2016" "ppRun2" "ppRun2B0T" "ppRun2at50ns" "ppEra_Run2_50ns" "ppEra_Run2_25ns" "ppEra_Run2_2016") for scenario in "${arr[@]}" do runTest "${LOCAL_TEST_DIR}/RunExpressProcessing.py --scenario $scenario --global-tag GLOBALTAG --lfn /store/whatever --fevt --dqmio --alcareco TkAlMinBias+SiStripCalMinBias " @@ -22,13 +22,13 @@ do done -declare -a arr=("cosmics" "pp" "cosmicsRun2" "ppRun2" "HeavyIons" "AlCaLumiPixels" "AlCaTestEnable" "hcalnzs" "ppRun2B0T" "ppRun2at50ns") +declare -a arr=("cosmics" "pp" "cosmicsRun2" "cosmicsEra_Run2_25ns" "cosmicsEra_Run2_2016" "ppRun2" "AlCaLumiPixels" "AlCaTestEnable" "hcalnzs" "hcalnzsRun2" "hcalnzsEra_Run2_25ns" "hcalnzsEra_Run2_2016" "ppRun2B0T" "ppRun2at50ns" "ppEra_Run2_50ns" "ppEra_Run2_25ns" "ppEra_Run2_2016") for scenario in "${arr[@]}" do runTest "${LOCAL_TEST_DIR}/RunPromptReco.py --scenario $scenario --reco --aod --dqmio --global-tag GLOBALTAG --lfn=/store/whatever --alcareco TkAlMinBias+SiStripCalMinBias" done -declare -a arr=("HeavyIonsRun2") +declare -a arr=("HeavyIonsRun2" "HeavyIonsEra_Run2_HI") for scenario in "${arr[@]}" do runTest "${LOCAL_TEST_DIR}/RunExpressProcessing.py --scenario $scenario --global-tag GLOBALTAG --lfn /store/whatever --fevt --dqmio --alcareco TkAlMinBiasHI+SiStripCalMinBias " @@ -36,14 +36,14 @@ do done -declare -a arr=("cosmics" "pp" "cosmicsRun2" "ppRun2" "HeavyIons" "HeavyIonsRun2" "AlCaLumiPixels" "ppRun2B0T" "ppRun2at50ns") +declare -a arr=("cosmics" "pp" "cosmicsRun2" "cosmicsEra_Run2_25ns" "cosmicsEra_Run2_2016" "ppRun2" "HeavyIons" "HeavyIonsRun2" "HeavyIonsEra_Run2_HI" "AlCaLumiPixels" "ppRun2B0T" "ppRun2at50ns" "ppEra_Run2_50ns" "ppEra_Run2_25ns" "ppEra_Run2_2016") for scenario in "${arr[@]}" do runTest "${LOCAL_TEST_DIR}/RunAlcaSkimming.py --scenario $scenario --lfn=/store/whatever --global-tag GLOBALTAG --skims SiStripCalZeroBias,SiStripCalMinBias,PromptCalibProd" runTest "${LOCAL_TEST_DIR}/RunDQMHarvesting.py --scenario $scenario --lfn /store/whatever --run 12345 --dataset /A/B/C --global-tag GLOBALTAG" done -declare -a arr=("ppRun2" "ppRun2B0T" "ppRun2at50ns") +declare -a arr=("ppRun2" "ppRun2B0T" "ppRun2at50ns" "ppEra_Run2_50ns" "ppEra_Run2_25ns" "ppEra_Run2_2016" ) for scenario in "${arr[@]}" do runTest "${LOCAL_TEST_DIR}/RunPromptReco.py --scenario $scenario --reco --aod --miniaod --dqmio --global-tag GLOBALTAG --lfn=/store/whatever --alcareco TkAlMinBias+SiStripCalMinBias" diff --git a/Configuration/StandardSequences/python/ReconstructionCosmics_cff.py b/Configuration/StandardSequences/python/ReconstructionCosmics_cff.py index d343eb1a6192d..455a85add441f 100644 --- a/Configuration/StandardSequences/python/ReconstructionCosmics_cff.py +++ b/Configuration/StandardSequences/python/ReconstructionCosmics_cff.py @@ -5,8 +5,8 @@ from RecoLuminosity.LumiProducer.lumiProducer_cff import * from RecoLuminosity.LumiProducer.bunchSpacingProducer_cfi import * # no bunchspacing in cosmics -bunchSpacingProducer.overrideBunchSpacing=True -bunchSpacingProducer.bunchSpacingOverride=50 +bunchSpacingProducer.overrideBunchSpacing= cms.bool(True) +bunchSpacingProducer.bunchSpacingOverride= cms.uint32(50) # # tracker diff --git a/DPGAnalysis/Skims/python/logErrorSkim_cff.py b/DPGAnalysis/Skims/python/logErrorSkim_cff.py index 9fa4334b776c1..c31201a01f4df 100644 --- a/DPGAnalysis/Skims/python/logErrorSkim_cff.py +++ b/DPGAnalysis/Skims/python/logErrorSkim_cff.py @@ -1,10 +1,4 @@ from FWCore.Modules.logErrorFilter_cfi import * -from Configuration.StandardSequences.RawToDigi_Data_cff import gtEvmDigis -stableBeam = cms.EDFilter("HLTBeamModeFilter", - L1GtEvmReadoutRecordTag = cms.InputTag("gtEvmDigis"), - AllowedBeamMode = cms.vuint32(11), - saveTags = cms.bool(False) - ) -logerrorseq=cms.Sequence(gtEvmDigis+stableBeam+logErrorSkimFilter) -logerrormonitorseq=cms.Sequence(gtEvmDigis+stableBeam+logErrorFilter) +logerrorseq=cms.Sequence(logErrorSkimFilter) +logerrormonitorseq=cms.Sequence(logErrorFilter) diff --git a/RecoLuminosity/LumiProducer/python/bunchSpacingProducer_cfi.py b/RecoLuminosity/LumiProducer/python/bunchSpacingProducer_cfi.py new file mode 100644 index 0000000000000..95810b045de94 --- /dev/null +++ b/RecoLuminosity/LumiProducer/python/bunchSpacingProducer_cfi.py @@ -0,0 +1,6 @@ +import FWCore.ParameterSet.Config as cms +bunchSpacingProducer = cms.EDProducer("BunchSpacingProducer") + +from Configuration.StandardSequences.Eras import eras +eras.run2_50ns_specific.toModify( bunchSpacingProducer, bunchSpacingOverride = cms.uint32(50)) +eras.run2_50ns_specific.toModify( bunchSpacingProducer, overrideBunchSpacing = cms.bool(True)) diff --git a/SLHCUpgradeSimulations/Configuration/python/postLS1Customs.py b/SLHCUpgradeSimulations/Configuration/python/postLS1Customs.py index 5d2905696bc80..e543003a09f63 100644 --- a/SLHCUpgradeSimulations/Configuration/python/postLS1Customs.py +++ b/SLHCUpgradeSimulations/Configuration/python/postLS1Customs.py @@ -788,7 +788,8 @@ def customise_L1Emulator(process): def customise_RawToDigi(process): - process.RawToDigi.remove(process.gtEvmDigis) + if hasattr(process,'gtEvmDigis'): + process.RawToDigi.remove(process.gtEvmDigis) return process