1 from copy
import deepcopy
2 from collections
import OrderedDict
4 from .MatrixUtil
import merge, Kby
66 numWFConflict = [[20000,23200],[23600,28200],[28600,29800],[50000,51000]]
72 for year
in upgradeKeys:
73 for i
in range(0,len(upgradeKeys[year])):
74 numWFtmp = numWFStart[year]
if i==0
else (numWFAll[year][i-1] + numWFSkip)
75 for conflict
in numWFConflict:
76 if numWFtmp>=conflict[0]
and numWFtmp<conflict[1]:
77 numWFtmp = conflict[1]
79 numWFAll[year].
append(numWFtmp)
86 preventReuseKeyword =
'NOREUSE'
95 if not step
in self.
steps:
102 raise ValueError(
"Special workflow offset must be between 0.0 and 1.0")
104 stepName = step + self.
suffix + extra
107 stepNamePU = step +
'PU' + self.
suffix + extra
110 for step
in self.
steps:
116 def setup(self, stepDict, k, properties):
117 for step
in self.
steps:
124 def setup_(self, step, stepName, stepDict, k, properties):
126 def setupPU_(self, step, stepName, stepDict, k, properties):
128 def workflow(self, workflows, num, fragment, stepList, key, hasHarvest):
129 if self.condition(fragment, stepList, key, hasHarvest):
130 self.workflow_(workflows, num, fragment, stepList, key)
131 def workflow_(self, workflows, num, fragment, stepList, key):
132 fragmentTmp = [fragment, key]
134 workflows[num+self.
offset] = [ fragmentTmp, stepList ]
135 def condition(self, fragment, stepList, key, hasHarvest):
138 if "Sim" in stepName:
139 stepDict[stepName][k] =
None
140 upgradeWFs = OrderedDict()
143 def setup_(self, step, stepName, stepDict, k, properties):
144 cust=properties.get(
'Custom',
None)
145 era=properties.get(
'Era',
None)
146 modifier=properties.get(
'ProcessModifier',
None)
147 if cust
is not None: stepDict[stepName][k][
'--customise']=cust
148 if era
is not None: stepDict[stepName][k][
'--era']=era
149 if modifier
is not None: stepDict[stepName][k][
'--procModifier']=modifier
150 def condition(self, fragment, stepList, key, hasHarvest):
156 'GenSimHLBeamSpot14',
191 def condition(self, fragment, stepList, key, hasHarvest):
192 result = (fragment==
"TTbar_13" or fragment==
"TTbar_14TeV")
and not 'PU' in key
and hasHarvest
and self.
condition_(fragment, stepList, key, hasHarvest)
195 skipList = [s
for s
in stepList
if ((
"ALCA" in s)
or (
"Nano" in s))]
196 for skip
in skipList:
197 stepList.remove(skip)
203 def setup_(self, step, stepName, stepDict, k, properties):
204 if 'Reco' in step: stepDict[stepName][k] =
merge([self.
step3, stepDict[step][k]])
205 elif 'HARVEST' in step: stepDict[stepName][k] =
merge([{
'-s':
'HARVESTING:@trackingOnlyValidation+@trackingOnlyDQM'}, stepDict[step][k]])
214 suffix =
'_trackingOnly',
217 upgradeWFs[
'trackingOnly'].step3 = {
218 '-s':
'RAW2DIGI,RECO:reconstruction_trackingOnly,VALIDATION:@trackingOnlyValidation,DQM:@trackingOnlyDQM',
219 '--datatier':
'GEN-SIM-RECO,DQMIO',
220 '--eventcontent':
'RECOSIM,DQM',
223 step3_trackingOnly = upgradeWFs[
'trackingOnly'].step3
226 def setup_(self, step, stepName, stepDict, k, properties):
227 if 'Reco' in step
and stepDict[step][k][
'--era']==
'Run2_2017':
228 stepDict[stepName][k] =
merge([{
'--era':
'Run2_2017_trackingRun2'}, stepDict[step][k]])
236 suffix =
'_trackingRun2',
241 def setup_(self, step, stepName, stepDict, k, properties):
242 if 'Reco' in step
and stepDict[step][k][
'--era']==
'Run2_2017':
243 stepDict[stepName][k] =
merge([{
'--era':
'Run2_2017_trackingRun2'}, self.
step3, stepDict[step][k]])
244 elif 'HARVEST' in step: stepDict[stepName][k] =
merge([{
'-s':
'HARVESTING:@trackingOnlyValidation+@trackingOnlyDQM'}, stepDict[step][k]])
253 suffix =
'_trackingOnlyRun2',
256 upgradeWFs[
'trackingOnlyRun2'].step3 = upgradeWFs[
'trackingOnly'].step3
259 def setup_(self, step, stepName, stepDict, k, properties):
260 if 'Reco' in step
and stepDict[step][k][
'--era']==
'Run2_2017':
261 stepDict[stepName][k] =
merge([{
'--era':
'Run2_2017_trackingLowPU'}, stepDict[step][k]])
269 suffix =
'_trackingLowPU',
274 def setup_(self, step, stepName, stepDict, k, properties):
275 if 'Reco' in step: stepDict[stepName][k] =
merge([self.
step3, stepDict[step][k]])
276 elif 'HARVEST' in step: stepDict[stepName][k] =
merge([{
'-s':
'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM'}, stepDict[step][k]])
278 return '2017' in key
or '2018' in key
or '2021' in key
287 suffix =
'_pixelTrackingOnly',
290 upgradeWFs[
'pixelTrackingOnly'].step3 = {
291 '-s':
'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly,VALIDATION:@pixelTrackingOnlyValidation,DQM:@pixelTrackingOnlyDQM',
292 '--datatier':
'GEN-SIM-RECO,DQMIO',
293 '--eventcontent':
'RECOSIM,DQM',
297 def setup_(self, step, stepName, stepDict, k, properties):
298 if 'Reco' in step: stepDict[stepName][k] =
merge([self.
step3, stepDict[step][k]])
300 return '2017' in key
or '2021' in key
307 suffix =
'_trackingMkFit',
310 upgradeWFs[
'trackingMkFit'].step3 = {
311 '--procModifiers':
'trackingMkFit'
316 def setup_(self, step, stepName, stepDict, k, properties):
317 stepDict[stepName][k] =
merge([{
'--procModifiers':
'vectorHits'}, stepDict[step][k]])
318 def condition(self, fragment, stepList, key, hasHarvest):
319 return fragment==
"TTbar_14TeV" and '2026' in key
327 suffix =
'_vectorHits',
333 def condition(self, fragment, stepList, key, hasHarvest):
334 is_2018_ttbar = (
'2018' in key
and fragment==
"TTbar_13")
335 is_2021_ttbar = (
'2021' in key
and fragment==
"TTbar_14TeV")
336 is_2018_zmumu = (
'2018' in key
and fragment==
"ZMM_13")
337 is_2021_zmumu = (
'2021' in key
and fragment==
"ZMM_14")
338 result =
any((is_2018_ttbar, is_2021_ttbar, is_2018_zmumu, is_2021_zmumu))
and hasHarvest
and self.
condition_(fragment, stepList, key, hasHarvest)
341 skipList = [s
for s
in stepList
if ((
"ALCA" in s)
or (
"Nano" in s))]
342 for skip
in skipList:
343 stepList.remove(skip)
349 def setup_(self, step, stepName, stepDict, k, properties):
351 stepDict[stepName][k] =
merge([self.
step3, stepDict[step][k]])
352 elif 'HARVEST' in step:
353 stepDict[stepName][k] =
merge([{
'-s':
'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM'}, stepDict[step][k]])
356 return '2018' in key
or '2021' in key
368 suffix =
'Patatrack_PixelOnlyCPU',
372 upgradeWFs[
'PatatrackPixelOnlyCPU'].step3 = {
373 '-s':
'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly,VALIDATION:@pixelTrackingOnlyValidation,DQM:@pixelTrackingOnlyDQM',
374 '--datatier':
'GEN-SIM-RECO,DQMIO',
375 '--eventcontent':
'RECOSIM,DQM',
376 '--procModifiers':
'pixelNtupleFit'
380 def setup_(self, step, stepName, stepDict, k, properties):
382 stepDict[stepName][k] =
merge([self.
step3, stepDict[step][k]])
383 elif 'HARVEST' in step:
384 stepDict[stepName][k] =
merge([{
'-s':
'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM'}, stepDict[step][k]])
387 return '2018' in key
or '2021' in key
399 suffix =
'Patatrack_PixelOnlyGPU',
403 upgradeWFs[
'PatatrackPixelOnlyGPU'].step3 = {
404 '-s':
'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly,VALIDATION:@pixelTrackingOnlyValidation,DQM:@pixelTrackingOnlyDQM',
405 '--datatier':
'GEN-SIM-RECO,DQMIO',
406 '--eventcontent':
'RECOSIM,DQM',
407 '--procModifiers':
'gpu'
411 def setup_(self, step, stepName, stepDict, k, properties):
413 stepDict[stepName][k] =
merge([self.
step3, stepDict[step][k]])
414 elif 'HARVEST' in step:
415 stepDict[stepName][k] =
merge([{
'-s':
'HARVESTING:@ecalOnlyValidation+@ecal'}, stepDict[step][k]])
418 return '2018' in key
or '2021' in key
430 suffix =
'Patatrack_ECALOnlyCPU',
434 upgradeWFs[
'PatatrackECALOnlyCPU'].step3 = {
435 '-s':
'RAW2DIGI:RawToDigi_ecalOnly,RECO:reconstruction_ecalOnly,VALIDATION:@ecalOnlyValidation,DQM:@ecalOnly',
436 '--datatier':
'GEN-SIM-RECO,DQMIO',
437 '--eventcontent':
'RECOSIM,DQM',
441 def setup_(self, step, stepName, stepDict, k, properties):
443 stepDict[stepName][k] =
merge([self.
step3, stepDict[step][k]])
444 elif 'HARVEST' in step:
445 stepDict[stepName][k] =
merge([{
'-s':
'HARVESTING:@ecalOnlyValidation+@ecal'}, stepDict[step][k]])
448 return '2018' in key
or '2021' in key
460 suffix =
'Patatrack_ECALOnlyGPU',
464 upgradeWFs[
'PatatrackECALOnlyGPU'].step3 = {
465 '-s':
'RAW2DIGI:RawToDigi_ecalOnly,RECO:reconstruction_ecalOnly,VALIDATION:@ecalOnlyValidation,DQM:@ecalOnly',
466 '--datatier':
'GEN-SIM-RECO,DQMIO',
467 '--eventcontent':
'RECOSIM,DQM',
468 '--procModifiers':
'gpu'
472 def setup_(self, step, stepName, stepDict, k, properties):
474 stepDict[stepName][k] =
merge([self.
step3, stepDict[step][k]])
475 elif 'HARVEST' in step:
476 stepDict[stepName][k] =
merge([{
'-s':
'HARVESTING:@hcalOnlyValidation+@hcalOnly+@hcal2Only'}, stepDict[step][k]])
479 return '2018' in key
or '2021' in key
491 suffix =
'Patatrack_HCALOnlyCPU',
495 upgradeWFs[
'PatatrackHCALOnlyCPU'].step3 = {
496 '-s':
'RAW2DIGI:RawToDigi_hcalOnly,RECO:reconstruction_hcalOnly,VALIDATION:@hcalOnlyValidation,DQM:@hcalOnly+@hcal2Only',
497 '--datatier':
'GEN-SIM-RECO,DQMIO',
498 '--eventcontent':
'RECOSIM,DQM',
502 def setup_(self, step, stepName, stepDict, k, properties):
504 stepDict[stepName][k] =
merge([self.
step3, stepDict[step][k]])
505 elif 'HARVEST' in step:
506 stepDict[stepName][k] =
merge([{
'-s':
'HARVESTING:@hcalOnlyValidation+@hcalOnly+@hcal2Only'}, stepDict[step][k]])
509 return '2018' in key
or '2021' in key
521 suffix =
'Patatrack_HCALOnlyGPU',
525 upgradeWFs[
'PatatrackHCALOnlyGPU'].step3 = {
526 '-s':
'RAW2DIGI:RawToDigi_hcalOnly,RECO:reconstruction_hcalOnly,VALIDATION:@hcalOnlyValidation,DQM:@hcalOnly+@hcal2Only',
527 '--datatier':
'GEN-SIM-RECO,DQMIO',
528 '--eventcontent':
'RECOSIM,DQM',
529 '--procModifiers':
'gpu'
535 def setup_(self, step, stepName, stepDict, k, properties):
536 if 'Digi' in step
and 'Trigger' not in step:
537 stepDict[stepName][k] =
merge([{
'-s':
'DIGI,L1,DIGI2RAW,HLT:@relval2021',
'--datatier':
'GEN-SIM-DIGI-RAW',
'--eventcontent':
'RAWSIM'}, stepDict[step][k]])
539 stepDict[stepName][k] =
merge([{
'-s':
'RAW2DIGI,L1Reco,RECO,RECOSIM',
'--datatier':
'AODSIM',
'--eventcontent':
'AODSIM'}, stepDict[step][k]])
540 elif 'MiniAOD' in step:
542 stepDict[stepName][k] = deepcopy(stepDict[step][k])
543 if 'ALCA' in step
or 'HARVEST' in step:
545 stepDict[stepName][k] =
None
547 stepDict[stepName][k] =
merge([{
'--filein':
'file:step4.root'}, stepDict[step][k]])
548 def condition(self, fragment, stepList, key, hasHarvest):
549 return fragment==
"TTbar_14TeV" and (
'2026' in key
or '2021' in key)
571 suffix =
'_ProdLike',
576 def setup_(self, step, stepName, stepDict, k, properties):
578 custNew =
"SimG4Core/Application/NeutronBGforMuonsXS_cff.customise"
580 custNew =
"SLHCUpgradeSimulations/Configuration/customise_mixing.customise_Mix_LongLived_Neutrons"
581 stepDict[stepName][k] = deepcopy(stepDict[step][k])
582 if '--customise' in stepDict[stepName][k].
keys():
583 stepDict[stepName][k][
'--customise'] +=
","+custNew
585 stepDict[stepName][k][
'--customise'] = custNew
586 def condition(self, fragment, stepList, key, hasHarvest):
592 'GenSimHLBeamSpot14',
604 upgradeWFs[
'Neutron'].neutronKeys = [x
for x
in upgradeKeys[2026]
if 'PU' not in x]
605 upgradeWFs[
'Neutron'].neutronFrags = [
'ZMM_14',
'MinBias_14TeV']
608 def setup_(self, step, stepName, stepDict, k, properties):
609 stepDict[stepName][k] =
merge([{
'--procModifiers':
'run2_HECollapse_2018'}, stepDict[step][k]])
610 def condition(self, fragment, stepList, key, hasHarvest):
611 return fragment==
"TTbar_13" and '2018' in key
625 suffix =
'_heCollapse',
630 def setup_(self, step, stepName, stepDict, k, properties):
632 mods = {
'--era': stepDict[step][k][
'--era']+
',phase2_ecal_devel'}
634 mods[
'-s'] =
'DIGI:pdigi_valid'
635 stepDict[stepName][k] =
merge([mods, stepDict[step][k]])
636 def condition(self, fragment, stepList, key, hasHarvest):
637 return fragment==
"TTbar_14TeV" and '2026' in key
649 suffix =
'_ecalDevel',
654 def setup_(self, step, stepName, stepDict, k, properties):
655 myGT=stepDict[step][k][
'--conditions']
657 stepDict[stepName][k] =
merge([{
'-n':
'1',
'--magField':
'0T',
'--conditions':myGT}, stepDict[step][k]])
658 def condition(self, fragment, stepList, key, hasHarvest):
659 return (fragment==
"TTbar_13" or fragment==
"TTbar_14TeV")
and (
'2017' in key
or '2018' in key
or '2021' in key)
678 def setup_(self, step, stepName, stepDict, k, properties):
679 if 'Reco' in step
and 'Run2_2018' in stepDict[step][k][
'--era']:
680 stepDict[stepName][k] =
merge([{
'--era':
'Run2_2018,bParking'}, stepDict[step][k]])
681 def condition(self, fragment, stepList, key, hasHarvest):
682 return fragment==
"TTbar_13" and '2018' in key
688 suffix =
'_ParkingBPH',
693 def setup_(self, step, stepName, stepDict, k, properties):
695 stepDict[stepName][k] =
merge([{
'--customise':
'PhysicsTools/NanoAOD/custom_jme_cff.PrepJMECustomNanoAOD_MC'}, stepDict[step][k]])
696 def condition(self, fragment, stepList, key, hasHarvest):
697 return fragment==
"TTbar_13" and (
'2017' in key
or '2018' in key)
710 def setup_(self, step, stepName, stepDict, k, properties):
711 if 'Digi' in step
or 'Reco' in step:
712 stepDict[stepName][k] =
merge([{
'--customise':
'SLHCUpgradeSimulations/Configuration/aging.customise_aging_'+self.
lumi}, stepDict[step][k]])
713 def condition(self, fragment, stepList, key, hasHarvest):
714 return fragment==
"TTbar_14TeV" and '2026' in key
731 suffix =
'Aging1000',
734 upgradeWFs[
'Aging1000'].lumi =
'1000'
735 upgradeWFs[
'Aging3000'] = deepcopy(upgradeWFs[
'Aging1000'])
736 upgradeWFs[
'Aging3000'].suffix =
'Aging3000'
737 upgradeWFs[
'Aging3000'].offset = 0.103
738 upgradeWFs[
'Aging3000'].lumi =
'3000'
746 digiPremixLocalPileup = {
747 "--filein":
"file:step1.root",
748 "--pileup_input":
"file:step2.root"
753 def setup_(self, step, stepName, stepDict, k, properties):
755 stepDict[stepName][k] =
merge([stepDict[step][k]])
756 def setupPU_(self, step, stepName, stepDict, k, properties):
758 if "GenSim" in stepName:
759 stepNamePmx = stepName.replace(
'GenSim',
'Premix')
760 if not stepNamePmx
in stepDict: stepDict[stepNamePmx] = {}
761 stepDict[stepNamePmx][k] =
merge([
763 '-s':
'GEN,SIM,DIGI:pdigi_valid',
764 '--datatier':
'PREMIX',
765 '--eventcontent':
'PREMIX',
766 '--procModifiers':
'premix_stage1'
768 stepDict[stepName][k]
771 elif "Digi" in step
or "Reco" in step:
777 for s
in d[
"-s"].
split(
","):
778 if s ==
"DIGI" or "DIGI:" in s:
779 tmpsteps.extend([s,
"DATAMIX"])
783 "--datamix" :
"PreMix",
784 "--procModifiers":
"premix_stage2"},
787 if "_PMXS1S2" in self.
suffix:
788 d =
merge([digiPremixLocalPileup, d])
790 if "--procModifiers" in d:
791 d[
"--procModifiers"] +=
",premix_stage2"
793 d[
"--procModifiers"] =
"premix_stage2"
794 stepDict[stepName][k] = d
800 filein = d[
"--filein"]
801 m = re.search(
"step(?P<ind>\d+)_", filein)
803 d[
"--filein"] = filein.replace(m.group(),
"step%d_"%(
int(m.group(
"ind"))+1))
804 stepDict[stepName][k] = d
807 def condition(self, fragment, stepList, key, hasHarvest):
810 if not any(y
in key
for y
in [
'2021',
'2023',
'2024',
'2026']):
812 if self.
suffix.endswith(
"S1"):
813 return "NuGun" in fragment
815 def workflow_(self, workflows, num, fragment, stepList, key):
816 fragmentTmp = fragment
817 if self.
suffix.endswith(
"S1"):
818 fragmentTmp =
'PREMIXUP' + key[2:].
replace(
"PU",
"").
replace(
"Design",
"") +
'_PU25'
819 super(UpgradeWorkflowPremix,self).
workflow_(workflows, num, fragmentTmp, stepList, key)
827 'GenSimHLBeamSpot14',
852 'GenSimHLBeamSpot14',
865 def setupPU_(self, step, stepName, stepDict, k, properties):
867 if '--pileup' in stepDict[stepName][k]:
868 stepDict[stepName][k][
'--pileup'] =
'AVE_50_BX_25ns_m3p3'
869 super(UpgradeWorkflowAdjustPU,self).
setupPU_(step, stepName, stepDict, k, properties)
870 def condition(self, fragment, stepList, key, hasHarvest):
872 return super(UpgradeWorkflowAdjustPU,self).
condition(fragment, stepList, key, hasHarvest)
and '2026' in key
878 'GenSimHLBeamSpot14',
888 suffix =
'_PMXS1S2PR',
893 def setup_(self, step, stepName, stepDict, k, properties):
894 if 'Run3' in stepDict[step][k][
'--era']:
895 stepDict[stepName][k] =
merge([{
'--geometry':
'DD4hepExtended2021',
'--procModifiers':
'dd4hep'}, stepDict[step][k]])
896 elif 'Phase2' in stepDict[step][k][
'--era']:
898 dd4hepGeom+=stepDict[step][k][
'--geometry']
899 stepDict[stepName][k] =
merge([{
'--geometry' : dd4hepGeom,
'--procModifiers':
'dd4hep'}, stepDict[step][k]])
900 def condition(self, fragment, stepList, key, hasHarvest):
901 return ((fragment==
'TTbar_13' or fragment==
'ZMM_13' or fragment==
'SingleMuPt10')
and '2021' in key) \
902 or ((fragment==
'TTbar_14TeV' or fragment==
'ZMM_14' or fragment==
'SingleMuPt10')
and '2026' in key)
907 'GenSimHLBeamSpot14',
920 upgradeWFs[
'DD4hep'].allowReuse =
False
923 offsets = [specialWF.offset
for specialType,specialWF
in six.iteritems(upgradeWFs)]
925 dups = set(x
for x
in offsets
if x
in seen
or seen.add(x))
927 raise ValueError(
"Duplicate special workflow offsets not allowed: "+
','.
join([
str(x)
for x
in dups]))
929 upgradeProperties = {}
931 upgradeProperties[2017] = {
933 'Geom' :
'DB:Extended',
934 'GT' :
'auto:phase1_2017_realistic',
935 'HLTmenu':
'@relval2017',
937 'ScenToRun' : [
'GenSim',
'Digi',
'RecoFakeHLT',
'HARVESTFakeHLT',
'ALCA',
'Nano'],
940 'Geom' :
'DB:Extended',
941 'GT' :
'auto:phase1_2017_design',
942 'HLTmenu':
'@relval2017',
944 'BeamSpot':
'GaussSigmaZ4cm',
945 'ScenToRun' : [
'GenSim',
'Digi',
'RecoFakeHLT',
'HARVESTFakeHLT'],
948 'Geom' :
'DB:Extended',
949 'GT' :
'auto:phase1_2018_realistic',
950 'HLTmenu':
'@relval2018',
952 'BeamSpot':
'Realistic25ns13TeVEarly2018Collision',
953 'ScenToRun' : [
'GenSim',
'Digi',
'RecoFakeHLT',
'HARVESTFakeHLT',
'ALCA',
'Nano'],
956 'Geom' :
'DB:Extended',
957 'GT' :
'auto:phase1_2018_design',
958 'HLTmenu':
'@relval2018',
960 'BeamSpot':
'GaussSigmaZ4cm',
961 'ScenToRun' : [
'GenSim',
'Digi',
'RecoFakeHLT',
'HARVESTFakeHLT'],
964 'Geom' :
'DB:Extended',
965 'GT' :
'auto:phase1_2021_realistic',
966 'HLTmenu':
'@relval2021',
968 'BeamSpot':
'Run3RoundOptics25ns13TeVLowSigmaZ',
969 'ScenToRun' : [
'GenSim',
'Digi',
'Reco',
'HARVEST',
'ALCA'],
972 'Geom' :
'DB:Extended',
973 'GT' :
'auto:phase1_2021_design',
974 'HLTmenu':
'@relval2021',
976 'BeamSpot':
'GaussSigmaZ4cm',
977 'ScenToRun' : [
'GenSim',
'Digi',
'Reco',
'HARVEST'],
980 'Geom' :
'DB:Extended',
981 'GT' :
'auto:phase1_2023_realistic',
982 'HLTmenu':
'@relval2021',
984 'BeamSpot':
'Run3RoundOptics25ns13TeVLowSigmaZ',
985 'ScenToRun' : [
'GenSim',
'Digi',
'Reco',
'HARVEST',
'ALCA'],
988 'Geom' :
'DB:Extended',
989 'GT' :
'auto:phase1_2024_realistic',
990 'HLTmenu':
'@relval2021',
992 'BeamSpot':
'Run3RoundOptics25ns13TeVLowSigmaZ',
993 'ScenToRun' : [
'GenSim',
'Digi',
'Reco',
'HARVEST',
'ALCA'],
998 for key
in list(upgradeProperties[2017].
keys()):
999 upgradeProperties[2017][key+
'PU'] = deepcopy(upgradeProperties[2017][key])
1000 upgradeProperties[2017][key+
'PU'][
'ScenToRun'] = [
'GenSim',
'DigiPU'] + \
1001 ([
'RecoPU',
'HARVESTPU']
if '202' in key
else [
'RecoFakeHLTPU',
'HARVESTFakeHLTPU']) + \
1002 ([
'Nano']
if 'Design' not in key
else [])
1004 upgradeProperties[2026] = {
1006 'Geom' :
'Extended2026D49',
1007 'HLTmenu':
'@fake2',
1008 'GT' :
'auto:phase2_realistic_T15',
1010 'ScenToRun' : [
'GenSimHLBeamSpot',
'DigiTrigger',
'RecoGlobal',
'HARVESTGlobal'],
1013 'Geom' :
'Extended2026D60',
1014 'HLTmenu':
'@fake2',
1015 'GT' :
'auto:phase2_realistic_T15',
1016 'Era' :
'Phase2C10',
1017 'ScenToRun' : [
'GenSimHLBeamSpot',
'DigiTrigger',
'RecoGlobal',
'HARVESTGlobal'],
1020 'Geom' :
'Extended2026D64',
1021 'HLTmenu':
'@fake2',
1022 'GT' :
'auto:phase2_realistic_T22',
1023 'Era' :
'Phase2C11',
1024 'ScenToRun' : [
'GenSimHLBeamSpot',
'DigiTrigger',
'RecoGlobal',
'HARVESTGlobal'],
1027 'Geom' :
'Extended2026D65',
1028 'HLTmenu':
'@fake2',
1029 'GT' :
'auto:phase2_realistic_T23',
1030 'ProcessModifier':
'phase2_PixelCPEGeneric',
1031 'Era' :
'Phase2C11',
1032 'ScenToRun' : [
'GenSimHLBeamSpot',
'DigiTrigger',
'RecoGlobal',
'HARVESTGlobal'],
1035 'Geom' :
'Extended2026D66',
1036 'HLTmenu':
'@fake2',
1037 'GT' :
'auto:phase2_realistic_T21',
1038 'Era' :
'Phase2C11',
1039 'ScenToRun' : [
'GenSimHLBeamSpot',
'DigiTrigger',
'RecoGlobal',
'HARVESTGlobal'],
1042 'Geom' :
'Extended2026D67',
1043 'HLTmenu':
'@fake2',
1044 'GT' :
'auto:phase2_realistic_T21',
1045 'Era' :
'Phase2C11M9',
1046 'ScenToRun' : [
'GenSimHLBeamSpot',
'DigiTrigger',
'RecoGlobal',
'HARVESTGlobal'],
1049 'Geom' :
'Extended2026D68',
1050 'HLTmenu':
'@fake2',
1051 'GT' :
'auto:phase2_realistic_T21',
1052 'Era' :
'Phase2C11',
1053 'ScenToRun' : [
'GenSimHLBeamSpot',
'DigiTrigger',
'RecoGlobal',
'HARVESTGlobal'],
1056 'Geom' :
'Extended2026D69',
1057 'HLTmenu':
'@fake2',
1058 'GT' :
'auto:phase2_realistic_T21',
1059 'Era' :
'Phase2C12',
1060 'ScenToRun' : [
'GenSimHLBeamSpot',
'DigiTrigger',
'RecoGlobal',
'HARVESTGlobal'],
1063 'Geom' :
'Extended2026D70',
1064 'HLTmenu':
'@fake2',
1065 'GT' :
'auto:phase2_realistic_T21',
1066 'Era' :
'Phase2C11',
1067 'ScenToRun' : [
'GenSimHLBeamSpot',
'DigiTrigger',
'RecoGlobal',
'HARVESTGlobal'],
1070 'Geom' :
'Extended2026D71',
1071 'HLTmenu':
'@fake2',
1072 'GT' :
'auto:phase2_realistic_T21',
1073 'Era' :
'Phase2C11',
1074 'ScenToRun' : [
'GenSimHLBeamSpot',
'DigiTrigger',
'RecoGlobal',
'HARVESTGlobal'],
1077 'Geom' :
'Extended2026D72',
1078 'HLTmenu':
'@fake2',
1079 'GT' :
'auto:phase2_realistic_T21',
1080 'Era' :
'Phase2C11_etlV4',
1081 'ScenToRun' : [
'GenSimHLBeamSpot',
'DigiTrigger',
'RecoGlobal',
'HARVESTGlobal'],
1084 'Geom' :
'Extended2026D73',
1085 'HLTmenu':
'@fake2',
1086 'GT' :
'auto:phase2_realistic_T21',
1087 'Era' :
'Phase2C11_etlV4',
1088 'ScenToRun' : [
'GenSimHLBeamSpot',
'DigiTrigger',
'RecoGlobal',
'HARVESTGlobal'],
1091 'Geom' :
'Extended2026D74',
1092 'HLTmenu':
'@fake2',
1093 'GT' :
'auto:phase2_realistic_T21',
1094 'Era' :
'Phase2C11M9',
1095 'ScenToRun' : [
'GenSimHLBeamSpot',
'DigiTrigger',
'RecoGlobal',
'HARVESTGlobal'],
1100 for key
in list(upgradeProperties[2026].
keys()):
1101 upgradeProperties[2026][key+
'PU'] = deepcopy(upgradeProperties[2026][key])
1102 upgradeProperties[2026][key+
'PU'][
'ScenToRun'] = [
'GenSimHLBeamSpot',
'DigiTriggerPU',
'RecoGlobalPU',
'HARVESTGlobalPU']
1105 defaultDataSets = {}
1106 for year
in upgradeKeys:
1107 for key
in upgradeKeys[year]:
1108 if 'PU' in key:
continue
1109 defaultDataSets[key] =
''
1117 upgradeFragments = OrderedDict([
1119 (
'SingleElectronPt10_pythia8_cfi',
UpgradeFragment(
Kby(9,100),
'SingleElectronPt10')),
1120 (
'SingleElectronPt35_pythia8_cfi',
UpgradeFragment(
Kby(9,100),
'SingleElectronPt35')),
1121 (
'SingleElectronPt1000_pythia8_cfi',
UpgradeFragment(
Kby(9,50),
'SingleElectronPt1000')),
1128 (
'FourMuExtendedPt_1_200_pythia8_cfi',
UpgradeFragment(
Kby(10,100),
'FourMuExtendedPt1_200')),
1129 (
'TenMuExtendedE_0_200_pythia8_cfi',
UpgradeFragment(
Kby(10,100),
'TenMuExtendedE_0_200')),
1130 (
'DoubleElectronPt10Extended_pythia8_cfi',
UpgradeFragment(
Kby(9,100),
'SingleElPt10Extended')),
1131 (
'DoubleElectronPt35Extended_pythia8_cfi',
UpgradeFragment(
Kby(9,100),
'SingleElPt35Extended')),
1132 (
'DoubleElectronPt1000Extended_pythia8_cfi',
UpgradeFragment(
Kby(9,50),
'SingleElPt1000Extended')),
1133 (
'DoubleGammaPt10Extended_pythia8_cfi',
UpgradeFragment(
Kby(9,100),
'SingleGammaPt10Extended')),
1134 (
'DoubleGammaPt35Extended_pythia8_cfi',
UpgradeFragment(
Kby(9,50),
'SingleGammaPt35Extended')),
1135 (
'DoubleMuPt1Extended_pythia8_cfi',
UpgradeFragment(
Kby(25,100),
'SingleMuPt1Extended')),
1136 (
'DoubleMuPt10Extended_pythia8_cfi',
UpgradeFragment(
Kby(25,100),
'SingleMuPt10Extended')),
1137 (
'DoubleMuPt100Extended_pythia8_cfi',
UpgradeFragment(
Kby(9,100),
'SingleMuPt100Extended')),
1138 (
'DoubleMuPt1000Extended_pythia8_cfi',
UpgradeFragment(
Kby(9,100),
'SingleMuPt1000Extended')),
1141 (
'MinBias_13TeV_pythia8_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(90,100),
'MinBias_13')),
1144 (
'QCD_Pt_600_800_13TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(9,50),
'QCD_Pt_600_800_13')),
1145 (
'Wjet_Pt_80_120_14TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(9,100),
'Wjet_Pt_80_120_14TeV')),
1146 (
'Wjet_Pt_3000_3500_14TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(9,50),
'Wjet_Pt_3000_3500_14TeV')),
1148 (
'QCD_Pt_3000_3500_14TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(9,50),
'QCD_Pt_3000_3500_14TeV')),
1149 (
'QCD_Pt_80_120_14TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(9,100),
'QCD_Pt_80_120_14TeV')),
1150 (
'H200ChargedTaus_Tauola_14TeV_cfi',
UpgradeFragment(
Kby(9,100),
'Higgs200ChargedTaus_14TeV')),
1154 (
'ZTT_Tauola_All_hadronic_14TeV_TuneCP5_cfi',
UpgradeFragment(
Kby(9,100),
'ZTT_14TeV')),
1155 (
'H130GGgluonfusion_14TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(9,100),
'H130GGgluonfusion_14TeV')),
1156 (
'PhotonJet_Pt_10_14TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(9,100),
'PhotonJets_Pt_10_14TeV')),
1157 (
'QQH1352T_Tauola_14TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(9,100),
'QQH1352T_Tauola_14TeV')),
1161 (
'QCDForPF_14TeV_TuneCP5_cfi',
UpgradeFragment(
Kby(50,100),
'QCD_FlatPt_15_3000HS_14')),
1163 (
'DYToTauTau_M-50_14TeV_pythia8_tauola_cff',
UpgradeFragment(
Kby(9,100),
'DYtoTauTau_M_50_14TeV')),
1165 (
'QCD_Pt_80_120_13TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(9,100),
'QCD_Pt_80_120_13')),
1166 (
'H125GGgluonfusion_13TeV_TuneCP5_cfi',
UpgradeFragment(
Kby(9,50),
'H125GGgluonfusion_13')),
1167 (
'QCD_Pt20toInf_MuEnrichedPt15_14TeV_TuneCP5_cff',
UpgradeFragment(
Kby(19565, 217391),
'QCD_Pt20toInfMuEnrichPt15_14')),
1169 (
'QCD_Pt15To7000_Flat_14TeV_TuneCP5_cff',
UpgradeFragment(
Kby(9,50),
'QCD_Pt15To7000_Flat_14')),
1170 (
'H125GGgluonfusion_14TeV_TuneCP5_cfi',
UpgradeFragment(
Kby(9,50),
'H125GGgluonfusion_14')),
1171 (
'QCD_Pt_600_800_14TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(9,50),
'QCD_Pt_600_800_14')),
1174 (
'H200ChargedTaus_Tauola_13TeV_cfi',
UpgradeFragment(
Kby(9,50),
'Higgs200ChargedTaus_13')),
1175 (
'ADDMonoJet_13TeV_d3MD3_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(9,50),
'ADDMonoJet_d3MD3_13')),
1177 (
'QCD_Pt_3000_3500_13TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(9,50),
'QCD_Pt_3000_3500_13')),
1184 (
'PhotonJet_Pt_10_13TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(9,50),
'PhotonJets_Pt_10_13')),
1186 (
'Wjet_Pt_80_120_13TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(9,50),
'Wjet_Pt_80_120_13')),
1187 (
'Wjet_Pt_3000_3500_13TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(9,50),
'Wjet_Pt_3000_3500_13')),
1188 (
'SMS-T1tttt_mGl-1500_mLSP-100_13TeV-pythia8_cfi',
UpgradeFragment(
Kby(9,50),
'SMS-T1tttt_mGl-1500_mLSP-100_13')),
1189 (
'QCDForPF_13TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(50,100),
'QCD_FlatPt_15_3000HS_13')),
1190 (
'PYTHIA8_PhiToMuMu_TuneCUETP8M1_13TeV_cff',
UpgradeFragment(
Kby(9,50),
'PhiToMuMu_13')),
1191 (
'RSKKGluon_m3000GeV_13TeV_TuneCUETP8M1_cff',
UpgradeFragment(
Kby(9,50),
'RSKKGluon_m3000GeV_13')),
1195 (
'Upsilon1SToMuMu_forSTEAM_13TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(9,50),
'Upsilon1SToMuMu_13')),
1196 (
'EtaBToJpsiJpsi_forSTEAM_TuneCUEP8M1_13TeV_cfi',
UpgradeFragment(
Kby(9,50),
'EtaBToJpsiJpsi_13')),
1197 (
'JpsiMuMu_Pt-8_forSTEAM_13TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(3100,100000),
'JpsiMuMu_Pt-8')),
1198 (
'BuMixing_BMuonFilter_forSTEAM_13TeV_TuneCUETP8M1_cfi',
UpgradeFragment(
Kby(900,10000),
'BuMixing_13')),
1199 (
'HSCPstop_M_200_TuneCUETP8M1_13TeV_pythia8_cff',
UpgradeFragment(
Kby(9,50),
'HSCPstop_M_200_13')),
1200 (
'RSGravitonToGammaGamma_kMpl01_M_3000_TuneCUETP8M1_13TeV_pythia8_cfi',
UpgradeFragment(
Kby(9,50),
'RSGravitonToGaGa_13')),
1201 (
'WprimeToENu_M-2000_TuneCUETP8M1_13TeV-pythia8_cff',
UpgradeFragment(
Kby(9,50),
'WpToENu_M-2000_13')),
1202 (
'DisplacedSUSY_stopToBottom_M_800_500mm_TuneCP5_13TeV_pythia8_cff',
UpgradeFragment(
Kby(9,50),
'DisplacedSUSY_stopToB_M_800_500mm_13')),
1204 (
'FlatRandomPtAndDxyGunProducer_cfi',
UpgradeFragment(
Kby(9,100),
'DisplacedMuonsDxy_0_500')),
1206 (
'SinglePiPt25Eta1p7_2p7_cfi',
UpgradeFragment(
Kby(9,100),
'SinglePiPt25Eta1p7_2p7')),
1207 (
'SingleMuPt15Eta1p7_2p7_cfi',
UpgradeFragment(
Kby(9,100),
'SingleMuPt15Eta1p7_2p7')),
1208 (
'SingleGammaPt25Eta1p7_2p7_cfi',
UpgradeFragment(
Kby(9,100),
'SingleGammaPt25Eta1p7_2p7')),
1209 (
'SingleElectronPt15Eta1p7_2p7_cfi',
UpgradeFragment(
Kby(9,100),
'SingleElectronPt15Eta1p7_2p7')),
1211 (
'CloseByParticle_Photon_ERZRanges_cfi',
UpgradeFragment(
Kby(9,100),
'CloseByParticleGun')),
1212 (
'CE_E_Front_300um_cfi',
UpgradeFragment(
Kby(9,100),
'CloseByPGun_CE_E_Front_300um')),
1213 (
'CE_E_Front_200um_cfi',
UpgradeFragment(
Kby(9,100),
'CloseByPGun_CE_E_Front_200um')),
1214 (
'CE_E_Front_120um_cfi',
UpgradeFragment(
Kby(9,100),
'CloseByPGun_CE_E_Front_120um')),
1218 (
'CE_H_Coarse_Scint_cfi',
UpgradeFragment(
Kby(9,100),
'CloseByPGun_CE_H_Coarse_Scint')),
1219 (
'CE_H_Coarse_300um_cfi',
UpgradeFragment(
Kby(9,100),
'CloseByPGun_CE_H_Coarse_300um')),
1220 (
'SingleElectronFlatPt2To100_cfi',
UpgradeFragment(
Kby(9,100),
'SingleEFlatPt2To100')),
1223 (
'SingleGammaFlatPt8To150_cfi',
UpgradeFragment(
Kby(9,100),
'SingleGammaFlatPt8To150')),
1226 (
'FlatRandomPtAndDxyGunProducer_MuPt2To10_cfi',
UpgradeFragment(
Kby(9,100),
'DisplacedMuPt2To10')),
1227 (
'FlatRandomPtAndDxyGunProducer_MuPt10To30_cfi',
UpgradeFragment(
Kby(9,100),
'DisplacedMuPt10To30')),
1228 (
'FlatRandomPtAndDxyGunProducer_MuPt30To100_cfi',
UpgradeFragment(
Kby(9,100),
'DisplacedMuPt30To100')),
1229 (
'B0ToKstarMuMu_14TeV_TuneCP5_cfi',
UpgradeFragment(
Kby(304,3030),
'B0ToKstarMuMu_14TeV')),
1231 (
'BsToJpsiGamma_14TeV_TuneCP5_cfi',
UpgradeFragment(
Kby(2500,25000),
'BsToJpsiGamma_14TeV')),
1232 (
'BsToJpsiPhi_mumuKK_14TeV_TuneCP5_cfi',
UpgradeFragment(
Kby(910,9090),
'BsToJpsiPhi_mumuKK_14TeV')),
1234 (
'BsToPhiPhi_KKKK_14TeV_TuneCP5_cfi',
UpgradeFragment(
Kby(556,5555),
'BsToPhiPhi_KKKK_14TeV')),
1235 (
'TauToMuMuMu_14TeV_TuneCP5_cfi',
UpgradeFragment(
Kby(18939,189393),
'TauToMuMuMu_14TeV')),
1236 (
'BdToKstarEleEle_14TeV_TuneCP5_cfi',
UpgradeFragment(
Kby(206,2061),
'BdToKstarEleEle_14TeV')),
1238 (
'BuMixing_BMuonFilter_forSTEAM_14TeV_TuneCP5_cfi',
UpgradeFragment(
Kby(900,10000),
'BuMixing_14')),
1239 (
'Upsilon1SToMuMu_forSTEAM_14TeV_TuneCP5_cfi',
UpgradeFragment(
Kby(9,50),
'Upsilon1SToMuMu_14')),
1240 (
'TenTau_E_15_500_Eta3p1_pythia8_cfi',
UpgradeFragment(
Kby(9,100),
'TenTau_15_500_Eta3p1')),
1241 (
'QCD_Pt_1800_2400_14TeV_TuneCP5_cfi',
UpgradeFragment(
Kby(9,50),
'QCD_Pt_1800_2400_14')),
1242 (
'DisplacedSUSY_stopToBottom_M_800_500mm_TuneCP5_14TeV_pythia8_cff',
UpgradeFragment(
Kby(9,50),
'DisplacedSUSY_stopToB_M_800_500mm_14')),