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 heapProfileOptions (self)
 
def load (self, includeFile)
 
def loadAndRemember (self, includeFile)
 
def loadDefaultOrSpecifiedCFF (self, stepSpec, defaultCFF, defaultSEQ='')
 
def prepare (self, doChecking=False)
 
def prepare_ALCA (self, stepSpec=None, workflow='full')
 
def prepare_ALCAHARVEST (self, stepSpec=None)
 
def prepare_ALCAOUTPUT (self, stepSpec=None)
 
def prepare_ALCAPRODUCER (self, stepSpec=None)
 
def prepare_CFWRITER (self, stepSpec=None)
 
def prepare_DATAMIX (self, stepSpec=None)
 
def prepare_DIGI (self, stepSpec=None)
 
def prepare_DIGI2RAW (self, stepSpec=None)
 
def prepare_DQM (self, stepSpec='DQMOffline')
 
def prepare_ENDJOB (self, stepSpec='endOfProcess')
 
def prepare_FILTER (self, stepSpec=None)
 
def prepare_GEN (self, stepSpec=None)
 
def prepare_HARVESTING (self, stepSpec=None)
 
def prepare_HLT (self, stepSpec=None)
 
def prepare_L1 (self, stepSpec=None)
 
def prepare_L1HwVal (self, stepSpec='L1HwVal')
 
def prepare_L1Reco (self, stepSpec="L1Reco")
 
def prepare_L1REPACK (self, stepSpec=None)
 
def prepare_L1TrackTrigger (self, stepSpec="L1TrackTrigger")
 
def prepare_LHE (self, stepSpec=None)
 
def prepare_NANO (self, stepSpec='')
 
def prepare_NANOGEN (self, stepSpec="nanoAOD")
 
def prepare_PAT (self, stepSpec="miniAOD")
 
def prepare_PATFILTER (self, stepSpec=None)
 
def prepare_PATGEN (self, stepSpec="miniGEN")
 
def prepare_POSTRECO (self, stepSpec=None)
 
def prepare_RAW2DIGI (self, stepSpec="RawToDigi")
 
def prepare_RAW2RECO (self, stepSpec=None)
 
def prepare_RECO (self, stepSpec="reconstruction")
 
def prepare_RECOBEFMIX (self, stepSpec="reconstruction")
 
def prepare_RECOSIM (self, stepSpec="recosim")
 
def prepare_REPACK (self, stepSpec=None)
 
def prepare_SIM (self, stepSpec=None)
 
def prepare_SKIM (self, stepSpec="all")
 
def prepare_USER (self, stepSpec=None)
 
def prepare_VALIDATION (self, stepSpec='validation')
 
def profileOptions (self)
 
def renameHLTprocessInSequence (self, sequence, proc=None, HLTprocess='HLT', verbosityLevel=1)
 
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
 
 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
 
 NANOGENDefaultCFF
 
 NANOGENDefaultSeq
 
 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...
 
 runsAndWeightsInt
 
 schedule
 
 scheduleIndexOfFirstHLTPath
 
 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 200 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 203 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_FILTER().

203  def __init__(self, options, process = None, with_output = False, with_input = False ):
204  """options taken from old cmsDriver and optparse """
205 
206  options.outfile_name = options.dirout+options.fileout
207 
208  self._options = options
209 
210  if self._options.isData and options.isMC:
211  raise Exception("ERROR: You may specify only --data or --mc, not both")
212  #if not self._options.conditions:
213  # raise Exception("ERROR: No conditions given!\nPlease specify conditions. E.g. via --conditions=IDEAL_30X::All")
214 
215  # check that MEtoEDMConverter (running in ENDJOB) and DQMIO don't run in the same job
216  if 'ENDJOB' in self._options.step:
217  if (hasattr(self._options,"outputDefinition") and \
218  self._options.outputDefinition != '' and \
219  any(anyOf(['t','tier','dataTier'],outdic) == 'DQMIO' for outdic in eval(self._options.outputDefinition))) or \
220  (hasattr(self._options,"datatier") and \
221  self._options.datatier and \
222  'DQMIO' in self._options.datatier):
223  print("removing ENDJOB from steps since not compatible with DQMIO dataTier")
224  self._options.step=self._options.step.replace(',ENDJOB','')
225 
226 
227 
228  # what steps are provided by this class?
229  stepList = [re.sub(r'^prepare_', '', methodName) for methodName in ConfigBuilder.__dict__ if methodName.startswith('prepare_')]
230  self.stepMap={}
231  self.stepKeys=[]
232  for step in self._options.step.split(","):
233  if step=='': continue
234  stepParts = step.split(":")
235  stepName = stepParts[0]
236  if stepName not in stepList and not stepName.startswith('re'):
237  raise ValueError("Step {} unknown. Available are {}".format( stepName , sorted(stepList)))
238  if len(stepParts)==1:
239  self.stepMap[stepName]=""
240  elif len(stepParts)==2:
241  self.stepMap[stepName]=stepParts[1].split('+')
242  elif len(stepParts)==3:
243  self.stepMap[stepName]=(stepParts[2].split('+'),stepParts[1])
244  else:
245  raise ValueError(f"Step definition {step} invalid")
246  self.stepKeys.append(stepName)
247 
248  #print(f"map of steps is: {self.stepMap}")
249 
250  self.with_output = with_output
251  self.process=process
252 
253  if hasattr(self._options,"no_output_flag") and self._options.no_output_flag:
254  self.with_output = False
255  self.with_input = with_input
256  self.imports = []
257  self.create_process()
258  self.define_Configs()
259  self.schedule = list()
260  self.scheduleIndexOfFirstHLTPath = None
261 
262  # we are doing three things here:
263  # creating a process to catch errors
264  # building the code to re-create the process
265 
266  self.additionalCommands = []
267  # TODO: maybe a list of to be dumped objects would help as well
268  self.blacklist_paths = []
269  self.addedObjects = []
270  self.additionalOutputs = {}
271 
272  self.productionFilterSequence = None
273  self.labelsToAssociate=[]
274  self.nextScheduleIsConditional=False
275  self.conditionalPaths=[]
276  self.excludedPaths=[]
277 
bool any(const std::vector< T > &v, const T &what)
Definition: ECalSD.cc:37
def __init__(self, dataset, job_number, job_id, job_name, isDA, isMC, applyBOWS, applyEXTRACOND, extraconditions, runboundary, lumilist, intlumi, maxevents, gt, allFromGT, alignmentDB, alignmentTAG, apeDB, apeTAG, bowDB, bowTAG, vertextype, tracktype, refittertype, ttrhtype, applyruncontrol, ptcut, CMSSW_dir, the_dir)
def anyOf(listOfKeys, dict, opt=None)
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47

Member Function Documentation

◆ addCommon()

def ConfigBuilder.ConfigBuilder.addCommon (   self)

Definition at line 389 of file ConfigBuilder.py.

References ConfigBuilder.ConfigBuilder._options, ConfigBuilder.ConfigBuilder.addedObjects, mps_setup.append, ConfigBuilder.ConfigBuilder.heapProfileOptions(), 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().

389  def addCommon(self):
390  if 'HARVESTING' in self.stepMap.keys() or 'ALCAHARVEST' in self.stepMap.keys():
391  self.process.options.Rethrow = ['ProductNotFound']
392  self.process.options.fileMode = 'FULLMERGE'
393 
394  self.addedObjects.append(("","options"))
395 
396  if self._options.lazy_download:
397  self.process.AdaptorConfig = cms.Service("AdaptorConfig",
398  stats = cms.untracked.bool(True),
399  enable = cms.untracked.bool(True),
400  cacheHint = cms.untracked.string("lazy-download"),
401  readHint = cms.untracked.string("read-ahead-buffered")
402  )
403  self.addedObjects.append(("Setup lazy download","AdaptorConfig"))
404 
405  #self.process.cmsDriverCommand = cms.untracked.PSet( command=cms.untracked.string('cmsDriver.py '+self._options.arguments) )
406  #self.addedObjects.append(("what cmsDriver command was used","cmsDriverCommand"))
407 
408  if self._options.profile:
409  (start, interval, eventFormat, jobFormat)=self.profileOptions()
410  self.process.IgProfService = cms.Service("IgProfService",
411  reportFirstEvent = cms.untracked.int32(start),
412  reportEventInterval = cms.untracked.int32(interval),
413  reportToFileAtPostEvent = cms.untracked.string("| gzip -c > %s"%(eventFormat)),
414  reportToFileAtPostEndJob = cms.untracked.string("| gzip -c > %s"%(jobFormat)))
415  self.addedObjects.append(("Setup IGProf Service for profiling","IgProfService"))
416 
417  if self._options.heap_profile:
418  (start, interval, eventFormat, jobFormat)=self.heapProfileOptions()
419  self.process.JeProfService = cms.Service("JeProfService",
420  reportFirstEvent = cms.untracked.int32(start),
421  reportEventInterval = cms.untracked.int32(interval),
422  reportToFileAtPostEvent = cms.untracked.string("%s"%(eventFormat)),
423  reportToFileAtPostEndJob = cms.untracked.string("%s"%(jobFormat)))
424  self.addedObjects.append(("Setup JeProf Service for heap profiling","JeProfService"))
425 

◆ addConditions()

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

Definition at line 894 of file ConfigBuilder.py.

References ConfigBuilder.ConfigBuilder._options, ConfigBuilder.ConfigBuilder.addCustomise(), ConfigBuilder.ConfigBuilder.additionalCommands, mps_setup.append, ConfigBuilder.ConfigBuilder.ConditionsDefaultCFF, ConfigBuilder.ConfigBuilder.loadAndRemember(), 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().

894  def addConditions(self):
895  """Add conditions to the process"""
896  if not self._options.conditions: return
897 
898  if 'FrontierConditions_GlobalTag' in self._options.conditions:
899  print('using FrontierConditions_GlobalTag in --conditions is not necessary anymore and will be deprecated soon. please update your command line')
900  self._options.conditions = self._options.conditions.replace("FrontierConditions_GlobalTag,",'')
901 
902  self.loadAndRemember(self.ConditionsDefaultCFF)
903  from Configuration.AlCa.GlobalTag import GlobalTag
904  self.process.GlobalTag = GlobalTag(self.process.GlobalTag, self._options.conditions, self._options.custom_conditions)
905  self.additionalCommands.append('from Configuration.AlCa.GlobalTag import GlobalTag')
906  self.additionalCommands.append('process.GlobalTag = GlobalTag(process.GlobalTag, %s, %s)' % (repr(self._options.conditions), repr(self._options.custom_conditions)))
907 
908 
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47

◆ addCustomise()

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

Definition at line 909 of file ConfigBuilder.py.

References ConfigBuilder.ConfigBuilder._options, ConfigBuilder.ConfigBuilder.addCustomiseCmdLine(), geometryDiff.file, join(), 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().

909  def addCustomise(self,unsch=0):
910  """Include the customise code """
911 
912  custOpt=[]
913  if unsch==0:
914  for c in self._options.customisation_file:
915  custOpt.extend(c.split(","))
916  else:
917  for c in self._options.customisation_file_unsch:
918  custOpt.extend(c.split(","))
919 
920  custMap=DictTypes.SortedKeysDict()
921  for opt in custOpt:
922  if opt=='': continue
923  if opt.count('.')>1:
924  raise Exception("more than . in the specification:"+opt)
925  fileName=opt.split('.')[0]
926  if opt.count('.')==0: rest='customise'
927  else:
928  rest=opt.split('.')[1]
929  if rest=='py': rest='customise' #catch the case of --customise file.py
930 
931  if fileName in custMap:
932  custMap[fileName].extend(rest.split('+'))
933  else:
934  custMap[fileName]=rest.split('+')
935 
936  if len(custMap)==0:
937  final_snippet='\n'
938  else:
939  final_snippet='\n# customisation of the process.\n'
940 
941  allFcn=[]
942  for opt in custMap:
943  allFcn.extend(custMap[opt])
944  for fcn in allFcn:
945  if allFcn.count(fcn)!=1:
946  raise Exception("cannot specify twice "+fcn+" as a customisation method")
947 
948  for f in custMap:
949  # let python search for that package and do syntax checking at the same time
950  packageName = f.replace(".py","").replace("/",".")
951  __import__(packageName)
952  package = sys.modules[packageName]
953 
954  # now ask the package for its definition and pick .py instead of .pyc
955  customiseFile = re.sub(r'\.pyc$', '.py', package.__file__)
956 
957  final_snippet+='\n# Automatic addition of the customisation function from '+packageName+'\n'
958  if self._options.inline_custom:
959  for line in file(customiseFile,'r'):
960  if "import FWCore.ParameterSet.Config" in line:
961  continue
962  final_snippet += line
963  else:
964  final_snippet += 'from %s import %s \n'%(packageName,','.join(custMap[f]))
965  for fcn in custMap[f]:
966  print("customising the process with",fcn,"from",f)
967  if not hasattr(package,fcn):
968  #bound to fail at run time
969  raise Exception("config "+f+" has no function "+fcn)
970  #execute the command
971  self.process=getattr(package,fcn)(self.process)
972  #and print it in the configuration
973  final_snippet += "\n#call to customisation function "+fcn+" imported from "+packageName
974  final_snippet += "\nprocess = %s(process)\n"%(fcn,)
975 
976  if len(custMap)!=0:
977  final_snippet += '\n# End of customisation functions\n'
978 
979 
980  return final_snippet
981 
def replace(string, replacements)
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
static std::string join(char **cmd)
Definition: RemoteFile.cc:19

◆ addCustomiseCmdLine()

def ConfigBuilder.ConfigBuilder.addCustomiseCmdLine (   self)

Definition at line 982 of file ConfigBuilder.py.

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

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

982  def addCustomiseCmdLine(self):
983  final_snippet='\n# Customisation from command line\n'
984  if self._options.customise_commands:
985  import string
986  for com in self._options.customise_commands.split('\\n'):
987  com=com.lstrip()
988  self.executeAndRemember(com)
989  final_snippet +='\n'+com
990 
991  return final_snippet
992 

◆ addExtraStream()

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

Definition at line 1211 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_SKIM().

1211  def addExtraStream(self, name, stream, workflow='full'):
1212  # define output module and go from there
1213  output = cms.OutputModule("PoolOutputModule")
1214  if stream.selectEvents.parameters_().__len__()!=0:
1215  output.SelectEvents = stream.selectEvents
1216  else:
1217  output.SelectEvents = cms.untracked.PSet()
1218  output.SelectEvents.SelectEvents=cms.vstring()
1219  if isinstance(stream.paths,tuple):
1220  for path in stream.paths:
1221  output.SelectEvents.SelectEvents.append(path.label())
1222  else:
1223  output.SelectEvents.SelectEvents.append(stream.paths.label())
1224 
1225 
1226 
1227  if isinstance(stream.content,str):
1228  evtPset=getattr(self.process,stream.content)
1229  for p in evtPset.parameters_():
1230  setattr(output,p,getattr(evtPset,p))
1231  if not self._options.inlineEventContent:
1232  def doNotInlineEventContent(instance,label = "process."+stream.content+".outputCommands"):
1233  return label
1234  output.outputCommands.__dict__["dumpPython"] = doNotInlineEventContent
1235  else:
1236  output.outputCommands = stream.content
1237 
1238 
1239  output.fileName = cms.untracked.string(self._options.dirout+stream.name+'.root')
1240 
1241  output.dataset = cms.untracked.PSet( dataTier = stream.dataTier,
1242  filterName = cms.untracked.string(stream.name))
1243 
1244  if self._options.filtername:
1245  output.dataset.filterName= cms.untracked.string(self._options.filtername+"_"+stream.name)
1246 
1247  #add an automatic flushing to limit memory consumption
1248  output.eventAutoFlushCompressedSize=cms.untracked.int32(5*1024*1024)
1249 
1250  if workflow in ("producers,full"):
1251  if isinstance(stream.paths,tuple):
1252  for path in stream.paths:
1253  self.schedule.append(path)
1254  else:
1255  self.schedule.append(stream.paths)
1256 
1257 
1258  # in case of relvals we don't want to have additional outputs
1259  if (not self._options.relval) and workflow in ("full","output"):
1260  self.additionalOutputs[name] = output
1261  setattr(self.process,name,output)
1262 
1263  if workflow == 'output':
1264  # adjust the select events to the proper trigger results from previous process
1265  filterList = output.SelectEvents.SelectEvents
1266  for i, filter in enumerate(filterList):
1267  filterList[i] = filter+":"+self._options.triggerResultsProcess
1268 
1269  return output
1270 

◆ addMaxEvents()

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

Definition at line 426 of file ConfigBuilder.py.

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().

426  def addMaxEvents(self):
427  """Here we decide how many evts will be processed"""
428  self.process.maxEvents.input = int(self._options.number)
429  if self._options.number_out:
430  self.process.maxEvents.output = int(self._options.number_out)
431  self.addedObjects.append(("","maxEvents"))
432 

◆ addOutput()

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

Definition at line 585 of file ConfigBuilder.py.

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

Referenced by ConfigBuilder.ConfigBuilder.prepare().

585  def addOutput(self):
586  """ Add output module to the process """
587  result=""
588  if self._options.outputDefinition:
589  if self._options.datatier:
590  print("--datatier & --eventcontent options ignored")
591 
592  #new output convention with a list of dict
593  outList = eval(self._options.outputDefinition)
594  for (id,outDefDict) in enumerate(outList):
595  outDefDictStr=outDefDict.__str__()
596  if not isinstance(outDefDict,dict):
597  raise Exception("--output needs to be passed a list of dict"+self._options.outputDefinition+" is invalid")
598  #requires option: tier
599  theTier=anyOf(['t','tier','dataTier'],outDefDict)
600  #optional option: eventcontent, filtername, selectEvents, moduleLabel, filename
601 
602  theStreamType=anyOf(['e','ec','eventContent','streamType'],outDefDict,theTier)
603  theFilterName=anyOf(['f','ftN','filterName'],outDefDict,'')
604  theSelectEvent=anyOf(['s','sE','selectEvents'],outDefDict,'')
605  theModuleLabel=anyOf(['l','mL','moduleLabel'],outDefDict,'')
606  theExtraOutputCommands=anyOf(['o','oC','outputCommands'],outDefDict,'')
607  # module label has a particular role
608  if not theModuleLabel:
609  tryNames=[theStreamType.replace(theTier.replace('-',''),'')+theTier.replace('-','')+'output',
610  theStreamType.replace(theTier.replace('-',''),'')+theTier.replace('-','')+theFilterName+'output',
611  theStreamType.replace(theTier.replace('-',''),'')+theTier.replace('-','')+theFilterName+theSelectEvent.split(',')[0].replace(':','for').replace(' ','')+'output'
612  ]
613  for name in tryNames:
614  if not hasattr(self.process,name):
615  theModuleLabel=name
616  break
617  if not theModuleLabel:
618  raise Exception("cannot find a module label for specification: "+outDefDictStr)
619  if id==0:
620  defaultFileName=self._options.outfile_name
621  else:
622  defaultFileName=self._options.outfile_name.replace('.root','_in'+theTier+'.root')
623 
624  theFileName=self._options.dirout+anyOf(['fn','fileName'],outDefDict,defaultFileName)
625  if not theFileName.endswith('.root'):
626  theFileName+='.root'
627 
628  if len(outDefDict):
629  raise Exception("unused keys from --output options: "+','.join(outDefDict.keys()))
630  if theStreamType=='DQMIO': theStreamType='DQM'
631  if theStreamType=='ALL':
632  theEventContent = cms.PSet(outputCommands = cms.untracked.vstring('keep *'))
633  else:
634  theEventContent = getattr(self.process, theStreamType+"EventContent")
635 
636 
637  addAlCaSelects=False
638  if theStreamType=='ALCARECO' and not theFilterName:
639  theFilterName='StreamALCACombined'
640  addAlCaSelects=True
641 
642  CppType='PoolOutputModule'
643  if self._options.timeoutOutput:
644  CppType='TimeoutPoolOutputModule'
645  if theStreamType=='DQM' and theTier=='DQMIO': CppType='DQMRootOutputModule'
646  output = cms.OutputModule(CppType,
647  theEventContent.clone(),
648  fileName = cms.untracked.string(theFileName),
649  dataset = cms.untracked.PSet(
650  dataTier = cms.untracked.string(theTier),
651  filterName = cms.untracked.string(theFilterName))
652  )
653  if not theSelectEvent and hasattr(self.process,'generation_step') and theStreamType!='LHE':
654  output.SelectEvents = cms.untracked.PSet(SelectEvents = cms.vstring('generation_step'))
655  if not theSelectEvent and hasattr(self.process,'filtering_step'):
656  output.SelectEvents = cms.untracked.PSet(SelectEvents = cms.vstring('filtering_step'))
657  if theSelectEvent:
658  output.SelectEvents =cms.untracked.PSet(SelectEvents = cms.vstring(theSelectEvent))
659 
660  if addAlCaSelects:
661  if not hasattr(output,'SelectEvents'):
662  output.SelectEvents=cms.untracked.PSet(SelectEvents=cms.vstring())
663  for alca in self.AlCaPaths:
664  output.SelectEvents.SelectEvents.extend(getattr(self.process,'OutALCARECO'+alca).SelectEvents.SelectEvents)
665 
666 
667  if hasattr(self.process,theModuleLabel):
668  raise Exception("the current process already has a module "+theModuleLabel+" defined")
669  #print "creating output module ",theModuleLabel
670  setattr(self.process,theModuleLabel,output)
671  outputModule=getattr(self.process,theModuleLabel)
672  setattr(self.process,theModuleLabel+'_step',cms.EndPath(outputModule))
673  path=getattr(self.process,theModuleLabel+'_step')
674  self.schedule.append(path)
675 
676  if not self._options.inlineEventContent and hasattr(self.process,theStreamType+"EventContent"):
677  def doNotInlineEventContent(instance,label = "cms.untracked.vstring(process."+theStreamType+"EventContent.outputCommands)"): return label
678  outputModule.outputCommands.__dict__["dumpPython"] = doNotInlineEventContent
679  if theExtraOutputCommands:
680  if not isinstance(theExtraOutputCommands,list):
681  raise Exception("extra ouput command in --option must be a list of strings")
682  if hasattr(self.process,theStreamType+"EventContent"):
683  self.executeAndRemember('process.%s.outputCommands.extend(%s)'%(theModuleLabel,theExtraOutputCommands))
684  else:
685  outputModule.outputCommands.extend(theExtraOutputCommands)
686 
687  result+="\nprocess."+theModuleLabel+" = "+outputModule.dumpPython()
688 
689 
690  return result
691 
692  streamTypes=self._options.eventcontent.split(',')
693  tiers=self._options.datatier.split(',')
694  if not self._options.outputDefinition and len(streamTypes)!=len(tiers):
695  raise Exception("number of event content arguments does not match number of datatier arguments")
696 
697  # if the only step is alca we don't need to put in an output
698  if self._options.step.split(',')[0].split(':')[0] == 'ALCA':
699  return "\n"
700 
701  for i,(streamType,tier) in enumerate(zip(streamTypes,tiers)):
702  if streamType=='': continue
703  if streamType == 'ALCARECO' and not 'ALCAPRODUCER' in self._options.step: continue
704  if streamType=='DQMIO': streamType='DQM'
705  eventContent=streamType
706 
707  if streamType == "NANOEDMAOD" :
708  eventContent = "NANOAOD"
709  elif streamType == "NANOEDMAODSIM" :
710  eventContent = "NANOAODSIM"
711  theEventContent = getattr(self.process, eventContent+"EventContent")
712  if i==0:
713  theFileName=self._options.outfile_name
714  theFilterName=self._options.filtername
715  else:
716  theFileName=self._options.outfile_name.replace('.root','_in'+streamType+'.root')
717  theFilterName=self._options.filtername
718  CppType='PoolOutputModule'
719  if self._options.timeoutOutput:
720  CppType='TimeoutPoolOutputModule'
721  if streamType=='DQM' and tier=='DQMIO': CppType='DQMRootOutputModule'
722  if "NANOAOD" in streamType : CppType='NanoAODOutputModule'
723  output = cms.OutputModule(CppType,
724  theEventContent,
725  fileName = cms.untracked.string(theFileName),
726  dataset = cms.untracked.PSet(dataTier = cms.untracked.string(tier),
727  filterName = cms.untracked.string(theFilterName)
728  )
729  )
730  if hasattr(self.process,"generation_step") and streamType!='LHE':
731  output.SelectEvents = cms.untracked.PSet(SelectEvents = cms.vstring('generation_step'))
732  if hasattr(self.process,"filtering_step"):
733  output.SelectEvents = cms.untracked.PSet(SelectEvents = cms.vstring('filtering_step'))
734 
735  if streamType=='ALCARECO':
736  output.dataset.filterName = cms.untracked.string('StreamALCACombined')
737 
738  if "MINIAOD" in streamType:
739  from PhysicsTools.PatAlgos.slimming.miniAOD_tools import miniAOD_customizeOutput
741 
742  outputModuleName=streamType+'output'
743  setattr(self.process,outputModuleName,output)
744  outputModule=getattr(self.process,outputModuleName)
745  setattr(self.process,outputModuleName+'_step',cms.EndPath(outputModule))
746  path=getattr(self.process,outputModuleName+'_step')
747  self.schedule.append(path)
748 
749  if self._options.outputCommands and streamType!='DQM':
750  for evct in self._options.outputCommands.split(','):
751  if not evct: continue
752  self.executeAndRemember("process.%s.outputCommands.append('%s')"%(outputModuleName,evct.strip()))
753 
754  if not self._options.inlineEventContent:
755  tmpstreamType=streamType
756  if "NANOEDM" in tmpstreamType :
757  tmpstreamType=tmpstreamType.replace("NANOEDM","NANO")
758  def doNotInlineEventContent(instance,label = "process."+tmpstreamType+"EventContent.outputCommands"):
759  return label
760  outputModule.outputCommands.__dict__["dumpPython"] = doNotInlineEventContent
761 
762  result+="\nprocess."+outputModuleName+" = "+outputModule.dumpPython()
763 
764  return result
765 
766 
def replace(string, replacements)
OutputIterator zip(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp)
def anyOf(listOfKeys, dict, opt=None)
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
static std::string join(char **cmd)
Definition: RemoteFile.cc:19
def addOutput(process)
Definition: FastTimer.py:47
def miniAOD_customizeOutput(out)

◆ addSource()

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

Definition at line 433 of file ConfigBuilder.py.

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

Referenced by ConfigBuilder.ConfigBuilder.prepare().

433  def addSource(self):
434  """Here the source is built. Priority: file, generator"""
435  self.addedObjects.append(("Input source","source"))
436 
437  def filesFromOption(self):
438  for entry in self._options.filein.split(','):
439  print("entry",entry)
440  if entry.startswith("filelist:"):
441  filesFromList(entry[9:],self.process.source)
442  elif entry.startswith("dbs:") or entry.startswith("das:"):
443  filesFromDASQuery('file dataset = %s'%(entry[4:]),self._options.dasoption,self.process.source)
444  else:
445  self.process.source.fileNames.append(self._options.dirin+entry)
446  if self._options.secondfilein:
447  if not hasattr(self.process.source,"secondaryFileNames"):
448  raise Exception("--secondfilein not compatible with "+self._options.filetype+"input type")
449  for entry in self._options.secondfilein.split(','):
450  print("entry",entry)
451  if entry.startswith("filelist:"):
452  self.process.source.secondaryFileNames.extend((filesFromList(entry[9:]))[0])
453  elif entry.startswith("dbs:") or entry.startswith("das:"):
454  self.process.source.secondaryFileNames.extend((filesFromDASQuery('file dataset = %s'%(entry[4:]),self._options.dasoption))[0])
455  else:
456  self.process.source.secondaryFileNames.append(self._options.dirin+entry)
457 
458  if self._options.filein or self._options.dasquery:
459  if self._options.filetype == "EDM":
460  self.process.source=cms.Source("PoolSource",
461  fileNames = cms.untracked.vstring(),
462  secondaryFileNames= cms.untracked.vstring())
463  filesFromOption(self)
464  elif self._options.filetype == "DAT":
465  self.process.source=cms.Source("NewEventStreamFileReader",fileNames = cms.untracked.vstring())
466  filesFromOption(self)
467  elif self._options.filetype == "LHE":
468  self.process.source=cms.Source("LHESource", fileNames = cms.untracked.vstring())
469  if self._options.filein.startswith("lhe:"):
470  #list the article directory automatically
471  args=self._options.filein.split(':')
472  article=args[1]
473  print('LHE input from article ',article)
474  location='/store/lhe/'
475  import os
476  textOfFiles=os.popen('cmsLHEtoEOSManager.py -l '+article)
477  for line in textOfFiles:
478  for fileName in [x for x in line.split() if '.lhe' in x]:
479  self.process.source.fileNames.append(location+article+'/'+fileName)
480  #check first if list of LHE files is loaded (not empty)
481  if len(line)<2:
482  print('Issue to load LHE files, please check and try again.')
483  sys.exit(-1)
484  #Additional check to protect empty fileNames in process.source
485  if len(self.process.source.fileNames)==0:
486  print('Issue with empty filename, but can pass line check')
487  sys.exit(-1)
488  if len(args)>2:
489  self.process.source.skipEvents = cms.untracked.uint32(int(args[2]))
490  else:
491  filesFromOption(self)
492 
493  elif self._options.filetype == "DQM":
494  self.process.source=cms.Source("DQMRootSource",
495  fileNames = cms.untracked.vstring())
496  filesFromOption(self)
497 
498  elif self._options.filetype == "DQMDAQ":
499  # FIXME: how to configure it if there are no input files specified?
500  self.process.source=cms.Source("DQMStreamerReader")
501 
502 
503  if ('HARVESTING' in self.stepMap.keys() or 'ALCAHARVEST' in self.stepMap.keys()) and (not self._options.filetype == "DQM"):
504  self.process.source.processingMode = cms.untracked.string("RunsAndLumis")
505 
506  if self._options.dasquery!='':
507  self.process.source=cms.Source("PoolSource", fileNames = cms.untracked.vstring(),secondaryFileNames = cms.untracked.vstring())
508  filesFromDASQuery(self._options.dasquery,self._options.dasoption,self.process.source)
509 
510  if ('HARVESTING' in self.stepMap.keys() or 'ALCAHARVEST' in self.stepMap.keys()) and (not self._options.filetype == "DQM"):
511  self.process.source.processingMode = cms.untracked.string("RunsAndLumis")
512 
513 
514  if 'GEN' in self.stepMap.keys() and not self._options.filetype == "LHE":
515  if self._options.inputCommands:
516  self._options.inputCommands+=',drop LHEXMLStringProduct_*_*_*,'
517  else:
518  self._options.inputCommands='keep *, drop LHEXMLStringProduct_*_*_*,'
519 
520  if self.process.source and self._options.inputCommands and not self._options.filetype == "LHE":
521  if not hasattr(self.process.source,'inputCommands'): self.process.source.inputCommands=cms.untracked.vstring()
522  for command in self._options.inputCommands.split(','):
523  # remove whitespace around the keep/drop statements
524  command = command.strip()
525  if command=='': continue
526  self.process.source.inputCommands.append(command)
527  if not self._options.dropDescendant:
528  self.process.source.dropDescendantsOfDroppedBranches = cms.untracked.bool(False)
529 
530  if self._options.lumiToProcess:
531  import FWCore.PythonUtilities.LumiList as LumiList
532  self.process.source.lumisToProcess = cms.untracked.VLuminosityBlockRange( LumiList.LumiList(self._options.lumiToProcess).getCMSSWString().split(',') )
533 
534  if 'GEN' in self.stepMap.keys() or 'LHE' in self.stepMap or (not self._options.filein and hasattr(self._options, "evt_type")):
535  if self.process.source is None:
536  self.process.source=cms.Source("EmptySource")
537 
538  # modify source in case of run-dependent MC
539  self.runsAndWeights=None
540  if self._options.runsAndWeightsForMC or self._options.runsScenarioForMC :
541  if not self._options.isMC :
542  raise Exception("options --runsAndWeightsForMC and --runsScenarioForMC are only valid for MC")
543  if self._options.runsAndWeightsForMC:
544  self.runsAndWeights = eval(self._options.runsAndWeightsForMC)
545  else:
546  from Configuration.StandardSequences.RunsAndWeights import RunsAndWeights
547  if isinstance(RunsAndWeights[self._options.runsScenarioForMC], str):
548  __import__(RunsAndWeights[self._options.runsScenarioForMC])
549  self.runsAndWeights = sys.modules[RunsAndWeights[self._options.runsScenarioForMC]].runProbabilityDistribution
550  else:
551  self.runsAndWeights = RunsAndWeights[self._options.runsScenarioForMC]
552 
553  if self.runsAndWeights:
554  import SimGeneral.Configuration.ThrowAndSetRandomRun as ThrowAndSetRandomRun
555  ThrowAndSetRandomRun.throwAndSetRandomRun(self.process.source,self.runsAndWeights)
556  self.additionalCommands.append('import SimGeneral.Configuration.ThrowAndSetRandomRun as ThrowAndSetRandomRun')
557  self.additionalCommands.append('ThrowAndSetRandomRun.throwAndSetRandomRun(process.source,%s)'%(self.runsAndWeights))
558 
559  # modify source in case of run-dependent MC (Run-3 method)
560  self.runsAndWeightsInt=None
561  if self._options.runsAndWeightsForMCIntegerWeights or self._options.runsScenarioForMCIntegerWeights:
562  if not self._options.isMC :
563  raise Exception("options --runsAndWeightsForMCIntegerWeights and --runsScenarioForMCIntegerWeights are only valid for MC")
564  if self._options.runsAndWeightsForMCIntegerWeights:
565  self.runsAndWeightsInt = eval(self._options.runsAndWeightsForMCIntegerWeights)
566  else:
567  from Configuration.StandardSequences.RunsAndWeights import RunsAndWeights
568  if isinstance(RunsAndWeights[self._options.runsScenarioForMCIntegerWeights], str):
569  __import__(RunsAndWeights[self._options.runsScenarioForMCIntegerWeights])
570  self.runsAndWeightsInt = sys.modules[RunsAndWeights[self._options.runsScenarioForMCIntegerWeights]].runProbabilityDistribution
571  else:
572  self.runsAndWeightsInt = RunsAndWeights[self._options.runsScenarioForMCIntegerWeights]
573 
574  if self.runsAndWeightsInt:
575  if not self._options.relval:
576  raise Exception("--relval option required when using --runsAndWeightsInt")
577  if 'DATAMIX' in self._options.step:
578  from SimGeneral.Configuration.LumiToRun import lumi_to_run
579  total_events, events_per_job = self._options.relval.split(',')
580  lumi_to_run_mapping = lumi_to_run(self.runsAndWeightsInt, int(total_events), int(events_per_job))
581  self.additionalCommands.append("process.source.firstLuminosityBlockForEachRun = cms.untracked.VLuminosityBlockID(*[cms.LuminosityBlockID(x,y) for x,y in " + str(lumi_to_run_mapping) + "])")
582 
583  return
584 
def filesFromDASQuery(query, option="", s=None)
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
def throwAndSetRandomRun(source, runsAndProbs)
def lumi_to_run(runs, events_in_sample, events_per_job)
Definition: LumiToRun.py:1
#define str(s)
def filesFromList(fileName, s=None)

◆ addStandardSequences()

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

Definition at line 767 of file ConfigBuilder.py.

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, 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().

767  def addStandardSequences(self):
768  """
769  Add selected standard sequences to the process
770  """
771  # load the pile up file
772  if self._options.pileup:
773  pileupSpec=self._options.pileup.split(',')[0]
774 
775  # Does the requested pile-up scenario exist?
776  from Configuration.StandardSequences.Mixing import Mixing,defineMixing
777  if not pileupSpec in Mixing and '.' not in pileupSpec and 'file:' not in pileupSpec:
778  message = pileupSpec+' is not a know mixing scenario:\n available are: '+'\n'.join(Mixing.keys())
779  raise Exception(message)
780 
781  # Put mixing parameters in a dictionary
782  if '.' in pileupSpec:
783  mixingDict={'file':pileupSpec}
784  elif pileupSpec.startswith('file:'):
785  mixingDict={'file':pileupSpec[5:]}
786  else:
787  import copy
788  mixingDict=copy.copy(Mixing[pileupSpec])
789  if len(self._options.pileup.split(','))>1:
790  mixingDict.update(eval(self._options.pileup[self._options.pileup.find(',')+1:]))
791 
792  # Load the pu cfg file corresponding to the requested pu scenario
793  if 'file:' in pileupSpec:
794  #the file is local
795  self.process.load(mixingDict['file'])
796  print("inlining mixing module configuration")
797  self._options.inlineObjets+=',mix'
798  else:
799  self.loadAndRemember(mixingDict['file'])
800 
801  mixingDict.pop('file')
802  if not "DATAMIX" in self.stepMap.keys(): # when DATAMIX is present, pileup_input refers to pre-mixed GEN-RAW
803  if self._options.pileup_input:
804  if self._options.pileup_input.startswith('dbs:') or self._options.pileup_input.startswith('das:'):
805  mixingDict['F']=filesFromDASQuery('file dataset = %s'%(self._options.pileup_input[4:],),self._options.pileup_dasoption)[0]
806  elif self._options.pileup_input.startswith("filelist:"):
807  mixingDict['F']=(filesFromList(self._options.pileup_input[9:]))[0]
808  else:
809  mixingDict['F']=self._options.pileup_input.split(',')
810  specialization=defineMixing(mixingDict)
811  for command in specialization:
812  self.executeAndRemember(command)
813  if len(mixingDict)!=0:
814  raise Exception('unused mixing specification: '+mixingDict.keys().__str__())
815 
816 
817  # load the geometry file
818  try:
819  if len(self.stepMap):
820  self.loadAndRemember(self.GeometryCFF)
821  if ('SIM' in self.stepMap or 'reSIM' in self.stepMap) and not self._options.fast:
822  self.loadAndRemember(self.SimGeometryCFF)
823  if self.geometryDBLabel:
824  self.executeAndRemember('if hasattr(process, "XMLFromDBSource"): process.XMLFromDBSource.label="%s"'%(self.geometryDBLabel))
825  self.executeAndRemember('if hasattr(process, "DDDetectorESProducerFromDB"): process.DDDetectorESProducerFromDB.label="%s"'%(self.geometryDBLabel))
826 
827  except ImportError:
828  print("Geometry option",self._options.geometry,"unknown.")
829  raise
830 
831  if len(self.stepMap):
832  self.loadAndRemember(self.magFieldCFF)
833 
834  for stepName in self.stepKeys:
835  stepSpec = self.stepMap[stepName]
836  print("Step:", stepName,"Spec:",stepSpec)
837  if stepName.startswith('re'):
838 
839  if stepName[2:] not in self._options.donotDropOnInput:
840  self._options.inputEventContent='%s,%s'%(stepName.upper(),self._options.inputEventContent)
841  stepName=stepName[2:]
842  if stepSpec=="":
843  getattr(self,"prepare_"+stepName)(stepSpec = getattr(self,stepName+"DefaultSeq"))
844  elif isinstance(stepSpec, list):
845  getattr(self,"prepare_"+stepName)(stepSpec = '+'.join(stepSpec))
846  elif isinstance(stepSpec, tuple):
847  getattr(self,"prepare_"+stepName)(stepSpec = ','.join([stepSpec[1],'+'.join(stepSpec[0])]))
848  else:
849  raise ValueError("Invalid step definition")
850 
851  if self._options.restoreRNDSeeds!=False:
852  #it is either True, or a process name
853  if self._options.restoreRNDSeeds==True:
854  self.executeAndRemember('process.RandomNumberGeneratorService.restoreStateLabel=cms.untracked.string("randomEngineStateProducer")')
855  else:
856  self.executeAndRemember('process.RandomNumberGeneratorService.restoreStateTag=cms.untracked.InputTag("randomEngineStateProducer","","%s")'%(self._options.restoreRNDSeeds))
857  if self._options.inputEventContent or self._options.inputCommands:
858  if self._options.inputCommands:
859  self._options.inputCommands+='keep *_randomEngineStateProducer_*_*,'
860  else:
861  self._options.inputCommands='keep *_randomEngineStateProducer_*_*,'
862 
863 
def filesFromDASQuery(query, option="", s=None)
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
static std::string join(char **cmd)
Definition: RemoteFile.cc:19
def load(fileName)
Definition: svgfig.py:547
def defineMixing(dict)
Definition: Mixing.py:207
def filesFromList(fileName, s=None)

◆ build_production_info()

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

Definition at line 2172 of file ConfigBuilder.py.

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().

2172  def build_production_info(self, evt_type, evtnumber):
2173  """ Add useful info for the production. """
2174  self.process.configurationMetadata=cms.untracked.PSet\
2175  (version=cms.untracked.string("$Revision: 1.19 $"),
2176  name=cms.untracked.string("Applications"),
2177  annotation=cms.untracked.string(evt_type+ " nevts:"+str(evtnumber))
2178  )
2179 
2180  self.addedObjects.append(("Production Info","configurationMetadata"))
2181 
2182 
#define str(s)

◆ completeInputCommand()

def ConfigBuilder.ConfigBuilder.completeInputCommand (   self)

Definition at line 864 of file ConfigBuilder.py.

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().

864  def completeInputCommand(self):
865  if self._options.inputEventContent:
866  import copy
867  def dropSecondDropStar(iec):
868  #drop occurence of 'drop *' in the list
869  count=0
870  for item in iec:
871  if item=='drop *':
872  if count!=0:
873  iec.remove(item)
874  count+=1
875 
876 
877  if not hasattr(self.process.source,'inputCommands'): self.process.source.inputCommands=cms.untracked.vstring()
878  for evct in self._options.inputEventContent.split(','):
879  if evct=='': continue
880  theEventContent = getattr(self.process, evct+"EventContent")
881  if hasattr(theEventContent,'outputCommands'):
882  self.process.source.inputCommands.extend(copy.copy(theEventContent.outputCommands))
883  if hasattr(theEventContent,'inputCommands'):
884  self.process.source.inputCommands.extend(copy.copy(theEventContent.inputCommands))
885 
886  dropSecondDropStar(self.process.source.inputCommands)
887 
888  if not self._options.dropDescendant:
889  self.process.source.dropDescendantsOfDroppedBranches = cms.untracked.bool(False)
890 
891 
892  return
893 

◆ create_process()

def ConfigBuilder.ConfigBuilder.create_process (   self)

Definition at line 2183 of file ConfigBuilder.py.

References ConfigBuilder.ConfigBuilder.pythonCfgCode.

Referenced by ConfigBuilder.ConfigBuilder.build_production_info().

2183  def create_process(self):
2184  self.pythonCfgCode = "# Auto generated configuration file\n"
2185  self.pythonCfgCode += "# using: \n# "+__version__[1:-1]+"\n# "+__source__[1:-1]+'\n'
2186  self.pythonCfgCode += "# with command line options: "+self._options.arguments+'\n'
2187  self.pythonCfgCode += "import FWCore.ParameterSet.Config as cms\n\n"
2188 
2189  # now set up the modifies
2190  modifiers=[]
2191  modifierStrings=[]
2192  modifierImports=[]
2193 
2194  if hasattr(self._options,"era") and self._options.era :
2195  # Multiple eras can be specified in a comma seperated list
2196  from Configuration.StandardSequences.Eras import eras
2197  for requestedEra in self._options.era.split(",") :
2198  modifierStrings.append(requestedEra)
2199  modifierImports.append(eras.pythonCfgLines[requestedEra])
2200  modifiers.append(getattr(eras,requestedEra))
2201 
2202 
2203  if hasattr(self._options,"procModifiers") and self._options.procModifiers:
2204  import importlib
2205  thingsImported=[]
2206  for c in self._options.procModifiers:
2207  thingsImported.extend(c.split(","))
2208  for pm in thingsImported:
2209  modifierStrings.append(pm)
2210  modifierImports.append('from Configuration.ProcessModifiers.'+pm+'_cff import '+pm)
2211  modifiers.append(getattr(importlib.import_module('Configuration.ProcessModifiers.'+pm+'_cff'),pm))
2212 
2213  self.pythonCfgCode += '\n'.join(modifierImports)+'\n\n'
2214  self.pythonCfgCode += "process = cms.Process('"+self._options.name+"'" # Start of the line, finished after the loop
2215 
2216 
2217  if len(modifierStrings)>0:
2218  self.pythonCfgCode+= ','+','.join(modifierStrings)
2219  self.pythonCfgCode+=')\n\n'
2220 
2221  #yes, the cfg code gets out of sync here if a process is passed in. That could be fixed in the future
2222  #assuming there is some way for the fwk to get the list of modifiers (and their stringified name)
2223  if self.process == None:
2224  if len(modifiers)>0:
2225  self.process = cms.Process(self._options.name,*modifiers)
2226  else:
2227  self.process = cms.Process(self._options.name)
2228 
2229 
2230 
2231 
static std::string join(char **cmd)
Definition: RemoteFile.cc:19

◆ define_Configs()

def ConfigBuilder.ConfigBuilder.define_Configs (   self)

Definition at line 997 of file ConfigBuilder.py.

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

Referenced by ConfigBuilder.ConfigBuilder.addCustomiseCmdLine().

997  def define_Configs(self):
998  if len(self.stepMap):
999  self.loadAndRemember('Configuration/StandardSequences/Services_cff')
1000  if self._options.particleTable not in defaultOptions.particleTableList:
1001  print('Invalid particle table provided. Options are:')
1002  print(defaultOptions.particleTable)
1003  sys.exit(-1)
1004  else:
1005  if len(self.stepMap):
1006  self.loadAndRemember('SimGeneral.HepPDTESSource.'+self._options.particleTable+'_cfi')
1007 
1008  self.loadAndRemember('FWCore/MessageService/MessageLogger_cfi')
1009 
1010  self.ALCADefaultCFF="Configuration/StandardSequences/AlCaRecoStreams_cff"
1011  self.GENDefaultCFF="Configuration/StandardSequences/Generator_cff"
1012  self.SIMDefaultCFF="Configuration/StandardSequences/Sim_cff"
1013  self.DIGIDefaultCFF="Configuration/StandardSequences/Digi_cff"
1014  self.DIGI2RAWDefaultCFF="Configuration/StandardSequences/DigiToRaw_cff"
1015  self.L1EMDefaultCFF='Configuration/StandardSequences/SimL1Emulator_cff'
1016  self.L1MENUDefaultCFF="Configuration/StandardSequences/L1TriggerDefaultMenu_cff"
1017  self.HLTDefaultCFF="Configuration/StandardSequences/HLTtable_cff"
1018  self.RAW2DIGIDefaultCFF="Configuration/StandardSequences/RawToDigi_Data_cff"
1019  if self._options.isRepacked: self.RAW2DIGIDefaultCFF="Configuration/StandardSequences/RawToDigi_DataMapper_cff"
1020  self.L1RecoDefaultCFF="Configuration/StandardSequences/L1Reco_cff"
1021  self.L1TrackTriggerDefaultCFF="Configuration/StandardSequences/L1TrackTrigger_cff"
1022  self.RECODefaultCFF="Configuration/StandardSequences/Reconstruction_Data_cff"
1023  self.RECOSIMDefaultCFF="Configuration/StandardSequences/RecoSim_cff"
1024  self.PATDefaultCFF="Configuration/StandardSequences/PAT_cff"
1025  self.NANODefaultCFF="PhysicsTools/NanoAOD/nano_cff"
1026  self.NANOGENDefaultCFF="PhysicsTools/NanoAOD/nanogen_cff"
1027  self.SKIMDefaultCFF="Configuration/StandardSequences/Skims_cff"
1028  self.POSTRECODefaultCFF="Configuration/StandardSequences/PostRecoGenerator_cff"
1029  self.VALIDATIONDefaultCFF="Configuration/StandardSequences/Validation_cff"
1030  self.L1HwValDefaultCFF = "Configuration/StandardSequences/L1HwVal_cff"
1031  self.DQMOFFLINEDefaultCFF="DQMOffline/Configuration/DQMOffline_cff"
1032  self.HARVESTINGDefaultCFF="Configuration/StandardSequences/Harvesting_cff"
1033  self.ALCAHARVESTDefaultCFF="Configuration/StandardSequences/AlCaHarvesting_cff"
1034  self.ENDJOBDefaultCFF="Configuration/StandardSequences/EndOfProcess_cff"
1035  self.ConditionsDefaultCFF = "Configuration/StandardSequences/FrontierConditions_GlobalTag_cff"
1036  self.CFWRITERDefaultCFF = "Configuration/StandardSequences/CrossingFrameWriter_cff"
1037  self.REPACKDefaultCFF="Configuration/StandardSequences/DigiToRaw_Repack_cff"
1038 
1039  if "DATAMIX" in self.stepMap.keys():
1040  self.DATAMIXDefaultCFF="Configuration/StandardSequences/DataMixer"+self._options.datamix+"_cff"
1041  self.DIGIDefaultCFF="Configuration/StandardSequences/DigiDM_cff"
1042  self.DIGI2RAWDefaultCFF="Configuration/StandardSequences/DigiToRawDM_cff"
1043  self.L1EMDefaultCFF='Configuration/StandardSequences/SimL1EmulatorDM_cff'
1044 
1045  self.ALCADefaultSeq=None
1046  self.LHEDefaultSeq='externalLHEProducer'
1047  self.GENDefaultSeq='pgen'
1048  self.SIMDefaultSeq='psim'
1049  self.DIGIDefaultSeq='pdigi'
1050  self.DATAMIXDefaultSeq=None
1051  self.DIGI2RAWDefaultSeq='DigiToRaw'
1052  self.HLTDefaultSeq='GRun'
1053  self.L1DefaultSeq=None
1054  self.L1REPACKDefaultSeq='GT'
1055  self.HARVESTINGDefaultSeq=None
1056  self.ALCAHARVESTDefaultSeq=None
1057  self.CFWRITERDefaultSeq=None
1058  self.RAW2DIGIDefaultSeq='RawToDigi'
1059  self.L1RecoDefaultSeq='L1Reco'
1060  self.L1TrackTriggerDefaultSeq='L1TrackTrigger'
1061  if self._options.fast or ('RAW2DIGI' in self.stepMap and 'RECO' in self.stepMap):
1062  self.RECODefaultSeq='reconstruction'
1063  else:
1064  self.RECODefaultSeq='reconstruction_fromRECO'
1065  self.RECOSIMDefaultSeq='recosim'
1066  self.POSTRECODefaultSeq=None
1067  self.L1HwValDefaultSeq='L1HwVal'
1068  self.DQMDefaultSeq='DQMOffline'
1069  self.VALIDATIONDefaultSeq=''
1070  self.ENDJOBDefaultSeq='endOfProcess'
1071  self.REPACKDefaultSeq='DigiToRawRepack'
1072  self.PATDefaultSeq='miniAOD'
1073  self.PATGENDefaultSeq='miniGEN'
1074  #TODO: Check based of file input
1075  self.NANOGENDefaultSeq='nanogenSequence'
1076  self.NANODefaultSeq='nanoSequence'
1077 
1078  self.EVTCONTDefaultCFF="Configuration/EventContent/EventContent_cff"
1079 
1080  if not self._options.beamspot:
1081  self._options.beamspot=VtxSmearedDefaultKey
1082 
1083  # if its MC then change the raw2digi
1084  if self._options.isMC==True:
1085  self.RAW2DIGIDefaultCFF="Configuration/StandardSequences/RawToDigi_cff"
1086  self.RECODefaultCFF="Configuration/StandardSequences/Reconstruction_cff"
1087  self.PATDefaultCFF="Configuration/StandardSequences/PATMC_cff"
1088  self.PATGENDefaultCFF="Configuration/StandardSequences/PATGEN_cff"
1089  self.DQMOFFLINEDefaultCFF="DQMOffline/Configuration/DQMOfflineMC_cff"
1090  self.ALCADefaultCFF="Configuration/StandardSequences/AlCaRecoStreamsMC_cff"
1091  self.NANODefaultSeq='nanoSequenceMC'
1092  else:
1093  self._options.beamspot = None
1094 
1095  #patch for gen, due to backward incompatibility
1096  if 'reGEN' in self.stepMap:
1097  self.GENDefaultSeq='fixGenInfo'
1098 
1099  if self._options.scenario=='cosmics':
1100  self._options.pileup='Cosmics'
1101  self.DIGIDefaultCFF="Configuration/StandardSequences/DigiCosmics_cff"
1102  self.RECODefaultCFF="Configuration/StandardSequences/ReconstructionCosmics_cff"
1103  self.SKIMDefaultCFF="Configuration/StandardSequences/SkimsCosmics_cff"
1104  self.EVTCONTDefaultCFF="Configuration/EventContent/EventContentCosmics_cff"
1105  self.VALIDATIONDefaultCFF="Configuration/StandardSequences/ValidationCosmics_cff"
1106  self.DQMOFFLINEDefaultCFF="DQMOffline/Configuration/DQMOfflineCosmics_cff"
1107  if self._options.isMC==True:
1108  self.DQMOFFLINEDefaultCFF="DQMOffline/Configuration/DQMOfflineCosmicsMC_cff"
1109  self.HARVESTINGDefaultCFF="Configuration/StandardSequences/HarvestingCosmics_cff"
1110  self.RECODefaultSeq='reconstructionCosmics'
1111  self.DQMDefaultSeq='DQMOfflineCosmics'
1112 
1113  if self._options.scenario=='HeavyIons':
1114  if not self._options.beamspot:
1115  self._options.beamspot=VtxSmearedHIDefaultKey
1116  self.HLTDefaultSeq = 'HIon'
1117  self.VALIDATIONDefaultCFF="Configuration/StandardSequences/ValidationHeavyIons_cff"
1118  self.VALIDATIONDefaultSeq=''
1119  self.EVTCONTDefaultCFF="Configuration/EventContent/EventContentHeavyIons_cff"
1120  self.RECODefaultCFF="Configuration/StandardSequences/ReconstructionHeavyIons_cff"
1121  self.RECODefaultSeq='reconstructionHeavyIons'
1122  self.ALCADefaultCFF = "Configuration/StandardSequences/AlCaRecoStreamsHeavyIons_cff"
1123  self.DQMOFFLINEDefaultCFF="DQMOffline/Configuration/DQMOfflineHeavyIons_cff"
1124  self.DQMDefaultSeq='DQMOfflineHeavyIons'
1125  self.SKIMDefaultCFF="Configuration/StandardSequences/SkimsHeavyIons_cff"
1126  self.HARVESTINGDefaultCFF="Configuration/StandardSequences/HarvestingHeavyIons_cff"
1127  if self._options.isMC==True:
1128  self.DQMOFFLINEDefaultCFF="DQMOffline/Configuration/DQMOfflineHeavyIonsMC_cff"
1129 
1130 
1131  self.RAW2RECODefaultSeq=','.join([self.RAW2DIGIDefaultSeq,self.RECODefaultSeq])
1132 
1133  self.USERDefaultSeq='user'
1134  self.USERDefaultCFF=None
1135 
1136  # the magnetic field
1137  self.magFieldCFF = 'Configuration/StandardSequences/MagneticField_'+self._options.magField.replace('.','')+'_cff'
1138  self.magFieldCFF = self.magFieldCFF.replace("__",'_')
1139 
1140  # the geometry
1141  self.GeometryCFF='Configuration/StandardSequences/GeometryRecoDB_cff'
1142  self.geometryDBLabel=None
1143  simGeometry=''
1144  if self._options.fast:
1145  if 'start' in self._options.conditions.lower():
1146  self.GeometryCFF='FastSimulation/Configuration/Geometries_START_cff'
1147  else:
1148  self.GeometryCFF='FastSimulation/Configuration/Geometries_MC_cff'
1149  else:
1150  def inGeometryKeys(opt):
1151  from Configuration.StandardSequences.GeometryConf import GeometryConf
1152  if opt in GeometryConf:
1153  return GeometryConf[opt]
1154  else:
1155  return opt
1156 
1157  geoms=self._options.geometry.split(',')
1158  if len(geoms)==1: geoms=inGeometryKeys(geoms[0]).split(',')
1159  if len(geoms)==2:
1160  #may specify the reco geometry
1161  if '/' in geoms[1] or '_cff' in geoms[1]:
1162  self.GeometryCFF=geoms[1]
1163  else:
1164  self.GeometryCFF='Configuration/Geometry/Geometry'+geoms[1]+'_cff'
1165 
1166  if (geoms[0].startswith('DB:')):
1167  self.SimGeometryCFF='Configuration/StandardSequences/GeometrySimDB_cff'
1168  self.geometryDBLabel=geoms[0][3:]
1169  print("with DB:")
1170  else:
1171  if '/' in geoms[0] or '_cff' in geoms[0]:
1172  self.SimGeometryCFF=geoms[0]
1173  else:
1174  simGeometry=geoms[0]
1175  if self._options.gflash==True:
1176  self.SimGeometryCFF='Configuration/Geometry/Geometry'+geoms[0]+'GFlash_cff'
1177  else:
1178  self.SimGeometryCFF='Configuration/Geometry/Geometry'+geoms[0]+'_cff'
1179 
1180  # synchronize the geometry configuration and the FullSimulation sequence to be used
1181  if simGeometry not in defaultOptions.geometryExtendedOptions:
1182  self.SIMDefaultCFF="Configuration/StandardSequences/SimIdeal_cff"
1183 
1184  if self._options.scenario=='nocoll' or self._options.scenario=='cosmics':
1185  self.SIMDefaultCFF="Configuration/StandardSequences/SimNOBEAM_cff"
1186  self._options.beamspot='NoSmear'
1187 
1188  # fastsim requires some changes to the default cff files and sequences
1189  if self._options.fast:
1190  self.SIMDefaultCFF = 'FastSimulation.Configuration.SimIdeal_cff'
1191  self.RECODefaultCFF= 'FastSimulation.Configuration.Reconstruction_AftMix_cff'
1192  self.RECOBEFMIXDefaultCFF = 'FastSimulation.Configuration.Reconstruction_BefMix_cff'
1193  self.RECOBEFMIXDefaultSeq = 'reconstruction_befmix'
1194  self.NANODefaultSeq = 'nanoSequenceFS'
1195  self.DQMOFFLINEDefaultCFF="DQMOffline.Configuration.DQMOfflineFS_cff"
1196 
1197  # Mixing
1198  if self._options.pileup=='default':
1199  from Configuration.StandardSequences.Mixing import MixingDefaultKey
1200  self._options.pileup=MixingDefaultKey
1201 
1202 
1203  #not driven by a default cff anymore
1204  if self._options.isData:
1205  self._options.pileup=None
1206 
1207 
1208  self.REDIGIDefaultSeq=self.DIGIDefaultSeq
1209 
def replace(string, replacements)
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
static std::string join(char **cmd)
Definition: RemoteFile.cc:19

◆ executeAndRemember()

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

Definition at line 380 of file ConfigBuilder.py.

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().

380  def executeAndRemember(self, command):
381  """helper routine to remember replace statements"""
382  self.additionalCommands.append(command)
383  if not command.strip().startswith("#"):
384  # substitute: process.foo = process.bar -> self.process.foo = self.process.bar
385  import re
386  exec(re.sub(r"([^a-zA-Z_0-9]|^)(process)([^a-zA-Z_0-9])",r"\1self.process\3",command))
387  #exec(command.replace("process.","self.process."))
388 

◆ expandMapping()

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

Definition at line 2024 of file ConfigBuilder.py.

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().

2024  def expandMapping(self,seqList,mapping,index=None):
2025  maxLevel=30
2026  level=0
2027  while '@' in repr(seqList) and level<maxLevel:
2028  level+=1
2029  for specifiedCommand in seqList:
2030  if specifiedCommand.startswith('@'):
2031  location=specifiedCommand[1:]
2032  if not location in mapping:
2033  raise Exception("Impossible to map "+location+" from "+repr(mapping))
2034  mappedTo=mapping[location]
2035  if index!=None:
2036  mappedTo=mappedTo[index]
2037  seqList.remove(specifiedCommand)
2038  seqList.extend(mappedTo.split('+'))
2039  break;
2040  if level==maxLevel:
2041  raise Exception("Could not fully expand "+repr(seqList)+" from "+repr(mapping))
2042 

◆ finalizeFastSimHLT()

def ConfigBuilder.ConfigBuilder.finalizeFastSimHLT (   self)

Definition at line 2167 of file ConfigBuilder.py.

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().

2167  def finalizeFastSimHLT(self):
2168  self.process.reconstruction = cms.Path(self.process.reconstructionWithFamos)
2169  self.schedule.append(self.process.reconstruction)
2170 
2171 

◆ heapProfileOptions()

def ConfigBuilder.ConfigBuilder.heapProfileOptions (   self)
addJeProfService
Function to add the jemalloc heap  profile service so that you can dump in the middle
of the run.

Definition at line 322 of file ConfigBuilder.py.

References ConfigBuilder.ConfigBuilder._options, alcaDQMUpload.encode(), createfilelist.int, and str.

Referenced by ConfigBuilder.ConfigBuilder.addCommon().

322  def heapProfileOptions(self):
323  """
324  addJeProfService
325  Function to add the jemalloc heap profile service so that you can dump in the middle
326  of the run.
327  """
328  profileOpts = self._options.profile.split(':')
329  profilerStart = 1
330  profilerInterval = 100
331  profilerFormat = None
332  profilerJobFormat = None
333 
334  if len(profileOpts):
335  #type, given as first argument is unused here
336  profileOpts.pop(0)
337  if len(profileOpts):
338  startEvent = profileOpts.pop(0)
339  if not startEvent.isdigit():
340  raise Exception("%s is not a number" % startEvent)
341  profilerStart = int(startEvent)
342  if len(profileOpts):
343  eventInterval = profileOpts.pop(0)
344  if not eventInterval.isdigit():
345  raise Exception("%s is not a number" % eventInterval)
346  profilerInterval = int(eventInterval)
347  if len(profileOpts):
348  profilerFormat = profileOpts.pop(0)
349 
350 
351  if not profilerFormat:
352  profilerFormat = "%s___%s___%%I.heap" % (
353  self._options.evt_type.replace("_cfi", ""),
354  hashlib.md5(
355  (str(self._options.step) + str(self._options.pileup) + str(self._options.conditions) +
356  str(self._options.datatier) + str(self._options.profileTypeLabel)).encode('utf-8')
357  ).hexdigest()
358  )
359  if not profilerJobFormat and profilerFormat.endswith(".heap"):
360  profilerJobFormat = profilerFormat.replace(".heap", "_EndOfJob.heap")
361  elif not profilerJobFormat:
362  profilerJobFormat = profilerFormat + "_EndOfJob.heap"
363 
364  return (profilerStart,profilerInterval,profilerFormat,profilerJobFormat)
365 
def encode(args, files)
#define str(s)

◆ load()

◆ loadAndRemember()

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

Definition at line 371 of file ConfigBuilder.py.

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().

371  def loadAndRemember(self, includeFile):
372  """helper routine to load am memorize imports"""
373  # we could make the imports a on-the-fly data method of the process instance itself
374  # not sure if the latter is a good idea
375  includeFile = includeFile.replace('/','.')
376  self.imports.append(includeFile)
377  self.process.load(includeFile)
378  return sys.modules[includeFile]
379 
def load(fileName)
Definition: svgfig.py:547

◆ loadDefaultOrSpecifiedCFF()

def ConfigBuilder.ConfigBuilder.loadDefaultOrSpecifiedCFF (   self,
  stepSpec,
  defaultCFF,
  defaultSEQ = '' 
)

Definition at line 1276 of file ConfigBuilder.py.

References ConfigBuilder.ConfigBuilder.loadAndRemember(), 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_ENDJOB(), ConfigBuilder.ConfigBuilder.prepare_GEN(), ConfigBuilder.ConfigBuilder.prepare_L1HwVal(), ConfigBuilder.ConfigBuilder.prepare_L1Reco(), ConfigBuilder.ConfigBuilder.prepare_L1TrackTrigger(), ConfigBuilder.ConfigBuilder.prepare_NANO(), ConfigBuilder.ConfigBuilder.prepare_NANOGEN(), 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().

1276  def loadDefaultOrSpecifiedCFF(self, stepSpec, defaultCFF, defaultSEQ=''):
1277  _dotsplit = stepSpec.split('.')
1278  if ( len(_dotsplit)==1 ):
1279  if '/' in _dotsplit[0]:
1280  _sequence = defaultSEQ if defaultSEQ else stepSpec
1281  _cff = _dotsplit[0]
1282  else:
1283  _sequence = stepSpec
1284  _cff = defaultCFF
1285  elif ( len(_dotsplit)==2 ):
1286  _cff,_sequence = _dotsplit
1287  else:
1288  print("sub sequence configuration must be of the form dir/subdir/cff.a+b+c or cff.a")
1289  print(stepSpec,"not recognized")
1290  raise
1291  l=self.loadAndRemember(_cff)
1292  return l,_sequence,_cff
1293 
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47

◆ prepare()

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

Definition at line 2232 of file ConfigBuilder.py.

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, 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.load(), ConfigBuilder.ConfigBuilder.loadAndRemember(), 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.scheduleIndexOfFirstHLTPath, ConfigBuilder.ConfigBuilder.stepMap, str, ConfigBuilder.ConfigBuilder.with_input, and ConfigBuilder.ConfigBuilder.with_output.

2232  def prepare(self, doChecking = False):
2233  """ Prepare the configuration string and add missing pieces."""
2234 
2235  self.loadAndRemember(self.EVTCONTDefaultCFF) #load the event contents regardless
2236  self.addMaxEvents()
2237  if self.with_input:
2238  self.addSource()
2239  self.addStandardSequences()
2240 
2241  self.completeInputCommand()
2242  self.addConditions()
2243 
2244 
2245  outputModuleCfgCode=""
2246  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:
2247  outputModuleCfgCode=self.addOutput()
2248 
2249  self.addCommon()
2250 
2251  self.pythonCfgCode += "# import of standard configurations\n"
2252  for module in self.imports:
2253  self.pythonCfgCode += ("process.load('"+module+"')\n")
2254 
2255  # production info
2256  if not hasattr(self.process,"configurationMetadata"):
2257  self.build_production_info(self._options.evt_type, self._options.number)
2258  else:
2259  #the PSet was added via a load
2260  self.addedObjects.append(("Production Info","configurationMetadata"))
2261 
2262  self.pythonCfgCode +="\n"
2263  for comment,object in self.addedObjects:
2264  if comment!="":
2265  self.pythonCfgCode += "\n# "+comment+"\n"
2266  self.pythonCfgCode += dumpPython(self.process,object)
2267 
2268  # dump the output definition
2269  self.pythonCfgCode += "\n# Output definition\n"
2270  self.pythonCfgCode += outputModuleCfgCode
2271 
2272  # dump all additional outputs (e.g. alca or skim streams)
2273  self.pythonCfgCode += "\n# Additional output definition\n"
2274  #I do not understand why the keys are not normally ordered.
2275  nl=sorted(self.additionalOutputs.keys())
2276  for name in nl:
2277  output = self.additionalOutputs[name]
2278  self.pythonCfgCode += "process.%s = %s" %(name, output.dumpPython())
2279  tmpOut = cms.EndPath(output)
2280  setattr(self.process,name+'OutPath',tmpOut)
2281  self.schedule.append(tmpOut)
2282 
2283  # dump all additional commands
2284  self.pythonCfgCode += "\n# Other statements\n"
2285  for command in self.additionalCommands:
2286  self.pythonCfgCode += command + "\n"
2287 
2288  #comma separated list of objects that deserve to be inlined in the configuration (typically from a modified config deep down)
2289  for object in self._options.inlineObjets.split(','):
2290  if not object:
2291  continue
2292  if not hasattr(self.process,object):
2293  print('cannot inline -'+object+'- : not known')
2294  else:
2295  self.pythonCfgCode +='\n'
2296  self.pythonCfgCode +=dumpPython(self.process,object)
2297 
2298  if self._options.pileup=='HiMixEmbGEN':
2299  self.pythonCfgCode += "\nprocess.generator.embeddingMode=cms.int32(1)\n"
2300 
2301  # dump all paths
2302  self.pythonCfgCode += "\n# Path and EndPath definitions\n"
2303  for path in self.process.paths:
2304  if getattr(self.process,path) not in self.blacklist_paths:
2305  self.pythonCfgCode += dumpPython(self.process,path)
2306 
2307  for endpath in self.process.endpaths:
2308  if getattr(self.process,endpath) not in self.blacklist_paths:
2309  self.pythonCfgCode += dumpPython(self.process,endpath)
2310 
2311  # dump the schedule
2312  self.pythonCfgCode += "\n# Schedule definition\n"
2313 
2314  # handling of the schedule
2315  pathNames = ['process.'+p.label_() for p in self.schedule]
2316  if self.process.schedule == None:
2317  self.process.schedule = cms.Schedule()
2318  for item in self.schedule:
2319  self.process.schedule.append(item)
2320  result = 'process.schedule = cms.Schedule('+','.join(pathNames)+')\n'
2321  else:
2322  if not isinstance(self.scheduleIndexOfFirstHLTPath, int):
2323  raise Exception('the schedule was imported from a cff in HLTrigger.Configuration, but the final index of the first HLT path is undefined')
2324 
2325  for index, item in enumerate(self.schedule):
2326  if index < self.scheduleIndexOfFirstHLTPath:
2327  self.process.schedule.insert(index, item)
2328  else:
2329  self.process.schedule.append(item)
2330 
2331  result = "# process.schedule imported from cff in HLTrigger.Configuration\n"
2332  for index, item in enumerate(pathNames[:self.scheduleIndexOfFirstHLTPath]):
2333  result += 'process.schedule.insert('+str(index)+', '+item+')\n'
2334  if self.scheduleIndexOfFirstHLTPath < len(pathNames):
2335  result += 'process.schedule.extend(['+','.join(pathNames[self.scheduleIndexOfFirstHLTPath:])+'])\n'
2336 
2337  self.pythonCfgCode += result
2338 
2339  for labelToAssociate in self.labelsToAssociate:
2340  self.process.schedule.associate(getattr(self.process, labelToAssociate))
2341  self.pythonCfgCode += 'process.schedule.associate(process.' + labelToAssociate + ')\n'
2342 
2343  from PhysicsTools.PatAlgos.tools.helpers import associatePatAlgosToolsTask
2344  associatePatAlgosToolsTask(self.process)
2345  self.pythonCfgCode+="from PhysicsTools.PatAlgos.tools.helpers import associatePatAlgosToolsTask\n"
2346  self.pythonCfgCode+="associatePatAlgosToolsTask(process)\n"
2347 
2348  overrideThreads = (self._options.nThreads != "1")
2349  overrideConcurrentLumis = (self._options.nConcurrentLumis != defaultOptions.nConcurrentLumis)
2350  overrideConcurrentIOVs = (self._options.nConcurrentIOVs != defaultOptions.nConcurrentIOVs)
2351 
2352  if overrideThreads or overrideConcurrentLumis or overrideConcurrentIOVs:
2353  self.pythonCfgCode +="\n"
2354  self.pythonCfgCode +="#Setup FWK for multithreaded\n"
2355  if overrideThreads:
2356  self.pythonCfgCode +="process.options.numberOfThreads = "+self._options.nThreads+"\n"
2357  self.pythonCfgCode +="process.options.numberOfStreams = "+self._options.nStreams+"\n"
2358  self.process.options.numberOfThreads = int(self._options.nThreads)
2359  self.process.options.numberOfStreams = int(self._options.nStreams)
2360  if overrideConcurrentLumis:
2361  self.pythonCfgCode +="process.options.numberOfConcurrentLuminosityBlocks = "+self._options.nConcurrentLumis+"\n"
2362  self.process.options.numberOfConcurrentLuminosityBlocks = int(self._options.nConcurrentLumis)
2363  if overrideConcurrentIOVs:
2364  self.pythonCfgCode +="process.options.eventSetup.numberOfConcurrentIOVs = "+self._options.nConcurrentIOVs+"\n"
2365  self.process.options.eventSetup.numberOfConcurrentIOVs = int(self._options.nConcurrentIOVs)
2366 
2367  if self._options.accelerators is not None:
2368  accelerators = self._options.accelerators.split(',')
2369  self.pythonCfgCode += "\n"
2370  self.pythonCfgCode += "# Enable only these accelerator backends\n"
2371  self.pythonCfgCode += "process.load('Configuration.StandardSequences.Accelerators_cff')\n"
2372  self.pythonCfgCode += "process.options.accelerators = ['" + "', '".join(accelerators) + "']\n"
2373  self.process.load('Configuration.StandardSequences.Accelerators_cff')
2374  self.process.options.accelerators = accelerators
2375 
2376  #repacked version
2377  if self._options.isRepacked:
2378  self.pythonCfgCode +="\n"
2379  self.pythonCfgCode +="from Configuration.Applications.ConfigBuilder import MassReplaceInputTag\n"
2380  self.pythonCfgCode +="MassReplaceInputTag(process, new=\"rawDataMapperByLabel\", old=\"rawDataCollector\")\n"
2381  MassReplaceInputTag(self.process, new="rawDataMapperByLabel", old="rawDataCollector")
2382 
2383  # special treatment in case of production filter sequence 2/2
2384  if self.productionFilterSequence and not (self._options.pileup=='HiMixEmbGEN'):
2385  self.pythonCfgCode +='# filter all path with the production filter sequence\n'
2386  self.pythonCfgCode +='for path in process.paths:\n'
2387  if len(self.conditionalPaths):
2388  self.pythonCfgCode +='\tif not path in %s: continue\n'%str(self.conditionalPaths)
2389  if len(self.excludedPaths):
2390  self.pythonCfgCode +='\tif path in %s: continue\n'%str(self.excludedPaths)
2391  self.pythonCfgCode +='\tgetattr(process,path).insert(0, process.%s)\n'%(self.productionFilterSequence,)
2392  pfs = getattr(self.process,self.productionFilterSequence)
2393  for path in self.process.paths:
2394  if not path in self.conditionalPaths: continue
2395  if path in self.excludedPaths: continue
2396  getattr(self.process,path).insert(0, pfs)
2397 
2398 
2399  # dump customise fragment
2400  self.pythonCfgCode += self.addCustomise()
2401 
2402  if self._options.runUnscheduled:
2403  print("--runUnscheduled is deprecated and not necessary anymore, and will be removed soon. Please update your command line.")
2404  # Keep the "unscheduled customise functions" separate for now,
2405  # there are customize functions given by users (in our unit
2406  # tests) that need to be run before the "unscheduled customise
2407  # functions"
2408  self.pythonCfgCode += self.addCustomise(1)
2409 
2410  self.pythonCfgCode += self.addCustomiseCmdLine()
2411 
2412  if hasattr(self.process,"logErrorHarvester"):
2413  #configure logErrorHarvester to wait for same EDProducers to finish as the OutputModules
2414  self.pythonCfgCode +="\n#Have logErrorHarvester wait for the same EDProducers to finish as those providing data for the OutputModule\n"
2415  self.pythonCfgCode +="from FWCore.Modules.logErrorHarvester_cff import customiseLogErrorHarvesterUsingOutputCommands\n"
2416  self.pythonCfgCode +="process = customiseLogErrorHarvesterUsingOutputCommands(process)\n"
2417  from FWCore.Modules.logErrorHarvester_cff import customiseLogErrorHarvesterUsingOutputCommands
2418  self.process = customiseLogErrorHarvesterUsingOutputCommands(self.process)
2419 
2420  # Temporary hack to put the early delete customization after
2421  # everything else
2422  #
2423  # FIXME: remove when no longer needed
2424  self.pythonCfgCode += "\n# Add early deletion of temporary data products to reduce peak memory need\n"
2425  self.pythonCfgCode += "from Configuration.StandardSequences.earlyDeleteSettings_cff import customiseEarlyDelete\n"
2426  self.pythonCfgCode += "process = customiseEarlyDelete(process)\n"
2427  self.pythonCfgCode += "# End adding early deletion\n"
2428  from Configuration.StandardSequences.earlyDeleteSettings_cff import customiseEarlyDelete
2429  self.process = customiseEarlyDelete(self.process)
2430 
2431  imports = cms.specialImportRegistry.getSpecialImports()
2432  if len(imports) > 0:
2433  #need to inject this at the top
2434  index = self.pythonCfgCode.find("import FWCore.ParameterSet.Config")
2435  #now find the end of line
2436  index = self.pythonCfgCode.find("\n",index)
2437  self.pythonCfgCode = self.pythonCfgCode[:index]+ "\n" + "\n".join(imports)+"\n" +self.pythonCfgCode[index:]
2438 
2439 
2440  # make the .io file
2441 
2442  if self._options.io:
2443  #io=open(self._options.python_filename.replace('.py','.io'),'w')
2444  if not self._options.io.endswith('.io'): self._option.io+='.io'
2445  io=open(self._options.io,'w')
2446  ioJson={}
2447  if hasattr(self.process.source,"fileNames"):
2448  if len(self.process.source.fileNames.value()):
2449  ioJson['primary']=self.process.source.fileNames.value()
2450  if hasattr(self.process.source,"secondaryFileNames"):
2451  if len(self.process.source.secondaryFileNames.value()):
2452  ioJson['secondary']=self.process.source.secondaryFileNames.value()
2453  if self._options.pileup_input and (self._options.pileup_input.startswith('dbs:') or self._options.pileup_input.startswith('das:')):
2454  ioJson['pileup']=self._options.pileup_input[4:]
2455  for (o,om) in self.process.outputModules_().items():
2456  ioJson[o]=om.fileName.value()
2457  ioJson['GT']=self.process.GlobalTag.globaltag.value()
2458  if self.productionFilterSequence:
2459  ioJson['filter']=self.productionFilterSequence
2460  import json
2461  io.write(json.dumps(ioJson))
2462  return
2463 
2464 
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
bool insert(Storage &iStorage, ItemType *iItem, const IdTag &iIdTag)
Definition: HCMethods.h:50
static std::string join(char **cmd)
Definition: RemoteFile.cc:19
def load(fileName)
Definition: svgfig.py:547
def dumpPython(process, name)
def associatePatAlgosToolsTask(process)
Definition: helpers.py:24
#define str(s)
def customiseLogErrorHarvesterUsingOutputCommands(process)

◆ prepare_ALCA()

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

Definition at line 1333 of file ConfigBuilder.py.

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

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

1333  def prepare_ALCA(self, stepSpec = None, workflow = 'full'):
1334  """ Enrich the process with alca streams """
1335  alcaConfig,sequence,_=self.loadDefaultOrSpecifiedCFF(stepSpec,self.ALCADefaultCFF)
1336 
1337  MAXLEN=31 #the alca producer name should be shorter than 31 chars as per https://cms-talk.web.cern.ch/t/alcaprompt-datasets-not-loaded-in-dbs/11146/2
1338  # decide which ALCA paths to use
1339  alcaList = sequence.split("+")
1340  for alca in alcaList:
1341  if (len(alca)>MAXLEN):
1342  raise Exception("The following alca "+str(alca)+" name (with length "+str(len(alca))+" chars) cannot be accepted because it exceeds the DBS constraints on the length of the name of the ALCARECOs producers ("+str(MAXLEN)+")!")
1343 
1344  maxLevel=0
1345  from Configuration.AlCa.autoAlca import autoAlca, AlCaNoConcurrentLumis
1346  # support @X from autoAlca.py, and recursion support: i.e T0:@Mu+@EG+...
1347  self.expandMapping(alcaList,autoAlca)
1348  self.AlCaPaths=[]
1349  for name in alcaConfig.__dict__:
1350  alcastream = getattr(alcaConfig,name)
1351  shortName = name.replace('ALCARECOStream','')
1352  if shortName in alcaList and isinstance(alcastream,cms.FilteredStream):
1353  if shortName in AlCaNoConcurrentLumis:
1354  print("Setting numberOfConcurrentLuminosityBlocks=1 because of AlCa sequence {}".format(shortName))
1355  self._options.nConcurrentLumis = "1"
1356  self._options.nConcurrentIOVs = "1"
1357  output = self.addExtraStream(name,alcastream, workflow = workflow)
1358  self.executeAndRemember('process.ALCARECOEventContent.outputCommands.extend(process.OutALCARECO'+shortName+'_noDrop.outputCommands)')
1359  self.AlCaPaths.append(shortName)
1360  if 'DQM' in alcaList:
1361  if not self._options.inlineEventContent and hasattr(self.process,name):
1362  self.executeAndRemember('process.' + name + '.outputCommands.append("keep *_MEtoEDMConverter_*_*")')
1363  else:
1364  output.outputCommands.append("keep *_MEtoEDMConverter_*_*")
1365 
1366  #rename the HLT process name in the alca modules
1367  if self._options.hltProcess or 'HLT' in self.stepMap:
1368  if isinstance(alcastream.paths,tuple):
1369  for path in alcastream.paths:
1370  self.renameHLTprocessInSequence(path.label())
1371  else:
1372  self.renameHLTprocessInSequence(alcastream.paths.label())
1373 
1374  for i in range(alcaList.count(shortName)):
1375  alcaList.remove(shortName)
1376 
1377  # DQM needs a special handling
1378  elif name == 'pathALCARECODQM' and 'DQM' in alcaList:
1379  path = getattr(alcaConfig,name)
1380  self.schedule.append(path)
1381  alcaList.remove('DQM')
1382 
1383  if isinstance(alcastream,cms.Path):
1384  #black list the alca path so that they do not appear in the cfg
1385  self.blacklist_paths.append(alcastream)
1386 
1387 
1388  if len(alcaList) != 0:
1389  available=[]
1390  for name in alcaConfig.__dict__:
1391  alcastream = getattr(alcaConfig,name)
1392  if isinstance(alcastream,cms.FilteredStream):
1393  available.append(name.replace('ALCARECOStream',''))
1394  print("The following alcas could not be found "+str(alcaList))
1395  print("available ",available)
1396  #print "verify your configuration, ignoring for now"
1397  raise Exception("The following alcas could not be found "+str(alcaList))
1398 
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
#define str(s)

◆ prepare_ALCAHARVEST()

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

Definition at line 2127 of file ConfigBuilder.py.

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

2127  def prepare_ALCAHARVEST(self, stepSpec = None):
2128  """ Enrich the process with AlCaHarvesting step """
2129  harvestingConfig = self.loadAndRemember(self.ALCAHARVESTDefaultCFF)
2130  sequence=stepSpec.split(".")[-1]
2131 
2132  # decide which AlcaHARVESTING paths to use
2133  harvestingList = sequence.split("+")
2134 
2135 
2136 
2137  from Configuration.AlCa.autoPCL import autoPCL
2138  self.expandMapping(harvestingList,autoPCL)
2139 
2140  for name in harvestingConfig.__dict__:
2141  harvestingstream = getattr(harvestingConfig,name)
2142  if name in harvestingList and isinstance(harvestingstream,cms.Path):
2143  self.schedule.append(harvestingstream)
2144  if isinstance(getattr(harvestingConfig,"ALCAHARVEST" + name + "_dbOutput"), cms.VPSet) and \
2145  isinstance(getattr(harvestingConfig,"ALCAHARVEST" + name + "_metadata"), cms.VPSet):
2146  self.executeAndRemember("process.PoolDBOutputService.toPut.extend(process.ALCAHARVEST" + name + "_dbOutput)")
2147  self.executeAndRemember("process.pclMetadataWriter.recordsToMap.extend(process.ALCAHARVEST" + name + "_metadata)")
2148  else:
2149  self.executeAndRemember("process.PoolDBOutputService.toPut.append(process.ALCAHARVEST" + name + "_dbOutput)")
2150  self.executeAndRemember("process.pclMetadataWriter.recordsToMap.append(process.ALCAHARVEST" + name + "_metadata)")
2151  harvestingList.remove(name)
2152  # append the common part at the end of the sequence
2153  lastStep = getattr(harvestingConfig,"ALCAHARVESTDQMSaveAndMetadataWriter")
2154  self.schedule.append(lastStep)
2155 
2156  if len(harvestingList) != 0 and 'dummyHarvesting' not in harvestingList :
2157  print("The following harvesting could not be found : ", harvestingList)
2158  raise Exception("The following harvesting could not be found : "+str(harvestingList))
2159 
2160 
2161 
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
#define str(s)

◆ prepare_ALCAOUTPUT()

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

Definition at line 1330 of file ConfigBuilder.py.

References ConfigBuilder.ConfigBuilder.prepare_ALCA().

Referenced by ConfigBuilder.ConfigBuilder.prepare_ALCAPRODUCER().

1330  def prepare_ALCAOUTPUT(self, stepSpec = None):
1331  self.prepare_ALCA(stepSpec, workflow = "output")
1332 

◆ prepare_ALCAPRODUCER()

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

Definition at line 1327 of file ConfigBuilder.py.

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

Referenced by ConfigBuilder.ConfigBuilder.scheduleSequenceAtEnd().

1327  def prepare_ALCAPRODUCER(self, stepSpec = None):
1328  self.prepare_ALCA(stepSpec, workflow = "producers")
1329 

◆ prepare_CFWRITER()

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

Definition at line 1541 of file ConfigBuilder.py.

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

Referenced by ConfigBuilder.ConfigBuilder.prepare_DIGI().

1541  def prepare_CFWRITER(self, stepSpec = None):
1542  """ Enrich the schedule with the crossing frame writer step"""
1543  self.loadAndRemember(self.CFWRITERDefaultCFF)
1544  self.scheduleSequence('pcfw','cfwriter_step')
1545  return
1546 

◆ prepare_DATAMIX()

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

Definition at line 1547 of file ConfigBuilder.py.

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().

1547  def prepare_DATAMIX(self, stepSpec = None):
1548  """ Enrich the schedule with the digitisation step"""
1549  self.loadAndRemember(self.DATAMIXDefaultCFF)
1550  self.scheduleSequence('pdatamix','datamixing_step')
1551 
1552  if self._options.pileup_input:
1553  theFiles=''
1554  if self._options.pileup_input.startswith('dbs:') or self._options.pileup_input.startswith('das:'):
1555  theFiles=filesFromDASQuery('file dataset = %s'%(self._options.pileup_input[4:],),self._options.pileup_dasoption)[0]
1556  elif self._options.pileup_input.startswith("filelist:"):
1557  theFiles= (filesFromList(self._options.pileup_input[9:]))[0]
1558  else:
1559  theFiles=self._options.pileup_input.split(',')
1560  #print theFiles
1561  self.executeAndRemember( "process.mixData.input.fileNames = cms.untracked.vstring(%s)"%( theFiles ) )
1562 
1563  return
1564 
def filesFromDASQuery(query, option="", s=None)
def filesFromList(fileName, s=None)

◆ prepare_DIGI()

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

Definition at line 1521 of file ConfigBuilder.py.

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().

1521  def prepare_DIGI(self, stepSpec = None):
1522  """ Enrich the schedule with the digitisation step"""
1523  _,_digiSeq,_ = self.loadDefaultOrSpecifiedCFF(stepSpec,self.DIGIDefaultCFF)
1524 
1525  if self._options.gflash==True:
1526  self.loadAndRemember("Configuration/StandardSequences/GFlashDIGI_cff")
1527 
1528  if _digiSeq == 'pdigi_valid' or _digiSeq == 'pdigi_hi':
1529  self.executeAndRemember("process.mix.digitizers = cms.PSet(process.theDigitizersValid)")
1530 
1531  if _digiSeq != 'pdigi_nogen' and _digiSeq != 'pdigi_valid_nogen' and _digiSeq != 'pdigi_hi_nogen' and not self.process.source.type_()=='EmptySource' and not self._options.filetype == "LHE":
1532  if self._options.inputEventContent=='':
1533  self._options.inputEventContent='REGEN'
1534  else:
1535  self._options.inputEventContent=self._options.inputEventContent+',REGEN'
1536 
1537 
1538  self.scheduleSequence(_digiSeq,'digitisation_step')
1539  return
1540 

◆ prepare_DIGI2RAW()

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

Definition at line 1565 of file ConfigBuilder.py.

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

Referenced by ConfigBuilder.ConfigBuilder.prepare_DATAMIX().

1565  def prepare_DIGI2RAW(self, stepSpec = None):
1566  _,_digi2rawSeq,_ = self.loadDefaultOrSpecifiedCFF(stepSpec,self.DIGI2RAWDefaultCFF)
1567  self.scheduleSequence(_digi2rawSeq,'digi2raw_step')
1568  return
1569 

◆ prepare_DQM()

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

Definition at line 2043 of file ConfigBuilder.py.

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

Referenced by ConfigBuilder.ConfigBuilder.expandMapping().

2043  def prepare_DQM(self, stepSpec = 'DQMOffline'):
2044  # this one needs replacement
2045 
2046  # any 'DQM' job should use DQMStore in non-legacy mode (but not HARVESTING)
2047  self.loadAndRemember("DQMServices/Core/DQMStoreNonLegacy_cff")
2048  _,_dqmSeq,_ = self.loadDefaultOrSpecifiedCFF(stepSpec,self.DQMOFFLINEDefaultCFF)
2049  sequenceList=_dqmSeq.split('+')
2050  postSequenceList=_dqmSeq.split('+')
2051  from DQMOffline.Configuration.autoDQM import autoDQM
2052  self.expandMapping(sequenceList,autoDQM,index=0)
2053  self.expandMapping(postSequenceList,autoDQM,index=1)
2054 
2055  if len(set(sequenceList))!=len(sequenceList):
2056  sequenceList=list(OrderedSet(sequenceList))
2057  print("Duplicate entries for DQM:, using",sequenceList)
2058 
2059  pathName='dqmoffline_step'
2060  for (i,_sequence) in enumerate(sequenceList):
2061  if (i!=0):
2062  pathName='dqmoffline_%d_step'%(i)
2063 
2064  if 'HLT' in self.stepMap.keys() or self._options.hltProcess:
2065  self.renameHLTprocessInSequence(_sequence)
2066 
2067  setattr(self.process,pathName, cms.EndPath( getattr(self.process,_sequence ) ) )
2068  self.schedule.append(getattr(self.process,pathName))
2069 
2070  if hasattr(self.process,"genstepfilter") and len(self.process.genstepfilter.triggerConditions):
2071  #will get in the schedule, smoothly
2072  getattr(self.process,pathName).insert(0,self.process.genstepfilter)
2073 
2074 
2075  pathName='dqmofflineOnPAT_step'
2076  for (i,_sequence) in enumerate(postSequenceList):
2077  #Fix needed to avoid duplication of sequences not defined in autoDQM or without a PostDQM
2078  if (sequenceList[i]==postSequenceList[i]):
2079  continue
2080  if (i!=0):
2081  pathName='dqmofflineOnPAT_%d_step'%(i)
2082 
2083  setattr(self.process,pathName, cms.EndPath( getattr(self.process, _sequence ) ) )
2084  self.schedule.append(getattr(self.process,pathName))
2085 
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
bool insert(Storage &iStorage, ItemType *iItem, const IdTag &iIdTag)
Definition: HCMethods.h:50

◆ prepare_ENDJOB()

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

Definition at line 2162 of file ConfigBuilder.py.

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

Referenced by ConfigBuilder.ConfigBuilder.prepare_ALCAHARVEST().

2162  def prepare_ENDJOB(self, stepSpec = 'endOfProcess'):
2163  _,_endjobSeq,_=self.loadDefaultOrSpecifiedCFF(stepSpec,self.ENDJOBDefaultCFF)
2164  self.scheduleSequenceAtEnd(_endjobSeq,'endjob_step')
2165  return
2166 

◆ prepare_FILTER()

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

Definition at line 1691 of file ConfigBuilder.py.

References ConfigBuilder.ConfigBuilder.__init__(), ConfigBuilder.ConfigBuilder.inliner, VisualizationOptions.load(), BTagCalibrationReader::BTagCalibrationReaderImpl.load(), BTagCalibrationReader.load(), CSCL1TPLookupTableEP.load(), cond::persistency::GTEditor.load(), L1MuDTPtaLut.load(), L1MuDTPhiLut.load(), cond::persistency::IOVEditor.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().

1691  def prepare_FILTER(self, stepSpec = None):
1692  ''' Enrich the schedule with a user defined filter sequence '''
1693 
1694  filterConfig,filterSeq = stepSpec.split('.')
1695  filterConfig=self.load(filterConfig)
1696 
1697  class PrintAllModules(object):
1698  def __init__(self):
1699  self.inliner=''
1700  pass
1701  def enter(self,visitee):
1702  try:
1703  label=visitee.label()
1704 
1705  self.inliner=label+','+self.inliner
1706  except:
1707  pass
1708  def leave(self,v): pass
1709 
1710  expander=PrintAllModules()
1711  getattr(self.process,filterSeq).visit( expander )
1712  self._options.inlineObjets+=','+expander.inliner
1713  self._options.inlineObjets+=','+filterSeq
1714 
1715 
1716  self.scheduleSequence(filterSeq,'filtering_step')
1717  self.nextScheduleIsConditional=True
1718 
1719  self.productionFilterSequence = filterSeq
1720 
1721  return
1722 
def __init__(self, dataset, job_number, job_id, job_name, isDA, isMC, applyBOWS, applyEXTRACOND, extraconditions, runboundary, lumilist, intlumi, maxevents, gt, allFromGT, alignmentDB, alignmentTAG, apeDB, apeTAG, bowDB, bowTAG, vertextype, tracktype, refittertype, ttrhtype, applyruncontrol, ptcut, CMSSW_dir, the_dir)

◆ prepare_GEN()

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

Definition at line 1416 of file ConfigBuilder.py.

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(), 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.

1416  def prepare_GEN(self, stepSpec = None):
1417  """ load the fragment of generator configuration """
1418  loadFailure=False
1419  #remove trailing .py
1420  #support old style .cfi by changing into something.cfi into something_cfi
1421  #remove python/ from the name
1422  loadFragment = self._options.evt_type.replace('.py','',).replace('.','_').replace('python/','')
1423  #standard location of fragments
1424  if not '/' in loadFragment:
1425  loadFragment='Configuration.Generator.'+loadFragment
1426  else:
1427  loadFragment=loadFragment.replace('/','.')
1428  try:
1429  print("Loading generator fragment from",loadFragment)
1430  __import__(loadFragment)
1431  except:
1432  loadFailure=True
1433  #if self.process.source and self.process.source.type_()=='EmptySource':
1434  if not (self._options.filein or self._options.dasquery):
1435  raise Exception("Neither gen fragment of input files provided: this is an inconsistent GEN step configuration")
1436 
1437  if not loadFailure:
1438  from Configuration.Generator.concurrentLumisDisable import noConcurrentLumiGenerators
1439 
1440  generatorModule=sys.modules[loadFragment]
1441  genModules=generatorModule.__dict__
1442  #remove lhe producer module since this should have been
1443  #imported instead in the LHE step
1444  if self.LHEDefaultSeq in genModules:
1445  del genModules[self.LHEDefaultSeq]
1446 
1447  if self._options.hideGen:
1448  self.loadAndRemember(loadFragment)
1449  else:
1450  self.process.load(loadFragment)
1451  # expose the objects from that fragment to the configuration
1452  import FWCore.ParameterSet.Modules as cmstypes
1453  for name in genModules:
1454  theObject = getattr(generatorModule,name)
1455  if isinstance(theObject, cmstypes._Module):
1456  self._options.inlineObjets=name+','+self._options.inlineObjets
1457  if theObject.type_() in noConcurrentLumiGenerators:
1458  print("Setting numberOfConcurrentLuminosityBlocks=1 because of generator {}".format(theObject.type_()))
1459  self._options.nConcurrentLumis = "1"
1460  self._options.nConcurrentIOVs = "1"
1461  elif isinstance(theObject, cms.Sequence) or isinstance(theObject, cmstypes.ESProducer):
1462  self._options.inlineObjets+=','+name
1463 
1464  if stepSpec == self.GENDefaultSeq or stepSpec == 'pgen_genonly' or stepSpec == 'pgen_smear':
1465  if 'ProductionFilterSequence' in genModules and ('generator' in genModules):
1466  self.productionFilterSequence = 'ProductionFilterSequence'
1467  elif 'generator' in genModules:
1468  self.productionFilterSequence = 'generator'
1469 
1470  """ Enrich the schedule with the rest of the generation step """
1471  _,_genSeqName,_=self.loadDefaultOrSpecifiedCFF(stepSpec,self.GENDefaultCFF)
1472 
1473  if True:
1474  try:
1475  from Configuration.StandardSequences.VtxSmeared import VtxSmeared
1476  cffToBeLoaded=VtxSmeared[self._options.beamspot]
1477  self.loadAndRemember(cffToBeLoaded)
1478  except ImportError:
1479  raise Exception("VertexSmearing type or beamspot "+self._options.beamspot+" unknown.")
1480 
1481  if self._options.scenario == 'HeavyIons':
1482  if self._options.pileup=='HiMixGEN':
1483  self.loadAndRemember("Configuration/StandardSequences/GeneratorMix_cff")
1484  elif self._options.pileup=='HiMixEmbGEN':
1485  self.loadAndRemember("Configuration/StandardSequences/GeneratorEmbMix_cff")
1486  else:
1487  self.loadAndRemember("Configuration/StandardSequences/GeneratorHI_cff")
1488 
1489  self.process.generation_step = cms.Path( getattr(self.process,_genSeqName) )
1490  self.schedule.append(self.process.generation_step)
1491 
1492  #register to the genstepfilter the name of the path (static right now, but might evolve)
1493  self.executeAndRemember('process.genstepfilter.triggerConditions=cms.vstring("generation_step")')
1494 
1495  if 'reGEN' in self.stepMap:
1496  #stop here
1497  return
1498 
1499  """ Enrich the schedule with the summary of the filter step """
1500  #the gen filter in the endpath
1501  self.loadAndRemember("GeneratorInterface/Core/genFilterSummary_cff")
1502  self.scheduleSequenceAtEnd('genFilterSummary','genfiltersummary_step')
1503  return
1504 
def replace(string, replacements)
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
def load(fileName)
Definition: svgfig.py:547

◆ prepare_HARVESTING()

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

Definition at line 2086 of file ConfigBuilder.py.

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

Referenced by ConfigBuilder.ConfigBuilder.prepare_DQM().

2086  def prepare_HARVESTING(self, stepSpec = None):
2087  """ Enrich the process with harvesting step """
2088  self.DQMSaverCFF='Configuration/StandardSequences/DQMSaver'+self._options.harvesting+'_cff'
2089  self.loadAndRemember(self.DQMSaverCFF)
2090 
2091  harvestingConfig,sequence,_ = self.loadDefaultOrSpecifiedCFF(stepSpec,self.HARVESTINGDefaultCFF)
2092 
2093  # decide which HARVESTING paths to use
2094  harvestingList = sequence.split("+")
2095  from DQMOffline.Configuration.autoDQM import autoDQM
2096  from Validation.Configuration.autoValidation import autoValidation
2097  import copy
2098  combined_mapping = copy.deepcopy( autoDQM )
2099  combined_mapping.update( autoValidation )
2100  self.expandMapping(harvestingList,combined_mapping,index=-1)
2101 
2102  if len(set(harvestingList))!=len(harvestingList):
2103  harvestingList=list(OrderedSet(harvestingList))
2104  print("Duplicate entries for HARVESTING, using",harvestingList)
2105 
2106  for name in harvestingList:
2107  if not name in harvestingConfig.__dict__:
2108  print(name,"is not a possible harvesting type. Available are",harvestingConfig.__dict__.keys())
2109  # trigger hard error, like for other sequence types
2110  getattr(self.process, name)
2111  continue
2112  harvestingstream = getattr(harvestingConfig,name)
2113  if isinstance(harvestingstream,cms.Path):
2114  self.schedule.append(harvestingstream)
2115  self.blacklist_paths.append(harvestingstream)
2116  if isinstance(harvestingstream,cms.Sequence):
2117  setattr(self.process,name+"_step",cms.Path(harvestingstream))
2118  self.schedule.append(getattr(self.process,name+"_step"))
2119 
2120  # # NOTE: the "hltProcess" option currently does nothing in the HARVEST step
2121  # if self._options.hltProcess or ('HLT' in self.stepMap):
2122  # pass
2123 
2124  self.scheduleSequence('DQMSaver','dqmsave_step')
2125  return
2126 
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47

◆ prepare_HLT()

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

Definition at line 1594 of file ConfigBuilder.py.

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(), print(), DTT0WireWorkflow.DTT0WireWorkflow.process, DTVdriftWorkflow.DTvdriftWorkflow.process, DTTtrigWorkflow.DTttrigWorkflow.process, DTWorkflow.DTWorkflow.process, ConfigBuilder.ConfigBuilder.process, CustomConfigs.ProcessName(), ConfigBuilder.ConfigBuilder.schedule, and ConfigBuilder.ConfigBuilder.scheduleIndexOfFirstHLTPath.

Referenced by ConfigBuilder.ConfigBuilder.prepare_L1REPACK().

1594  def prepare_HLT(self, stepSpec = None):
1595  """ Enrich the schedule with the HLT simulation step"""
1596  if not stepSpec:
1597  print("no specification of the hlt menu has been given, should never happen")
1598  raise Exception('no HLT specifications provided')
1599 
1600  if '@' in stepSpec:
1601  # case where HLT:@something was provided
1602  from Configuration.HLT.autoHLT import autoHLT
1603  key = stepSpec[1:]
1604  if key in autoHLT:
1605  stepSpec = autoHLT[key]
1606  else:
1607  raise ValueError('no HLT mapping key "%s" found in autoHLT' % key)
1608 
1609  if ',' in stepSpec:
1610  #case where HLT:something:something was provided
1611  self.executeAndRemember('import HLTrigger.Configuration.Utilities')
1612  optionsForHLT = {}
1613  if self._options.scenario == 'HeavyIons':
1614  optionsForHLT['type'] = 'HIon'
1615  else:
1616  optionsForHLT['type'] = 'GRun'
1617  optionsForHLTConfig = ', '.join('%s=%s' % (key, repr(val)) for (key, val) in optionsForHLT.items())
1618  if stepSpec == 'run,fromSource':
1619  if hasattr(self.process.source,'firstRun'):
1620  self.executeAndRemember('process.loadHltConfiguration("run:%%d"%%(process.source.firstRun.value()),%s)'%(optionsForHLTConfig))
1621  elif hasattr(self.process.source,'setRunNumber'):
1622  self.executeAndRemember('process.loadHltConfiguration("run:%%d"%%(process.source.setRunNumber.value()),%s)'%(optionsForHLTConfig))
1623  else:
1624  raise Exception(f'Cannot replace menu to load {stepSpec}')
1625  else:
1626  self.executeAndRemember('process.loadHltConfiguration("%s",%s)'%(stepSpec.replace(',',':'),optionsForHLTConfig))
1627  else:
1628  self.loadAndRemember('HLTrigger/Configuration/HLT_%s_cff' % stepSpec)
1629 
1630  if self._options.isMC:
1631  self._options.customisation_file.append("HLTrigger/Configuration/customizeHLTforMC.customizeHLTforMC")
1632 
1633  if self._options.name != 'HLT':
1634  self.additionalCommands.append('from HLTrigger.Configuration.CustomConfigs import ProcessName')
1635  self.additionalCommands.append('process = ProcessName(process)')
1636  self.additionalCommands.append('')
1637  from HLTrigger.Configuration.CustomConfigs import ProcessName
1638  self.process = ProcessName(self.process)
1639 
1640  if self.process.schedule == None:
1641  raise Exception('the HLT step did not attach a valid schedule to the process')
1642 
1643  self.scheduleIndexOfFirstHLTPath = len(self.schedule)
1644  [self.blacklist_paths.append(path) for path in self.process.schedule if isinstance(path,(cms.Path,cms.EndPath))]
1645 
1646  # this is a fake, to be removed with fastim migration and HLT menu dump
1647  if self._options.fast:
1648  if not hasattr(self.process,'HLTEndSequence'):
1649  self.executeAndRemember("process.HLTEndSequence = cms.Sequence( process.dummyModule )")
1650 
1651 
def ProcessName(process)
Definition: CustomConfigs.py:6
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
static std::string join(char **cmd)
Definition: RemoteFile.cc:19

◆ prepare_L1()

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

Definition at line 1575 of file ConfigBuilder.py.

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

Referenced by ConfigBuilder.ConfigBuilder.prepare_REPACK().

1575  def prepare_L1(self, stepSpec = None):
1576  """ Enrich the schedule with the L1 simulation step"""
1577  assert(stepSpec == None)
1578  self.loadAndRemember(self.L1EMDefaultCFF)
1579  self.scheduleSequence('SimL1Emulator','L1simulation_step')
1580  return
1581 
assert(be >=bs)

◆ prepare_L1HwVal()

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

Definition at line 1673 of file ConfigBuilder.py.

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

Referenced by ConfigBuilder.ConfigBuilder.prepare_PATFILTER().

1673  def prepare_L1HwVal(self, stepSpec = 'L1HwVal'):
1674  ''' Enrich the schedule with L1 HW validation '''
1675  self.loadDefaultOrSpecifiedCFF(stepSpec,self.L1HwValDefaultCFF)
1676  print('\n\n\n DEPRECATED this has no action \n\n\n')
1677  return
1678 
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47

◆ prepare_L1Reco()

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

Definition at line 1679 of file ConfigBuilder.py.

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

Referenced by ConfigBuilder.ConfigBuilder.prepare_L1HwVal().

1679  def prepare_L1Reco(self, stepSpec = "L1Reco"):
1680  ''' Enrich the schedule with L1 reconstruction '''
1681  _,_l1recoSeq,_ = self.loadDefaultOrSpecifiedCFF(stepSpec,self.L1RecoDefaultCFF)
1682  self.scheduleSequence(_l1recoSeq,'L1Reco_step')
1683  return
1684 

◆ prepare_L1REPACK()

def ConfigBuilder.ConfigBuilder.prepare_L1REPACK (   self,
  stepSpec = 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 1582 of file ConfigBuilder.py.

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

Referenced by ConfigBuilder.ConfigBuilder.prepare_L1().

1582  def prepare_L1REPACK(self, stepSpec = None):
1583  """ 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"""
1584  supported = ['GT','GT1','GT2','GCTGT','Full','FullSimTP','FullMC','Full2015Data','uGT','CalouGT']
1585  if stepSpec in supported:
1586  self.loadAndRemember('Configuration/StandardSequences/SimL1EmulatorRepack_%s_cff'% stepSpec)
1587  if self._options.scenario == 'HeavyIons':
1588  self.renameInputTagsInSequence("SimL1Emulator","rawDataCollector","rawDataRepacker")
1589  self.scheduleSequence('SimL1Emulator','L1RePack_step')
1590  else:
1591  print("L1REPACK with '",stepSpec,"' is not supported! Supported choices are: ",supported)
1592  raise Exception('unsupported feature')
1593 
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47

◆ prepare_L1TrackTrigger()

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

Definition at line 1685 of file ConfigBuilder.py.

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

Referenced by ConfigBuilder.ConfigBuilder.prepare_L1Reco().

1685  def prepare_L1TrackTrigger(self, stepSpec = "L1TrackTrigger"):
1686  ''' Enrich the schedule with L1 reconstruction '''
1687  _,_l1tracktriggerSeq,_ = self.loadDefaultOrSpecifiedCFF(stepSpec,self.L1TrackTriggerDefaultCFF)
1688  self.scheduleSequence(_l1tracktriggerSeq,'L1TrackTrigger_step')
1689  return
1690 

◆ prepare_LHE()

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

Definition at line 1399 of file ConfigBuilder.py.

1399  def prepare_LHE(self, stepSpec = None):
1400  #load the fragment
1401 
1402  loadFragment = self._options.evt_type.replace('.py','',).replace('.','_').replace('python/','').replace('/','.')
1403  print("Loading lhe fragment from",loadFragment)
1404  __import__(loadFragment)
1405  self.process.load(loadFragment)
1406 
1407  self._options.inlineObjets+=','+stepSpec
1408 
1409  getattr(self.process,stepSpec).nEvents = int(self._options.number)
1410 
1411  #schedule it
1412  self.process.lhe_step = cms.Path( getattr( self.process,stepSpec) )
1413  self.excludedPaths.append("lhe_step")
1414  self.schedule.append( self.process.lhe_step )
1415 
def replace(string, replacements)
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
def load(fileName)
Definition: svgfig.py:547

◆ prepare_NANO()

def ConfigBuilder.ConfigBuilder.prepare_NANO (   self,
  stepSpec = '' 
)

Definition at line 1776 of file ConfigBuilder.py.

References ConfigBuilder.ConfigBuilder._options, join(), ConfigBuilder.ConfigBuilder.loadDefaultOrSpecifiedCFF(), ConfigBuilder.ConfigBuilder.NANODefaultCFF, ConfigBuilder.ConfigBuilder.NANODefaultSeq, ConfigBuilder.ConfigBuilder.prepare_NANOGEN(), print(), and ConfigBuilder.ConfigBuilder.scheduleSequence().

Referenced by ConfigBuilder.ConfigBuilder.prepare_PATGEN().

1776  def prepare_NANO(self, stepSpec = '' ):
1777  print(f"in prepare_nano {stepSpec}")
1778  ''' Enrich the schedule with NANO '''
1779  _,_nanoSeq,_nanoCff = self.loadDefaultOrSpecifiedCFF(stepSpec,self.NANODefaultCFF,self.NANODefaultSeq)
1780  self.scheduleSequence(_nanoSeq,'nanoAOD_step')
1781  custom = "nanoAOD_customizeCommon"
1782  self._options.customisation_file.insert(0,'.'.join([_nanoCff,custom]))
1783  if self._options.hltProcess:
1784  if len(self._options.customise_commands) > 1:
1785  self._options.customise_commands = self._options.customise_commands + " \n"
1786  self._options.customise_commands = self._options.customise_commands + "process.unpackedPatTrigger.triggerResults= cms.InputTag( 'TriggerResults::"+self._options.hltProcess+"' )\n"
1787 
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
static std::string join(char **cmd)
Definition: RemoteFile.cc:19

◆ prepare_NANOGEN()

def ConfigBuilder.ConfigBuilder.prepare_NANOGEN (   self,
  stepSpec = "nanoAOD" 
)
Enrich the schedule with NANOGEN 

Definition at line 1788 of file ConfigBuilder.py.

References ConfigBuilder.ConfigBuilder._options, any(), join(), ConfigBuilder.ConfigBuilder.loadDefaultOrSpecifiedCFF(), ConfigBuilder.ConfigBuilder.NANOGENDefaultCFF, ConfigBuilder.ConfigBuilder.prepare_SKIM(), ConfigBuilder.ConfigBuilder.scheduleSequence(), and ConfigBuilder.ConfigBuilder.stepMap.

Referenced by ConfigBuilder.ConfigBuilder.prepare_NANO().

1788  def prepare_NANOGEN(self, stepSpec = "nanoAOD"):
1789  ''' Enrich the schedule with NANOGEN '''
1790  # TODO: Need to modify this based on the input file type
1791  fromGen = any([x in self.stepMap for x in ['LHE', 'GEN', 'AOD']])
1792  _,_nanogenSeq,_nanogenCff = self.loadDefaultOrSpecifiedCFF(stepSpec,self.NANOGENDefaultCFF)
1793  self.scheduleSequence(_nanogenSeq,'nanoAOD_step')
1794  custom = "customizeNanoGEN" if fromGen else "customizeNanoGENFromMini"
1795  if self._options.runUnscheduled:
1796  self._options.customisation_file_unsch.insert(0, '.'.join([_nanogenCff, custom]))
1797  else:
1798  self._options.customisation_file.insert(0, '.'.join([_nanogenCff, custom]))
1799 
bool any(const std::vector< T > &v, const T &what)
Definition: ECalSD.cc:37
static std::string join(char **cmd)
Definition: RemoteFile.cc:19

◆ prepare_PAT()

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

Definition at line 1744 of file ConfigBuilder.py.

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().

1744  def prepare_PAT(self, stepSpec = "miniAOD"):
1745  ''' Enrich the schedule with PAT '''
1746  self.prepare_PATFILTER(self)
1747  self.loadDefaultOrSpecifiedCFF(stepSpec,self.PATDefaultCFF)
1748  self.labelsToAssociate.append('patTask')
1749  if self._options.isData:
1750  self._options.customisation_file_unsch.insert(0,"PhysicsTools/PatAlgos/slimming/miniAOD_tools.miniAOD_customizeAllData")
1751  else:
1752  if self._options.fast:
1753  self._options.customisation_file_unsch.insert(0,"PhysicsTools/PatAlgos/slimming/miniAOD_tools.miniAOD_customizeAllMCFastSim")
1754  else:
1755  self._options.customisation_file_unsch.insert(0,"PhysicsTools/PatAlgos/slimming/miniAOD_tools.miniAOD_customizeAllMC")
1756 
1757  if self._options.hltProcess:
1758  if len(self._options.customise_commands) > 1:
1759  self._options.customise_commands = self._options.customise_commands + " \n"
1760  self._options.customise_commands = self._options.customise_commands + "process.patTrigger.processName = \""+self._options.hltProcess+"\"\n"
1761  self._options.customise_commands = self._options.customise_commands + "process.slimmedPatTrigger.triggerResults= cms.InputTag( 'TriggerResults::"+self._options.hltProcess+"' )\n"
1762  self._options.customise_commands = self._options.customise_commands + "process.patMuons.triggerResults= cms.InputTag( 'TriggerResults::"+self._options.hltProcess+"' )\n"
1763 
1764 # self.renameHLTprocessInSequence(sequence)
1765 
1766  return
1767 

◆ prepare_PATFILTER()

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

Definition at line 1667 of file ConfigBuilder.py.

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().

1667  def prepare_PATFILTER(self, stepSpec = None):
1668  self.loadAndRemember("PhysicsTools/PatAlgos/slimming/metFilterPaths_cff")
1669  from PhysicsTools.PatAlgos.slimming.metFilterPaths_cff import allMetFilterPaths
1670  for filt in allMetFilterPaths:
1671  self.schedule.append(getattr(self.process,'Flag_'+filt))
1672 

◆ prepare_PATGEN()

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

Definition at line 1768 of file ConfigBuilder.py.

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().

1768  def prepare_PATGEN(self, stepSpec = "miniGEN"):
1769  ''' Enrich the schedule with PATGEN '''
1770  self.loadDefaultOrSpecifiedCFF(stepSpec,self.PATGENDefaultCFF) #this is unscheduled
1771  self.labelsToAssociate.append('patGENTask')
1772  if self._options.isData:
1773  raise Exception("PATGEN step can only run on MC")
1774  return
1775 

◆ prepare_POSTRECO()

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

Definition at line 1861 of file ConfigBuilder.py.

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

Referenced by ConfigBuilder.ConfigBuilder.prepare_USER().

1861  def prepare_POSTRECO(self, stepSpec = None):
1862  """ Enrich the schedule with the postreco step """
1863  self.loadAndRemember(self.POSTRECODefaultCFF)
1864  self.scheduleSequence('postreco_generator','postreco_step')
1865  return
1866 
1867 

◆ prepare_RAW2DIGI()

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

Definition at line 1662 of file ConfigBuilder.py.

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

Referenced by ConfigBuilder.ConfigBuilder.prepare_RAW2RECO().

1662  def prepare_RAW2DIGI(self, stepSpec = "RawToDigi"):
1663  _,_raw2digiSeq,_ = self.loadDefaultOrSpecifiedCFF(stepSpec,self.RAW2DIGIDefaultCFF)
1664  self.scheduleSequence(_raw2digiSeq,'raw2digi_step')
1665  return
1666 

◆ prepare_RAW2RECO()

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

Definition at line 1652 of file ConfigBuilder.py.

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

Referenced by ConfigBuilder.ConfigBuilder.prepare_HLT().

1652  def prepare_RAW2RECO(self, stepSpec = None):
1653  if ','in stepSpec:
1654  seqReco,seqDigi=stepSpec.spli(',')
1655  else:
1656  print(f"RAW2RECO requires two specifications {stepSpec} insufficient")
1657 
1658  self.prepare_RAW2DIGI(seqDigi)
1659  self.prepare_RECO(seqReco)
1660  return
1661 
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47

◆ prepare_RECO()

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

Definition at line 1723 of file ConfigBuilder.py.

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

Referenced by ConfigBuilder.ConfigBuilder.prepare_RAW2RECO().

1723  def prepare_RECO(self, stepSpec = "reconstruction"):
1724  ''' Enrich the schedule with reconstruction '''
1725  _,_recoSeq,_ = self.loadDefaultOrSpecifiedCFF(stepSpec,self.RECODefaultCFF)
1726  self.scheduleSequence(_recoSeq,'reconstruction_step')
1727  return
1728 

◆ prepare_RECOBEFMIX()

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

Definition at line 1735 of file ConfigBuilder.py.

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

Referenced by ConfigBuilder.ConfigBuilder.prepare_RECOSIM().

1735  def prepare_RECOBEFMIX(self, stepSpec = "reconstruction"):
1736  ''' Enrich the schedule with the part of reconstruction that is done before mixing in FastSim'''
1737  if not self._options.fast:
1738  print("ERROR: this step is only implemented for FastSim")
1739  sys.exit()
1740  _,_recobefmixSeq,_ = self.loadDefaultOrSpecifiedCFF(self.RECOBEFMIXDefaultSeq,self.RECOBEFMIXDefaultCFF)
1741  self.scheduleSequence(_recobefmixSeq,'reconstruction_befmix_step')
1742  return
1743 
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47

◆ prepare_RECOSIM()

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

Definition at line 1729 of file ConfigBuilder.py.

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

Referenced by ConfigBuilder.ConfigBuilder.prepare_RECO().

1729  def prepare_RECOSIM(self, stepSpec = "recosim"):
1730  ''' Enrich the schedule with reconstruction '''
1731  _,_recosimSeq,_ = self.loadDefaultOrSpecifiedCFF(stepSpec,self.RECOSIMDefaultCFF)
1732  self.scheduleSequence(_recosimSeq,'recosim_step')
1733  return
1734 

◆ prepare_REPACK()

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

Definition at line 1570 of file ConfigBuilder.py.

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

Referenced by ConfigBuilder.ConfigBuilder.prepare_DIGI2RAW().

1570  def prepare_REPACK(self, stepSpec = None):
1571  _,_repackSeq,_ = self.loadDefaultOrSpecifiedCFF(stepSpec,self.REPACKDefaultCFF)
1572  self.scheduleSequence(_repackSeq,'digi2repack_step')
1573  return
1574 

◆ prepare_SIM()

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

Definition at line 1505 of file ConfigBuilder.py.

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().

1505  def prepare_SIM(self, stepSpec = None):
1506  """ Enrich the schedule with the simulation step"""
1507  _,_simSeq,_ = self.loadDefaultOrSpecifiedCFF(stepSpec,self.SIMDefaultCFF)
1508  if not self._options.fast:
1509  if self._options.gflash==True:
1510  self.loadAndRemember("Configuration/StandardSequences/GFlashSIM_cff")
1511 
1512  if self._options.magField=='0T':
1513  self.executeAndRemember("process.g4SimHits.UseMagneticField = cms.bool(False)")
1514  else:
1515  if self._options.magField=='0T':
1516  self.executeAndRemember("process.fastSimProducer.detectorDefinition.magneticFieldZ = cms.untracked.double(0.)")
1517 
1518  self.scheduleSequence(_simSeq,'simulation_step')
1519  return
1520 

◆ prepare_SKIM()

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

Definition at line 1800 of file ConfigBuilder.py.

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(), print(), DTT0WireWorkflow.DTT0WireWorkflow.process, DTVdriftWorkflow.DTvdriftWorkflow.process, DTTtrigWorkflow.DTttrigWorkflow.process, DTWorkflow.DTWorkflow.process, ConfigBuilder.ConfigBuilder.process, FastTimerService_cff.range, ConfigBuilder.ConfigBuilder.renameHLTprocessInSequence(), ConfigBuilder.ConfigBuilder.SKIMDefaultCFF, and ConfigBuilder.ConfigBuilder.stepMap.

Referenced by ConfigBuilder.ConfigBuilder.prepare_NANOGEN().

1800  def prepare_SKIM(self, stepSpec = "all"):
1801  ''' Enrich the schedule with skimming fragments'''
1802  skimConfig,sequence,_ = self.loadDefaultOrSpecifiedCFF(stepSpec,self.SKIMDefaultCFF)
1803 
1804  stdHLTProcName = 'HLT'
1805  newHLTProcName = self._options.hltProcess
1806  customiseForReHLT = (newHLTProcName or (stdHLTProcName in self.stepMap)) and (newHLTProcName != stdHLTProcName)
1807  if customiseForReHLT:
1808  print("replacing %s process name - step SKIM:%s will use '%s'" % (stdHLTProcName, sequence, newHLTProcName))
1809 
1810 
1811  from Configuration.Skimming.autoSkim import autoSkim
1812  skimlist = sequence.split('+')
1813  self.expandMapping(skimlist,autoSkim)
1814 
1815  #print("dictionary for skims:", skimConfig.__dict__)
1816  for skim in skimConfig.__dict__:
1817  skimstream = getattr(skimConfig, skim)
1818 
1819  # blacklist AlCa paths so that they do not appear in the cfg
1820  if isinstance(skimstream, cms.Path):
1821  self.blacklist_paths.append(skimstream)
1822  # if enabled, apply "hltProcess" renaming to Sequences
1823  elif isinstance(skimstream, cms.Sequence):
1824  if customiseForReHLT:
1825  self.renameHLTprocessInSequence(skim, proc = newHLTProcName, HLTprocess = stdHLTProcName, verbosityLevel = 0)
1826 
1827  if not isinstance(skimstream, cms.FilteredStream):
1828  continue
1829 
1830  shortname = skim.replace('SKIMStream','')
1831  if (sequence=="all"):
1832  self.addExtraStream(skim,skimstream)
1833  elif (shortname in skimlist):
1834  self.addExtraStream(skim,skimstream)
1835  #add a DQM eventcontent for this guy
1836  if self._options.datatier=='DQM':
1837  self.process.load(self.EVTCONTDefaultCFF)
1838  skimstreamDQM = cms.FilteredStream(
1839  responsible = skimstream.responsible,
1840  name = skimstream.name+'DQM',
1841  paths = skimstream.paths,
1842  selectEvents = skimstream.selectEvents,
1843  content = self._options.datatier+'EventContent',
1844  dataTier = cms.untracked.string(self._options.datatier)
1845  )
1846  self.addExtraStream(skim+'DQM',skimstreamDQM)
1847  for i in range(skimlist.count(shortname)):
1848  skimlist.remove(shortname)
1849 
1850  if (skimlist.__len__()!=0 and sequence!="all"):
1851  print('WARNING, possible typo with SKIM:'+'+'.join(skimlist))
1852  raise Exception('WARNING, possible typo with SKIM:'+'+'.join(skimlist))
1853 
1854 
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
static std::string join(char **cmd)
Definition: RemoteFile.cc:19
def load(fileName)
Definition: svgfig.py:547

◆ prepare_USER()

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

Definition at line 1855 of file ConfigBuilder.py.

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

Referenced by ConfigBuilder.ConfigBuilder.prepare_SKIM().

1855  def prepare_USER(self, stepSpec = None):
1856  ''' Enrich the schedule with a user defined sequence '''
1857  _,_userSeq,_ = self.loadDefaultOrSpecifiedCFF(stepSpec,self.USERDefaultCFF)
1858  self.scheduleSequence(_userSeq,'user_step')
1859  return
1860 

◆ prepare_VALIDATION()

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

Definition at line 1868 of file ConfigBuilder.py.

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, print(), DTT0WireWorkflow.DTT0WireWorkflow.process, DTVdriftWorkflow.DTvdriftWorkflow.process, DTTtrigWorkflow.DTttrigWorkflow.process, DTWorkflow.DTWorkflow.process, ConfigBuilder.ConfigBuilder.process, ConfigBuilder.ConfigBuilder.renameHLTprocessInSequence(), ConfigBuilder.ConfigBuilder.schedule, submitPVValidationJobs.split(), ConfigBuilder.ConfigBuilder.stepMap, and ConfigBuilder.ConfigBuilder.VALIDATIONDefaultCFF.

Referenced by ConfigBuilder.ConfigBuilder.prepare_POSTRECO().

1868  def prepare_VALIDATION(self, stepSpec = 'validation'):
1869  print(f"{stepSpec} in preparing validation")
1870  _,sequence,_ = self.loadDefaultOrSpecifiedCFF(stepSpec,self.VALIDATIONDefaultCFF)
1871  from Validation.Configuration.autoValidation import autoValidation
1872  #in case VALIDATION:something:somethingelse -> something,somethingelse
1873  if sequence.find(',')!=-1:
1874  prevalSeqName=sequence.split(',')[0].split('+')
1875  valSeqName=sequence.split(',')[1].split('+')
1876  self.expandMapping(prevalSeqName,autoValidation,index=0)
1877  self.expandMapping(valSeqName,autoValidation,index=1)
1878  else:
1879  if '@' in sequence:
1880  prevalSeqName=sequence.split('+')
1881  valSeqName=sequence.split('+')
1882  self.expandMapping(prevalSeqName,autoValidation,index=0)
1883  self.expandMapping(valSeqName,autoValidation,index=1)
1884  else:
1885  postfix=''
1886  if sequence:
1887  postfix='_'+sequence
1888  prevalSeqName=['prevalidation'+postfix]
1889  valSeqName=['validation'+postfix]
1890  if not hasattr(self.process,valSeqName[0]):
1891  prevalSeqName=['']
1892  valSeqName=[sequence]
1893 
1894  def NFI(index):
1895 
1896  if index==0:
1897  return ''
1898  else:
1899  return '%s'%index
1900 
1901 
1902  #rename the HLT process in validation steps
1903  if ('HLT' in self.stepMap and not self._options.fast) or self._options.hltProcess:
1904  for s in valSeqName+prevalSeqName:
1905  if s:
1906  self.renameHLTprocessInSequence(s)
1907  for (i,s) in enumerate(prevalSeqName):
1908  if s:
1909  setattr(self.process,'prevalidation_step%s'%NFI(i), cms.Path( getattr(self.process, s)) )
1910  self.schedule.append(getattr(self.process,'prevalidation_step%s'%NFI(i)))
1911 
1912  for (i,s) in enumerate(valSeqName):
1913  setattr(self.process,'validation_step%s'%NFI(i), cms.EndPath( getattr(self.process, s)))
1914  self.schedule.append(getattr(self.process,'validation_step%s'%NFI(i)))
1915 
1916  #needed in case the miniAODValidation sequence is run starting from AODSIM
1917  if 'PAT' in self.stepMap and not 'RECO' in self.stepMap:
1918  return
1919 
1920  if not 'DIGI' in self.stepMap and not self._options.fast and not any(map( lambda s : s.startswith('genvalid'), valSeqName)):
1921  if self._options.restoreRNDSeeds==False and not self._options.restoreRNDSeeds==True:
1922  self._options.restoreRNDSeeds=True
1923 
1924  if not 'DIGI' in self.stepMap and not self._options.isData and not self._options.fast:
1925  self.executeAndRemember("process.mix.playback = True")
1926  self.executeAndRemember("process.mix.digitizers = cms.PSet()")
1927  self.executeAndRemember("for a in process.aliases: delattr(process, a)")
1928  self._options.customisation_file.append("SimGeneral/MixingModule/fullMixCustomize_cff.setCrossingFrameOn")
1929 
1930  if hasattr(self.process,"genstepfilter") and len(self.process.genstepfilter.triggerConditions):
1931  #will get in the schedule, smoothly
1932  for (i,s) in enumerate(valSeqName):
1933  getattr(self.process,'validation_step%s'%NFI(i)).insert(0, self.process.genstepfilter)
1934 
1935  return
1936 
1937 
bool any(const std::vector< T > &v, const T &what)
Definition: ECalSD.cc:37
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
bool insert(Storage &iStorage, ItemType *iItem, const IdTag &iIdTag)
Definition: HCMethods.h:50

◆ 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 278 of file ConfigBuilder.py.

References ConfigBuilder.ConfigBuilder._options, alcaDQMUpload.encode(), createfilelist.int, and str.

Referenced by ConfigBuilder.ConfigBuilder.addCommon().

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

◆ renameHLTprocessInSequence()

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

Definition at line 2007 of file ConfigBuilder.py.

References ConfigBuilder.ConfigBuilder._options, ConfigBuilder.ConfigBuilder.additionalCommands, mps_setup.append, ConfigBuilder.ConfigBuilder.expandMapping(), 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_SKIM(), ConfigBuilder.ConfigBuilder.prepare_VALIDATION(), and ConfigBuilder.ConfigBuilder.renameInputTagsInSequence().

2007  def renameHLTprocessInSequence(self, sequence, proc=None, HLTprocess='HLT', verbosityLevel=1):
2008  if proc == None:
2009  proc = self._options.hltProcess if self._options.hltProcess else self.process.name_()
2010  if proc == HLTprocess:
2011  return
2012  # look up all module in sequence
2013  if verbosityLevel > 0:
2014  print("replacing %s process name - sequence %s will use '%s'" % (HLTprocess, sequence, proc))
2015  verboseVisit = (verbosityLevel > 1)
2016  getattr(self.process,sequence).visit(
2017  ConfigBuilder.MassSearchReplaceProcessNameVisitor(HLTprocess, proc, whitelist = ("subSystemFolder",), verbose = verboseVisit))
2018  if 'from Configuration.Applications.ConfigBuilder import ConfigBuilder' not in self.additionalCommands:
2019  self.additionalCommands.append('from Configuration.Applications.ConfigBuilder import ConfigBuilder')
2020  self.additionalCommands.append(
2021  'process.%s.visit(ConfigBuilder.MassSearchReplaceProcessNameVisitor("%s", "%s", whitelist = ("subSystemFolder",), verbose = %s))'
2022  % (sequence, HLTprocess, proc, verboseVisit))
2023 
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47

◆ renameInputTagsInSequence()

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

Definition at line 1997 of file ConfigBuilder.py.

References ConfigBuilder.ConfigBuilder.additionalCommands, mps_setup.append, MassReplace.massSearchReplaceAnyInputTag(), 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().

1997  def renameInputTagsInSequence(self,sequence,oldT="rawDataCollector",newT="rawDataRepacker"):
1998  print("Replacing all InputTag %s => %s"%(oldT,newT))
1999  from PhysicsTools.PatAlgos.tools.helpers import massSearchReplaceAnyInputTag
2000  massSearchReplaceAnyInputTag(getattr(self.process,sequence),oldT,newT)
2001  loadMe='from PhysicsTools.PatAlgos.tools.helpers import massSearchReplaceAnyInputTag'
2002  if not loadMe in self.additionalCommands:
2003  self.additionalCommands.append(loadMe)
2004  self.additionalCommands.append('massSearchReplaceAnyInputTag(process.%s,"%s","%s",False,True)'%(sequence,oldT,newT))
2005 
def massSearchReplaceAnyInputTag(sequence, oldInputTag, newInputTag, verbose=False, moduleLabelOnly=False, skipLabelTest=False)
Definition: MassReplace.py:79
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47

◆ scheduleSequence()

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

Definition at line 1294 of file ConfigBuilder.py.

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_L1(), ConfigBuilder.ConfigBuilder.prepare_L1Reco(), ConfigBuilder.ConfigBuilder.prepare_L1REPACK(), ConfigBuilder.ConfigBuilder.prepare_L1TrackTrigger(), ConfigBuilder.ConfigBuilder.prepare_NANO(), ConfigBuilder.ConfigBuilder.prepare_NANOGEN(), 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().

1294  def scheduleSequence(self,seq,prefix,what='Path'):
1295  if '*' in seq:
1296  #create only one path with all sequences in it
1297  for i,s in enumerate(seq.split('*')):
1298  if i==0:
1299  setattr(self.process,prefix,getattr(cms,what)( getattr(self.process, s) ))
1300  else:
1301  p=getattr(self.process,prefix)
1302  tmp = getattr(self.process, s)
1303  if isinstance(tmp, cms.Task):
1304  p.associate(tmp)
1305  else:
1306  p+=tmp
1307  self.schedule.append(getattr(self.process,prefix))
1308  return
1309  else:
1310  #create as many path as many sequences
1311  if not '+' in seq:
1312  if self.nextScheduleIsConditional:
1313  self.conditionalPaths.append(prefix)
1314  setattr(self.process,prefix,getattr(cms,what)( getattr(self.process, seq) ))
1315  self.schedule.append(getattr(self.process,prefix))
1316  else:
1317  for i,s in enumerate(seq.split('+')):
1318  sn=prefix+'%d'%(i)
1319  setattr(self.process,sn,getattr(cms,what)( getattr(self.process, s) ))
1320  self.schedule.append(getattr(self.process,sn))
1321  return
1322 

◆ scheduleSequenceAtEnd()

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

Definition at line 1323 of file ConfigBuilder.py.

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

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

1323  def scheduleSequenceAtEnd(self,seq,prefix):
1324  self.scheduleSequence(seq,prefix,what='EndPath')
1325  return
1326 

Member Data Documentation

◆ _options

◆ addedObjects

◆ additionalCommands

◆ additionalOutputs

ConfigBuilder.ConfigBuilder.additionalOutputs

Definition at line 270 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare().

◆ ALCADefaultCFF

ConfigBuilder.ConfigBuilder.ALCADefaultCFF

◆ ALCADefaultSeq

ConfigBuilder.ConfigBuilder.ALCADefaultSeq

Definition at line 1045 of file ConfigBuilder.py.

◆ ALCAHARVESTDefaultCFF

ConfigBuilder.ConfigBuilder.ALCAHARVESTDefaultCFF

Definition at line 1033 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_ALCAHARVEST().

◆ ALCAHARVESTDefaultSeq

ConfigBuilder.ConfigBuilder.ALCAHARVESTDefaultSeq

Definition at line 1056 of file ConfigBuilder.py.

◆ AlCaPaths

ConfigBuilder.ConfigBuilder.AlCaPaths

◆ blacklist_paths

ConfigBuilder.ConfigBuilder.blacklist_paths

◆ CFWRITERDefaultCFF

ConfigBuilder.ConfigBuilder.CFWRITERDefaultCFF

Definition at line 1036 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_CFWRITER().

◆ CFWRITERDefaultSeq

ConfigBuilder.ConfigBuilder.CFWRITERDefaultSeq

Definition at line 1057 of file ConfigBuilder.py.

◆ conditionalPaths

ConfigBuilder.ConfigBuilder.conditionalPaths

◆ ConditionsDefaultCFF

ConfigBuilder.ConfigBuilder.ConditionsDefaultCFF

Definition at line 1035 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.addConditions().

◆ DATAMIXDefaultCFF

ConfigBuilder.ConfigBuilder.DATAMIXDefaultCFF

Definition at line 1040 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_DATAMIX().

◆ DATAMIXDefaultSeq

ConfigBuilder.ConfigBuilder.DATAMIXDefaultSeq

Definition at line 1050 of file ConfigBuilder.py.

◆ DIGI2RAWDefaultCFF

ConfigBuilder.ConfigBuilder.DIGI2RAWDefaultCFF

Definition at line 1014 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_DIGI2RAW().

◆ DIGI2RAWDefaultSeq

ConfigBuilder.ConfigBuilder.DIGI2RAWDefaultSeq

Definition at line 1051 of file ConfigBuilder.py.

◆ DIGIDefaultCFF

ConfigBuilder.ConfigBuilder.DIGIDefaultCFF

Definition at line 1013 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_DIGI().

◆ DIGIDefaultSeq

ConfigBuilder.ConfigBuilder.DIGIDefaultSeq

Definition at line 1049 of file ConfigBuilder.py.

◆ DQMDefaultSeq

ConfigBuilder.ConfigBuilder.DQMDefaultSeq

Definition at line 1068 of file ConfigBuilder.py.

◆ DQMOFFLINEDefaultCFF

ConfigBuilder.ConfigBuilder.DQMOFFLINEDefaultCFF

Definition at line 1031 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_DQM().

◆ DQMSaverCFF

ConfigBuilder.ConfigBuilder.DQMSaverCFF

Definition at line 2088 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_HARVESTING().

◆ ENDJOBDefaultCFF

ConfigBuilder.ConfigBuilder.ENDJOBDefaultCFF

Definition at line 1034 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_ENDJOB().

◆ ENDJOBDefaultSeq

ConfigBuilder.ConfigBuilder.ENDJOBDefaultSeq

Definition at line 1070 of file ConfigBuilder.py.

◆ EVTCONTDefaultCFF

ConfigBuilder.ConfigBuilder.EVTCONTDefaultCFF

◆ excludedPaths

ConfigBuilder.ConfigBuilder.excludedPaths

Definition at line 276 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare().

◆ GENDefaultCFF

ConfigBuilder.ConfigBuilder.GENDefaultCFF

Definition at line 1011 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_GEN().

◆ GENDefaultSeq

ConfigBuilder.ConfigBuilder.GENDefaultSeq

Definition at line 1047 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_GEN().

◆ GeometryCFF

ConfigBuilder.ConfigBuilder.GeometryCFF

Definition at line 1141 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.addStandardSequences().

◆ geometryDBLabel

ConfigBuilder.ConfigBuilder.geometryDBLabel

Definition at line 1142 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.addStandardSequences().

◆ HARVESTINGDefaultCFF

ConfigBuilder.ConfigBuilder.HARVESTINGDefaultCFF

Definition at line 1032 of file ConfigBuilder.py.

◆ HARVESTINGDefaultSeq

ConfigBuilder.ConfigBuilder.HARVESTINGDefaultSeq

Definition at line 1055 of file ConfigBuilder.py.

◆ HLTDefaultCFF

ConfigBuilder.ConfigBuilder.HLTDefaultCFF

Definition at line 1017 of file ConfigBuilder.py.

◆ HLTDefaultSeq

ConfigBuilder.ConfigBuilder.HLTDefaultSeq

Definition at line 1052 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 1699 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_FILTER().

◆ L1DefaultSeq

ConfigBuilder.ConfigBuilder.L1DefaultSeq

Definition at line 1053 of file ConfigBuilder.py.

◆ L1EMDefaultCFF

ConfigBuilder.ConfigBuilder.L1EMDefaultCFF

Definition at line 1015 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_L1().

◆ L1HwValDefaultCFF

ConfigBuilder.ConfigBuilder.L1HwValDefaultCFF

Definition at line 1030 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_L1HwVal().

◆ L1HwValDefaultSeq

ConfigBuilder.ConfigBuilder.L1HwValDefaultSeq

Definition at line 1067 of file ConfigBuilder.py.

◆ L1MENUDefaultCFF

ConfigBuilder.ConfigBuilder.L1MENUDefaultCFF

Definition at line 1016 of file ConfigBuilder.py.

◆ L1RecoDefaultCFF

ConfigBuilder.ConfigBuilder.L1RecoDefaultCFF

Definition at line 1020 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_L1Reco().

◆ L1RecoDefaultSeq

ConfigBuilder.ConfigBuilder.L1RecoDefaultSeq

Definition at line 1059 of file ConfigBuilder.py.

◆ L1REPACKDefaultSeq

ConfigBuilder.ConfigBuilder.L1REPACKDefaultSeq

Definition at line 1054 of file ConfigBuilder.py.

◆ L1TrackTriggerDefaultCFF

ConfigBuilder.ConfigBuilder.L1TrackTriggerDefaultCFF

◆ L1TrackTriggerDefaultSeq

ConfigBuilder.ConfigBuilder.L1TrackTriggerDefaultSeq

Definition at line 1060 of file ConfigBuilder.py.

◆ labelsToAssociate

ConfigBuilder.ConfigBuilder.labelsToAssociate

◆ LHEDefaultSeq

ConfigBuilder.ConfigBuilder.LHEDefaultSeq

Definition at line 1046 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_GEN().

◆ magFieldCFF

ConfigBuilder.ConfigBuilder.magFieldCFF

Definition at line 1137 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.addStandardSequences().

◆ NANODefaultCFF

ConfigBuilder.ConfigBuilder.NANODefaultCFF

Definition at line 1025 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_NANO().

◆ NANODefaultSeq

ConfigBuilder.ConfigBuilder.NANODefaultSeq

Definition at line 1076 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_NANO().

◆ NANOGENDefaultCFF

ConfigBuilder.ConfigBuilder.NANOGENDefaultCFF

Definition at line 1026 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_NANOGEN().

◆ NANOGENDefaultSeq

ConfigBuilder.ConfigBuilder.NANOGENDefaultSeq

Definition at line 1075 of file ConfigBuilder.py.

◆ nextScheduleIsConditional

ConfigBuilder.ConfigBuilder.nextScheduleIsConditional

put the filtering path in the schedule

Definition at line 274 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.scheduleSequence().

◆ PATDefaultCFF

ConfigBuilder.ConfigBuilder.PATDefaultCFF

Definition at line 1024 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_PAT().

◆ PATDefaultSeq

ConfigBuilder.ConfigBuilder.PATDefaultSeq

Definition at line 1072 of file ConfigBuilder.py.

◆ PATGENDefaultCFF

ConfigBuilder.ConfigBuilder.PATGENDefaultCFF

Definition at line 1088 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_PATGEN().

◆ PATGENDefaultSeq

ConfigBuilder.ConfigBuilder.PATGENDefaultSeq

Definition at line 1073 of file ConfigBuilder.py.

◆ POSTRECODefaultCFF

ConfigBuilder.ConfigBuilder.POSTRECODefaultCFF

Definition at line 1028 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_POSTRECO().

◆ POSTRECODefaultSeq

ConfigBuilder.ConfigBuilder.POSTRECODefaultSeq

Definition at line 1066 of file ConfigBuilder.py.

◆ process

ConfigBuilder.ConfigBuilder.process

adding standard sequences might change the inputEventContent option and therefore needs to be finalized after

Definition at line 251 of file ConfigBuilder.py.

Referenced by adaptToRunAtMiniAOD.adaptToRunAtMiniAOD.__init__(), ConfigBuilder.ConfigBuilder.addCommon(), ConfigBuilder.ConfigBuilder.addConditions(), ConfigBuilder.ConfigBuilder.addCustomise(), ConfigBuilder.ConfigBuilder.addMaxEvents(), ConfigBuilder.ConfigBuilder.addOutput(), ConfigBuilder.ConfigBuilder.addSource(), ConfigBuilder.ConfigBuilder.addStandardSequences(), ConfigBuilder.ConfigBuilder.build_production_info(), ConfigBuilder.ConfigBuilder.completeInputCommand(), adaptToRunAtMiniAOD.adaptToRunAtMiniAOD.convertModuleToMiniAODInput(), ConfigBuilder.ConfigBuilder.finalizeFastSimHLT(), ConfigBuilder.ConfigBuilder.load(), ConfigBuilder.ConfigBuilder.loadAndRemember(), runTauIdMVA.TauIDEmbedder.loadMVA_WPs_run2_2017(), ConfigBuilder.ConfigBuilder.prepare(), ConfigBuilder.ConfigBuilder.prepare_DIGI(), ConfigBuilder.ConfigBuilder.prepare_DQM(), ConfigBuilder.ConfigBuilder.prepare_GEN(), ConfigBuilder.ConfigBuilder.prepare_HLT(), ConfigBuilder.ConfigBuilder.prepare_PATFILTER(), ConfigBuilder.ConfigBuilder.prepare_SKIM(), ConfigBuilder.ConfigBuilder.prepare_VALIDATION(), runTauIdMVA.TauIDEmbedder.processDeepProducer(), ConfigBuilder.ConfigBuilder.renameHLTprocessInSequence(), ConfigBuilder.ConfigBuilder.renameInputTagsInSequence(), runTauIdMVA.TauIDEmbedder.runTauID(), ConfigBuilder.ConfigBuilder.scheduleSequence(), and runTauIdMVA.TauIDEmbedder.tauIDMVAinputs().

◆ productionFilterSequence

ConfigBuilder.ConfigBuilder.productionFilterSequence

put it before all the other paths

Definition at line 272 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 1018 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_RAW2DIGI().

◆ RAW2DIGIDefaultSeq

ConfigBuilder.ConfigBuilder.RAW2DIGIDefaultSeq

Definition at line 1058 of file ConfigBuilder.py.

◆ RAW2RECODefaultSeq

ConfigBuilder.ConfigBuilder.RAW2RECODefaultSeq

Definition at line 1131 of file ConfigBuilder.py.

◆ RECOBEFMIXDefaultCFF

ConfigBuilder.ConfigBuilder.RECOBEFMIXDefaultCFF

Definition at line 1192 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_RECOBEFMIX().

◆ RECOBEFMIXDefaultSeq

ConfigBuilder.ConfigBuilder.RECOBEFMIXDefaultSeq

Definition at line 1193 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_RECOBEFMIX().

◆ RECODefaultCFF

ConfigBuilder.ConfigBuilder.RECODefaultCFF

Definition at line 1022 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_RECO().

◆ RECODefaultSeq

ConfigBuilder.ConfigBuilder.RECODefaultSeq

Definition at line 1062 of file ConfigBuilder.py.

◆ RECOSIMDefaultCFF

ConfigBuilder.ConfigBuilder.RECOSIMDefaultCFF

Definition at line 1023 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_RECOSIM().

◆ RECOSIMDefaultSeq

ConfigBuilder.ConfigBuilder.RECOSIMDefaultSeq

Definition at line 1065 of file ConfigBuilder.py.

◆ REDIGIDefaultSeq

ConfigBuilder.ConfigBuilder.REDIGIDefaultSeq

Definition at line 1208 of file ConfigBuilder.py.

◆ REPACKDefaultCFF

ConfigBuilder.ConfigBuilder.REPACKDefaultCFF

Definition at line 1037 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_REPACK().

◆ REPACKDefaultSeq

ConfigBuilder.ConfigBuilder.REPACKDefaultSeq

Definition at line 1071 of file ConfigBuilder.py.

◆ runsAndWeights

ConfigBuilder.ConfigBuilder.runsAndWeights

drop LHEXMLStringProduct on input to save memory if appropriate

Definition at line 539 of file ConfigBuilder.py.

◆ runsAndWeightsInt

ConfigBuilder.ConfigBuilder.runsAndWeightsInt

Definition at line 560 of file ConfigBuilder.py.

◆ schedule

◆ scheduleIndexOfFirstHLTPath

ConfigBuilder.ConfigBuilder.scheduleIndexOfFirstHLTPath

◆ SIMDefaultCFF

ConfigBuilder.ConfigBuilder.SIMDefaultCFF

Definition at line 1012 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_SIM().

◆ SIMDefaultSeq

ConfigBuilder.ConfigBuilder.SIMDefaultSeq

Definition at line 1048 of file ConfigBuilder.py.

◆ SimGeometryCFF

ConfigBuilder.ConfigBuilder.SimGeometryCFF

Definition at line 1167 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.addStandardSequences().

◆ SKIMDefaultCFF

ConfigBuilder.ConfigBuilder.SKIMDefaultCFF

Definition at line 1027 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_SKIM().

◆ stepKeys

ConfigBuilder.ConfigBuilder.stepKeys

Definition at line 231 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.addStandardSequences().

◆ stepMap

◆ USERDefaultCFF

ConfigBuilder.ConfigBuilder.USERDefaultCFF

Definition at line 1134 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_USER().

◆ USERDefaultSeq

ConfigBuilder.ConfigBuilder.USERDefaultSeq

Definition at line 1133 of file ConfigBuilder.py.

◆ VALIDATIONDefaultCFF

ConfigBuilder.ConfigBuilder.VALIDATIONDefaultCFF

Definition at line 1029 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare_VALIDATION().

◆ VALIDATIONDefaultSeq

ConfigBuilder.ConfigBuilder.VALIDATIONDefaultSeq

Definition at line 1069 of file ConfigBuilder.py.

◆ with_input

ConfigBuilder.ConfigBuilder.with_input

Definition at line 255 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare().

◆ with_output

ConfigBuilder.ConfigBuilder.with_output

Definition at line 250 of file ConfigBuilder.py.

Referenced by ConfigBuilder.ConfigBuilder.prepare().