diff --git a/Configuration/Applications/python/ConfigBuilder.py b/Configuration/Applications/python/ConfigBuilder.py index 483669ee2cb8b..f2df7772952a1 100644 --- a/Configuration/Applications/python/ConfigBuilder.py +++ b/Configuration/Applications/python/ConfigBuilder.py @@ -1909,10 +1909,16 @@ def prepare_SKIM(self, stepSpec = "all"): print("replacing %s process name - step SKIM:%s will use '%s'" % (stdHLTProcName, sequence, newHLTProcName)) ## support @Mu+DiJet+@Electron configuration via autoSkim.py - from Configuration.Skimming.autoSkim import autoSkim + from Configuration.Skimming.autoSkim import autoSkim, autoSkimRunI skimlist = sequence.split('+') self.expandMapping(skimlist,autoSkim) + autoSkimRunIList = list(set( + item + for v in autoSkimRunI.values() + for item in v.split('+') + )) + #print("dictionary for skims:", skimConfig.__dict__) for skim in skimConfig.__dict__: skimstream = getattr(skimConfig, skim) @@ -1931,6 +1937,10 @@ def prepare_SKIM(self, stepSpec = "all"): shortname = skim.replace('SKIMStream','') if (sequence=="all"): self.addExtraStream(skim,skimstream) + elif (sequence=="allRun1"): + if not shortname in autoSkimRunIList: + continue + self.addExtraStream(skim,skimstream) elif (shortname in skimlist): self.addExtraStream(skim,skimstream) #add a DQM eventcontent for this guy @@ -1948,7 +1958,7 @@ def prepare_SKIM(self, stepSpec = "all"): for i in range(skimlist.count(shortname)): skimlist.remove(shortname) - if (skimlist.__len__()!=0 and sequence!="all"): + if (skimlist.__len__()!=0 and sequence!="all" and sequence!="allRun1"): print('WARNING, possible typo with SKIM:'+'+'.join(skimlist)) raise Exception('WARNING, possible typo with SKIM:'+'+'.join(skimlist)) diff --git a/Configuration/PyReleaseValidation/python/relval_production.py b/Configuration/PyReleaseValidation/python/relval_production.py index 97098d2668c2a..6c511671c4e1c 100644 --- a/Configuration/PyReleaseValidation/python/relval_production.py +++ b/Configuration/PyReleaseValidation/python/relval_production.py @@ -9,7 +9,7 @@ # the name of step1 will be used ## data production test -workflows[1000] = [ '',['RunMinBias2011A','TIER0','SKIMD','HARVESTDfst2','ALCASPLIT']] +workflows[1000] = [ '',['RunMinBias2011A','TIER0','SKIMDRun1','HARVESTDfst2','ALCASPLIT']] workflows[1001] = [ '',['RunMinBias2011A','TIER0EXP','ALCAEXP','ALCAHARVDSIPIXELCALRUN1','ALCAHARVD1','ALCAHARVD2','ALCAHARVD3','ALCAHARVD4','ALCAHARVD5','ALCAHARVD7','ALCAHARVD8']] workflows[1001.2] = [ '',['RunZeroBias2017F','TIER0EXPRUN2','ALCAEXPRUN2','ALCAHARVDSIPIXELCAL','ALCAHARVDSIPIXELCALLA','ALCAHARVD4','ALCAHARVDSIPIXELALIHG']] workflows[1001.3] = [ '',['RunSingleMuon2022B','TIER0EXPRUN3','ALCAEXPRUN3','ALCAHARVDEXPRUN3']] diff --git a/Configuration/PyReleaseValidation/python/relval_standard.py b/Configuration/PyReleaseValidation/python/relval_standard.py index 3daa2df917109..626f49c04a48f 100644 --- a/Configuration/PyReleaseValidation/python/relval_standard.py +++ b/Configuration/PyReleaseValidation/python/relval_standard.py @@ -573,7 +573,7 @@ ### run3-2025 (2025 HI OXY data) workflows[143.911] = ['',['RunUPC2024','RECODR3_2025_OXY','HARVESTDPROMPTR3']] workflows[143.912] = ['',['RunUPC2024','RECODR3_2025_UPC_OXY','HARVESTDPROMPTR3']] - +workflows[143.921] = ['',['RunUPC2024','RECODR3_2025_OXY_SKIMIONPHYSICS0','HARVESTDPROMPTR3']] ## Lumi mask fixed 2024 wfs base_wf = 145.0 diff --git a/Configuration/PyReleaseValidation/python/relval_steps.py b/Configuration/PyReleaseValidation/python/relval_steps.py index d755fa88aa90e..57ff48d4893a0 100644 --- a/Configuration/PyReleaseValidation/python/relval_steps.py +++ b/Configuration/PyReleaseValidation/python/relval_steps.py @@ -640,7 +640,7 @@ Run2023UPC={375463: [[52,52]]} steps['RunUPC2023']={'INPUT':InputInfo(dataSet='/HIForward1/HIRun2023A-v1/RAW',label='upc2023',events=10000,location='STD',ls=Run2023UPC)} -Run2024UPC={388784: [[344,344]]} +Run2024UPC={388784: [[406,406]]} steps['RunUPC2024']={'INPUT':InputInfo(dataSet='/HIForward0/HIRun2024B-v1/RAW',label='upc2024',events=10000,location='STD',ls=Run2024UPC)} RunHI2023={375491: [[100, 100]]} @@ -2903,6 +2903,7 @@ def lhegensim2018ml(fragment,howMuch): steps['RECODR3_2025_UPC']=merge([{'--era':'Run3_2025_UPC'},steps['RECODR3_2025_HIN']]) steps['RECODR3_2025_OXY']=merge([{'--era':'Run3_2025_OXY'},steps['RECODR3_2025_HIN']]) steps['RECODR3_2025_UPC_OXY']=merge([{'--era':'Run3_2025_UPC_OXY'},steps['RECODR3_2025_HIN']]) +steps['RECODR3_2025_OXY_SKIMIONPHYSICS0']=merge([{'--era':'Run3_2025_OXY', '-s':'RAW2DIGI,L1Reco,RECO,SKIM:%s,PAT,DQM:@commonFakeHLT+@standardDQMFakeHLT'%(autoSkim['IonPhysics0'])},steps['RECODR3_2025_HIN']]) steps['RECODR3Splash']=merge([{'-n': 2, '-s': 'RAW2DIGI,L1Reco,RECO,PAT,ALCA:SiStripCalZeroBias+SiStripCalMinBias+TkAlMinBias+EcalESAlign,DQM:@standardDQMFakeHLT+@miniAODDQM' @@ -4417,6 +4418,13 @@ def gen2024HiMix(fragment,howMuch): steps['SKIMDreHLT'] = merge([ {'--conditions':'auto:run1_data_%s'%menu, '--hltProcess':'reHLT', '--filein':'file:step3.root'}, steps['SKIMD'] ]) +steps['SKIMDRun1']={'-s':'SKIM:allRun1', + '--conditions':'auto:run1_data', + '--data':'', + '--scenario':'pp', + '--filein':'file:step2.root', + '--secondfilein':'filelist:step1_dasquery.log'} + steps['SKIMCOSD']={'-s':'SKIM:all', '--conditions':'auto:run1_data', '--data':'', diff --git a/Configuration/Skimming/python/Ion_MuonSkim_cff.py b/Configuration/Skimming/python/Ion_MuonSkim_cff.py new file mode 100644 index 0000000000000..963cb8614c6eb --- /dev/null +++ b/Configuration/Skimming/python/Ion_MuonSkim_cff.py @@ -0,0 +1,59 @@ +import FWCore.ParameterSet.Config as cms + +# single high-pT muon skim sequence + +HighPtMuonSelection = "(isTrackerMuon || isGlobalMuon) && abs(eta) <= 2.4 && pt > 10." + +highPtMuonSelectorForMuonIon = cms.EDFilter("PATMuonRefSelector", + src = cms.InputTag("slimmedMuons"), + cut = cms.string(HighPtMuonSelection), + filter = cms.bool(True) + ) + +highPtMuonCountFilterForMuonIon = cms.EDFilter("MuonRefPatCount", + src = cms.InputTag("slimmedMuons"), + cut = cms.string(HighPtMuonSelection), + minNumber = cms.uint32(1) + ) + +HighPtMuonIonSkimSequence = cms.Sequence( + highPtMuonSelectorForMuonIon * + highPtMuonCountFilterForMuonIon + ) + + +# loose dimuon skim sequence + +LooseMuonSelection = "(isTrackerMuon || isGlobalMuon) && ((abs(eta) <= 1.0 && pt > 3.3) || (1.0 < abs(eta) <= 2.4 && pt > 1.0))" + +looseMuonSelectorForMuonIon = cms.EDFilter("PATMuonRefSelector", + src = cms.InputTag("slimmedMuons"), + cut = cms.string(LooseMuonSelection), + filter = cms.bool(True) + ) + +looseMuonCountFilterForMuonIon = cms.EDFilter("MuonRefPatCount", + src = cms.InputTag("slimmedMuons"), + cut = cms.string(LooseMuonSelection), + minNumber = cms.uint32(2) + ) + + +dimuonMassCutForMuonIon = cms.EDProducer("CandViewShallowCloneCombiner", + checkCharge = cms.bool(False), + cut = cms.string("mass > 2.4"), + decay = cms.string("looseMuonSelectorForMuonIon looseMuonSelectorForMuonIon") + ) + +dimuonCountFilterForMuonIon = cms.EDFilter("CandViewCountFilter", + src = cms.InputTag("dimuonMassCutForMuonIon"), + minNumber = cms.uint32(1) + ) + +# dimuon skim sequence +DimuonIonSkimSequence = cms.Sequence( + looseMuonSelectorForMuonIon * + looseMuonCountFilterForMuonIon * + dimuonMassCutForMuonIon * + dimuonCountFilterForMuonIon + ) diff --git a/Configuration/Skimming/python/Skims_Ion_cff.py b/Configuration/Skimming/python/Skims_Ion_cff.py new file mode 100644 index 0000000000000..7f9d81a1f6a51 --- /dev/null +++ b/Configuration/Skimming/python/Skims_Ion_cff.py @@ -0,0 +1,31 @@ +import FWCore.ParameterSet.Config as cms + +from Configuration.EventContent.EventContent_cff import MINIAODEventContent + +skimMINIAODEventContent = MINIAODEventContent.clone() +skimMINIAODEventContent.outputCommands.append("drop *_MEtoEDMConverter_*_*") +skimMINIAODEventContent.outputCommands.append("drop *_*_*_SKIM") + +from Configuration.Skimming.Ion_MuonSkim_cff import * + +HighPtMuonIonSkimPath = cms.Path( HighPtMuonIonSkimSequence ) +SKIMStreamIonHighPtMuon = cms.FilteredStream( + responsible = 'HI PAG', + name = 'IonHighPtMuon', + paths = (HighPtMuonIonSkimPath), + content = skimMINIAODEventContent.outputCommands+['drop *_slimmedJetsPuppi_*_*', 'drop *_slimmedOOTPhotons_*_*', 'drop *_slimmedTaus_*_*', 'drop *_slimmedTausBoosted_*_*', 'drop recoDeDxHitInfos_dedxEstimator_*_*'], + selectEvents = cms.untracked.PSet(), + dataTier = cms.untracked.string('USER') + ) + +DimuonIonSkimPath = cms.Path( DimuonIonSkimSequence ) +SKIMStreamIonDimuon = cms.FilteredStream( + responsible = 'HI PAG', + name = 'IonDimuon', + paths = (DimuonIonSkimPath), + content = skimMINIAODEventContent.outputCommands+['drop *_slimmedJetsPuppi_*_*', 'drop *_slimmedJetsAK8_*_*', 'drop *_slimmedOOTPhotons_*_*', 'drop *_slimmedTaus_*_*', 'drop *_slimmedTausBoosted_*_*', 'drop *_dedxEstimator_*_*', 'keep recoDeDxDataedmValueMap_dedxEstimator_dedxAllLikelihood_*'], + selectEvents = cms.untracked.PSet(), + dataTier = cms.untracked.string('USER') + ) + +##################### diff --git a/Configuration/Skimming/python/autoSkim.py b/Configuration/Skimming/python/autoSkim.py index b470f47cc95d7..fb234802910c3 100644 --- a/Configuration/Skimming/python/autoSkim.py +++ b/Configuration/Skimming/python/autoSkim.py @@ -40,6 +40,10 @@ #'SingleMuon': 'LogError+LogErrorMonitor', } +# For 2025 Ion skims +for i_split in range(60): + autoSkim[f'IonPhysics{i_split}'] = 'IonHighPtMuon+IonDimuon+LogError+LogErrorMonitor' + # For 2024 PbPb skims for i_split in range(20): autoSkim[f'HIForward{i_split}'] = 'UPCMonopole+LogError+LogErrorMonitor' diff --git a/Configuration/StandardSequences/python/Skims_cff.py b/Configuration/StandardSequences/python/Skims_cff.py index fe03d9658b3f8..e3d8b1583714c 100644 --- a/Configuration/StandardSequences/python/Skims_cff.py +++ b/Configuration/StandardSequences/python/Skims_cff.py @@ -49,3 +49,4 @@ def getSkimDataTier(skimname): from Configuration.Skimming.Skims_PDWG_cff import * from Configuration.Skimming.Skims_PA_cff import * from Configuration.Skimming.Skims_PbPb_cff import * +from Configuration.Skimming.Skims_Ion_cff import *