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