CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Public Attributes | Private Attributes
ConfigBuilder.ConfigBuilder Class Reference
Inheritance diagram for ConfigBuilder.ConfigBuilder:

Classes

class  MassSearchReplaceProcessNameVisitor
 

Public Member Functions

def __init__ (self, options, process=None, with_output=False, with_input=False)
 
def addCommon (self)
 
def addConditions (self)
 
def addCustomise (self, unsch=0)
 
def addCustomiseCmdLine (self)
 
def addExtraStream (self, name, stream, workflow='full')
 
def addMaxEvents (self)
 
def addOutput (self)
 
def addSource (self)
 
def addStandardSequences (self)
 
def build_production_info (self, evt_type, evtnumber)
 
def completeInputCommand (self)
 
def create_process (self)
 
def define_Configs (self)
 
def executeAndRemember (self, command)
 
def expandMapping (self, seqList, mapping, index=None)
 
def finalizeFastSimHLT (self)
 
def load (self, includeFile)
 
def loadAndRemember (self, includeFile)
 
def loadDefaultOrSpecifiedCFF (self, sequence, defaultCFF)
 
def prepare (self, doChecking=False)
 
def prepare_ALCA (self, sequence=None, workflow='full')
 
def prepare_ALCAHARVEST (self, sequence=None)
 
def prepare_ALCAOUTPUT (self, sequence=None)
 
def prepare_ALCAPRODUCER (self, sequence=None)
 
def prepare_CFWRITER (self, sequence=None)
 
def prepare_DATAMIX (self, sequence=None)
 
def prepare_DIGI (self, sequence=None)
 
def prepare_DIGI2RAW (self, sequence=None)
 
def prepare_DQM (self, sequence='DQMOffline')
 
def prepare_EI (self, sequence=None)
 
def prepare_ENDJOB (self, sequence='endOfProcess')
 
def prepare_FILTER (self, sequence=None)
 
def prepare_GEN (self, sequence=None)
 
def prepare_HARVESTING (self, sequence=None)
 
def prepare_HLT (self, sequence=None)
 
def prepare_L1 (self, sequence=None)
 
def prepare_L1HwVal (self, sequence='L1HwVal')
 
def prepare_L1Reco (self, sequence="L1Reco")
 
def prepare_L1REPACK (self, sequence=None)
 
def prepare_L1TrackTrigger (self, sequence="L1TrackTrigger")
 
def prepare_LHE (self, sequence=None)
 
def prepare_NANO (self, sequence="nanoAOD")
 
def prepare_PAT (self, sequence="miniAOD")
 
def prepare_PATFILTER (self, sequence=None)
 
def prepare_PATGEN (self, sequence="miniGEN")
 
def prepare_POSTRECO (self, sequence=None)
 
def prepare_RAW2DIGI (self, sequence="RawToDigi")
 
def prepare_RAW2RECO (self, sequence=None)
 
def prepare_RECO (self, sequence="reconstruction")
 
def prepare_RECOBEFMIX (self, sequence="reconstruction")
 
def prepare_RECOSIM (self, sequence="recosim")
 
def prepare_REPACK (self, sequence=None)
 
def prepare_SIM (self, sequence=None)
 
def prepare_SKIM (self, sequence="all")
 
def prepare_USER (self, sequence=None)
 
def prepare_VALIDATION (self, sequence='validation')
 
def profileOptions (self)
 
def renameHLTprocessInSequence (self, sequence, proc=None, HLTprocess='HLT')
 
def renameInputTagsInSequence (self, sequence, oldT="rawDataCollector", newT="rawDataRepacker")
 
def scheduleSequence (self, seq, prefix, what='Path')
 
def scheduleSequenceAtEnd (self, seq, prefix)
 

Public Attributes

 addedObjects
 
 additionalCommands
 
 additionalOutputs
 
 ALCADefaultCFF
 
 ALCADefaultSeq
 
 ALCAHARVESTDefaultCFF
 
 ALCAHARVESTDefaultSeq
 
 AlCaPaths
 
 blacklist_paths
 
 CFWRITERDefaultCFF
 
 CFWRITERDefaultSeq
 
 conditionalPaths
 
 ConditionsDefaultCFF
 
 DATAMIXDefaultCFF
 
 DATAMIXDefaultSeq
 
 DIGI2RAWDefaultCFF
 
 DIGI2RAWDefaultSeq
 
 DIGIDefaultCFF
 
 DIGIDefaultSeq
 
 DQMDefaultSeq
 
 DQMOFFLINEDefaultCFF
 
 DQMSaverCFF
 
 EIDefaultCFF
 
 EIDefaultSeq
 
 ENDJOBDefaultCFF
 
 ENDJOBDefaultSeq
 
 EVTCONTDefaultCFF
 
 excludedPaths
 
 GENDefaultCFF
 
 GENDefaultSeq
 
 GeometryCFF
 
 geometryDBLabel
 
 HARVESTINGDefaultCFF
 
 HARVESTINGDefaultSeq
 
 HLTDefaultCFF
 
 HLTDefaultSeq
 
 imports
 
 inliner
 load the relevant part More...
 
 L1DefaultSeq
 
 L1EMDefaultCFF
 
 L1HwValDefaultCFF
 
 L1HwValDefaultSeq
 
 L1MENUDefaultCFF
 
 L1RecoDefaultCFF
 
 L1RecoDefaultSeq
 
 L1REPACKDefaultSeq
 
 L1TrackTriggerDefaultCFF
 
 L1TrackTriggerDefaultSeq
 
 labelsToAssociate
 
 LHEDefaultSeq
 
 magFieldCFF
 
 NANODefaultCFF
 
 NANODefaultSeq
 
 nextScheduleIsConditional
 put the filtering path in the schedule More...
 
 PATDefaultCFF
 
 PATDefaultSeq
 
 PATGENDefaultCFF
 
 PATGENDefaultSeq
 
 POSTRECODefaultCFF
 
 POSTRECODefaultSeq
 
 process
 adding standard sequences might change the inputEventContent option and therefore needs to be finalized after More...
 
 productionFilterSequence
 put it before all the other paths More...
 
 pythonCfgCode
 
 RAW2DIGIDefaultCFF
 
 RAW2DIGIDefaultSeq
 
 RAW2RECODefaultSeq
 
 RECOBEFMIXDefaultCFF
 
 RECOBEFMIXDefaultSeq
 
 RECODefaultCFF
 
 RECODefaultSeq
 
 RECOSIMDefaultCFF
 
 RECOSIMDefaultSeq
 
 REDIGIDefaultSeq
 
 REPACKDefaultCFF
 
 REPACKDefaultSeq
 
 runsAndWeights
 drop LHEXMLStringProduct on input to save memory if appropriate More...
 
 schedule
 
 SIMDefaultCFF
 
 SIMDefaultSeq
 
 SimGeometryCFF
 
 SKIMDefaultCFF
 
 stepKeys
 
 stepMap
 
 USERDefaultCFF
 
 USERDefaultSeq
 
 VALIDATIONDefaultCFF
 
 VALIDATIONDefaultSeq
 
 with_input
 
 with_output
 

Private Attributes

 _options
 

Detailed Description

The main building routines 

Definition at line 193 of file ConfigBuilder.py.

Constructor & Destructor Documentation

◆ __init__()

def ConfigBuilder.ConfigBuilder.__init__ (   self,
  options,
  process = None,
  with_output = False,
  with_input = False 
)
options taken from old cmsDriver and optparse 

Definition at line 196 of file ConfigBuilder.py.

196  def __init__(self, options, process = None, with_output = False, with_input = False ):
197  """options taken from old cmsDriver and optparse """
198 
199  options.outfile_name = options.dirout+options.fileout
200 
201  self._options = options
202 
203  if self._options.isData and options.isMC:
204  raise Exception("ERROR: You may specify only --data or --mc, not both")
205  #if not self._options.conditions:
206  # raise Exception("ERROR: No conditions given!\nPlease specify conditions. E.g. via --conditions=IDEAL_30X::All")
207 
208  # check that MEtoEDMConverter (running in ENDJOB) and DQMIO don't run in the same job
209  if 'ENDJOB' in self._options.step:
210  if (hasattr(self._options,"outputDefinition") and \
211  self._options.outputDefinition != '' and \
212  any(anyOf(['t','tier','dataTier'],outdic) == 'DQMIO' for outdic in eval(self._options.outputDefinition))) or \
213  (hasattr(self._options,"datatier") and \
214  self._options.datatier and \
215  'DQMIO' in self._options.datatier):
216  print("removing ENDJOB from steps since not compatible with DQMIO dataTier")
217  self._options.step=self._options.step.replace(',ENDJOB','')
218 
219 
220 
221  # what steps are provided by this class?
222  stepList = [re.sub(r'^prepare_', '', methodName) for methodName in ConfigBuilder.__dict__ if methodName.startswith('prepare_')]
223  self.stepMap={}
224  self.stepKeys=[]
225  for step in self._options.step.split(","):
226  if step=='': continue
227  stepParts = step.split(":")
228  stepName = stepParts[0]
229  if stepName not in stepList and not stepName.startswith('re'):
230  raise ValueError("Step "+stepName+" unknown")
231  if len(stepParts)==1:
232  self.stepMap[stepName]=""
233  elif len(stepParts)==2:
234  self.stepMap[stepName]=stepParts[1].split('+')
235  elif len(stepParts)==3:
236  self.stepMap[stepName]=(stepParts[2].split('+'),stepParts[1])
237  else:
238  raise ValueError("Step definition "+step+" invalid")
239  self.stepKeys.append(stepName)
240 
241  #print "map of steps is:",self.stepMap
242 
243  self.with_output = with_output
244  self.process=process
245 
246  if hasattr(self._options,"no_output_flag") and self._options.no_output_flag:
247  self.with_output = False
248  self.with_input = with_input
249  self.imports = []
250  self.create_process()
251  self.define_Configs()
252  self.schedule = list()
253 
254  # we are doing three things here:
255  # creating a process to catch errors
256  # building the code to re-create the process
257 
258  self.additionalCommands = []
259  # TODO: maybe a list of to be dumped objects would help as well
260  self.blacklist_paths = []
261  self.addedObjects = []
262  self.additionalOutputs = {}
263 
264  self.productionFilterSequence = None
265  self.labelsToAssociate=[]
266  self.nextScheduleIsConditional=False
267  self.conditionalPaths=[]
268  self.excludedPaths=[]
269 

Referenced by ConfigBuilder.ConfigBuilder.prepare_FILTER().

Member Function Documentation

◆ addCommon()

def ConfigBuilder.ConfigBuilder.addCommon (   self)

Definition at line 337 of file ConfigBuilder.py.

337  def addCommon(self):
338  if 'HARVESTING' in self.stepMap.keys() or 'ALCAHARVEST' in self.stepMap.keys():
339  self.process.options = cms.untracked.PSet( Rethrow = cms.untracked.vstring('ProductNotFound'),fileMode = cms.untracked.string('FULLMERGE'))
340  else:
341  self.process.options = cms.untracked.PSet( )
342 
343  self.addedObjects.append(("","options"))
344 
345  if self._options.lazy_download:
346  self.process.AdaptorConfig = cms.Service("AdaptorConfig",
347  stats = cms.untracked.bool(True),
348  enable = cms.untracked.bool(True),
349  cacheHint = cms.untracked.string("lazy-download"),
350  readHint = cms.untracked.string("read-ahead-buffered")
351  )
352  self.addedObjects.append(("Setup lazy download","AdaptorConfig"))
353 
354  #self.process.cmsDriverCommand = cms.untracked.PSet( command=cms.untracked.string('cmsDriver.py '+self._options.arguments) )
355  #self.addedObjects.append(("what cmsDriver command was used","cmsDriverCommand"))
356 
357  if self._options.profile:
358  (start, interval, eventFormat, jobFormat)=self.profileOptions()
359  self.process.IgProfService = cms.Service("IgProfService",
360  reportFirstEvent = cms.untracked.int32(start),
361  reportEventInterval = cms.untracked.int32(interval),
362  reportToFileAtPostEvent = cms.untracked.string("| gzip -c > %s"%(eventFormat)),
363  reportToFileAtPostEndJob = cms.untracked.string("| gzip -c > %s"%(jobFormat)))
364  self.addedObjects.append(("Setup IGProf Service for profiling","IgProfService"))
365 

References ConfigBuilder.ConfigBuilder._options, ConfigBuilder.ConfigBuilder.addedObjects, mps_setup.append, relativeConstraints.keys, DTT0WireWorkflow.DTT0WireWorkflow.process, DTVdriftWorkflow.DTvdriftWorkflow.process, DTTtrigWorkflow.DTttrigWorkflow.process, DTWorkflow.DTWorkflow.process, ConfigBuilder.ConfigBuilder.process, ConfigBuilder.ConfigBuilder.profileOptions(), and ConfigBuilder.ConfigBuilder.stepMap.

Referenced by ConfigBuilder.ConfigBuilder.prepare().

◆ addConditions()

def ConfigBuilder.ConfigBuilder.addConditions (   self)
Add conditions to the process

Definition at line 808 of file ConfigBuilder.py.

808  def addConditions(self):
809  """Add conditions to the process"""
810  if not self._options.conditions: return
811 
812  if 'FrontierConditions_GlobalTag' in self._options.conditions:
813  print('using FrontierConditions_GlobalTag in --conditions is not necessary anymore and will be deprecated soon. please update your command line')
814  self._options.conditions = self._options.conditions.replace("FrontierConditions_GlobalTag,",'')
815 
816  self.loadAndRemember(self.ConditionsDefaultCFF)
817  from Configuration.AlCa.GlobalTag import GlobalTag
818  self.process.GlobalTag = GlobalTag(self.process.GlobalTag, self._options.conditions, self._options.custom_conditions)
819  self.additionalCommands.append('from Configuration.AlCa.GlobalTag import GlobalTag')
820  self.additionalCommands.append('process.GlobalTag = GlobalTag(process.GlobalTag, %s, %s)' % (repr(self._options.conditions), repr(self._options.custom_conditions)))
821 
822 

References ConfigBuilder.ConfigBuilder._options, ConfigBuilder.ConfigBuilder.addCustomise(), ConfigBuilder.ConfigBuilder.additionalCommands, mps_setup.append, ConfigBuilder.ConfigBuilder.ConditionsDefaultCFF, ConfigBuilder.ConfigBuilder.loadAndRemember(), edm.print(), DTT0WireWorkflow.DTT0WireWorkflow.process, DTVdriftWorkflow.DTvdriftWorkflow.process, DTTtrigWorkflow.DTttrigWorkflow.process, DTWorkflow.DTWorkflow.process, and ConfigBuilder.ConfigBuilder.process.

Referenced by ConfigBuilder.ConfigBuilder.completeInputCommand(), and ConfigBuilder.ConfigBuilder.prepare().

◆ addCustomise()

def ConfigBuilder.ConfigBuilder.addCustomise (   self,
  unsch = 0 
)
Include the customise code 

Definition at line 823 of file ConfigBuilder.py.

823  def addCustomise(self,unsch=0):
824  """Include the customise code """
825 
826  custOpt=[]
827  if unsch==0:
828  for c in self._options.customisation_file:
829  custOpt.extend(c.split(","))
830  else:
831  for c in self._options.customisation_file_unsch:
832  custOpt.extend(c.split(","))
833 
834  custMap=DictTypes.SortedKeysDict()
835  for opt in custOpt:
836  if opt=='': continue
837  if opt.count('.')>1:
838  raise Exception("more than . in the specification:"+opt)
839  fileName=opt.split('.')[0]
840  if opt.count('.')==0: rest='customise'
841  else:
842  rest=opt.split('.')[1]
843  if rest=='py': rest='customise' #catch the case of --customise file.py
844 
845  if fileName in custMap:
846  custMap[fileName].extend(rest.split('+'))
847  else:
848  custMap[fileName]=rest.split('+')
849 
850  if len(custMap)==0:
851  final_snippet='\n'
852  else:
853  final_snippet='\n# customisation of the process.\n'
854 
855  allFcn=[]
856  for opt in custMap:
857  allFcn.extend(custMap[opt])
858  for fcn in allFcn:
859  if allFcn.count(fcn)!=1:
860  raise Exception("cannot specify twice "+fcn+" as a customisation method")
861 
862  for f in custMap:
863  # let python search for that package and do syntax checking at the same time
864  packageName = f.replace(".py","").replace("/",".")
865  __import__(packageName)
866  package = sys.modules[packageName]
867 
868  # now ask the package for its definition and pick .py instead of .pyc
869  customiseFile = re.sub(r'\.pyc$', '.py', package.__file__)
870 
871  final_snippet+='\n# Automatic addition of the customisation function from '+packageName+'\n'
872  if self._options.inline_custom:
873  for line in file(customiseFile,'r'):
874  if "import FWCore.ParameterSet.Config" in line:
875  continue
876  final_snippet += line
877  else:
878  final_snippet += 'from %s import %s \n'%(packageName,','.join(custMap[f]))
879  for fcn in custMap[f]:
880  print("customising the process with",fcn,"from",f)
881  if not hasattr(package,fcn):
882  #bound to fail at run time
883  raise Exception("config "+f+" has no function "+fcn)
884  #execute the command
885  self.process=getattr(package,fcn)(self.process)
886  #and print it in the configuration
887  final_snippet += "\n#call to customisation function "+fcn+" imported from "+packageName
888  final_snippet += "\nprocess = %s(process)\n"%(fcn,)
889 
890  if len(custMap)!=0:
891  final_snippet += '\n# End of customisation functions\n'
892 
893 
894  return final_snippet
895 

References ConfigBuilder.ConfigBuilder._options, ConfigBuilder.ConfigBuilder.addCustomiseCmdLine(), FrontierConditions_GlobalTag_cff.file, join(), edm.print(), DTT0WireWorkflow.DTT0WireWorkflow.process, DTVdriftWorkflow.DTvdriftWorkflow.process, DTTtrigWorkflow.DTttrigWorkflow.process, DTWorkflow.DTWorkflow.process, ConfigBuilder.ConfigBuilder.process, and python.rootplot.root2matplotlib.replace().

Referenced by ConfigBuilder.ConfigBuilder.addConditions(), and ConfigBuilder.ConfigBuilder.prepare().

◆ addCustomiseCmdLine()

def ConfigBuilder.ConfigBuilder.addCustomiseCmdLine (   self)

Definition at line 896 of file ConfigBuilder.py.

896  def addCustomiseCmdLine(self):
897  final_snippet='\n# Customisation from command line\n'
898  if self._options.customise_commands:
899  import string
900  for com in self._options.customise_commands.split('\\n'):
901  com=com.lstrip()
902  self.executeAndRemember(com)
903  final_snippet +='\n'+com
904 
905  return final_snippet
906 

References ConfigBuilder.ConfigBuilder._options, ConfigBuilder.ConfigBuilder.define_Configs(), and ConfigBuilder.ConfigBuilder.executeAndRemember().

Referenced by ConfigBuilder.ConfigBuilder.addCustomise(), and ConfigBuilder.ConfigBuilder.prepare().

◆ addExtraStream()

def ConfigBuilder.ConfigBuilder.addExtraStream (   self,
  name,
  stream,
  workflow = 'full' 
)

Definition at line 1128 of file ConfigBuilder.py.

1128  def addExtraStream(self,name,stream,workflow='full'):
1129  # define output module and go from there
1130  output = cms.OutputModule("PoolOutputModule")
1131  if stream.selectEvents.parameters_().__len__()!=0:
1132  output.SelectEvents = stream.selectEvents
1133  else:
1134  output.SelectEvents = cms.untracked.PSet()
1135  output.SelectEvents.SelectEvents=cms.vstring()
1136  if isinstance(stream.paths,tuple):
1137  for path in stream.paths:
1138  output.SelectEvents.SelectEvents.append(path.label())
1139  else:
1140  output.SelectEvents.SelectEvents.append(stream.paths.label())
1141 
1142 
1143 
1144  if isinstance(stream.content,str):
1145  evtPset=getattr(self.process,stream.content)
1146  for p in evtPset.parameters_():
1147  setattr(output,p,getattr(evtPset,p))
1148  if not self._options.inlineEventContent:
1149  def doNotInlineEventContent(instance,label = "process."+stream.content+".outputCommands"):
1150  return label
1151  output.outputCommands.__dict__["dumpPython"] = doNotInlineEventContent
1152  else:
1153  output.outputCommands = stream.content
1154 
1155 
1156  output.fileName = cms.untracked.string(self._options.dirout+stream.name+'.root')
1157 
1158  output.dataset = cms.untracked.PSet( dataTier = stream.dataTier,
1159  filterName = cms.untracked.string(stream.name))
1160 
1161  if self._options.filtername:
1162  output.dataset.filterName= cms.untracked.string(self._options.filtername+"_"+stream.name)
1163 
1164  #add an automatic flushing to limit memory consumption
1165  output.eventAutoFlushCompressedSize=cms.untracked.int32(5*1024*1024)
1166 
1167  if workflow in ("producers,full"):
1168  if isinstance(stream.paths,tuple):
1169  for path in stream.paths:
1170  self.schedule.append(path)
1171  else:
1172  self.schedule.append(stream.paths)
1173 
1174 
1175  # in case of relvals we don't want to have additional outputs
1176  if (not self._options.relval) and workflow in ("full","output"):
1177  self.additionalOutputs[name] = output
1178  setattr(self.process,name,output)
1179 
1180  if workflow == 'output':
1181  # adjust the select events to the proper trigger results from previous process
1182  filterList = output.SelectEvents.SelectEvents
1183  for i, filter in enumerate(filterList):
1184  filterList[i] = filter+":"+self._options.triggerResultsProcess
1185 
1186  return output
1187 

Referenced by ConfigBuilder.ConfigBuilder.prepare_SKIM().

◆ addMaxEvents()

def ConfigBuilder.ConfigBuilder.addMaxEvents (   self)
Here we decide how many evts will be processed

Definition at line 366 of file ConfigBuilder.py.

366  def addMaxEvents(self):
367  """Here we decide how many evts will be processed"""
368  self.process.maxEvents=cms.untracked.PSet(input=cms.untracked.int32(int(self._options.number)))
369  if self._options.number_out:
370  self.process.maxEvents.output = cms.untracked.int32(int(self._options.number_out))
371  self.addedObjects.append(("","maxEvents"))
372 

References ConfigBuilder.ConfigBuilder._options, ConfigBuilder.ConfigBuilder.addedObjects, mps_setup.append, createfilelist.int, DTT0WireWorkflow.DTT0WireWorkflow.process, DTVdriftWorkflow.DTvdriftWorkflow.process, DTTtrigWorkflow.DTttrigWorkflow.process, DTWorkflow.DTWorkflow.process, and ConfigBuilder.ConfigBuilder.process.

Referenced by ConfigBuilder.ConfigBuilder.prepare().

◆ addOutput()

def ConfigBuilder.ConfigBuilder.addOutput (   self)
Add output module to the process 

Definition at line 501 of file ConfigBuilder.py.

501  def addOutput(self):
502  """ Add output module to the process """
503  result=""
504  if self._options.outputDefinition:
505  if self._options.datatier:
506  print("--datatier & --eventcontent options ignored")
507 
508  #new output convention with a list of dict
509  outList = eval(self._options.outputDefinition)
510  for (id,outDefDict) in enumerate(outList):
511  outDefDictStr=outDefDict.__str__()
512  if not isinstance(outDefDict,dict):
513  raise Exception("--output needs to be passed a list of dict"+self._options.outputDefinition+" is invalid")
514  #requires option: tier
515  theTier=anyOf(['t','tier','dataTier'],outDefDict)
516  #optional option: eventcontent, filtername, selectEvents, moduleLabel, filename
517 
518  theStreamType=anyOf(['e','ec','eventContent','streamType'],outDefDict,theTier)
519  theFilterName=anyOf(['f','ftN','filterName'],outDefDict,'')
520  theSelectEvent=anyOf(['s','sE','selectEvents'],outDefDict,'')
521  theModuleLabel=anyOf(['l','mL','moduleLabel'],outDefDict,'')
522  theExtraOutputCommands=anyOf(['o','oC','outputCommands'],outDefDict,'')
523  # module label has a particular role
524  if not theModuleLabel:
525  tryNames=[theStreamType.replace(theTier.replace('-',''),'')+theTier.replace('-','')+'output',
526  theStreamType.replace(theTier.replace('-',''),'')+theTier.replace('-','')+theFilterName+'output',
527  theStreamType.replace(theTier.replace('-',''),'')+theTier.replace('-','')+theFilterName+theSelectEvent.split(',')[0].replace(':','for').replace(' ','')+'output'
528  ]
529  for name in tryNames:
530  if not hasattr(self.process,name):
531  theModuleLabel=name
532  break
533  if not theModuleLabel:
534  raise Exception("cannot find a module label for specification: "+outDefDictStr)
535  if id==0:
536  defaultFileName=self._options.outfile_name
537  else:
538  defaultFileName=self._options.outfile_name.replace('.root','_in'+theTier+'.root')
539 
540  theFileName=self._options.dirout+anyOf(['fn','fileName'],outDefDict,defaultFileName)
541  if not theFileName.endswith('.root'):
542  theFileName+='.root'
543 
544  if len(outDefDict):
545  raise Exception("unused keys from --output options: "+','.join(outDefDict.keys()))
546  if theStreamType=='DQMIO': theStreamType='DQM'
547  if theStreamType=='ALL':
548  theEventContent = cms.PSet(outputCommands = cms.untracked.vstring('keep *'))
549  else:
550  theEventContent = getattr(self.process, theStreamType+"EventContent")
551 
552 
553  addAlCaSelects=False
554  if theStreamType=='ALCARECO' and not theFilterName:
555  theFilterName='StreamALCACombined'
556  addAlCaSelects=True
557 
558  CppType='PoolOutputModule'
559  if self._options.timeoutOutput:
560  CppType='TimeoutPoolOutputModule'
561  if theStreamType=='DQM' and theTier=='DQMIO': CppType='DQMRootOutputModule'
562  output = cms.OutputModule(CppType,
563  theEventContent.clone(),
564  fileName = cms.untracked.string(theFileName),
565  dataset = cms.untracked.PSet(
566  dataTier = cms.untracked.string(theTier),
567  filterName = cms.untracked.string(theFilterName))
568  )
569  if not theSelectEvent and hasattr(self.process,'generation_step') and theStreamType!='LHE':
570  output.SelectEvents = cms.untracked.PSet(SelectEvents = cms.vstring('generation_step'))
571  if not theSelectEvent and hasattr(self.process,'filtering_step'):
572  output.SelectEvents = cms.untracked.PSet(SelectEvents = cms.vstring('filtering_step'))
573  if theSelectEvent:
574  output.SelectEvents =cms.untracked.PSet(SelectEvents = cms.vstring(theSelectEvent))
575 
576  if addAlCaSelects:
577  if not hasattr(output,'SelectEvents'):
578  output.SelectEvents=cms.untracked.PSet(SelectEvents=cms.vstring())
579  for alca in self.AlCaPaths:
580  output.SelectEvents.SelectEvents.extend(getattr(self.process,'OutALCARECO'+alca).SelectEvents.SelectEvents)
581 
582 
583  if hasattr(self.process,theModuleLabel):
584  raise Exception("the current process already has a module "+theModuleLabel+" defined")
585  #print "creating output module ",theModuleLabel
586  setattr(self.process,theModuleLabel,output)
587  outputModule=getattr(self.process,theModuleLabel)
588  setattr(self.process,theModuleLabel+'_step',cms.EndPath(outputModule))
589  path=getattr(self.process,theModuleLabel+'_step')
590  self.schedule.append(path)
591 
592  if not self._options.inlineEventContent and hasattr(self.process,theStreamType+"EventContent"):
593  def doNotInlineEventContent(instance,label = "cms.untracked.vstring(process."+theStreamType+"EventContent.outputCommands)"): return label
594  outputModule.outputCommands.__dict__["dumpPython"] = doNotInlineEventContent
595  if theExtraOutputCommands:
596  if not isinstance(theExtraOutputCommands,list):
597  raise Exception("extra ouput command in --option must be a list of strings")
598  if hasattr(self.process,theStreamType+"EventContent"):
599  self.executeAndRemember('process.%s.outputCommands.extend(%s)'%(theModuleLabel,theExtraOutputCommands))
600  else:
601  outputModule.outputCommands.extend(theExtraOutputCommands)
602 
603  result+="\nprocess."+theModuleLabel+" = "+outputModule.dumpPython()
604 
605 
606  return result
607 
608  streamTypes=self._options.eventcontent.split(',')
609  tiers=self._options.datatier.split(',')
610  if not self._options.outputDefinition and len(streamTypes)!=len(tiers):
611  raise Exception("number of event content arguments does not match number of datatier arguments")
612 
613  # if the only step is alca we don't need to put in an output
614  if self._options.step.split(',')[0].split(':')[0] == 'ALCA':
615  return "\n"
616 
617  for i,(streamType,tier) in enumerate(zip(streamTypes,tiers)):
618  if streamType=='': continue
619  if streamType == 'ALCARECO' and not 'ALCAPRODUCER' in self._options.step: continue
620  if streamType=='DQMIO': streamType='DQM'
621  eventContent=streamType
622 
623  if streamType == "NANOEDMAOD" :
624  eventContent = "NANOAOD"
625  elif streamType == "NANOEDMAODSIM" :
626  eventContent = "NANOAODSIM"
627  theEventContent = getattr(self.process, eventContent+"EventContent")
628  if i==0:
629  theFileName=self._options.outfile_name
630  theFilterName=self._options.filtername
631  else:
632  theFileName=self._options.outfile_name.replace('.root','_in'+streamType+'.root')
633  theFilterName=self._options.filtername
634  CppType='PoolOutputModule'
635  if self._options.timeoutOutput:
636  CppType='TimeoutPoolOutputModule'
637  if streamType=='DQM' and tier=='DQMIO': CppType='DQMRootOutputModule'
638  if "NANOAOD" in streamType : CppType='NanoAODOutputModule'
639  output = cms.OutputModule(CppType,
640  theEventContent,
641  fileName = cms.untracked.string(theFileName),
642  dataset = cms.untracked.PSet(dataTier = cms.untracked.string(tier),
643  filterName = cms.untracked.string(theFilterName)
644  )
645  )
646  if hasattr(self.process,"generation_step") and streamType!='LHE':
647  output.SelectEvents = cms.untracked.PSet(SelectEvents = cms.vstring('generation_step'))
648  if hasattr(self.process,"filtering_step"):
649  output.SelectEvents = cms.untracked.PSet(SelectEvents = cms.vstring('filtering_step'))
650 
651  if streamType=='ALCARECO':
652  output.dataset.filterName = cms.untracked.string('StreamALCACombined')
653 
654  if "MINIAOD" in streamType:
655  from PhysicsTools.PatAlgos.slimming.miniAOD_tools import miniAOD_customizeOutput
657 
658  outputModuleName=streamType+'output'
659  setattr(self.process,outputModuleName,output)
660  outputModule=getattr(self.process,outputModuleName)
661  setattr(self.process,outputModuleName+'_step',cms.EndPath(outputModule))
662  path=getattr(self.process,outputModuleName+'_step')
663  self.schedule.append(path)
664 
665  if self._options.outputCommands and streamType!='DQM':
666  for evct in self._options.outputCommands.split(','):
667  if not evct: continue
668  self.executeAndRemember("process.%s.outputCommands.append('%s')"%(outputModuleName,evct.strip()))
669 
670  if not self._options.inlineEventContent:
671  tmpstreamType=streamType
672  if "NANOEDM" in tmpstreamType :
673  tmpstreamType=tmpstreamType.replace("NANOEDM","NANO")
674  def doNotInlineEventContent(instance,label = "process."+tmpstreamType+"EventContent.outputCommands"):
675  return label
676  outputModule.outputCommands.__dict__["dumpPython"] = doNotInlineEventContent
677 
678  result+="\nprocess."+outputModuleName+" = "+outputModule.dumpPython()
679 
680  return result
681 
682 

References ConfigBuilder.ConfigBuilder._options, ConfigBuilder.ConfigBuilder.addStandardSequences(), ConfigBuilder.ConfigBuilder.AlCaPaths, ConfigBuilder.anyOf(), mps_setup.append, ConfigBuilder.ConfigBuilder.executeAndRemember(), join(), miniAOD_tools.miniAOD_customizeOutput(), edm.print(), DTT0WireWorkflow.DTT0WireWorkflow.process, DTVdriftWorkflow.DTvdriftWorkflow.process, DTTtrigWorkflow.DTttrigWorkflow.process, DTWorkflow.DTWorkflow.process, ConfigBuilder.ConfigBuilder.process, python.rootplot.root2matplotlib.replace(), ConfigBuilder.ConfigBuilder.schedule, cms::dd.split(), and ComparisonHelper.zip().

Referenced by ConfigBuilder.ConfigBuilder.prepare().

◆ addSource()

def ConfigBuilder.ConfigBuilder.addSource (   self)
Here the source is built. Priority: file, generator

Definition at line 373 of file ConfigBuilder.py.

373  def addSource(self):
374  """Here the source is built. Priority: file, generator"""
375  self.addedObjects.append(("Input source","source"))
376 
377  def filesFromOption(self):
378  for entry in self._options.filein.split(','):
379  print("entry",entry)
380  if entry.startswith("filelist:"):
381  filesFromList(entry[9:],self.process.source)
382  elif entry.startswith("dbs:") or entry.startswith("das:"):
383  filesFromDASQuery('file dataset = %s'%(entry[4:]),self._options.dasoption,self.process.source)
384  else:
385  self.process.source.fileNames.append(self._options.dirin+entry)
386  if self._options.secondfilein:
387  if not hasattr(self.process.source,"secondaryFileNames"):
388  raise Exception("--secondfilein not compatible with "+self._options.filetype+"input type")
389  for entry in self._options.secondfilein.split(','):
390  print("entry",entry)
391  if entry.startswith("filelist:"):
392  self.process.source.secondaryFileNames.extend((filesFromList(entry[9:]))[0])
393  elif entry.startswith("dbs:") or entry.startswith("das:"):
394  self.process.source.secondaryFileNames.extend((filesFromDASQuery('file dataset = %s'%(entry[4:]),self._options.dasoption))[0])
395  else:
396  self.process.source.secondaryFileNames.append(self._options.dirin+entry)
397 
398  if self._options.filein or self._options.dasquery:
399  if self._options.filetype == "EDM":
400  self.process.source=cms.Source("PoolSource",
401  fileNames = cms.untracked.vstring(),
402  secondaryFileNames= cms.untracked.vstring())
403  filesFromOption(self)
404  elif self._options.filetype == "DAT":
405  self.process.source=cms.Source("NewEventStreamFileReader",fileNames = cms.untracked.vstring())
406  filesFromOption(self)
407  elif self._options.filetype == "LHE":
408  self.process.source=cms.Source("LHESource", fileNames = cms.untracked.vstring())
409  if self._options.filein.startswith("lhe:"):
410  #list the article directory automatically
411  args=self._options.filein.split(':')
412  article=args[1]
413  print('LHE input from article ',article)
414  location='/store/lhe/'
415  import os
416  textOfFiles=os.popen('cmsLHEtoEOSManager.py -l '+article)
417  for line in textOfFiles:
418  for fileName in [x for x in line.split() if '.lhe' in x]:
419  self.process.source.fileNames.append(location+article+'/'+fileName)
420  #check first if list of LHE files is loaded (not empty)
421  if len(line)<2:
422  print('Issue to load LHE files, please check and try again.')
423  sys.exit(-1)
424  #Additional check to protect empty fileNames in process.source
425  if len(self.process.source.fileNames)==0:
426  print('Issue with empty filename, but can pass line check')
427  sys.exit(-1)
428  if len(args)>2:
429  self.process.source.skipEvents = cms.untracked.uint32(int(args[2]))
430  else:
431  filesFromOption(self)
432 
433  elif self._options.filetype == "DQM":
434  self.process.source=cms.Source("DQMRootSource",
435  fileNames = cms.untracked.vstring())
436  filesFromOption(self)
437 
438  elif self._options.filetype == "DQMDAQ":
439  # FIXME: how to configure it if there are no input files specified?
440  self.process.source=cms.Source("DQMStreamerReader")
441 
442 
443  if ('HARVESTING' in self.stepMap.keys() or 'ALCAHARVEST' in self.stepMap.keys()) and (not self._options.filetype == "DQM"):
444  self.process.source.processingMode = cms.untracked.string("RunsAndLumis")
445 
446  if self._options.dasquery!='':
447  self.process.source=cms.Source("PoolSource", fileNames = cms.untracked.vstring(),secondaryFileNames = cms.untracked.vstring())
448  filesFromDASQuery(self._options.dasquery,self._options.dasoption,self.process.source)
449 
450  if ('HARVESTING' in self.stepMap.keys() or 'ALCAHARVEST' in self.stepMap.keys()) and (not self._options.filetype == "DQM"):
451  self.process.source.processingMode = cms.untracked.string("RunsAndLumis")
452 
453 
454  if 'GEN' in self.stepMap.keys() and not self._options.filetype == "LHE":
455  if self._options.inputCommands:
456  self._options.inputCommands+=',drop LHEXMLStringProduct_*_*_*,'
457  else:
458  self._options.inputCommands='keep *, drop LHEXMLStringProduct_*_*_*,'
459 
460  if self.process.source and self._options.inputCommands and not self._options.filetype == "LHE":
461  if not hasattr(self.process.source,'inputCommands'): self.process.source.inputCommands=cms.untracked.vstring()
462  for command in self._options.inputCommands.split(','):
463  # remove whitespace around the keep/drop statements
464  command = command.strip()
465  if command=='': continue
466  self.process.source.inputCommands.append(command)
467  if not self._options.dropDescendant:
468  self.process.source.dropDescendantsOfDroppedBranches = cms.untracked.bool(False)
469 
470  if self._options.lumiToProcess:
471  import FWCore.PythonUtilities.LumiList as LumiList
472  self.process.source.lumisToProcess = cms.untracked.VLuminosityBlockRange( LumiList.LumiList(self._options.lumiToProcess).getCMSSWString().split(',') )
473 
474  if 'GEN' in self.stepMap.keys() or 'LHE' in self.stepMap or (not self._options.filein and hasattr(self._options, "evt_type")):
475  if self.process.source is None:
476  self.process.source=cms.Source("EmptySource")
477 
478  # modify source in case of run-dependent MC
479  self.runsAndWeights=None
480  if self._options.runsAndWeightsForMC or self._options.runsScenarioForMC :
481  if not self._options.isMC :
482  raise Exception("options --runsAndWeightsForMC and --runsScenarioForMC are only valid for MC")
483  if self._options.runsAndWeightsForMC:
484  self.runsAndWeights = eval(self._options.runsAndWeightsForMC)
485  else:
486  from Configuration.StandardSequences.RunsAndWeights import RunsAndWeights
487  if isinstance(RunsAndWeights[self._options.runsScenarioForMC], str):
488  __import__(RunsAndWeights[self._options.runsScenarioForMC])
489  self.runsAndWeights = sys.modules[RunsAndWeights[self._options.runsScenarioForMC]].runProbabilityDistribution
490  else:
491  self.runsAndWeights = RunsAndWeights[self._options.runsScenarioForMC]
492 
493  if self.runsAndWeights:
494  import SimGeneral.Configuration.ThrowAndSetRandomRun as ThrowAndSetRandomRun
495  ThrowAndSetRandomRun.throwAndSetRandomRun(self.process.source,self.runsAndWeights)
496  self.additionalCommands.append('import SimGeneral.Configuration.ThrowAndSetRandomRun as ThrowAndSetRandomRun')
497  self.additionalCommands.append('ThrowAndSetRandomRun.throwAndSetRandomRun(process.source,%s)'%(self.runsAndWeights))
498 
499  return
500 

References ConfigBuilder.ConfigBuilder._options, ConfigBuilder.ConfigBuilder.addedObjects, mps_setup.append, ConfigBuilder.filesFromDASQuery(), ConfigBuilder.filesFromList(), createfilelist.int, relativeConstraints.keys, edm.print(), DTT0WireWorkflow.DTT0WireWorkflow.process, DTVdriftWorkflow.DTvdriftWorkflow.process, DTTtrigWorkflow.DTttrigWorkflow.process, DTWorkflow.DTWorkflow.process, ConfigBuilder.ConfigBuilder.process, cms::dd.split(), and ConfigBuilder.ConfigBuilder.stepMap.

Referenced by ConfigBuilder.ConfigBuilder.prepare().

◆ addStandardSequences()

def ConfigBuilder.ConfigBuilder.addStandardSequences (   self)
Add selected standard sequences to the process

Definition at line 683 of file ConfigBuilder.py.

683  def addStandardSequences(self):
684  """
685  Add selected standard sequences to the process
686  """
687  # load the pile up file
688  if self._options.pileup:
689  pileupSpec=self._options.pileup.split(',')[0]
690 
691  # Does the requested pile-up scenario exist?
692  from Configuration.StandardSequences.Mixing import Mixing,defineMixing
693  if not pileupSpec in Mixing and '.' not in pileupSpec and 'file:' not in pileupSpec:
694  message = pileupSpec+' is not a know mixing scenario:\n available are: '+'\n'.join(Mixing.keys())
695  raise Exception(message)
696 
697  # Put mixing parameters in a dictionary
698  if '.' in pileupSpec:
699  mixingDict={'file':pileupSpec}
700  elif pileupSpec.startswith('file:'):
701  mixingDict={'file':pileupSpec[5:]}
702  else:
703  import copy
704  mixingDict=copy.copy(Mixing[pileupSpec])
705  if len(self._options.pileup.split(','))>1:
706  mixingDict.update(eval(self._options.pileup[self._options.pileup.find(',')+1:]))
707 
708  # Load the pu cfg file corresponding to the requested pu scenario
709  if 'file:' in pileupSpec:
710  #the file is local
711  self.process.load(mixingDict['file'])
712  print("inlining mixing module configuration")
713  self._options.inlineObjets+=',mix'
714  else:
715  self.loadAndRemember(mixingDict['file'])
716 
717  mixingDict.pop('file')
718  if not "DATAMIX" in self.stepMap.keys(): # when DATAMIX is present, pileup_input refers to pre-mixed GEN-RAW
719  if self._options.pileup_input:
720  if self._options.pileup_input.startswith('dbs:') or self._options.pileup_input.startswith('das:'):
721  mixingDict['F']=filesFromDASQuery('file dataset = %s'%(self._options.pileup_input[4:],),self._options.pileup_dasoption)[0]
722  elif self._options.pileup_input.startswith("filelist:"):
723  mixingDict['F']=(filesFromList(self._options.pileup_input[9:]))[0]
724  else:
725  mixingDict['F']=self._options.pileup_input.split(',')
726  specialization=defineMixing(mixingDict)
727  for command in specialization:
728  self.executeAndRemember(command)
729  if len(mixingDict)!=0:
730  raise Exception('unused mixing specification: '+mixingDict.keys().__str__())
731 
732 
733  # load the geometry file
734  try:
735  if len(self.stepMap):
736  self.loadAndRemember(self.GeometryCFF)
737  if ('SIM' in self.stepMap or 'reSIM' in self.stepMap) and not self._options.fast:
738  self.loadAndRemember(self.SimGeometryCFF)
739  if self.geometryDBLabel:
740  self.executeAndRemember('process.XMLFromDBSource.label = cms.string("%s")'%(self.geometryDBLabel))
741  except ImportError:
742  print("Geometry option",self._options.geometry,"unknown.")
743  raise
744 
745  if len(self.stepMap):
746  self.loadAndRemember(self.magFieldCFF)
747 
748  for stepName in self.stepKeys:
749  stepSpec = self.stepMap[stepName]
750  print("Step:", stepName,"Spec:",stepSpec)
751  if stepName.startswith('re'):
752 
753  if stepName[2:] not in self._options.donotDropOnInput:
754  self._options.inputEventContent='%s,%s'%(stepName.upper(),self._options.inputEventContent)
755  stepName=stepName[2:]
756  if stepSpec=="":
757  getattr(self,"prepare_"+stepName)(sequence = getattr(self,stepName+"DefaultSeq"))
758  elif isinstance(stepSpec, list):
759  getattr(self,"prepare_"+stepName)(sequence = '+'.join(stepSpec))
760  elif isinstance(stepSpec, tuple):
761  getattr(self,"prepare_"+stepName)(sequence = ','.join([stepSpec[1],'+'.join(stepSpec[0])]))
762  else:
763  raise ValueError("Invalid step definition")
764 
765  if self._options.restoreRNDSeeds!=False:
766  #it is either True, or a process name
767  if self._options.restoreRNDSeeds==True:
768  self.executeAndRemember('process.RandomNumberGeneratorService.restoreStateLabel=cms.untracked.string("randomEngineStateProducer")')
769  else:
770  self.executeAndRemember('process.RandomNumberGeneratorService.restoreStateTag=cms.untracked.InputTag("randomEngineStateProducer","","%s")'%(self._options.restoreRNDSeeds))
771  if self._options.inputEventContent or self._options.inputCommands:
772  if self._options.inputCommands:
773  self._options.inputCommands+='keep *_randomEngineStateProducer_*_*,'
774  else:
775  self._options.inputCommands='keep *_randomEngineStateProducer_*_*,'
776 
777 

References TriggerAnalyzer.__str__(), ConfigBuilder.ConfigBuilder._options, ConfigBuilder.ConfigBuilder.completeInputCommand(), Mixing.defineMixing(), ConfigBuilder.ConfigBuilder.executeAndRemember(), ConfigBuilder.filesFromDASQuery(), ConfigBuilder.filesFromList(), ConfigBuilder.ConfigBuilder.GeometryCFF, ConfigBuilder.ConfigBuilder.geometryDBLabel, join(), relativeConstraints.keys, ConfigBuilder.ConfigBuilder.load(), ConfigBuilder.ConfigBuilder.loadAndRemember(), ConfigBuilder.ConfigBuilder.magFieldCFF, edm.print(), DTT0WireWorkflow.DTT0WireWorkflow.process, DTVdriftWorkflow.DTvdriftWorkflow.process, DTTtrigWorkflow.DTttrigWorkflow.process, DTWorkflow.DTWorkflow.process, ConfigBuilder.ConfigBuilder.process, ConfigBuilder.ConfigBuilder.SimGeometryCFF, ConfigBuilder.ConfigBuilder.stepKeys, and ConfigBuilder.ConfigBuilder.stepMap.

Referenced by ConfigBuilder.ConfigBuilder.addOutput(), and ConfigBuilder.ConfigBuilder.prepare().

◆ build_production_info()

def ConfigBuilder.ConfigBuilder.build_production_info (   self,
  evt_type,
  evtnumber 
)
Add useful info for the production. 

Definition at line 2061 of file ConfigBuilder.py.

2061  def build_production_info(self, evt_type, evtnumber):
2062  """ Add useful info for the production. """
2063  self.process.configurationMetadata=cms.untracked.PSet\
2064  (version=cms.untracked.string("$Revision: 1.19 $"),
2065  name=cms.untracked.string("Applications"),
2066  annotation=cms.untracked.string(evt_type+ " nevts:"+str(evtnumber))
2067  )
2068 
2069  self.addedObjects.append(("Production Info","configurationMetadata"))
2070 
2071 

References ConfigBuilder.ConfigBuilder.addedObjects, mps_setup.append, ConfigBuilder.ConfigBuilder.create_process(), DTT0WireWorkflow.DTT0WireWorkflow.process, DTVdriftWorkflow.DTvdriftWorkflow.process, DTTtrigWorkflow.DTttrigWorkflow.process, DTWorkflow.DTWorkflow.process, ConfigBuilder.ConfigBuilder.process, and str.

Referenced by ConfigBuilder.ConfigBuilder.finalizeFastSimHLT(), and ConfigBuilder.ConfigBuilder.prepare().

◆ completeInputCommand()

def ConfigBuilder.ConfigBuilder.completeInputCommand (   self)

Definition at line 778 of file ConfigBuilder.py.

778  def completeInputCommand(self):
779  if self._options.inputEventContent:
780  import copy
781  def dropSecondDropStar(iec):
782  #drop occurence of 'drop *' in the list
783  count=0
784  for item in iec:
785  if item=='drop *':
786  if count!=0:
787  iec.remove(item)
788  count+=1
789 
790 
791  if not hasattr(self.process.source,'inputCommands'): self.process.source.inputCommands=cms.untracked.vstring()
792  for evct in self._options.inputEventContent.split(','):
793  if evct=='': continue
794  theEventContent = getattr(self.process, evct+"EventContent")
795  if hasattr(theEventContent,'outputCommands'):
796  self.process.source.inputCommands.extend(copy.copy(theEventContent.outputCommands))
797  if hasattr(theEventContent,'inputCommands'):
798  self.process.source.inputCommands.extend(copy.copy(theEventContent.inputCommands))
799 
800  dropSecondDropStar(self.process.source.inputCommands)
801 
802  if not self._options.dropDescendant:
803  self.process.source.dropDescendantsOfDroppedBranches = cms.untracked.bool(False)
804 
805 
806  return
807 

References ConfigBuilder.ConfigBuilder._options, ConfigBuilder.ConfigBuilder.addConditions(), DTT0WireWorkflow.DTT0WireWorkflow.process, DTVdriftWorkflow.DTvdriftWorkflow.process, DTTtrigWorkflow.DTttrigWorkflow.process, DTWorkflow.DTWorkflow.process, and ConfigBuilder.ConfigBuilder.process.

Referenced by ConfigBuilder.ConfigBuilder.addStandardSequences(), and ConfigBuilder.ConfigBuilder.prepare().

◆ create_process()

def ConfigBuilder.ConfigBuilder.create_process (   self)

Definition at line 2072 of file ConfigBuilder.py.

2072  def create_process(self):
2073  self.pythonCfgCode = "# Auto generated configuration file\n"
2074  self.pythonCfgCode += "# using: \n# "+__version__[1:-1]+"\n# "+__source__[1:-1]+'\n'
2075  self.pythonCfgCode += "# with command line options: "+self._options.arguments+'\n'
2076  self.pythonCfgCode += "import FWCore.ParameterSet.Config as cms\n\n"
2077 
2078  # now set up the modifies
2079  modifiers=[]
2080  modifierStrings=[]
2081  modifierImports=[]
2082 
2083  if hasattr(self._options,"era") and self._options.era :
2084  # Multiple eras can be specified in a comma seperated list
2085  from Configuration.StandardSequences.Eras import eras
2086  for requestedEra in self._options.era.split(",") :
2087  modifierStrings.append(requestedEra)
2088  modifierImports.append(eras.pythonCfgLines[requestedEra])
2089  modifiers.append(getattr(eras,requestedEra))
2090 
2091 
2092  if hasattr(self._options,"procModifiers") and self._options.procModifiers:
2093  import importlib
2094  thingsImported=[]
2095  for pm in self._options.procModifiers.split(','):
2096  modifierStrings.append(pm)
2097  modifierImports.append('from Configuration.ProcessModifiers.'+pm+'_cff import '+pm)
2098  modifiers.append(getattr(importlib.import_module('Configuration.ProcessModifiers.'+pm+'_cff'),pm))
2099 
2100  self.pythonCfgCode += '\n'.join(modifierImports)+'\n\n'
2101  self.pythonCfgCode += "process = cms.Process('"+self._options.name+"'" # Start of the line, finished after the loop
2102 
2103 
2104  if len(modifierStrings)>0:
2105  self.pythonCfgCode+= ','+','.join(modifierStrings)
2106  self.pythonCfgCode+=')\n\n'
2107 
2108  #yes, the cfg code gets out of sync here if a process is passed in. That could be fixed in the future
2109  #assuming there is some way for the fwk to get the list of modifiers (and their stringified name)
2110  if self.process == None:
2111  if len(modifiers)>0:
2112  self.process = cms.Process(self._options.name,*modifiers)
2113  else:
2114  self.process = cms.Process(self._options.name)
2115 
2116 
2117 
2118 

References ConfigBuilder.ConfigBuilder.pythonCfgCode.

Referenced by ConfigBuilder.ConfigBuilder.build_production_info().

◆ define_Configs()

def ConfigBuilder.ConfigBuilder.define_Configs (   self)

Definition at line 911 of file ConfigBuilder.py.

911  def define_Configs(self):
912  if len(self.stepMap):
913  self.loadAndRemember('Configuration/StandardSequences/Services_cff')
914  if self._options.particleTable not in defaultOptions.particleTableList:
915  print('Invalid particle table provided. Options are:')
916  print(defaultOptions.particleTable)
917  sys.exit(-1)
918  else:
919  if len(self.stepMap):
920  self.loadAndRemember('SimGeneral.HepPDTESSource.'+self._options.particleTable+'_cfi')
921 
922  self.loadAndRemember('FWCore/MessageService/MessageLogger_cfi')
923 
924  self.ALCADefaultCFF="Configuration/StandardSequences/AlCaRecoStreams_cff"
925  self.GENDefaultCFF="Configuration/StandardSequences/Generator_cff"
926  self.SIMDefaultCFF="Configuration/StandardSequences/Sim_cff"
927  self.DIGIDefaultCFF="Configuration/StandardSequences/Digi_cff"
928  self.DIGI2RAWDefaultCFF="Configuration/StandardSequences/DigiToRaw_cff"
929  self.L1EMDefaultCFF='Configuration/StandardSequences/SimL1Emulator_cff'
930  self.L1MENUDefaultCFF="Configuration/StandardSequences/L1TriggerDefaultMenu_cff"
931  self.HLTDefaultCFF="Configuration/StandardSequences/HLTtable_cff"
932  self.RAW2DIGIDefaultCFF="Configuration/StandardSequences/RawToDigi_Data_cff"
933  if self._options.isRepacked: self.RAW2DIGIDefaultCFF="Configuration/StandardSequences/RawToDigi_DataMapper_cff"
934  self.L1RecoDefaultCFF="Configuration/StandardSequences/L1Reco_cff"
935  self.L1TrackTriggerDefaultCFF="Configuration/StandardSequences/L1TrackTrigger_cff"
936  self.RECODefaultCFF="Configuration/StandardSequences/Reconstruction_Data_cff"
937  self.RECOSIMDefaultCFF="Configuration/StandardSequences/RecoSim_cff"
938  self.PATDefaultCFF="Configuration/StandardSequences/PAT_cff"
939  self.NANODefaultCFF="PhysicsTools/NanoAOD/nano_cff"
940  self.EIDefaultCFF=None
941  self.SKIMDefaultCFF="Configuration/StandardSequences/Skims_cff"
942  self.POSTRECODefaultCFF="Configuration/StandardSequences/PostRecoGenerator_cff"
943  self.VALIDATIONDefaultCFF="Configuration/StandardSequences/Validation_cff"
944  self.L1HwValDefaultCFF = "Configuration/StandardSequences/L1HwVal_cff"
945  self.DQMOFFLINEDefaultCFF="DQMOffline/Configuration/DQMOffline_cff"
946  self.HARVESTINGDefaultCFF="Configuration/StandardSequences/Harvesting_cff"
947  self.ALCAHARVESTDefaultCFF="Configuration/StandardSequences/AlCaHarvesting_cff"
948  self.ENDJOBDefaultCFF="Configuration/StandardSequences/EndOfProcess_cff"
949  self.ConditionsDefaultCFF = "Configuration/StandardSequences/FrontierConditions_GlobalTag_cff"
950  self.CFWRITERDefaultCFF = "Configuration/StandardSequences/CrossingFrameWriter_cff"
951  self.REPACKDefaultCFF="Configuration/StandardSequences/DigiToRaw_Repack_cff"
952 
953  if "DATAMIX" in self.stepMap.keys():
954  self.DATAMIXDefaultCFF="Configuration/StandardSequences/DataMixer"+self._options.datamix+"_cff"
955  self.DIGIDefaultCFF="Configuration/StandardSequences/DigiDM_cff"
956  self.DIGI2RAWDefaultCFF="Configuration/StandardSequences/DigiToRawDM_cff"
957  self.L1EMDefaultCFF='Configuration/StandardSequences/SimL1EmulatorDM_cff'
958 
959  self.ALCADefaultSeq=None
960  self.LHEDefaultSeq='externalLHEProducer'
961  self.GENDefaultSeq='pgen'
962  self.SIMDefaultSeq='psim'
963  self.DIGIDefaultSeq='pdigi'
964  self.DATAMIXDefaultSeq=None
965  self.DIGI2RAWDefaultSeq='DigiToRaw'
966  self.HLTDefaultSeq='GRun'
967  self.L1DefaultSeq=None
968  self.L1REPACKDefaultSeq='GT'
969  self.HARVESTINGDefaultSeq=None
970  self.ALCAHARVESTDefaultSeq=None
971  self.CFWRITERDefaultSeq=None
972  self.RAW2DIGIDefaultSeq='RawToDigi'
973  self.L1RecoDefaultSeq='L1Reco'
974  self.L1TrackTriggerDefaultSeq='L1TrackTrigger'
975  if self._options.fast or ('RAW2DIGI' in self.stepMap and 'RECO' in self.stepMap):
976  self.RECODefaultSeq='reconstruction'
977  else:
978  self.RECODefaultSeq='reconstruction_fromRECO'
979  self.RECOSIMDefaultSeq='recosim'
980  self.EIDefaultSeq='top'
981  self.POSTRECODefaultSeq=None
982  self.L1HwValDefaultSeq='L1HwVal'
983  self.DQMDefaultSeq='DQMOffline'
984  self.VALIDATIONDefaultSeq=''
985  self.ENDJOBDefaultSeq='endOfProcess'
986  self.REPACKDefaultSeq='DigiToRawRepack'
987  self.PATDefaultSeq='miniAOD'
988  self.PATGENDefaultSeq='miniGEN'
989  self.NANODefaultSeq='nanoSequence'
990 
991  self.EVTCONTDefaultCFF="Configuration/EventContent/EventContent_cff"
992 
993  if not self._options.beamspot:
994  self._options.beamspot=VtxSmearedDefaultKey
995 
996  # if its MC then change the raw2digi
997  if self._options.isMC==True:
998  self.RAW2DIGIDefaultCFF="Configuration/StandardSequences/RawToDigi_cff"
999  self.RECODefaultCFF="Configuration/StandardSequences/Reconstruction_cff"
1000  self.PATDefaultCFF="Configuration/StandardSequences/PATMC_cff"
1001  self.PATGENDefaultCFF="Configuration/StandardSequences/PATGEN_cff"
1002  self.DQMOFFLINEDefaultCFF="DQMOffline/Configuration/DQMOfflineMC_cff"
1003  self.ALCADefaultCFF="Configuration/StandardSequences/AlCaRecoStreamsMC_cff"
1004  self.NANODefaultSeq='nanoSequenceMC'
1005  else:
1006  self._options.beamspot = None
1007 
1008  #patch for gen, due to backward incompatibility
1009  if 'reGEN' in self.stepMap:
1010  self.GENDefaultSeq='fixGenInfo'
1011 
1012  if self._options.scenario=='cosmics':
1013  self._options.pileup='Cosmics'
1014  self.DIGIDefaultCFF="Configuration/StandardSequences/DigiCosmics_cff"
1015  self.RECODefaultCFF="Configuration/StandardSequences/ReconstructionCosmics_cff"
1016  self.SKIMDefaultCFF="Configuration/StandardSequences/SkimsCosmics_cff"
1017  self.EVTCONTDefaultCFF="Configuration/EventContent/EventContentCosmics_cff"
1018  self.VALIDATIONDefaultCFF="Configuration/StandardSequences/ValidationCosmics_cff"
1019  self.DQMOFFLINEDefaultCFF="DQMOffline/Configuration/DQMOfflineCosmics_cff"
1020  if self._options.isMC==True:
1021  self.DQMOFFLINEDefaultCFF="DQMOffline/Configuration/DQMOfflineCosmicsMC_cff"
1022  self.HARVESTINGDefaultCFF="Configuration/StandardSequences/HarvestingCosmics_cff"
1023  self.RECODefaultSeq='reconstructionCosmics'
1024  self.DQMDefaultSeq='DQMOfflineCosmics'
1025 
1026  if self._options.scenario=='HeavyIons':
1027  if not self._options.beamspot:
1028  self._options.beamspot=VtxSmearedHIDefaultKey
1029  self.HLTDefaultSeq = 'HIon'
1030  self.VALIDATIONDefaultCFF="Configuration/StandardSequences/ValidationHeavyIons_cff"
1031  self.VALIDATIONDefaultSeq=''
1032  self.EVTCONTDefaultCFF="Configuration/EventContent/EventContentHeavyIons_cff"
1033  self.RECODefaultCFF="Configuration/StandardSequences/ReconstructionHeavyIons_cff"
1034  self.RECODefaultSeq='reconstructionHeavyIons'
1035  self.ALCADefaultCFF = "Configuration/StandardSequences/AlCaRecoStreamsHeavyIons_cff"
1036  self.DQMOFFLINEDefaultCFF="DQMOffline/Configuration/DQMOfflineHeavyIons_cff"
1037  self.DQMDefaultSeq='DQMOfflineHeavyIons'
1038  self.SKIMDefaultCFF="Configuration/StandardSequences/SkimsHeavyIons_cff"
1039  self.HARVESTINGDefaultCFF="Configuration/StandardSequences/HarvestingHeavyIons_cff"
1040  if self._options.isMC==True:
1041  self.DQMOFFLINEDefaultCFF="DQMOffline/Configuration/DQMOfflineHeavyIonsMC_cff"
1042 
1043 
1044  self.RAW2RECODefaultSeq=','.join([self.RAW2DIGIDefaultSeq,self.RECODefaultSeq])
1045 
1046  self.USERDefaultSeq='user'
1047  self.USERDefaultCFF=None
1048 
1049  # the magnetic field
1050  if self._options.isData:
1051  if self._options.magField==defaultOptions.magField:
1052  print("magnetic field option forced to: AutoFromDBCurrent")
1053  self._options.magField='AutoFromDBCurrent'
1054  self.magFieldCFF = 'Configuration/StandardSequences/MagneticField_'+self._options.magField.replace('.','')+'_cff'
1055  self.magFieldCFF = self.magFieldCFF.replace("__",'_')
1056 
1057  # the geometry
1058  self.GeometryCFF='Configuration/StandardSequences/GeometryRecoDB_cff'
1059  self.geometryDBLabel=None
1060  simGeometry=''
1061  if self._options.fast:
1062  if 'start' in self._options.conditions.lower():
1063  self.GeometryCFF='FastSimulation/Configuration/Geometries_START_cff'
1064  else:
1065  self.GeometryCFF='FastSimulation/Configuration/Geometries_MC_cff'
1066  else:
1067  def inGeometryKeys(opt):
1068  from Configuration.StandardSequences.GeometryConf import GeometryConf
1069  if opt in GeometryConf:
1070  return GeometryConf[opt]
1071  else:
1072  return opt
1073 
1074  geoms=self._options.geometry.split(',')
1075  if len(geoms)==1: geoms=inGeometryKeys(geoms[0]).split(',')
1076  if len(geoms)==2:
1077  #may specify the reco geometry
1078  if '/' in geoms[1] or '_cff' in geoms[1]:
1079  self.GeometryCFF=geoms[1]
1080  else:
1081  self.GeometryCFF='Configuration/Geometry/Geometry'+geoms[1]+'_cff'
1082 
1083  if (geoms[0].startswith('DB:')):
1084  self.SimGeometryCFF='Configuration/StandardSequences/GeometrySimDB_cff'
1085  self.geometryDBLabel=geoms[0][3:]
1086  print("with DB:")
1087  else:
1088  if '/' in geoms[0] or '_cff' in geoms[0]:
1089  self.SimGeometryCFF=geoms[0]
1090  else:
1091  simGeometry=geoms[0]
1092  if self._options.gflash==True:
1093  self.SimGeometryCFF='Configuration/Geometry/Geometry'+geoms[0]+'GFlash_cff'
1094  else:
1095  self.SimGeometryCFF='Configuration/Geometry/Geometry'+geoms[0]+'_cff'
1096 
1097  # synchronize the geometry configuration and the FullSimulation sequence to be used
1098  if simGeometry not in defaultOptions.geometryExtendedOptions:
1099  self.SIMDefaultCFF="Configuration/StandardSequences/SimIdeal_cff"
1100 
1101  if self._options.scenario=='nocoll' or self._options.scenario=='cosmics':
1102  self.SIMDefaultCFF="Configuration/StandardSequences/SimNOBEAM_cff"
1103  self._options.beamspot='NoSmear'
1104 
1105  # fastsim requires some changes to the default cff files and sequences
1106  if self._options.fast:
1107  self.SIMDefaultCFF = 'FastSimulation.Configuration.SimIdeal_cff'
1108  self.RECODefaultCFF= 'FastSimulation.Configuration.Reconstruction_AftMix_cff'
1109  self.RECOBEFMIXDefaultCFF = 'FastSimulation.Configuration.Reconstruction_BefMix_cff'
1110  self.RECOBEFMIXDefaultSeq = 'reconstruction_befmix'
1111  self.NANODefaultSeq = 'nanoSequenceFS'
1112  self.DQMOFFLINEDefaultCFF="DQMOffline.Configuration.DQMOfflineFS_cff"
1113 
1114  # Mixing
1115  if self._options.pileup=='default':
1116  from Configuration.StandardSequences.Mixing import MixingDefaultKey
1117  self._options.pileup=MixingDefaultKey
1118 
1119 
1120  #not driven by a default cff anymore
1121  if self._options.isData:
1122  self._options.pileup=None
1123 
1124 
1125  self.REDIGIDefaultSeq=self.DIGIDefaultSeq
1126 

References ConfigBuilder.ConfigBuilder._options, ConfigBuilder.ConfigBuilder.ALCADefaultCFF, ConfigBuilder.ConfigBuilder.loadAndRemember(), edm.print(), and ConfigBuilder.ConfigBuilder.stepMap.

Referenced by ConfigBuilder.ConfigBuilder.addCustomiseCmdLine().

◆ executeAndRemember()

def ConfigBuilder.ConfigBuilder.executeAndRemember (   self,
  command 
)
helper routine to remember replace statements

Definition at line 328 of file ConfigBuilder.py.

328  def executeAndRemember(self, command):
329  """helper routine to remember replace statements"""
330  self.additionalCommands.append(command)
331  if not command.strip().startswith("#"):
332  # substitute: process.foo = process.bar -> self.process.foo = self.process.bar
333  import re
334  exec(re.sub(r"([^a-zA-Z_0-9]|^)(process)([^a-zA-Z_0-9])",r"\1self.process\3",command))
335  #exec(command.replace("process.","self.process."))
336 

References ConfigBuilder.ConfigBuilder.additionalCommands, and mps_setup.append.

Referenced by ConfigBuilder.ConfigBuilder.addCustomiseCmdLine(), ConfigBuilder.ConfigBuilder.addOutput(), ConfigBuilder.ConfigBuilder.addStandardSequences(), ConfigBuilder.ConfigBuilder.prepare_ALCAHARVEST(), ConfigBuilder.ConfigBuilder.prepare_DATAMIX(), ConfigBuilder.ConfigBuilder.prepare_DIGI(), ConfigBuilder.ConfigBuilder.prepare_GEN(), ConfigBuilder.ConfigBuilder.prepare_HLT(), ConfigBuilder.ConfigBuilder.prepare_SIM(), and ConfigBuilder.ConfigBuilder.prepare_VALIDATION().

◆ expandMapping()

def ConfigBuilder.ConfigBuilder.expandMapping (   self,
  seqList,
  mapping,
  index = None 
)

Definition at line 1916 of file ConfigBuilder.py.

1916  def expandMapping(self,seqList,mapping,index=None):
1917  maxLevel=30
1918  level=0
1919  while '@' in repr(seqList) and level<maxLevel:
1920  level+=1
1921  for specifiedCommand in seqList:
1922  if specifiedCommand.startswith('@'):
1923  location=specifiedCommand[1:]
1924  if not location in mapping:
1925  raise Exception("Impossible to map "+location+" from "+repr(mapping))
1926  mappedTo=mapping[location]
1927  if index!=None:
1928  mappedTo=mappedTo[index]
1929  seqList.remove(specifiedCommand)
1930  seqList.extend(mappedTo.split('+'))
1931  break;
1932  if level==maxLevel:
1933  raise Exception("Could not fully expand "+repr(seqList)+" from "+repr(mapping))
1934 

References ConfigBuilder.ConfigBuilder.prepare_DQM().

Referenced by ConfigBuilder.ConfigBuilder.prepare_ALCA(), ConfigBuilder.ConfigBuilder.prepare_ALCAHARVEST(), ConfigBuilder.ConfigBuilder.prepare_DQM(), ConfigBuilder.ConfigBuilder.prepare_SKIM(), ConfigBuilder.ConfigBuilder.prepare_VALIDATION(), and ConfigBuilder.ConfigBuilder.renameHLTprocessInSequence().

◆ finalizeFastSimHLT()

def ConfigBuilder.ConfigBuilder.finalizeFastSimHLT (   self)

Definition at line 2056 of file ConfigBuilder.py.

2056  def finalizeFastSimHLT(self):
2057  self.process.reconstruction = cms.Path(self.process.reconstructionWithFamos)
2058  self.schedule.append(self.process.reconstruction)
2059 
2060 

References mps_setup.append, ConfigBuilder.ConfigBuilder.build_production_info(), DTT0WireWorkflow.DTT0WireWorkflow.process, DTVdriftWorkflow.DTvdriftWorkflow.process, DTTtrigWorkflow.DTttrigWorkflow.process, DTWorkflow.DTWorkflow.process, ConfigBuilder.ConfigBuilder.process, and ConfigBuilder.ConfigBuilder.schedule.

Referenced by ConfigBuilder.ConfigBuilder.prepare_ENDJOB().

◆ load()

def ConfigBuilder.ConfigBuilder.load (   self,
  includeFile 
)

◆ loadAndRemember()

def ConfigBuilder.ConfigBuilder.loadAndRemember (   self,
  includeFile 
)
helper routine to load am memorize imports

Definition at line 319 of file ConfigBuilder.py.

319  def loadAndRemember(self, includeFile):
320  """helper routine to load am memorize imports"""
321  # we could make the imports a on-the-fly data method of the process instance itself
322  # not sure if the latter is a good idea
323  includeFile = includeFile.replace('/','.')
324  self.imports.append(includeFile)
325  self.process.load(includeFile)
326  return sys.modules[includeFile]
327 

References mps_setup.append, ConfigBuilder.ConfigBuilder.imports, ConfigBuilder.ConfigBuilder.load(), DTT0WireWorkflow.DTT0WireWorkflow.process, DTVdriftWorkflow.DTvdriftWorkflow.process, DTTtrigWorkflow.DTttrigWorkflow.process, DTWorkflow.DTWorkflow.process, and ConfigBuilder.ConfigBuilder.process.

Referenced by ConfigBuilder.ConfigBuilder.addConditions(), ConfigBuilder.ConfigBuilder.addStandardSequences(), ConfigBuilder.ConfigBuilder.define_Configs(), ConfigBuilder.ConfigBuilder.loadDefaultOrSpecifiedCFF(), ConfigBuilder.ConfigBuilder.prepare(), ConfigBuilder.ConfigBuilder.prepare_ALCAHARVEST(), ConfigBuilder.ConfigBuilder.prepare_CFWRITER(), ConfigBuilder.ConfigBuilder.prepare_DATAMIX(), ConfigBuilder.ConfigBuilder.prepare_DIGI(), ConfigBuilder.ConfigBuilder.prepare_DQM(), ConfigBuilder.ConfigBuilder.prepare_GEN(), ConfigBuilder.ConfigBuilder.prepare_HLT(), ConfigBuilder.ConfigBuilder.prepare_L1(), ConfigBuilder.ConfigBuilder.prepare_L1REPACK(), ConfigBuilder.ConfigBuilder.prepare_PATFILTER(), ConfigBuilder.ConfigBuilder.prepare_POSTRECO(), and ConfigBuilder.ConfigBuilder.prepare_SIM().

◆ loadDefaultOrSpecifiedCFF()

def ConfigBuilder.ConfigBuilder.loadDefaultOrSpecifiedCFF (   self,
  sequence,
  defaultCFF 
)

Definition at line 1193 of file ConfigBuilder.py.

1193  def loadDefaultOrSpecifiedCFF(self, sequence,defaultCFF):
1194  if ( len(sequence.split('.'))==1 ):
1195  l=self.loadAndRemember(defaultCFF)
1196  elif ( len(sequence.split('.'))==2 ):
1197  l=self.loadAndRemember(sequence.split('.')[0])
1198  sequence=sequence.split('.')[1]
1199  else:
1200  print("sub sequence configuration must be of the form dir/subdir/cff.a+b+c or cff.a")
1201  print(sequence,"not recognized")
1202  raise
1203  return l
1204 

References ConfigBuilder.ConfigBuilder.loadAndRemember(), edm.print(), and ConfigBuilder.ConfigBuilder.scheduleSequence().

Referenced by ConfigBuilder.ConfigBuilder.prepare_ALCA(), ConfigBuilder.ConfigBuilder.prepare_DIGI(), ConfigBuilder.ConfigBuilder.prepare_DIGI2RAW(), ConfigBuilder.ConfigBuilder.prepare_DQM(), ConfigBuilder.ConfigBuilder.prepare_EI(), ConfigBuilder.ConfigBuilder.prepare_ENDJOB(), ConfigBuilder.ConfigBuilder.prepare_GEN(), ConfigBuilder.ConfigBuilder.prepare_L1HwVal(), ConfigBuilder.ConfigBuilder.prepare_L1Reco(), ConfigBuilder.ConfigBuilder.prepare_L1TrackTrigger(), ConfigBuilder.ConfigBuilder.prepare_NANO(), ConfigBuilder.ConfigBuilder.prepare_PAT(), ConfigBuilder.ConfigBuilder.prepare_PATGEN(), ConfigBuilder.ConfigBuilder.prepare_RAW2DIGI(), ConfigBuilder.ConfigBuilder.prepare_RECO(), ConfigBuilder.ConfigBuilder.prepare_RECOBEFMIX(), ConfigBuilder.ConfigBuilder.prepare_RECOSIM(), ConfigBuilder.ConfigBuilder.prepare_REPACK(), ConfigBuilder.ConfigBuilder.prepare_SIM(), ConfigBuilder.ConfigBuilder.prepare_SKIM(), ConfigBuilder.ConfigBuilder.prepare_USER(), and ConfigBuilder.ConfigBuilder.prepare_VALIDATION().

◆ prepare()

def ConfigBuilder.ConfigBuilder.prepare (   self,
  doChecking = False 
)
Prepare the configuration string and add missing pieces.

Definition at line 2119 of file ConfigBuilder.py.

2119  def prepare(self, doChecking = False):
2120  """ Prepare the configuration string and add missing pieces."""
2121 
2122  self.loadAndRemember(self.EVTCONTDefaultCFF) #load the event contents regardless
2123  self.addMaxEvents()
2124  if self.with_input:
2125  self.addSource()
2126  self.addStandardSequences()
2127 
2128  self.completeInputCommand()
2129  self.addConditions()
2130 
2131 
2132  outputModuleCfgCode=""
2133  if not 'HARVESTING' in self.stepMap.keys() and not 'ALCAHARVEST' in self.stepMap.keys() and not 'ALCAOUTPUT' in self.stepMap.keys() and self.with_output:
2134  outputModuleCfgCode=self.addOutput()
2135 
2136  self.addCommon()
2137 
2138  self.pythonCfgCode += "# import of standard configurations\n"
2139  for module in self.imports:
2140  self.pythonCfgCode += ("process.load('"+module+"')\n")
2141 
2142  # production info
2143  if not hasattr(self.process,"configurationMetadata"):
2144  self.build_production_info(self._options.evt_type, self._options.number)
2145  else:
2146  #the PSet was added via a load
2147  self.addedObjects.append(("Production Info","configurationMetadata"))
2148 
2149  self.pythonCfgCode +="\n"
2150  for comment,object in self.addedObjects:
2151  if comment!="":
2152  self.pythonCfgCode += "\n# "+comment+"\n"
2153  self.pythonCfgCode += dumpPython(self.process,object)
2154 
2155  # dump the output definition
2156  self.pythonCfgCode += "\n# Output definition\n"
2157  self.pythonCfgCode += outputModuleCfgCode
2158 
2159  # dump all additional outputs (e.g. alca or skim streams)
2160  self.pythonCfgCode += "\n# Additional output definition\n"
2161  #I do not understand why the keys are not normally ordered.
2162  nl=sorted(self.additionalOutputs.keys())
2163  for name in nl:
2164  output = self.additionalOutputs[name]
2165  self.pythonCfgCode += "process.%s = %s" %(name, output.dumpPython())
2166  tmpOut = cms.EndPath(output)
2167  setattr(self.process,name+'OutPath',tmpOut)
2168  self.schedule.append(tmpOut)
2169 
2170  # dump all additional commands
2171  self.pythonCfgCode += "\n# Other statements\n"
2172  for command in self.additionalCommands:
2173  self.pythonCfgCode += command + "\n"
2174 
2175  #comma separated list of objects that deserve to be inlined in the configuration (typically from a modified config deep down)
2176  for object in self._options.inlineObjets.split(','):
2177  if not object:
2178  continue
2179  if not hasattr(self.process,object):
2180  print('cannot inline -'+object+'- : not known')
2181  else:
2182  self.pythonCfgCode +='\n'
2183  self.pythonCfgCode +=dumpPython(self.process,object)
2184 
2185  # dump all paths
2186  self.pythonCfgCode += "\n# Path and EndPath definitions\n"
2187  for path in self.process.paths:
2188  if getattr(self.process,path) not in self.blacklist_paths:
2189  self.pythonCfgCode += dumpPython(self.process,path)
2190 
2191  for endpath in self.process.endpaths:
2192  if getattr(self.process,endpath) not in self.blacklist_paths:
2193  self.pythonCfgCode += dumpPython(self.process,endpath)
2194 
2195  # dump the schedule
2196  self.pythonCfgCode += "\n# Schedule definition\n"
2197  result = "process.schedule = cms.Schedule("
2198 
2199  # handling of the schedule
2200  self.process.schedule = cms.Schedule()
2201  for item in self.schedule:
2202  if not isinstance(item, cms.Schedule):
2203  self.process.schedule.append(item)
2204  else:
2205  self.process.schedule.extend(item)
2206 
2207  if hasattr(self.process,"HLTSchedule"):
2208  beforeHLT = self.schedule[:self.schedule.index(self.process.HLTSchedule)]
2209  afterHLT = self.schedule[self.schedule.index(self.process.HLTSchedule)+1:]
2210  pathNames = ['process.'+p.label_() for p in beforeHLT]
2211  result += ','.join(pathNames)+')\n'
2212  result += 'process.schedule.extend(process.HLTSchedule)\n'
2213  pathNames = ['process.'+p.label_() for p in afterHLT]
2214  result += 'process.schedule.extend(['+','.join(pathNames)+'])\n'
2215  else:
2216  pathNames = ['process.'+p.label_() for p in self.schedule]
2217  result ='process.schedule = cms.Schedule('+','.join(pathNames)+')\n'
2218 
2219  self.pythonCfgCode += result
2220 
2221  for labelToAssociate in self.labelsToAssociate:
2222  self.process.schedule.associate(getattr(self.process, labelToAssociate))
2223  self.pythonCfgCode += 'process.schedule.associate(process.' + labelToAssociate + ')\n'
2224 
2225  from PhysicsTools.PatAlgos.tools.helpers import associatePatAlgosToolsTask
2226  associatePatAlgosToolsTask(self.process)
2227  self.pythonCfgCode+="from PhysicsTools.PatAlgos.tools.helpers import associatePatAlgosToolsTask\n"
2228  self.pythonCfgCode+="associatePatAlgosToolsTask(process)\n"
2229 
2230  if self._options.nThreads is not "1":
2231  self.pythonCfgCode +="\n"
2232  self.pythonCfgCode +="#Setup FWK for multithreaded\n"
2233  self.pythonCfgCode +="process.options.numberOfThreads=cms.untracked.uint32("+self._options.nThreads+")\n"
2234  self.pythonCfgCode +="process.options.numberOfStreams=cms.untracked.uint32("+self._options.nStreams+")\n"
2235  self.pythonCfgCode +="process.options.numberOfConcurrentLuminosityBlocks=cms.untracked.uint32("+self._options.nConcurrentLumis+")\n"
2236  if int(self._options.nConcurrentLumis) > 1:
2237  self.pythonCfgCode +="if hasattr(process, 'DQMStore'): process.DQMStore.assertLegacySafe=cms.untracked.bool(False)\n"
2238  self.process.options.numberOfThreads=cms.untracked.uint32(int(self._options.nThreads))
2239  self.process.options.numberOfStreams=cms.untracked.uint32(int(self._options.nStreams))
2240  self.process.options.numberOfConcurrentLuminosityBlocks=cms.untracked.uint32(int(self._options.nConcurrentLumis))
2241  #repacked version
2242  if self._options.isRepacked:
2243  self.pythonCfgCode +="\n"
2244  self.pythonCfgCode +="from Configuration.Applications.ConfigBuilder import MassReplaceInputTag\n"
2245  self.pythonCfgCode +="MassReplaceInputTag(process, new=\"rawDataMapperByLabel\", old=\"rawDataCollector\")\n"
2246  MassReplaceInputTag(self.process, new="rawDataMapperByLabel", old="rawDataCollector")
2247 
2248  # special treatment in case of production filter sequence 2/2
2249  if self.productionFilterSequence:
2250  self.pythonCfgCode +='# filter all path with the production filter sequence\n'
2251  self.pythonCfgCode +='for path in process.paths:\n'
2252  if len(self.conditionalPaths):
2253  self.pythonCfgCode +='\tif not path in %s: continue\n'%str(self.conditionalPaths)
2254  if len(self.excludedPaths):
2255  self.pythonCfgCode +='\tif path in %s: continue\n'%str(self.excludedPaths)
2256  self.pythonCfgCode +='\tgetattr(process,path).insert(0, process.%s)\n'%(self.productionFilterSequence,)
2257  pfs = getattr(self.process,self.productionFilterSequence)
2258  for path in self.process.paths:
2259  if not path in self.conditionalPaths: continue
2260  if path in self.excludedPaths: continue
2261  getattr(self.process,path).insert(0, pfs)
2262 
2263 
2264  # dump customise fragment
2265  self.pythonCfgCode += self.addCustomise()
2266 
2267  if self._options.runUnscheduled:
2268  # prune and delete paths
2269  #this is not supporting the blacklist at this point since I do not understand it
2270  self.pythonCfgCode+="#do not add changes to your config after this point (unless you know what you are doing)\n"
2271  self.pythonCfgCode+="from FWCore.ParameterSet.Utilities import convertToUnscheduled\n"
2272  self.pythonCfgCode+="process=convertToUnscheduled(process)\n"
2273 
2274  from FWCore.ParameterSet.Utilities import convertToUnscheduled
2275  self.process=convertToUnscheduled(self.process)
2276 
2277  self.pythonCfgCode += self.addCustomise(1)
2278 
2279  self.pythonCfgCode += self.addCustomiseCmdLine()
2280 
2281  if hasattr(self.process,"logErrorHarvester"):
2282  #configure logErrorHarvester to wait for same EDProducers to finish as the OutputModules
2283  self.pythonCfgCode +="\n#Have logErrorHarvester wait for the same EDProducers to finish as those providing data for the OutputModule\n"
2284  self.pythonCfgCode +="from FWCore.Modules.logErrorHarvester_cff import customiseLogErrorHarvesterUsingOutputCommands\n"
2285  self.pythonCfgCode +="process = customiseLogErrorHarvesterUsingOutputCommands(process)\n"
2286  from FWCore.Modules.logErrorHarvester_cff import customiseLogErrorHarvesterUsingOutputCommands
2287  self.process = customiseLogErrorHarvesterUsingOutputCommands(self.process)
2288 
2289  # Temporary hack to put the early delete customization after
2290  # everything else
2291  #
2292  # FIXME: remove when no longer needed
2293  self.pythonCfgCode += "\n# Add early deletion of temporary data products to reduce peak memory need\n"
2294  self.pythonCfgCode += "from Configuration.StandardSequences.earlyDeleteSettings_cff import customiseEarlyDelete\n"
2295  self.pythonCfgCode += "process = customiseEarlyDelete(process)\n"
2296  self.pythonCfgCode += "# End adding early deletion\n"
2297  from Configuration.StandardSequences.earlyDeleteSettings_cff import customiseEarlyDelete
2298  self.process = customiseEarlyDelete(self.process)
2299 
2300  imports = cms.specialImportRegistry.getSpecialImports()
2301  if len(imports) > 0:
2302  #need to inject this at the top
2303  index = self.pythonCfgCode.find("import FWCore.ParameterSet.Config")
2304  #now find the end of line
2305  index = self.pythonCfgCode.find("\n",index)
2306  self.pythonCfgCode = self.pythonCfgCode[:index]+ "\n" + "\n".join(imports)+"\n" +self.pythonCfgCode[index:]
2307 
2308 
2309  # make the .io file
2310 
2311  if self._options.io:
2312  #io=open(self._options.python_filename.replace('.py','.io'),'w')
2313  if not self._options.io.endswith('.io'): self._option.io+='.io'
2314  io=open(self._options.io,'w')
2315  ioJson={}
2316  if hasattr(self.process.source,"fileNames"):
2317  if len(self.process.source.fileNames.value()):
2318  ioJson['primary']=self.process.source.fileNames.value()
2319  if hasattr(self.process.source,"secondaryFileNames"):
2320  if len(self.process.source.secondaryFileNames.value()):
2321  ioJson['secondary']=self.process.source.secondaryFileNames.value()
2322  if self._options.pileup_input and (self._options.pileup_input.startswith('dbs:') or self._options.pileup_input.startswith('das:')):
2323  ioJson['pileup']=self._options.pileup_input[4:]
2324  for (o,om) in self.process.outputModules_().items():
2325  ioJson[o]=om.fileName.value()
2326  ioJson['GT']=self.process.GlobalTag.globaltag.value()
2327  if self.productionFilterSequence:
2328  ioJson['filter']=self.productionFilterSequence
2329  import json
2330  io.write(json.dumps(ioJson))
2331  return
2332 

References ConfigBuilder.ConfigBuilder._options, ConfigBuilder.ConfigBuilder.addCommon(), ConfigBuilder.ConfigBuilder.addConditions(), ConfigBuilder.ConfigBuilder.addCustomise(), ConfigBuilder.ConfigBuilder.addCustomiseCmdLine(), ConfigBuilder.ConfigBuilder.addedObjects, ConfigBuilder.ConfigBuilder.additionalCommands, ConfigBuilder.ConfigBuilder.additionalOutputs, ConfigBuilder.ConfigBuilder.addMaxEvents(), ConfigBuilder.ConfigBuilder.addOutput(), ConfigBuilder.ConfigBuilder.addSource(), ConfigBuilder.ConfigBuilder.addStandardSequences(), mps_setup.append, helpers.associatePatAlgosToolsTask(), ConfigBuilder.ConfigBuilder.blacklist_paths, ConfigBuilder.ConfigBuilder.build_production_info(), ConfigBuilder.ConfigBuilder.completeInputCommand(), ConfigBuilder.ConfigBuilder.conditionalPaths, cmsswConfigtrace.convertToUnscheduled(), earlyDeleteSettings_cff.customiseEarlyDelete(), logErrorHarvester_cff.customiseLogErrorHarvesterUsingOutputCommands(), ConfigBuilder.dumpPython(), ConfigBuilder.ConfigBuilder.EVTCONTDefaultCFF, ConfigBuilder.ConfigBuilder.excludedPaths, spr.find(), ConfigBuilder.ConfigBuilder.imports, edm::eventsetup::heterocontainer.insert(), createfilelist.int, mps_monitormerge.items, join(), relativeConstraints.keys, ConfigBuilder.ConfigBuilder.labelsToAssociate, ConfigBuilder.ConfigBuilder.loadAndRemember(), edm.print(), DTT0WireWorkflow.DTT0WireWorkflow.process, DTVdriftWorkflow.DTvdriftWorkflow.process, DTTtrigWorkflow.DTttrigWorkflow.process, DTWorkflow.DTWorkflow.process, ConfigBuilder.ConfigBuilder.process, ConfigBuilder.ConfigBuilder.productionFilterSequence, ConfigBuilder.ConfigBuilder.pythonCfgCode, ConfigBuilder.ConfigBuilder.schedule, ConfigBuilder.ConfigBuilder.stepMap, str, ConfigBuilder.ConfigBuilder.with_input, and ConfigBuilder.ConfigBuilder.with_output.

◆ prepare_ALCA()

def ConfigBuilder.ConfigBuilder.prepare_ALCA (   self,
  sequence = None,
  workflow = 'full' 
)
Enrich the process with alca streams 

Definition at line 1244 of file ConfigBuilder.py.

1244  def prepare_ALCA(self, sequence = None, workflow = 'full'):
1245  """ Enrich the process with alca streams """
1246  alcaConfig=self.loadDefaultOrSpecifiedCFF(sequence,self.ALCADefaultCFF)
1247  sequence = sequence.split('.')[-1]
1248 
1249  # decide which ALCA paths to use
1250  alcaList = sequence.split("+")
1251  maxLevel=0
1252  from Configuration.AlCa.autoAlca import autoAlca
1253  # support @X from autoAlca.py, and recursion support: i.e T0:@Mu+@EG+...
1254  self.expandMapping(alcaList,autoAlca)
1255  self.AlCaPaths=[]
1256  for name in alcaConfig.__dict__:
1257  alcastream = getattr(alcaConfig,name)
1258  shortName = name.replace('ALCARECOStream','')
1259  if shortName in alcaList and isinstance(alcastream,cms.FilteredStream):
1260  output = self.addExtraStream(name,alcastream, workflow = workflow)
1261  self.executeAndRemember('process.ALCARECOEventContent.outputCommands.extend(process.OutALCARECO'+shortName+'_noDrop.outputCommands)')
1262  self.AlCaPaths.append(shortName)
1263  if 'DQM' in alcaList:
1264  if not self._options.inlineEventContent and hasattr(self.process,name):
1265  self.executeAndRemember('process.' + name + '.outputCommands.append("keep *_MEtoEDMConverter_*_*")')
1266  else:
1267  output.outputCommands.append("keep *_MEtoEDMConverter_*_*")
1268 
1269  #rename the HLT process name in the alca modules
1270  if self._options.hltProcess or 'HLT' in self.stepMap:
1271  if isinstance(alcastream.paths,tuple):
1272  for path in alcastream.paths:
1273  self.renameHLTprocessInSequence(path.label())
1274  else:
1275  self.renameHLTprocessInSequence(alcastream.paths.label())
1276 
1277  for i in range(alcaList.count(shortName)):
1278  alcaList.remove(shortName)
1279 
1280  # DQM needs a special handling
1281  elif name == 'pathALCARECODQM' and 'DQM' in alcaList:
1282  path = getattr(alcaConfig,name)
1283  self.schedule.append(path)
1284  alcaList.remove('DQM')
1285 
1286  if isinstance(alcastream,cms.Path):
1287  #black list the alca path so that they do not appear in the cfg
1288  self.blacklist_paths.append(alcastream)
1289 
1290 
1291  if len(alcaList) != 0:
1292  available=[]
1293  for name in alcaConfig.__dict__:
1294  alcastream = getattr(alcaConfig,name)
1295  if isinstance(alcastream,cms.FilteredStream):
1296  available.append(name.replace('ALCARECOStream',''))
1297  print("The following alcas could not be found "+str(alcaList))
1298  print("available ",available)
1299  #print "verify your configuration, ignoring for now"
1300  raise Exception("The following alcas could not be found "+str(alcaList))
1301 

References ConfigBuilder.ConfigBuilder.ALCADefaultCFF, ConfigBuilder.ConfigBuilder.AlCaPaths, ConfigBuilder.ConfigBuilder.expandMapping(), and ConfigBuilder.ConfigBuilder.loadDefaultOrSpecifiedCFF().

Referenced by ConfigBuilder.ConfigBuilder.prepare_ALCAOUTPUT(), and ConfigBuilder.ConfigBuilder.prepare_ALCAPRODUCER().

◆ prepare_ALCAHARVEST()

def ConfigBuilder.ConfigBuilder.prepare_ALCAHARVEST (   self,
  sequence = None 
)
Enrich the process with AlCaHarvesting step 

Definition at line 2016 of file ConfigBuilder.py.

2016  def prepare_ALCAHARVEST(self, sequence = None):
2017  """ Enrich the process with AlCaHarvesting step """
2018  harvestingConfig = self.loadAndRemember(self.ALCAHARVESTDefaultCFF)
2019  sequence=sequence.split(".")[-1]
2020 
2021  # decide which AlcaHARVESTING paths to use
2022  harvestingList = sequence.split("+")
2023 
2024 
2025 
2026  from Configuration.AlCa.autoPCL import autoPCL
2027  self.expandMapping(harvestingList,autoPCL)
2028 
2029  for name in harvestingConfig.__dict__:
2030  harvestingstream = getattr(harvestingConfig,name)
2031  if name in harvestingList and isinstance(harvestingstream,cms.Path):
2032  self.schedule.append(harvestingstream)
2033  if isinstance(getattr(harvestingConfig,"ALCAHARVEST" + name + "_dbOutput"), cms.VPSet) and \
2034  isinstance(getattr(harvestingConfig,"ALCAHARVEST" + name + "_metadata"), cms.VPSet):
2035  self.executeAndRemember("process.PoolDBOutputService.toPut.extend(process.ALCAHARVEST" + name + "_dbOutput)")
2036  self.executeAndRemember("process.pclMetadataWriter.recordsToMap.extend(process.ALCAHARVEST" + name + "_metadata)")
2037  else:
2038  self.executeAndRemember("process.PoolDBOutputService.toPut.append(process.ALCAHARVEST" + name + "_dbOutput)")
2039  self.executeAndRemember("process.pclMetadataWriter.recordsToMap.append(process.ALCAHARVEST" + name + "_metadata)")
2040  harvestingList.remove(name)
2041  # append the common part at the end of the sequence
2042  lastStep = getattr(harvestingConfig,"ALCAHARVESTDQMSaveAndMetadataWriter")
2043  self.schedule.append(lastStep)
2044 
2045  if len(harvestingList) != 0 and 'dummyHarvesting' not in harvestingList :
2046  print("The following harvesting could not be found : ", harvestingList)
2047  raise Exception("The following harvesting could not be found : "+str(harvestingList))
2048 
2049 
2050 

References ConfigBuilder.ConfigBuilder.ALCAHARVESTDefaultCFF, mps_setup.append, ConfigBuilder.ConfigBuilder.executeAndRemember(), ConfigBuilder.ConfigBuilder.expandMapping(), ConfigBuilder.ConfigBuilder.loadAndRemember(), ConfigBuilder.ConfigBuilder.prepare_ENDJOB(), edm.print(), ConfigBuilder.ConfigBuilder.schedule, and str.

◆ prepare_ALCAOUTPUT()

def ConfigBuilder.ConfigBuilder.prepare_ALCAOUTPUT (   self,
  sequence = None 
)

Definition at line 1241 of file ConfigBuilder.py.

1241  def prepare_ALCAOUTPUT(self, sequence = None):
1242  self.prepare_ALCA(sequence, workflow = "output")
1243 

References ConfigBuilder.ConfigBuilder.prepare_ALCA().

Referenced by ConfigBuilder.ConfigBuilder.prepare_ALCAPRODUCER().

◆ prepare_ALCAPRODUCER()

def ConfigBuilder.ConfigBuilder.prepare_ALCAPRODUCER (   self,
  sequence = None 
)

Definition at line 1238 of file ConfigBuilder.py.

1238  def prepare_ALCAPRODUCER(self, sequence = None):
1239  self.prepare_ALCA(sequence, workflow = "producers")
1240 

References ConfigBuilder.ConfigBuilder.prepare_ALCA(), and ConfigBuilder.ConfigBuilder.prepare_ALCAOUTPUT().

Referenced by ConfigBuilder.ConfigBuilder.scheduleSequenceAtEnd().

◆ prepare_CFWRITER()

def ConfigBuilder.ConfigBuilder.prepare_CFWRITER (   self,
  sequence = None 
)
Enrich the schedule with the crossing frame writer step

Definition at line 1437 of file ConfigBuilder.py.

1437  def prepare_CFWRITER(self, sequence = None):
1438  """ Enrich the schedule with the crossing frame writer step"""
1439  self.loadAndRemember(self.CFWRITERDefaultCFF)
1440  self.scheduleSequence('pcfw','cfwriter_step')
1441  return
1442 

References ConfigBuilder.ConfigBuilder.CFWRITERDefaultCFF, ConfigBuilder.ConfigBuilder.loadAndRemember(), ConfigBuilder.ConfigBuilder.prepare_DATAMIX(), and ConfigBuilder.ConfigBuilder.scheduleSequence().

Referenced by ConfigBuilder.ConfigBuilder.prepare_DIGI().

◆ prepare_DATAMIX()

def ConfigBuilder.ConfigBuilder.prepare_DATAMIX (   self,
  sequence = None 
)
Enrich the schedule with the digitisation step

Definition at line 1443 of file ConfigBuilder.py.

1443  def prepare_DATAMIX(self, sequence = None):
1444  """ Enrich the schedule with the digitisation step"""
1445  self.loadAndRemember(self.DATAMIXDefaultCFF)
1446  self.scheduleSequence('pdatamix','datamixing_step')
1447 
1448  if self._options.pileup_input:
1449  theFiles=''
1450  if self._options.pileup_input.startswith('dbs:') or self._options.pileup_input.startswith('das:'):
1451  theFiles=filesFromDASQuery('file dataset = %s'%(self._options.pileup_input[4:],),self._options.pileup_dasoption)[0]
1452  elif self._options.pileup_input.startswith("filelist:"):
1453  theFiles= (filesFromList(self._options.pileup_input[9:]))[0]
1454  else:
1455  theFiles=self._options.pileup_input.split(',')
1456  #print theFiles
1457  self.executeAndRemember( "process.mixData.input.fileNames = cms.untracked.vstring(%s)"%( theFiles ) )
1458 
1459  return
1460 

References ConfigBuilder.ConfigBuilder._options, ConfigBuilder.ConfigBuilder.DATAMIXDefaultCFF, ConfigBuilder.ConfigBuilder.executeAndRemember(), ConfigBuilder.filesFromDASQuery(), ConfigBuilder.filesFromList(), ConfigBuilder.ConfigBuilder.loadAndRemember(), ConfigBuilder.ConfigBuilder.prepare_DIGI2RAW(), and ConfigBuilder.ConfigBuilder.scheduleSequence().

Referenced by ConfigBuilder.ConfigBuilder.prepare_CFWRITER().

◆ prepare_DIGI()

def ConfigBuilder.ConfigBuilder.prepare_DIGI (   self,
  sequence = None 
)
Enrich the schedule with the digitisation step

Definition at line 1417 of file ConfigBuilder.py.

1417  def prepare_DIGI(self, sequence = None):
1418  """ Enrich the schedule with the digitisation step"""
1419  self.loadDefaultOrSpecifiedCFF(sequence,self.DIGIDefaultCFF)
1420 
1421  if self._options.gflash==True:
1422  self.loadAndRemember("Configuration/StandardSequences/GFlashDIGI_cff")
1423 
1424  if sequence == 'pdigi_valid' or sequence == 'pdigi_hi':
1425  self.executeAndRemember("process.mix.digitizers = cms.PSet(process.theDigitizersValid)")
1426 
1427  if sequence != 'pdigi_nogen' and sequence != 'pdigi_valid_nogen' and sequence != 'pdigi_hi_nogen' and not self.process.source.type_()=='EmptySource' and not self._options.filetype == "LHE":
1428  if self._options.inputEventContent=='':
1429  self._options.inputEventContent='REGEN'
1430  else:
1431  self._options.inputEventContent=self._options.inputEventContent+',REGEN'
1432 
1433 
1434  self.scheduleSequence(sequence.split('.')[-1],'digitisation_step')
1435  return
1436 

References ConfigBuilder.ConfigBuilder._options, ConfigBuilder.ConfigBuilder.DIGIDefaultCFF, ConfigBuilder.ConfigBuilder.executeAndRemember(), ConfigBuilder.ConfigBuilder.loadAndRemember(), ConfigBuilder.ConfigBuilder.loadDefaultOrSpecifiedCFF(), ConfigBuilder.ConfigBuilder.prepare_CFWRITER(), DTT0WireWorkflow.DTT0WireWorkflow.process, DTVdriftWorkflow.DTvdriftWorkflow.process, DTTtrigWorkflow.DTttrigWorkflow.process, DTWorkflow.DTWorkflow.process, ConfigBuilder.ConfigBuilder.process, and ConfigBuilder.ConfigBuilder.scheduleSequence().

Referenced by ConfigBuilder.ConfigBuilder.prepare_SIM().

◆ prepare_DIGI2RAW()

def ConfigBuilder.ConfigBuilder.prepare_DIGI2RAW (   self,
  sequence = None 
)

Definition at line 1461 of file ConfigBuilder.py.

1461  def prepare_DIGI2RAW(self, sequence = None):
1462  self.loadDefaultOrSpecifiedCFF(sequence,self.DIGI2RAWDefaultCFF)
1463  self.scheduleSequence(sequence.split('.')[-1],'digi2raw_step')
1464  return
1465 

References ConfigBuilder.ConfigBuilder.DIGI2RAWDefaultCFF, ConfigBuilder.ConfigBuilder.loadDefaultOrSpecifiedCFF(), ConfigBuilder.ConfigBuilder.prepare_REPACK(), and ConfigBuilder.ConfigBuilder.scheduleSequence().

Referenced by ConfigBuilder.ConfigBuilder.prepare_DATAMIX().

◆ prepare_DQM()

def ConfigBuilder.ConfigBuilder.prepare_DQM (   self,
  sequence = 'DQMOffline' 
)

Definition at line 1935 of file ConfigBuilder.py.

1935  def prepare_DQM(self, sequence = 'DQMOffline'):
1936  # this one needs replacement
1937 
1938  # any 'DQM' job should use DQMStore in non-legacy mode (but not HARVESTING)
1939  self.loadAndRemember("DQMServices/Core/DQMStoreNonLegacy_cff")
1940  self.loadDefaultOrSpecifiedCFF(sequence,self.DQMOFFLINEDefaultCFF)
1941  sequenceList=sequence.split('.')[-1].split('+')
1942  postSequenceList=sequence.split('.')[-1].split('+')
1943  from DQMOffline.Configuration.autoDQM import autoDQM
1944  self.expandMapping(sequenceList,autoDQM,index=0)
1945  self.expandMapping(postSequenceList,autoDQM,index=1)
1946 
1947  if len(set(sequenceList))!=len(sequenceList):
1948  sequenceList=list(set(sequenceList))
1949  print("Duplicate entries for DQM:, using",sequenceList)
1950 
1951  pathName='dqmoffline_step'
1952  for (i,sequence) in enumerate(sequenceList):
1953  if (i!=0):
1954  pathName='dqmoffline_%d_step'%(i)
1955 
1956  if 'HLT' in self.stepMap.keys() or self._options.hltProcess:
1957  self.renameHLTprocessInSequence(sequence)
1958 
1959  setattr(self.process,pathName, cms.EndPath( getattr(self.process,sequence ) ) )
1960  self.schedule.append(getattr(self.process,pathName))
1961 
1962  if hasattr(self.process,"genstepfilter") and len(self.process.genstepfilter.triggerConditions):
1963  #will get in the schedule, smoothly
1964  getattr(self.process,pathName).insert(0,self.process.genstepfilter)
1965 
1966 
1967  pathName='dqmofflineOnPAT_step'
1968  for (i,sequence) in enumerate(postSequenceList):
1969  #Fix needed to avoid duplication of sequences not defined in autoDQM or without a PostDQM
1970  if (sequenceList[i]==postSequenceList[i]):
1971  continue
1972  if (i!=0):
1973  pathName='dqmofflineOnPAT_%d_step'%(i)
1974 
1975  setattr(self.process,pathName, cms.EndPath( getattr(self.process, sequence ) ) )
1976  self.schedule.append(getattr(self.process,pathName))
1977 

References ConfigBuilder.ConfigBuilder._options, mps_setup.append, ConfigBuilder.ConfigBuilder.DQMOFFLINEDefaultCFF, ConfigBuilder.ConfigBuilder.expandMapping(), edm::eventsetup::heterocontainer.insert(), relativeConstraints.keys, list(), ConfigBuilder.ConfigBuilder.loadAndRemember(), ConfigBuilder.ConfigBuilder.loadDefaultOrSpecifiedCFF(), ConfigBuilder.ConfigBuilder.prepare_HARVESTING(), edm.print(), DTT0WireWorkflow.DTT0WireWorkflow.process, DTVdriftWorkflow.DTvdriftWorkflow.process, DTTtrigWorkflow.DTttrigWorkflow.process, DTWorkflow.DTWorkflow.process, ConfigBuilder.ConfigBuilder.process, ConfigBuilder.ConfigBuilder.renameHLTprocessInSequence(), ConfigBuilder.ConfigBuilder.schedule, cms::dd.split(), and ConfigBuilder.ConfigBuilder.stepMap.

Referenced by ConfigBuilder.ConfigBuilder.expandMapping().

◆ prepare_EI()

def ConfigBuilder.ConfigBuilder.prepare_EI (   self,
  sequence = None 
)
Enrich the schedule with event interpretation 

Definition at line 1693 of file ConfigBuilder.py.

1693  def prepare_EI(self, sequence = None):
1694  ''' Enrich the schedule with event interpretation '''
1695  from Configuration.StandardSequences.EventInterpretation import EventInterpretation
1696  if sequence in EventInterpretation:
1697  self.EIDefaultCFF = EventInterpretation[sequence]
1698  sequence = 'EIsequence'
1699  else:
1700  raise Exception('Cannot set %s event interpretation'%( sequence) )
1701  self.loadDefaultOrSpecifiedCFF(sequence,self.EIDefaultCFF)
1702  self.scheduleSequence(sequence.split('.')[-1],'eventinterpretaion_step')
1703  return
1704 

References ConfigBuilder.ConfigBuilder.EIDefaultCFF, ConfigBuilder.ConfigBuilder.loadDefaultOrSpecifiedCFF(), ConfigBuilder.ConfigBuilder.prepare_SKIM(), and ConfigBuilder.ConfigBuilder.scheduleSequence().

Referenced by ConfigBuilder.ConfigBuilder.prepare_NANO().

◆ prepare_ENDJOB()

def ConfigBuilder.ConfigBuilder.prepare_ENDJOB (   self,
  sequence = 'endOfProcess' 
)

Definition at line 2051 of file ConfigBuilder.py.

2051  def prepare_ENDJOB(self, sequence = 'endOfProcess'):
2052  self.loadDefaultOrSpecifiedCFF(sequence,self.ENDJOBDefaultCFF)
2053  self.scheduleSequenceAtEnd(sequence.split('.')[-1],'endjob_step')
2054  return
2055 

References ConfigBuilder.ConfigBuilder.ENDJOBDefaultCFF, ConfigBuilder.ConfigBuilder.finalizeFastSimHLT(), ConfigBuilder.ConfigBuilder.loadDefaultOrSpecifiedCFF(), and ConfigBuilder.ConfigBuilder.scheduleSequenceAtEnd().

Referenced by ConfigBuilder.ConfigBuilder.prepare_ALCAHARVEST().

◆ prepare_FILTER()

def ConfigBuilder.ConfigBuilder.prepare_FILTER (   self,
  sequence = None 
)
Enrich the schedule with a user defined filter sequence 

Definition at line 1589 of file ConfigBuilder.py.

1589  def prepare_FILTER(self, sequence = None):
1590  ''' Enrich the schedule with a user defined filter sequence '''
1591 
1592  filterConfig=self.load(sequence.split('.')[0])
1593  filterSeq=sequence.split('.')[-1]
1594 
1595  class PrintAllModules(object):
1596  def __init__(self):
1597  self.inliner=''
1598  pass
1599  def enter(self,visitee):
1600  try:
1601  label=visitee.label()
1602 
1603  self.inliner=label+','+self.inliner
1604  except:
1605  pass
1606  def leave(self,v): pass
1607 
1608  expander=PrintAllModules()
1609  getattr(self.process,filterSeq).visit( expander )
1610  self._options.inlineObjets+=','+expander.inliner
1611  self._options.inlineObjets+=','+filterSeq
1612 
1613 
1614  self.scheduleSequence(filterSeq,'filtering_step')
1615  self.nextScheduleIsConditional=True
1616 
1617  self.productionFilterSequence = filterSeq
1618 
1619  return
1620 

References ConfigBuilder.ConfigBuilder.__init__(), ConfigBuilder.ConfigBuilder.inliner, VisualizationOptions.load(), BTagCalibrationReader::BTagCalibrationReaderImpl.load(), BTagCalibrationReader.load(), cond::persistency::GTEditor.load(), cond::persistency::IOVEditor.load(), L1MuDTPtaLut.load(), L1MuDTPhiLut.load(), L1MuDTEtaPatternLut.load(), L1MuDTQualPatternLut.load(), PiecewiseScalingPolynomial.load(), L1MuDTExtLut.load(), HBHENegativeEFilter.load(), HBHEChannelGroups.load(), cond::persistency::RunInfoProxy.load(), HcalIndexLookup.load(), cond::persistency::GTProxy.load(), cond::persistency::IOVProxy.load(), OOTPileupCorrData.load(), TrackerMap.load(), ConfigBuilder.ConfigBuilder.load(), tkal_create_file_lists._DasCache.load(), and resolutioncreator_cfi.object.

Referenced by ConfigBuilder.ConfigBuilder.prepare_L1TrackTrigger().

◆ prepare_GEN()

def ConfigBuilder.ConfigBuilder.prepare_GEN (   self,
  sequence = None 
)
load the fragment of generator configuration 

Definition at line 1319 of file ConfigBuilder.py.

1319  def prepare_GEN(self, sequence = None):
1320  """ load the fragment of generator configuration """
1321  loadFailure=False
1322  #remove trailing .py
1323  #support old style .cfi by changing into something.cfi into something_cfi
1324  #remove python/ from the name
1325  loadFragment = self._options.evt_type.replace('.py','',).replace('.','_').replace('python/','')
1326  #standard location of fragments
1327  if not '/' in loadFragment:
1328  loadFragment='Configuration.Generator.'+loadFragment
1329  else:
1330  loadFragment=loadFragment.replace('/','.')
1331  try:
1332  print("Loading generator fragment from",loadFragment)
1333  __import__(loadFragment)
1334  except:
1335  loadFailure=True
1336  #if self.process.source and self.process.source.type_()=='EmptySource':
1337  if not (self._options.filein or self._options.dasquery):
1338  raise Exception("Neither gen fragment of input files provided: this is an inconsistent GEN step configuration")
1339 
1340  if not loadFailure:
1341  generatorModule=sys.modules[loadFragment]
1342  genModules=generatorModule.__dict__
1343  #remove lhe producer module since this should have been
1344  #imported instead in the LHE step
1345  if self.LHEDefaultSeq in genModules:
1346  del genModules[self.LHEDefaultSeq]
1347 
1348  if self._options.hideGen:
1349  self.loadAndRemember(loadFragment)
1350  else:
1351  self.process.load(loadFragment)
1352  # expose the objects from that fragment to the configuration
1353  import FWCore.ParameterSet.Modules as cmstypes
1354  for name in genModules:
1355  theObject = getattr(generatorModule,name)
1356  if isinstance(theObject, cmstypes._Module):
1357  self._options.inlineObjets=name+','+self._options.inlineObjets
1358  elif isinstance(theObject, cms.Sequence) or isinstance(theObject, cmstypes.ESProducer):
1359  self._options.inlineObjets+=','+name
1360 
1361  if sequence == self.GENDefaultSeq or sequence == 'pgen_genonly':
1362  if 'ProductionFilterSequence' in genModules and ('generator' in genModules):
1363  self.productionFilterSequence = 'ProductionFilterSequence'
1364  elif 'generator' in genModules:
1365  self.productionFilterSequence = 'generator'
1366 
1367  """ Enrich the schedule with the rest of the generation step """
1368  self.loadDefaultOrSpecifiedCFF(sequence,self.GENDefaultCFF)
1369  genSeqName=sequence.split('.')[-1]
1370 
1371  if True:
1372  try:
1373  from Configuration.StandardSequences.VtxSmeared import VtxSmeared
1374  cffToBeLoaded=VtxSmeared[self._options.beamspot]
1375  self.loadAndRemember(cffToBeLoaded)
1376  except ImportError:
1377  raise Exception("VertexSmearing type or beamspot "+self._options.beamspot+" unknown.")
1378 
1379  if self._options.scenario == 'HeavyIons':
1380  if self._options.pileup=='HiMixGEN':
1381  self.loadAndRemember("Configuration/StandardSequences/GeneratorMix_cff")
1382  else:
1383  self.loadAndRemember("Configuration/StandardSequences/GeneratorHI_cff")
1384 
1385  self.process.generation_step = cms.Path( getattr(self.process,genSeqName) )
1386  self.schedule.append(self.process.generation_step)
1387 
1388  #register to the genstepfilter the name of the path (static right now, but might evolve)
1389  self.executeAndRemember('process.genstepfilter.triggerConditions=cms.vstring("generation_step")')
1390 
1391  if 'reGEN' in self.stepMap:
1392  #stop here
1393  return
1394 
1395  """ Enrich the schedule with the summary of the filter step """
1396  #the gen filter in the endpath
1397  self.loadAndRemember("GeneratorInterface/Core/genFilterSummary_cff")
1398  self.scheduleSequenceAtEnd('genFilterSummary','genfiltersummary_step')
1399  return
1400 

References ConfigBuilder.ConfigBuilder._options, mps_setup.append, ConfigBuilder.ConfigBuilder.executeAndRemember(), ConfigBuilder.ConfigBuilder.GENDefaultCFF, ConfigBuilder.ConfigBuilder.GENDefaultSeq, ConfigBuilder.ConfigBuilder.LHEDefaultSeq, ConfigBuilder.ConfigBuilder.load(), ConfigBuilder.ConfigBuilder.loadAndRemember(), ConfigBuilder.ConfigBuilder.loadDefaultOrSpecifiedCFF(), ConfigBuilder.ConfigBuilder.prepare_SIM(), edm.print(), DTT0WireWorkflow.DTT0WireWorkflow.process, DTVdriftWorkflow.DTvdriftWorkflow.process, DTTtrigWorkflow.DTttrigWorkflow.process, DTWorkflow.DTWorkflow.process, ConfigBuilder.ConfigBuilder.process, ConfigBuilder.ConfigBuilder.productionFilterSequence, python.rootplot.root2matplotlib.replace(), ConfigBuilder.ConfigBuilder.schedule, ConfigBuilder.ConfigBuilder.scheduleSequenceAtEnd(), and ConfigBuilder.ConfigBuilder.stepMap.

◆ prepare_HARVESTING()

def ConfigBuilder.ConfigBuilder.prepare_HARVESTING (   self,
  sequence = None 
)
Enrich the process with harvesting step 

Definition at line 1978 of file ConfigBuilder.py.

1978  def prepare_HARVESTING(self, sequence = None):
1979  """ Enrich the process with harvesting step """
1980  self.DQMSaverCFF='Configuration/StandardSequences/DQMSaver'+self._options.harvesting+'_cff'
1981  self.loadAndRemember(self.DQMSaverCFF)
1982 
1983  harvestingConfig = self.loadDefaultOrSpecifiedCFF(sequence,self.HARVESTINGDefaultCFF)
1984  sequence = sequence.split('.')[-1]
1985 
1986  # decide which HARVESTING paths to use
1987  harvestingList = sequence.split("+")
1988  from DQMOffline.Configuration.autoDQM import autoDQM
1989  from Validation.Configuration.autoValidation import autoValidation
1990  import copy
1991  combined_mapping = copy.deepcopy( autoDQM )
1992  combined_mapping.update( autoValidation )
1993  self.expandMapping(harvestingList,combined_mapping,index=-1)
1994 
1995  if len(set(harvestingList))!=len(harvestingList):
1996  harvestingList=list(set(harvestingList))
1997  print("Duplicate entries for HARVESTING, using",harvestingList)
1998 
1999  for name in harvestingList:
2000  if not name in harvestingConfig.__dict__:
2001  print(name,"is not a possible harvesting type. Available are",harvestingConfig.__dict__.keys())
2002  # trigger hard error, like for other sequence types
2003  getattr(self.process, name)
2004  continue
2005  harvestingstream = getattr(harvestingConfig,name)
2006  if isinstance(harvestingstream,cms.Path):
2007  self.schedule.append(harvestingstream)
2008  self.blacklist_paths.append(harvestingstream)
2009  if isinstance(harvestingstream,cms.Sequence):
2010  setattr(self.process,name+"_step",cms.Path(harvestingstream))
2011  self.schedule.append(getattr(self.process,name+"_step"))
2012 
2013  self.scheduleSequence('DQMSaver','dqmsave_step')
2014  return
2015 

References ConfigBuilder.ConfigBuilder._options, and ConfigBuilder.ConfigBuilder.DQMSaverCFF.

Referenced by ConfigBuilder.ConfigBuilder.prepare_DQM().

◆ prepare_HLT()

def ConfigBuilder.ConfigBuilder.prepare_HLT (   self,
  sequence = None 
)
Enrich the schedule with the HLT simulation step

Definition at line 1491 of file ConfigBuilder.py.

1491  def prepare_HLT(self, sequence = None):
1492  """ Enrich the schedule with the HLT simulation step"""
1493  if not sequence:
1494  print("no specification of the hlt menu has been given, should never happen")
1495  raise Exception('no HLT sequence provided')
1496 
1497  if '@' in sequence:
1498  # case where HLT:@something was provided
1499  from Configuration.HLT.autoHLT import autoHLT
1500  key = sequence[1:]
1501  if key in autoHLT:
1502  sequence = autoHLT[key]
1503  else:
1504  raise ValueError('no HLT mapping key "%s" found in autoHLT' % key)
1505 
1506  if ',' in sequence:
1507  #case where HLT:something:something was provided
1508  self.executeAndRemember('import HLTrigger.Configuration.Utilities')
1509  optionsForHLT = {}
1510  if self._options.scenario == 'HeavyIons':
1511  optionsForHLT['type'] = 'HIon'
1512  else:
1513  optionsForHLT['type'] = 'GRun'
1514  optionsForHLTConfig = ', '.join('%s=%s' % (key, repr(val)) for (key, val) in six.iteritems(optionsForHLT))
1515  if sequence == 'run,fromSource':
1516  if hasattr(self.process.source,'firstRun'):
1517  self.executeAndRemember('process.loadHltConfiguration("run:%%d"%%(process.source.firstRun.value()),%s)'%(optionsForHLTConfig))
1518  elif hasattr(self.process.source,'setRunNumber'):
1519  self.executeAndRemember('process.loadHltConfiguration("run:%%d"%%(process.source.setRunNumber.value()),%s)'%(optionsForHLTConfig))
1520  else:
1521  raise Exception('Cannot replace menu to load %s'%(sequence))
1522  else:
1523  self.executeAndRemember('process.loadHltConfiguration("%s",%s)'%(sequence.replace(',',':'),optionsForHLTConfig))
1524  else:
1525  self.loadAndRemember('HLTrigger/Configuration/HLT_%s_cff' % sequence)
1526 
1527  if self._options.isMC:
1528  self._options.customisation_file.append("HLTrigger/Configuration/customizeHLTforMC.customizeHLTforMC")
1529 
1530  if self._options.name != 'HLT':
1531  self.additionalCommands.append('from HLTrigger.Configuration.CustomConfigs import ProcessName')
1532  self.additionalCommands.append('process = ProcessName(process)')
1533  self.additionalCommands.append('')
1534  from HLTrigger.Configuration.CustomConfigs import ProcessName
1535  self.process = ProcessName(self.process)
1536 
1537  self.schedule.append(self.process.HLTSchedule)
1538  [self.blacklist_paths.append(path) for path in self.process.HLTSchedule if isinstance(path,(cms.Path,cms.EndPath))]
1539 
1540  #this is a fake, to be removed with fastim migration and HLT menu dump
1541  if self._options.fast:
1542  if not hasattr(self.process,'HLTEndSequence'):
1543  self.executeAndRemember("process.HLTEndSequence = cms.Sequence( process.dummyModule )")
1544 
1545 

References ConfigBuilder.ConfigBuilder._options, ConfigBuilder.ConfigBuilder.additionalCommands, mps_setup.append, ConfigBuilder.ConfigBuilder.blacklist_paths, ConfigBuilder.ConfigBuilder.executeAndRemember(), join(), ConfigBuilder.ConfigBuilder.loadAndRemember(), ConfigBuilder.ConfigBuilder.prepare_RAW2RECO(), edm.print(), DTT0WireWorkflow.DTT0WireWorkflow.process, DTVdriftWorkflow.DTvdriftWorkflow.process, DTTtrigWorkflow.DTttrigWorkflow.process, DTWorkflow.DTWorkflow.process, ConfigBuilder.ConfigBuilder.process, CustomConfigs.ProcessName(), and ConfigBuilder.ConfigBuilder.schedule.

Referenced by ConfigBuilder.ConfigBuilder.prepare_L1REPACK().

◆ prepare_L1()

def ConfigBuilder.ConfigBuilder.prepare_L1 (   self,
  sequence = None 
)
Enrich the schedule with the L1 simulation step

Definition at line 1471 of file ConfigBuilder.py.

1471  def prepare_L1(self, sequence = None):
1472  """ Enrich the schedule with the L1 simulation step"""
1473  assert(sequence == None)
1474  self.loadAndRemember(self.L1EMDefaultCFF)
1475  self.scheduleSequence('SimL1Emulator','L1simulation_step')
1476  return
1477 

References cms::cuda.assert(), ConfigBuilder.ConfigBuilder.L1EMDefaultCFF, ConfigBuilder.ConfigBuilder.loadAndRemember(), ConfigBuilder.ConfigBuilder.prepare_L1REPACK(), and ConfigBuilder.ConfigBuilder.scheduleSequence().

Referenced by ConfigBuilder.ConfigBuilder.prepare_REPACK().

◆ prepare_L1HwVal()

def ConfigBuilder.ConfigBuilder.prepare_L1HwVal (   self,
  sequence = 'L1HwVal' 
)
Enrich the schedule with L1 HW validation 

Definition at line 1570 of file ConfigBuilder.py.

1570  def prepare_L1HwVal(self, sequence = 'L1HwVal'):
1571  ''' Enrich the schedule with L1 HW validation '''
1572  self.loadDefaultOrSpecifiedCFF(sequence,self.L1HwValDefaultCFF)
1573  #self.scheduleSequence(sequence.split('.')[-1],'l1hwval_step')
1574  print('\n\n\n DEPRECATED this has no action \n\n\n')
1575  return
1576 

References ConfigBuilder.ConfigBuilder.L1HwValDefaultCFF, ConfigBuilder.ConfigBuilder.loadDefaultOrSpecifiedCFF(), ConfigBuilder.ConfigBuilder.prepare_L1Reco(), and edm.print().

Referenced by ConfigBuilder.ConfigBuilder.prepare_PATFILTER().

◆ prepare_L1Reco()

def ConfigBuilder.ConfigBuilder.prepare_L1Reco (   self,
  sequence = "L1Reco" 
)
Enrich the schedule with L1 reconstruction 

Definition at line 1577 of file ConfigBuilder.py.

1577  def prepare_L1Reco(self, sequence = "L1Reco"):
1578  ''' Enrich the schedule with L1 reconstruction '''
1579  self.loadDefaultOrSpecifiedCFF(sequence,self.L1RecoDefaultCFF)
1580  self.scheduleSequence(sequence.split('.')[-1],'L1Reco_step')
1581  return
1582 

References ConfigBuilder.ConfigBuilder.L1RecoDefaultCFF, ConfigBuilder.ConfigBuilder.loadDefaultOrSpecifiedCFF(), ConfigBuilder.ConfigBuilder.prepare_L1TrackTrigger(), and ConfigBuilder.ConfigBuilder.scheduleSequence().

Referenced by ConfigBuilder.ConfigBuilder.prepare_L1HwVal().

◆ prepare_L1REPACK()

def ConfigBuilder.ConfigBuilder.prepare_L1REPACK (   self,
  sequence = None 
)
Enrich the schedule with the L1 simulation step, running the L1 emulator on data unpacked from the RAW collection, and repacking the result in a new RAW collection

Definition at line 1478 of file ConfigBuilder.py.

1478  def prepare_L1REPACK(self, sequence = None):
1479  """ Enrich the schedule with the L1 simulation step, running the L1 emulator on data unpacked from the RAW collection, and repacking the result in a new RAW collection"""
1480  supported = ['GT','GT1','GT2','GCTGT','Full','FullSimTP','FullMC','Full2015Data','uGT','CalouGT']
1481  if sequence in supported:
1482  self.loadAndRemember('Configuration/StandardSequences/SimL1EmulatorRepack_%s_cff'%sequence)
1483  if self._options.scenario == 'HeavyIons':
1484  self.renameInputTagsInSequence("SimL1Emulator","rawDataCollector","rawDataRepacker")
1485  self.scheduleSequence('SimL1Emulator','L1RePack_step')
1486  else:
1487  print("L1REPACK with '",sequence,"' is not supported! Supported choices are: ",supported)
1488  raise Exception('unsupported feature')
1489 
1490 

References ConfigBuilder.ConfigBuilder._options, ConfigBuilder.ConfigBuilder.loadAndRemember(), ConfigBuilder.ConfigBuilder.prepare_HLT(), edm.print(), ConfigBuilder.ConfigBuilder.renameInputTagsInSequence(), and ConfigBuilder.ConfigBuilder.scheduleSequence().

Referenced by ConfigBuilder.ConfigBuilder.prepare_L1().

◆ prepare_L1TrackTrigger()

def ConfigBuilder.ConfigBuilder.prepare_L1TrackTrigger (   self,
  sequence = "L1TrackTrigger" 
)
Enrich the schedule with L1 reconstruction 

Definition at line 1583 of file ConfigBuilder.py.

1583  def prepare_L1TrackTrigger(self, sequence = "L1TrackTrigger"):
1584  ''' Enrich the schedule with L1 reconstruction '''
1585  self.loadDefaultOrSpecifiedCFF(sequence,self.L1TrackTriggerDefaultCFF)
1586  self.scheduleSequence(sequence.split('.')[-1],'L1TrackTrigger_step')
1587  return
1588 

References ConfigBuilder.ConfigBuilder.L1TrackTriggerDefaultCFF, ConfigBuilder.ConfigBuilder.loadDefaultOrSpecifiedCFF(), ConfigBuilder.ConfigBuilder.prepare_FILTER(), and ConfigBuilder.ConfigBuilder.scheduleSequence().

Referenced by ConfigBuilder.ConfigBuilder.prepare_L1Reco().

◆ prepare_LHE()

def ConfigBuilder.ConfigBuilder.prepare_LHE (   self,
  sequence = None 
)

Definition at line 1302 of file ConfigBuilder.py.

1302  def prepare_LHE(self, sequence = None):
1303  #load the fragment
1304 
1305  loadFragment = self._options.evt_type.replace('.py','',).replace('.','_').replace('python/','').replace('/','.')
1306  print("Loading lhe fragment from",loadFragment)
1307  __import__(loadFragment)
1308  self.process.load(loadFragment)
1309 
1310  self._options.inlineObjets+=','+sequence
1311 
1312  getattr(self.process,sequence).nEvents = int(self._options.number)
1313 
1314  #schedule it
1315  self.process.lhe_step = cms.Path( getattr( self.process,sequence) )
1316  self.excludedPaths.append("lhe_step")
1317  self.schedule.append( self.process.lhe_step )
1318 

◆ prepare_NANO()

def ConfigBuilder.ConfigBuilder.prepare_NANO (   self,
  sequence = "nanoAOD" 
)
Enrich the schedule with NANO 

Definition at line 1678 of file ConfigBuilder.py.

1678  def prepare_NANO(self, sequence = "nanoAOD"):
1679  ''' Enrich the schedule with NANO '''
1680  self.loadDefaultOrSpecifiedCFF(sequence,self.NANODefaultCFF)
1681  self.scheduleSequence(sequence.split('.')[-1],'nanoAOD_step')
1682  custom = "nanoAOD_customizeData" if self._options.isData else "nanoAOD_customizeMC"
1683  if self._options.runUnscheduled:
1684  self._options.customisation_file_unsch.insert(0,"PhysicsTools/NanoAOD/nano_cff."+custom)
1685  else:
1686  self._options.customisation_file.insert(0,"PhysicsTools/NanoAOD/nano_cff."+custom)
1687  if self._options.hltProcess:
1688  if len(self._options.customise_commands) > 1:
1689  self._options.customise_commands = self._options.customise_commands + " \n"
1690  self._options.customise_commands = self._options.customise_commands + "process.unpackedPatTrigger.triggerResults= cms.InputTag( 'TriggerResults::"+self._options.hltProcess+"' )\n"
1691 
1692 

References ConfigBuilder.ConfigBuilder._options, ConfigBuilder.ConfigBuilder.loadDefaultOrSpecifiedCFF(), ConfigBuilder.ConfigBuilder.NANODefaultCFF, ConfigBuilder.ConfigBuilder.prepare_EI(), and ConfigBuilder.ConfigBuilder.scheduleSequence().

Referenced by ConfigBuilder.ConfigBuilder.prepare_PATGEN().

◆ prepare_PAT()

def ConfigBuilder.ConfigBuilder.prepare_PAT (   self,
  sequence = "miniAOD" 
)
Enrich the schedule with PAT 

Definition at line 1642 of file ConfigBuilder.py.

1642  def prepare_PAT(self, sequence = "miniAOD"):
1643  ''' Enrich the schedule with PAT '''
1644  self.prepare_PATFILTER(self)
1645  self.loadDefaultOrSpecifiedCFF(sequence,self.PATDefaultCFF)
1646  self.labelsToAssociate.append('patTask')
1647  if not self._options.runUnscheduled:
1648  raise Exception("MiniAOD production can only run in unscheduled mode, please run cmsDriver with --runUnscheduled")
1649  if self._options.isData:
1650  self._options.customisation_file_unsch.insert(0,"PhysicsTools/PatAlgos/slimming/miniAOD_tools.miniAOD_customizeAllData")
1651  else:
1652  if self._options.fast:
1653  self._options.customisation_file_unsch.insert(0,"PhysicsTools/PatAlgos/slimming/miniAOD_tools.miniAOD_customizeAllMCFastSim")
1654  else:
1655  self._options.customisation_file_unsch.insert(0,"PhysicsTools/PatAlgos/slimming/miniAOD_tools.miniAOD_customizeAllMC")
1656 
1657  if self._options.hltProcess:
1658  if len(self._options.customise_commands) > 1:
1659  self._options.customise_commands = self._options.customise_commands + " \n"
1660  self._options.customise_commands = self._options.customise_commands + "process.patTrigger.processName = \""+self._options.hltProcess+"\"\n"
1661  self._options.customise_commands = self._options.customise_commands + "process.slimmedPatTrigger.triggerResults= cms.InputTag( 'TriggerResults::"+self._options.hltProcess+"' )\n"
1662  self._options.customise_commands = self._options.customise_commands + "process.patMuons.triggerResults= cms.InputTag( 'TriggerResults::"+self._options.hltProcess+"' )\n"
1663 
1664 # self.renameHLTprocessInSequence(sequence)
1665 
1666  return
1667 

References ConfigBuilder.ConfigBuilder._options, mps_setup.append, ConfigBuilder.ConfigBuilder.labelsToAssociate, ConfigBuilder.ConfigBuilder.loadDefaultOrSpecifiedCFF(), ConfigBuilder.ConfigBuilder.PATDefaultCFF, ConfigBuilder.ConfigBuilder.prepare_PATFILTER(), and ConfigBuilder.ConfigBuilder.prepare_PATGEN().

Referenced by ConfigBuilder.ConfigBuilder.prepare_RECOBEFMIX().

◆ prepare_PATFILTER()

def ConfigBuilder.ConfigBuilder.prepare_PATFILTER (   self,
  sequence = None 
)

Definition at line 1564 of file ConfigBuilder.py.

1564  def prepare_PATFILTER(self, sequence=None):
1565  self.loadAndRemember("PhysicsTools/PatAlgos/slimming/metFilterPaths_cff")
1566  from PhysicsTools.PatAlgos.slimming.metFilterPaths_cff import allMetFilterPaths
1567  for filt in allMetFilterPaths:
1568  self.schedule.append(getattr(self.process,'Flag_'+filt))
1569 

References mps_setup.append, ConfigBuilder.ConfigBuilder.loadAndRemember(), ConfigBuilder.ConfigBuilder.prepare_L1HwVal(), DTT0WireWorkflow.DTT0WireWorkflow.process, DTVdriftWorkflow.DTvdriftWorkflow.process, DTTtrigWorkflow.DTttrigWorkflow.process, DTWorkflow.DTWorkflow.process, ConfigBuilder.ConfigBuilder.process, and ConfigBuilder.ConfigBuilder.schedule.

Referenced by ConfigBuilder.ConfigBuilder.prepare_PAT(), and ConfigBuilder.ConfigBuilder.prepare_RAW2DIGI().

◆ prepare_PATGEN()

def ConfigBuilder.ConfigBuilder.prepare_PATGEN (   self,
  sequence = "miniGEN" 
)
Enrich the schedule with PATGEN 

Definition at line 1668 of file ConfigBuilder.py.

1668  def prepare_PATGEN(self, sequence = "miniGEN"):
1669  ''' Enrich the schedule with PATGEN '''
1670  self.loadDefaultOrSpecifiedCFF(sequence,self.PATGENDefaultCFF) #this is unscheduled
1671  self.labelsToAssociate.append('patGENTask')
1672  if not self._options.runUnscheduled:
1673  raise Exception("MiniGEN production can only run in unscheduled mode, please run cmsDriver with --runUnscheduled")
1674  if self._options.isData:
1675  raise Exception("PATGEN step can only run on MC")
1676  return
1677 

References ConfigBuilder.ConfigBuilder._options, mps_setup.append, ConfigBuilder.ConfigBuilder.labelsToAssociate, ConfigBuilder.ConfigBuilder.loadDefaultOrSpecifiedCFF(), ConfigBuilder.ConfigBuilder.PATGENDefaultCFF, and ConfigBuilder.ConfigBuilder.prepare_NANO().

Referenced by ConfigBuilder.ConfigBuilder.prepare_PAT().

◆ prepare_POSTRECO()

def ConfigBuilder.ConfigBuilder.prepare_POSTRECO (   self,
  sequence = None 
)
Enrich the schedule with the postreco step 

Definition at line 1755 of file ConfigBuilder.py.

1755  def prepare_POSTRECO(self, sequence = None):
1756  """ Enrich the schedule with the postreco step """
1757  self.loadAndRemember(self.POSTRECODefaultCFF)
1758  self.scheduleSequence('postreco_generator','postreco_step')
1759  return
1760 
1761 

References ConfigBuilder.ConfigBuilder.loadAndRemember(), ConfigBuilder.ConfigBuilder.POSTRECODefaultCFF, ConfigBuilder.ConfigBuilder.prepare_VALIDATION(), and ConfigBuilder.ConfigBuilder.scheduleSequence().

Referenced by ConfigBuilder.ConfigBuilder.prepare_USER().

◆ prepare_RAW2DIGI()

def ConfigBuilder.ConfigBuilder.prepare_RAW2DIGI (   self,
  sequence = "RawToDigi" 
)

Definition at line 1557 of file ConfigBuilder.py.

1557  def prepare_RAW2DIGI(self, sequence = "RawToDigi"):
1558  self.loadDefaultOrSpecifiedCFF(sequence,self.RAW2DIGIDefaultCFF)
1559  self.scheduleSequence(sequence,'raw2digi_step')
1560  # if self._options.isRepacked:
1561  #self.renameInputTagsInSequence(sequence)
1562  return
1563 

References ConfigBuilder.ConfigBuilder.loadDefaultOrSpecifiedCFF(), ConfigBuilder.ConfigBuilder.prepare_PATFILTER(), ConfigBuilder.ConfigBuilder.RAW2DIGIDefaultCFF, and ConfigBuilder.ConfigBuilder.scheduleSequence().

Referenced by ConfigBuilder.ConfigBuilder.prepare_RAW2RECO().

◆ prepare_RAW2RECO()

def ConfigBuilder.ConfigBuilder.prepare_RAW2RECO (   self,
  sequence = None 
)

Definition at line 1546 of file ConfigBuilder.py.

1546  def prepare_RAW2RECO(self, sequence = None):
1547  if ','in sequence:
1548  seqReco=sequence.split(',')[1]
1549  seqDigi=sequence.split(',')[0]
1550  else:
1551  print("RAW2RECO requires two specifications",sequence,"insufficient")
1552 
1553  self.prepare_RAW2DIGI(seqDigi)
1554  self.prepare_RECO(seqReco)
1555  return
1556 

References ConfigBuilder.ConfigBuilder.prepare_RAW2DIGI(), ConfigBuilder.ConfigBuilder.prepare_RECO(), and edm.print().

Referenced by ConfigBuilder.ConfigBuilder.prepare_HLT().

◆ prepare_RECO()

def ConfigBuilder.ConfigBuilder.prepare_RECO (   self,
  sequence = "reconstruction" 
)
Enrich the schedule with reconstruction 

Definition at line 1621 of file ConfigBuilder.py.

1621  def prepare_RECO(self, sequence = "reconstruction"):
1622  ''' Enrich the schedule with reconstruction '''
1623  self.loadDefaultOrSpecifiedCFF(sequence,self.RECODefaultCFF)
1624  self.scheduleSequence(sequence.split('.')[-1],'reconstruction_step')
1625  return
1626 

References ConfigBuilder.ConfigBuilder.loadDefaultOrSpecifiedCFF(), ConfigBuilder.ConfigBuilder.prepare_RECOSIM(), ConfigBuilder.ConfigBuilder.RECODefaultCFF, and ConfigBuilder.ConfigBuilder.scheduleSequence().

Referenced by ConfigBuilder.ConfigBuilder.prepare_RAW2RECO().

◆ prepare_RECOBEFMIX()

def ConfigBuilder.ConfigBuilder.prepare_RECOBEFMIX (   self,
  sequence = "reconstruction" 
)
Enrich the schedule with the part of reconstruction that is done before mixing in FastSim

Definition at line 1633 of file ConfigBuilder.py.

1633  def prepare_RECOBEFMIX(self, sequence = "reconstruction"):
1634  ''' Enrich the schedule with the part of reconstruction that is done before mixing in FastSim'''
1635  if not self._options.fast:
1636  print("ERROR: this step is only implemented for FastSim")
1637  sys.exit()
1638  self.loadDefaultOrSpecifiedCFF(self.RECOBEFMIXDefaultSeq,self.RECOBEFMIXDefaultCFF)
1639  self.scheduleSequence(sequence.split('.')[-1],'reconstruction_befmix_step')
1640  return
1641 

References ConfigBuilder.ConfigBuilder._options, ConfigBuilder.ConfigBuilder.loadDefaultOrSpecifiedCFF(), ConfigBuilder.ConfigBuilder.prepare_PAT(), edm.print(), ConfigBuilder.ConfigBuilder.RECOBEFMIXDefaultCFF, ConfigBuilder.ConfigBuilder.RECOBEFMIXDefaultSeq, and ConfigBuilder.ConfigBuilder.scheduleSequence().

Referenced by ConfigBuilder.ConfigBuilder.prepare_RECOSIM().

◆ prepare_RECOSIM()

def ConfigBuilder.ConfigBuilder.prepare_RECOSIM (   self,
  sequence = "recosim" 
)
Enrich the schedule with reconstruction 

Definition at line 1627 of file ConfigBuilder.py.

1627  def prepare_RECOSIM(self, sequence = "recosim"):
1628  ''' Enrich the schedule with reconstruction '''
1629  self.loadDefaultOrSpecifiedCFF(sequence,self.RECOSIMDefaultCFF)
1630  self.scheduleSequence(sequence.split('.')[-1],'recosim_step')
1631  return
1632 

References ConfigBuilder.ConfigBuilder.loadDefaultOrSpecifiedCFF(), ConfigBuilder.ConfigBuilder.prepare_RECOBEFMIX(), ConfigBuilder.ConfigBuilder.RECOSIMDefaultCFF, and ConfigBuilder.ConfigBuilder.scheduleSequence().

Referenced by ConfigBuilder.ConfigBuilder.prepare_RECO().

◆ prepare_REPACK()

def ConfigBuilder.ConfigBuilder.prepare_REPACK (   self,
  sequence = None 
)

Definition at line 1466 of file ConfigBuilder.py.

1466  def prepare_REPACK(self, sequence = None):
1467  self.loadDefaultOrSpecifiedCFF(sequence,self.REPACKDefaultCFF)
1468  self.scheduleSequence(sequence.split('.')[-1],'digi2repack_step')
1469  return
1470 

References ConfigBuilder.ConfigBuilder.loadDefaultOrSpecifiedCFF(), ConfigBuilder.ConfigBuilder.prepare_L1(), ConfigBuilder.ConfigBuilder.REPACKDefaultCFF, and ConfigBuilder.ConfigBuilder.scheduleSequence().

Referenced by ConfigBuilder.ConfigBuilder.prepare_DIGI2RAW().

◆ prepare_SIM()

def ConfigBuilder.ConfigBuilder.prepare_SIM (   self,
  sequence = None 
)
Enrich the schedule with the simulation step

Definition at line 1401 of file ConfigBuilder.py.

1401  def prepare_SIM(self, sequence = None):
1402  """ Enrich the schedule with the simulation step"""
1403  self.loadDefaultOrSpecifiedCFF(sequence,self.SIMDefaultCFF)
1404  if not self._options.fast:
1405  if self._options.gflash==True:
1406  self.loadAndRemember("Configuration/StandardSequences/GFlashSIM_cff")
1407 
1408  if self._options.magField=='0T':
1409  self.executeAndRemember("process.g4SimHits.UseMagneticField = cms.bool(False)")
1410  else:
1411  if self._options.magField=='0T':
1412  self.executeAndRemember("process.fastSimProducer.detectorDefinition.magneticFieldZ = cms.untracked.double(0.)")
1413 
1414  self.scheduleSequence(sequence.split('.')[-1],'simulation_step')
1415  return
1416 

References ConfigBuilder.ConfigBuilder._options, ConfigBuilder.ConfigBuilder.executeAndRemember(), ConfigBuilder.ConfigBuilder.loadAndRemember(), ConfigBuilder.ConfigBuilder.loadDefaultOrSpecifiedCFF(), ConfigBuilder.ConfigBuilder.prepare_DIGI(), ConfigBuilder.ConfigBuilder.scheduleSequence(), and ConfigBuilder.ConfigBuilder.SIMDefaultCFF.

Referenced by ConfigBuilder.ConfigBuilder.prepare_GEN().

◆ prepare_SKIM()

def ConfigBuilder.ConfigBuilder.prepare_SKIM (   self,
  sequence = "all" 
)
Enrich the schedule with skimming fragments

Definition at line 1705 of file ConfigBuilder.py.

1705  def prepare_SKIM(self, sequence = "all"):
1706  ''' Enrich the schedule with skimming fragments'''
1707  skimConfig = self.loadDefaultOrSpecifiedCFF(sequence,self.SKIMDefaultCFF)
1708  sequence = sequence.split('.')[-1]
1709 
1710  skimlist=sequence.split('+')
1711 
1712  from Configuration.Skimming.autoSkim import autoSkim
1713  self.expandMapping(skimlist,autoSkim)
1714 
1715  #print "dictionnary for skims:",skimConfig.__dict__
1716  for skim in skimConfig.__dict__:
1717  skimstream = getattr(skimConfig,skim)
1718  if isinstance(skimstream,cms.Path):
1719  #black list the alca path so that they do not appear in the cfg
1720  self.blacklist_paths.append(skimstream)
1721  if (not isinstance(skimstream,cms.FilteredStream)):
1722  continue
1723  shortname = skim.replace('SKIMStream','')
1724  if (sequence=="all"):
1725  self.addExtraStream(skim,skimstream)
1726  elif (shortname in skimlist):
1727  self.addExtraStream(skim,skimstream)
1728  #add a DQM eventcontent for this guy
1729  if self._options.datatier=='DQM':
1730  self.process.load(self.EVTCONTDefaultCFF)
1731  skimstreamDQM = cms.FilteredStream(
1732  responsible = skimstream.responsible,
1733  name = skimstream.name+'DQM',
1734  paths = skimstream.paths,
1735  selectEvents = skimstream.selectEvents,
1736  content = self._options.datatier+'EventContent',
1737  dataTier = cms.untracked.string(self._options.datatier)
1738  )
1739  self.addExtraStream(skim+'DQM',skimstreamDQM)
1740  for i in range(skimlist.count(shortname)):
1741  skimlist.remove(shortname)
1742 
1743 
1744 
1745  if (skimlist.__len__()!=0 and sequence!="all"):
1746  print('WARNING, possible typo with SKIM:'+'+'.join(skimlist))
1747  raise Exception('WARNING, possible typo with SKIM:'+'+'.join(skimlist))
1748 

References ConfigBuilder.ConfigBuilder._options, ConfigBuilder.ConfigBuilder.addExtraStream(), mps_setup.append, ConfigBuilder.ConfigBuilder.blacklist_paths, ConfigBuilder.ConfigBuilder.EVTCONTDefaultCFF, ConfigBuilder.ConfigBuilder.expandMapping(), join(), ConfigBuilder.ConfigBuilder.load(), ConfigBuilder.ConfigBuilder.loadDefaultOrSpecifiedCFF(), ConfigBuilder.ConfigBuilder.prepare_USER(), edm.print(), DTT0WireWorkflow.DTT0WireWorkflow.process, DTVdriftWorkflow.DTvdriftWorkflow.process, DTTtrigWorkflow.DTttrigWorkflow.process, DTWorkflow.DTWorkflow.process, ConfigBuilder.ConfigBuilder.process, FastTimerService_cff.range, and ConfigBuilder.ConfigBuilder.SKIMDefaultCFF.

Referenced by ConfigBuilder.ConfigBuilder.prepare_EI().

◆ prepare_USER()

def ConfigBuilder.ConfigBuilder.prepare_USER (   self,
  sequence = None 
)
Enrich the schedule with a user defined sequence 

Definition at line 1749 of file ConfigBuilder.py.

1749  def prepare_USER(self, sequence = None):
1750  ''' Enrich the schedule with a user defined sequence '''
1751  self.loadDefaultOrSpecifiedCFF(sequence,self.USERDefaultCFF)
1752  self.scheduleSequence(sequence.split('.')[-1],'user_step')
1753  return
1754 

References ConfigBuilder.ConfigBuilder.loadDefaultOrSpecifiedCFF(), ConfigBuilder.ConfigBuilder.prepare_POSTRECO(), ConfigBuilder.ConfigBuilder.scheduleSequence(), and ConfigBuilder.ConfigBuilder.USERDefaultCFF.

Referenced by ConfigBuilder.ConfigBuilder.prepare_SKIM().

◆ prepare_VALIDATION()

def ConfigBuilder.ConfigBuilder.prepare_VALIDATION (   self,
  sequence = 'validation' 
)

Definition at line 1762 of file ConfigBuilder.py.

1762  def prepare_VALIDATION(self, sequence = 'validation'):
1763  print(sequence,"in preparing validation")
1764  self.loadDefaultOrSpecifiedCFF(sequence,self.VALIDATIONDefaultCFF)
1765  from Validation.Configuration.autoValidation import autoValidation
1766  #in case VALIDATION:something:somethingelse -> something,somethingelse
1767  sequence=sequence.split('.')[-1]
1768  if sequence.find(',')!=-1:
1769  prevalSeqName=sequence.split(',')[0].split('+')
1770  valSeqName=sequence.split(',')[1].split('+')
1771  self.expandMapping(prevalSeqName,autoValidation,index=0)
1772  self.expandMapping(valSeqName,autoValidation,index=1)
1773  else:
1774  if '@' in sequence:
1775  prevalSeqName=sequence.split('+')
1776  valSeqName=sequence.split('+')
1777  self.expandMapping(prevalSeqName,autoValidation,index=0)
1778  self.expandMapping(valSeqName,autoValidation,index=1)
1779  else:
1780  postfix=''
1781  if sequence:
1782  postfix='_'+sequence
1783  prevalSeqName=['prevalidation'+postfix]
1784  valSeqName=['validation'+postfix]
1785  if not hasattr(self.process,valSeqName[0]):
1786  prevalSeqName=['']
1787  valSeqName=[sequence]
1788 
1789  def NFI(index):
1790 
1791  if index==0:
1792  return ''
1793  else:
1794  return '%s'%index
1795 
1796 
1797  #rename the HLT process in validation steps
1798  if ('HLT' in self.stepMap and not self._options.fast) or self._options.hltProcess:
1799  for s in valSeqName+prevalSeqName:
1800  if s:
1801  self.renameHLTprocessInSequence(s)
1802  for (i,s) in enumerate(prevalSeqName):
1803  if s:
1804  setattr(self.process,'prevalidation_step%s'%NFI(i), cms.Path( getattr(self.process, s)) )
1805  self.schedule.append(getattr(self.process,'prevalidation_step%s'%NFI(i)))
1806 
1807  for (i,s) in enumerate(valSeqName):
1808  setattr(self.process,'validation_step%s'%NFI(i), cms.EndPath( getattr(self.process, s)))
1809  self.schedule.append(getattr(self.process,'validation_step%s'%NFI(i)))
1810 
1811  #needed in case the miniAODValidation sequence is run starting from AODSIM
1812  if 'PAT' in self.stepMap and not 'RECO' in self.stepMap:
1813  return
1814 
1815  if not 'DIGI' in self.stepMap and not self._options.fast and not any(map( lambda s : s.startswith('genvalid'), valSeqName)):
1816  if self._options.restoreRNDSeeds==False and not self._options.restoreRNDSeeds==True:
1817  self._options.restoreRNDSeeds=True
1818 
1819  if not 'DIGI' in self.stepMap and not self._options.fast:
1820  self.executeAndRemember("process.mix.playback = True")
1821  self.executeAndRemember("process.mix.digitizers = cms.PSet()")
1822  self.executeAndRemember("for a in process.aliases: delattr(process, a)")
1823  self._options.customisation_file.append("SimGeneral/MixingModule/fullMixCustomize_cff.setCrossingFrameOn")
1824 
1825  if hasattr(self.process,"genstepfilter") and len(self.process.genstepfilter.triggerConditions):
1826  #will get in the schedule, smoothly
1827  for (i,s) in enumerate(valSeqName):
1828  getattr(self.process,'validation_step%s'%NFI(i)).insert(0, self.process.genstepfilter)
1829 
1830  return
1831 
1832 

References ConfigBuilder.ConfigBuilder._options, any(), mps_setup.append, ConfigBuilder.ConfigBuilder.executeAndRemember(), ConfigBuilder.ConfigBuilder.expandMapping(), edm::eventsetup::heterocontainer.insert(), ConfigBuilder.ConfigBuilder.loadDefaultOrSpecifiedCFF(), genParticles_cff.map, resolutioncreator_cfi.object, edm.print(), DTT0WireWorkflow.DTT0WireWorkflow.process, DTVdriftWorkflow.DTvdriftWorkflow.process, DTTtrigWorkflow.DTttrigWorkflow.process, DTWorkflow.DTWorkflow.process, ConfigBuilder.ConfigBuilder.process, ConfigBuilder.ConfigBuilder.renameHLTprocessInSequence(), ConfigBuilder.ConfigBuilder.schedule, cms::dd.split(), ConfigBuilder.ConfigBuilder.stepMap, and ConfigBuilder.ConfigBuilder.VALIDATIONDefaultCFF.

Referenced by ConfigBuilder.ConfigBuilder.prepare_POSTRECO().

◆ profileOptions()

def ConfigBuilder.ConfigBuilder.profileOptions (   self)
addIgProfService
Function to add the igprof profile service so that you can dump in the middle
of the run.

Definition at line 270 of file ConfigBuilder.py.

270  def profileOptions(self):
271  """
272  addIgProfService
273  Function to add the igprof profile service so that you can dump in the middle
274  of the run.
275  """
276  profileOpts = self._options.profile.split(':')
277  profilerStart = 1
278  profilerInterval = 100
279  profilerFormat = None
280  profilerJobFormat = None
281 
282  if len(profileOpts):
283  #type, given as first argument is unused here
284  profileOpts.pop(0)
285  if len(profileOpts):
286  startEvent = profileOpts.pop(0)
287  if not startEvent.isdigit():
288  raise Exception("%s is not a number" % startEvent)
289  profilerStart = int(startEvent)
290  if len(profileOpts):
291  eventInterval = profileOpts.pop(0)
292  if not eventInterval.isdigit():
293  raise Exception("%s is not a number" % eventInterval)
294  profilerInterval = int(eventInterval)
295  if len(profileOpts):
296  profilerFormat = profileOpts.pop(0)
297 
298 
299  if not profilerFormat:
300  profilerFormat = "%s___%s___%%I.gz" % (
301  self._options.evt_type.replace("_cfi", ""),
302  hashlib.md5(
303  str(self._options.step) + str(self._options.pileup) + str(self._options.conditions) +
304  str(self._options.datatier) + str(self._options.profileTypeLabel)
305  ).hexdigest()
306  )
307  if not profilerJobFormat and profilerFormat.endswith(".gz"):
308  profilerJobFormat = profilerFormat.replace(".gz", "_EndOfJob.gz")
309  elif not profilerJobFormat:
310  profilerJobFormat = profilerFormat + "_EndOfJob.gz"
311 
312  return (profilerStart,profilerInterval,profilerFormat,profilerJobFormat)
313 

References ConfigBuilder.ConfigBuilder._options, createfilelist.int, and str.

Referenced by ConfigBuilder.ConfigBuilder.addCommon().

◆ renameHLTprocessInSequence()

def ConfigBuilder.ConfigBuilder.renameHLTprocessInSequence (   self,
  sequence,
  proc = None,
  HLTprocess = 'HLT' 
)

Definition at line 1902 of file ConfigBuilder.py.

1902  def renameHLTprocessInSequence(self,sequence,proc=None,HLTprocess='HLT'):
1903  if self._options.hltProcess:
1904  proc=self._options.hltProcess
1905  else:
1906  proc=self.process.name_()
1907  if proc==HLTprocess: return
1908  # look up all module in dqm sequence
1909  print("replacing %s process name - sequence %s will use '%s'" % (HLTprocess,sequence, proc))
1910  getattr(self.process,sequence).visit(ConfigBuilder.MassSearchReplaceProcessNameVisitor(HLTprocess,proc,whitelist = ("subSystemFolder",)))
1911  if 'from Configuration.Applications.ConfigBuilder import ConfigBuilder' not in self.additionalCommands:
1912  self.additionalCommands.append('from Configuration.Applications.ConfigBuilder import ConfigBuilder')
1913  self.additionalCommands.append('process.%s.visit(ConfigBuilder.MassSearchReplaceProcessNameVisitor("%s", "%s", whitelist = ("subSystemFolder",)))'% (sequence,HLTprocess, proc))
1914 
1915 

References ConfigBuilder.ConfigBuilder._options, ConfigBuilder.ConfigBuilder.additionalCommands, mps_setup.append, ConfigBuilder.ConfigBuilder.expandMapping(), edm.print(), DTT0WireWorkflow.DTT0WireWorkflow.process, DTVdriftWorkflow.DTvdriftWorkflow.process, DTTtrigWorkflow.DTttrigWorkflow.process, DTWorkflow.DTWorkflow.process, and ConfigBuilder.ConfigBuilder.process.

Referenced by ConfigBuilder.ConfigBuilder.prepare_DQM(), ConfigBuilder.ConfigBuilder.prepare_VALIDATION(), and ConfigBuilder.ConfigBuilder.renameInputTagsInSequence().

◆ renameInputTagsInSequence()

def ConfigBuilder.ConfigBuilder.renameInputTagsInSequence (   self,
  sequence,
  oldT = "rawDataCollector",
  newT = "rawDataRepacker" 
)

Definition at line 1892 of file ConfigBuilder.py.

1892  def renameInputTagsInSequence(self,sequence,oldT="rawDataCollector",newT="rawDataRepacker"):
1893  print("Replacing all InputTag %s => %s"%(oldT,newT))
1894  from PhysicsTools.PatAlgos.tools.helpers import massSearchReplaceAnyInputTag
1895  massSearchReplaceAnyInputTag(getattr(self.process,sequence),oldT,newT)
1896  loadMe='from PhysicsTools.PatAlgos.tools.helpers import massSearchReplaceAnyInputTag'
1897  if not loadMe in self.additionalCommands:
1898  self.additionalCommands.append(loadMe)
1899  self.additionalCommands.append('massSearchReplaceAnyInputTag(process.%s,"%s","%s",False,True)'%(sequence,oldT,newT))
1900 

References ConfigBuilder.ConfigBuilder.additionalCommands, mps_setup.append, MassReplace.massSearchReplaceAnyInputTag(), edm.print(), DTT0WireWorkflow.DTT0WireWorkflow.process, DTVdriftWorkflow.DTvdriftWorkflow.process, DTTtrigWorkflow.DTttrigWorkflow.process, DTWorkflow.DTWorkflow.process, ConfigBuilder.ConfigBuilder.process, and ConfigBuilder.ConfigBuilder.renameHLTprocessInSequence().

Referenced by ConfigBuilder.ConfigBuilder.prepare_L1REPACK().

◆ scheduleSequence()

def ConfigBuilder.ConfigBuilder.scheduleSequence (   self,
  seq,
  prefix,
  what = 'Path' 
)

Definition at line 1205 of file ConfigBuilder.py.

1205  def scheduleSequence(self,seq,prefix,what='Path'):
1206  if '*' in seq:
1207  #create only one path with all sequences in it
1208  for i,s in enumerate(seq.split('*')):
1209  if i==0:
1210  setattr(self.process,prefix,getattr(cms,what)( getattr(self.process, s) ))
1211  else:
1212  p=getattr(self.process,prefix)
1213  tmp = getattr(self.process, s)
1214  if isinstance(tmp, cms.Task):
1215  p.associate(tmp)
1216  else:
1217  p+=tmp
1218  self.schedule.append(getattr(self.process,prefix))
1219  return
1220  else:
1221  #create as many path as many sequences
1222  if not '+' in seq:
1223  if self.nextScheduleIsConditional:
1224  self.conditionalPaths.append(prefix)
1225  setattr(self.process,prefix,getattr(cms,what)( getattr(self.process, seq) ))
1226  self.schedule.append(getattr(self.process,prefix))
1227  else:
1228  for i,s in enumerate(seq.split('+')):
1229  sn=prefix+'%d'%(i)
1230  setattr(self.process,sn,getattr(cms,what)( getattr(self.process, s) ))
1231  self.schedule.append(getattr(self.process,sn))
1232  return
1233 

References mps_setup.append, ConfigBuilder.ConfigBuilder.conditionalPaths, ConfigBuilder.ConfigBuilder.nextScheduleIsConditional, DTT0WireWorkflow.DTT0WireWorkflow.process, DTVdriftWorkflow.DTvdriftWorkflow.process, DTTtrigWorkflow.DTttrigWorkflow.process, DTWorkflow.DTWorkflow.process, ConfigBuilder.ConfigBuilder.process, ConfigBuilder.ConfigBuilder.schedule, and ConfigBuilder.ConfigBuilder.scheduleSequenceAtEnd().

Referenced by ConfigBuilder.ConfigBuilder.loadDefaultOrSpecifiedCFF(), ConfigBuilder.ConfigBuilder.prepare_CFWRITER(), ConfigBuilder.ConfigBuilder.prepare_DATAMIX(), ConfigBuilder.ConfigBuilder.prepare_DIGI(), ConfigBuilder.ConfigBuilder.prepare_DIGI2RAW(), ConfigBuilder.ConfigBuilder.prepare_EI(), ConfigBuilder.ConfigBuilder.prepare_L1(), ConfigBuilder.ConfigBuilder.prepare_L1Reco(), ConfigBuilder.ConfigBuilder.prepare_L1REPACK(), ConfigBuilder.ConfigBuilder.prepare_L1TrackTrigger(), ConfigBuilder.ConfigBuilder.prepare_NANO(), ConfigBuilder.ConfigBuilder.prepare_POSTRECO(), ConfigBuilder.ConfigBuilder.prepare_RAW2DIGI(), ConfigBuilder.ConfigBuilder.prepare_RECO(), ConfigBuilder.ConfigBuilder.prepare_RECOBEFMIX(), ConfigBuilder.ConfigBuilder.prepare_RECOSIM(), ConfigBuilder.ConfigBuilder.prepare_REPACK(), ConfigBuilder.ConfigBuilder.prepare_SIM(), ConfigBuilder.ConfigBuilder.prepare_USER(), and ConfigBuilder.ConfigBuilder.scheduleSequenceAtEnd().

◆ scheduleSequenceAtEnd()

def ConfigBuilder.ConfigBuilder.scheduleSequenceAtEnd (   self,
  seq,
  prefix 
)

Definition at line 1234 of file ConfigBuilder.py.

1234  def scheduleSequenceAtEnd(self,seq,prefix):
1235  self.scheduleSequence(seq,prefix,what='EndPath')
1236  return
1237 

References ConfigBuilder.ConfigBuilder.prepare_ALCAPRODUCER(), and ConfigBuilder.ConfigBuilder.scheduleSequence().

Referenced by ConfigBuilder.ConfigBuilder.prepare_ENDJOB(), ConfigBuilder.ConfigBuilder.prepare_GEN(), and ConfigBuilder.ConfigBuilder.scheduleSequence().

Member Data Documentation

◆ _options

ConfigBuilder.ConfigBuilder._options
private

◆ addedObjects

ConfigBuilder.ConfigBuilder.addedObjects

◆ additionalCommands

ConfigBuilder.ConfigBuilder.additionalCommands

◆ additionalOutputs

ConfigBuilder.ConfigBuilder.additionalOutputs

Definition at line 262 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare().

◆ ALCADefaultCFF

ConfigBuilder.ConfigBuilder.ALCADefaultCFF

◆ ALCADefaultSeq

ConfigBuilder.ConfigBuilder.ALCADefaultSeq

Definition at line 959 of file ConfigBuilder.py.

◆ ALCAHARVESTDefaultCFF

ConfigBuilder.ConfigBuilder.ALCAHARVESTDefaultCFF

Definition at line 947 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_ALCAHARVEST().

◆ ALCAHARVESTDefaultSeq

ConfigBuilder.ConfigBuilder.ALCAHARVESTDefaultSeq

Definition at line 970 of file ConfigBuilder.py.

◆ AlCaPaths

ConfigBuilder.ConfigBuilder.AlCaPaths

◆ blacklist_paths

ConfigBuilder.ConfigBuilder.blacklist_paths

◆ CFWRITERDefaultCFF

ConfigBuilder.ConfigBuilder.CFWRITERDefaultCFF

Definition at line 950 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_CFWRITER().

◆ CFWRITERDefaultSeq

ConfigBuilder.ConfigBuilder.CFWRITERDefaultSeq

Definition at line 971 of file ConfigBuilder.py.

◆ conditionalPaths

ConfigBuilder.ConfigBuilder.conditionalPaths

◆ ConditionsDefaultCFF

ConfigBuilder.ConfigBuilder.ConditionsDefaultCFF

Definition at line 949 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.addConditions().

◆ DATAMIXDefaultCFF

ConfigBuilder.ConfigBuilder.DATAMIXDefaultCFF

Definition at line 954 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_DATAMIX().

◆ DATAMIXDefaultSeq

ConfigBuilder.ConfigBuilder.DATAMIXDefaultSeq

Definition at line 964 of file ConfigBuilder.py.

◆ DIGI2RAWDefaultCFF

ConfigBuilder.ConfigBuilder.DIGI2RAWDefaultCFF

Definition at line 928 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_DIGI2RAW().

◆ DIGI2RAWDefaultSeq

ConfigBuilder.ConfigBuilder.DIGI2RAWDefaultSeq

Definition at line 965 of file ConfigBuilder.py.

◆ DIGIDefaultCFF

ConfigBuilder.ConfigBuilder.DIGIDefaultCFF

Definition at line 927 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_DIGI().

◆ DIGIDefaultSeq

ConfigBuilder.ConfigBuilder.DIGIDefaultSeq

Definition at line 963 of file ConfigBuilder.py.

◆ DQMDefaultSeq

ConfigBuilder.ConfigBuilder.DQMDefaultSeq

Definition at line 983 of file ConfigBuilder.py.

◆ DQMOFFLINEDefaultCFF

ConfigBuilder.ConfigBuilder.DQMOFFLINEDefaultCFF

Definition at line 945 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_DQM().

◆ DQMSaverCFF

ConfigBuilder.ConfigBuilder.DQMSaverCFF

Definition at line 1980 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_HARVESTING().

◆ EIDefaultCFF

ConfigBuilder.ConfigBuilder.EIDefaultCFF

Definition at line 940 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_EI().

◆ EIDefaultSeq

ConfigBuilder.ConfigBuilder.EIDefaultSeq

Definition at line 980 of file ConfigBuilder.py.

◆ ENDJOBDefaultCFF

ConfigBuilder.ConfigBuilder.ENDJOBDefaultCFF

Definition at line 948 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_ENDJOB().

◆ ENDJOBDefaultSeq

ConfigBuilder.ConfigBuilder.ENDJOBDefaultSeq

Definition at line 985 of file ConfigBuilder.py.

◆ EVTCONTDefaultCFF

ConfigBuilder.ConfigBuilder.EVTCONTDefaultCFF

◆ excludedPaths

ConfigBuilder.ConfigBuilder.excludedPaths

Definition at line 268 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare().

◆ GENDefaultCFF

ConfigBuilder.ConfigBuilder.GENDefaultCFF

Definition at line 925 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_GEN().

◆ GENDefaultSeq

ConfigBuilder.ConfigBuilder.GENDefaultSeq

Definition at line 961 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_GEN().

◆ GeometryCFF

ConfigBuilder.ConfigBuilder.GeometryCFF

Definition at line 1058 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.addStandardSequences().

◆ geometryDBLabel

ConfigBuilder.ConfigBuilder.geometryDBLabel

Definition at line 1059 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.addStandardSequences().

◆ HARVESTINGDefaultCFF

ConfigBuilder.ConfigBuilder.HARVESTINGDefaultCFF

Definition at line 946 of file ConfigBuilder.py.

◆ HARVESTINGDefaultSeq

ConfigBuilder.ConfigBuilder.HARVESTINGDefaultSeq

Definition at line 969 of file ConfigBuilder.py.

◆ HLTDefaultCFF

ConfigBuilder.ConfigBuilder.HLTDefaultCFF

Definition at line 931 of file ConfigBuilder.py.

◆ HLTDefaultSeq

ConfigBuilder.ConfigBuilder.HLTDefaultSeq

Definition at line 966 of file ConfigBuilder.py.

◆ imports

ConfigBuilder.ConfigBuilder.imports

◆ inliner

ConfigBuilder.ConfigBuilder.inliner

load the relevant part

needs to be in reverse order

print it in the configuration

Definition at line 1597 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_FILTER().

◆ L1DefaultSeq

ConfigBuilder.ConfigBuilder.L1DefaultSeq

Definition at line 967 of file ConfigBuilder.py.

◆ L1EMDefaultCFF

ConfigBuilder.ConfigBuilder.L1EMDefaultCFF

Definition at line 929 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_L1().

◆ L1HwValDefaultCFF

ConfigBuilder.ConfigBuilder.L1HwValDefaultCFF

Definition at line 944 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_L1HwVal().

◆ L1HwValDefaultSeq

ConfigBuilder.ConfigBuilder.L1HwValDefaultSeq

Definition at line 982 of file ConfigBuilder.py.

◆ L1MENUDefaultCFF

ConfigBuilder.ConfigBuilder.L1MENUDefaultCFF

Definition at line 930 of file ConfigBuilder.py.

◆ L1RecoDefaultCFF

ConfigBuilder.ConfigBuilder.L1RecoDefaultCFF

Definition at line 934 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_L1Reco().

◆ L1RecoDefaultSeq

ConfigBuilder.ConfigBuilder.L1RecoDefaultSeq

Definition at line 973 of file ConfigBuilder.py.

◆ L1REPACKDefaultSeq

ConfigBuilder.ConfigBuilder.L1REPACKDefaultSeq

Definition at line 968 of file ConfigBuilder.py.

◆ L1TrackTriggerDefaultCFF

ConfigBuilder.ConfigBuilder.L1TrackTriggerDefaultCFF

◆ L1TrackTriggerDefaultSeq

ConfigBuilder.ConfigBuilder.L1TrackTriggerDefaultSeq

Definition at line 974 of file ConfigBuilder.py.

◆ labelsToAssociate

ConfigBuilder.ConfigBuilder.labelsToAssociate

◆ LHEDefaultSeq

ConfigBuilder.ConfigBuilder.LHEDefaultSeq

Definition at line 960 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_GEN().

◆ magFieldCFF

ConfigBuilder.ConfigBuilder.magFieldCFF

Definition at line 1054 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.addStandardSequences().

◆ NANODefaultCFF

ConfigBuilder.ConfigBuilder.NANODefaultCFF

Definition at line 939 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_NANO().

◆ NANODefaultSeq

ConfigBuilder.ConfigBuilder.NANODefaultSeq

Definition at line 989 of file ConfigBuilder.py.

◆ nextScheduleIsConditional

ConfigBuilder.ConfigBuilder.nextScheduleIsConditional

put the filtering path in the schedule

Definition at line 266 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.scheduleSequence().

◆ PATDefaultCFF

ConfigBuilder.ConfigBuilder.PATDefaultCFF

Definition at line 938 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_PAT().

◆ PATDefaultSeq

ConfigBuilder.ConfigBuilder.PATDefaultSeq

Definition at line 987 of file ConfigBuilder.py.

◆ PATGENDefaultCFF

ConfigBuilder.ConfigBuilder.PATGENDefaultCFF

Definition at line 1001 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_PATGEN().

◆ PATGENDefaultSeq

ConfigBuilder.ConfigBuilder.PATGENDefaultSeq

Definition at line 988 of file ConfigBuilder.py.

◆ POSTRECODefaultCFF

ConfigBuilder.ConfigBuilder.POSTRECODefaultCFF

Definition at line 942 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_POSTRECO().

◆ POSTRECODefaultSeq

ConfigBuilder.ConfigBuilder.POSTRECODefaultSeq

Definition at line 981 of file ConfigBuilder.py.

◆ process

ConfigBuilder.ConfigBuilder.process

◆ productionFilterSequence

ConfigBuilder.ConfigBuilder.productionFilterSequence

put it before all the other paths

Definition at line 264 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare(), and ConfigBuilder.ConfigBuilder.prepare_GEN().

◆ pythonCfgCode

ConfigBuilder.ConfigBuilder.pythonCfgCode

◆ RAW2DIGIDefaultCFF

ConfigBuilder.ConfigBuilder.RAW2DIGIDefaultCFF

Definition at line 932 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_RAW2DIGI().

◆ RAW2DIGIDefaultSeq

ConfigBuilder.ConfigBuilder.RAW2DIGIDefaultSeq

Definition at line 972 of file ConfigBuilder.py.

◆ RAW2RECODefaultSeq

ConfigBuilder.ConfigBuilder.RAW2RECODefaultSeq

Definition at line 1044 of file ConfigBuilder.py.

◆ RECOBEFMIXDefaultCFF

ConfigBuilder.ConfigBuilder.RECOBEFMIXDefaultCFF

Definition at line 1109 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_RECOBEFMIX().

◆ RECOBEFMIXDefaultSeq

ConfigBuilder.ConfigBuilder.RECOBEFMIXDefaultSeq

Definition at line 1110 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_RECOBEFMIX().

◆ RECODefaultCFF

ConfigBuilder.ConfigBuilder.RECODefaultCFF

Definition at line 936 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_RECO().

◆ RECODefaultSeq

ConfigBuilder.ConfigBuilder.RECODefaultSeq

Definition at line 976 of file ConfigBuilder.py.

◆ RECOSIMDefaultCFF

ConfigBuilder.ConfigBuilder.RECOSIMDefaultCFF

Definition at line 937 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_RECOSIM().

◆ RECOSIMDefaultSeq

ConfigBuilder.ConfigBuilder.RECOSIMDefaultSeq

Definition at line 979 of file ConfigBuilder.py.

◆ REDIGIDefaultSeq

ConfigBuilder.ConfigBuilder.REDIGIDefaultSeq

Definition at line 1125 of file ConfigBuilder.py.

◆ REPACKDefaultCFF

ConfigBuilder.ConfigBuilder.REPACKDefaultCFF

Definition at line 951 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_REPACK().

◆ REPACKDefaultSeq

ConfigBuilder.ConfigBuilder.REPACKDefaultSeq

Definition at line 986 of file ConfigBuilder.py.

◆ runsAndWeights

ConfigBuilder.ConfigBuilder.runsAndWeights

drop LHEXMLStringProduct on input to save memory if appropriate

Definition at line 479 of file ConfigBuilder.py.

◆ schedule

ConfigBuilder.ConfigBuilder.schedule

◆ SIMDefaultCFF

ConfigBuilder.ConfigBuilder.SIMDefaultCFF

Definition at line 926 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_SIM().

◆ SIMDefaultSeq

ConfigBuilder.ConfigBuilder.SIMDefaultSeq

Definition at line 962 of file ConfigBuilder.py.

◆ SimGeometryCFF

ConfigBuilder.ConfigBuilder.SimGeometryCFF

Definition at line 1084 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.addStandardSequences().

◆ SKIMDefaultCFF

ConfigBuilder.ConfigBuilder.SKIMDefaultCFF

Definition at line 941 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_SKIM().

◆ stepKeys

ConfigBuilder.ConfigBuilder.stepKeys

Definition at line 224 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.addStandardSequences().

◆ stepMap

ConfigBuilder.ConfigBuilder.stepMap

◆ USERDefaultCFF

ConfigBuilder.ConfigBuilder.USERDefaultCFF

Definition at line 1047 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_USER().

◆ USERDefaultSeq

ConfigBuilder.ConfigBuilder.USERDefaultSeq

Definition at line 1046 of file ConfigBuilder.py.

◆ VALIDATIONDefaultCFF

ConfigBuilder.ConfigBuilder.VALIDATIONDefaultCFF

Definition at line 943 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_VALIDATION().

◆ VALIDATIONDefaultSeq

ConfigBuilder.ConfigBuilder.VALIDATIONDefaultSeq

Definition at line 984 of file ConfigBuilder.py.

◆ with_input

ConfigBuilder.ConfigBuilder.with_input

Definition at line 248 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare().

◆ with_output

ConfigBuilder.ConfigBuilder.with_output

Definition at line 243 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare().

helpers.associatePatAlgosToolsTask
def associatePatAlgosToolsTask(process)
Definition: helpers.py:25
LumiList.LumiList
Definition: LumiList.py:22
FastTimerService_cff.range
range
Definition: FastTimerService_cff.py:34
logErrorHarvester_cff.customiseLogErrorHarvesterUsingOutputCommands
def customiseLogErrorHarvesterUsingOutputCommands(process)
Definition: logErrorHarvester_cff.py:5
resolutioncreator_cfi.object
object
Definition: resolutioncreator_cfi.py:4
GlobalTag
join
static std::string join(char **cmd)
Definition: RemoteFile.cc:17
cms::cuda::assert
assert(be >=bs)
relativeConstraints.keys
keys
Definition: relativeConstraints.py:89
earlyDeleteSettings_cff.customiseEarlyDelete
def customiseEarlyDelete(process)
Definition: earlyDeleteSettings_cff.py:41
cms::dd::split
std::vector< std::string_view > split(std::string_view, const char *)
spr::find
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
ConfigBuilder.filesFromList
def filesFromList(fileName, s=None)
Definition: ConfigBuilder.py:100
ConfigBuilder.filesFromDASQuery
def filesFromDASQuery(query, option="", s=None)
Definition: ConfigBuilder.py:134
mps_monitormerge.items
list items
Definition: mps_monitormerge.py:29
any
bool any(const std::vector< T > &v, const T &what)
Definition: ECalSD.cc:34
CustomConfigs.ProcessName
def ProcessName(process)
Definition: CustomConfigs.py:8
str
#define str(s)
Definition: TestProcessor.cc:48
svgfig.load
def load(fileName)
Definition: svgfig.py:547
GlobalTag
Definition: GlobalTag.h:4
DictTypes.SortedKeysDict
Definition: DictTypes.py:3
Mixing.defineMixing
def defineMixing(dict)
Definition: Mixing.py:186
Exception
mps_setup.append
append
Definition: mps_setup.py:85
createfilelist.int
int
Definition: createfilelist.py:10
FrontierConditions_GlobalTag_cff.file
file
Definition: FrontierConditions_GlobalTag_cff.py:13
metFilterPaths_cff
helpers
ConfigBuilder.anyOf
def anyOf(listOfKeys, dict, opt=None)
Definition: ConfigBuilder.py:182
TriggerAnalyzer.__str__
def __str__(self)
Definition: TriggerAnalyzer.py:103
edm::print
S & print(S &os, JobReport::InputFile const &f)
Definition: JobReport.cc:66
ComparisonHelper::zip
OutputIterator zip(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp)
Definition: L1TStage2CaloLayer1.h:38
miniAOD_tools.miniAOD_customizeOutput
def miniAOD_customizeOutput(out)
Definition: miniAOD_tools.py:527
cmsswConfigtrace.convertToUnscheduled
def convertToUnscheduled(proc)
Definition: cmsswConfigtrace.py:110
ConfigBuilder.dumpPython
def dumpPython(process, name)
Definition: ConfigBuilder.py:92
ThrowAndSetRandomRun.throwAndSetRandomRun
def throwAndSetRandomRun(source, runsAndProbs)
Definition: ThrowAndSetRandomRun.py:7
edm::eventsetup::heterocontainer::insert
bool insert(Storage &iStorage, ItemType *iItem, const IdTag &iIdTag)
Definition: HCMethods.h:50
MassReplace.massSearchReplaceAnyInputTag
def massSearchReplaceAnyInputTag(sequence, oldInputTag, newInputTag, verbose=False, moduleLabelOnly=False, skipLabelTest=False)
Definition: MassReplace.py:79
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
list
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger list("!*", "!HLTx*" if it matches 2 triggers or more) will accept the event if all the matching triggers are FAIL. It will reject the event if any of the triggers are PASS or EXCEPTION(this matches the behavior of "!*" before the partial wildcard feature was incorporated). Triggers which are in the READY state are completely ignored.(READY should never be returned since the trigger paths have been run
genParticles_cff.map
map
Definition: genParticles_cff.py:11
FastTimer.addOutput
def addOutput(process)
Definition: FastTimer.py:47
python.rootplot.root2matplotlib.replace
def replace(string, replacements)
Definition: root2matplotlib.py:444