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  "DIGIPREMIX":"SIM",
88  "DIGIPREMIX_S2":"SIM",
89  "reDIGI":"DIGI",
90  "L1REPACK":"RAW",
91  "HLT":"RAW",
92  "RECO":"DIGI",
93  "ALCA":"RECO",
94  "ANA":"RECO",
95  "SKIM":"RECO",
96  "DIGI2RAW":"DIGI",
97  "RAW2DIGI":"DIGI2RAW",
98  "RAW2RECO":"DIGI2RAW",
99  "DATAMIX":"DIGI",
100  "DIGI2RAW":"DATAMIX",
101  "HARVESTING":"RECO",
102  "ALCAHARVEST":"RECO"}
103 
104  trimmedEvtType=options.evt_type.split('/')[-1]
105 
106  #get the list of steps, without their options
107  options.trimmedStep=[]
108  for s in options.step.split(','):
109  step=s.split(':')[0]
110  options.trimmedStep.append(step)
111  first_step=options.trimmedStep[0]
112 
113  #replace step aliases
114  # this does not affect options.trimmedStep which still contains 'NONE'
115  stepsAliases={
116  'NONE':'',
117  'ALL':'GEN,SIM,DIGI,L1,DIGI2RAW,HLT:GRun,RAW2DIGI,RECO,POSTRECO,VALIDATION,DQM',
118  'DATA_CHAIN':'RAW2DIGI,RECO,POSTRECO,DQM'
119  }
120  if options.step in stepsAliases:
121  options.step=stepsAliases[options.step]
122 
123  options.step = options.step.replace("SIM_CHAIN","GEN,SIM,DIGI,L1,DIGI2RAW")
124 
125  # add on the end of job sequence...
126  addEndJob = True
127  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 == "":
128  addEndJob = False
129  if ("SKIM" in options.step and not "RECO" in options.step):
130  addEndJob = False
131  if ("ENDJOB" in options.step):
132  addEndJob = False
133  if ('DQMIO' in options.datatier):
134  addEndJob = False
135  if addEndJob:
136  options.step=options.step+',ENDJOB'
137 
138 
139  #determine the type of file on input
140  if options.filetype==defaultOptions.filetype:
141  if options.filein.lower().endswith(".lhe") or options.filein.lower().endswith(".lhef") or options.filein.startswith("lhe:"):
142  options.filetype="LHE"
143  elif options.filein.startswith("mcdb:"):
144  print "This is a deprecated way of selecting lhe files from article number. Please use lhe:article argument to --filein"
145  options.filein=options.filein.replace('mcdb:','lhe:')
146  options.filetype="LHE"
147  else:
148  options.filetype="EDM"
149 
150  filesuffix = {"LHE": "lhe", "EDM": "root", "MCDB": "", "DQM":"root"}[options.filetype]
151 
152  if options.filein=="" and not (first_step in ("ALL","GEN","LHE","SIM_CHAIN")):
153  options.dirin="file:"+options.dirin.replace('file:','')
154  options.filein=trimmedEvtType+"_"+prec_step[first_step]+"."+filesuffix
155 
156 
157  # Prepare the canonical file name for output / config file etc
158  # (EventType_STEP1_STEP2_..._PU)
159  standardFileName = ""
160  standardFileName = trimmedEvtType+"_"+"_".join(options.trimmedStep)
161  standardFileName = standardFileName.replace(",","_").replace(".","_")
162  if options.pileup != "NoPileUp":
163  standardFileName += "_PU"
164 
165 
166  # if no output file name given, set it to default
167  if options.fileout=="" and not first_step in ("HARVESTING", "ALCAHARVEST"):
168  options.fileout = standardFileName+".root"
169 
170  # Prepare the name of the config file
171  if not options.python_filename:
172  options.python_filename = standardFileName+'.py'
173 
174  print options.step
175 
176 
177  # Setting name of process
178  # if not set explicitly it needs some thinking
179  if not options.name:
180  if 'reSIM' in options.trimmedStep:
181  options.name = 'RESIM'
182  elif 'reDIGI' in options.trimmedStep:
183  options.name = 'REDIGI'
184  elif 'HLT' in options.trimmedStep:
185  options.name = 'HLT'
186  elif 'RECO' in options.trimmedStep:
187  options.name = 'RECO'
188  elif options.trimmedStep == ['NONE'] and options.filetype in ('LHE', 'MCDB'):
189  options.name = 'LHE'
190  elif len(options.trimmedStep)==0:
191  options.name = 'PROCESS'
192  else:
193  options.name = options.trimmedStep[-1]
194 
195  # check to be sure that people run the harvesting as a separate step
196  isHarvesting = False
197  isOther = False
198 
199  if "HARVESTING" in options.trimmedStep and len(options.trimmedStep) > 1:
200  raise Exception("The Harvesting step must be run alone")
201 
202  # if not specified by user try to guess whether MC or DATA
203  if not options.isData and not options.isMC:
204  if 'SIM' in options.trimmedStep:
205  options.isMC=True
206  if 'CFWRITER' in options.trimmedStep:
207  options.isMC=True
208  if 'DIGI' in options.trimmedStep:
209  options.isMC=True
210  if 'DIGI2RAW' in options.trimmedStep:
211  options.isMC=True
212  if (not (options.eventcontent == None)) and 'SIM' in options.eventcontent:
213  options.isMC=True
214  if 'SIM' in options.datatier:
215  options.isMC=True
216  if options.isMC:
217  print 'We have determined that this is simulation (if not, rerun cmsDriver.py with --data)'
218  else:
219  print 'We have determined that this is real data (if not, rerun cmsDriver.py with --mc)'
220 
221  if options.profile:
222  if options.profile and options.prefix:
223  raise Exception("--profile and --prefix are incompatible")
224  profilerType = 'pp'
225  profileOpts = options.profile.split(':')
226  if len(profileOpts):
227  profilerType = profileOpts[0].replace("=", " ")
228 
229  if profilerType == "pp":
230  options.profileTypeLabel = "performance"
231  elif profilerType == "mp":
232  options.profileTypeLabel = "memory"
233  elif profilerType.startswith("fp "):
234  options.profileTypeLabel = profilerType.replace("fp ", "")
235  else:
236  raise Exception("Not a valid profiler type %s. Alternatives are pp, mp, fp=<function>."%(profilerType))
237 
238  options.prefix = "igprof -t cmsRun -%s" % profilerType
239 
240  return options
241 
static std::string join(char **cmd)
Definition: RemoteFile.cc:18