CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Functions
cmsDriverOptions Namespace Reference

Functions

def adaptOptions
 
def checkOptions
 
def OptionsFromCommand
 
def OptionsFromCommandLine
 
def OptionsFromItems
 

Function Documentation

def cmsDriverOptions.adaptOptions ( )

Definition at line 17 of file cmsDriverOptions.py.

17 
18 def adaptOptions():
19  return
def cmsDriverOptions.checkOptions ( )

Definition at line 14 of file cmsDriverOptions.py.

14 
15 def checkOptions():
16  return
def cmsDriverOptions.OptionsFromCommand (   command)

Definition at line 20 of file cmsDriverOptions.py.

Referenced by MatrixToProcess.MatrixToProcess.load().

20 
21 def OptionsFromCommand(command):
22  items=command.split()
23  if items[0] != 'cmsDriver.py':
24  return None
25  items.append('--evt_type')
26  items.append(items[1])
27  options=OptionsFromItems(items[2:])
28  options.arguments = command
29  return options
def cmsDriverOptions.OptionsFromCommandLine ( )

Definition at line 30 of file cmsDriverOptions.py.

References OptionsFromItems().

Referenced by cmsDriver.run().

30 
32  import sys
33  options=OptionsFromItems(sys.argv[1:])
34  # memorize the command line arguments
35  options.arguments = reduce(lambda x, y: x+' '+y, sys.argv[1:])
36  return options
def cmsDriverOptions.OptionsFromItems (   items)

Definition at line 37 of file cmsDriverOptions.py.

References join(), and python.rootplot.root2matplotlib.replace().

Referenced by OptionsFromCommand(), and OptionsFromCommandLine().

37 
38 def OptionsFromItems(items):
39  import sys
40  from Configuration.Applications.Options import parser,threeValued
41  #three valued options
42  for (index,item) in enumerate(items):
43  for (opt,value) in threeValued:
44  if (str(item) in opt) and (index==len(items)-1 or items[index+1].startswith('-')):
45  items.insert(index+1,value)
46 
47  (options,args) = parser.parse_args(items)
48 
49  if not options.conditions or options.conditions=="help":
50  from Configuration.AlCa import autoCond
51  possible=""
52  for k in autoCond.autoCond:
53  possible+="\nauto:"+k+" -> "+autoCond.autoCond[k]
54  raise Exception("the --conditions option is mandatory. Possibilities are: "+possible)
55 
56 
57  #################################
58  # Check parameters for validity #
59  #################################
60 
61  # check in case of ALCAOUTPUT case for alca splitting
62  if options.triggerResultsProcess == None and "ALCAOUTPUT" in options.step:
63  print "ERROR: If ALCA splitting is requested, the name of the process in which the alca producers ran needs to be specified. E.g. via --triggerResultsProcess RECO"
64  sys.exit(1)
65 
66  if not options.evt_type:
67  options.evt_type=sys.argv[1]
68 
69  #now adjust the given parameters before passing it to the ConfigBuilder
70 
71  #trail a "/" to dirin and dirout
72  if options.dirin!='' and (not options.dirin.endswith('/')): options.dirin+='/'
73  if options.dirout!='' and (not options.dirout.endswith('/')): options.dirout+='/'
74 
75  # Build the IO files if necessary.
76  # The default form of the files is:
77  # <type>_<energy>_<step>.root
78  prec_step = {"NONE":"",
79  "FILTER":"",
80  "ALL":"",
81  "LHE":"",
82  "GEN":"",
83  "reGEN":"",
84  "SIM":"GEN",
85  "reSIM":"SIM",
86  "DIGI":"SIM",
87  "reDIGI":"DIGI",
88  "L1REPACK":"RAW",
89  "HLT":"RAW",
90  "RECO":"DIGI",
91  "ALCA":"RECO",
92  "ANA":"RECO",
93  "SKIM":"RECO",
94  "DIGI2RAW":"DIGI",
95  "RAW2DIGI":"DIGI2RAW",
96  "RAW2RECO":"DIGI2RAW",
97  "DATAMIX":"DIGI",
98  "DIGI2RAW":"DATAMIX",
99  "HARVESTING":"RECO",
100  "ALCAHARVEST":"RECO"}
101 
102  trimmedEvtType=options.evt_type.split('/')[-1]
103 
104  #get the list of steps, without their options
105  options.trimmedStep=[]
106  for s in options.step.split(','):
107  step=s.split(':')[0]
108  options.trimmedStep.append(step)
109  first_step=options.trimmedStep[0]
110 
111  #replace step aliases
112  # this does not affect options.trimmedStep which still contains 'NONE'
113  stepsAliases={
114  'NONE':'',
115  'ALL':'GEN,SIM,DIGI,L1,DIGI2RAW,HLT:GRun,RAW2DIGI,RECO,POSTRECO,VALIDATION,DQM',
116  'DATA_CHAIN':'RAW2DIGI,RECO,POSTRECO,DQM'
117  }
118  if options.step in stepsAliases:
119  options.step=stepsAliases[options.step]
120 
121  options.step = options.step.replace("SIM_CHAIN","GEN,SIM,DIGI,L1,DIGI2RAW")
122 
123  # add on the end of job sequence...
124  addEndJob = True
125  if ("FASTSIM" in options.step and not "VALIDATION" in options.step) or "HARVESTING" in options.step or "ALCAHARVEST" in options.step or "ALCAOUTPUT" in options.step or options.step == "":
126  addEndJob = False
127  if ("SKIM" in options.step and not "RECO" in options.step):
128  addEndJob = False
129  if ("ENDJOB" in options.step):
130  addEndJob = False
131  if ('DQMROOT' in options.datatier):
132  addEndJob = False
133  if addEndJob:
134  options.step=options.step+',ENDJOB'
135 
136 
137  #determine the type of file on input
138  if options.filetype==defaultOptions.filetype:
139  if options.filein.lower().endswith(".lhe") or options.filein.lower().endswith(".lhef") or options.filein.startswith("lhe:"):
140  options.filetype="LHE"
141  elif options.filein.startswith("mcdb:"):
142  print "This is a deprecated way of selecting lhe files from article number. Please use lhe:article argument to --filein"
143  options.filein=options.filein.replace('mcdb:','lhe:')
144  options.filetype="LHE"
145  else:
146  options.filetype="EDM"
147 
148  filesuffix = {"LHE": "lhe", "EDM": "root", "MCDB": "", "DQM":"root"}[options.filetype]
149 
150  if options.filein=="" and not (first_step in ("ALL","GEN","LHE","SIM_CHAIN")):
151  options.dirin="file:"+options.dirin.replace('file:','')
152  options.filein=trimmedEvtType+"_"+prec_step[first_step]+"."+filesuffix
153 
154 
155  # Prepare the canonical file name for output / config file etc
156  # (EventType_STEP1_STEP2_..._PU)
157  standardFileName = ""
158  standardFileName = trimmedEvtType+"_"+"_".join(options.trimmedStep)
159  standardFileName = standardFileName.replace(",","_").replace(".","_")
160  if options.pileup != "NoPileUp":
161  standardFileName += "_PU"
162 
163 
164  # if no output file name given, set it to default
165  if options.fileout=="" and not first_step in ("HARVESTING", "ALCAHARVEST"):
166  options.fileout = standardFileName+".root"
167 
168  # Prepare the name of the config file
169  if not options.python_filename:
170  options.python_filename = standardFileName+'.py'
171 
172  print options.step
173 
174 
175  # Setting name of process
176  # if not set explicitly it needs some thinking
177  if not options.name:
178  if 'reSIM' in options.trimmedStep:
179  options.name = 'RESIM'
180  elif 'reDIGI' in options.trimmedStep:
181  options.name = 'REDIGI'
182  elif 'HLT' in options.trimmedStep:
183  options.name = 'HLT'
184  elif 'RECO' in options.trimmedStep:
185  options.name = 'RECO'
186  elif options.trimmedStep == ['NONE'] and options.filetype in ('LHE', 'MCDB'):
187  options.name = 'LHE'
188  elif len(options.trimmedStep)==0:
189  options.name = 'PROCESS'
190  else:
191  options.name = options.trimmedStep[-1]
192 
193  # check to be sure that people run the harvesting as a separate step
194  isHarvesting = False
195  isOther = False
196 
197  if "HARVESTING" in options.trimmedStep and len(options.trimmedStep) > 1:
198  raise Exception("The Harvesting step must be run alone")
199 
200  # if not specified by user try to guess whether MC or DATA
201  if not options.isData and not options.isMC:
202  if 'SIM' in options.trimmedStep:
203  options.isMC=True
204  if 'CFWRITER' in options.trimmedStep:
205  options.isMC=True
206  if 'DIGI' in options.trimmedStep:
207  options.isMC=True
208  if (not (options.eventcontent == None)) and 'SIM' in options.eventcontent:
209  options.isMC=True
210  if 'SIM' in options.datatier:
211  options.isMC=True
212  if options.isMC:
213  print 'We have determined that this is simulation (if not, rerun cmsDriver.py with --data)'
214  else:
215  print 'We have determined that this is real data (if not, rerun cmsDriver.py with --mc)'
216 
217  if options.profile:
218  if options.profile and options.prefix:
219  raise Exception("--profile and --prefix are incompatible")
220  profilerType = 'pp'
221  profileOpts = options.profile.split(':')
222  if len(profileOpts):
223  profilerType = profileOpts[0].replace("=", " ")
224 
225  if profilerType == "pp":
226  options.profileTypeLabel = "performance"
227  elif profilerType == "mp":
228  options.profileTypeLabel = "memory"
229  elif profilerType.startswith("fp "):
230  options.profileTypeLabel = profilerType.replace("fp ", "")
231  else:
232  raise Exception("Not a valid profiler type %s. Alternatives are pp, mp, fp=<function>."%(profilerType))
233 
234  options.prefix = "igprof -t cmsRun -%s" % profilerType
235 
236  return options
237 
static std::string join(char **cmd)
Definition: RemoteFile.cc:18