CMS 3D CMS Logo

upgradeWorkflowComponents.py
Go to the documentation of this file.
1 from copy import deepcopy
2 from collections import OrderedDict
3 import six
4 from .MatrixUtil import merge, Kby
5 import re
6 
7 # DON'T CHANGE THE ORDER, only append new keys. Otherwise the numbering for the runTheMatrix tests will change.
8 
9 upgradeKeys = {}
10 
11 upgradeKeys[2017] = [
12  '2017',
13  '2017PU',
14  '2017Design',
15  '2017DesignPU',
16  '2018',
17  '2018PU',
18  '2018Design',
19  '2018DesignPU',
20  '2021',
21  '2021PU',
22  '2021Design',
23  '2021DesignPU',
24  '2023',
25  '2023PU',
26  '2024',
27  '2024PU',
28 ]
29 
30 upgradeKeys[2026] = [
31  '2026D49',
32  '2026D49PU',
33  '2026D60',
34  '2026D60PU',
35  '2026D68',
36  '2026D68PU',
37  '2026D70',
38  '2026D70PU',
39  '2026D76',
40  '2026D76PU',
41  '2026D77',
42  '2026D77PU',
43  '2026D78',
44  '2026D78PU',
45  '2026D79',
46  '2026D79PU',
47  '2026D80',
48  '2026D80PU',
49  '2026D81',
50  '2026D81PU',
51  '2026D82',
52  '2026D82PU',
53  '2026D83',
54  '2026D83PU',
55 ]
56 
57 # pre-generation of WF numbers
58 numWFStart={
59  2017: 10000,
60  2026: 20000,
61 }
62 numWFSkip=200
63 # temporary measure to keep other WF numbers the same
64 numWFConflict = [[20000,23200],[23600,28200],[28600,31400],[31800,32200],[32600,34600],[50000,51000]]
65 numWFAll={
66  2017: [],
67  2026: []
68 }
69 
70 for year in upgradeKeys:
71  for i in range(0,len(upgradeKeys[year])):
72  numWFtmp = numWFStart[year] if i==0 else (numWFAll[year][i-1] + numWFSkip)
73  for conflict in numWFConflict:
74  if numWFtmp>=conflict[0] and numWFtmp<conflict[1]:
75  numWFtmp = conflict[1]
76  break
77  numWFAll[year].append(numWFtmp)
78 
79 # workflows for baseline and for variations
80 # setup() automatically loops over all steps and applies any customizations specified in setup_() -> called in relval_steps.py
81 # setupPU() and setupPU_() operate similarly -> called in relval_steps.py *after* merging PUDataSets w/ regular steps
82 # workflow() adds a concrete workflow to the list based on condition() -> called in relval_upgrade.py
83 # every special workflow gets its own derived class, which must then be added to the global dict upgradeWFs
84 preventReuseKeyword = 'NOREUSE'
86  def __init__(self,steps,PU,suffix,offset):
87  self.steps = steps
88  self.PU = PU
89  self.allowReuse = True
90 
91  # ensure all PU steps are in normal step list
92  for step in self.PU:
93  if not step in self.steps:
94  self.steps.append(step)
95 
96  self.suffix = suffix
97  if len(self.suffix)>0 and self.suffix[0]!='_': self.suffix = '_'+self.suffix
98  self.offset = offset
99  if self.offset < 0.0 or self.offset > 1.0:
100  raise ValueError("Special workflow offset must be between 0.0 and 1.0")
101  def getStepName(self, step, extra=""):
102  stepName = step + self.suffix + extra
103  return stepName
104  def getStepNamePU(self, step, extra=""):
105  stepNamePU = step + 'PU' + self.suffix + extra
106  return stepNamePU
107  def init(self, stepDict):
108  for step in self.steps:
109  stepDict[self.getStepName(step)] = {}
110  if not self.allowReuse: stepDict[self.getStepName(step,preventReuseKeyword)] = {}
111  for step in self.PU:
112  stepDict[self.getStepNamePU(step)] = {}
113  if not self.allowReuse: stepDict[self.getStepNamePU(step,preventReuseKeyword)] = {}
114  def setup(self, stepDict, k, properties):
115  for step in self.steps:
116  self.setup_(step, self.getStepName(step), stepDict, k, properties)
117  if not self.allowReuse: self.preventReuse(self.getStepName(step,preventReuseKeyword), stepDict, k)
118  def setupPU(self, stepDict, k, properties):
119  for step in self.PU:
120  self.setupPU_(step, self.getStepNamePU(step), stepDict, k, properties)
121  if not self.allowReuse: self.preventReuse(self.getStepNamePU(step,preventReuseKeyword), stepDict, k)
122  def setup_(self, step, stepName, stepDict, k, properties):
123  pass
124  def setupPU_(self, step, stepName, stepDict, k, properties):
125  pass
126  def workflow(self, workflows, num, fragment, stepList, key, hasHarvest):
127  if self.condition(fragment, stepList, key, hasHarvest):
128  self.workflow_(workflows, num, fragment, stepList, key)
129  def workflow_(self, workflows, num, fragment, stepList, key):
130  fragmentTmp = [fragment, key]
131  if len(self.suffix)>0: fragmentTmp.append(self.suffix)
132  workflows[num+self.offset] = [ fragmentTmp, stepList ]
133  def condition(self, fragment, stepList, key, hasHarvest):
134  return False
135  def preventReuse(self, stepName, stepDict, k):
136  if "Sim" in stepName:
137  stepDict[stepName][k] = None
138 upgradeWFs = OrderedDict()
139 
141  def setup_(self, step, stepName, stepDict, k, properties):
142  cust=properties.get('Custom', None)
143  era=properties.get('Era', None)
144  modifier=properties.get('ProcessModifier',None)
145  if cust is not None: stepDict[stepName][k]['--customise']=cust
146  if era is not None: stepDict[stepName][k]['--era']=era
147  if modifier is not None: stepDict[stepName][k]['--procModifier']=modifier
148  def condition(self, fragment, stepList, key, hasHarvest):
149  return True
150 upgradeWFs['baseline'] = UpgradeWorkflow_baseline(
151  steps = [
152  'GenSim',
153  'GenSimHLBeamSpot',
154  'GenSimHLBeamSpot14',
155  'Digi',
156  'DigiTrigger',
157  'RecoLocal',
158  'Reco',
159  'RecoFakeHLT',
160  'RecoGlobal',
161  'HARVEST',
162  'HARVESTFakeHLT',
163  'FastSim',
164  'HARVESTFast',
165  'HARVESTGlobal',
166  'ALCA',
167  'Nano',
168  'MiniAOD',
169  ],
170  PU = [
171  'DigiTrigger',
172  'RecoLocal',
173  'RecoGlobal',
174  'Digi',
175  'Reco',
176  'RecoFakeHLT',
177  'HARVEST',
178  'HARVESTFakeHLT',
179  'HARVESTGlobal',
180  'MiniAOD',
181  'Nano',
182  ],
183  suffix = '',
184  offset = 0.0,
185 )
186 
187 # some commonalities among tracking WFs
189  def condition(self, fragment, stepList, key, hasHarvest):
190  result = (fragment=="TTbar_13" or fragment=="TTbar_14TeV") and not 'PU' in key and hasHarvest and self.condition_(fragment, stepList, key, hasHarvest)
191  if result:
192  # skip ALCA and Nano
193  skipList = [s for s in stepList if (("ALCA" in s) or ("Nano" in s))]
194  for skip in skipList:
195  stepList.remove(skip)
196  return result
197  def condition_(self, fragment, stepList, key, hasHarvest):
198  return True
199 
201  def setup_(self, step, stepName, stepDict, k, properties):
202  if 'Reco' in step: stepDict[stepName][k] = merge([self.step3, stepDict[step][k]])
203  elif 'HARVEST' in step: stepDict[stepName][k] = merge([{'-s': 'HARVESTING:@trackingOnlyValidation+@trackingOnlyDQM'}, stepDict[step][k]])
204 upgradeWFs['trackingOnly'] = UpgradeWorkflow_trackingOnly(
205  steps = [
206  'Reco',
207  'HARVEST',
208  'RecoGlobal',
209  'HARVESTGlobal',
210  ],
211  PU = [],
212  suffix = '_trackingOnly',
213  offset = 0.1,
214 )
215 upgradeWFs['trackingOnly'].step3 = {
216  '-s': 'RAW2DIGI,RECO:reconstruction_trackingOnly,VALIDATION:@trackingOnlyValidation,DQM:@trackingOnlyDQM',
217  '--datatier':'GEN-SIM-RECO,DQMIO',
218  '--eventcontent':'RECOSIM,DQM',
219 }
220 # used outside of upgrade WFs
221 step3_trackingOnly = upgradeWFs['trackingOnly'].step3
222 
224  def setup_(self, step, stepName, stepDict, k, properties):
225  if 'Reco' in step and stepDict[step][k]['--era']=='Run2_2017':
226  stepDict[stepName][k] = merge([{'--era': 'Run2_2017_trackingRun2'}, stepDict[step][k]])
227  def condition_(self, fragment, stepList, key, hasHarvest):
228  return '2017' in key
229 upgradeWFs['trackingRun2'] = UpgradeWorkflow_trackingRun2(
230  steps = [
231  'Reco',
232  ],
233  PU = [],
234  suffix = '_trackingRun2',
235  offset = 0.2,
236 )
237 
239  def setup_(self, step, stepName, stepDict, k, properties):
240  if 'Reco' in step and stepDict[step][k]['--era']=='Run2_2017':
241  stepDict[stepName][k] = merge([{'--era': 'Run2_2017_trackingRun2'}, self.step3, stepDict[step][k]])
242  elif 'HARVEST' in step: stepDict[stepName][k] = merge([{'-s': 'HARVESTING:@trackingOnlyValidation+@trackingOnlyDQM'}, stepDict[step][k]])
243  def condition_(self, fragment, stepList, key, hasHarvest):
244  return '2017' in key
245 upgradeWFs['trackingOnlyRun2'] = UpgradeWorkflow_trackingOnlyRun2(
246  steps = [
247  'Reco',
248  'HARVEST',
249  ],
250  PU = [],
251  suffix = '_trackingOnlyRun2',
252  offset = 0.3,
253 )
254 upgradeWFs['trackingOnlyRun2'].step3 = upgradeWFs['trackingOnly'].step3
255 
257  def setup_(self, step, stepName, stepDict, k, properties):
258  if 'Reco' in step and stepDict[step][k]['--era']=='Run2_2017':
259  stepDict[stepName][k] = merge([{'--era': 'Run2_2017_trackingLowPU'}, stepDict[step][k]])
260  def condition_(self, fragment, stepList, key, hasHarvest):
261  return '2017' in key
262 upgradeWFs['trackingLowPU'] = UpgradeWorkflow_trackingLowPU(
263  steps = [
264  'Reco',
265  ],
266  PU = [],
267  suffix = '_trackingLowPU',
268  offset = 0.4,
269 )
270 
272  def setup_(self, step, stepName, stepDict, k, properties):
273  if 'Reco' in step: stepDict[stepName][k] = merge([self.step3, stepDict[step][k]])
274  elif 'HARVEST' in step: stepDict[stepName][k] = merge([{'-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM'}, stepDict[step][k]])
275  def condition_(self, fragment, stepList, key, hasHarvest):
276  return '2017' in key or '2018' in key or '2021' in key
277 upgradeWFs['pixelTrackingOnly'] = UpgradeWorkflow_pixelTrackingOnly(
278  steps = [
279  'Reco',
280  'HARVEST',
281  'RecoGlobal',
282  'HARVESTGlobal',
283  ],
284  PU = [],
285  suffix = '_pixelTrackingOnly',
286  offset = 0.5,
287 )
288 upgradeWFs['pixelTrackingOnly'].step3 = {
289  '-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly,VALIDATION:@pixelTrackingOnlyValidation,DQM:@pixelTrackingOnlyDQM',
290  '--datatier': 'GEN-SIM-RECO,DQMIO',
291  '--eventcontent': 'RECOSIM,DQM',
292 }
293 
295  def setup_(self, step, stepName, stepDict, k, properties):
296  if 'Reco' in step: stepDict[stepName][k] = merge([self.step3, stepDict[step][k]])
297  def condition_(self, fragment, stepList, key, hasHarvest):
298  return '2017' in key or '2021' in key
299 upgradeWFs['trackingMkFit'] = UpgradeWorkflow_trackingMkFit(
300  steps = [
301  'Reco',
302  'RecoGlobal',
303  ],
304  PU = [],
305  suffix = '_trackingMkFit',
306  offset = 0.7,
307 )
308 upgradeWFs['trackingMkFit'].step3 = {
309  '--procModifiers': 'trackingMkFit'
310 }
311 
312 #DeepCore seeding for JetCore iteration workflow
314  def setup_(self, step, stepName, stepDict, k, properties):
315  if 'Reco' in step or 'HARVEST' in step: stepDict[stepName][k] = merge([{'--procModifiers': 'seedingDeepCore'}, stepDict[step][k]])
316  def condition(self, fragment, stepList, key, hasHarvest):
317  result = (fragment=="QCD_Pt_1800_2400_14" or fragment=="TTbar_14TeV" ) and ('2021' in key or '2024' in key) and hasHarvest
318  if result:
319  # skip ALCA and Nano
320  skipList = [s for s in stepList if (("ALCA" in s) or ("Nano" in s))]
321  for skip in skipList:
322  stepList.remove(skip)
323  return result
324 upgradeWFs['seedingDeepCore'] = UpgradeWorkflow_seedingDeepCore(
325  steps = [
326  'Reco',
327  'HARVEST',
328  'RecoGlobal',
329  'HARVESTGlobal',
330  ],
331  PU = [],
332  suffix = '_seedingDeepCore',
333  offset = 0.17,
334 )
335 
336 # Vector Hits workflows
338  def setup_(self, step, stepName, stepDict, k, properties):
339  stepDict[stepName][k] = merge([{'--procModifiers': 'vectorHits'}, stepDict[step][k]])
340  def condition(self, fragment, stepList, key, hasHarvest):
341  return fragment=="TTbar_14TeV" and '2026' in key
342 upgradeWFs['vectorHits'] = UpgradeWorkflow_vectorHits(
343  steps = [
344  'RecoGlobal',
345  ],
346  PU = [
347  'RecoGlobal',
348  ],
349  suffix = '_vectorHits',
350  offset = 0.9,
351 )
352 
353 
354 # Track DNN workflows
356  def setup_(self, step, stepName, stepDict, k, properties):
357  stepDict[stepName][k] = merge([{'--procModifiers': 'trackdnn'}, stepDict[step][k]])
358 
359  def condition(self, fragment, stepList, key, hasHarvest):
360  return fragment=="TTbar_14TeV" and '2021' in key
361 upgradeWFs['trackdnn'] = UpgradeWorkflow_trackdnn(
362  steps = [
363  'Reco',
364  ],
365  PU = [
366  'Reco',
367  ],
368  suffix = '_trackdnn',
369  offset = 0.91,
370 )
371 
372 
373 # MLPF workflows
375  def setup_(self, step, stepName, stepDict, k, properties):
376  if 'Reco' in step:
377  stepDict[stepName][k] = merge([self.step3, stepDict[step][k]])
378  def condition(self, fragment, stepList, key, hasHarvest):
379  return fragment=="TTbar_14TeV" and '2021' in key
380 
381 upgradeWFs['mlpf'] = UpgradeWorkflow_mlpf(
382  steps = [
383  'Reco',
384  ],
385  PU = [
386  'Reco',
387  ],
388  suffix = '_mlpf',
389  offset = 0.13,
390 )
391 upgradeWFs['mlpf'].step3 = {
392  '--datatier': 'GEN-SIM-RECO,RECOSIM,MINIAODSIM,DQMIO',
393  '--eventcontent': 'FEVTDEBUGHLT,RECOSIM,MINIAODSIM,DQM',
394  '--procModifiers': 'mlpf'
395 }
396 
397 # Patatrack workflows
399  def condition(self, fragment, stepList, key, hasHarvest):
400  is_2018_ttbar = ('2018' in key and fragment=="TTbar_13")
401  is_2021_ttbar = ('2021' in key and fragment=="TTbar_14TeV")
402  is_2018_zmumu = ('2018' in key and fragment=="ZMM_13")
403  is_2021_zmumu = ('2021' in key and fragment=="ZMM_14")
404  result = any((is_2018_ttbar, is_2021_ttbar, is_2018_zmumu, is_2021_zmumu)) and hasHarvest and self.condition_(fragment, stepList, key, hasHarvest)
405  if result:
406  # skip ALCA and Nano
407  skipList = [s for s in stepList if (("ALCA" in s) or ("Nano" in s))]
408  for skip in skipList:
409  stepList.remove(skip)
410  return result
411  def condition_(self, fragment, stepList, key, hasHarvest):
412  return True
413 
415  def setup_(self, step, stepName, stepDict, k, properties):
416  if 'Reco' in step:
417  stepDict[stepName][k] = merge([self.step3, stepDict[step][k]])
418  elif 'HARVEST' in step:
419  stepDict[stepName][k] = merge([{'-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM'}, stepDict[step][k]])
420 
421  def condition_(self, fragment, stepList, key, hasHarvest):
422  return '2018' in key or '2021' in key
423 
424 upgradeWFs['PatatrackPixelOnlyCPU'] = UpgradeWorkflowPatatrack_PixelOnlyCPU(
425  steps = [
426  'Reco',
427  'HARVEST',
428  'RecoFakeHLT',
429  'HARVESTFakeHLT',
430  'RecoGlobal',
431  'HARVESTGlobal',
432  ],
433  PU = [],
434  suffix = 'Patatrack_PixelOnlyCPU',
435  offset = 0.501,
436 )
437 
438 upgradeWFs['PatatrackPixelOnlyCPU'].step3 = {
439  '-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly,VALIDATION:@pixelTrackingOnlyValidation,DQM:@pixelTrackingOnlyDQM',
440  '--datatier': 'GEN-SIM-RECO,DQMIO',
441  '--eventcontent': 'RECOSIM,DQM',
442  '--customise' : 'RecoPixelVertexing/Configuration/customizePixelTracksSoAonCPU.customizePixelTracksSoAonCPU'
443 }
444 
445 upgradeWFs['PatatrackPixelOnlyTripletsCPU'] = UpgradeWorkflowPatatrack_PixelOnlyCPU(
446  steps = [
447  'Reco',
448  'HARVEST',
449  'RecoGlobal',
450  'HARVESTGlobal',
451  ],
452  PU = [],
453  suffix = 'Patatrack_PixelOnlyTripletsCPU',
454  offset = 0.505,
455 )
456 
457 upgradeWFs['PatatrackPixelOnlyTripletsCPU'].step3 = {
458  '-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly,VALIDATION:@pixelTrackingOnlyValidation,DQM:@pixelTrackingOnlyDQM',
459  '--datatier': 'GEN-SIM-RECO,DQMIO',
460  '--eventcontent': 'RECOSIM,DQM',
461  '--customise' : 'RecoPixelVertexing/Configuration/customizePixelTracksSoAonCPU.customizePixelTracksSoAonCPU,RecoPixelVertexing/Configuration/customizePixelTracksSoAonCPU.customizePixelTracksForTriplets'
462 }
463 
465  def setup_(self, step, stepName, stepDict, k, properties):
466  if 'Reco' in step:
467  stepDict[stepName][k] = merge([self.step3, stepDict[step][k]])
468  elif 'HARVEST' in step:
469  stepDict[stepName][k] = merge([{'-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM'}, stepDict[step][k]])
470 
471  def condition_(self, fragment, stepList, key, hasHarvest):
472  return '2018' in key or '2021' in key
473 
474 upgradeWFs['PatatrackPixelOnlyGPU'] = UpgradeWorkflowPatatrack_PixelOnlyGPU(
475  steps = [
476  'Reco',
477  'HARVEST',
478  'RecoFakeHLT',
479  'HARVESTFakeHLT',
480  'RecoGlobal',
481  'HARVESTGlobal',
482  ],
483  PU = [],
484  suffix = 'Patatrack_PixelOnlyGPU',
485  offset = 0.502,
486 )
487 
488 upgradeWFs['PatatrackPixelOnlyGPU'].step3 = {
489  '-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly,VALIDATION:@pixelTrackingOnlyValidation,DQM:@pixelTrackingOnlyDQM',
490  '--datatier': 'GEN-SIM-RECO,DQMIO',
491  '--eventcontent': 'RECOSIM,DQM',
492  '--procModifiers': 'gpu'
493 }
494 
495 upgradeWFs['PatatrackPixelOnlyTripletsGPU'] = UpgradeWorkflowPatatrack_PixelOnlyGPU(
496  steps = [
497  'Reco',
498  'HARVEST',
499  'RecoGlobal',
500  'HARVESTGlobal',
501  ],
502  PU = [],
503  suffix = 'Patatrack_PixelOnlyTripletsGPU',
504  offset = 0.506,
505 )
506 
507 upgradeWFs['PatatrackPixelOnlyTripletsGPU'].step3 = {
508  '-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly,VALIDATION:@pixelTrackingOnlyValidation,DQM:@pixelTrackingOnlyDQM',
509  '--datatier': 'GEN-SIM-RECO,DQMIO',
510  '--eventcontent': 'RECOSIM,DQM',
511  '--procModifiers': 'gpu',
512  '--customise': 'RecoPixelVertexing/Configuration/customizePixelTracksSoAonCPU.customizePixelTracksForTriplets'
513 }
514 
516  def setup_(self, step, stepName, stepDict, k, properties):
517  if 'Reco' in step:
518  stepDict[stepName][k] = merge([self.step3, stepDict[step][k]])
519  elif 'HARVEST' in step:
520  stepDict[stepName][k] = merge([{'-s': 'HARVESTING:@ecalOnlyValidation+@ecal'}, stepDict[step][k]])
521 
522  def condition_(self, fragment, stepList, key, hasHarvest):
523  return '2018' in key or '2021' in key
524 
525 upgradeWFs['PatatrackECALOnlyCPU'] = UpgradeWorkflowPatatrack_ECALOnlyCPU(
526  steps = [
527  'Reco',
528  'HARVEST',
529  'RecoFakeHLT',
530  'HARVESTFakeHLT',
531  'RecoGlobal',
532  'HARVESTGlobal',
533  ],
534  PU = [],
535  suffix = 'Patatrack_ECALOnlyCPU',
536  offset = 0.511,
537 )
538 
539 upgradeWFs['PatatrackECALOnlyCPU'].step3 = {
540  '-s': 'RAW2DIGI:RawToDigi_ecalOnly,RECO:reconstruction_ecalOnly,VALIDATION:@ecalOnlyValidation,DQM:@ecalOnly',
541  '--datatier': 'GEN-SIM-RECO,DQMIO',
542  '--eventcontent': 'RECOSIM,DQM',
543 }
544 
546  def setup_(self, step, stepName, stepDict, k, properties):
547  if 'Reco' in step:
548  stepDict[stepName][k] = merge([self.step3, stepDict[step][k]])
549  elif 'HARVEST' in step:
550  stepDict[stepName][k] = merge([{'-s': 'HARVESTING:@ecalOnlyValidation+@ecal'}, stepDict[step][k]])
551 
552  def condition_(self, fragment, stepList, key, hasHarvest):
553  return '2018' in key or '2021' in key
554 
555 upgradeWFs['PatatrackECALOnlyGPU'] = UpgradeWorkflowPatatrack_ECALOnlyGPU(
556  steps = [
557  'Reco',
558  'HARVEST',
559  'RecoFakeHLT',
560  'HARVESTFakeHLT',
561  'RecoGlobal',
562  'HARVESTGlobal',
563  ],
564  PU = [],
565  suffix = 'Patatrack_ECALOnlyGPU',
566  offset = 0.512,
567 )
568 
569 upgradeWFs['PatatrackECALOnlyGPU'].step3 = {
570  '-s': 'RAW2DIGI:RawToDigi_ecalOnly,RECO:reconstruction_ecalOnly,VALIDATION:@ecalOnlyValidation,DQM:@ecalOnly',
571  '--datatier': 'GEN-SIM-RECO,DQMIO',
572  '--eventcontent': 'RECOSIM,DQM',
573  '--procModifiers': 'gpu'
574 }
575 
577  def setup_(self, step, stepName, stepDict, k, properties):
578  if 'Reco' in step:
579  stepDict[stepName][k] = merge([self.step3, stepDict[step][k]])
580  elif 'HARVEST' in step:
581  stepDict[stepName][k] = merge([{'-s': 'HARVESTING:@hcalOnlyValidation+@hcalOnly+@hcal2Only'}, stepDict[step][k]])
582 
583  def condition_(self, fragment, stepList, key, hasHarvest):
584  return '2018' in key or '2021' in key
585 
586 upgradeWFs['PatatrackHCALOnlyCPU'] = UpgradeWorkflowPatatrack_HCALOnlyCPU(
587  steps = [
588  'Reco',
589  'HARVEST',
590  'RecoFakeHLT',
591  'HARVESTFakeHLT',
592  'RecoGlobal',
593  'HARVESTGlobal',
594  ],
595  PU = [],
596  suffix = 'Patatrack_HCALOnlyCPU',
597  offset = 0.521,
598 )
599 
600 upgradeWFs['PatatrackHCALOnlyCPU'].step3 = {
601  '-s': 'RAW2DIGI:RawToDigi_hcalOnly,RECO:reconstruction_hcalOnly,VALIDATION:@hcalOnlyValidation,DQM:@hcalOnly+@hcal2Only',
602  '--datatier': 'GEN-SIM-RECO,DQMIO',
603  '--eventcontent': 'RECOSIM,DQM',
604 }
605 
607  def setup_(self, step, stepName, stepDict, k, properties):
608  if 'Reco' in step:
609  stepDict[stepName][k] = merge([self.step3, stepDict[step][k]])
610  elif 'HARVEST' in step:
611  stepDict[stepName][k] = merge([{'-s': 'HARVESTING:@hcalOnlyValidation+@hcalOnly+@hcal2Only'}, stepDict[step][k]])
612 
613  def condition_(self, fragment, stepList, key, hasHarvest):
614  return '2018' in key or '2021' in key
615 
616 upgradeWFs['PatatrackHCALOnlyGPU'] = UpgradeWorkflowPatatrack_HCALOnlyGPU(
617  steps = [
618  'Reco',
619  'HARVEST',
620  'RecoFakeHLT',
621  'HARVESTFakeHLT',
622  'RecoGlobal',
623  'HARVESTGlobal',
624  ],
625  PU = [],
626  suffix = 'Patatrack_HCALOnlyGPU',
627  offset = 0.522,
628 )
629 
630 upgradeWFs['PatatrackHCALOnlyGPU'].step3 = {
631  '-s': 'RAW2DIGI:RawToDigi_hcalOnly,RECO:reconstruction_hcalOnly,VALIDATION:@hcalOnlyValidation,DQM:@hcalOnly+@hcal2Only',
632  '--datatier': 'GEN-SIM-RECO,DQMIO',
633  '--eventcontent': 'RECOSIM,DQM',
634  '--procModifiers': 'gpu'
635 }
636 
637 # end of Patatrack workflows
638 
640  def setup_(self, step, stepName, stepDict, k, properties):
641  if 'Digi' in step and 'Trigger' not in step:
642  stepDict[stepName][k] = merge([{'-s': 'DIGI,L1,DIGI2RAW,HLT:@relval2021', '--datatier':'GEN-SIM-DIGI-RAW', '--eventcontent':'RAWSIM'}, stepDict[step][k]])
643  elif 'Reco' in step:
644  stepDict[stepName][k] = merge([{'-s': 'RAW2DIGI,L1Reco,RECO,RECOSIM', '--datatier':'AODSIM', '--eventcontent':'AODSIM'}, stepDict[step][k]])
645  elif 'MiniAOD' in step:
646  # the separate miniAOD step is used here
647  stepDict[stepName][k] = deepcopy(stepDict[step][k])
648  if 'ALCA' in step or 'HARVEST' in step:
649  # remove step
650  stepDict[stepName][k] = None
651  if 'Nano' in step:
652  stepDict[stepName][k] = merge([{'--filein':'file:step4.root'}, stepDict[step][k]])
653  def condition(self, fragment, stepList, key, hasHarvest):
654  return fragment=="TTbar_14TeV" and ('2026' in key or '2021' in key)
655 upgradeWFs['ProdLike'] = UpgradeWorkflow_ProdLike(
656  steps = [
657  'Digi',
658  'Reco',
659  'RecoGlobal',
660  'HARVEST',
661  'HARVESTGlobal',
662  'MiniAOD',
663  'ALCA',
664  'Nano',
665  ],
666  PU = [
667  'Digi',
668  'Reco',
669  'RecoGlobal',
670  'HARVEST',
671  'HARVESTGlobal',
672  'MiniAOD',
673  'ALCA',
674  'Nano',
675  ],
676  suffix = '_ProdLike',
677  offset = 0.21,
678 )
679 
681  def setup_(self, step, stepName, stepDict, k, properties):
682  if 'GenSim' in step:
683  custNew = "SimG4Core/Application/NeutronBGforMuonsXS_cff.customise"
684  else:
685  custNew = "SLHCUpgradeSimulations/Configuration/customise_mixing.customise_Mix_LongLived_Neutrons"
686  stepDict[stepName][k] = deepcopy(stepDict[step][k])
687  if '--customise' in stepDict[stepName][k].keys():
688  stepDict[stepName][k]['--customise'] += ","+custNew
689  else:
690  stepDict[stepName][k]['--customise'] = custNew
691  def condition(self, fragment, stepList, key, hasHarvest):
692  return any(fragment==nfrag for nfrag in self.neutronFrags) and any(nkey in key for nkey in self.neutronKeys)
693 upgradeWFs['Neutron'] = UpgradeWorkflow_Neutron(
694  steps = [
695  'GenSim',
696  'GenSimHLBeamSpot',
697  'GenSimHLBeamSpot14',
698  'Digi',
699  'DigiTrigger',
700  ],
701  PU = [
702  'Digi',
703  'DigiTrigger',
704  ],
705  suffix = '_Neutron',
706  offset = 0.12,
707 )
708 # add some extra info
709 upgradeWFs['Neutron'].neutronKeys = [x for x in upgradeKeys[2026] if 'PU' not in x]
710 upgradeWFs['Neutron'].neutronFrags = ['ZMM_14','MinBias_14TeV']
711 
713  def setup_(self, step, stepName, stepDict, k, properties):
714  stepDict[stepName][k] = merge([{'--procModifiers': 'run2_HECollapse_2018'}, stepDict[step][k]])
715  def condition(self, fragment, stepList, key, hasHarvest):
716  return fragment=="TTbar_13" and '2018' in key
717 upgradeWFs['heCollapse'] = UpgradeWorkflow_heCollapse(
718  steps = [
719  'GenSim',
720  'Digi',
721  'Reco',
722  'HARVEST',
723  'ALCA',
724  ],
725  PU = [
726  'Digi',
727  'Reco',
728  'HARVEST',
729  ],
730  suffix = '_heCollapse',
731  offset = 0.6,
732 )
733 
735  def setup_(self, step, stepName, stepDict, k, properties):
736  # temporarily remove trigger & downstream steps
737  mods = {'--era': stepDict[step][k]['--era']+',phase2_ecal_devel'}
738  if 'Digi' in step:
739  mods['-s'] = 'DIGI:pdigi_valid'
740  stepDict[stepName][k] = merge([mods, stepDict[step][k]])
741  def condition(self, fragment, stepList, key, hasHarvest):
742  return fragment=="TTbar_14TeV" and '2026' in key
743 upgradeWFs['ecalDevel'] = UpgradeWorkflow_ecalDevel(
744  steps = [
745  'DigiTrigger',
746  'RecoGlobal',
747  'HARVESTGlobal',
748  ],
749  PU = [
750  'DigiTrigger',
751  'RecoGlobal',
752  'HARVESTGlobal',
753  ],
754  suffix = '_ecalDevel',
755  offset = 0.61,
756 )
757 
759  def setup_(self, step, stepName, stepDict, k, properties):
760  myGT=stepDict[step][k]['--conditions']
761  myGT+="_0T"
762  stepDict[stepName][k] = merge([{'-n':'1','--magField':'0T','--conditions':myGT}, stepDict[step][k]])
763  def condition(self, fragment, stepList, key, hasHarvest):
764  return (fragment=="TTbar_13" or fragment=="TTbar_14TeV") and ('2017' in key or '2018' in key or '2021' in key)
765 upgradeWFs['0T'] = UpgradeWorkflow_0T(
766  steps = [
767  'GenSim',
768  'Digi',
769  'Reco',
770  'HARVEST',
771  'ALCA',
772  ],
773  PU = [
774  'Digi',
775  'Reco',
776  'HARVEST',
777  ],
778  suffix = '_0T',
779  offset = 0.24,
780 )
781 
783  def setup_(self, step, stepName, stepDict, k, properties):
784  if 'Reco' in step and 'Run2_2018' in stepDict[step][k]['--era']:
785  stepDict[stepName][k] = merge([{'--era': 'Run2_2018,bParking'}, stepDict[step][k]])
786  def condition(self, fragment, stepList, key, hasHarvest):
787  return fragment=="TTbar_13" and '2018' in key
788 upgradeWFs['ParkingBPH'] = UpgradeWorkflow_ParkingBPH(
789  steps = [
790  'Reco',
791  ],
792  PU = [],
793  suffix = '_ParkingBPH',
794  offset = 0.8,
795 )
796 
798  def setup_(self, step, stepName, stepDict, k, properties):
799  if 'Nano' in step:
800  stepDict[stepName][k] = merge([{'--customise': 'PhysicsTools/NanoAOD/custom_jme_cff.PrepJMECustomNanoAOD_MC'}, stepDict[step][k]])
801  def condition(self, fragment, stepList, key, hasHarvest):
802  return fragment=="TTbar_13" and ('2017' in key or '2018' in key)
803 upgradeWFs['JMENano'] = UpgradeWorkflow_JMENano(
804  steps = [
805  'Nano',
806  ],
807  PU = [],
808  suffix = '_JMENano',
809  offset = 0.15,
810 )
811 
812 
813 # common operations for aging workflows
815  def setup_(self, step, stepName, stepDict, k, properties):
816  if 'Digi' in step or 'Reco' in step:
817  stepDict[stepName][k] = merge([{'--customise': 'SLHCUpgradeSimulations/Configuration/aging.customise_aging_'+self.lumi}, stepDict[step][k]])
818  def condition(self, fragment, stepList, key, hasHarvest):
819  return fragment=="TTbar_14TeV" and '2026' in key
820 # define several of them
821 upgradeWFs['Aging1000'] = UpgradeWorkflowAging(
822  steps = [
823  'Digi',
824  'DigiTrigger',
825  'RecoLocal',
826  'Reco',
827  'RecoGlobal',
828  ],
829  PU = [
830  'Digi',
831  'DigiTrigger',
832  'RecoLocal',
833  'Reco',
834  'RecoGlobal',
835  ],
836  suffix = 'Aging1000',
837  offset = 0.101,
838 )
839 upgradeWFs['Aging1000'].lumi = '1000'
840 upgradeWFs['Aging3000'] = deepcopy(upgradeWFs['Aging1000'])
841 upgradeWFs['Aging3000'].suffix = 'Aging3000'
842 upgradeWFs['Aging3000'].offset = 0.103
843 upgradeWFs['Aging3000'].lumi = '3000'
844 
845 # Specifying explicitly the --filein is not nice but that was the
846 # easiest way to "skip" the output of step2 (=premixing stage1) for
847 # filein (as it goes to pileup_input). It works (a bit accidentally
848 # though) also for "-i all" because in that case the --filein for DAS
849 # input is after this one in the list of command line arguments to
850 # cmsDriver, and gets then used in practice.
851 digiPremixLocalPileup = {
852  "--filein": "file:step1.root",
853  "--pileup_input": "file:step2.root"
854 }
855 
856 # for premix
858  def setup_(self, step, stepName, stepDict, k, properties):
859  # just copy steps
860  stepDict[stepName][k] = merge([stepDict[step][k]])
861  def setupPU_(self, step, stepName, stepDict, k, properties):
862  # setup for stage 1
863  if "GenSim" in stepName:
864  stepNamePmx = stepName.replace('GenSim','Premix')
865  if not stepNamePmx in stepDict: stepDict[stepNamePmx] = {}
866  stepDict[stepNamePmx][k] = merge([
867  {
868  '-s': 'GEN,SIM,DIGI:pdigi_valid',
869  '--datatier': 'PREMIX',
870  '--eventcontent': 'PREMIX',
871  '--procModifiers': 'premix_stage1'
872  },
873  stepDict[stepName][k]
874  ])
875  # setup for stage 2
876  elif "Digi" in step or "Reco" in step:
877  # go back to non-PU step version
878  d = merge([stepDict[self.getStepName(step)][k]])
879  if d is None: return
880  if "Digi" in step:
881  tmpsteps = []
882  for s in d["-s"].split(","):
883  if s == "DIGI" or "DIGI:" in s:
884  tmpsteps.extend([s, "DATAMIX"])
885  else:
886  tmpsteps.append(s)
887  d = merge([{"-s" : ",".join(tmpsteps),
888  "--datamix" : "PreMix",
889  "--procModifiers": "premix_stage2"},
890  d])
891  # for combined stage1+stage2
892  if "_PMXS1S2" in self.suffix:
893  d = merge([digiPremixLocalPileup, d])
894  elif "Reco" in step:
895  if "--procModifiers" in d:
896  d["--procModifiers"] += ",premix_stage2"
897  else:
898  d["--procModifiers"] = "premix_stage2"
899  stepDict[stepName][k] = d
900  # Increase the input file step number by one for Nano in combined stage1+stage2
901  elif "Nano" in step:
902  # go back to non-PU step version
903  d = merge([stepDict[self.getStepName(step)][k]])
904  if "--filein" in d:
905  filein = d["--filein"]
906  m = re.search("step(?P<ind>\d+)_", filein)
907  if m:
908  d["--filein"] = filein.replace(m.group(), "step%d_"%(int(m.group("ind"))+1))
909  stepDict[stepName][k] = d
910  # run2/3 WFs use Nano (not NanoPU) in PU WF
911  stepDict[self.getStepName(step)][k] = merge([d])
912  def condition(self, fragment, stepList, key, hasHarvest):
913  if not 'PU' in key:
914  return False
915  if not any(y in key for y in ['2021', '2023', '2024', '2026']):
916  return False
917  if self.suffix.endswith("S1"):
918  return "NuGun" in fragment
919  return True
920  def workflow_(self, workflows, num, fragment, stepList, key):
921  fragmentTmp = fragment
922  if self.suffix.endswith("S1"):
923  fragmentTmp = 'PREMIXUP' + key[2:].replace("PU", "").replace("Design", "") + '_PU25'
924  super(UpgradeWorkflowPremix,self).workflow_(workflows, num, fragmentTmp, stepList, key)
925 # Premix stage1
926 upgradeWFs['PMXS1'] = UpgradeWorkflowPremix(
927  steps = [
928  ],
929  PU = [
930  'GenSim',
931  'GenSimHLBeamSpot',
932  'GenSimHLBeamSpot14',
933  ],
934  suffix = '_PMXS1',
935  offset = 0.97,
936 )
937 # Premix stage2
938 upgradeWFs['PMXS2'] = UpgradeWorkflowPremix(
939  steps = [],
940  PU = [
941  'Digi',
942  'DigiTrigger',
943  'RecoLocal',
944  'Reco',
945  'RecoGlobal',
946  'Nano',
947  ],
948  suffix = '_PMXS2',
949  offset = 0.98,
950 )
951 # Premix combined stage1+stage2
952 upgradeWFs['PMXS1S2'] = UpgradeWorkflowPremix(
953  steps = [],
954  PU = [
955  'GenSim',
956  'GenSimHLBeamSpot',
957  'GenSimHLBeamSpot14',
958  'Digi',
959  'DigiTrigger',
960  'RecoLocal',
961  'Reco',
962  'RecoGlobal',
963  'Nano',
964  ],
965  suffix = '_PMXS1S2',
966  offset = 0.99,
967 )
968 # Alternative version of above w/ less PU for PR tests
970  def setupPU_(self, step, stepName, stepDict, k, properties):
971  # adjust first, so it gets copied into new Premix step
972  if '--pileup' in stepDict[stepName][k]:
973  stepDict[stepName][k]['--pileup'] = 'AVE_50_BX_25ns_m3p3'
974  super(UpgradeWorkflowAdjustPU,self).setupPU_(step, stepName, stepDict, k, properties)
975  def condition(self, fragment, stepList, key, hasHarvest):
976  # restrict to phase2
977  return super(UpgradeWorkflowAdjustPU,self).condition(fragment, stepList, key, hasHarvest) and '2026' in key
978 upgradeWFs['PMXS1S2PR'] = UpgradeWorkflowAdjustPU(
979  steps = [],
980  PU = [
981  'GenSim',
982  'GenSimHLBeamSpot',
983  'GenSimHLBeamSpot14',
984  'Digi',
985  'DigiTrigger',
986  'RecoLocal',
987  'Reco',
988  'RecoGlobal',
989  'Nano',
990  'HARVEST',
991  'HARVESTGlobal',
992  ],
993  suffix = '_PMXS1S2PR',
994  offset = 0.999,
995 )
996 
998  def setup_(self, step, stepName, stepDict, k, properties):
999  # copy steps, then apply specializations
1000  UpgradeWorkflowPremix.setup_(self, step, stepName, stepDict, k, properties)
1001  UpgradeWorkflow_ProdLike.setup_(self, step, stepName, stepDict, k, properties)
1002  def condition(self, fragment, stepList, key, hasHarvest):
1003  # use both conditions
1004  return UpgradeWorkflowPremix.condition(self, fragment, stepList, key, hasHarvest) and UpgradeWorkflow_ProdLike.condition(self, fragment, stepList, key, hasHarvest)
1005 # premix stage2
1006 upgradeWFs['PMXS2ProdLike'] = UpgradeWorkflowPremixProdLike(
1007  steps = [],
1008  PU = [
1009  'Digi',
1010  'DigiTrigger',
1011  'RecoLocal',
1012  'Reco',
1013  'RecoGlobal',
1014  'Nano',
1015  'HARVEST',
1016  'HARVESTGlobal',
1017  'MiniAOD',
1018  'ALCA',
1019  ],
1020  suffix = '_PMXS2ProdLike',
1021  offset = 0.9821,
1022 )
1023 # premix combined stage1+stage2
1024 upgradeWFs['PMXS1S2ProdLike'] = UpgradeWorkflowPremixProdLike(
1025  steps = [],
1026  PU = [
1027  'GenSim',
1028  'GenSimHLBeamSpot',
1029  'GenSimHLBeamSpot14',
1030  'Digi',
1031  'DigiTrigger',
1032  'RecoLocal',
1033  'Reco',
1034  'RecoGlobal',
1035  'Nano',
1036  'HARVEST',
1037  'HARVESTGlobal',
1038  'MiniAOD',
1039  'ALCA',
1040  ],
1041  suffix = '_PMXS1S2ProdLike',
1042  offset = 0.9921,
1043 )
1044 
1046  def setup_(self, step, stepName, stepDict, k, properties):
1047  if 'Run3' in stepDict[step][k]['--era']:
1048  stepDict[stepName][k] = merge([{'--geometry': 'DD4hepExtended2021', '--procModifiers': 'dd4hep'}, stepDict[step][k]])
1049  elif 'Phase2' in stepDict[step][k]['--era']:
1050  dd4hepGeom="DD4hep"
1051  dd4hepGeom+=stepDict[step][k]['--geometry']
1052  stepDict[stepName][k] = merge([{'--geometry' : dd4hepGeom, '--procModifiers': 'dd4hep'}, stepDict[step][k]])
1053  def condition(self, fragment, stepList, key, hasHarvest):
1054  return '2021' in key or '2026' in key
1055 upgradeWFs['DD4hep'] = UpgradeWorkflow_DD4hep(
1056  steps = [
1057  'GenSim',
1058  'GenSimHLBeamSpot',
1059  'GenSimHLBeamSpot14',
1060  'Digi',
1061  'DigiTrigger',
1062  'Reco',
1063  'RecoGlobal',
1064  'HARVEST',
1065  'HARVESTGlobal',
1066  'ALCA',
1067  ],
1068  PU = [],
1069  suffix = '_DD4hep',
1070  offset = 0.911,
1071 )
1072 upgradeWFs['DD4hep'].allowReuse = False
1073 
1075  def setup_(self, step, stepName, stepDict, k, properties):
1076  stepDict[stepName][k] = merge([{'--procModifiers': 'allSonicTriton'}, stepDict[step][k]])
1077  def condition(self, fragment, stepList, key, hasHarvest):
1078  return (fragment=='TTbar_13' and '2021' in key) \
1079  or (fragment=='TTbar_14TeV' and '2026' in key)
1080 upgradeWFs['SonicTriton'] = UpgradeWorkflow_SonicTriton(
1081  steps = [
1082  'GenSim',
1083  'GenSimHLBeamSpot',
1084  'GenSimHLBeamSpot14',
1085  'Digi',
1086  'DigiTrigger',
1087  'Reco',
1088  'RecoGlobal',
1089  'HARVEST',
1090  'HARVESTGlobal',
1091  'ALCA',
1092  ],
1093  PU = [
1094  'GenSim',
1095  'GenSimHLBeamSpot',
1096  'GenSimHLBeamSpot14',
1097  'Digi',
1098  'DigiTrigger',
1099  'Reco',
1100  'RecoGlobal',
1101  'HARVEST',
1102  'HARVESTGlobal',
1103  'ALCA',
1104  ],
1105  suffix = '_SonicTriton',
1106  offset = 0.9001,
1107 )
1108 
1109 # check for duplicate offsets
1110 offsets = [specialWF.offset for specialType,specialWF in six.iteritems(upgradeWFs)]
1111 seen = set()
1112 dups = set(x for x in offsets if x in seen or seen.add(x))
1113 if len(dups)>0:
1114  raise ValueError("Duplicate special workflow offsets not allowed: "+','.join([str(x) for x in dups]))
1115 
1116 upgradeProperties = {}
1117 
1118 upgradeProperties[2017] = {
1119  '2017' : {
1120  'Geom' : 'DB:Extended',
1121  'GT' : 'auto:phase1_2017_realistic',
1122  'HLTmenu': '@relval2017',
1123  'Era' : 'Run2_2017',
1124  'ScenToRun' : ['GenSim','Digi','RecoFakeHLT','HARVESTFakeHLT','ALCA','Nano'],
1125  },
1126  '2017Design' : {
1127  'Geom' : 'DB:Extended',
1128  'GT' : 'auto:phase1_2017_design',
1129  'HLTmenu': '@relval2017',
1130  'Era' : 'Run2_2017',
1131  'BeamSpot': 'GaussSigmaZ4cm',
1132  'ScenToRun' : ['GenSim','Digi','RecoFakeHLT','HARVESTFakeHLT'],
1133  },
1134  '2018' : {
1135  'Geom' : 'DB:Extended',
1136  'GT' : 'auto:phase1_2018_realistic',
1137  'HLTmenu': '@relval2018',
1138  'Era' : 'Run2_2018',
1139  'BeamSpot': 'Realistic25ns13TeVEarly2018Collision',
1140  'ScenToRun' : ['GenSim','Digi','RecoFakeHLT','HARVESTFakeHLT','ALCA','Nano'],
1141  },
1142  '2018Design' : {
1143  'Geom' : 'DB:Extended',
1144  'GT' : 'auto:phase1_2018_design',
1145  'HLTmenu': '@relval2018',
1146  'Era' : 'Run2_2018',
1147  'BeamSpot': 'GaussSigmaZ4cm',
1148  'ScenToRun' : ['GenSim','Digi','RecoFakeHLT','HARVESTFakeHLT'],
1149  },
1150  '2021' : {
1151  'Geom' : 'DB:Extended',
1152  'GT' : 'auto:phase1_2021_realistic',
1153  'HLTmenu': '@relval2021',
1154  'Era' : 'Run3',
1155  'BeamSpot': 'Run3RoundOptics25ns13TeVLowSigmaZ',
1156  'ScenToRun' : ['GenSim','Digi','Reco','HARVEST','ALCA'],
1157  },
1158  '2021Design' : {
1159  'Geom' : 'DB:Extended',
1160  'GT' : 'auto:phase1_2021_design',
1161  'HLTmenu': '@relval2021',
1162  'Era' : 'Run3',
1163  'BeamSpot': 'GaussSigmaZ4cm',
1164  'ScenToRun' : ['GenSim','Digi','Reco','HARVEST'],
1165  },
1166  '2023' : {
1167  'Geom' : 'DB:Extended',
1168  'GT' : 'auto:phase1_2023_realistic',
1169  'HLTmenu': '@relval2021',
1170  'Era' : 'Run3',
1171  'BeamSpot': 'Run3RoundOptics25ns13TeVLowSigmaZ',
1172  'ScenToRun' : ['GenSim','Digi','Reco','HARVEST','ALCA'],
1173  },
1174  '2024' : {
1175  'Geom' : 'DB:Extended',
1176  'GT' : 'auto:phase1_2024_realistic',
1177  'HLTmenu': '@relval2021',
1178  'Era' : 'Run3',
1179  'BeamSpot': 'Run3RoundOptics25ns13TeVLowSigmaZ',
1180  'ScenToRun' : ['GenSim','Digi','Reco','HARVEST','ALCA'],
1181  },
1182 }
1183 
1184 # standard PU sequences
1185 for key in list(upgradeProperties[2017].keys()):
1186  upgradeProperties[2017][key+'PU'] = deepcopy(upgradeProperties[2017][key])
1187  upgradeProperties[2017][key+'PU']['ScenToRun'] = ['GenSim','DigiPU'] + \
1188  (['RecoPU','HARVESTPU'] if '202' in key else ['RecoFakeHLTPU','HARVESTFakeHLTPU']) + \
1189  (['Nano'] if 'Design' not in key else [])
1190 
1191 upgradeProperties[2026] = {
1192  '2026D49' : {
1193  'Geom' : 'Extended2026D49',
1194  'HLTmenu': '@fake2',
1195  'GT' : 'auto:phase2_realistic_T15',
1196  'Era' : 'Phase2C9',
1197  'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal'],
1198  },
1199  '2026D60' : {
1200  'Geom' : 'Extended2026D60',
1201  'HLTmenu': '@fake2',
1202  'GT' : 'auto:phase2_realistic_T15',
1203  'Era' : 'Phase2C10',
1204  'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal'],
1205  },
1206  '2026D68' : {
1207  'Geom' : 'Extended2026D68',
1208  'HLTmenu': '@fake2',
1209  'GT' : 'auto:phase2_realistic_T21',
1210  'Era' : 'Phase2C11',
1211  'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal'],
1212  },
1213  '2026D70' : {
1214  'Geom' : 'Extended2026D70',
1215  'HLTmenu': '@fake2',
1216  'GT' : 'auto:phase2_realistic_T21',
1217  'Era' : 'Phase2C11',
1218  'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal'],
1219  },
1220  '2026D76' : {
1221  'Geom' : 'Extended2026D76',
1222  'HLTmenu': '@fake2',
1223  'GT' : 'auto:phase2_realistic_T21',
1224  'Era' : 'Phase2C11I13M9',
1225  'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal'],
1226  },
1227  '2026D77' : {
1228  'Geom' : 'Extended2026D77',
1229  'HLTmenu': '@fake2',
1230  'GT' : 'auto:phase2_realistic_T21',
1231  'Era' : 'Phase2C11I13M9',
1232  'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal'],
1233  },
1234  '2026D78' : {
1235  'Geom' : 'Extended2026D78', # N.B.: Geometry with square 50x50 um2 pixels in the Inner Tracker.
1236  'HLTmenu': '@fake2',
1237  'GT' : 'auto:phase2_realistic_T22',
1238  'ProcessModifier': 'PixelCPEGeneric', # This swaps template reco CPE for generic reco CPE
1239  'Era' : 'Phase2C11I13T22M9', # customized for square pixels and Muon M9
1240  'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal'],
1241  },
1242  '2026D79' : {
1243  'Geom' : 'Extended2026D79', # N.B.: Geometry with 3D pixels in the Inner Tracker.
1244  'HLTmenu': '@fake2',
1245  'GT' : 'auto:phase2_realistic_T23',
1246  'ProcessModifier': 'PixelCPEGeneric', # This swaps template reco CPE for generic reco CPE
1247  'Era' : 'Phase2C11I13T23M9', # customizes for 3D Pixels and Muon M9
1248  'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal'],
1249  },
1250  '2026D80' : {
1251  'Geom' : 'Extended2026D80', # N.B.: Geometry with 3D pixels in the Inner Tracker L1.
1252  'HLTmenu': '@fake2',
1253  'GT' : 'auto:phase2_realistic_T25',
1254  'Era' : 'Phase2C11I13T25M9', # customized for 3D pixels and Muon M9
1255  'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal'],
1256  },
1257  '2026D81' : {
1258  'Geom' : 'Extended2026D81', # N.B.: Geometry with 3D pixels (TBPX,L1) and square 50x50 um2 pixels (TFPX+TEPX) in the Inner Tracker.
1259  'HLTmenu': '@fake2',
1260  'GT' : 'auto:phase2_realistic_T26',
1261  'Era' : 'Phase2C11I13T26M9', # customized for square pixels and Muon M9
1262  'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal'],
1263  },
1264  '2026D82' : {
1265  'Geom' : 'Extended2026D82',
1266  'HLTmenu': '@fake2',
1267  'GT' : 'auto:phase2_realistic_T21',
1268  'Era' : 'Phase2C11I13M9',
1269  'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal'],
1270  },
1271  '2026D83' : {
1272  'Geom' : 'Extended2026D83',
1273  'HLTmenu': '@fake2',
1274  'GT' : 'auto:phase2_realistic_T21',
1275  'Era' : 'Phase2C11I13M9',
1276  'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal'],
1277  },
1278 }
1279 
1280 # standard PU sequences
1281 for key in list(upgradeProperties[2026].keys()):
1282  upgradeProperties[2026][key+'PU'] = deepcopy(upgradeProperties[2026][key])
1283  upgradeProperties[2026][key+'PU']['ScenToRun'] = ['GenSimHLBeamSpot','DigiTriggerPU','RecoGlobalPU', 'HARVESTGlobalPU']
1284 
1285 # for relvals
1286 defaultDataSets = {}
1287 for year in upgradeKeys:
1288  for key in upgradeKeys[year]:
1289  if 'PU' in key: continue
1290  defaultDataSets[key] = ''
1291 
1292 
1294  def __init__(self, howMuch, dataset):
1295  self.howMuch = howMuch
1296  self.dataset = dataset
1297 
1298 upgradeFragments = OrderedDict([
1299  ('FourMuPt_1_200_pythia8_cfi', UpgradeFragment(Kby(10,100),'FourMuPt1_200')),
1300  ('SingleElectronPt10_pythia8_cfi', UpgradeFragment(Kby(9,100),'SingleElectronPt10')),
1301  ('SingleElectronPt35_pythia8_cfi', UpgradeFragment(Kby(9,100),'SingleElectronPt35')),
1302  ('SingleElectronPt1000_pythia8_cfi', UpgradeFragment(Kby(9,50),'SingleElectronPt1000')),
1303  ('SingleGammaPt10_pythia8_cfi', UpgradeFragment(Kby(9,100),'SingleGammaPt10')),
1304  ('SingleGammaPt35_pythia8_cfi', UpgradeFragment(Kby(9,50),'SingleGammaPt35')),
1305  ('SingleMuPt1_pythia8_cfi', UpgradeFragment(Kby(25,100),'SingleMuPt1')),
1306  ('SingleMuPt10_Eta2p85_cfi', UpgradeFragment(Kby(9,100),'SingleMuPt10')),
1307  ('SingleMuPt100_Eta2p85_cfi', UpgradeFragment(Kby(9,100),'SingleMuPt100')),
1308  ('SingleMuPt1000_Eta2p85_cfi', UpgradeFragment(Kby(9,100),'SingleMuPt1000')),
1309  ('FourMuExtendedPt_1_200_pythia8_cfi', UpgradeFragment(Kby(10,100),'FourMuExtendedPt1_200')),
1310  ('TenMuExtendedE_0_200_pythia8_cfi', UpgradeFragment(Kby(10,100),'TenMuExtendedE_0_200')),
1311  ('DoubleElectronPt10Extended_pythia8_cfi', UpgradeFragment(Kby(9,100),'SingleElPt10Extended')),
1312  ('DoubleElectronPt35Extended_pythia8_cfi', UpgradeFragment(Kby(9,100),'SingleElPt35Extended')),
1313  ('DoubleElectronPt1000Extended_pythia8_cfi', UpgradeFragment(Kby(9,50),'SingleElPt1000Extended')),
1314  ('DoubleGammaPt10Extended_pythia8_cfi', UpgradeFragment(Kby(9,100),'SingleGammaPt10Extended')),
1315  ('DoubleGammaPt35Extended_pythia8_cfi', UpgradeFragment(Kby(9,50),'SingleGammaPt35Extended')),
1316  ('DoubleMuPt1Extended_pythia8_cfi', UpgradeFragment(Kby(25,100),'SingleMuPt1Extended')),
1317  ('DoubleMuPt10Extended_pythia8_cfi', UpgradeFragment(Kby(25,100),'SingleMuPt10Extended')),
1318  ('DoubleMuPt100Extended_pythia8_cfi', UpgradeFragment(Kby(9,100),'SingleMuPt100Extended')),
1319  ('DoubleMuPt1000Extended_pythia8_cfi', UpgradeFragment(Kby(9,100),'SingleMuPt1000Extended')),
1320  ('TenMuE_0_200_pythia8_cfi', UpgradeFragment(Kby(10,100),'TenMuE_0_200')),
1321  ('SinglePiE50HCAL_pythia8_cfi', UpgradeFragment(Kby(50,500),'SinglePiE50HCAL')),
1322  ('MinBias_13TeV_pythia8_TuneCUETP8M1_cfi', UpgradeFragment(Kby(90,100),'MinBias_13')),
1323  ('TTbar_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'TTbar_13')),
1324  ('ZEE_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,100),'ZEE_13')),
1325  ('QCD_Pt_600_800_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'QCD_Pt_600_800_13')),
1326  ('Wjet_Pt_80_120_14TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,100),'Wjet_Pt_80_120_14TeV')),
1327  ('Wjet_Pt_3000_3500_14TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'Wjet_Pt_3000_3500_14TeV')),
1328  ('LM1_sfts_14TeV_cfi', UpgradeFragment(Kby(9,100),'LM1_sfts_14TeV')),
1329  ('QCD_Pt_3000_3500_14TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'QCD_Pt_3000_3500_14TeV')),
1330  ('QCD_Pt_80_120_14TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,100),'QCD_Pt_80_120_14TeV')),
1331  ('H200ChargedTaus_Tauola_14TeV_cfi', UpgradeFragment(Kby(9,100),'Higgs200ChargedTaus_14TeV')),
1332  ('JpsiMM_14TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(66,100),'JpsiMM_14TeV')),
1333  ('TTbar_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(9,100),'TTbar_14TeV')),
1334  ('WE_14TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,100),'WE_14TeV')),
1335  ('ZTT_Tauola_All_hadronic_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(9,100),'ZTT_14TeV')),
1336  ('H130GGgluonfusion_14TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,100),'H130GGgluonfusion_14TeV')),
1337  ('PhotonJet_Pt_10_14TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,100),'PhotonJets_Pt_10_14TeV')),
1338  ('QQH1352T_Tauola_14TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,100),'QQH1352T_Tauola_14TeV')),
1339  ('MinBias_14TeV_pythia8_TuneCP5_cfi', UpgradeFragment(Kby(90,100),'MinBias_14TeV')),
1340  ('WM_14TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,100),'WM_14TeV')),
1341  ('ZMM_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(18,100),'ZMM_13')),
1342  ('QCDForPF_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(50,100),'QCD_FlatPt_15_3000HS_14')),
1343  ('DYToLL_M-50_14TeV_pythia8_cff', UpgradeFragment(Kby(9,100),'DYToLL_M_50_14TeV')),
1344  ('DYToTauTau_M-50_14TeV_pythia8_tauola_cff', UpgradeFragment(Kby(9,100),'DYtoTauTau_M_50_14TeV')),
1345  ('ZEE_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(9,100),'ZEE_14')),
1346  ('QCD_Pt_80_120_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,100),'QCD_Pt_80_120_13')),
1347  ('H125GGgluonfusion_13TeV_TuneCP5_cfi', UpgradeFragment(Kby(9,50),'H125GGgluonfusion_13')),
1348  ('QCD_Pt20toInf_MuEnrichedPt15_14TeV_TuneCP5_cff', UpgradeFragment(Kby(19565, 217391),'QCD_Pt20toInfMuEnrichPt15_14')), # effi = 4.6e-4, local=8.000e-04
1349  ('ZMM_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(18,100),'ZMM_14')),
1350  ('QCD_Pt15To7000_Flat_14TeV_TuneCP5_cff', UpgradeFragment(Kby(9,50),'QCD_Pt15To7000_Flat_14')),
1351  ('H125GGgluonfusion_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(9,50),'H125GGgluonfusion_14')),
1352  ('QCD_Pt_600_800_14TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'QCD_Pt_600_800_14')),
1353  ('UndergroundCosmicSPLooseMu_cfi', UpgradeFragment(Kby(9,50),'CosmicsSPLoose')),
1354  ('BeamHalo_13TeV_cfi', UpgradeFragment(Kby(9,50),'BeamHalo_13')),
1355  ('H200ChargedTaus_Tauola_13TeV_cfi', UpgradeFragment(Kby(9,50),'Higgs200ChargedTaus_13')),
1356  ('ADDMonoJet_13TeV_d3MD3_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'ADDMonoJet_d3MD3_13')),
1357  ('ZpMM_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'ZpMM_13')),
1358  ('QCD_Pt_3000_3500_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'QCD_Pt_3000_3500_13')),
1359  ('WpM_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'WpM_13')),
1360  ('SingleNuE10_cfi', UpgradeFragment(Kby(9,50),'NuGun')),
1361  ('TTbarLepton_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'TTbarLepton_13')),
1362  ('WE_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'WE_13')),
1363  ('WM_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'WM_13')),
1364  ('ZTT_All_hadronic_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'ZTT_13')),
1365  ('PhotonJet_Pt_10_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'PhotonJets_Pt_10_13')),
1366  ('QQH1352T_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'QQH1352T_13')),
1367  ('Wjet_Pt_80_120_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'Wjet_Pt_80_120_13')),
1368  ('Wjet_Pt_3000_3500_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'Wjet_Pt_3000_3500_13')),
1369  ('SMS-T1tttt_mGl-1500_mLSP-100_13TeV-pythia8_cfi', UpgradeFragment(Kby(9,50),'SMS-T1tttt_mGl-1500_mLSP-100_13')),
1370  ('QCDForPF_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(50,100),'QCD_FlatPt_15_3000HS_13')),
1371  ('PYTHIA8_PhiToMuMu_TuneCUETP8M1_13TeV_cff', UpgradeFragment(Kby(9,50),'PhiToMuMu_13')),
1372  ('RSKKGluon_m3000GeV_13TeV_TuneCUETP8M1_cff', UpgradeFragment(Kby(9,50),'RSKKGluon_m3000GeV_13')),
1373  ('ZpMM_2250_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'ZpMM_2250_13')),
1374  ('ZpEE_2250_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'ZpEE_2250_13')),
1375  ('ZpTT_1500_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'ZpTT_1500_13')),
1376  ('Upsilon1SToMuMu_forSTEAM_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(9,50),'Upsilon1SToMuMu_13')),
1377  ('EtaBToJpsiJpsi_forSTEAM_TuneCUEP8M1_13TeV_cfi', UpgradeFragment(Kby(9,50),'EtaBToJpsiJpsi_13')),
1378  ('JpsiMuMu_Pt-8_forSTEAM_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(3100,100000),'JpsiMuMu_Pt-8')),
1379  ('BuMixing_BMuonFilter_forSTEAM_13TeV_TuneCUETP8M1_cfi', UpgradeFragment(Kby(900,10000),'BuMixing_13')),
1380  ('HSCPstop_M_200_TuneCUETP8M1_13TeV_pythia8_cff', UpgradeFragment(Kby(9,50),'HSCPstop_M_200_13')),
1381  ('RSGravitonToGammaGamma_kMpl01_M_3000_TuneCUETP8M1_13TeV_pythia8_cfi', UpgradeFragment(Kby(9,50),'RSGravitonToGaGa_13')),
1382  ('WprimeToENu_M-2000_TuneCUETP8M1_13TeV-pythia8_cff', UpgradeFragment(Kby(9,50),'WpToENu_M-2000_13')),
1383  ('DisplacedSUSY_stopToBottom_M_800_500mm_TuneCP5_13TeV_pythia8_cff', UpgradeFragment(Kby(9,50),'DisplacedSUSY_stopToB_M_800_500mm_13')),
1384  ('TenE_E_0_200_pythia8_cfi', UpgradeFragment(Kby(9,100),'TenE_0_200')),
1385  ('FlatRandomPtAndDxyGunProducer_cfi', UpgradeFragment(Kby(9,100),'DisplacedMuonsDxy_0_500')),
1386  ('TenTau_E_15_500_pythia8_cfi', UpgradeFragment(Kby(9,100),'TenTau_15_500')),
1387  ('SinglePiPt25Eta1p7_2p7_cfi', UpgradeFragment(Kby(9,100),'SinglePiPt25Eta1p7_2p7')),
1388  ('SingleMuPt15Eta1p7_2p7_cfi', UpgradeFragment(Kby(9,100),'SingleMuPt15Eta1p7_2p7')),
1389  ('SingleGammaPt25Eta1p7_2p7_cfi', UpgradeFragment(Kby(9,100),'SingleGammaPt25Eta1p7_2p7')),
1390  ('SingleElectronPt15Eta1p7_2p7_cfi', UpgradeFragment(Kby(9,100),'SingleElectronPt15Eta1p7_2p7')),
1391  ('ZTT_All_hadronic_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(9,50),'ZTT_14')),
1392  ('CloseByParticle_Photon_ERZRanges_cfi', UpgradeFragment(Kby(9,100),'CloseByParticleGun')),
1393  ('CE_E_Front_300um_cfi', UpgradeFragment(Kby(9,100),'CloseByPGun_CE_E_Front_300um')),
1394  ('CE_E_Front_200um_cfi', UpgradeFragment(Kby(9,100),'CloseByPGun_CE_E_Front_200um')),
1395  ('CE_E_Front_120um_cfi', UpgradeFragment(Kby(9,100),'CloseByPGun_CE_E_Front_120um')),
1396  ('CE_H_Fine_300um_cfi', UpgradeFragment(Kby(9,100),'CloseByPGun_CE_H_Fine_300um')),
1397  ('CE_H_Fine_200um_cfi', UpgradeFragment(Kby(9,100),'CloseByPGun_CE_H_Fine_200um')),
1398  ('CE_H_Fine_120um_cfi', UpgradeFragment(Kby(9,100),'CloseByPGun_CE_H_Fine_120um')),
1399  ('CE_H_Coarse_Scint_cfi', UpgradeFragment(Kby(9,100),'CloseByPGun_CE_H_Coarse_Scint')),
1400  ('CE_H_Coarse_300um_cfi', UpgradeFragment(Kby(9,100),'CloseByPGun_CE_H_Coarse_300um')),
1401  ('SingleElectronFlatPt2To100_cfi', UpgradeFragment(Kby(9,100),'SingleEFlatPt2To100')),
1402  ('SingleMuFlatPt0p7To10_cfi', UpgradeFragment(Kby(9,100),'SingleMuFlatPt0p7To10')),
1403  ('SingleMuFlatPt2To100_cfi', UpgradeFragment(Kby(9,100),'SingleMuFlatPt2To100')),
1404  ('SingleGammaFlatPt8To150_cfi', UpgradeFragment(Kby(9,100),'SingleGammaFlatPt8To150')),
1405  ('SinglePiFlatPt0p7To10_cfi', UpgradeFragment(Kby(9,100),'SinglePiFlatPt0p7To10')),
1406  ('SingleTauFlatPt2To150_cfi', UpgradeFragment(Kby(9,100),'SingleTauFlatPt2To150')),
1407  ('FlatRandomPtAndDxyGunProducer_MuPt2To10_cfi', UpgradeFragment(Kby(9,100),'DisplacedMuPt2To10')),
1408  ('FlatRandomPtAndDxyGunProducer_MuPt10To30_cfi', UpgradeFragment(Kby(9,100),'DisplacedMuPt10To30')),
1409  ('FlatRandomPtAndDxyGunProducer_MuPt30To100_cfi', UpgradeFragment(Kby(9,100),'DisplacedMuPt30To100')),
1410  ('B0ToKstarMuMu_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(304,3030),'B0ToKstarMuMu_14TeV')), # 3.3%
1411  ('BsToEleEle_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(223,2222),'BsToEleEle_14TeV')), # 4.5%
1412  ('BsToJpsiGamma_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(2500,25000),'BsToJpsiGamma_14TeV')), # 0.4%
1413  ('BsToJpsiPhi_mumuKK_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(910,9090),'BsToJpsiPhi_mumuKK_14TeV')), # 1.1%
1414  ('BsToMuMu_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(313,3125),'BsToMuMu_14TeV')), # 3.2%
1415  ('BsToPhiPhi_KKKK_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(556,5555),'BsToPhiPhi_KKKK_14TeV')), # 1.8%
1416  ('TauToMuMuMu_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(18939,189393),'TauToMuMuMu_14TeV')), # effi = 5.280e-04
1417  ('BdToKstarEleEle_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(206,2061),'BdToKstarEleEle_14TeV')), #effi = 4.850e-02
1418  ('ZpTT_1500_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(9,50),'ZpTT_1500_14')),
1419  ('BuMixing_BMuonFilter_forSTEAM_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(900,10000),'BuMixing_14')),
1420  ('Upsilon1SToMuMu_forSTEAM_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(9,50),'Upsilon1SToMuMu_14')),
1421  ('TenTau_E_15_500_Eta3p1_pythia8_cfi', UpgradeFragment(Kby(9,100),'TenTau_15_500_Eta3p1')),
1422  ('QCD_Pt_1800_2400_14TeV_TuneCP5_cfi', UpgradeFragment(Kby(9,50), 'QCD_Pt_1800_2400_14')),
1423  ('DisplacedSUSY_stopToBottom_M_800_500mm_TuneCP5_14TeV_pythia8_cff', UpgradeFragment(Kby(9,50),'DisplacedSUSY_14TeV')),
1424  ('GluGluTo2Jets_M_300_2000_14TeV_Exhume_cff',UpgradeFragment(Kby(9,100),'GluGluTo2Jets_14TeV')),
1425 ])
upgradeWorkflowComponents.UpgradeWorkflow_trackingRun2.condition_
def condition_(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:227
upgradeWorkflowComponents.UpgradeWorkflow_vectorHits.condition
def condition(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:340
upgradeWorkflowComponents.UpgradeWorkflow.preventReuse
def preventReuse(self, stepName, stepDict, k)
Definition: upgradeWorkflowComponents.py:135
upgradeWorkflowComponents.UpgradeWorkflow.offset
offset
Definition: upgradeWorkflowComponents.py:98
upgradeWorkflowComponents.UpgradeWorkflowPatatrack_HCALOnlyCPU.step3
step3
Definition: upgradeWorkflowComponents.py:600
upgradeWorkflowComponents.UpgradeWorkflow_trackingMkFit.condition_
def condition_(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:297
FastTimerService_cff.range
range
Definition: FastTimerService_cff.py:34
upgradeWorkflowComponents.UpgradeWorkflow_JMENano.condition
def condition(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:801
resolutioncreator_cfi.object
object
Definition: resolutioncreator_cfi.py:4
upgradeWorkflowComponents.UpgradeWorkflow_DD4hep.setup_
def setup_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:1046
upgradeWorkflowComponents.UpgradeWorkflow.suffix
suffix
Definition: upgradeWorkflowComponents.py:96
upgradeWorkflowComponents.UpgradeWorkflow.steps
steps
Definition: upgradeWorkflowComponents.py:87
upgradeWorkflowComponents.UpgradeWorkflow.setup
def setup(self, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:114
upgradeWorkflowComponents.UpgradeWorkflow_ProdLike.setup_
def setup_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:640
upgradeWorkflowComponents.UpgradeWorkflow_trackingOnly
Definition: upgradeWorkflowComponents.py:200
upgradeWorkflowComponents.UpgradeWorkflowPatatrack_ECALOnlyCPU.condition_
def condition_(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:522
upgradeWorkflowComponents.UpgradeWorkflow_Neutron.condition
def condition(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:691
upgradeWorkflowComponents.UpgradeWorkflow_trackingOnlyRun2.setup_
def setup_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:239
upgradeWorkflowComponents.UpgradeWorkflow.getStepName
def getStepName(self, step, extra="")
Definition: upgradeWorkflowComponents.py:101
upgradeWorkflowComponents.UpgradeWorkflowPatatrack_ECALOnlyCPU.setup_
def setup_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:516
upgradeWorkflowComponents.UpgradeFragment
Definition: upgradeWorkflowComponents.py:1293
upgradeWorkflowComponents.UpgradeWorkflow_baseline
Definition: upgradeWorkflowComponents.py:140
upgradeWorkflowComponents.UpgradeWorkflowPatatrack_PixelOnlyCPU.setup_
def setup_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:415
upgradeWorkflowComponents.UpgradeWorkflow_vectorHits
Definition: upgradeWorkflowComponents.py:337
upgradeWorkflowComponents.UpgradeWorkflowPatatrack_HCALOnlyGPU.step3
step3
Definition: upgradeWorkflowComponents.py:630
upgradeWorkflowComponents.UpgradeWorkflow.setupPU_
def setupPU_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:124
upgradeWorkflowComponents.UpgradeWorkflowPatatrack_HCALOnlyCPU.setup_
def setup_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:577
upgradeWorkflowComponents.UpgradeWorkflow_ecalDevel
Definition: upgradeWorkflowComponents.py:734
upgradeWorkflowComponents.UpgradeWorkflowAdjustPU
Definition: upgradeWorkflowComponents.py:969
join
static std::string join(char **cmd)
Definition: RemoteFile.cc:17
upgradeWorkflowComponents.UpgradeWorkflow_0T
Definition: upgradeWorkflowComponents.py:758
upgradeWorkflowComponents.UpgradeWorkflowPatatrack_PixelOnlyGPU.condition_
def condition_(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:471
upgradeWorkflowComponents.UpgradeFragment.dataset
dataset
Definition: upgradeWorkflowComponents.py:1296
upgradeWorkflowComponents.UpgradeWorkflow_trackdnn.setup_
def setup_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:356
upgradeWorkflowComponents.UpgradeWorkflowPatatrack_PixelOnlyCPU.condition_
def condition_(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:421
upgradeWorkflowComponents.UpgradeWorkflowPatatrack_PixelOnlyCPU.step3
step3
Definition: upgradeWorkflowComponents.py:438
relativeConstraints.keys
keys
Definition: relativeConstraints.py:89
upgradeWorkflowComponents.UpgradeWorkflow_Neutron
Definition: upgradeWorkflowComponents.py:680
upgradeWorkflowComponents.UpgradeWorkflowAdjustPU.setupPU_
def setupPU_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:970
upgradeWorkflowComponents.UpgradeWorkflow_ParkingBPH
Definition: upgradeWorkflowComponents.py:782
upgradeWorkflowComponents.UpgradeWorkflow_seedingDeepCore
Definition: upgradeWorkflowComponents.py:313
upgradeWorkflowComponents.UpgradeWorkflowPatatrack_PixelOnlyCPU
Definition: upgradeWorkflowComponents.py:414
upgradeWorkflowComponents.UpgradeWorkflowPremixProdLike
Definition: upgradeWorkflowComponents.py:997
upgradeWorkflowComponents.UpgradeWorkflowAging
Definition: upgradeWorkflowComponents.py:814
upgradeWorkflowComponents.UpgradeWorkflowPatatrack_PixelOnlyGPU
Definition: upgradeWorkflowComponents.py:464
upgradeWorkflowComponents.UpgradeWorkflow_pixelTrackingOnly.condition_
def condition_(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:275
upgradeWorkflowComponents.UpgradeWorkflow_trackdnn
Definition: upgradeWorkflowComponents.py:355
upgradeWorkflowComponents.UpgradeWorkflow_trackdnn.condition
def condition(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:359
any
bool any(const std::vector< T > &v, const T &what)
Definition: ECalSD.cc:38
upgradeWorkflowComponents.UpgradeWorkflow.init
def init(self, stepDict)
Definition: upgradeWorkflowComponents.py:107
upgradeWorkflowComponents.UpgradeWorkflow_Neutron.setup_
def setup_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:681
upgradeWorkflowComponents.UpgradeWorkflow_trackingOnly.step3
step3
Definition: upgradeWorkflowComponents.py:215
upgradeWorkflowComponents.UpgradeWorkflow_DD4hep.condition
def condition(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:1053
submitPVValidationJobs.split
def split(sequence, size)
Definition: submitPVValidationJobs.py:352
upgradeWorkflowComponents.UpgradeWorkflow.condition
def condition(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:133
upgradeWorkflowComponents.UpgradeWorkflowAging.condition
def condition(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:818
upgradeWorkflowComponents.UpgradeWorkflow.getStepNamePU
def getStepNamePU(self, step, extra="")
Definition: upgradeWorkflowComponents.py:104
upgradeWorkflowComponents.UpgradeWorkflow_trackingOnlyRun2.condition_
def condition_(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:243
upgradeWorkflowComponents.UpgradeWorkflowPatatrack.condition
def condition(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:399
upgradeWorkflowComponents.UpgradeWorkflow_SonicTriton.condition
def condition(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:1077
upgradeWorkflowComponents.UpgradeWorkflow_ecalDevel.setup_
def setup_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:735
str
#define str(s)
Definition: TestProcessor.cc:52
upgradeWorkflowComponents.UpgradeWorkflow_heCollapse
Definition: upgradeWorkflowComponents.py:712
upgradeWorkflowComponents.UpgradeWorkflowPatatrack_ECALOnlyGPU.step3
step3
Definition: upgradeWorkflowComponents.py:569
upgradeWorkflowComponents.UpgradeWorkflowAdjustPU.condition
def condition(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:975
upgradeWorkflowComponents.UpgradeWorkflow_trackingLowPU.setup_
def setup_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:257
upgradeWorkflowComponents.UpgradeWorkflow.__init__
def __init__(self, steps, PU, suffix, offset)
Definition: upgradeWorkflowComponents.py:86
upgradeWorkflowComponents.UpgradeWorkflow_mlpf.condition
def condition(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:378
upgradeWorkflowComponents.UpgradeWorkflow_trackingOnly.setup_
def setup_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:201
upgradeWorkflowComponents.UpgradeWorkflow_trackingRun2
Definition: upgradeWorkflowComponents.py:223
upgradeWorkflowComponents.UpgradeWorkflow_ProdLike
Definition: upgradeWorkflowComponents.py:639
upgradeWorkflowComponents.UpgradeWorkflow_mlpf.step3
step3
Definition: upgradeWorkflowComponents.py:391
upgradeWorkflowComponents.UpgradeFragment.__init__
def __init__(self, howMuch, dataset)
Definition: upgradeWorkflowComponents.py:1294
upgradeWorkflowComponents.UpgradeWorkflow_mlpf
Definition: upgradeWorkflowComponents.py:374
upgradeWorkflowComponents.UpgradeWorkflow_heCollapse.setup_
def setup_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:713
upgradeWorkflowComponents.UpgradeWorkflow_trackingLowPU
Definition: upgradeWorkflowComponents.py:256
upgradeWorkflowComponents.UpgradeWorkflow_trackingMkFit.setup_
def setup_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:295
upgradeWorkflowComponents.UpgradeWorkflow_SonicTriton.setup_
def setup_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:1075
upgradeWorkflowComponents.UpgradeWorkflowPremix.setupPU_
def setupPU_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:861
upgradeWorkflowComponents.UpgradeWorkflowPremixProdLike.condition
def condition(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:1002
upgradeWorkflowComponents.UpgradeWorkflow_trackingMkFit
Definition: upgradeWorkflowComponents.py:294
upgradeWorkflowComponents.UpgradeWorkflowTracking
Definition: upgradeWorkflowComponents.py:188
mps_setup.append
append
Definition: mps_setup.py:85
upgradeWorkflowComponents.UpgradeFragment.howMuch
howMuch
Definition: upgradeWorkflowComponents.py:1295
upgradeWorkflowComponents.UpgradeWorkflow.PU
PU
Definition: upgradeWorkflowComponents.py:88
upgradeWorkflowComponents.UpgradeWorkflowPatatrack
Definition: upgradeWorkflowComponents.py:398
upgradeWorkflowComponents.UpgradeWorkflow.setupPU
def setupPU(self, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:118
upgradeWorkflowComponents.UpgradeWorkflowPremix.workflow_
def workflow_(self, workflows, num, fragment, stepList, key)
Definition: upgradeWorkflowComponents.py:920
upgradeWorkflowComponents.UpgradeWorkflow_0T.setup_
def setup_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:759
upgradeWorkflowComponents.UpgradeWorkflow_trackingOnlyRun2
Definition: upgradeWorkflowComponents.py:238
upgradeWorkflowComponents.UpgradeWorkflow_baseline.setup_
def setup_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:141
upgradeWorkflowComponents.UpgradeWorkflowPatatrack_ECALOnlyCPU
Definition: upgradeWorkflowComponents.py:515
createfilelist.int
int
Definition: createfilelist.py:10
upgradeWorkflowComponents.UpgradeWorkflow.workflow_
def workflow_(self, workflows, num, fragment, stepList, key)
Definition: upgradeWorkflowComponents.py:129
upgradeWorkflowComponents.UpgradeWorkflowPatatrack_ECALOnlyGPU
Definition: upgradeWorkflowComponents.py:545
upgradeWorkflowComponents.UpgradeWorkflow_heCollapse.condition
def condition(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:715
upgradeWorkflowComponents.UpgradeWorkflowPatatrack_ECALOnlyGPU.condition_
def condition_(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:552
upgradeWorkflowComponents.UpgradeWorkflowPremix.setup_
def setup_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:858
upgradeWorkflowComponents.UpgradeWorkflowPremixProdLike.setup_
def setup_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:998
upgradeWorkflowComponents.UpgradeWorkflowTracking.condition
def condition(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:189
upgradeWorkflowComponents.UpgradeWorkflowAging.lumi
lumi
Definition: upgradeWorkflowComponents.py:839
upgradeWorkflowComponents.UpgradeWorkflowPatatrack_PixelOnlyGPU.step3
step3
Definition: upgradeWorkflowComponents.py:488
upgradeWorkflowComponents.UpgradeWorkflow
Definition: upgradeWorkflowComponents.py:85
upgradeWorkflowComponents.UpgradeWorkflow_0T.condition
def condition(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:763
upgradeWorkflowComponents.UpgradeWorkflow_pixelTrackingOnly.step3
step3
Definition: upgradeWorkflowComponents.py:288
upgradeWorkflowComponents.UpgradeWorkflowPatatrack.condition_
def condition_(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:411
upgradeWorkflowComponents.UpgradeWorkflow_JMENano
Definition: upgradeWorkflowComponents.py:797
upgradeWorkflowComponents.UpgradeWorkflow_ecalDevel.condition
def condition(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:741
upgradeWorkflowComponents.UpgradeWorkflowPremix
Definition: upgradeWorkflowComponents.py:857
upgradeWorkflowComponents.UpgradeWorkflow_trackingOnlyRun2.step3
step3
Definition: upgradeWorkflowComponents.py:254
upgradeWorkflowComponents.UpgradeWorkflow_Neutron.neutronKeys
neutronKeys
Definition: upgradeWorkflowComponents.py:709
upgradeWorkflowComponents.UpgradeWorkflowPatatrack_HCALOnlyCPU.condition_
def condition_(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:583
upgradeWorkflowComponents.UpgradeWorkflow.allowReuse
allowReuse
Definition: upgradeWorkflowComponents.py:89
upgradeWorkflowComponents.UpgradeWorkflowPatatrack_ECALOnlyGPU.setup_
def setup_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:546
upgradeWorkflowComponents.UpgradeWorkflowPatatrack_PixelOnlyGPU.setup_
def setup_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:465
upgradeWorkflowComponents.UpgradeWorkflowPatatrack_HCALOnlyGPU.condition_
def condition_(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:613
upgradeWorkflowComponents.UpgradeWorkflow_trackingRun2.setup_
def setup_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:224
upgradeWorkflowComponents.UpgradeWorkflow_ProdLike.condition
def condition(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:653
upgradeWorkflowComponents.UpgradeWorkflowAging.setup_
def setup_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:815
upgradeWorkflowComponents.UpgradeWorkflowPatatrack_HCALOnlyCPU
Definition: upgradeWorkflowComponents.py:576
upgradeWorkflowComponents.UpgradeWorkflowPatatrack_HCALOnlyGPU
Definition: upgradeWorkflowComponents.py:606
upgradeWorkflowComponents.UpgradeWorkflowPremix.condition
def condition(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:912
upgradeWorkflowComponents.UpgradeWorkflow_seedingDeepCore.condition
def condition(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:316
upgradeWorkflowComponents.UpgradeWorkflow_SonicTriton
Definition: upgradeWorkflowComponents.py:1074
upgradeWorkflowComponents.UpgradeWorkflow.setup_
def setup_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:122
upgradeWorkflowComponents.UpgradeWorkflow_baseline.condition
def condition(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:148
upgradeWorkflowComponents.UpgradeWorkflow_trackingLowPU.condition_
def condition_(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:260
upgradeWorkflowComponents.UpgradeWorkflow_trackingMkFit.step3
step3
Definition: upgradeWorkflowComponents.py:308
upgradeWorkflowComponents.UpgradeWorkflow.workflow
def workflow(self, workflows, num, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:126
upgradeWorkflowComponents.UpgradeWorkflow_ParkingBPH.setup_
def setup_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:783
upgradeWorkflowComponents.UpgradeWorkflowPatatrack_HCALOnlyGPU.setup_
def setup_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:607
upgradeWorkflowComponents.UpgradeWorkflow_DD4hep
Definition: upgradeWorkflowComponents.py:1045
upgradeWorkflowComponents.UpgradeWorkflow_mlpf.setup_
def setup_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:375
upgradeWorkflowComponents.UpgradeWorkflow_pixelTrackingOnly.setup_
def setup_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:272
upgradeWorkflowComponents.UpgradeWorkflow_vectorHits.setup_
def setup_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:338
upgradeWorkflowComponents.UpgradeWorkflow_seedingDeepCore.setup_
def setup_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:314
upgradeWorkflowComponents.UpgradeWorkflow_JMENano.setup_
def setup_(self, step, stepName, stepDict, k, properties)
Definition: upgradeWorkflowComponents.py:798
upgradeWorkflowComponents.UpgradeWorkflow_Neutron.neutronFrags
neutronFrags
Definition: upgradeWorkflowComponents.py:710
upgradeWorkflowComponents.UpgradeWorkflowPatatrack_ECALOnlyCPU.step3
step3
Definition: upgradeWorkflowComponents.py:539
MatrixUtil.Kby
def Kby(N, s)
Standard release validation samples ####.
Definition: MatrixUtil.py:231
merge
Definition: merge.py:1
upgradeWorkflowComponents.UpgradeWorkflow_ParkingBPH.condition
def condition(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:786
python.rootplot.root2matplotlib.replace
def replace(string, replacements)
Definition: root2matplotlib.py:444
upgradeWorkflowComponents.UpgradeWorkflow_pixelTrackingOnly
Definition: upgradeWorkflowComponents.py:271
upgradeWorkflowComponents.UpgradeWorkflowTracking.condition_
def condition_(self, fragment, stepList, key, hasHarvest)
Definition: upgradeWorkflowComponents.py:197