diff --git a/Configuration/PyReleaseValidation/python/relval_steps.py b/Configuration/PyReleaseValidation/python/relval_steps.py index 0736df59c3819..b07cc3e87f0c7 100644 --- a/Configuration/PyReleaseValidation/python/relval_steps.py +++ b/Configuration/PyReleaseValidation/python/relval_steps.py @@ -3687,6 +3687,16 @@ def gen2021HiMix(fragment,howMuch): beamspot=upgradeProperties[year][k].get('BeamSpot', None) # setup baseline steps + upgradeStepDict['Gen'][k]= {'-s' : 'GEN', + '-n' : 10, + '--conditions' : gt, + '--beamspot' : 'Realistic25ns13TeVEarly2017Collision', + '--datatier' : 'GEN', + '--eventcontent': 'FEVTDEBUG', + '--geometry' : geom + } + if beamspot is not None: upgradeStepDict['Gen'][k]['--beamspot']=beamspot + upgradeStepDict['GenSim'][k]= {'-s' : 'GEN,SIM', '-n' : 10, '--conditions' : gt, @@ -3849,24 +3859,24 @@ def gen2021HiMix(fragment,howMuch): '--scenario' : 'pp' } - upgradeStepDict['FastSimRun3'][k]={'-s':'GEN,SIM,RECOBEFMIX,DIGI:pdigi_valid,L1,DIGI2RAW,L1Reco,RECO,PAT,VALIDATION:@standardValidation,DQM:@standardDQMFS', + upgradeStepDict['FastSimRun3'][k]={'-s':'SIM,RECOBEFMIX,DIGI:pdigi_valid,L1,DIGI2RAW,L1Reco,RECO,PAT,NANO,VALIDATION:@standardValidation+@miniAODValidation,DQM:@standardDQMFS+@miniAODDQM+@nanoAODDQM', '--fast':'', '--era':'Run3_FastSim', '--beamspot':beamspot, '--conditions':gt, '--geometry':geom, - '--eventcontent':'FEVTDEBUGHLT,MINIAODSIM,DQM', - '--datatier':'GEN-SIM-DIGI-RECO,MINIAODSIM,DQMIO', - '--relval':'27000,3000'} + '--eventcontent':'FEVTDEBUGHLT,MINIAODSIM,NANOEDMAODSIM,DQM', + '--datatier':'GEN-SIM-DIGI-RECO,MINIAODSIM,NANOAODSIM,DQMIO', + } - upgradeStepDict['HARVESTFastRun3'][k]={'-s':'HARVESTING:validationHarvesting', + upgradeStepDict['HARVESTFastRun3'][k]={'-s':'HARVESTING:validationHarvesting+@miniAODValidation+@miniAODDQM+@nanoAODDQM', '--conditions':gt, '--mc':'', '--fast':'', '--geometry':geom, '--scenario':'pp', '--filetype':'DQM', - '--filein':'file:step1_inDQM.root'} + '--filein':'file:step2_inDQM.root'} upgradeStepDict['Nano'][k] = {'-s':'NANO,DQM:@nanoAODDQM', '--conditions':gt, @@ -3905,7 +3915,7 @@ def gen2021HiMix(fragment,howMuch): for step in upgradeStepDict.keys(): # we need to do this for each fragment - if 'Sim' in step or 'Premix' in step: + if ('Sim' in step and 'Fast' not in step) or ('Premix' in step) or ('Sim' not in step and 'Gen' in step): for frag,info in upgradeFragments.items(): howMuch=info.howMuch for key in [key for year in upgradeKeys for key in upgradeKeys[year]]: @@ -3930,8 +3940,11 @@ def gen2021HiMix(fragment,howMuch): istep = step+preventReuseKeyword if 'FastSim' not in k and s+'INPUT' not in steps and s in baseDataSetReleaseBetter and defaultDataSets[key] != '' and \ (istep not in upgradeStepDict or key not in upgradeStepDict[istep] or upgradeStepDict[istep][key] is not None): - steps[k+'INPUT']={'INPUT':InputInfo(dataSet='/RelVal'+info.dataset+'/%s/GEN-SIM'%(baseDataSetReleaseBetter[s],),location='STD')} - else: + if 'FS' not in key: #For FullSim + steps[k+'INPUT']={'INPUT':InputInfo(dataSet='/RelVal'+info.dataset+'/%s/GEN-SIM'%(baseDataSetReleaseBetter[s],),location='STD')} + #else: #For FastSim to recycle GEN (to enable when datasets are available) + # steps[k+'INPUT']={'INPUT':InputInfo(dataSet='/RelVal'+info.dataset+'/%s/GEN'%(baseDataSetReleaseBetter[s],),location='STD')} + else: for key in [key for year in upgradeKeys for key in upgradeKeys[year]]: k=step+'_'+key if step in upgradeStepDict and key in upgradeStepDict[step]: diff --git a/Configuration/PyReleaseValidation/python/relval_upgrade.py b/Configuration/PyReleaseValidation/python/relval_upgrade.py index b6f68ccb95916..c6551e92c22b4 100644 --- a/Configuration/PyReleaseValidation/python/relval_upgrade.py +++ b/Configuration/PyReleaseValidation/python/relval_upgrade.py @@ -30,13 +30,15 @@ def makeStepName(key,frag,step,suffix): hasHarvest = False for step in upgradeProperties[year][key]['ScenToRun']: stepMaker = makeStepName - if 'Sim' in step: + if 'Sim' in step and 'Fast' not in step: if 'HLBeamSpot' in step: if '14TeV' in frag: step = 'GenSimHLBeamSpot14' if 'CloseByParticle' in frag or 'CE_E' in frag or 'CE_H' in frag: step = 'GenSimHLBeamSpotHGCALCloseBy' stepMaker = makeStepNameSim + elif 'Gen' in step: + stepMaker = makeStepNameSim if 'HARVEST' in step: hasHarvest = True diff --git a/Configuration/PyReleaseValidation/python/upgradeWorkflowComponents.py b/Configuration/PyReleaseValidation/python/upgradeWorkflowComponents.py index 6d1e641ca683c..a2f89ce8938d8 100644 --- a/Configuration/PyReleaseValidation/python/upgradeWorkflowComponents.py +++ b/Configuration/PyReleaseValidation/python/upgradeWorkflowComponents.py @@ -148,6 +148,8 @@ def condition(self, fragment, stepList, key, hasHarvest): def preventReuse(self, stepName, stepDict, k): if "Sim" in stepName: stepDict[stepName][k] = None + if "Gen" in stepName: + stepDict[stepName][k] = None upgradeWFs = OrderedDict() class UpgradeWorkflow_baseline(UpgradeWorkflow): @@ -163,6 +165,7 @@ def condition(self, fragment, stepList, key, hasHarvest): return True upgradeWFs['baseline'] = UpgradeWorkflow_baseline( steps = [ + 'Gen', 'GenSim', 'GenSimHLBeamSpot', 'GenSimHLBeamSpot14', @@ -1826,6 +1829,7 @@ def condition(self, fragment, stepList, key, hasHarvest): return '2021FS' in key upgradeWFs['Run3FStrackingOnly'] = UpgradeWorkflow_Run3FStrackingOnly( steps = [ + 'Gen', 'FastSimRun3', 'HARVESTFastRun3' ], @@ -1839,7 +1843,7 @@ def condition(self, fragment, stepList, key, hasHarvest): class UpgradeWorkflow_Run3FSMBMixing(UpgradeWorkflow): def setup_(self, step, stepName, stepDict, k, properties): - if 'FastSimRun3' in step: + if 'Gen' in step: stepDict[stepName][k] = merge([{'-s':'GEN,SIM,RECOBEFMIX', '--fast':'', '--era':'Run3_FastSim', @@ -1852,6 +1856,7 @@ def condition(self, fragment, stepList, key, hasHarvest): return '2021FS' in key and fragment=="MinBias_14TeV" upgradeWFs['Run3FSMBMixing'] = UpgradeWorkflow_Run3FSMBMixing( steps = [ + 'Gen', 'FastSimRun3', 'HARVESTFastRun3' ], @@ -2069,7 +2074,7 @@ def condition(self, fragment, stepList, key, hasHarvest): 'HLTmenu': '@relval2022', 'Era' : 'Run3_FastSim', 'BeamSpot': 'Run3RoundOptics25ns13TeVLowSigmaZ', - 'ScenToRun' : ['FastSimRun3','HARVESTFastRun3'], + 'ScenToRun' : ['Gen','FastSimRun3','HARVESTFastRun3'], }, } @@ -2081,7 +2086,7 @@ def condition(self, fragment, stepList, key, hasHarvest): (['RecoNanoPU','HARVESTNanoPU'] if '202' in key else ['RecoFakeHLTPU','HARVESTFakeHLTPU']) + \ (['Nano'] if 'Nano' in upgradeProperties[2017][key]['ScenToRun'] else []) else: - upgradeProperties[2017][key+'PU']['ScenToRun'] = ['FastSimRun3PU','HARVESTFastRun3PU'] + upgradeProperties[2017][key+'PU']['ScenToRun'] = ['Gen','FastSimRun3PU','HARVESTFastRun3PU'] upgradeProperties[2026] = { '2026D49' : { diff --git a/Configuration/StandardSequences/python/Harvesting_cff.py b/Configuration/StandardSequences/python/Harvesting_cff.py index 3d23b8c52feb7..a2e1f4a25a8bc 100644 --- a/Configuration/StandardSequences/python/Harvesting_cff.py +++ b/Configuration/StandardSequences/python/Harvesting_cff.py @@ -33,6 +33,9 @@ for _entry in [hltpostvalidation]: _validationHarvesting_fastsim.remove(_entry) _validationHarvesting_fastsim.remove(hltpostvalidation) +_validationHarvesting_fastsim.remove(efficienciesTauValidationMiniAODRealData) +_validationHarvesting_fastsim.remove(efficienciesTauValidationMiniAODRealElectronsData) +_validationHarvesting_fastsim.remove(efficienciesTauValidationMiniAODRealMuonsData) from Configuration.Eras.Modifier_fastSim_cff import fastSim fastSim.toReplaceWith(validationHarvesting,_validationHarvesting_fastsim) diff --git a/DQMOffline/Configuration/python/DQMOfflineFS_cff.py b/DQMOffline/Configuration/python/DQMOfflineFS_cff.py index 4499267a2ddc6..ca3c0b0ade521 100644 --- a/DQMOffline/Configuration/python/DQMOfflineFS_cff.py +++ b/DQMOffline/Configuration/python/DQMOfflineFS_cff.py @@ -1,6 +1,7 @@ import FWCore.ParameterSet.Config as cms # FastSim version of DQMOffline/Configuration/python/DQMOfflineMC_cff.py . +# MiniAOD part is a clone from DQMOffline/Configuration/python/DQMOffline_cff.py from DQMOffline.RecoB.PrimaryVertexMonitor_cff import * from DQM.Physics.DQMPhysics_cff import * @@ -22,4 +23,32 @@ singleTopElectronMediumDQM.setup.jetExtras.jetCorrector = cms.InputTag("ak4PFCHSL1FastL2L3Corrector") DQMOfflineFS = cms.Sequence(DQMOfflinePrePOG) + +# miniAOD DQM validation +from DQMOffline.JetMET.jetMETDQMOfflineSource_cff import * +from DQMOffline.Muon.muonMonitors_cff import * +from Validation.RecoParticleFlow.miniAODDQM_cff import * # On MiniAOD vs RECO +from Validation.RecoParticleFlow.DQMForPF_MiniAOD_cff import * # MiniAOD PF variables +from DQM.TrackingMonitor.tracksDQMMiniAOD_cff import * +from DQMOffline.RecoB.bTagMiniDQM_cff import * +from DQMOffline.Muon.miniAOD_cff import * +from DQM.Physics.DQMTopMiniAOD_cff import * + +DQMOfflineMiniAOD = cms.Sequence(jetMETDQMOfflineRedoProductsMiniAOD*bTagMiniDQMSource*muonMonitors_miniAOD*MuonMiniAOD*DQMOfflinePF) + +#Post sequences are automatically placed in the EndPath by ConfigBuilder if PAT is run. +#miniAOD DQM sequences need to access the filter results. + +PostDQMOfflineMiniAOD = cms.Sequence(miniAODDQMSequence*jetMETDQMOfflineSourceMiniAOD*tracksDQMMiniAOD*topPhysicsminiAOD) PostDQMOffline = cms.Sequence() + +from Configuration.Eras.Modifier_run3_HB_cff import run3_HB +run3_HB.toReplaceWith( PostDQMOfflineMiniAOD, PostDQMOfflineMiniAOD.copyAndExclude([ + pfMetDQMAnalyzerMiniAOD, pfPuppiMetDQMAnalyzerMiniAOD # No hcalnoise (yet) +])) + +from PhysicsTools.NanoAOD.nanoDQM_cff import nanoDQM +DQMOfflineNanoAOD = cms.Sequence(nanoDQM) +#PostDQMOfflineNanoAOD = cms.Sequence(nanoDQM) +from PhysicsTools.NanoAOD.nanogenDQM_cff import nanogenDQM +DQMOfflineNanoGen = cms.Sequence(nanogenDQM) diff --git a/DQMOffline/Muon/python/muonAnalyzer_cff.py b/DQMOffline/Muon/python/muonAnalyzer_cff.py index bbf0cdfb5e1f7..eac7aaf81c895 100644 --- a/DQMOffline/Muon/python/muonAnalyzer_cff.py +++ b/DQMOffline/Muon/python/muonAnalyzer_cff.py @@ -22,14 +22,6 @@ muonPFsequence* muonRecoOneHLT) - - -muonAnalyzer_miniAOD = cms.Sequence(muonRecoAnalyzer_miniAOD* - muonKinVsEtaAnalyzer_miniAOD* - diMuonHistos_miniAOD* - EfficiencyAnalyzer_miniAOD* - triggerMatchMonitor_miniAOD) - muonAnalyzer_noHLT = cms.Sequence(muonEnergyDepositAnalyzer* muonSeedsAnalyzer* muonRecoAnalyzer* @@ -39,3 +31,12 @@ diMuonHistos* EfficiencyAnalyzer* muonPFsequence) + +muonAnalyzer_miniAOD = cms.Sequence(muonRecoAnalyzer_miniAOD* + muonKinVsEtaAnalyzer_miniAOD* + diMuonHistos_miniAOD* + EfficiencyAnalyzer_miniAOD* + triggerMatchMonitor_miniAOD) + +from Configuration.Eras.Modifier_fastSim_cff import fastSim +fastSim.toReplaceWith(muonAnalyzer_miniAOD, muonAnalyzer_miniAOD.copyAndExclude([triggerMatchMonitor_miniAOD])) diff --git a/Validation/RecoTau/python/DQMMCValidation_cfi.py b/Validation/RecoTau/python/DQMMCValidation_cfi.py index 4d85fe187bfb8..230e564dae3b8 100644 --- a/Validation/RecoTau/python/DQMMCValidation_cfi.py +++ b/Validation/RecoTau/python/DQMMCValidation_cfi.py @@ -30,6 +30,8 @@ produceDenominatorZMM+ produceDenominatorZTT ) +from Configuration.Eras.Modifier_fastSim_cff import fastSim +fastSim.toReplaceWith(produceDenoms,produceDenoms.copyAndExclude([produceDenominatorRealData,produceDenominatorRealElectronsData,produceDenominatorRealMuonsData])) runTauEff = cms.Sequence( efficienciesQCD+ diff --git a/Validation/RecoTau/python/RecoTauValidation_cff.py b/Validation/RecoTau/python/RecoTauValidation_cff.py index 9ed8558541fd4..632c9540f09cd 100644 --- a/Validation/RecoTau/python/RecoTauValidation_cff.py +++ b/Validation/RecoTau/python/RecoTauValidation_cff.py @@ -111,3 +111,6 @@ ) tauValidationSequenceMiniAOD = cms.Sequence(tauValidationMiniAODZTT*tauValidationMiniAODZEE*tauValidationMiniAODZMM*tauValidationMiniAODQCD*tauValidationMiniAODRealData*tauValidationMiniAODRealElectronsData*tauValidationMiniAODRealMuonsData) + +from Configuration.Eras.Modifier_fastSim_cff import fastSim +fastSim.toReplaceWith(tauValidationSequenceMiniAOD,tauValidationSequenceMiniAOD.copyAndExclude([tauValidationMiniAODRealData,tauValidationMiniAODRealElectronsData,tauValidationMiniAODRealMuonsData]))