File indexing completed on 2024-07-16 22:52:10
0001 from copy import copy, deepcopy
0002 from collections import OrderedDict
0003 from .MatrixUtil import merge, Kby, Mby
0004 import re
0005
0006 U2000by1={'--relval': '2000,1'}
0007
0008
0009
0010 upgradeKeys = {}
0011
0012 upgradeKeys[2017] = [
0013 '2017',
0014 '2017PU',
0015 '2017Design',
0016 '2017DesignPU',
0017 '2018',
0018 '2018PU',
0019 '2018Design',
0020 '2018DesignPU',
0021 '2021',
0022 '2021PU',
0023 '2021Design',
0024 '2021DesignPU',
0025 '2023',
0026 '2023PU',
0027 '2024',
0028 '2024PU',
0029 '2021FS',
0030 '2021FSPU',
0031 '2021postEE',
0032 '2021postEEPU',
0033 '2023FS',
0034 '2023FSPU',
0035 '2022HI',
0036 '2022HIRP',
0037 '2023HI',
0038 '2023HIRP',
0039 '2024HLTOnDigi',
0040 '2024HLTOnDigiPU',
0041 '2024GenOnly',
0042 '2024SimOnGen',
0043 ]
0044
0045 upgradeKeys[2026] = [
0046 '2026D86',
0047 '2026D86PU',
0048 '2026D88',
0049 '2026D88PU',
0050 '2026D91',
0051 '2026D91PU',
0052 '2026D92',
0053 '2026D92PU',
0054 '2026D93',
0055 '2026D93PU',
0056 '2026D94',
0057 '2026D94PU',
0058 '2026D95',
0059 '2026D95PU',
0060 '2026D96',
0061 '2026D96PU',
0062 '2026D97',
0063 '2026D97PU',
0064 '2026D98',
0065 '2026D98PU',
0066 '2026D99',
0067 '2026D99PU',
0068 '2026D100',
0069 '2026D100PU',
0070 '2026D101',
0071 '2026D101PU',
0072 '2026D102',
0073 '2026D102PU',
0074 '2026D103',
0075 '2026D103PU',
0076 '2026D104',
0077 '2026D104PU',
0078 '2026D105',
0079 '2026D105PU',
0080 '2026D106',
0081 '2026D106PU',
0082 '2026D107',
0083 '2026D107PU',
0084 '2026D108',
0085 '2026D108PU',
0086 '2026D109',
0087 '2026D109PU',
0088 '2026D110',
0089 '2026D110PU',
0090 '2026D111',
0091 '2026D111PU',
0092 '2026D112',
0093 '2026D112PU',
0094 '2026D113',
0095 '2026D113PU',
0096 '2026D114',
0097 '2026D114PU',
0098 '2026D110GenOnly',
0099 '2026D110SimOnGen',
0100 '2026D115',
0101 '2026D115PU',
0102 ]
0103
0104
0105 numWFStart={
0106 2017: 10000,
0107 2026: 20000,
0108 }
0109 numWFSkip=200
0110
0111 numWFConflict = [[14400,14800],
0112 [20400,20800],
0113 [21200,22000],
0114 [50000,51000]]
0115 numWFAll={
0116 2017: [],
0117 2026: []
0118 }
0119
0120 for year in upgradeKeys:
0121 for i in range(0,len(upgradeKeys[year])):
0122 numWFtmp = numWFStart[year] if i==0 else (numWFAll[year][i-1] + numWFSkip)
0123 for conflict in numWFConflict:
0124 if numWFtmp>=conflict[0] and numWFtmp<conflict[1]:
0125 numWFtmp = conflict[1]
0126 break
0127 numWFAll[year].append(numWFtmp)
0128
0129
0130
0131
0132
0133
0134 preventReuseKeyword = 'NOREUSE'
0135 class UpgradeWorkflow(object):
0136 def __init__(self,steps,PU,suffix,offset):
0137 self.steps = steps
0138 self.PU = PU
0139 self.allowReuse = True
0140
0141
0142 for step in self.PU:
0143 if not step in self.steps:
0144 self.steps.append(step)
0145
0146 self.suffix = suffix
0147 if len(self.suffix)>0 and self.suffix[0]!='_': self.suffix = '_'+self.suffix
0148 self.offset = offset
0149 if self.offset < 0.0 or self.offset > 1.0:
0150 raise ValueError("Special workflow offset must be between 0.0 and 1.0")
0151 def getStepName(self, step, extra=""):
0152 stepName = step + self.suffix + extra
0153 return stepName
0154 def getStepNamePU(self, step, extra=""):
0155 stepNamePU = step + 'PU' + self.suffix + extra
0156 return stepNamePU
0157 def init(self, stepDict):
0158 for step in self.steps:
0159 stepDict[self.getStepName(step)] = {}
0160 if not self.allowReuse: stepDict[self.getStepName(step,preventReuseKeyword)] = {}
0161 for step in self.PU:
0162 stepDict[self.getStepNamePU(step)] = {}
0163 if not self.allowReuse: stepDict[self.getStepNamePU(step,preventReuseKeyword)] = {}
0164 def setup(self, stepDict, k, properties):
0165 for step in self.steps:
0166 self.setup_(step, self.getStepName(step), stepDict, k, properties)
0167 if not self.allowReuse: self.preventReuse(self.getStepName(step,preventReuseKeyword), stepDict, k)
0168 def setupPU(self, stepDict, k, properties):
0169 for step in self.PU:
0170 self.setupPU_(step, self.getStepNamePU(step), stepDict, k, properties)
0171 if not self.allowReuse: self.preventReuse(self.getStepNamePU(step,preventReuseKeyword), stepDict, k)
0172 def setup_(self, step, stepName, stepDict, k, properties):
0173 pass
0174 def setupPU_(self, step, stepName, stepDict, k, properties):
0175 pass
0176 def workflow(self, workflows, num, fragment, stepList, key, hasHarvest):
0177 if self.condition(fragment, stepList, key, hasHarvest):
0178 self.workflow_(workflows, num, fragment, stepList, key)
0179 def workflow_(self, workflows, num, fragment, stepList, key):
0180 fragmentTmp = [fragment, key]
0181 if len(self.suffix)>0: fragmentTmp.append(self.suffix)
0182 workflows[num+self.offset] = [ fragmentTmp, stepList ]
0183 def condition(self, fragment, stepList, key, hasHarvest):
0184 return False
0185 def preventReuse(self, stepName, stepDict, k):
0186 if "Sim" in stepName and stepName != "Sim":
0187 stepDict[stepName][k] = None
0188 if "Gen" in stepName:
0189 stepDict[stepName][k] = None
0190 upgradeWFs = OrderedDict()
0191
0192 class UpgradeWorkflow_baseline(UpgradeWorkflow):
0193 def setup_(self, step, stepName, stepDict, k, properties):
0194 cust=properties.get('Custom', None)
0195 era=properties.get('Era', None)
0196 modifier=properties.get('ProcessModifier',None)
0197 if cust is not None: stepDict[stepName][k]['--customise']=cust
0198 if era is not None:
0199 stepDict[stepName][k]['--era']=era
0200 if modifier is not None: stepDict[stepName][k]['--procModifier']=modifier
0201 def condition(self, fragment, stepList, key, hasHarvest):
0202 return True
0203 upgradeWFs['baseline'] = UpgradeWorkflow_baseline(
0204 steps = [
0205 'Gen',
0206 'Sim',
0207 'GenSim',
0208 'GenSimHLBeamSpot',
0209 'GenSimHLBeamSpot14',
0210 'GenSimHLBeamSpotHGCALCloseBy',
0211 'Digi',
0212 'DigiNoHLT',
0213 'DigiTrigger',
0214 'HLTRun3',
0215 'HLTOnly',
0216 'RecoLocal',
0217 'Reco',
0218 'RecoFakeHLT',
0219 'RecoGlobal',
0220 'RecoNano',
0221 'RecoNanoFakeHLT',
0222 'HARVEST',
0223 'HARVESTFakeHLT',
0224 'HARVESTNano',
0225 'HARVESTNanoFakeHLT',
0226 'FastSim',
0227 'HARVESTFast',
0228 'HARVESTGlobal',
0229 'ALCA',
0230 'ALCAPhase2',
0231 'Nano',
0232 'MiniAOD',
0233 'HLT75e33',
0234 'FastSimRun3',
0235 'HARVESTFastRun3',
0236 ],
0237 PU = [
0238 'DigiTrigger',
0239 'RecoLocal',
0240 'RecoGlobal',
0241 'Digi',
0242 'DigiNoHLT',
0243 'HLTOnly',
0244 'Reco',
0245 'RecoFakeHLT',
0246 'RecoNano',
0247 'RecoNanoFakeHLT',
0248 'HARVEST',
0249 'HARVESTFakeHLT',
0250 'HARVESTNano',
0251 'HARVESTNanoFakeHLT',
0252 'HARVESTGlobal',
0253 'MiniAOD',
0254 'Nano',
0255 'HLT75e33',
0256 'FastSimRun3',
0257 'HARVESTFastRun3',
0258 ],
0259 suffix = '',
0260 offset = 0.0,
0261 )
0262
0263
0264 class UpgradeWorkflow_DigiNoHLT(UpgradeWorkflow):
0265 def setup_(self, step, stepName, stepDict, k, properties):
0266 if stepDict[step][k] != None:
0267 if 'ALCA' in step:
0268 stepDict[stepName][k] = None
0269 if 'RecoNano' in step:
0270 stepDict[stepName][k] = merge([{'--filein': 'file:step3.root', '--secondfilein': 'file:step2.root'}, stepDict[step][k]])
0271 if 'Digi' in step and 'NoHLT' not in step:
0272 stepDict[stepName][k] = merge([{'-s': re.sub(',HLT.*', '', stepDict[step][k]['-s'])}, stepDict[step][k]])
0273 def condition(self, fragment, stepList, key, hasHarvest):
0274 if ('TTbar_14TeV' in fragment and '2021' == key):
0275 stepList.insert(stepList.index('Digi_DigiNoHLT_2021')+1, 'HLTRun3_2021')
0276 return ('TTbar_14TeV' in fragment and '2021' == key)
0277 upgradeWFs['DigiNoHLT'] = UpgradeWorkflow_DigiNoHLT(
0278 steps = [
0279 'Digi',
0280 'RecoNano',
0281 'RecoNanoFakeHLT',
0282 'ALCA'
0283 ],
0284 PU = [],
0285 suffix = '_DigiNoHLT',
0286 offset = 0.601,
0287 )
0288
0289
0290 class UpgradeWorkflowTracking(UpgradeWorkflow):
0291
0292 def __init__(self, steps, PU, suffix, offset):
0293
0294 steps = steps + ["ALCA","Nano"]
0295 super().__init__(steps, PU, suffix, offset)
0296 def condition(self, fragment, stepList, key, hasHarvest):
0297 result = (fragment=="TTbar_13" or fragment=="TTbar_14TeV" or 'Hydjet' in fragment) and not 'PU' in key and hasHarvest and self.condition_(fragment, stepList, key, hasHarvest)
0298 return result
0299 def condition_(self, fragment, stepList, key, hasHarvest):
0300 return True
0301 def setup_(self, step, stepName, stepDict, k, properties):
0302
0303 if 'ALCA' in step or 'Nano'==step:
0304 stepDict[stepName][k] = None
0305 self.setup__(step, stepName, stepDict, k, properties)
0306
0307 def setup__(self, step, stepName, stepDict, k, properties):
0308 pass
0309
0310 class UpgradeWorkflow_trackingOnly(UpgradeWorkflowTracking):
0311 def setup__(self, step, stepName, stepDict, k, properties):
0312 if 'Reco' in step: stepDict[stepName][k] = merge([self.step3, stepDict[step][k]])
0313 elif 'HARVEST' in step: stepDict[stepName][k] = merge([{'-s': 'HARVESTING:@trackingOnlyValidation+@trackingOnlyDQM'}, stepDict[step][k]])
0314
0315 def condition(self, fragment, stepList, key, hasHarvest):
0316 result = (fragment=="TTbar_13" or fragment=="TTbar_14TeV") and hasHarvest and self.condition_(fragment, stepList, key, hasHarvest)
0317 return result
0318
0319
0320
0321 upgradeWFs['trackingOnly'] = UpgradeWorkflow_trackingOnly(
0322 steps = [
0323 'Reco',
0324 'RecoFakeHLT',
0325 'HARVEST',
0326 'HARVESTFakeHLT',
0327 'RecoGlobal',
0328 'HARVESTGlobal',
0329 'RecoNano',
0330 'RecoNanoFakeHLT',
0331 'HARVESTNano',
0332 'HARVESTNanoFakeHLT',
0333 ],
0334 PU = [
0335 'Reco',
0336 'RecoFakeHLT',
0337 'HARVEST',
0338 'HARVESTFakeHLT',
0339 'RecoGlobal',
0340 'HARVESTGlobal',
0341 'RecoNano',
0342 'RecoNanoFakeHLT',
0343 'HARVESTNano',
0344 'HARVESTNanoFakeHLT',
0345 ],
0346
0347
0348 suffix = '_trackingOnly',
0349 offset = 0.1,
0350 )
0351 upgradeWFs['trackingOnly'].step3 = {
0352 '-s': 'RAW2DIGI,RECO:reconstruction_trackingOnly,VALIDATION:@trackingOnlyValidation,DQM:@trackingOnlyDQM',
0353 '--datatier':'GEN-SIM-RECO,DQMIO',
0354 '--eventcontent':'RECOSIM,DQM',
0355 }
0356
0357 step3_trackingOnly = upgradeWFs['trackingOnly'].step3
0358
0359 class UpgradeWorkflow_trackingRun2(UpgradeWorkflowTracking):
0360 def setup__(self, step, stepName, stepDict, k, properties):
0361 if 'Reco' in step and stepDict[step][k]['--era']=='Run2_2017':
0362 stepDict[stepName][k] = merge([{'--era': 'Run2_2017_trackingRun2'}, stepDict[step][k]])
0363 def condition_(self, fragment, stepList, key, hasHarvest):
0364 return '2017' in key
0365 upgradeWFs['trackingRun2'] = UpgradeWorkflow_trackingRun2(
0366 steps = [
0367 'Reco',
0368 'RecoFakeHLT',
0369 ],
0370 PU = [],
0371 suffix = '_trackingRun2',
0372 offset = 0.2,
0373 )
0374
0375 class UpgradeWorkflow_trackingOnlyRun2(UpgradeWorkflowTracking):
0376 def setup__(self, step, stepName, stepDict, k, properties):
0377 if 'Reco' in step and stepDict[step][k]['--era']=='Run2_2017':
0378 stepDict[stepName][k] = merge([{'--era': 'Run2_2017_trackingRun2'}, self.step3, stepDict[step][k]])
0379 elif 'HARVEST' in step: stepDict[stepName][k] = merge([{'-s': 'HARVESTING:@trackingOnlyValidation+@trackingOnlyDQM'}, stepDict[step][k]])
0380 def condition_(self, fragment, stepList, key, hasHarvest):
0381 return '2017' in key
0382 upgradeWFs['trackingOnlyRun2'] = UpgradeWorkflow_trackingOnlyRun2(
0383 steps = [
0384 'Reco',
0385 'RecoFakeHLT',
0386 'HARVEST',
0387 'HARVESTFakeHLT',
0388 ],
0389 PU = [],
0390 suffix = '_trackingOnlyRun2',
0391 offset = 0.3,
0392 )
0393 upgradeWFs['trackingOnlyRun2'].step3 = upgradeWFs['trackingOnly'].step3
0394
0395 class UpgradeWorkflow_trackingLowPU(UpgradeWorkflowTracking):
0396 def setup__(self, step, stepName, stepDict, k, properties):
0397 if 'Reco' in step and stepDict[step][k]['--era']=='Run2_2017':
0398 stepDict[stepName][k] = merge([{'--era': 'Run2_2017_trackingLowPU'}, stepDict[step][k]])
0399 def condition_(self, fragment, stepList, key, hasHarvest):
0400 return '2017' in key
0401 upgradeWFs['trackingLowPU'] = UpgradeWorkflow_trackingLowPU(
0402 steps = [
0403 'Reco',
0404 'RecoFakeHLT',
0405 ],
0406 PU = [],
0407 suffix = '_trackingLowPU',
0408 offset = 0.4,
0409 )
0410
0411 class UpgradeWorkflow_pixelTrackingOnly(UpgradeWorkflowTracking):
0412 def setup__(self, step, stepName, stepDict, k, properties):
0413 if 'Reco' in step: stepDict[stepName][k] = merge([self.step3, stepDict[step][k]])
0414
0415 elif 'ALCA' in step: stepDict[stepName][k] = None
0416 elif 'HARVEST' in step: stepDict[stepName][k] = merge([{'-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM'}, stepDict[step][k]])
0417 def condition_(self, fragment, stepList, key, hasHarvest):
0418 return ('2022' in key or '2023' in key or '2024' in key or '2026' in key or 'HI' in key) and ('FS' not in key)
0419 upgradeWFs['pixelTrackingOnly'] = UpgradeWorkflow_pixelTrackingOnly(
0420 steps = [
0421 'Reco',
0422 'RecoFakeHLT',
0423 'HARVEST',
0424 'HARVESTFakeHLT',
0425 'RecoGlobal',
0426 'HARVESTGlobal',
0427 'RecoNano',
0428 'RecoNanoFakeHLT',
0429 'HARVESTNano',
0430 'HARVESTNanoFakeHLT',
0431 'ALCA',
0432 'ALCAPhase2'
0433 ],
0434 PU = [],
0435 suffix = '_pixelTrackingOnly',
0436 offset = 0.5,
0437 )
0438 upgradeWFs['pixelTrackingOnly'].step3 = {
0439 '-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly,VALIDATION:@pixelTrackingOnlyValidation,DQM:@pixelTrackingOnlyDQM',
0440 '--datatier': 'GEN-SIM-RECO,DQMIO',
0441 '--eventcontent': 'RECOSIM,DQM',
0442 }
0443
0444 class UpgradeWorkflow_trackingMkFit(UpgradeWorkflowTracking):
0445 def setup__(self, step, stepName, stepDict, k, properties):
0446 if ('Digi' in step and 'NoHLT' not in step) or ('HLTOnly' in step): stepDict[stepName][k] = merge([self.step2, stepDict[step][k]])
0447 if 'Reco' in step: stepDict[stepName][k] = merge([self.step3, stepDict[step][k]])
0448 def condition_(self, fragment, stepList, key, hasHarvest):
0449 return ('2017' in key or '2021' in key or '2023' in key or '2024' in key) and ('FS' not in key)
0450 upgradeWFs['trackingMkFit'] = UpgradeWorkflow_trackingMkFit(
0451 steps = [
0452 'Digi',
0453 'HLTOnly',
0454 'DigiTrigger',
0455 'Reco',
0456 'RecoFakeHLT',
0457 'RecoGlobal',
0458 'RecoNano',
0459 'RecoNanoFakeHLT',
0460 ],
0461 PU = [],
0462 suffix = '_trackingMkFit',
0463 offset = 0.7,
0464 )
0465 upgradeWFs['trackingMkFit'].step2 = {
0466 '--customise': 'RecoTracker/MkFit/customizeHLTIter0ToMkFit.customizeHLTIter0ToMkFit'
0467 }
0468 upgradeWFs['trackingMkFit'].step3 = {
0469 '--procModifiers': 'trackingMkFitDevel'
0470 }
0471
0472
0473 class UpgradeWorkflow_trackingMkFitPhase2(UpgradeWorkflowTracking):
0474 def setup__(self, step, stepName, stepDict, k, properties):
0475 if 'Reco' in step: stepDict[stepName][k] = merge([self.step3, stepDict[step][k]])
0476 def condition_(self, fragment, stepList, key, hasHarvest):
0477 return ('2026' in key)
0478 upgradeWFs['trackingMkFitPhase2'] = UpgradeWorkflow_trackingMkFitPhase2(
0479 steps = [
0480 'Reco',
0481 'RecoFakeHLT',
0482 'RecoGlobal',
0483 'RecoNano',
0484 'RecoNanoFakeHLT',
0485 ],
0486 PU = [],
0487 suffix = '_trackingMkFitPhase2',
0488 offset = 0.702,
0489 )
0490 upgradeWFs['trackingMkFitPhase2'].step3 = {
0491 '--procModifiers': 'trackingMkFitCommon,trackingMkFitInitialStep'
0492 }
0493
0494
0495 class UpgradeWorkflow_seedingDeepCore(UpgradeWorkflow):
0496 def setup_(self, step, stepName, stepDict, k, properties):
0497
0498 if 'ALCA' in step or 'Nano'==step:
0499 stepDict[stepName][k] = None
0500 elif 'Reco' in step or 'HARVEST' in step: stepDict[stepName][k] = merge([{'--procModifiers': 'seedingDeepCore'}, stepDict[step][k]])
0501 def condition(self, fragment, stepList, key, hasHarvest):
0502 result = (fragment=="QCD_Pt_1800_2400_14" or fragment=="TTbar_14TeV" ) and ('2021' in key or '2024' in key) and hasHarvest
0503 return result
0504 upgradeWFs['seedingDeepCore'] = UpgradeWorkflow_seedingDeepCore(
0505 steps = [
0506 'Reco',
0507 'RecoFakeHLT',
0508 'HARVEST',
0509 'HARVESTFakeHLT',
0510 'RecoGlobal',
0511 'HARVESTGlobal',
0512 'RecoNano',
0513 'RecoNanoFakeHLT',
0514 'HARVESTNano',
0515 'HARVESTNanoFakeHLT',
0516 'Nano',
0517 'ALCA',
0518 ],
0519 PU = [
0520 'Reco',
0521 'RecoFakeHLT',
0522 'RecoGlobal',
0523 'HARVESTGlobal',
0524 'RecoNano',
0525 'RecoNanoFakeHLT',
0526 'HARVESTNano',
0527 'HARVESTNanoFakeHLT',
0528 ],
0529 suffix = '_seedingDeepCore',
0530 offset = 0.17,
0531 )
0532
0533
0534 class UpgradeWorkflow_displacedRegional(UpgradeWorkflowTracking):
0535 def setup__(self, step, stepName, stepDict, k, properties):
0536 if 'Reco' in step: stepDict[stepName][k] = merge([self.step3, stepDict[step][k]])
0537 def condition_(self, fragment, stepList, key, hasHarvest):
0538 return ('2021' in key or '2023' in key or '2024' in key)
0539 upgradeWFs['displacedRegional'] = UpgradeWorkflow_displacedRegional(
0540 steps = [
0541 'Reco',
0542 'RecoFakeHLT',
0543 'RecoGlobal',
0544 'RecoNano',
0545 'RecoNanoFakeHLT',
0546 ],
0547 PU = [],
0548 suffix = '_displacedRegional',
0549 offset = 0.701,
0550 )
0551 upgradeWFs['displacedRegional'].step3 = {
0552 '--procModifiers': 'displacedRegionalTracking'
0553 }
0554
0555
0556 class UpgradeWorkflow_vectorHits(UpgradeWorkflow):
0557 def setup_(self, step, stepName, stepDict, k, properties):
0558 stepDict[stepName][k] = merge([{'--procModifiers': 'vectorHits'}, stepDict[step][k]])
0559 def condition(self, fragment, stepList, key, hasHarvest):
0560 return (fragment=="TTbar_14TeV" or fragment=="SingleMuPt10Extended") and '2026' in key
0561 upgradeWFs['vectorHits'] = UpgradeWorkflow_vectorHits(
0562 steps = [
0563 'RecoGlobal',
0564 'HARVESTGlobal'
0565 ],
0566 PU = [
0567 'RecoGlobal',
0568 'HARVESTGlobal'
0569 ],
0570 suffix = '_vectorHits',
0571 offset = 0.9,
0572 )
0573
0574
0575 class UpgradeWorkflow_weightedVertex(UpgradeWorkflow):
0576 def __init__(self, reco = {}, harvest = {}, **kwargs):
0577
0578 super(UpgradeWorkflow_weightedVertex, self).__init__(
0579 steps = [
0580 'Reco',
0581 'RecoFakeHLT',
0582 'HARVEST',
0583 'HARVESTFakeHLT',
0584 'RecoGlobal',
0585 'HARVESTGlobal',
0586 'RecoNano',
0587 'RecoNanoFakeHLT',
0588 'HARVESTNano',
0589 'HARVESTNanoFakeHLT',
0590 ],
0591 PU = [
0592 'Reco',
0593 'RecoFakeHLT',
0594 'HARVEST',
0595 'HARVESTFakeHLT',
0596 'RecoGlobal',
0597 'HARVESTGlobal',
0598 'RecoNano',
0599 'RecoNanoFakeHLT',
0600 'HARVESTNano',
0601 'HARVESTNanoFakeHLT',
0602 ],
0603 **kwargs)
0604 self.__reco = reco
0605 self.__harvest = harvest
0606
0607 def setup_(self, step, stepName, stepDict, k, properties):
0608
0609 if 'Reco' in step:
0610 mod = {'--procModifiers': 'weightedVertexing,vertexInBlocks', '--datatier':'GEN-SIM-RECO,DQMIO',
0611 '--eventcontent':'RECOSIM,DQM'}
0612 stepDict[stepName][k] = merge([mod,self.step3, stepDict[step][k]])
0613 if 'HARVEST' in step:
0614 stepDict[stepName][k] = merge([self.step4,stepDict[step][k]])
0615
0616 def condition(self, fragment, stepList, key, hasHarvest):
0617
0618 selected = [
0619 ('2021' in key and fragment == "TTbar_14TeV" and 'FS' not in key),
0620 ('2024' in key and fragment == "TTbar_14TeV"),
0621 ('2026' in key and fragment == "TTbar_14TeV")
0622 ]
0623 result = any(selected) and hasHarvest
0624
0625 return result
0626
0627
0628 upgradeWFs['weightedVertex'] = UpgradeWorkflow_weightedVertex(
0629 suffix = '_weightedVertex',
0630 offset = 0.278,
0631 )
0632
0633 upgradeWFs['weightedVertex'].step3 = {}
0634 upgradeWFs['weightedVertex'].step4 = {}
0635
0636 upgradeWFs['weightedVertexTrackingOnly'] = UpgradeWorkflow_weightedVertex(
0637 suffix = '_weightedVertexTrackingOnly',
0638 offset = 0.279,
0639 )
0640
0641 upgradeWFs['weightedVertexTrackingOnly'].step3 = {
0642 '-s': 'RAW2DIGI,RECO:reconstruction_trackingOnly,VALIDATION:@trackingOnlyValidation,DQM:@trackingOnlyDQM',
0643 '--datatier':'GEN-SIM-RECO,DQMIO',
0644 '--eventcontent':'RECOSIM,DQM',
0645 }
0646
0647 upgradeWFs['weightedVertexTrackingOnly'].step4 = {
0648 '-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM'
0649 }
0650
0651
0652 class UpgradeWorkflow_ticl_clue3D(UpgradeWorkflow):
0653 def setup_(self, step, stepName, stepDict, k, properties):
0654 if 'RecoGlobal' in step:
0655 stepDict[stepName][k] = merge([self.step3, stepDict[step][k]])
0656 if 'HARVESTGlobal' in step:
0657 stepDict[stepName][k] = merge([self.step4, stepDict[step][k]])
0658 def condition(self, fragment, stepList, key, hasHarvest):
0659 return (fragment=="TTbar_14TeV" or 'CloseByPGun_CE' in fragment) and '2026' in key
0660 upgradeWFs['ticl_clue3D'] = UpgradeWorkflow_ticl_clue3D(
0661 steps = [
0662 'RecoGlobal',
0663 'HARVESTGlobal'
0664 ],
0665 PU = [
0666 'RecoGlobal',
0667 'HARVESTGlobal'
0668 ],
0669 suffix = '_ticl_clue3D',
0670 offset = 0.201,
0671 )
0672 upgradeWFs['ticl_clue3D'].step3 = {'--procModifiers': 'clue3D'}
0673 upgradeWFs['ticl_clue3D'].step4 = {'--procModifiers': 'clue3D'}
0674
0675 class UpgradeWorkflow_ticl_FastJet(UpgradeWorkflow):
0676 def setup_(self, step, stepName, stepDict, k, properties):
0677 if 'RecoGlobal' in step:
0678 stepDict[stepName][k] = merge([self.step3, stepDict[step][k]])
0679 if 'HARVESTGlobal' in step:
0680 stepDict[stepName][k] = merge([self.step4, stepDict[step][k]])
0681 def condition(self, fragment, stepList, key, hasHarvest):
0682 return (fragment=="TTbar_14TeV" or 'CloseByPGun_CE' in fragment) and '2026' in key
0683 upgradeWFs['ticl_FastJet'] = UpgradeWorkflow_ticl_FastJet(
0684 steps = [
0685 'RecoGlobal',
0686 'HARVESTGlobal'
0687 ],
0688 PU = [
0689 'RecoGlobal',
0690 'HARVESTGlobal'
0691 ],
0692 suffix = '_ticl_FastJet',
0693 offset = 0.202,
0694 )
0695 upgradeWFs['ticl_FastJet'].step3 = {'--procModifiers': 'fastJetTICL'}
0696 upgradeWFs['ticl_FastJet'].step4 = {'--procModifiers': 'fastJetTICL'}
0697
0698 class UpgradeWorkflow_ticl_v5(UpgradeWorkflow):
0699 def setup_(self, step, stepName, stepDict, k, properties):
0700 if 'RecoGlobal' in step:
0701 stepDict[stepName][k] = merge([self.step3, stepDict[step][k]])
0702 if 'HARVESTGlobal' in step:
0703 stepDict[stepName][k] = merge([self.step4, stepDict[step][k]])
0704 def condition(self, fragment, stepList, key, hasHarvest):
0705 return (fragment=="TTbar_14TeV" or 'CloseByP' in fragment or 'Eta1p7_2p7' in fragment) and '2026' in key
0706 upgradeWFs['ticl_v5'] = UpgradeWorkflow_ticl_v5(
0707 steps = [
0708 'RecoGlobal',
0709 'HARVESTGlobal'
0710 ],
0711 PU = [
0712 'RecoGlobal',
0713 'HARVESTGlobal'
0714 ],
0715 suffix = '_ticl_v5',
0716 offset = 0.203,
0717 )
0718 upgradeWFs['ticl_v5'].step3 = {'--procModifiers': 'ticl_v5'}
0719 upgradeWFs['ticl_v5'].step4 = {'--procModifiers': 'ticl_v5'}
0720
0721
0722 class UpgradeWorkflow_trackdnn(UpgradeWorkflow):
0723 def setup_(self, step, stepName, stepDict, k, properties):
0724 stepDict[stepName][k] = merge([{'--procModifiers': 'trackdnn'}, stepDict[step][k]])
0725
0726 def condition(self, fragment, stepList, key, hasHarvest):
0727 return fragment=="TTbar_14TeV" and '2021' in key
0728 upgradeWFs['trackdnn'] = UpgradeWorkflow_trackdnn(
0729 steps = [
0730 'Reco',
0731 'RecoFakeHLT',
0732 'RecoNano',
0733 'RecoNanoFakeHLT',
0734 ],
0735 PU = [
0736 'Reco',
0737 'RecoFakeHLT',
0738 'RecoNano',
0739 'RecoNanoFakeHLT',
0740 ],
0741 suffix = '_trackdnn',
0742 offset = 0.91,
0743 )
0744
0745
0746
0747 class UpgradeWorkflow_mlpf(UpgradeWorkflow):
0748 def setup_(self, step, stepName, stepDict, k, properties):
0749 if 'Reco' in step:
0750 stepDict[stepName][k] = merge([self.step3, stepDict[step][k]])
0751 def condition(self, fragment, stepList, key, hasHarvest):
0752 return (fragment=="TTbar_14TeV" or fragment=="QCD_FlatPt_15_3000HS_14") and '2021PU' in key
0753
0754 upgradeWFs['mlpf'] = UpgradeWorkflow_mlpf(
0755 steps = [
0756 'Reco',
0757 'RecoFakeHLT',
0758 'RecoNano',
0759 'RecoNanoFakeHLT',
0760 ],
0761 PU = [
0762 'Reco',
0763 'RecoFakeHLT',
0764 'RecoNano',
0765 'RecoNanoFakeHLT',
0766 ],
0767 suffix = '_mlpf',
0768 offset = 0.13,
0769 )
0770 upgradeWFs['mlpf'].step3 = {
0771 '--datatier': 'GEN-SIM-RECO,RECOSIM,MINIAODSIM,NANOAODSIM,DQMIO',
0772 '--eventcontent': 'FEVTDEBUGHLT,RECOSIM,MINIAODSIM,NANOEDMAODSIM,DQM',
0773 '--procModifiers': 'mlpf'
0774 }
0775
0776
0777
0778 class UpgradeWorkflow_ecalclustering(UpgradeWorkflow):
0779 def setup_(self, step, stepName, stepDict, k, properties):
0780 if 'Reco' in step:
0781 stepDict[stepName][k] = merge([self.step3, stepDict[step][k]])
0782 def condition(self, fragment, stepList, key, hasHarvest):
0783 return (fragment=="ZEE_14" or fragment=="TTbar_14TeV" or fragment=="WprimeTolNu_M3000_13TeV_pythia8"
0784 or fragment=="DisplacedSUSY_stopToBottom_M_300_1000mm_13" or fragment=="RunEGamma2018D" )
0785
0786 upgradeWFs['ecalDeepSC'] = UpgradeWorkflow_ecalclustering(
0787 steps = [
0788 'Reco',
0789 'RecoFakeHLT',
0790 'RecoNano',
0791 'RecoNanoFakeHLT',
0792 ],
0793 PU = [
0794 'Reco',
0795 'RecoFakeHLT',
0796 'RecoNano',
0797 'RecoNanoFakeHLT',
0798 ],
0799 suffix = '_ecalDeepSC',
0800 offset = 0.19,
0801 )
0802 upgradeWFs['ecalDeepSC'].step3 = {
0803 '--datatier': 'RECOSIM,MINIAODSIM,NANOAODSIM,DQMIO',
0804 '--eventcontent': 'RECOSIM,MINIAODSIM,NANOEDMAODSIM,DQM',
0805 '--procModifiers': 'ecal_deepsc'
0806 }
0807
0808
0809
0810 class UpgradeWorkflow_photonDRN(UpgradeWorkflow):
0811 def setup_(self, step, stepName, stepDict, k, properties):
0812 if 'Reco' in step:
0813 stepDict[stepName][k] = merge([self.step3, stepDict[step][k]])
0814 def condition(self, fragment, stepList, key, hasHarvest):
0815 return '2018' in key and "SingleGamma" in fragment
0816
0817 upgradeWFs['photonDRN'] = UpgradeWorkflow_photonDRN(
0818 steps = [
0819 'RecoFakeHLT',
0820 'RecoNanoFakeHLT',
0821 ],
0822 PU = [
0823 'RecoFakeHLT',
0824 'RecoNanoFakeHLT',
0825 ],
0826 suffix = '_photonDRN',
0827 offset = 0.31,
0828 )
0829 upgradeWFs['photonDRN'].step3 = {
0830 '--procModifiers': 'enableSonicTriton,photonDRN'
0831 }
0832
0833
0834
0835
0836
0837
0838 class PatatrackWorkflow(UpgradeWorkflow):
0839 def __init__(self, digi = {}, reco = {}, mini = {}, harvest = {}, **kwargs):
0840
0841 super(PatatrackWorkflow, self).__init__(
0842 steps = [
0843 'Digi',
0844 'HLTOnly',
0845 'DigiTrigger',
0846 'Reco',
0847 'RecoFakeHLT',
0848 'HARVEST',
0849 'HARVESTFakeHLT',
0850 'RecoGlobal',
0851 'HARVESTGlobal',
0852 'RecoNano',
0853 'RecoNanoFakeHLT',
0854 'HARVESTNano',
0855 'HARVESTNanoFakeHLT',
0856 'MiniAOD',
0857 'Nano',
0858 'ALCA',
0859 'ALCAPhase2'
0860 ],
0861 PU = [
0862 'Digi',
0863 'HLTOnly',
0864 'DigiTrigger',
0865 'Reco',
0866 'RecoFakeHLT',
0867 'HARVEST',
0868 'HARVESTFakeHLT',
0869 'RecoGlobal',
0870 'HARVESTGlobal',
0871 'RecoNano',
0872 'RecoNanoFakeHLT',
0873 'HARVESTNano',
0874 'HARVESTNanoFakeHLT',
0875 'MiniAOD',
0876 'Nano',
0877 'ALCA',
0878 'ALCAPhase2'
0879 ],
0880 **kwargs)
0881 self.__digi = digi
0882 self.__reco = reco
0883 if 'DQM' in self.__reco:
0884 self.__reco.update({
0885 '--datatier': 'GEN-SIM-RECO,DQMIO',
0886 '--eventcontent': 'RECOSIM,DQM'
0887 })
0888 self.__mini = mini
0889 self.__harvest = harvest
0890
0891 def condition(self, fragment, stepList, key, hasHarvest):
0892
0893 years = ['2021','2023','2024','2026']
0894 fragments = ["TTbar_14","ZMM_14","ZEE_14","ZTT_14","NuGun","SingleMu","QCD_Pt15To7000_Flat"]
0895 selected = [
0896 (any(y in key for y in years) and ('FS' not in key) and any( f in fragment for f in fragments)),
0897 (('HI' in key) and ('Hydjet' in fragment) and ("PixelOnly" in self.suffix) )
0898 ]
0899 result = any(selected) and hasHarvest
0900
0901 return result
0902
0903 def setup_(self, step, stepName, stepDict, k, properties):
0904
0905 if 'ALCA' in step or 'Nano'==step:
0906 stepDict[stepName][k] = None
0907 elif ('Digi' in step and "NoHLT" not in step) or 'HLTOnly' in step:
0908 if self.__digi is None:
0909 stepDict[stepName][k] = None
0910 else:
0911 stepDict[stepName][k] = merge([self.__digi, stepDict[step][k]])
0912 elif 'Reco' in step:
0913 if self.__reco is None:
0914 stepDict[stepName][k] = None
0915 else:
0916 stepDict[stepName][k] = merge([self.__reco, stepDict[step][k]])
0917 if 'Phase2' in stepDict[stepName][k]['--era']:
0918 if 'DQM:@standardDQM+@ExtraHLT' in stepDict[stepName][k]['-s']:
0919 stepDict[stepName][k]['-s'] = stepDict[stepName][k]['-s'].replace('DQM:@standardDQM+@ExtraHLT','DQM:@phase2')
0920 if 'VALIDATION:@standardValidation' in stepDict[stepName][k]['-s']:
0921 stepDict[stepName][k]['-s'] = stepDict[stepName][k]['-s'].replace('VALIDATION:@standardValidation','VALIDATION:@phase2Validation')
0922
0923
0924 elif 'MiniAOD' in step:
0925 if self.__mini is None:
0926 stepDict[stepName][k] = None
0927 else:
0928 stepDict[stepName][k] = merge([self.__mini, stepDict[step][k]])
0929 elif 'HARVEST' in step:
0930 if self.__harvest is None:
0931 stepDict[stepName][k] = None
0932 else:
0933 stepDict[stepName][k] = merge([self.__harvest, stepDict[step][k]])
0934
0935
0936
0937
0938
0939
0940 upgradeWFs['PatatrackPixelOnlyCPU'] = PatatrackWorkflow(
0941 digi = {
0942
0943 },
0944 reco = {
0945 '-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly,VALIDATION:@pixelTrackingOnlyValidation,DQM:@pixelTrackingOnlyDQM',
0946 '--procModifiers': 'pixelNtupletFit'
0947 },
0948 harvest = {
0949 '-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM'
0950 },
0951 suffix = 'Patatrack_PixelOnlyCPU',
0952 offset = 0.501,
0953 )
0954
0955
0956
0957
0958
0959 upgradeWFs['PatatrackPixelOnlyGPU'] = PatatrackWorkflow(
0960 digi = {
0961
0962 '--procModifiers': 'gpu'
0963 },
0964 reco = {
0965 '-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly,VALIDATION:@pixelTrackingOnlyValidation,DQM:@pixelTrackingOnlyDQM',
0966 '--procModifiers': 'pixelNtupletFit,gpu'
0967 },
0968 harvest = {
0969 '-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM'
0970 },
0971 suffix = 'Patatrack_PixelOnlyGPU',
0972 offset = 0.502,
0973 )
0974
0975
0976
0977
0978
0979 upgradeWFs['PatatrackPixelOnlyGPUValidation'] = PatatrackWorkflow(
0980 digi = {
0981
0982 '--accelerators': 'gpu-nvidia',
0983 '--procModifiers': 'gpu'
0984 },
0985 reco = {
0986 '-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly,VALIDATION:@pixelTrackingOnlyValidation,DQM:@pixelTrackingOnlyDQM',
0987 '--accelerators': 'gpu-nvidia',
0988 '--procModifiers': 'pixelNtupletFit,gpuValidation'
0989 },
0990 harvest = {
0991 '-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM',
0992 '--procModifiers': 'gpuValidation'
0993 },
0994 suffix = 'Patatrack_PixelOnlyGPU_Validation',
0995 offset = 0.503,
0996 )
0997
0998
0999
1000
1001 upgradeWFs['PatatrackPixelOnlyGPUProfiling'] = PatatrackWorkflow(
1002 digi = {
1003
1004 '--procModifiers': 'gpu'
1005 },
1006 reco = {
1007 '-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly',
1008 '--procModifiers': 'pixelNtupletFit,gpu',
1009 '--customise' : 'RecoTracker/Configuration/customizePixelOnlyForProfiling.customizePixelOnlyForProfilingGPUOnly'
1010 },
1011 harvest = None,
1012 suffix = 'Patatrack_PixelOnlyGPU_Profiling',
1013 offset = 0.504,
1014 )
1015
1016
1017
1018
1019
1020 upgradeWFs['PatatrackPixelOnlyTripletsCPU'] = PatatrackWorkflow(
1021 digi = {
1022
1023 },
1024 reco = {
1025 '-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly,VALIDATION:@pixelTrackingOnlyValidation,DQM:@pixelTrackingOnlyDQM',
1026 '--procModifiers': 'pixelNtupletFit',
1027 '--customise' : 'RecoTracker/Configuration/customizePixelTracksForTriplets.customizePixelTracksForTriplets'
1028 },
1029 harvest = {
1030 '-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM'
1031 },
1032 suffix = 'Patatrack_PixelOnlyTripletsCPU',
1033 offset = 0.505,
1034 )
1035
1036
1037
1038
1039
1040 upgradeWFs['PatatrackPixelOnlyTripletsGPU'] = PatatrackWorkflow(
1041 digi = {
1042
1043 '--procModifiers': 'gpu'
1044 },
1045 reco = {
1046 '-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly,VALIDATION:@pixelTrackingOnlyValidation,DQM:@pixelTrackingOnlyDQM',
1047 '--procModifiers': 'pixelNtupletFit,gpu',
1048 '--customise': 'RecoTracker/Configuration/customizePixelTracksForTriplets.customizePixelTracksForTriplets'
1049 },
1050 harvest = {
1051 '-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM'
1052 },
1053 suffix = 'Patatrack_PixelOnlyTripletsGPU',
1054 offset = 0.506,
1055 )
1056
1057
1058
1059
1060
1061 upgradeWFs['PatatrackPixelOnlyTripletsGPUValidation'] = PatatrackWorkflow(
1062 digi = {
1063
1064 '--accelerators': 'gpu-nvidia',
1065 '--procModifiers': 'gpu'
1066 },
1067 reco = {
1068 '-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly,VALIDATION:@pixelTrackingOnlyValidation,DQM:@pixelTrackingOnlyDQM',
1069 '--accelerators': 'gpu-nvidia',
1070 '--procModifiers': 'pixelNtupletFit,gpuValidation',
1071 '--customise': 'RecoTracker/Configuration/customizePixelTracksForTriplets.customizePixelTracksForTriplets'
1072 },
1073 harvest = {
1074 '-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM',
1075 '--procModifiers': 'gpuValidation',
1076 },
1077 suffix = 'Patatrack_PixelOnlyTripletsGPU_Validation',
1078 offset = 0.507,
1079 )
1080
1081
1082
1083
1084 upgradeWFs['PatatrackPixelOnlyTripletsGPUProfiling'] = PatatrackWorkflow(
1085 digi = {
1086
1087 '--procModifiers': 'gpu'
1088 },
1089 reco = {
1090 '-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly',
1091 '--procModifiers': 'pixelNtupletFit,gpu',
1092 '--customise': 'RecoTracker/Configuration/customizePixelTracksForTriplets.customizePixelTracksForTriplets,RecoTracker/Configuration/customizePixelOnlyForProfiling.customizePixelOnlyForProfilingGPUOnly'
1093 },
1094 harvest = None,
1095 suffix = 'Patatrack_PixelOnlyTripletsGPU_Profiling',
1096 offset = 0.508,
1097 )
1098
1099
1100
1101
1102
1103 upgradeWFs['PatatrackECALOnlyAlpaka'] = PatatrackWorkflow(
1104 digi = {
1105
1106 '--procModifiers': 'alpaka',
1107 '--customise' : 'HeterogeneousCore/AlpakaServices/customiseAlpakaServiceMemoryFilling.customiseAlpakaServiceMemoryFilling',
1108 },
1109 reco = {
1110 '-s': 'RAW2DIGI:RawToDigi_ecalOnly,RECO:reconstruction_ecalOnly,VALIDATION:@ecalOnlyValidation,DQM:@ecalOnly',
1111 '--procModifiers': 'alpaka',
1112 '--customise' : 'HeterogeneousCore/AlpakaServices/customiseAlpakaServiceMemoryFilling.customiseAlpakaServiceMemoryFilling',
1113 },
1114 harvest = {
1115 '-s': 'HARVESTING:@ecalOnlyValidation+@ecal'
1116 },
1117 suffix = 'Patatrack_ECALOnlyAlpaka',
1118 offset = 0.412,
1119 )
1120
1121
1122
1123
1124
1125 upgradeWFs['PatatrackECALOnlyCPU'] = PatatrackWorkflow(
1126 digi = {
1127
1128 },
1129 reco = {
1130 '-s': 'RAW2DIGI:RawToDigi_ecalOnly,RECO:reconstruction_ecalOnly,VALIDATION:@ecalOnlyValidation,DQM:@ecalOnly',
1131 },
1132 harvest = {
1133 '-s': 'HARVESTING:@ecalOnlyValidation+@ecal'
1134 },
1135 suffix = 'Patatrack_ECALOnlyCPU',
1136 offset = 0.511,
1137 )
1138
1139
1140
1141
1142
1143 upgradeWFs['PatatrackECALOnlyGPU'] = PatatrackWorkflow(
1144 digi = {
1145
1146 '--procModifiers': 'gpu'
1147 },
1148 reco = {
1149 '-s': 'RAW2DIGI:RawToDigi_ecalOnly,RECO:reconstruction_ecalOnly,VALIDATION:@ecalOnlyValidation,DQM:@ecalOnly',
1150 '--procModifiers': 'gpu'
1151 },
1152 harvest = {
1153 '-s': 'HARVESTING:@ecalOnlyValidation+@ecal'
1154 },
1155 suffix = 'Patatrack_ECALOnlyGPU',
1156 offset = 0.512,
1157 )
1158
1159
1160
1161
1162
1163 upgradeWFs['PatatrackECALOnlyGPUValidation'] = PatatrackWorkflow(
1164 digi = {
1165
1166 '--accelerators': 'gpu-nvidia',
1167 '--procModifiers': 'gpu'
1168 },
1169 reco = {
1170 '-s': 'RAW2DIGI:RawToDigi_ecalOnly,RECO:reconstruction_ecalOnly,VALIDATION:@ecalOnlyValidation,DQM:@ecalOnly',
1171 '--accelerators': 'gpu-nvidia',
1172 '--procModifiers': 'gpuValidation'
1173 },
1174 harvest = {
1175 '-s': 'HARVESTING:@ecalOnlyValidation+@ecal'
1176 },
1177 suffix = 'Patatrack_ECALOnlyGPU_Validation',
1178 offset = 0.513,
1179 )
1180
1181
1182
1183
1184 upgradeWFs['PatatrackECALOnlyGPUProfiling'] = PatatrackWorkflow(
1185 digi = {
1186
1187 '--procModifiers': 'gpu'
1188 },
1189 reco = {
1190 '-s': 'RAW2DIGI:RawToDigi_ecalOnly,RECO:reconstruction_ecalOnly',
1191 '--procModifiers': 'gpu',
1192 '--customise' : 'RecoLocalCalo/Configuration/customizeEcalOnlyForProfiling.customizeEcalOnlyForProfilingGPUOnly'
1193 },
1194 harvest = None,
1195 suffix = 'Patatrack_ECALOnlyGPU_Profiling',
1196 offset = 0.514,
1197 )
1198
1199
1200
1201
1202
1203 upgradeWFs['PatatrackHCALOnlyCPU'] = PatatrackWorkflow(
1204 digi = {
1205
1206 },
1207 reco = {
1208 '-s': 'RAW2DIGI:RawToDigi_hcalOnly,RECO:reconstruction_hcalOnly,VALIDATION:@hcalOnlyValidation,DQM:@hcalOnly+@hcal2Only',
1209 },
1210 harvest = {
1211 '-s': 'HARVESTING:@hcalOnlyValidation+@hcalOnly+@hcal2Only'
1212 },
1213 suffix = 'Patatrack_HCALOnlyCPU',
1214 offset = 0.521,
1215 )
1216
1217
1218
1219
1220
1221 upgradeWFs['PatatrackHCALOnlyGPU'] = PatatrackWorkflow(
1222 digi = {
1223
1224 '--procModifiers': 'gpu'
1225 },
1226 reco = {
1227 '-s': 'RAW2DIGI:RawToDigi_hcalOnly,RECO:reconstruction_hcalOnly,VALIDATION:@hcalOnlyValidation,DQM:@hcalOnly+@hcal2Only',
1228 '--procModifiers': 'gpu'
1229 },
1230 harvest = {
1231 '-s': 'HARVESTING:@hcalOnlyValidation+@hcalOnly+@hcal2Only'
1232 },
1233 suffix = 'Patatrack_HCALOnlyGPU',
1234 offset = 0.522,
1235 )
1236
1237
1238
1239
1240
1241 upgradeWFs['PatatrackHCALOnlyGPUValidation'] = PatatrackWorkflow(
1242 digi = {
1243
1244 '--accelerators': 'gpu-nvidia',
1245 '--procModifiers': 'gpu'
1246 },
1247 reco = {
1248 '-s': 'RAW2DIGI:RawToDigi_hcalOnly,RECO:reconstruction_hcalOnly,VALIDATION:@hcalOnlyValidation,DQM:@hcalOnly+@hcal2Only',
1249 '--accelerators': 'gpu-nvidia',
1250 '--procModifiers': 'gpuValidation'
1251 },
1252 harvest = {
1253 '-s': 'HARVESTING:@hcalOnlyValidation+@hcal'
1254 },
1255 suffix = 'Patatrack_HCALOnlyGPU_Validation',
1256 offset = 0.523,
1257 )
1258
1259
1260
1261
1262 upgradeWFs['PatatrackHCALOnlyGPUProfiling'] = PatatrackWorkflow(
1263 digi = {
1264
1265 '--procModifiers': 'gpu'
1266 },
1267 reco = {
1268 '-s': 'RAW2DIGI:RawToDigi_hcalOnly,RECO:reconstruction_hcalOnly',
1269 '--procModifiers': 'gpu',
1270 '--customise' : 'RecoLocalCalo/Configuration/customizeHcalOnlyForProfiling.customizeHcalOnlyForProfilingGPUOnly'
1271 },
1272 harvest = None,
1273 suffix = 'Patatrack_HCALOnlyGPU_Profiling',
1274 offset = 0.524,
1275 )
1276
1277
1278
1279
1280 upgradeWFs['PatatrackHCALOnlyAlpakaValidation'] = PatatrackWorkflow(
1281 digi = {
1282 '--procModifiers': 'alpaka',
1283 '--customise' : 'HeterogeneousCore/AlpakaServices/customiseAlpakaServiceMemoryFilling.customiseAlpakaServiceMemoryFilling',
1284 },
1285 reco = {
1286 '-s': 'RAW2DIGI:RawToDigi_hcalOnly,RECO:reconstruction_hcalOnly,VALIDATION:@hcalOnlyValidation,DQM:@hcalOnly+@hcal2Only',
1287 '--procModifiers': 'alpaka',
1288 '--customise' : 'HeterogeneousCore/AlpakaServices/customiseAlpakaServiceMemoryFilling.customiseAlpakaServiceMemoryFilling',
1289 },
1290 harvest = {
1291 '-s': 'HARVESTING:@hcalOnlyValidation'
1292 },
1293 suffix = 'Patatrack_HCALOnlyAlpaka_Validation',
1294 offset = 0.422,
1295 )
1296
1297
1298
1299
1300 upgradeWFs['PatatrackHCALOnlyGPUandAlpakaValidation'] = PatatrackWorkflow(
1301 digi = {
1302 '--procModifiers': 'alpaka',
1303 '--customise' : 'HeterogeneousCore/AlpakaServices/customiseAlpakaServiceMemoryFilling.customiseAlpakaServiceMemoryFilling',
1304 },
1305 reco = {
1306 '-s': 'RAW2DIGI:RawToDigi_hcalOnly,RECO:reconstruction_hcalOnlyLegacy+reconstruction_hcalOnly,VALIDATION:@hcalOnlyValidation+pfClusterHBHEOnlyAlpakaComparisonSequence,DQM:@hcalOnly+@hcal2Only+hcalOnlyOfflineSourceSequenceAlpaka',
1307 '--procModifiers': 'alpaka',
1308 '--customise' : 'HeterogeneousCore/AlpakaServices/customiseAlpakaServiceMemoryFilling.customiseAlpakaServiceMemoryFilling',
1309 },
1310 harvest = {
1311 '-s': 'HARVESTING:@hcalOnlyValidation'
1312 },
1313 suffix = 'Patatrack_HCALOnlyGPUandAlpaka_Validation',
1314 offset = 0.423,
1315 )
1316
1317
1318
1319
1320 upgradeWFs['PatatrackHCALOnlyAlpakaProfiling'] = PatatrackWorkflow(
1321 digi = {
1322 '--procModifiers': 'alpaka',
1323 },
1324 reco = {
1325 '-s': 'RAW2DIGI:RawToDigi_hcalOnly,RECO:reconstruction_hcalOnly',
1326 '--procModifiers': 'alpaka'
1327 },
1328 harvest = None,
1329 suffix = 'Patatrack_HCALOnlyAlpaka_Profiling',
1330 offset = 0.424,
1331 )
1332
1333
1334
1335
1336
1337 upgradeWFs['PatatrackFullRecoAlpaka'] = PatatrackWorkflow(
1338 digi = {
1339 '--procModifiers': 'alpaka',
1340 '--customise' : 'HeterogeneousCore/AlpakaServices/customiseAlpakaServiceMemoryFilling.customiseAlpakaServiceMemoryFilling',
1341 },
1342 reco = {
1343
1344 '-s': 'RAW2DIGI:RawToDigi+RawToDigi_pixelOnly,L1Reco,RECO:reconstruction+reconstruction_pixelTrackingOnly,RECOSIM,PAT,VALIDATION:@standardValidation+@miniAODValidation,DQM:@standardDQM+@ExtraHLT+@miniAODDQM+@pixelTrackingOnlyDQM',
1345 '--procModifiers': 'alpaka,pixelNtupletFit',
1346 '--customise' : 'HeterogeneousCore/AlpakaServices/customiseAlpakaServiceMemoryFilling.customiseAlpakaServiceMemoryFilling',
1347 },
1348 harvest = {
1349
1350 },
1351 suffix = 'Patatrack_FullRecoAlpaka',
1352 offset = 0.492,
1353 )
1354
1355
1356
1357
1358
1359 upgradeWFs['PatatrackAllCPU'] = PatatrackWorkflow(
1360 digi = {
1361
1362 },
1363 reco = {
1364 '-s': 'RAW2DIGI:RawToDigi_pixelOnly+RawToDigi_ecalOnly+RawToDigi_hcalOnly,RECO:reconstruction_pixelTrackingOnly+reconstruction_ecalOnly+reconstruction_hcalOnly,VALIDATION:@pixelTrackingOnlyValidation+@ecalOnlyValidation+@hcalOnlyValidation,DQM:@pixelTrackingOnlyDQM+@ecalOnly+@hcalOnly+@hcal2Only',
1365 '--procModifiers': 'pixelNtupletFit'
1366 },
1367 harvest = {
1368 '-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM+@ecalOnlyValidation+@ecal+@hcalOnlyValidation+@hcalOnly+@hcal2Only'
1369 },
1370 suffix = 'Patatrack_AllCPU',
1371 offset = 0.581,
1372 )
1373
1374
1375
1376
1377
1378 upgradeWFs['PatatrackAllGPU'] = PatatrackWorkflow(
1379 digi = {
1380
1381 '--procModifiers': 'gpu'
1382 },
1383 reco = {
1384 '-s': 'RAW2DIGI:RawToDigi_pixelOnly+RawToDigi_ecalOnly+RawToDigi_hcalOnly,RECO:reconstruction_pixelTrackingOnly+reconstruction_ecalOnly+reconstruction_hcalOnly,VALIDATION:@pixelTrackingOnlyValidation+@ecalOnlyValidation+@hcalOnlyValidation,DQM:@pixelTrackingOnlyDQM+@ecalOnly+@hcalOnly+@hcal2Only',
1385 '--procModifiers': 'pixelNtupletFit,gpu'
1386 },
1387 harvest = {
1388 '-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM+@ecalOnlyValidation+@ecal+@hcalOnlyValidation+@hcalOnly+@hcal2Only'
1389 },
1390 suffix = 'Patatrack_AllGPU',
1391 offset = 0.582,
1392 )
1393
1394
1395
1396
1397
1398 upgradeWFs['PatatrackAllGPUValidation'] = PatatrackWorkflow(
1399 digi = {
1400
1401 '--accelerators': 'gpu-nvidia',
1402 '--procModifiers': 'gpu'
1403 },
1404 reco = {
1405 '-s': 'RAW2DIGI:RawToDigi_pixelOnly+RawToDigi_ecalOnly+RawToDigi_hcalOnly,RECO:reconstruction_pixelTrackingOnly+reconstruction_ecalOnly+reconstruction_hcalOnly,VALIDATION:@pixelTrackingOnlyValidation+@ecalOnlyValidation+@hcalOnlyValidation,DQM:@pixelTrackingOnlyDQM+@ecalOnly+@hcalOnly+@hcal2Only',
1406 '--accelerators': 'gpu-nvidia',
1407 '--procModifiers': 'pixelNtupletFit,gpuValidation'
1408 },
1409 harvest = {
1410 '-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM+@ecalOnlyValidation+@ecal+@hcalOnlyValidation+@hcalOnly+@hcal2Only',
1411 '--procModifiers': 'gpuValidation'
1412 },
1413 suffix = 'Patatrack_AllGPU_Validation',
1414 offset = 0.583,
1415 )
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426 upgradeWFs['PatatrackAllTripletsCPU'] = PatatrackWorkflow(
1427 digi = {
1428
1429 },
1430 reco = {
1431 '-s': 'RAW2DIGI:RawToDigi_pixelOnly+RawToDigi_ecalOnly+RawToDigi_hcalOnly,RECO:reconstruction_pixelTrackingOnly+reconstruction_ecalOnly+reconstruction_hcalOnly,VALIDATION:@pixelTrackingOnlyValidation+@ecalOnlyValidation+@hcalOnlyValidation,DQM:@pixelTrackingOnlyDQM+@ecalOnly+@hcalOnly+@hcal2Only',
1432 '--procModifiers': 'pixelNtupletFit'
1433 },
1434 harvest = {
1435 '-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM+@ecalOnlyValidation+@ecal+@hcalOnlyValidation+@hcalOnly+@hcal2Only'
1436 },
1437 suffix = 'Patatrack_AllTripletsCPU',
1438 offset = 0.585,
1439 )
1440
1441
1442
1443
1444
1445 upgradeWFs['PatatrackAllTripletsGPU'] = PatatrackWorkflow(
1446 digi = {
1447
1448 '--procModifiers': 'gpu'
1449 },
1450 reco = {
1451 '-s': 'RAW2DIGI:RawToDigi_pixelOnly+RawToDigi_ecalOnly+RawToDigi_hcalOnly,RECO:reconstruction_pixelTrackingOnly+reconstruction_ecalOnly+reconstruction_hcalOnly,VALIDATION:@pixelTrackingOnlyValidation+@ecalOnlyValidation+@hcalOnlyValidation,DQM:@pixelTrackingOnlyDQM+@ecalOnly+@hcalOnly+@hcal2Only',
1452 '--procModifiers': 'pixelNtupletFit,gpu'
1453 },
1454 harvest = {
1455 '-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM+@ecalOnlyValidation+@ecal+@hcalOnlyValidation+@hcalOnly+@hcal2Only'
1456 },
1457 suffix = 'Patatrack_AllTripletsGPU',
1458 offset = 0.586,
1459 )
1460
1461
1462
1463
1464
1465 upgradeWFs['PatatrackAllTripletsGPUValidation'] = PatatrackWorkflow(
1466 digi = {
1467
1468 '--accelerators': 'gpu-nvidia',
1469 '--procModifiers': 'gpu'
1470 },
1471 reco = {
1472 '-s': 'RAW2DIGI:RawToDigi_pixelOnly+RawToDigi_ecalOnly+RawToDigi_hcalOnly,RECO:reconstruction_pixelTrackingOnly+reconstruction_ecalOnly+reconstruction_hcalOnly,VALIDATION:@pixelTrackingOnlyValidation+@ecalOnlyValidation+@hcalOnlyValidation,DQM:@pixelTrackingOnlyDQM+@ecalOnly+@hcalOnly+@hcal2Only',
1473 '--accelerators': 'gpu-nvidia',
1474 '--procModifiers': 'pixelNtupletFit,gpuValidation'
1475 },
1476 harvest = {
1477 '-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM+@ecalOnlyValidation+@ecal+@hcalOnlyValidation+@hcalOnly+@hcal2Only',
1478 '--procModifiers': 'gpuValidation'
1479 },
1480 suffix = 'Patatrack_AllTripletsGPU_Validation',
1481 offset = 0.587,
1482 )
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493 upgradeWFs['PatatrackFullRecoCPU'] = PatatrackWorkflow(
1494 digi = {
1495
1496 },
1497 reco = {
1498
1499 '-s': 'RAW2DIGI:RawToDigi+RawToDigi_pixelOnly,L1Reco,RECO:reconstruction+reconstruction_pixelTrackingOnly,RECOSIM,PAT,VALIDATION:@standardValidation+@miniAODValidation,DQM:@standardDQM+@ExtraHLT+@miniAODDQM+@pixelTrackingOnlyDQM',
1500 '--procModifiers': 'pixelNtupletFit'
1501 },
1502 harvest = {
1503
1504 },
1505 suffix = 'Patatrack_FullRecoCPU',
1506 offset = 0.591,
1507 )
1508
1509
1510
1511
1512
1513 upgradeWFs['PatatrackFullRecoGPU'] = PatatrackWorkflow(
1514 digi = {
1515
1516 '--procModifiers': 'gpu'
1517 },
1518 reco = {
1519
1520 '-s': 'RAW2DIGI:RawToDigi+RawToDigi_pixelOnly,L1Reco,RECO:reconstruction+reconstruction_pixelTrackingOnly,RECOSIM,PAT,VALIDATION:@standardValidation+@miniAODValidation,DQM:@standardDQM+@ExtraHLT+@miniAODDQM+@pixelTrackingOnlyDQM',
1521 '--procModifiers': 'pixelNtupletFit,gpu'
1522 },
1523 harvest = {
1524
1525 },
1526 suffix = 'Patatrack_FullRecoGPU',
1527 offset = 0.592,
1528 )
1529
1530
1531
1532
1533
1534 upgradeWFs['PatatrackFullRecoGPUValidation'] = PatatrackWorkflow(
1535 digi = {
1536
1537 '--accelerators': 'gpu-nvidia',
1538 '--procModifiers': 'gpu'
1539 },
1540 reco = {
1541
1542 '-s': 'RAW2DIGI:RawToDigi+RawToDigi_pixelOnly,L1Reco,RECO:reconstruction+reconstruction_pixelTrackingOnly,RECOSIM,PAT,VALIDATION:@standardValidation+@miniAODValidation,DQM:@standardDQM+@ExtraHLT+@miniAODDQM+@pixelTrackingOnlyDQM',
1543 '--accelerators': 'gpu-nvidia',
1544 '--procModifiers': 'pixelNtupletFit,gpuValidation'
1545 },
1546 harvest = {
1547
1548 },
1549 suffix = 'Patatrack_FullRecoGPU_Validation',
1550 offset = 0.593,
1551 )
1552
1553
1554
1555
1556
1557 upgradeWFs['PatatrackFullRecoTripletsCPU'] = PatatrackWorkflow(
1558 digi = {
1559
1560 },
1561 reco = {
1562
1563 '-s': 'RAW2DIGI:RawToDigi+RawToDigi_pixelOnly,L1Reco,RECO:reconstruction+reconstruction_pixelTrackingOnly,RECOSIM,PAT,VALIDATION:@standardValidation+@miniAODValidation,DQM:@standardDQM+@ExtraHLT+@miniAODDQM+@pixelTrackingOnlyDQM',
1564 '--procModifiers': 'pixelNtupletFit',
1565 '--customise' : 'RecoTracker/Configuration/customizePixelTracksForTriplets.customizePixelTracksForTriplets'
1566 },
1567 harvest = {
1568
1569 },
1570 suffix = 'Patatrack_FullRecoTripletsCPU',
1571 offset = 0.595,
1572 )
1573
1574 upgradeWFs['PatatrackFullRecoTripletsCPUProdLike'] = PatatrackWorkflow(
1575 digi = {
1576
1577 '--datatier':'GEN-SIM-RAW',
1578 '--eventcontent':'RAWSIM',
1579 },
1580 reco = {
1581
1582 '-s': 'RAW2DIGI:RawToDigi+RawToDigi_pixelOnly,L1Reco,RECO:reconstruction+reconstruction_pixelTrackingOnly,RECOSIM',
1583 '--procModifiers': 'pixelNtupletFit',
1584 '--customise' : 'RecoTracker/Configuration/customizePixelTracksForTriplets.customizePixelTracksForTriplets',
1585 '--datatier':'AODSIM',
1586 '--eventcontent':'AODSIM',
1587 },
1588 harvest = None,
1589 suffix = 'Patatrack_FullRecoTripletsCPUProdLike',
1590 offset = 0.59521,
1591 )
1592
1593
1594
1595
1596
1597 upgradeWFs['PatatrackFullRecoTripletsGPU'] = PatatrackWorkflow(
1598 digi = {
1599
1600 '--procModifiers': 'gpu'
1601 },
1602 reco = {
1603
1604 '-s': 'RAW2DIGI:RawToDigi+RawToDigi_pixelOnly,L1Reco,RECO:reconstruction+reconstruction_pixelTrackingOnly,RECOSIM,PAT,VALIDATION:@standardValidation+@miniAODValidation,DQM:@standardDQM+@ExtraHLT+@miniAODDQM+@pixelTrackingOnlyDQM',
1605 '--procModifiers': 'pixelNtupletFit,gpu',
1606 '--customise': 'RecoTracker/Configuration/customizePixelTracksForTriplets.customizePixelTracksForTriplets'
1607 },
1608 harvest = {
1609
1610 },
1611 suffix = 'Patatrack_FullRecoTripletsGPU',
1612 offset = 0.596,
1613 )
1614
1615 upgradeWFs['PatatrackFullRecoTripletsGPUProdLike'] = PatatrackWorkflow(
1616 digi = {
1617
1618 '--procModifiers': 'gpu',
1619 '--datatier':'GEN-SIM-RAW',
1620 '--eventcontent':'RAWSIM',
1621 },
1622 reco = {
1623
1624 '-s': 'RAW2DIGI:RawToDigi+RawToDigi_pixelOnly,L1Reco,RECO:reconstruction+reconstruction_pixelTrackingOnly,RECOSIM',
1625 '--procModifiers': 'pixelNtupletFit,gpu',
1626 '--customise': 'RecoTracker/Configuration/customizePixelTracksForTriplets.customizePixelTracksForTriplets',
1627 '--datatier':'AODSIM',
1628 '--eventcontent':'AODSIM',
1629 },
1630 harvest = None,
1631 suffix = 'Patatrack_FullRecoTripletsGPUProdLike',
1632 offset = 0.59621,
1633 )
1634
1635
1636
1637
1638
1639 upgradeWFs['PatatrackFullRecoTripletsGPUValidation'] = PatatrackWorkflow(
1640 digi = {
1641
1642 '--accelerators': 'gpu-nvidia',
1643 '--procModifiers': 'gpu'
1644 },
1645 reco = {
1646
1647 '-s': 'RAW2DIGI:RawToDigi+RawToDigi_pixelOnly,L1Reco,RECO:reconstruction+reconstruction_pixelTrackingOnly,RECOSIM,PAT,VALIDATION:@standardValidation+@miniAODValidation,DQM:@standardDQM+@ExtraHLT+@miniAODDQM+@pixelTrackingOnlyDQM',
1648 '--accelerators': 'gpu-nvidia',
1649 '--procModifiers': 'pixelNtupletFit,gpuValidation',
1650 '--customise' : 'RecoTracker/Configuration/customizePixelTracksForTriplets.customizePixelTracksForTriplets'
1651 },
1652 harvest = {
1653
1654 },
1655 suffix = 'Patatrack_FullRecoTripletsGPU_Validation',
1656 offset = 0.597,
1657 )
1658
1659 upgradeWFs['PatatrackPixelOnlyAlpaka'] = PatatrackWorkflow(
1660 digi = {
1661 '--procModifiers': 'alpaka',
1662 '--customise' : 'HeterogeneousCore/AlpakaServices/customiseAlpakaServiceMemoryFilling.customiseAlpakaServiceMemoryFilling',
1663 },
1664 reco = {
1665 '-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly,VALIDATION:@pixelTrackingOnlyValidation,DQM:@pixelTrackingOnlyDQM',
1666 '--procModifiers': 'alpaka',
1667 '--customise' : 'HeterogeneousCore/AlpakaServices/customiseAlpakaServiceMemoryFilling.customiseAlpakaServiceMemoryFilling',
1668 },
1669 harvest = {
1670 '-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM'
1671 },
1672 suffix = 'Patatrack_PixelOnlyAlpaka',
1673 offset = 0.402,
1674 )
1675
1676 upgradeWFs['PatatrackPixelOnlyAlpakaValidation'] = PatatrackWorkflow(
1677 digi = {
1678 '--procModifiers': 'alpaka',
1679 '--customise' : 'HeterogeneousCore/AlpakaServices/customiseAlpakaServiceMemoryFilling.customiseAlpakaServiceMemoryFilling',
1680 },
1681 reco = {
1682 '-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly,VALIDATION:@pixelTrackingOnlyValidation,DQM:@pixelTrackingOnlyDQM',
1683 '--procModifiers': 'alpakaValidation',
1684 '--customise' : 'HeterogeneousCore/AlpakaServices/customiseAlpakaServiceMemoryFilling.customiseAlpakaServiceMemoryFilling',
1685 },
1686 harvest = {
1687 '-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM'
1688 },
1689 suffix = 'Patatrack_PixelOnlyAlpaka_Validation',
1690 offset = 0.403,
1691 )
1692
1693 upgradeWFs['PatatrackPixelOnlyAlpakaProfiling'] = PatatrackWorkflow(
1694 digi = {
1695 '--procModifiers': 'alpaka',
1696 },
1697 reco = {
1698 '-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly',
1699 '--procModifiers': 'alpaka',
1700 '--customise' : 'RecoTracker/Configuration/customizePixelOnlyForProfiling.customizePixelOnlyForProfilingGPUOnly'
1701 },
1702 harvest = None,
1703 suffix = 'Patatrack_PixelOnlyAlpaka_Profiling',
1704 offset = 0.404,
1705 )
1706
1707
1708
1709 class UpgradeWorkflow_ProdLike(UpgradeWorkflow):
1710 def setup_(self, step, stepName, stepDict, k, properties):
1711 thisStep = stepDict[step][k]["-s"]
1712 if 'GenSimHLBeamSpot14' in step:
1713 stepDict[stepName][k] = merge([{'--eventcontent': 'RAWSIM', '--datatier': 'GEN-SIM'},stepDict[step][k]])
1714 elif 'Digi' in step and 'Trigger' not in step:
1715 stepDict[stepName][k] = merge([{'-s': thisStep.replace("DIGI:pdigi_valid","DIGI"),'--datatier':'GEN-SIM-RAW', '--eventcontent':'RAWSIM'}, stepDict[step][k]])
1716 elif 'DigiTrigger' in step:
1717 stepDict[stepName][k] = merge([{'-s': thisStep.replace("DIGI:pdigi_valid","DIGI"), '--datatier':'GEN-SIM-RAW', '--eventcontent':'RAWSIM'}, stepDict[step][k]])
1718 elif 'Reco' in step:
1719 stepDict[stepName][k] = merge([{'-s': 'RAW2DIGI,L1Reco,RECO,RECOSIM', '--datatier':'AODSIM', '--eventcontent':'AODSIM'}, stepDict[step][k]])
1720 elif 'MiniAOD' in step:
1721
1722 stepDict[stepName][k] = deepcopy(stepDict[step][k])
1723 elif 'ALCA' in step or 'HARVEST' in step:
1724
1725 stepDict[stepName][k] = None
1726 elif 'Nano'==step:
1727 stepDict[stepName][k] = merge([{'--filein':'file:step4.root','-s':'NANO','--datatier':'NANOAODSIM','--eventcontent':'NANOEDMAODSIM'}, stepDict[step][k]])
1728 def condition(self, fragment, stepList, key, hasHarvest):
1729 return fragment=="TTbar_14TeV" and ('2026' in key or '2021' in key or '2023' in key or '2024' in key)
1730 upgradeWFs['ProdLike'] = UpgradeWorkflow_ProdLike(
1731 steps = [
1732 'GenSimHLBeamSpot14',
1733 'Digi',
1734 'DigiTrigger',
1735 'Reco',
1736 'RecoFakeHLT',
1737 'RecoGlobal',
1738 'RecoNano',
1739 'RecoNanoFakeHLT',
1740 'HARVEST',
1741 'HARVESTFakeHLT',
1742 'HARVESTGlobal',
1743 'HARVESTNano',
1744 'HARVESTNanoFakeHLT',
1745 'MiniAOD',
1746 'ALCA',
1747 'ALCAPhase2',
1748 'Nano',
1749 ],
1750 PU = [
1751 'GenSimHLBeamSpot14',
1752 'Digi',
1753 'DigiTrigger',
1754 'Reco',
1755 'RecoFakeHLT',
1756 'RecoGlobal',
1757 'RecoNano',
1758 'RecoNanoFakeHLT',
1759 'HARVEST',
1760 'HARVESTFakeHLT',
1761 'HARVESTGlobal',
1762 'HARVESTNano',
1763 'HARVESTNanoFakeHLT',
1764 'MiniAOD',
1765 'ALCA',
1766 'ALCAPhase2',
1767 'Nano',
1768 ],
1769 suffix = '_ProdLike',
1770 offset = 0.21,
1771 )
1772
1773 class UpgradeWorkflow_ProdLikeRunningPU(UpgradeWorkflow_ProdLike):
1774 def __init__(self, suffix, offset, fixedPU,
1775 steps = [],
1776 PU = [
1777 'GenSimHLBeamSpot14',
1778 'Digi',
1779 'DigiTrigger',
1780 'Reco',
1781 'RecoFakeHLT',
1782 'RecoGlobal',
1783 'RecoNano',
1784 'RecoNanoFakeHLT',
1785 'HARVEST',
1786 'HARVESTFakeHLT',
1787 'HARVESTGlobal',
1788 'HARVESTNano',
1789 'HARVESTNanoFakeHLT',
1790 'MiniAOD',
1791 'ALCA',
1792 'ALCAPhase2',
1793 'Nano',
1794 ]):
1795 super(UpgradeWorkflow_ProdLikeRunningPU, self).__init__(steps, PU, suffix, offset)
1796 self.__fixedPU = fixedPU
1797 def setupPU_(self, step, stepName, stepDict, k, properties):
1798
1799 if stepDict[stepName][k] is not None and '--pileup' in stepDict[stepName][k]:
1800 stepDict[stepName][k]['--pileup'] = 'AVE_' + str(self.__fixedPU) + '_BX_25ns'
1801 def condition(self, fragment, stepList, key, hasHarvest):
1802
1803 return (fragment=="TTbar_14TeV") and (('2026' in key) or ('2021' in key and self.__fixedPU<=100))
1804
1805
1806
1807
1808
1809 upgradeWFs['ProdLikePU10'] = UpgradeWorkflow_ProdLikeRunningPU(
1810 suffix = '_ProdLikePU10',
1811 offset = 0.21101,
1812 fixedPU = 10,
1813 )
1814
1815 upgradeWFs['ProdLikePU20'] = UpgradeWorkflow_ProdLikeRunningPU(
1816 suffix = '_ProdLikePU20',
1817 offset = 0.21201,
1818 fixedPU = 20,
1819 )
1820
1821 upgradeWFs['ProdLikePU30'] = UpgradeWorkflow_ProdLikeRunningPU(
1822 suffix = '_ProdLikePU30',
1823 offset = 0.21301,
1824 fixedPU = 30,
1825 )
1826
1827 upgradeWFs['ProdLikePU40'] = UpgradeWorkflow_ProdLikeRunningPU(
1828 suffix = '_ProdLikePU40',
1829 offset = 0.21401,
1830 fixedPU = 40,
1831 )
1832
1833 upgradeWFs['ProdLikePU50'] = UpgradeWorkflow_ProdLikeRunningPU(
1834 suffix = '_ProdLikePU50',
1835 offset = 0.21501,
1836 fixedPU = 50,
1837 )
1838
1839 upgradeWFs['ProdLikePU55'] = UpgradeWorkflow_ProdLikeRunningPU(
1840 suffix = '_ProdLikePU55',
1841 offset = 0.21551,
1842 fixedPU = 55,
1843 )
1844
1845 upgradeWFs['ProdLikePU60'] = UpgradeWorkflow_ProdLikeRunningPU(
1846 suffix = '_ProdLikePU60',
1847 offset = 0.21601,
1848 fixedPU = 60,
1849 )
1850
1851 upgradeWFs['ProdLikePU65'] = UpgradeWorkflow_ProdLikeRunningPU(
1852 suffix = '_ProdLikePU65',
1853 offset = 0.21651,
1854 fixedPU = 65,
1855 )
1856
1857 upgradeWFs['ProdLikePU70'] = UpgradeWorkflow_ProdLikeRunningPU(
1858 suffix = '_ProdLikePU70',
1859 offset = 0.21701,
1860 fixedPU = 70,
1861 )
1862
1863 upgradeWFs['ProdLikePU80'] = UpgradeWorkflow_ProdLikeRunningPU(
1864 suffix = '_ProdLikePU80',
1865 offset = 0.21801,
1866 fixedPU = 80,
1867 )
1868
1869 upgradeWFs['ProdLikePU90'] = UpgradeWorkflow_ProdLikeRunningPU(
1870 suffix = '_ProdLikePU90',
1871 offset = 0.21901,
1872 fixedPU = 90,
1873 )
1874
1875 upgradeWFs['ProdLikePU100'] = UpgradeWorkflow_ProdLikeRunningPU(
1876 suffix = '_ProdLikePU100',
1877 offset = 0.211001,
1878 fixedPU = 100,
1879 )
1880
1881 upgradeWFs['ProdLikePU120'] = UpgradeWorkflow_ProdLikeRunningPU(
1882 suffix = '_ProdLikePU120',
1883 offset = 0.211201,
1884 fixedPU = 120,
1885 )
1886
1887 upgradeWFs['ProdLikePU140'] = UpgradeWorkflow_ProdLikeRunningPU(
1888 suffix = '_ProdLikePU140',
1889 offset = 0.211401,
1890 fixedPU = 140,
1891 )
1892
1893 upgradeWFs['ProdLikePU160'] = UpgradeWorkflow_ProdLikeRunningPU(
1894 suffix = '_ProdLikePU160',
1895 offset = 0.211601,
1896 fixedPU = 160,
1897 )
1898
1899 upgradeWFs['ProdLikePU180'] = UpgradeWorkflow_ProdLikeRunningPU(
1900 suffix = '_ProdLikePU180',
1901 offset = 0.211801,
1902 fixedPU = 180,
1903 )
1904
1905 class UpgradeWorkflow_HLT75e33(UpgradeWorkflow):
1906 def setup_(self, step, stepName, stepDict, k, properties):
1907 if 'HARVEST' in step:
1908 stepDict[stepName][k] = merge([{'--filein':'file:step3_inDQM.root'}, stepDict[step][k]])
1909 else:
1910 stepDict[stepName][k] = merge([stepDict[step][k]])
1911 def condition(self, fragment, stepList, key, hasHarvest):
1912 return fragment=="TTbar_14TeV" and '2026' in key
1913 upgradeWFs['HLT75e33'] = UpgradeWorkflow_HLT75e33(
1914 steps = [
1915 'GenSimHLBeamSpot14',
1916 'DigiTrigger',
1917 'RecoGlobal',
1918 'HLT75e33',
1919 'HARVESTGlobal',
1920 ],
1921 PU = [
1922 'GenSimHLBeamSpot14',
1923 'DigiTrigger',
1924 'RecoGlobal',
1925 'HLT75e33',
1926 'HARVESTGlobal',
1927 ],
1928 suffix = '_HLT75e33',
1929 offset = 0.75,
1930 )
1931
1932 class UpgradeWorkflow_HLTwDIGI75e33(UpgradeWorkflow):
1933 def setup_(self, step, stepName, stepDict, k, properties):
1934 if 'DigiTrigger' in step:
1935 stepDict[stepName][k] = merge([{'-s':'DIGI:pdigi_valid,L1TrackTrigger,L1,DIGI2RAW,HLT:@relval2026'}, stepDict[step][k]])
1936 def condition(self, fragment, stepList, key, hasHarvest):
1937 return fragment=="TTbar_14TeV" and '2026' in key
1938 upgradeWFs['HLTwDIGI75e33'] = UpgradeWorkflow_HLTwDIGI75e33(
1939 steps = [
1940 'DigiTrigger',
1941 ],
1942 PU = [
1943 'DigiTrigger',
1944 ],
1945 suffix = '_HLTwDIGI75e33',
1946 offset = 0.76,
1947 )
1948
1949 class UpgradeWorkflow_L1Complete(UpgradeWorkflow):
1950 def setup_(self, step, stepName, stepDict, k, properties):
1951 if 'Digi' in step and 'NoHLT' not in step:
1952 stepDict[stepName][k] = merge([{'-s': 'DIGI:pdigi_valid,L1,L1TrackTrigger,L1P2GT,DIGI2RAW,HLT:@relval2026'}, stepDict[step][k]])
1953 def condition(self, fragment, stepList, key, hasHarvest):
1954 return '2026' in key
1955
1956 upgradeWFs['L1Complete'] = UpgradeWorkflow_L1Complete(
1957 steps = [
1958 'DigiTrigger',
1959 ],
1960 PU = [
1961 'DigiTrigger',
1962 ],
1963 suffix = '_L1Complete',
1964 offset = 0.78
1965 )
1966
1967 class UpgradeWorkflow_Neutron(UpgradeWorkflow):
1968 def setup_(self, step, stepName, stepDict, k, properties):
1969 if 'GenSim' in step:
1970 custNew = "SimG4Core/Application/NeutronBGforMuonsXS_cff.customise"
1971 else:
1972 custNew = "SLHCUpgradeSimulations/Configuration/customise_mixing.customise_Mix_LongLived_Neutrons"
1973 stepDict[stepName][k] = deepcopy(stepDict[step][k])
1974 if '--customise' in stepDict[stepName][k].keys():
1975 stepDict[stepName][k]['--customise'] += ","+custNew
1976 else:
1977 stepDict[stepName][k]['--customise'] = custNew
1978 def condition(self, fragment, stepList, key, hasHarvest):
1979 return any(fragment==nfrag for nfrag in self.neutronFrags) and any(nkey in key for nkey in self.neutronKeys)
1980 upgradeWFs['Neutron'] = UpgradeWorkflow_Neutron(
1981 steps = [
1982 'GenSim',
1983 'GenSimHLBeamSpot',
1984 'GenSimHLBeamSpot14',
1985 'Digi',
1986 'DigiTrigger',
1987 ],
1988 PU = [
1989 'Digi',
1990 'DigiTrigger',
1991 ],
1992 suffix = '_Neutron',
1993 offset = 0.12,
1994 )
1995
1996 upgradeWFs['Neutron'].neutronKeys = [x for x in upgradeKeys[2026] if 'PU' not in x]
1997 upgradeWFs['Neutron'].neutronFrags = ['ZMM_14','MinBias_14TeV']
1998
1999 class UpgradeWorkflow_heCollapse(UpgradeWorkflow):
2000 def setup_(self, step, stepName, stepDict, k, properties):
2001 stepDict[stepName][k] = merge([{'--procModifiers': 'run2_HECollapse_2018'}, stepDict[step][k]])
2002 def condition(self, fragment, stepList, key, hasHarvest):
2003 return fragment=="TTbar_13" and '2018' in key
2004 upgradeWFs['heCollapse'] = UpgradeWorkflow_heCollapse(
2005 steps = [
2006 'GenSim',
2007 'Digi',
2008 'Reco',
2009
2010 'HARVEST',
2011 'HARVESTFakeHLT',
2012 'ALCA',
2013 ],
2014 PU = [
2015 'Digi',
2016 'Reco',
2017
2018 'HARVEST',
2019 'HARVESTFakeHLT',
2020 ],
2021 suffix = '_heCollapse',
2022 offset = 0.6,
2023 )
2024
2025
2026 class UpgradeWorkflow_ecalDevel(UpgradeWorkflow):
2027 def __init__(self, digi = {}, reco = {}, harvest = {}, **kwargs):
2028
2029 super(UpgradeWorkflow_ecalDevel, self).__init__(
2030 steps = [
2031 'DigiTrigger',
2032 'RecoGlobal',
2033 'HARVESTGlobal',
2034 'ALCAPhase2',
2035 ],
2036 PU = [
2037 'DigiTrigger',
2038 'RecoGlobal',
2039 'HARVESTGlobal',
2040 'ALCAPhase2',
2041 ],
2042 **kwargs)
2043 self.__digi = digi
2044 self.__reco = reco
2045 self.__harvest = harvest
2046
2047 def setup_(self, step, stepName, stepDict, k, properties):
2048
2049 mods = {'--era': stepDict[step][k]['--era']+',phase2_ecal_devel'}
2050 if 'Digi' in step:
2051 mods['-s'] = 'DIGI:pdigi_valid,DIGI2RAW'
2052 mods |= self.__digi
2053 elif 'Reco' in step:
2054 mods['-s'] = 'RAW2DIGI,RECO:reconstruction_ecalOnly,VALIDATION:@ecalOnlyValidation,DQM:@ecalOnly'
2055 mods['--datatier'] = 'GEN-SIM-RECO,DQMIO'
2056 mods['--eventcontent'] = 'FEVTDEBUGHLT,DQM'
2057 mods |= self.__reco
2058 elif 'HARVEST' in step:
2059 mods['-s'] = 'HARVESTING:@ecalOnlyValidation+@ecal'
2060 mods |= self.__harvest
2061 stepDict[stepName][k] = merge([mods, stepDict[step][k]])
2062
2063 if 'ALCA' in step:
2064 stepDict[stepName][k] = None
2065
2066 def condition(self, fragment, stepList, key, hasHarvest):
2067 return fragment=="TTbar_14TeV" and '2026' in key
2068
2069
2070 upgradeWFs['ecalDevel'] = UpgradeWorkflow_ecalDevel(
2071 suffix = '_ecalDevel',
2072 offset = 0.61,
2073 )
2074
2075
2076 upgradeWFs['ecalDevelGPU'] = UpgradeWorkflow_ecalDevel(
2077 reco = {'--procModifiers': 'gpu'},
2078 suffix = '_ecalDevelGPU',
2079 offset = 0.612,
2080 )
2081
2082
2083 class UpgradeWorkflow_ECalComponent(UpgradeWorkflow):
2084 def __init__(self, suffix, offset, ecalTPPh2, ecalMod,
2085 steps = [
2086 'GenSim',
2087 'GenSimHLBeamSpot',
2088 'GenSimHLBeamSpot14',
2089 'GenSimHLBeamSpotHGCALCloseBy',
2090 'Digi',
2091 'DigiTrigger',
2092 'RecoGlobal',
2093 'HARVESTGlobal',
2094 'ALCAPhase2',
2095 ],
2096 PU = [
2097 'GenSim',
2098 'GenSimHLBeamSpot',
2099 'GenSimHLBeamSpot14',
2100 'GenSimHLBeamSpotHGCALCloseBy',
2101 'Digi',
2102 'DigiTrigger',
2103 'RecoGlobal',
2104 'HARVESTGlobal',
2105 'ALCAPhase2',
2106 ]):
2107 super(UpgradeWorkflow_ECalComponent, self).__init__(steps, PU, suffix, offset)
2108 self.__ecalTPPh2 = ecalTPPh2
2109 self.__ecalMod = ecalMod
2110
2111 def setup_(self, step, stepName, stepDict, k, properties):
2112 stepDict[stepName][k] = deepcopy(stepDict[step][k])
2113 if 'Sim' in step:
2114 if self.__ecalMod is not None:
2115 stepDict[stepName][k] = merge([{'--procModifiers':self.__ecalMod},stepDict[step][k]])
2116 if 'Digi' in step and 'NoHLT' not in step:
2117 if self.__ecalMod is not None:
2118 stepDict[stepName][k] = merge([{'--procModifiers':self.__ecalMod},stepDict[step][k]])
2119 if self.__ecalTPPh2 is not None:
2120 mods = {'--era': stepDict[step][k]['--era']+',phase2_ecal_devel,phase2_ecalTP_devel'}
2121 mods['-s'] = 'DIGI:pdigi_valid,DIGI2RAW,HLT:@fake2'
2122 stepDict[stepName][k] = merge([mods, stepDict[step][k]])
2123 if 'RecoGlobal' in step:
2124 stepDict[stepName][k] = merge([{'-s': 'RAW2DIGI,RECO,RECOSIM,PAT',
2125 '--datatier':'GEN-SIM-RECO',
2126 '--eventcontent':'FEVTDEBUGHLT',
2127 }, stepDict[step][k]])
2128 if 'HARVESTGlobal' in step:
2129 stepDict[stepName][k] = None
2130 if 'ALCAPhase2' in step:
2131 stepDict[stepName][k] = None
2132
2133 def condition(self, fragment, stepList, key, hasHarvest):
2134 return ('2021' in key or '2023' in key or '2026' in key)
2135
2136 upgradeWFs['ECALComponent'] = UpgradeWorkflow_ECalComponent(
2137 suffix = '_ecalComponent',
2138 offset = 0.631,
2139 ecalTPPh2 = None,
2140 ecalMod = 'ecal_component',
2141 )
2142
2143 upgradeWFs['ECALComponentFSW'] = UpgradeWorkflow_ECalComponent(
2144 suffix = '_ecalComponentFSW',
2145 offset = 0.632,
2146 ecalTPPh2 = None,
2147 ecalMod = 'ecal_component_finely_sampled_waveforms',
2148 )
2149
2150 upgradeWFs['ECALTPPh2'] = UpgradeWorkflow_ECalComponent(
2151 suffix = '_ecalTPPh2',
2152 offset = 0.633,
2153 ecalTPPh2 = 'phase2_ecal_devel,phase2_ecalTP_devel',
2154 ecalMod = None,
2155 )
2156
2157 upgradeWFs['ECALTPPh2Component'] = UpgradeWorkflow_ECalComponent(
2158 suffix = '_ecalTPPh2Component',
2159 offset = 0.634,
2160 ecalTPPh2 = 'phase2_ecal_devel,phase2_ecalTP_devel',
2161 ecalMod = 'ecal_component',
2162 )
2163
2164 upgradeWFs['ECALTPPh2ComponentFSW'] = UpgradeWorkflow_ECalComponent(
2165 suffix = '_ecalTPPh2ComponentFSW',
2166 offset = 0.635,
2167 ecalTPPh2 = 'phase2_ecal_devel,phase2_ecalTP_devel',
2168 ecalMod = 'ecal_component_finely_sampled_waveforms',
2169 )
2170
2171 class UpgradeWorkflow_0T(UpgradeWorkflow):
2172 def setup_(self, step, stepName, stepDict, k, properties):
2173 myGT=stepDict[step][k]['--conditions']
2174 myGT+="_0T"
2175 stepDict[stepName][k] = merge([{'-n':'1','--magField':'0T','--conditions':myGT}, stepDict[step][k]])
2176 def setupPU_(self, step, stepName, stepDict, k, properties):
2177
2178 stepDict[stepName][k] = merge([{'-n':'1'}, stepDict[step][k]])
2179 def condition(self, fragment, stepList, key, hasHarvest):
2180 return (fragment=="TTbar_13" or fragment=="TTbar_14TeV") and ('2017' in key or '2018' in key or '2021' in key) and ('FS' not in key)
2181 upgradeWFs['0T'] = UpgradeWorkflow_0T(
2182 steps = [
2183 'GenSim',
2184 'Digi',
2185 'Reco',
2186 'RecoFakeHLT',
2187 'HARVEST',
2188 'HARVESTFakeHLT',
2189 'RecoNano',
2190 'RecoNanoFakeHLT',
2191 'HARVESTNano',
2192 'HARVESTNanoFakeHLT',
2193 'ALCA',
2194 ],
2195 PU = [
2196 'Digi',
2197 'Reco',
2198 'RecoFakeHLT',
2199 'HARVEST',
2200 'HARVESTFakeHLT',
2201 'RecoNano',
2202 'RecoNanoFakeHLT',
2203 'HARVESTNano',
2204 'HARVESTNanoFakeHLT',
2205 ],
2206 suffix = '_0T',
2207 offset = 0.24,
2208 )
2209
2210 class UpgradeWorkflow_ParkingBPH(UpgradeWorkflow):
2211 def setup_(self, step, stepName, stepDict, k, properties):
2212 if 'Reco' in step and 'Run2_2018' in stepDict[step][k]['--era']:
2213 stepDict[stepName][k] = merge([{'--era': 'Run2_2018,bParking'}, stepDict[step][k]])
2214 def condition(self, fragment, stepList, key, hasHarvest):
2215 return fragment=="TTbar_13" and '2018' in key
2216 upgradeWFs['ParkingBPH'] = UpgradeWorkflow_ParkingBPH(
2217 steps = [
2218 'Reco',
2219 'RecoFakeHLT',
2220 ],
2221 PU = [],
2222 suffix = '_ParkingBPH',
2223 offset = 0.8,
2224 )
2225
2226
2227 class UpgradeWorkflow_HeavyFlavor(UpgradeWorkflow):
2228 def setup_(self, step, stepName, stepDict, k, properties):
2229 self.__frags = ["B0","Psi2S","Bu","Bd","Xi","Bs"]
2230 thisStep = stepDict[step][k]["-s"]
2231 if "Reco" in step:
2232 if "DQM:" in thisStep:
2233 stepDict[stepName][k] = merge([{'-s': thisStep.replace("DQM:","DQM:@heavyFlavor+")}, stepDict[step][k]])
2234 elif "DQM" in thisStep:
2235 stepDict[stepName][k] = merge([{'-s': thisStep.replace("DQM","DQM:@heavyFlavor")}, stepDict[step][k]])
2236 else:
2237 stepDict[stepName][k] = merge([{'-s': thisStep + ",DQM:@heavyFlavor"}, stepDict[step][k]])
2238
2239 def condition(self, fragment, stepList, key, hasHarvest):
2240 return any(frag in fragment for frag in self.__frags)
2241
2242 upgradeWFs['HeavyFlavor'] = UpgradeWorkflow_HeavyFlavor(
2243 steps = [
2244 'Reco',
2245 'RecoFakeHLT',
2246 'RecoNano',
2247 'RecoNanoFakeHLT',
2248 ],
2249 PU = [],
2250 suffix = '_HeavyFlavor',
2251 offset = 0.81,
2252 )
2253
2254
2255 class UpgradeWorkflow_JMENano(UpgradeWorkflow):
2256 def setup_(self, step, stepName, stepDict, k, properties):
2257 if 'Nano' in step:
2258 stepDict[stepName][k] = merge([{'--customise': 'PhysicsTools/NanoAOD/custom_jme_cff.PrepJMECustomNanoAOD'}, stepDict[step][k]])
2259 def condition(self, fragment, stepList, key, hasHarvest):
2260 return (fragment=="TTbar_13" or fragment=="TTbar_14TeV") and ('2017' in key or '2018' in key or '2021' in key) and ('FS' not in key)
2261 upgradeWFs['JMENano'] = UpgradeWorkflow_JMENano(
2262 steps = [
2263 'Nano',
2264 'RecoNano',
2265 'RecoNanoFakeHLT',
2266 ],
2267 PU = [],
2268 suffix = '_JMENano',
2269 offset = 0.15,
2270 )
2271
2272
2273
2274 class UpgradeWorkflowAging(UpgradeWorkflow):
2275 def setup_(self, step, stepName, stepDict, k, properties):
2276 if 'Digi' in step or 'Reco' in step:
2277 stepDict[stepName][k] = merge([{'--customise': 'SLHCUpgradeSimulations/Configuration/aging.customise_aging_'+self.lumi}, stepDict[step][k]])
2278 def condition(self, fragment, stepList, key, hasHarvest):
2279 return '2026' in key
2280
2281 upgradeWFs['Aging1000'] = UpgradeWorkflowAging(
2282 steps = [
2283 'Digi',
2284 'DigiTrigger',
2285 'RecoLocal',
2286 'Reco',
2287 'RecoFakeHLT',
2288 'RecoGlobal',
2289 ],
2290 PU = [
2291 'Digi',
2292 'DigiTrigger',
2293 'RecoLocal',
2294 'Reco',
2295 'RecoFakeHLT',
2296 'RecoGlobal',
2297 ],
2298 suffix = 'Aging1000',
2299 offset = 0.101,
2300 )
2301 upgradeWFs['Aging1000'].lumi = '1000'
2302 upgradeWFs['Aging3000'] = deepcopy(upgradeWFs['Aging1000'])
2303 upgradeWFs['Aging3000'].suffix = 'Aging3000'
2304 upgradeWFs['Aging3000'].offset = 0.103
2305 upgradeWFs['Aging3000'].lumi = '3000'
2306
2307
2308
2309
2310
2311 class UpgradeWorkflow_OTInefficiency(UpgradeWorkflow):
2312 def setup_(self, step, stepName, stepDict, k, properties):
2313 if 'Digi' in step:
2314 stepDict[stepName][k] = merge([{'--customise': 'SimTracker/SiPhase2Digitizer/customizeForOTInefficiency.customizeSiPhase2OTInefficiency'+self.percent+'Percent'}, stepDict[step][k]])
2315 def condition(self, fragment, stepList, key, hasHarvest):
2316 return fragment=="TTbar_14TeV" and '2026' in key
2317
2318 upgradeWFs['OTInefficiency'] = UpgradeWorkflow_OTInefficiency(
2319 steps = [
2320 'Digi',
2321 'DigiTrigger',
2322 ],
2323 PU = [
2324 'Digi',
2325 'DigiTrigger',
2326 ],
2327 suffix = '_OTInefficiency',
2328 offset = 0.111,
2329 )
2330 upgradeWFs['OTInefficiency'].percent = 'Zero'
2331
2332
2333 upgradeWFs['OTInefficiency1PC'] = deepcopy(upgradeWFs['OTInefficiency'])
2334 upgradeWFs['OTInefficiency1PC'].suffix = '_OTInefficiency1PC'
2335 upgradeWFs['OTInefficiency1PC'].offset = 0.112
2336 upgradeWFs['OTInefficiency1PC'].percent = 'One'
2337
2338
2339 upgradeWFs['OTInefficiency5PC'] = deepcopy(upgradeWFs['OTInefficiency'])
2340 upgradeWFs['OTInefficiency5PC'].suffix = '_OTInefficiency5PC'
2341 upgradeWFs['OTInefficiency5PC'].offset = 0.113
2342 upgradeWFs['OTInefficiency5PC'].percent = 'Five'
2343
2344
2345 upgradeWFs['OTInefficiency10PC'] = deepcopy(upgradeWFs['OTInefficiency'])
2346 upgradeWFs['OTInefficiency10PC'].suffix = '_OTInefficiency10PC'
2347 upgradeWFs['OTInefficiency10PC'].offset = 0.114
2348 upgradeWFs['OTInefficiency10PC'].percent = 'Ten'
2349
2350
2351
2352
2353 class UpgradeWorkflow_ITSignalShape(UpgradeWorkflow):
2354 def setup_(self, step, stepName, stepDict, k, properties):
2355 if 'Digi' in step:
2356 stepDict[stepName][k] = merge([{'--customise': 'SimTracker/SiPhase2Digitizer/customizeForPhase2TrackerSignalShape.customizeSiPhase2ITSignalShape'}, stepDict[step][k]])
2357 def condition(self, fragment, stepList, key, hasHarvest):
2358 return '2026' in key
2359
2360 upgradeWFs['ITSignalShape'] = UpgradeWorkflow_ITSignalShape(
2361 steps = [
2362 'Digi',
2363 'DigiTrigger',
2364 ],
2365 PU = [
2366 'Digi',
2367 'DigiTrigger',
2368 ],
2369 suffix = '_ITSignalShape',
2370 offset = 0.141
2371 )
2372
2373
2374
2375
2376
2377
2378
2379 digiPremixLocalPileup = {
2380 "--filein": "file:step1.root",
2381 "--pileup_input": "file:step2.root"
2382 }
2383
2384
2385 class UpgradeWorkflowPremix(UpgradeWorkflow):
2386 def setup_(self, step, stepName, stepDict, k, properties):
2387
2388 stepDict[stepName][k] = merge([stepDict[step][k]])
2389 def setupPU_(self, step, stepName, stepDict, k, properties):
2390
2391 if "GenSim" in stepName:
2392 stepNamePmx = stepName.replace('GenSim','Premix')
2393 if not stepNamePmx in stepDict: stepDict[stepNamePmx] = {}
2394 stepDict[stepNamePmx][k] = merge([
2395 {
2396 '-s': 'GEN,SIM,DIGI:pdigi_valid',
2397 '--datatier': 'PREMIX',
2398 '--eventcontent': 'PREMIX',
2399 '--procModifiers': 'premix_stage1'
2400 },
2401 stepDict[stepName][k]
2402 ])
2403 if "ProdLike" in self.suffix:
2404 stepDict[stepNamePmx][k] = merge([{'-s': 'GEN,SIM,DIGI'},stepDict[stepNamePmx][k]])
2405
2406 elif "Digi" in step or "Reco" in step:
2407
2408 d = merge([stepDict[self.getStepName(step)][k]])
2409 if d is None: return
2410 if "Digi" in step:
2411 tmpsteps = []
2412 for s in d["-s"].split(","):
2413 if s == "DIGI" or "DIGI:" in s:
2414 tmpsteps.extend([s, "DATAMIX"])
2415 else:
2416 tmpsteps.append(s)
2417 d = merge([{"-s" : ",".join(tmpsteps),
2418 "--datamix" : "PreMix",
2419 "--procModifiers": "premix_stage2"},
2420 d])
2421
2422 if "_PMXS1S2" in self.suffix:
2423 d = merge([digiPremixLocalPileup, d])
2424 elif "Reco" in step:
2425 if "--procModifiers" in d:
2426 d["--procModifiers"] += ",premix_stage2"
2427 else:
2428 d["--procModifiers"] = "premix_stage2"
2429 stepDict[stepName][k] = d
2430
2431 elif "Nano"==step:
2432
2433 d = merge([stepDict[self.getStepName(step)][k]])
2434 if "--filein" in d:
2435 filein = d["--filein"]
2436 m = re.search("step(?P<ind>\d+)_", filein)
2437 if m:
2438 d["--filein"] = filein.replace(m.group(), "step%d_"%(int(m.group("ind"))+1))
2439 stepDict[stepName][k] = d
2440
2441 stepDict[self.getStepName(step)][k] = merge([d])
2442 def condition(self, fragment, stepList, key, hasHarvest):
2443 if not 'PU' in key:
2444 return False
2445 if not any(y in key for y in ['2021', '2023', '2024', '2026']):
2446 return False
2447 if self.suffix.endswith("S1"):
2448 return "NuGun" in fragment
2449 return True
2450 def workflow_(self, workflows, num, fragment, stepList, key):
2451 fragmentTmp = fragment
2452 if self.suffix.endswith("S1"):
2453 fragmentTmp = 'PREMIXUP' + key[2:].replace("PU", "").replace("Design", "") + '_PU25'
2454 super(UpgradeWorkflowPremix,self).workflow_(workflows, num, fragmentTmp, stepList, key)
2455
2456 upgradeWFs['PMXS1'] = UpgradeWorkflowPremix(
2457 steps = [
2458 ],
2459 PU = [
2460 'GenSim',
2461 'GenSimHLBeamSpot',
2462 'GenSimHLBeamSpot14',
2463 ],
2464 suffix = '_PMXS1',
2465 offset = 0.97,
2466 )
2467
2468 upgradeWFs['PMXS2'] = UpgradeWorkflowPremix(
2469 steps = [],
2470 PU = [
2471 'Digi',
2472 'DigiTrigger',
2473 'RecoLocal',
2474 'Reco',
2475 'RecoFakeHLT',
2476 'RecoGlobal',
2477 'RecoNano',
2478 'RecoNanoFakeHLT',
2479 'Nano',
2480 ],
2481 suffix = '_PMXS2',
2482 offset = 0.98,
2483 )
2484
2485 upgradeWFs['PMXS1S2'] = UpgradeWorkflowPremix(
2486 steps = [],
2487 PU = [
2488 'GenSim',
2489 'GenSimHLBeamSpot',
2490 'GenSimHLBeamSpot14',
2491 'Digi',
2492 'DigiTrigger',
2493 'RecoLocal',
2494 'Reco',
2495 'RecoFakeHLT',
2496 'RecoGlobal',
2497 'RecoNano',
2498 'RecoNanoFakeHLT',
2499 'Nano',
2500 ],
2501 suffix = '_PMXS1S2',
2502 offset = 0.99,
2503 )
2504
2505 class UpgradeWorkflowAdjustPU(UpgradeWorkflowPremix):
2506 def setupPU_(self, step, stepName, stepDict, k, properties):
2507
2508 if '--pileup' in stepDict[stepName][k]:
2509 stepDict[stepName][k]['--pileup'] = 'AVE_50_BX_25ns_m3p3'
2510 super(UpgradeWorkflowAdjustPU,self).setupPU_(step, stepName, stepDict, k, properties)
2511 def condition(self, fragment, stepList, key, hasHarvest):
2512
2513 return super(UpgradeWorkflowAdjustPU,self).condition(fragment, stepList, key, hasHarvest) and '2026' in key
2514 upgradeWFs['PMXS1S2PR'] = UpgradeWorkflowAdjustPU(
2515 steps = [],
2516 PU = [
2517 'GenSim',
2518 'GenSimHLBeamSpot',
2519 'GenSimHLBeamSpot14',
2520 'Digi',
2521 'DigiTrigger',
2522 'RecoLocal',
2523 'Reco',
2524 'RecoFakeHLT',
2525 'RecoGlobal',
2526 'Nano',
2527 'HARVEST',
2528 'HARVESTFakeHLT',
2529 'HARVESTGlobal',
2530 ],
2531 suffix = '_PMXS1S2PR',
2532 offset = 0.999,
2533 )
2534
2535 class UpgradeWorkflowPremixProdLike(UpgradeWorkflowPremix,UpgradeWorkflow_ProdLike):
2536 def setup_(self, step, stepName, stepDict, k, properties):
2537
2538 UpgradeWorkflowPremix.setup_(self, step, stepName, stepDict, k, properties)
2539 UpgradeWorkflow_ProdLike.setup_(self, step, stepName, stepDict, k, properties)
2540
2541 if 'Digi' in step:
2542 d = merge([stepDict[self.getStepName(step)][k]])
2543 tmpsteps = []
2544 for s in d["-s"].split(","):
2545 if "DIGI:pdigi_valid" in s:
2546 tmpsteps.append("DIGI")
2547 else:
2548 tmpsteps.append(s)
2549 d = merge([{"-s" : ",".join(tmpsteps),
2550 "--eventcontent": "PREMIXRAW"},
2551 d])
2552 stepDict[stepName][k] = d
2553 if 'Nano'==step:
2554 stepDict[stepName][k] = merge([{'--filein':'file:step5.root','-s':'NANO','--datatier':'NANOAODSIM','--eventcontent':'NANOEDMAODSIM'}, stepDict[step][k]])
2555 def condition(self, fragment, stepList, key, hasHarvest):
2556
2557 return UpgradeWorkflowPremix.condition(self, fragment, stepList, key, hasHarvest) and UpgradeWorkflow_ProdLike.condition(self, fragment, stepList, key, hasHarvest)
2558
2559 upgradeWFs['PMXS2ProdLike'] = UpgradeWorkflowPremixProdLike(
2560 steps = [],
2561 PU = [
2562 'Digi',
2563 'DigiTrigger',
2564 'RecoLocal',
2565 'Reco',
2566 'RecoFakeHLT',
2567 'RecoGlobal',
2568 'RecoNano',
2569 'RecoNanoFakeHLT',
2570 'Nano',
2571 'HARVEST',
2572 'HARVESTFakeHLT',
2573 'HARVESTGlobal',
2574 'HARVESTNano',
2575 'HARVESTNanoFakeHLT',
2576 'MiniAOD',
2577 'ALCA',
2578 ],
2579 suffix = '_PMXS2ProdLike',
2580 offset = 0.9821,
2581 )
2582
2583 upgradeWFs['PMXS1S2ProdLike'] = UpgradeWorkflowPremixProdLike(
2584 steps = [],
2585 PU = [
2586 'GenSim',
2587 'GenSimHLBeamSpot',
2588 'GenSimHLBeamSpot14',
2589 'Digi',
2590 'DigiTrigger',
2591 'RecoLocal',
2592 'Reco',
2593 'RecoFakeHLT',
2594 'RecoGlobal',
2595 'RecoNano',
2596 'RecoNanoFakeHLT',
2597 'Nano',
2598 'HARVEST',
2599 'HARVESTFakeHLT',
2600 'HARVESTGlobal',
2601 'HARVESTNano',
2602 'HARVESTNanoFakeHLT',
2603 'MiniAOD',
2604 'ALCA',
2605 ],
2606 suffix = '_PMXS1S2ProdLike',
2607 offset = 0.9921,
2608 )
2609
2610 class UpgradeWorkflow_Run3FStrackingOnly(UpgradeWorkflow):
2611 def setup_(self, step, stepName, stepDict, k, properties):
2612 if 'HARVESTFastRun3' in step:
2613 stepDict[stepName][k] = merge([{'-s':'HARVESTING:@trackingOnlyValidation+@trackingOnlyDQM',
2614 '--fast':'',
2615 '--era':'Run3_FastSim',
2616 '--filein':'file:step1_inDQM.root'}, stepDict[step][k]])
2617 else:
2618 stepDict[stepName][k] = merge([stepDict[step][k]])
2619 def condition(self, fragment, stepList, key, hasHarvest):
2620 return ('2021FS' in key or '2023FS' in key)
2621 upgradeWFs['Run3FStrackingOnly'] = UpgradeWorkflow_Run3FStrackingOnly(
2622 steps = [
2623 'Gen',
2624 'FastSimRun3',
2625 'HARVESTFastRun3'
2626 ],
2627 PU = [
2628 'FastSimRun3',
2629 'HARVESTFastRun3'
2630 ],
2631 suffix = '_Run3FSTrackingOnly',
2632 offset = 0.302,
2633 )
2634
2635 class UpgradeWorkflow_Run3FSMBMixing(UpgradeWorkflow):
2636 def setup_(self, step, stepName, stepDict, k, properties):
2637 if 'Gen' in step and 'GenOnly' not in step:
2638 stepDict[stepName][k] = merge([{'-s':'GEN,SIM,RECOBEFMIX',
2639 '--fast':'',
2640 '--era':'Run3_FastSim',
2641 '--eventcontent':'FASTPU',
2642 '--datatier':'GEN-SIM-RECO',
2643 '--relval':'27000,3000'}, stepDict[step][k]])
2644 else:
2645 stepDict[stepName][k] = None
2646 def condition(self, fragment, stepList, key, hasHarvest):
2647 return ('2021FS' in key or '2023FS' in key) and fragment=="MinBias_14TeV"
2648 upgradeWFs['Run3FSMBMixing'] = UpgradeWorkflow_Run3FSMBMixing(
2649 steps = [
2650 'Gen',
2651 'FastSimRun3',
2652 'HARVESTFastRun3'
2653 ],
2654 PU = [],
2655 suffix = '_Run3FSMBMixing',
2656 offset = 0.303,
2657 )
2658
2659
2660 class UpgradeWorkflow_DD4hep(UpgradeWorkflow):
2661 def setup_(self, step, stepName, stepDict, k, properties):
2662 if 'Run3' in stepDict[step][k]['--era'] and 'Fast' not in stepDict[step][k]['--era']:
2663 if '2023' in stepDict[step][k]['--conditions']:
2664 stepDict[stepName][k] = merge([{'--geometry': 'DD4hepExtended2023'}, stepDict[step][k]])
2665 else:
2666 stepDict[stepName][k] = merge([{'--geometry': 'DD4hepExtended2021'}, stepDict[step][k]])
2667 elif 'Phase2' in stepDict[step][k]['--era']:
2668 dd4hepGeom="DD4hep"
2669 dd4hepGeom+=stepDict[step][k]['--geometry']
2670 stepDict[stepName][k] = merge([{'--geometry' : dd4hepGeom, '--procModifiers': 'dd4hep'}, stepDict[step][k]])
2671 def condition(self, fragment, stepList, key, hasHarvest):
2672 return ('2021' in key or '2023' in key or '2026' in key) and ('FS' not in key)
2673 upgradeWFs['DD4hep'] = UpgradeWorkflow_DD4hep(
2674 steps = [
2675 'GenSim',
2676 'GenSimHLBeamSpot',
2677 'GenSimHLBeamSpot14',
2678 'Digi',
2679 'DigiTrigger',
2680 'Reco',
2681 'RecoFakeHLT',
2682 'RecoGlobal',
2683 'RecoNano',
2684 'RecoNanoFakeHLT',
2685 'HARVEST',
2686 'HARVESTFakeHLT',
2687 'HARVESTGlobal',
2688 'HARVESTNano',
2689 'HARVESTNanoFakeHLT',
2690 'ALCA',
2691 ],
2692 PU = [],
2693 suffix = '_DD4hep',
2694 offset = 0.911,
2695 )
2696 upgradeWFs['DD4hep'].allowReuse = False
2697
2698
2699
2700 class UpgradeWorkflow_DD4hepDB(UpgradeWorkflow):
2701 def setup_(self, step, stepName, stepDict, k, properties):
2702 if 'Run3' in stepDict[step][k]['--era'] and 'Fast' not in stepDict[step][k]['--era']:
2703 stepDict[stepName][k] = merge([{'--conditions': 'auto:phase1_2022_realistic', '--geometry': 'DB:Extended'}, stepDict[step][k]])
2704 def condition(self, fragment, stepList, key, hasHarvest):
2705 return '2021' in key and 'FS' not in key
2706 upgradeWFs['DD4hepDB'] = UpgradeWorkflow_DD4hepDB(
2707 steps = [
2708 'GenSim',
2709 'GenSimHLBeamSpot',
2710 'GenSimHLBeamSpot14',
2711 'Digi',
2712 'DigiTrigger',
2713 'Reco',
2714 'RecoFakeHLT',
2715 'RecoGlobal',
2716 'RecoNano',
2717 'RecoNanoFakeHLT',
2718 'HARVEST',
2719 'HARVESTFakeHLT',
2720 'HARVESTGlobal',
2721 'HARVESTNano',
2722 'HARVESTNanoFakeHLT',
2723 'ALCA',
2724 ],
2725 PU = [],
2726 suffix = '_DD4hepDB',
2727 offset = 0.912,
2728 )
2729 upgradeWFs['DD4hepDB'].allowReuse = False
2730
2731 class UpgradeWorkflow_DDDDB(UpgradeWorkflow):
2732 def setup_(self, step, stepName, stepDict, k, properties):
2733 the_era = stepDict[step][k]['--era']
2734 if 'Run3' in the_era and '2023' not in the_era and '2024' not in the_era and 'Fast' not in the_era and "Pb" not in the_era:
2735
2736 tmp_eras = the_era.split(',')
2737 tmp_eras[tmp_eras.index("Run3")] = 'Run3_DDD'
2738 tmp_eras = ','.join(tmp_eras)
2739 stepDict[stepName][k] = merge([{'--conditions': 'auto:phase1_2022_realistic_ddd', '--geometry': 'DB:Extended', '--era': tmp_eras}, stepDict[step][k]])
2740 def condition(self, fragment, stepList, key, hasHarvest):
2741 return '2021' in key and 'FS' not in key
2742 upgradeWFs['DDDDB'] = UpgradeWorkflow_DDDDB(
2743 steps = [
2744 'GenSim',
2745 'GenSimHLBeamSpot',
2746 'GenSimHLBeamSpot14',
2747 'Digi',
2748 'DigiTrigger',
2749 'Reco',
2750 'RecoFakeHLT',
2751 'RecoGlobal',
2752 'RecoNano',
2753 'RecoNanoFakeHLT',
2754 'HARVEST',
2755 'HARVESTFakeHLT',
2756 'HARVESTGlobal',
2757 'HARVESTNano',
2758 'HARVESTNanoFakeHLT',
2759 'ALCA',
2760 ],
2761 PU = [],
2762 suffix = '_DDDDB',
2763 offset = 0.914,
2764 )
2765 upgradeWFs['DDDDB'].allowReuse = False
2766
2767 class UpgradeWorkflow_SonicTriton(UpgradeWorkflow):
2768 def setup_(self, step, stepName, stepDict, k, properties):
2769 stepDict[stepName][k] = merge([{'--procModifiers': 'allSonicTriton'}, stepDict[step][k]])
2770 def condition(self, fragment, stepList, key, hasHarvest):
2771 return ((fragment=='TTbar_13' or fragment=='TTbar_14TeV') and '2021' in key) \
2772 or (fragment=='TTbar_14TeV' and '2026' in key)
2773 upgradeWFs['SonicTriton'] = UpgradeWorkflow_SonicTriton(
2774 steps = [
2775 'GenSim',
2776 'GenSimHLBeamSpot',
2777 'GenSimHLBeamSpot14',
2778 'Digi',
2779 'DigiTrigger',
2780 'Reco',
2781 'RecoFakeHLT',
2782 'RecoGlobal',
2783 'RecoNano',
2784 'RecoNanoFakeHLT',
2785 'HARVEST',
2786 'HARVESTFakeHLT',
2787 'HARVESTGlobal',
2788 'HARVESTNano',
2789 'HARVESTNanoFakeHLT',
2790 'ALCA',
2791 ],
2792 PU = [
2793 'GenSim',
2794 'GenSimHLBeamSpot',
2795 'GenSimHLBeamSpot14',
2796 'Digi',
2797 'DigiTrigger',
2798 'Reco',
2799 'RecoFakeHLT',
2800 'RecoGlobal',
2801 'RecoNano',
2802 'RecoNanoFakeHLT',
2803 'HARVEST',
2804 'HARVESTFakeHLT',
2805 'HARVESTGlobal',
2806 'HARVESTNano',
2807 'HARVESTNanoFakeHLT',
2808 'ALCA',
2809 ],
2810 suffix = '_SonicTriton',
2811 offset = 0.9001,
2812 )
2813
2814
2815 offsets = [specialWF.offset for specialType,specialWF in upgradeWFs.items()]
2816 seen = set()
2817 dups = set(x for x in offsets if x in seen or seen.add(x))
2818 if len(dups)>0:
2819 raise ValueError("Duplicate special workflow offsets not allowed: "+','.join([str(x) for x in dups]))
2820
2821 upgradeProperties = {}
2822
2823 upgradeProperties[2017] = {
2824 '2017' : {
2825 'Geom' : 'DB:Extended',
2826 'GT' : 'auto:phase1_2017_realistic',
2827 'HLTmenu': '@relval2017',
2828 'Era' : 'Run2_2017',
2829 'ScenToRun' : ['GenSim','Digi','RecoFakeHLT','HARVESTFakeHLT','ALCA','Nano'],
2830 },
2831 '2017Design' : {
2832 'Geom' : 'DB:Extended',
2833 'GT' : 'auto:phase1_2017_design',
2834 'HLTmenu': '@relval2017',
2835 'Era' : 'Run2_2017',
2836 'BeamSpot': 'DBdesign',
2837 'ScenToRun' : ['GenSim','Digi','RecoFakeHLT','HARVESTFakeHLT'],
2838 },
2839 '2018' : {
2840 'Geom' : 'DB:Extended',
2841 'GT' : 'auto:phase1_2018_realistic',
2842 'HLTmenu': '@relval2018',
2843 'Era' : 'Run2_2018',
2844 'BeamSpot': 'DBrealistic',
2845 'ScenToRun' : ['GenSim','Digi','RecoFakeHLT','HARVESTFakeHLT','ALCA','Nano'],
2846 },
2847 '2018Design' : {
2848 'Geom' : 'DB:Extended',
2849 'GT' : 'auto:phase1_2018_design',
2850 'HLTmenu': '@relval2018',
2851 'Era' : 'Run2_2018',
2852 'BeamSpot': 'DBdesign',
2853 'ScenToRun' : ['GenSim','Digi','RecoFakeHLT','HARVESTFakeHLT'],
2854 },
2855 '2021' : {
2856 'Geom' : 'DB:Extended',
2857 'GT' : 'auto:phase1_2022_realistic',
2858 'HLTmenu': '@relval2022',
2859 'Era' : 'Run3',
2860 'BeamSpot': 'DBrealistic',
2861 'ScenToRun' : ['GenSim','Digi','RecoNanoFakeHLT','HARVESTNanoFakeHLT','ALCA'],
2862 },
2863 '2021Design' : {
2864 'Geom' : 'DB:Extended',
2865 'GT' : 'auto:phase1_2022_design',
2866 'HLTmenu': '@relval2022',
2867 'Era' : 'Run3',
2868 'BeamSpot': 'DBdesign',
2869 'ScenToRun' : ['GenSim','Digi','RecoNanoFakeHLT','HARVESTNanoFakeHLT'],
2870 },
2871 '2023' : {
2872 'Geom' : 'DB:Extended',
2873 'GT' : 'auto:phase1_2023_realistic',
2874 'HLTmenu': '@relval2023',
2875 'Era' : 'Run3_2023',
2876 'BeamSpot': 'DBrealistic',
2877 'ScenToRun' : ['GenSim','Digi','RecoNanoFakeHLT','HARVESTNanoFakeHLT','ALCA'],
2878 },
2879 '2024' : {
2880 'Geom' : 'DB:Extended',
2881 'GT' : 'auto:phase1_2024_realistic',
2882 'HLTmenu': '@relval2024',
2883 'Era' : 'Run3_2024',
2884 'BeamSpot': 'DBrealistic',
2885 'ScenToRun' : ['GenSim','Digi','RecoNano','HARVESTNano','ALCA'],
2886 },
2887 '2024HLTOnDigi' : {
2888 'Geom' : 'DB:Extended',
2889 'GT' : 'auto:phase1_2024_realistic',
2890 'HLTmenu': '@relval2024',
2891 'Era' : 'Run3',
2892 'BeamSpot': 'DBrealistic',
2893 'ScenToRun' : ['GenSim','DigiNoHLT','HLTOnly','RecoNano','HARVESTNano','ALCA'],
2894 },
2895 '2021FS' : {
2896 'Geom' : 'DB:Extended',
2897 'GT' : 'auto:phase1_2022_realistic',
2898 'HLTmenu': '@relval2022',
2899 'Era' : 'Run3_FastSim',
2900 'BeamSpot': 'DBrealistic',
2901 'ScenToRun' : ['Gen','FastSimRun3','HARVESTFastRun3'],
2902 },
2903 '2021postEE' : {
2904 'Geom' : 'DB:Extended',
2905 'GT' : 'auto:phase1_2022_realistic_postEE',
2906 'HLTmenu': '@relval2022',
2907 'Era' : 'Run3',
2908 'BeamSpot': 'DBrealistic',
2909 'ScenToRun' : ['GenSim','Digi','RecoNanoFakeHLT','HARVESTNanoFakeHLT','ALCA'],
2910 },
2911 '2023FS' : {
2912 'Geom' : 'DB:Extended',
2913 'GT' : 'auto:phase1_2023_realistic',
2914 'HLTmenu': '@relval2023',
2915 'Era' : 'Run3_2023_FastSim',
2916 'BeamSpot': 'DBrealistic',
2917 'ScenToRun' : ['Gen','FastSimRun3','HARVESTFastRun3'],
2918 },
2919 '2022HI' : {
2920 'Geom' : 'DB:Extended',
2921 'GT':'auto:phase1_2022_realistic_hi',
2922 'HLTmenu': '@fake2',
2923 'Era':'Run3_pp_on_PbPb',
2924 'BeamSpot': 'DBrealistic',
2925 'ScenToRun' : ['GenSim','Digi','RecoNano','HARVESTNano','ALCA'],
2926 },
2927 '2022HIRP' : {
2928 'Geom' : 'DB:Extended',
2929 'GT':'auto:phase1_2022_realistic_hi',
2930 'HLTmenu': '@fake2',
2931 'Era':'Run3_pp_on_PbPb_approxSiStripClusters',
2932 'BeamSpot': 'DBrealistic',
2933 'ScenToRun' : ['GenSim','Digi','RecoNano','HARVESTNano','ALCA'],
2934 },
2935 '2023HI' : {
2936 'Geom' : 'DB:Extended',
2937 'GT':'auto:phase1_2023_realistic_hi',
2938 'HLTmenu': '@fake2',
2939 'Era':'Run3_pp_on_PbPb',
2940 'BeamSpot': 'DBrealistic',
2941 'ScenToRun' : ['GenSim','Digi','RecoNano','HARVESTNano','ALCA'],
2942 },
2943 '2023HIRP' : {
2944 'Geom' : 'DB:Extended',
2945 'GT':'auto:phase1_2023_realistic_hi',
2946 'HLTmenu': '@fake2',
2947 'Era':'Run3_pp_on_PbPb_approxSiStripClusters',
2948 'BeamSpot': 'DBrealistic',
2949 'ScenToRun' : ['GenSim','Digi','RecoNano','HARVESTNano','ALCA'],
2950 },
2951 '2024GenOnly' : {
2952 'Geom' : 'DB:Extended',
2953 'GT' : 'auto:phase1_2024_realistic',
2954 'Era' : 'Run3',
2955 'BeamSpot': 'DBrealistic',
2956 'ScenToRun' : ['Gen'],
2957 },
2958 '2024SimOnGen' : {
2959 'Geom' : 'DB:Extended',
2960 'GT' : 'auto:phase1_2024_realistic',
2961 'HLTmenu': '@relval2024',
2962 'Era' : 'Run3',
2963 'BeamSpot': 'DBrealistic',
2964 'ScenToRun' : ['Gen','Sim','Digi','RecoNano','HARVESTNano','ALCA'],
2965 },
2966 }
2967
2968
2969 for key in list(upgradeProperties[2017].keys()):
2970 upgradeProperties[2017][key+'PU'] = deepcopy(upgradeProperties[2017][key])
2971 if 'FS' not in key:
2972
2973 scenToRun = upgradeProperties[2017][key+'PU']['ScenToRun']
2974 for idx,val in enumerate(scenToRun):
2975
2976 scenToRun[idx] += 'PU'*(val.startswith('Digi') or val.startswith('Reco') or val.startswith('HARVEST'))
2977
2978 upgradeProperties[2017][key+'PU']['ScenToRun'] = [foo for foo in scenToRun if foo != 'ALCA']
2979 else:
2980 upgradeProperties[2017][key+'PU']['ScenToRun'] = ['Gen','FastSimRun3PU','HARVESTFastRun3PU']
2981
2982 upgradeProperties[2026] = {
2983 '2026D86' : {
2984 'Geom' : 'Extended2026D86',
2985 'HLTmenu': '@fake2',
2986 'GT' : 'auto:phase2_realistic_T21',
2987 'Era' : 'Phase2C17I13M9',
2988 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'],
2989 },
2990 '2026D88' : {
2991 'Geom' : 'Extended2026D88',
2992 'HLTmenu': '@relval2026',
2993 'GT' : 'auto:phase2_realistic_T21',
2994 'Era' : 'Phase2C17I13M9',
2995 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'],
2996 },
2997 '2026D91' : {
2998 'Geom' : 'Extended2026D91',
2999 'HLTmenu': '@fake2',
3000 'GT' : 'auto:phase2_realistic_T30',
3001 'Era' : 'Phase2C17I13M9',
3002 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'],
3003 },
3004 '2026D92' : {
3005 'Geom' : 'Extended2026D92',
3006 'HLTmenu': '@fake2',
3007 'GT' : 'auto:phase2_realistic_T21',
3008 'Era' : 'Phase2C17I13M9',
3009 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'],
3010 },
3011 '2026D93' : {
3012 'Geom' : 'Extended2026D93',
3013 'HLTmenu': '@fake2',
3014 'GT' : 'auto:phase2_realistic_T21',
3015 'Era' : 'Phase2C17I13M9',
3016 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'],
3017 },
3018 '2026D94' : {
3019 'Geom' : 'Extended2026D94',
3020 'HLTmenu': '@fake2',
3021 'GT' : 'auto:phase2_realistic_T21',
3022 'Era' : 'Phase2C20I13M9',
3023 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'],
3024 },
3025 '2026D95' : {
3026 'Geom' : 'Extended2026D95',
3027 'HLTmenu': '@relval2026',
3028 'GT' : 'auto:phase2_realistic_T21',
3029 'Era' : 'Phase2C17I13M9',
3030 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'],
3031 },
3032 '2026D96' : {
3033 'Geom' : 'Extended2026D96',
3034 'HLTmenu': '@fake2',
3035 'GT' : 'auto:phase2_realistic_T21',
3036 'Era' : 'Phase2C17I13M9',
3037 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'],
3038 },
3039 '2026D97' : {
3040 'Geom' : 'Extended2026D97',
3041 'HLTmenu': '@fake2',
3042 'GT' : 'auto:phase2_realistic_T25',
3043 'Era' : 'Phase2C17I13M9',
3044 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'],
3045 },
3046 '2026D98' : {
3047 'Geom' : 'Extended2026D98',
3048 'HLTmenu': '@relval2026',
3049 'GT' : 'auto:phase2_realistic_T25',
3050 'Era' : 'Phase2C17I13M9',
3051 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'],
3052 },
3053 '2026D99' : {
3054 'Geom' : 'Extended2026D99',
3055 'HLTmenu': '@relval2026',
3056 'GT' : 'auto:phase2_realistic_T25',
3057 'Era' : 'Phase2C17I13M9',
3058 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'],
3059 },
3060 '2026D100' : {
3061 'Geom' : 'Extended2026D100',
3062 'HLTmenu': '@relval2026',
3063 'GT' : 'auto:phase2_realistic_T25',
3064 'Era' : 'Phase2C17I13M9',
3065 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'],
3066 },
3067 '2026D101' : {
3068 'Geom' : 'Extended2026D101',
3069 'HLTmenu': '@relval2026',
3070 'GT' : 'auto:phase2_realistic_T25',
3071 'Era' : 'Phase2C17I13M9',
3072 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'],
3073 },
3074 '2026D102' : {
3075 'Geom' : 'Extended2026D102',
3076 'HLTmenu': '@relval2026',
3077 'GT' : 'auto:phase2_realistic_T33',
3078 'Era' : 'Phase2C17I13M9',
3079 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'],
3080 },
3081 '2026D103' : {
3082 'Geom' : 'Extended2026D103',
3083 'HLTmenu': '@relval2026',
3084 'GT' : 'auto:phase2_realistic_T25',
3085 'Era' : 'Phase2C17I13M9',
3086 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'],
3087 },
3088 '2026D104' : {
3089 'Geom' : 'Extended2026D104',
3090 'HLTmenu': '@relval2026',
3091 'GT' : 'auto:phase2_realistic_T33',
3092 'Era' : 'Phase2C22I13M9',
3093 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'],
3094 },
3095 '2026D105' : {
3096 'Geom' : 'Extended2026D105',
3097 'HLTmenu': '@relval2026',
3098 'GT' : 'auto:phase2_realistic_T33',
3099 'Era' : 'Phase2C17I13M9',
3100 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'],
3101 },
3102 '2026D106' : {
3103 'Geom' : 'Extended2026D106',
3104 'HLTmenu': '@relval2026',
3105 'GT' : 'auto:phase2_realistic_T33',
3106 'Era' : 'Phase2C22I13M9',
3107 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'],
3108 },
3109 '2026D107' : {
3110 'Geom' : 'Extended2026D107',
3111 'HLTmenu': '@relval2026',
3112 'GT' : 'auto:phase2_realistic_T25',
3113 'Era' : 'Phase2C17I13M9',
3114 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'],
3115 },
3116 '2026D108' : {
3117 'Geom' : 'Extended2026D108',
3118 'HLTmenu': '@relval2026',
3119 'GT' : 'auto:phase2_realistic_T33',
3120 'Era' : 'Phase2C17I13M9',
3121 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'],
3122 },
3123 '2026D109' : {
3124 'Geom' : 'Extended2026D109',
3125 'HLTmenu': '@relval2026',
3126 'GT' : 'auto:phase2_realistic_T33',
3127 'Era' : 'Phase2C22I13M9',
3128 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'],
3129 },
3130 '2026D110' : {
3131 'Geom' : 'Extended2026D110',
3132 'HLTmenu': '@relval2026',
3133 'GT' : 'auto:phase2_realistic_T33',
3134 'Era' : 'Phase2C17I13M9',
3135 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'],
3136 },
3137 '2026D111' : {
3138 'Geom' : 'Extended2026D111',
3139 'HLTmenu': '@relval2026',
3140 'GT' : 'auto:phase2_realistic_T36',
3141 'Era' : 'Phase2C22I13M9',
3142 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'],
3143 },
3144 '2026D112' : {
3145 'Geom' : 'Extended2026D112',
3146 'HLTmenu': '@relval2026',
3147 'GT' : 'auto:phase2_realistic_T37',
3148 'Era' : 'Phase2C22I13M9',
3149 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'],
3150 },
3151 '2026D113' : {
3152 'Geom' : 'Extended2026D113',
3153 'HLTmenu': '@relval2026',
3154 'GT' : 'auto:phase2_realistic_T38',
3155 'Era' : 'Phase2C22I13M9',
3156 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'],
3157 },
3158 '2026D114' : {
3159 'Geom' : 'Extended2026D114',
3160 'HLTmenu': '@relval2026',
3161 'GT' : 'auto:phase2_realistic_T33',
3162 'Era' : 'Phase2C17I13M9',
3163 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'],
3164 },
3165 '2026D110GenOnly' : {
3166 'Geom' : 'Extended2026D110',
3167 'Beamspot' : 'HLLHC',
3168 'GT' : 'auto:phase2_realistic_T33',
3169 'Era' : 'Phase2C17I13M9',
3170 'ScenToRun' : ['Gen'],
3171 },
3172 '2026D110SimOnGen' : {
3173 'Geom' : 'Extended2026D110',
3174 'HLTmenu': '@relval2026',
3175 'Beamspot' : 'HLLHC',
3176 'GT' : 'auto:phase2_realistic_T33',
3177 'Era' : 'Phase2C17I13M9',
3178 'ScenToRun' : ['Gen','Sim','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'],
3179 },
3180 '2026D115' : {
3181 'Geom' : 'Extended2026D115',
3182 'HLTmenu': '@relval2026',
3183 'GT' : 'auto:phase2_realistic_T33',
3184 'Era' : 'Phase2C20I13M9',
3185 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'],
3186 },
3187 }
3188
3189
3190 for key in list(upgradeProperties[2026].keys()):
3191 upgradeProperties[2026][key+'PU'] = deepcopy(upgradeProperties[2026][key])
3192 upgradeProperties[2026][key+'PU']['ScenToRun'] = ['GenSimHLBeamSpot','DigiTriggerPU','RecoGlobalPU', 'HARVESTGlobalPU']
3193
3194
3195 defaultDataSets = {}
3196 for year in upgradeKeys:
3197 for key in upgradeKeys[year]:
3198 if 'PU' in key: continue
3199 defaultDataSets[key] = ''
3200
3201
3202 class UpgradeFragment(object):
3203 def __init__(self, howMuch, dataset):
3204 self.howMuch = howMuch
3205 self.dataset = dataset
3206
3207 upgradeFragments = OrderedDict([
3208 ('FourMuPt_1_200_pythia8_cfi', UpgradeFragment(Kby(10,100),'FourMuPt1_200')),
3209 ('SingleElectronPt10_pythia8_cfi', UpgradeFragment(Kby(9,100),'SingleElectronPt10')),
3210 ('SingleElectronPt35_pythia8_cfi', UpgradeFragment(Kby(9,100),'SingleElectronPt35')),
3211 ('SingleElectronPt1000_pythia8_cfi', UpgradeFragment(Kby(9,50),'SingleElectronPt1000')),
3212 ('SingleGammaPt10_pythia8_cfi', UpgradeFragment(Kby(9,100),'SingleGammaPt10')),
3213 ('SingleGammaPt35_pythia8_cfi', UpgradeFragment(Kby(9,50),'SingleGammaPt35')),
3214 ('SingleMuPt1_pythia8_cfi', UpgradeFragment(Kby(25,100),'SingleMuPt1')),
3215 ('SingleMuPt10_Eta2p85_cfi', UpgradeFragment(Kby(9,100),'SingleMuPt10')),
3216 ('SingleMuPt100_Eta2p85_cfi', UpgradeFragment(Kby(9,100),'SingleMuPt100')),
3217 ('SingleMuPt1000_Eta2p85_cfi', UpgradeFragment(Kby(9,100),'SingleMuPt1000')),
3218 ('FourMuExtendedPt_1_200_pythia8_cfi', UpgradeFragment(Kby(10,100),'FourMuExtendedPt1_200')),
3219 ('TenMuExtendedE_0_200_pythia8_cfi', UpgradeFragment(Kby(10,100),'TenMuExtendedE_0_200')),
3220 ('DoubleElectronPt10Extended_pythia8_cfi', UpgradeFragment(Kby(9,100),'SingleElPt10Extended')),
3221 ('DoubleElectronPt35Extended_pythia8_cfi', UpgradeFragment(Kby(9,100),'SingleElPt35Extended')),
3222 ('DoubleElectronPt1000Extended_pythia8_cfi', UpgradeFragment(Kby(9,50),'SingleElPt1000Extended')),
3223 ('DoubleGammaPt10Extended_pythia8_cfi', UpgradeFragment(Kby(9,100),'SingleGammaPt10Extended')),
3224 ('DoubleGammaPt35Extended_pythia8_cfi', UpgradeFragment(Kby(9,50),'SingleGammaPt35Extended')),
3225 ('DoubleMuPt1Extended_pythia8_cfi', UpgradeFragment(Kby(25,100),'SingleMuPt1Extended')),
3226 ('DoubleMuPt10Extended_pythia8_cfi', UpgradeFragment(Kby(25,100),'SingleMuPt10Extended')),
3227 ('DoubleMuPt100Extended_pythia8_cfi', UpgradeFragment(Kby(9,100),'SingleMuPt100Extended')),
3228 ('DoubleMuPt1000Extended_pythia8_cfi', UpgradeFragment(Kby(9,100),'SingleMuPt1000Extended')),
3229 ('TenMuE_0_200_pythia8_cfi', UpgradeFragment(Kby(10,100),'TenMuE_0_200')),
3230 ('SinglePiE50HCAL_pythia8_cfi', UpgradeFragment(Kby(50,500),'SinglePiE50HCAL')),
3231 ('MinBias_13TeV_pythia8_TuneCUETP8M1_cfi', UpgradeFragment(Kby(90,100),'MinBias_13')),
3232 ('TTbar_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'TTbar_13')),
3233 ('ZEE_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,100),'ZEE_13')),
3234 ('QCD_Pt_600_800_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'QCD_Pt_600_800_13')),
3235 ('Wjet_Pt_80_120_14TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,100),'Wjet_Pt_80_120_14TeV')),
3236 ('Wjet_Pt_3000_3500_14TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'Wjet_Pt_3000_3500_14TeV')),
3237 ('LM1_sfts_14TeV_cfi', UpgradeFragment(Kby(9,100),'LM1_sfts_14TeV')),
3238 ('QCD_Pt_3000_3500_14TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'QCD_Pt_3000_3500_14TeV')),
3239 ('QCD_Pt_80_120_14TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,100),'QCD_Pt_80_120_14TeV')),
3240 ('H200ChargedTaus_Tauola_14TeV_cfi', UpgradeFragment(Kby(9,100),'Higgs200ChargedTaus_14TeV')),
3241 ('JpsiMM_14TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(66,100),'JpsiMM_14TeV')),
3242 ('TTbar_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(9,100),'TTbar_14TeV')),
3243 ('WE_14TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,100),'WE_14TeV')),
3244 ('ZTT_Tauola_All_hadronic_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(9,100),'ZTT_14TeV')),
3245 ('H130GGgluonfusion_14TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,100),'H130GGgluonfusion_14TeV')),
3246 ('PhotonJet_Pt_10_14TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,100),'PhotonJets_Pt_10_14TeV')),
3247 ('QQH1352T_Tauola_14TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,100),'QQH1352T_Tauola_14TeV')),
3248 ('MinBias_14TeV_pythia8_TuneCP5_cfi', UpgradeFragment(Kby(90,100),'MinBias_14TeV')),
3249 ('WToMuNu_14TeV_TuneCP5_pythia8_cfi', UpgradeFragment(Kby(9,100),'WToMuNu_14TeV')),
3250 ('ZMM_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(18,100),'ZMM_13')),
3251 ('QCDForPF_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(50,100),'QCD_FlatPt_15_3000HS_14')),
3252 ('DYToLL_M-50_14TeV_pythia8_cff', UpgradeFragment(Kby(9,100),'DYToLL_M_50_14TeV')),
3253 ('DYToTauTau_M-50_14TeV_pythia8_tauola_cff', UpgradeFragment(Kby(9,100),'DYtoTauTau_M_50_14TeV')),
3254 ('ZEE_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(9,100),'ZEE_14')),
3255 ('QCD_Pt_80_120_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,100),'QCD_Pt_80_120_13')),
3256 ('H125GGgluonfusion_13TeV_TuneCP5_cfi', UpgradeFragment(Kby(9,50),'H125GGgluonfusion_13')),
3257 ('QCD_Pt20toInf_MuEnrichedPt15_14TeV_TuneCP5_cff', UpgradeFragment(Kby(19565, 217391),'QCD_Pt20toInfMuEnrichPt15_14')),
3258 ('ZMM_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(18,100),'ZMM_14')),
3259 ('QCD_Pt15To7000_Flat_14TeV_TuneCP5_cff', UpgradeFragment(Kby(9,50),'QCD_Pt15To7000_Flat_14')),
3260 ('H125GGgluonfusion_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(9,50),'H125GGgluonfusion_14')),
3261 ('QCD_Pt_600_800_14TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'QCD_Pt_600_800_14')),
3262 ('UndergroundCosmicSPLooseMu_cfi', UpgradeFragment(Kby(9,50),'CosmicsSPLoose')),
3263 ('BeamHalo_13TeV_cfi', UpgradeFragment(Kby(9,50),'BeamHalo_13')),
3264 ('H200ChargedTaus_Tauola_13TeV_cfi', UpgradeFragment(Kby(9,50),'Higgs200ChargedTaus_13')),
3265 ('ADDMonoJet_13TeV_d3MD3_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'ADDMonoJet_d3MD3_13')),
3266 ('ZpMM_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'ZpMM_13')),
3267 ('QCD_Pt_3000_3500_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'QCD_Pt_3000_3500_13')),
3268 ('WpM_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'WpM_13')),
3269 ('SingleNuE10_cfi', UpgradeFragment(Kby(9,50),'NuGun')),
3270 ('TTbarLepton_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'TTbarLepton_13')),
3271 ('WE_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'WE_13')),
3272 ('WM_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'WM_13')),
3273 ('ZTT_All_hadronic_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'ZTT_13')),
3274 ('PhotonJet_Pt_10_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'PhotonJets_Pt_10_13')),
3275 ('QQH1352T_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'QQH1352T_13')),
3276 ('Wjet_Pt_80_120_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'Wjet_Pt_80_120_13')),
3277 ('Wjet_Pt_3000_3500_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'Wjet_Pt_3000_3500_13')),
3278 ('SMS-T1tttt_mGl-1500_mLSP-100_13TeV-pythia8_cfi', UpgradeFragment(Kby(9,50),'SMS-T1tttt_mGl-1500_mLSP-100_13')),
3279 ('QCDForPF_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(50,100),'QCD_FlatPt_15_3000HS_13')),
3280 ('PYTHIA8_PhiToMuMu_TuneCUETP8M1_13TeV_cff', UpgradeFragment(Kby(9,50),'PhiToMuMu_13')),
3281 ('RSKKGluon_m3000GeV_13TeV_TuneCUETP8M1_cff', UpgradeFragment(Kby(9,50),'RSKKGluon_m3000GeV_13')),
3282 ('ZpMM_2250_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'ZpMM_2250_13')),
3283 ('ZpEE_2250_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'ZpEE_2250_13')),
3284 ('ZpTT_1500_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'ZpTT_1500_13')),
3285 ('Upsilon1SToMuMu_forSTEAM_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'Upsilon1SToMuMu_13')),
3286 ('EtaBToJpsiJpsi_forSTEAM_TuneCUEP8M1_13TeV_cfi', UpgradeFragment(Kby(9,50),'EtaBToJpsiJpsi_13')),
3287 ('JpsiMuMu_Pt-8_forSTEAM_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(3100,100000),'JpsiMuMu_Pt-8')),
3288 ('BuMixing_BMuonFilter_forSTEAM_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(900,10000),'BuMixing_13')),
3289 ('HSCPstop_M_200_TuneCUETP8M1_13TeV_pythia8_cff', UpgradeFragment(Kby(9,50),'HSCPstop_M_200_13')),
3290 ('RSGravitonToGammaGamma_kMpl01_M_3000_TuneCUETP8M1_13TeV_pythia8_cfi', UpgradeFragment(Kby(9,50),'RSGravitonToGaGa_13')),
3291 ('WprimeToENu_M-2000_TuneCUETP8M1_13TeV-pythia8_cff', UpgradeFragment(Kby(9,50),'WpToENu_M-2000_13')),
3292 ('DisplacedSUSY_stopToBottom_M_800_500mm_TuneCP5_13TeV_pythia8_cff', UpgradeFragment(Kby(9,50),'DisplacedSUSY_stopToB_M_800_500mm_13')),
3293 ('TenE_E_0_200_pythia8_cfi', UpgradeFragment(Kby(9,100),'TenE_0_200')),
3294 ('FlatRandomPtAndDxyGunProducer_cfi', UpgradeFragment(Kby(9,100),'DisplacedMuonsDxy_0_500')),
3295 ('TenTau_E_15_500_pythia8_cfi', UpgradeFragment(Kby(9,100),'TenTau_15_500')),
3296 ('SinglePiPt25Eta1p7_2p7_cfi', UpgradeFragment(Kby(9,100),'SinglePiPt25Eta1p7_2p7')),
3297 ('SingleMuPt15Eta1p7_2p7_cfi', UpgradeFragment(Kby(9,100),'SingleMuPt15Eta1p7_2p7')),
3298 ('SingleGammaPt25Eta1p7_2p7_cfi', UpgradeFragment(Kby(9,100),'SingleGammaPt25Eta1p7_2p7')),
3299 ('SingleElectronPt15Eta1p7_2p7_cfi', UpgradeFragment(Kby(9,100),'SingleElectronPt15Eta1p7_2p7')),
3300 ('ZTT_All_hadronic_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(9,50),'ZTT_14')),
3301 ('CloseByParticle_Photon_ERZRanges_cfi', UpgradeFragment(Kby(9,100),'CloseByParticleGun')),
3302 ('CE_E_Front_300um_cfi', UpgradeFragment(Kby(9,100),'CloseByPGun_CE_E_Front_300um')),
3303 ('CE_E_Front_200um_cfi', UpgradeFragment(Kby(9,100),'CloseByPGun_CE_E_Front_200um')),
3304 ('CE_E_Front_120um_cfi', UpgradeFragment(Kby(9,100),'CloseByPGun_CE_E_Front_120um')),
3305 ('CE_H_Fine_300um_cfi', UpgradeFragment(Kby(9,100),'CloseByPGun_CE_H_Fine_300um')),
3306 ('CE_H_Fine_200um_cfi', UpgradeFragment(Kby(9,100),'CloseByPGun_CE_H_Fine_200um')),
3307 ('CE_H_Fine_120um_cfi', UpgradeFragment(Kby(9,100),'CloseByPGun_CE_H_Fine_120um')),
3308 ('CE_H_Coarse_Scint_cfi', UpgradeFragment(Kby(9,100),'CloseByPGun_CE_H_Coarse_Scint')),
3309 ('CE_H_Coarse_300um_cfi', UpgradeFragment(Kby(9,100),'CloseByPGun_CE_H_Coarse_300um')),
3310 ('SingleElectronFlatPt2To100_cfi', UpgradeFragment(Kby(9,100),'SingleEFlatPt2To100')),
3311 ('SingleMuFlatPt0p7To10_cfi', UpgradeFragment(Kby(9,100),'SingleMuFlatPt0p7To10')),
3312 ('SingleMuFlatPt2To100_cfi', UpgradeFragment(Kby(9,100),'SingleMuFlatPt2To100')),
3313 ('SingleGammaFlatPt8To150_cfi', UpgradeFragment(Kby(9,100),'SingleGammaFlatPt8To150')),
3314 ('SinglePiFlatPt0p7To10_cfi', UpgradeFragment(Kby(9,100),'SinglePiFlatPt0p7To10')),
3315 ('SingleTauFlatPt2To150_cfi', UpgradeFragment(Kby(9,100),'SingleTauFlatPt2To150')),
3316 ('FlatRandomPtAndDxyGunProducer_MuPt2To10_cfi', UpgradeFragment(Kby(9,100),'DisplacedMuPt2To10')),
3317 ('FlatRandomPtAndDxyGunProducer_MuPt10To30_cfi', UpgradeFragment(Kby(9,100),'DisplacedMuPt10To30')),
3318 ('FlatRandomPtAndDxyGunProducer_MuPt30To100_cfi', UpgradeFragment(Kby(9,100),'DisplacedMuPt30To100')),
3319 ('B0ToKstarMuMu_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(304,3030),'B0ToKstarMuMu_14TeV')),
3320 ('BsToEleEle_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(223,2222),'BsToEleEle_14TeV')),
3321 ('BsToJpsiGamma_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(2500,25000),'BsToJpsiGamma_14TeV')),
3322 ('BsToJpsiPhi_mumuKK_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(910,9090),'BsToJpsiPhi_mumuKK_14TeV')),
3323 ('BsToMuMu_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(313,3125),'BsToMuMu_14TeV')),
3324 ('BsToPhiPhi_KKKK_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(556,5555),'BsToPhiPhi_KKKK_14TeV')),
3325 ('TauToMuMuMu_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(18939,189393),'TauToMuMuMu_14TeV')),
3326 ('BdToKstarEleEle_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(206,2061),'BdToKstarEleEle_14TeV')),
3327 ('ZpTT_1500_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(9,50),'ZpTT_1500_14')),
3328 ('BuMixing_BMuonFilter_forSTEAM_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(900,10000),'BuMixing_14')),
3329 ('Upsilon1SToMuMu_forSTEAM_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(9,50),'Upsilon1SToMuMu_14')),
3330 ('TenTau_E_15_500_Eta3p1_pythia8_cfi', UpgradeFragment(Kby(9,100),'TenTau_15_500_Eta3p1')),
3331 ('QCD_Pt_1800_2400_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(9,50), 'QCD_Pt_1800_2400_14')),
3332 ('DisplacedSUSY_stopToBottom_M_800_500mm_TuneCP5_14TeV_pythia8_cff', UpgradeFragment(Kby(9,50),'DisplacedSUSY_14TeV')),
3333 ('GluGluTo2Jets_M_300_2000_14TeV_Exhume_cff',UpgradeFragment(Kby(9,100),'GluGluTo2Jets_14TeV')),
3334 ('TTbarToDilepton_mt172p5_TuneCP5_14TeV_pythia8_cfi',UpgradeFragment(Kby(9,50),'TTbarToDilepton_14TeV')),
3335 ('QQToHToTauTau_mh125_TuneCP5_14TeV_pythia8_cfi',UpgradeFragment(Kby(9,50),'QQToHToTauTau_14TeV')),
3336 ('ZpToEE_m6000_TuneCP5_14TeV_pythia8_cfi',UpgradeFragment(Kby(9,50),'ZpToEE_m6000_14TeV')),
3337 ('ZpToMM_m6000_TuneCP5_14TeV_pythia8_cfi',UpgradeFragment(Kby(9,50),'ZpToMM_m6000_14TeV')),
3338 ('SMS-T1tttt_mGl-1500_mLSP-100_TuneCP5_14TeV_pythia8_cfi',UpgradeFragment(Kby(9,50),'SMS-T1tttt_14TeV')),
3339 ('VBFHZZ4Nu_TuneCP5_14TeV_pythia8_cfi',UpgradeFragment(Kby(9,50),'VBFHZZ4Nu_14TeV')),
3340 ('EtaBToJpsiJpsi_14TeV_TuneCP5_pythia8_cfi',UpgradeFragment(Kby(9,50),'EtaBToJpsiJpsi_14TeV')),
3341 ('WToLNu_14TeV_TuneCP5_pythia8_cfi',UpgradeFragment(Kby(21,50),'WToLNu_14TeV')),
3342 ('WprimeToLNu_M2000_14TeV_TuneCP5_pythia8_cfi',UpgradeFragment(Kby(21,50),'WprimeToLNu_M2000_14TeV')),
3343 ('DoubleMuFlatPt1p5To8_cfi', UpgradeFragment(Kby(9,100),'SingleMuFlatPt1p5To8')),
3344 ('DoubleElectronFlatPt1p5To8_cfi', UpgradeFragment(Kby(9,100),'SingleElectronFlatPt1p5To8')),
3345 ('DoubleMuFlatPt1p5To8Dxy100GunProducer_cfi', UpgradeFragment(Kby(9,100),'DisplacedMuPt1p5To8Dxy100')),
3346 ('DoubleMuFlatPt2To100Dxy100GunProducer_cfi', UpgradeFragment(Kby(9,100),'DisplacedMuPt2To100Dxy100')),
3347 ('BuToJPsiPrimeKToJPsiPiPiK_14TeV_TuneCP5_pythia8_cfi', UpgradeFragment(Kby(223,2222),'BuToJPsiPrimeKToJPsiPiPiK_14TeV')),
3348 ('Psi2SToJPsiPiPi_14TeV_TuneCP5_pythia8_cfi', UpgradeFragment(Kby(45,500),'Psi2SToJPsiPiPi_14TeV')),
3349 ('XiMinus_13p6TeV_SoftQCDInel_TuneCP5_cfi', UpgradeFragment(Kby(8000,90000),'XiMinus_13p6TeV')),
3350 ('Chib1PToUpsilon1SGamma_MuFilter_TuneCP5_14TeV-pythia8_evtgen_cfi', UpgradeFragment(Kby(3600,36000),'Chib1PToUpsilon1SGamma_14TeV')),
3351 ('ChicToJpsiGamma_MuFilter_TuneCP5_14TeV_pythia8_evtgen_cfi', UpgradeFragment(Kby(2000,20000),'ChicToJpsiGamma_14TeV')),
3352 ('B0ToJpsiK0s_JMM_Filter_DGamma0_TuneCP5_13p6TeV-pythia8-evtgen_cfi',UpgradeFragment(Kby(38000,38000),'B0ToJpsiK0s_DGamma0_13p6TeV')),
3353 ('DStarToD0Pi_D0ToKsPiPi_inclusive_SoftQCD_TuneCP5_13p6TeV-pythia8-evtgen',UpgradeFragment(Kby(38000,38000),'DStarToD0Pi_D0ToKsPiPi_13p6TeV')),
3354 ('LbToJpsiLambda_JMM_Filter_DGamma0_TuneCP5_13p6TeV-pythia8-evtgen_cfi',UpgradeFragment(Mby(66,660000),'LbToJpsiLambda_DGamma0_13p6TeV')),
3355 ('LbToJpsiXiK0sPi_JMM_Filter_DGamma0_TuneCP5_13p6TeV-pythia8-evtgen_cfi',UpgradeFragment(Mby(50,500000),'LbToJpsiXiK0sPr_DGamma0_13p6TeV')),
3356 ('OmegaMinus_13p6TeV_SoftQCDInel_TuneCP5_cfi',UpgradeFragment(Mby(100,1000000),'OmegaMinus_13p6TeV')),
3357 ('Hydjet_Quenched_MinBias_5020GeV_cfi', UpgradeFragment(U2000by1,'HydjetQMinBias_5020GeV')),
3358 ('Hydjet_Quenched_MinBias_5362GeV_cfi', UpgradeFragment(U2000by1,'HydjetQMinBias_5362GeV'))
3359 ])