1 from copy
import deepcopy
2 from collections
import OrderedDict
4 from .MatrixUtil
import merge, Kby
71 numWFConflict = [[24000,24400],[25000,26000],[50000,51000]]
77 for year
in upgradeKeys:
78 for i
in range(0,len(upgradeKeys[year])):
79 numWFtmp = numWFStart[year]
if i==0
else (numWFAll[year][i-1] + numWFSkip)
80 for conflict
in numWFConflict:
81 if numWFtmp>=conflict[0]
and numWFtmp<conflict[1]:
82 numWFtmp = conflict[1]
84 numWFAll[year].
append(numWFtmp)
97 raise ValueError(
"Special workflow offset must be between 0.0 and 1.0")
99 for step
in self.
steps:
100 stepName = step + self.
suffix
101 stepDict[stepName] = {}
103 stepName = step +
'PU' + self.
suffix
104 stepDict[stepName] = {}
105 stepNamePmx = step +
'PUPRMX' + self.
suffix
106 stepDict[stepNamePmx] = {}
107 stepDict[stepNamePmx+
'Combined'] = {}
108 def setup(self, stepDict, k, properties):
109 for step
in self.
steps:
110 stepName = step + self.
suffix
111 self.
setup_(step, stepName, stepDict, k, properties)
112 def setup_(self, step, stepName, stepDict, k, properties):
114 def workflow(self, workflows, num, fragment, stepList, key, hasHarvest):
115 if self.condition(fragment, stepList, key, hasHarvest):
116 self.workflow_(workflows, num, fragment, stepList)
117 def workflow_(self, workflows, num, fragment, stepList):
118 workflows[num+self.
offset] = [ fragment, stepList ]
119 def condition(self, fragment, stepList, key, hasHarvest):
121 upgradeWFs = OrderedDict()
124 def setup_(self, step, stepName, stepDict, k, properties):
125 cust=properties.get(
'Custom',
None)
126 era=properties.get(
'Era',
None)
127 modifier=properties.get(
'ProcessModifier',
None)
128 if cust
is not None: stepDict[stepName][k][
'--customise']=cust
129 if era
is not None: stepDict[stepName][k][
'--era']=era
130 if modifier
is not None: stepDict[stepName][k][
'--procModifier']=modifier
131 def condition(self, fragment, stepList, key, hasHarvest):
136 'GenSimHLBeamSpotFull',
137 'GenSimHLBeamSpotFull14',
168 def condition(self, fragment, stepList, key, hasHarvest):
169 result = (fragment==
"TTbar_13" or fragment==
"TTbar_14TeV")
and not 'PU' in key
and hasHarvest
and self.
condition_(fragment, stepList, key, hasHarvest)
172 skipList = [s
for s
in stepList
if ((
"ALCA" in s)
or (
"Nano" in s))]
173 for skip
in skipList:
174 stepList.remove(skip)
180 def setup_(self, step, stepName, stepDict, k, properties):
181 if 'Reco' in step: stepDict[stepName][k] =
merge([self.
step3, stepDict[step][k]])
182 elif 'HARVEST' in step: stepDict[stepName][k] =
merge([{
'-s':
'HARVESTING:@trackingOnlyValidation+@trackingOnlyDQM'}, stepDict[step][k]])
191 suffix =
'_trackingOnly',
194 upgradeWFs[
'trackingOnly'].step3 = {
195 '-s':
'RAW2DIGI,RECO:reconstruction_trackingOnly,VALIDATION:@trackingOnlyValidation,DQM:@trackingOnlyDQM',
196 '--datatier':
'GEN-SIM-RECO,DQMIO',
197 '--eventcontent':
'RECOSIM,DQM',
200 step3_trackingOnly = upgradeWFs[
'trackingOnly'].step3
203 def setup_(self, step, stepName, stepDict, k, properties):
204 if 'Reco' in step
and stepDict[step][k][
'--era']==
'Run2_2017':
205 stepDict[stepName][k] =
merge([{
'--era':
'Run2_2017_trackingRun2'}, stepDict[step][k]])
213 suffix =
'_trackingRun2',
218 def setup_(self, step, stepName, stepDict, k, properties):
219 if 'Reco' in step
and stepDict[step][k][
'--era']==
'Run2_2017':
220 stepDict[stepName][k] =
merge([{
'--era':
'Run2_2017_trackingRun2'}, self.
step3, stepDict[step][k]])
221 elif 'HARVEST' in step: stepDict[stepName][k] =
merge([{
'-s':
'HARVESTING:@trackingOnlyValidation+@trackingOnlyDQM'}, stepDict[step][k]])
230 suffix =
'_trackingOnlyRun2',
233 upgradeWFs[
'trackingOnlyRun2'].step3 = upgradeWFs[
'trackingOnly'].step3
236 def setup_(self, step, stepName, stepDict, k, properties):
237 if 'Reco' in step
and stepDict[step][k][
'--era']==
'Run2_2017':
238 stepDict[stepName][k] =
merge([{
'--era':
'Run2_2017_trackingLowPU'}, stepDict[step][k]])
246 suffix =
'_trackingLowPU',
251 def setup_(self, step, stepName, stepDict, k, properties):
252 if 'Reco' in step: stepDict[stepName][k] =
merge([self.
step3, stepDict[step][k]])
253 elif 'HARVEST' in step: stepDict[stepName][k] =
merge([{
'-s':
'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM'}, stepDict[step][k]])
255 return '2017' in key
or '2018' in key
or '2021' in key
264 suffix =
'_pixelTrackingOnly',
267 upgradeWFs[
'pixelTrackingOnly'].step3 = {
268 '-s':
'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly,VALIDATION:@pixelTrackingOnlyValidation,DQM:@pixelTrackingOnlyDQM',
269 '--datatier':
'GEN-SIM-RECO,DQMIO',
270 '--eventcontent':
'RECOSIM,DQM',
274 def setup_(self, step, stepName, stepDict, k, properties):
275 if 'Reco' in step: stepDict[stepName][k] =
merge([self.
step3, stepDict[step][k]])
277 return '2017' in key
or '2021' in key
284 suffix =
'_trackingMkFit',
287 upgradeWFs[
'trackingMkFit'].step3 = {
288 '--procModifiers':
'trackingMkFit'
293 def condition(self, fragment, stepList, key, hasHarvest):
294 is_2018_ttbar = (
'2018' in key
and fragment==
"TTbar_13")
295 is_2021_ttbar = (
'2021' in key
and fragment==
"TTbar_14TeV")
296 is_2018_zmumu = (
'2018' in key
and fragment==
"ZMM_13")
297 is_2021_zmumu = (
'2021' in key
and fragment==
"ZMM_14")
298 result =
any((is_2018_ttbar, is_2021_ttbar, is_2018_zmumu, is_2021_zmumu))
and hasHarvest
and self.
condition_(fragment, stepList, key, hasHarvest)
301 skipList = [s
for s
in stepList
if ((
"ALCA" in s)
or (
"Nano" in s))]
302 for skip
in skipList:
303 stepList.remove(skip)
309 def setup_(self, step, stepName, stepDict, k, properties):
311 stepDict[stepName][k] =
merge([self.
step3, stepDict[step][k]])
312 elif 'HARVEST' in step:
313 stepDict[stepName][k] =
merge([{
'-s':
'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM'}, stepDict[step][k]])
316 return '2018' in key
or '2021' in key
326 suffix =
'Patatrack_PixelOnlyCPU',
330 upgradeWFs[
'PatatrackPixelOnlyCPU'].step3 = {
331 '-s':
'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly,VALIDATION:@pixelTrackingOnlyValidation,DQM:@pixelTrackingOnlyDQM',
332 '--datatier':
'GEN-SIM-RECO,DQMIO',
333 '--eventcontent':
'RECOSIM,DQM',
334 '--procModifiers':
'pixelNtupleFit'
338 def setup_(self, step, stepName, stepDict, k, properties):
340 stepDict[stepName][k] =
merge([self.
step3, stepDict[step][k]])
341 elif 'HARVEST' in step:
342 stepDict[stepName][k] =
merge([{
'-s':
'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM'}, stepDict[step][k]])
345 return '2018' in key
or '2021' in key
355 suffix =
'Patatrack_PixelOnlyGPU',
359 upgradeWFs[
'PatatrackPixelOnlyGPU'].step3 = {
360 '-s':
'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly,VALIDATION:@pixelTrackingOnlyValidation,DQM:@pixelTrackingOnlyDQM',
361 '--datatier':
'GEN-SIM-RECO,DQMIO',
362 '--eventcontent':
'RECOSIM,DQM',
363 '--procModifiers':
'gpu'
367 def setup_(self, step, stepName, stepDict, k, properties):
369 stepDict[stepName][k] =
merge([self.
step3, stepDict[step][k]])
370 elif 'HARVEST' in step:
371 stepDict[stepName][k] =
merge([{
'-s':
'HARVESTING:@ecalOnlyValidation+@ecal'}, stepDict[step][k]])
374 return '2018' in key
or '2021' in key
384 suffix =
'Patatrack_ECALOnlyCPU',
388 upgradeWFs[
'PatatrackECALOnlyCPU'].step3 = {
389 '-s':
'RAW2DIGI:RawToDigi_ecalOnly,RECO:reconstruction_ecalOnly,VALIDATION:@ecalOnlyValidation,DQM:@ecalOnly',
390 '--datatier':
'GEN-SIM-RECO,DQMIO',
391 '--eventcontent':
'RECOSIM,DQM',
395 def setup_(self, step, stepName, stepDict, k, properties):
397 stepDict[stepName][k] =
merge([self.
step3, stepDict[step][k]])
398 elif 'HARVEST' in step:
399 stepDict[stepName][k] =
merge([{
'-s':
'HARVESTING:@ecalOnlyValidation+@ecal'}, stepDict[step][k]])
402 return '2018' in key
or '2021' in key
412 suffix =
'Patatrack_ECALOnlyGPU',
416 upgradeWFs[
'PatatrackECALOnlyGPU'].step3 = {
417 '-s':
'RAW2DIGI:RawToDigi_ecalOnly,RECO:reconstruction_ecalOnly,VALIDATION:@ecalOnlyValidation,DQM:@ecalOnly',
418 '--datatier':
'GEN-SIM-RECO,DQMIO',
419 '--eventcontent':
'RECOSIM,DQM',
420 '--procModifiers':
'gpu'
424 def setup_(self, step, stepName, stepDict, k, properties):
426 stepDict[stepName][k] =
merge([self.
step3, stepDict[step][k]])
427 elif 'HARVEST' in step:
428 stepDict[stepName][k] =
merge([{
'-s':
'HARVESTING:@hcalOnlyValidation+@hcalOnly+@hcal2Only'}, stepDict[step][k]])
431 return '2018' in key
or '2021' in key
441 suffix =
'Patatrack_HCALOnlyCPU',
445 upgradeWFs[
'PatatrackHCALOnlyCPU'].step3 = {
446 '-s':
'RAW2DIGI:RawToDigi_hcalOnly,RECO:reconstruction_hcalOnly,VALIDATION:@hcalOnlyValidation,DQM:@hcalOnly+@hcal2Only',
447 '--datatier':
'GEN-SIM-RECO,DQMIO',
448 '--eventcontent':
'RECOSIM,DQM',
452 def setup_(self, step, stepName, stepDict, k, properties):
454 stepDict[stepName][k] =
merge([self.
step3, stepDict[step][k]])
455 elif 'HARVEST' in step:
456 stepDict[stepName][k] =
merge([{
'-s':
'HARVESTING:@hcalOnlyValidation+@hcalOnly+@hcal2Only'}, stepDict[step][k]])
459 return '2018' in key
or '2021' in key
469 suffix =
'Patatrack_HCALOnlyGPU',
473 upgradeWFs[
'PatatrackHCALOnlyGPU'].step3 = {
474 '-s':
'RAW2DIGI:RawToDigi_hcalOnly,RECO:reconstruction_hcalOnly,VALIDATION:@hcalOnlyValidation,DQM:@hcalOnly+@hcal2Only',
475 '--datatier':
'GEN-SIM-RECO,DQMIO',
476 '--eventcontent':
'RECOSIM,DQM',
477 '--procModifiers':
'gpu'
483 def setup_(self, step, stepName, stepDict, k, properties):
484 if 'Digi' in step
and 'Trigger' not in step:
485 stepDict[stepName][k] =
merge([{
'-s':
'DIGI,L1,DIGI2RAW,HLT:@relval2021',
'--datatier':
'GEN-SIM-DIGI-RAW',
'--eventcontent':
'RAWSIM'}, stepDict[step][k]])
487 stepDict[stepName][k] =
merge([{
'-s':
'RAW2DIGI,L1Reco,RECO,RECOSIM',
'--datatier':
'AODSIM',
'--eventcontent':
'AODSIM'}, stepDict[step][k]])
488 elif 'MiniAOD' in step:
490 stepDict[stepName][k] = deepcopy(stepDict[step][k])
491 if 'ALCA' in step
or 'HARVEST' in step:
493 stepDict[stepName][k] =
None
495 stepDict[stepName][k] =
merge([{
'--filein':
'file:step4.root'}, stepDict[step][k]])
496 def condition(self, fragment, stepList, key, hasHarvest):
497 return fragment==
"TTbar_14TeV" and (
'2026' in key
or '2021' in key)
519 suffix =
'_ProdLike',
524 def setup_(self, step, stepName, stepDict, k, properties):
526 custNew =
"SimG4Core/Application/NeutronBGforMuonsXS_cff.customise"
528 custNew =
"SLHCUpgradeSimulations/Configuration/customise_mixing.customise_Mix_LongLived_Neutrons"
529 stepDict[stepName][k] = deepcopy(stepDict[step][k])
530 if '--customise' in stepDict[stepName][k].
keys():
531 stepDict[stepName][k][
'--customise'] +=
","+custNew
533 stepDict[stepName][k][
'--customise'] = custNew
534 def condition(self, fragment, stepList, key, hasHarvest):
539 'GenSimHLBeamSpotFull',
540 'GenSimHLBeamSpotFull14',
552 upgradeWFs[
'Neutron'].neutronKeys = [x
for x
in upgradeKeys[2026]
if 'PU' not in x]
553 upgradeWFs[
'Neutron'].neutronFrags = [
'ZMM_14',
'MinBias_14TeV']
556 def setup_(self, step, stepName, stepDict, k, properties):
557 stepDict[stepName][k] =
merge([{
'--procModifiers':
'run2_HECollapse_2018'}, stepDict[step][k]])
558 def condition(self, fragment, stepList, key, hasHarvest):
559 return fragment==
"TTbar_13" and '2018' in key
573 suffix =
'_heCollapse',
578 def setup_(self, step, stepName, stepDict, k, properties):
579 if 'Reco' in step
and 'Run2_2018' in stepDict[step][k][
'--era']:
580 stepDict[stepName][k] =
merge([{
'--era':
'Run2_2018,bParking'}, stepDict[step][k]])
581 def condition(self, fragment, stepList, key, hasHarvest):
582 return fragment==
"TTbar_13" and '2018' in key
588 suffix =
'_ParkingBPH',
593 def setup_(self, step, stepName, stepDict, k, properties):
595 stepDict[stepName][k] =
merge([{
'--customise':
'PhysicsTools/NanoAOD/custom_jme_cff.PrepJMECustomNanoAOD_MC'}, stepDict[step][k]])
596 def condition(self, fragment, stepList, key, hasHarvest):
597 return fragment==
"TTbar_13" and (
'2017' in key
or '2018' in key)
610 def setup_(self, step, stepName, stepDict, k, properties):
611 if 'Digi' in step
or 'Reco' in step:
612 stepDict[stepName][k] =
merge([{
'--customise':
'SLHCUpgradeSimulations/Configuration/aging.customise_aging_'+self.
lumi}, stepDict[step][k]])
613 def condition(self, fragment, stepList, key, hasHarvest):
614 return fragment==
"TTbar_14TeV" and '2026' in key
631 suffix =
'Aging1000',
634 upgradeWFs[
'Aging1000'].lumi =
'1000'
635 upgradeWFs[
'Aging3000'] = deepcopy(upgradeWFs[
'Aging1000'])
636 upgradeWFs[
'Aging3000'].suffix =
'Aging3000'
637 upgradeWFs[
'Aging3000'].offset = 0.103
638 upgradeWFs[
'Aging3000'].lumi =
'3000'
646 'PremixHLBeamSpotFull',
647 'PremixHLBeamSpotFull14',
656 suffix =
'_premixS2',
663 suffix =
'_premixS1S2',
668 def setup_(self, step, stepName, stepDict, k, properties):
673 '--filein':
'das:/RelValTTbar_14TeV/CMSSW_11_0_0_pre13-110X_mcRun4_realistic_v2_2026D49noPU-v1/GEN-SIM-DIGI-RAW',
674 '--customise':
"L1Trigger/Configuration/customisePhase2TTNoMC.customisePhase2TTNoMC",
678 mods[
'-s'] =
'RAW2DIGI,L1TrackTrigger,L1,RECO,RECOSIM'
679 mods[
'--datatier'] =
'AODSIM'
680 mods[
'--eventcontent'] =
'AODSIM'
682 mods[
'-s'] = stepDict[step][k][
'-s'].
replace(
"L1Reco",
"L1TrackTrigger,L1")
683 stepDict[stepName][k] =
merge([mods, stepDict[step][k]])
685 stepNamePU = step +
'PU' + self.
suffix
686 mods[
'--filein'] =
'das:/RelValTTbar_14TeV/CMSSW_11_0_0_pre13-PU25ns_110X_mcRun4_realistic_v2_2026D49PU200-v2/GEN-SIM-DIGI-RAW'
687 stepDict[stepNamePU][k] =
merge([mods,stepDict[stepName][k]])
688 elif 'GenSim' in step
or 'Digi' in step:
690 stepDict[stepName][k] =
None
694 if 'MiniAOD' in step
and self.
prodlike:
696 stepDict[stepName][k] = deepcopy(stepDict[step][k])
697 elif 'ALCA' in step
or 'HARVEST' in step:
699 stepDict[stepName][k] =
None
701 stepDict[stepName][k] =
merge([{
'--filein':
'file:step4.root'}, stepDict[step][k]])
702 def condition(self, fragment, stepList, key, hasHarvest):
704 return fragment==
"TTbar_14TeV" and '2026D49' in key
705 def workflow_(self, workflows, num, fragment, stepList):
706 UpgradeWorkflow.workflow_(self, workflows, num, fragment, stepList)
709 'GenSimHLBeamSpotFull',
710 'GenSimHLBeamSpotFull14',
718 suffix =
'_TestOldDigi',
721 upgradeWFs[
'TestOldDigi'].prodlike =
False
724 'GenSimHLBeamSpotFull',
725 'GenSimHLBeamSpotFull14',
737 suffix =
'_TestOldDigiProdLike',
740 upgradeWFs[
'TestOldDigiProdLike'].prodlike =
True
743 offsets = [specialWF.offset
for specialType,specialWF
in six.iteritems(upgradeWFs)]
745 dups = set(x
for x
in offsets
if x
in seen
or seen.add(x))
747 raise ValueError(
"Duplicate special workflow offsets not allowed: "+
','.
join([
str(x)
for x
in dups]))
749 upgradeProperties = {}
751 upgradeProperties[2017] = {
753 'Geom' :
'DB:Extended',
754 'GT' :
'auto:phase1_2017_realistic',
755 'HLTmenu':
'@relval2017',
757 'ScenToRun' : [
'GenSimFull',
'DigiFull',
'RecoFull',
'HARVESTFull',
'ALCAFull',
'NanoFull'],
760 'Geom' :
'DB:Extended',
761 'GT' :
'auto:phase1_2017_design',
762 'HLTmenu':
'@relval2017',
764 'BeamSpot':
'GaussSigmaZ4cm',
765 'ScenToRun' : [
'GenSimFull',
'DigiFull',
'RecoFull',
'HARVESTFull'],
768 'Geom' :
'DB:Extended',
769 'GT' :
'auto:phase1_2018_realistic',
770 'HLTmenu':
'@relval2018',
772 'BeamSpot':
'Realistic25ns13TeVEarly2018Collision',
773 'ScenToRun' : [
'GenSimFull',
'DigiFull',
'RecoFull',
'HARVESTFull',
'ALCAFull',
'NanoFull'],
776 'Geom' :
'DB:Extended',
777 'GT' :
'auto:phase1_2018_design',
778 'HLTmenu':
'@relval2018',
780 'BeamSpot':
'GaussSigmaZ4cm',
781 'ScenToRun' : [
'GenSimFull',
'DigiFull',
'RecoFull',
'HARVESTFull'],
784 'Geom' :
'DB:Extended',
785 'GT' :
'auto:phase1_2021_realistic',
786 'HLTmenu':
'@relval2021',
788 'BeamSpot':
'Run3RoundOptics25ns13TeVLowSigmaZ',
789 'ScenToRun' : [
'GenSimFull',
'DigiFull',
'RecoFull',
'HARVESTFull',
'ALCAFull'],
792 'Geom' :
'DB:Extended',
793 'GT' :
'auto:phase1_2021_design',
794 'HLTmenu':
'@relval2021',
796 'BeamSpot':
'GaussSigmaZ4cm',
797 'ScenToRun' : [
'GenSimFull',
'DigiFull',
'RecoFull',
'HARVESTFull'],
800 'Geom' :
'DB:Extended',
801 'GT' :
'auto:phase1_2023_realistic',
802 'HLTmenu':
'@relval2021',
804 'BeamSpot':
'Run3RoundOptics25ns13TeVLowSigmaZ',
805 'ScenToRun' : [
'GenSimFull',
'DigiFull',
'RecoFull',
'HARVESTFull',
'ALCAFull'],
808 'Geom' :
'DB:Extended',
809 'GT' :
'auto:phase1_2024_realistic',
810 'HLTmenu':
'@relval2021',
812 'BeamSpot':
'Run3RoundOptics25ns13TeVLowSigmaZ',
813 'ScenToRun' : [
'GenSimFull',
'DigiFull',
'RecoFull',
'HARVESTFull',
'ALCAFull'],
818 for key
in list(upgradeProperties[2017].
keys()):
819 upgradeProperties[2017][key+
'PU'] = deepcopy(upgradeProperties[2017][key])
820 upgradeProperties[2017][key+
'PU'][
'ScenToRun'] = [
'GenSimFull',
'DigiFullPU',
'RecoFullPU',
'HARVESTFullPU'] + \
821 ([
'NanoFull']
if 'Design' not in key
else [])
823 upgradeProperties[2026] = {
825 'Geom' :
'Extended2026D35',
827 'GT' :
'auto:phase2_realistic_T6',
829 'ScenToRun' : [
'GenSimHLBeamSpotFull',
'DigiFullTrigger',
'RecoFullGlobal',
'HARVESTFullGlobal'],
832 'Geom' :
'Extended2026D41',
834 'GT' :
'auto:phase2_realistic_T14',
836 'ScenToRun' : [
'GenSimHLBeamSpotFull',
'DigiFullTrigger',
'RecoFullGlobal',
'HARVESTFullGlobal'],
839 'Geom' :
'Extended2026D43',
841 'GT' :
'auto:phase2_realistic_T14',
843 'ScenToRun' : [
'GenSimHLBeamSpotFull',
'DigiFullTrigger',
'RecoFullGlobal',
'HARVESTFullGlobal'],
846 'Geom' :
'Extended2026D44',
848 'GT' :
'auto:phase2_realistic_T14',
850 'ScenToRun' : [
'GenSimHLBeamSpotFull',
'DigiFullTrigger',
'RecoFullGlobal',
'HARVESTFullGlobal'],
853 'Geom' :
'Extended2026D45',
855 'GT' :
'auto:phase2_realistic_T15',
857 'ScenToRun' : [
'GenSimHLBeamSpotFull',
'DigiFullTrigger',
'RecoFullGlobal',
'HARVESTFullGlobal'],
860 'Geom' :
'Extended2026D46',
862 'GT' :
'auto:phase2_realistic_T15',
864 'ScenToRun' : [
'GenSimHLBeamSpotFull',
'DigiFullTrigger',
'RecoFullGlobal',
'HARVESTFullGlobal'],
867 'Geom' :
'Extended2026D47',
869 'GT' :
'auto:phase2_realistic_T15',
871 'ScenToRun' : [
'GenSimHLBeamSpotFull',
'DigiFullTrigger',
'RecoFullGlobal',
'HARVESTFullGlobal'],
874 'Geom' :
'Extended2026D48',
876 'GT' :
'auto:phase2_realistic_T15',
878 'ScenToRun' : [
'GenSimHLBeamSpotFull',
'DigiFullTrigger',
'RecoFullGlobal',
'HARVESTFullGlobal'],
881 'Geom' :
'Extended2026D49',
882 'HLTmenu':
'@relval2026',
883 'GT' :
'auto:phase2_realistic_T15',
885 'ScenToRun' : [
'GenSimHLBeamSpotFull',
'DigiFullTrigger',
'RecoFullGlobal',
'HARVESTFullGlobal'],
888 'Geom' :
'Extended2026D51',
890 'GT' :
'auto:phase2_realistic_T15',
892 'ScenToRun' : [
'GenSimHLBeamSpotFull',
'DigiFullTrigger',
'RecoFullGlobal',
'HARVESTFullGlobal'],
895 'Geom' :
'Extended2026D53',
897 'GT' :
'auto:phase2_realistic_T15',
899 'ScenToRun' : [
'GenSimHLBeamSpotFull',
'DigiFullTrigger',
'RecoFullGlobal',
'HARVESTFullGlobal'],
902 'Geom' :
'Extended2026D54',
904 'GT' :
'auto:phase2_realistic_T19',
905 'ProcessModifier':
'phase2_PixelCPEGeneric',
907 'ScenToRun' : [
'GenSimHLBeamSpotFull',
'DigiFullTrigger',
'RecoFullGlobal',
'HARVESTFullGlobal'],
910 'Geom' :
'Extended2026D55',
912 'GT' :
'auto:phase2_realistic_T19',
913 'ProcessModifier':
'phase2_PixelCPEGeneric',
915 'ScenToRun' : [
'GenSimHLBeamSpotFull',
'DigiFullTrigger',
'RecoFullGlobal',
'HARVESTFullGlobal'],
918 'Geom' :
'Extended2026D56',
920 'GT' :
'auto:phase2_realistic_T15',
922 'ScenToRun' : [
'GenSimHLBeamSpotFull',
'DigiFullTrigger',
'RecoFullGlobal',
'HARVESTFullGlobal'],
925 'Geom' :
'Extended2026D57',
927 'GT' :
'auto:phase2_realistic_T15',
929 'ScenToRun' : [
'GenSimHLBeamSpotFull',
'DigiFullTrigger',
'RecoFullGlobal',
'HARVESTFullGlobal'],
932 'Geom' :
'Extended2026D58',
934 'GT' :
'auto:phase2_realistic_T15',
936 'ScenToRun' : [
'GenSimHLBeamSpotFull',
'DigiFullTrigger',
'RecoFullGlobal',
'HARVESTFullGlobal'],
941 for key
in list(upgradeProperties[2026].
keys()):
942 upgradeProperties[2026][key+
'PU'] = deepcopy(upgradeProperties[2026][key])
943 upgradeProperties[2026][key+
'PU'][
'ScenToRun'] = [
'GenSimHLBeamSpotFull',
'DigiFullTriggerPU',
'RecoFullGlobalPU',
'HARVESTFullGlobalPU']
947 for year
in upgradeKeys:
948 for key
in upgradeKeys[year]:
949 if 'PU' in key:
continue
950 defaultDataSets[key] =
''
958 upgradeFragments = OrderedDict([
962 (
'SingleElectronPt1000_pythia8_cfi',
UpgradeFragment(
Kby(9,50),
'SingleElectronPt1000')),
969 (
'FourMuExtendedPt_1_200_pythia8_cfi',
UpgradeFragment(
Kby(10,100),
'FourMuExtendedPt1_200')),
970 (
'TenMuExtendedE_0_200_pythia8_cfi',
UpgradeFragment(
Kby(10,100),
'TenMuExtendedE_0_200')),
971 (
'DoubleElectronPt10Extended_pythia8_cfi',
UpgradeFragment(
Kby(9,100),
'SingleElPt10Extended')),
972 (
'DoubleElectronPt35Extended_pythia8_cfi',
UpgradeFragment(
Kby(9,100),
'SingleElPt35Extended')),
973 (
'DoubleElectronPt1000Extended_pythia8_cfi',
UpgradeFragment(
Kby(9,50),
'SingleElPt1000Extended')),
974 (
'DoubleGammaPt10Extended_pythia8_cfi',
UpgradeFragment(
Kby(9,100),
'SingleGammaPt10Extended')),
975 (
'DoubleGammaPt35Extended_pythia8_cfi',
UpgradeFragment(
Kby(9,50),
'SingleGammaPt35Extended')),
976 (
'DoubleMuPt1Extended_pythia8_cfi',
UpgradeFragment(
Kby(25,100),
'SingleMuPt1Extended')),
977 (
'DoubleMuPt10Extended_pythia8_cfi',
UpgradeFragment(
Kby(25,100),
'SingleMuPt10Extended')),
978 (
'DoubleMuPt100Extended_pythia8_cfi',
UpgradeFragment(
Kby(9,100),
'SingleMuPt100Extended')),
979 (
'DoubleMuPt1000Extended_pythia8_cfi',
UpgradeFragment(
Kby(9,100),
'SingleMuPt1000Extended')),
982 (
'MinBias_13TeV_pythia8_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(90,100),
'MinBias_13')),
985 (
'QCD_Pt_600_800_13TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(9,50),
'QCD_Pt_600_800_13')),
986 (
'Wjet_Pt_80_120_14TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(9,100),
'Wjet_Pt_80_120_14TeV')),
987 (
'Wjet_Pt_3000_3500_14TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(9,50),
'Wjet_Pt_3000_3500_14TeV')),
989 (
'QCD_Pt_3000_3500_14TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(9,50),
'QCD_Pt_3000_3500_14TeV')),
990 (
'QCD_Pt_80_120_14TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(9,100),
'QCD_Pt_80_120_14TeV')),
991 (
'H200ChargedTaus_Tauola_14TeV_cfi',
UpgradeFragment(
Kby(9,100),
'Higgs200ChargedTaus_14TeV')),
995 (
'ZTT_Tauola_All_hadronic_14TeV_TuneCP5_cfi',
UpgradeFragment(
Kby(9,100),
'ZTT_14TeV')),
996 (
'H130GGgluonfusion_14TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(9,100),
'H130GGgluonfusion_14TeV')),
997 (
'PhotonJet_Pt_10_14TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(9,100),
'PhotonJets_Pt_10_14TeV')),
998 (
'QQH1352T_Tauola_14TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(9,100),
'QQH1352T_Tauola_14TeV')),
1002 (
'QCDForPF_14TeV_TuneCP5_cfi',
UpgradeFragment(
Kby(50,100),
'QCD_FlatPt_15_3000HS_14')),
1004 (
'DYToTauTau_M-50_14TeV_pythia8_tauola_cff',
UpgradeFragment(
Kby(9,100),
'DYtoTauTau_M_50_14TeV')),
1006 (
'QCD_Pt_80_120_13TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(9,100),
'QCD_Pt_80_120_13')),
1007 (
'H125GGgluonfusion_13TeV_TuneCP5_cfi',
UpgradeFragment(
Kby(9,50),
'H125GGgluonfusion_13')),
1008 (
'QCD_Pt20toInf_MuEnrichedPt15_14TeV_TuneCP5_cff',
UpgradeFragment(
Kby(19565, 217391),
'QCD_Pt20toInfMuEnrichPt15_14')),
1010 (
'QCD_Pt15To7000_Flat_14TeV_TuneCP5_cff',
UpgradeFragment(
Kby(9,50),
'QCD_Pt15To7000_Flat_14')),
1011 (
'H125GGgluonfusion_14TeV_TuneCP5_cfi',
UpgradeFragment(
Kby(9,50),
'H125GGgluonfusion_14')),
1012 (
'QCD_Pt_600_800_14TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(9,50),
'QCD_Pt_600_800_14')),
1015 (
'H200ChargedTaus_Tauola_13TeV_cfi',
UpgradeFragment(
Kby(9,50),
'Higgs200ChargedTaus_13')),
1016 (
'ADDMonoJet_13TeV_d3MD3_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(9,50),
'ADDMonoJet_d3MD3_13')),
1018 (
'QCD_Pt_3000_3500_13TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(9,50),
'QCD_Pt_3000_3500_13')),
1025 (
'PhotonJet_Pt_10_13TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(9,50),
'PhotonJets_Pt_10_13')),
1027 (
'Wjet_Pt_80_120_13TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(9,50),
'Wjet_Pt_80_120_13')),
1028 (
'Wjet_Pt_3000_3500_13TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(9,50),
'Wjet_Pt_3000_3500_13')),
1029 (
'SMS-T1tttt_mGl-1500_mLSP-100_13TeV-pythia8_cfi',
UpgradeFragment(
Kby(9,50),
'SMS-T1tttt_mGl-1500_mLSP-100_13')),
1030 (
'QCDForPF_13TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(50,100),
'QCD_FlatPt_15_3000HS_13')),
1031 (
'PYTHIA8_PhiToMuMu_TuneCUETP8M1_13TeV_cff',
UpgradeFragment(
Kby(9,50),
'PhiToMuMu_13')),
1032 (
'RSKKGluon_m3000GeV_13TeV_TuneCUETP8M1_cff',
UpgradeFragment(
Kby(9,50),
'RSKKGluon_m3000GeV_13')),
1036 (
'Upsilon1SToMuMu_forSTEAM_13TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(9,50),
'Upsilon1SToMuMu_13')),
1037 (
'EtaBToJpsiJpsi_forSTEAM_TuneCUEP8M1_13TeV_cfi',
UpgradeFragment(
Kby(9,50),
'EtaBToJpsiJpsi_13')),
1038 (
'JpsiMuMu_Pt-8_forSTEAM_13TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(3100,100000),
'JpsiMuMu_Pt-8')),
1039 (
'BuMixing_BMuonFilter_forSTEAM_13TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(900,10000),
'BuMixing_13')),
1040 (
'HSCPstop_M_200_TuneCUETP8M1_13TeV_pythia8_cff',
UpgradeFragment(
Kby(9,50),
'HSCPstop_M_200_13')),
1041 (
'RSGravitonToGammaGamma_kMpl01_M_3000_TuneCUETP8M1_13TeV_pythia8_cfi',
UpgradeFragment(
Kby(9,50),
'RSGravitonToGaGa_13')),
1042 (
'WprimeToENu_M-2000_TuneCUETP8M1_13TeV-pythia8_cff',
UpgradeFragment(
Kby(9,50),
'WpToENu_M-2000_13')),
1043 (
'DisplacedSUSY_stopToBottom_M_300_1000mm_TuneCUETP8M1_13TeV_pythia8_cff',
UpgradeFragment(
Kby(9,50),
'DisplacedSUSY_stopToB_M_300_1000mm_13')),
1045 (
'FlatRandomPtAndDxyGunProducer_cfi',
UpgradeFragment(
Kby(9,100),
'DisplacedMuonsDxy_0_500')),
1047 (
'SinglePiPt25Eta1p7_2p7_cfi',
UpgradeFragment(
Kby(9,100),
'SinglePiPt25Eta1p7_2p7')),
1048 (
'SingleMuPt15Eta1p7_2p7_cfi',
UpgradeFragment(
Kby(9,100),
'SingleMuPt15Eta1p7_2p7')),
1049 (
'SingleGammaPt25Eta1p7_2p7_cfi',
UpgradeFragment(
Kby(9,100),
'SingleGammaPt25Eta1p7_2p7')),
1050 (
'SingleElectronPt15Eta1p7_2p7_cfi',
UpgradeFragment(
Kby(9,100),
'SingleElectronPt15Eta1p7_2p7')),
1052 (
'CloseByParticle_Photon_ERZRanges_cfi',
UpgradeFragment(
Kby(9,100),
'CloseByParticleGun')),
1053 (
'CE_E_Front_300um_cfi',
UpgradeFragment(
Kby(9,100),
'CloseByPGun_CE_E_Front_300um')),
1054 (
'CE_E_Front_200um_cfi',
UpgradeFragment(
Kby(9,100),
'CloseByPGun_CE_E_Front_200um')),
1055 (
'CE_E_Front_120um_cfi',
UpgradeFragment(
Kby(9,100),
'CloseByPGun_CE_E_Front_120um')),
1059 (
'CE_H_Coarse_Scint_cfi',
UpgradeFragment(
Kby(9,100),
'CloseByPGun_CE_H_Coarse_Scint')),
1060 (
'CE_H_Coarse_300um_cfi',
UpgradeFragment(
Kby(9,100),
'CloseByPGun_CE_H_Coarse_300um')),
1061 (
'SingleElectronFlatPt2To100_cfi',
UpgradeFragment(
Kby(9,100),
'SingleEFlatPt2To100')),
1064 (
'SingleGammaFlatPt8To150_cfi',
UpgradeFragment(
Kby(9,100),
'SingleGammaFlatPt8To150')),
1067 (
'FlatRandomPtAndDxyGunProducer_MuPt2To10_cfi',
UpgradeFragment(
Kby(9,100),
'DisplacedMuPt2To10')),
1068 (
'FlatRandomPtAndDxyGunProducer_MuPt10To30_cfi',
UpgradeFragment(
Kby(9,100),
'DisplacedMuPt10To30')),
1069 (
'FlatRandomPtAndDxyGunProducer_MuPt30To100_cfi',
UpgradeFragment(
Kby(9,100),
'DisplacedMuPt30To100')),
1070 (
'B0ToKstarMuMu_14TeV_TuneCP5_cfi',
UpgradeFragment(
Kby(304,3030),
'B0ToKstarMuMu_14TeV')),
1072 (
'BsToJpsiGamma_14TeV_TuneCP5_cfi',
UpgradeFragment(
Kby(2500,25000),
'BsToJpsiGamma_14TeV')),
1073 (
'BsToJpsiPhi_mumuKK_14TeV_TuneCP5_cfi',
UpgradeFragment(
Kby(910,9090),
'BsToJpsiPhi_mumuKK_14TeV')),
1075 (
'BsToPhiPhi_KKKK_14TeV_TuneCP5_cfi',
UpgradeFragment(
Kby(556,5555),
'BsToPhiPhi_KKKK_14TeV')),
1076 (
'TauToMuMuMu_14TeV_TuneCP5_cfi',
UpgradeFragment(
Kby(18939,189393),
'TauToMuMuMu_14TeV')),
1077 (
'BdToKstarEleEle_14TeV_TuneCP5_cfi',
UpgradeFragment(
Kby(206,2061),
'BdToKstarEleEle_14TeV')),
1079 (
'BuMixing_BMuonFilter_forSTEAM_14TeV_TuneCP5_cfi',
UpgradeFragment(
Kby(900,10000),
'BuMixing_14')),
1080 (
'Upsilon1SToMuMu_forSTEAM_14TeV_TuneCP5_cfi',
UpgradeFragment(
Kby(9,50),
'Upsilon1SToMuMu_14')),
1081 (
'TenTau_E_15_500_Eta3p1_pythia8_cfi',
UpgradeFragment(
Kby(9,100),
'TenTau_15_500_Eta3p1')),