CMS 3D CMS Logo

configTemplates.py
Go to the documentation of this file.
1 from __future__ import absolute_import
2 from .alternateValidationTemplates import *
3 from .offlineValidationTemplates import *
4 from .primaryVertexValidationTemplates import *
5 from .primaryVertexResolutionTemplates import *
6 from .geometryComparisonTemplates import *
7 from .monteCarloValidationTemplates import *
8 from .trackSplittingValidationTemplates import *
9 from .zMuMuValidationTemplates import *
10 from .TkAlExceptions import AllInOneError
11 from .overlapValidationTemplates import *
12 
13 
20 
21 
23 loadGlobalTagTemplate="""
24 #Global tag
25 process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
26 from Configuration.AlCa.GlobalTag import GlobalTag
27 process.GlobalTag = GlobalTag(process.GlobalTag,".oO[GlobalTag]Oo.")
28 """
29 
30 
31 
33 conditionsTemplate="""
34 process.conditionsIn.oO[rcdName]Oo. = CalibTracker.Configuration.Common.PoolDBESSource_cfi.poolDBESSource.clone(
35  connect = cms.string('.oO[connectString]Oo.'),
36  toGet = cms.VPSet(cms.PSet(record = cms.string('.oO[rcdName]Oo.'),
37  tag = cms.string('.oO[tagName]Oo.')
38  )
39  )
40  )
41 process.prefer_conditionsIn.oO[rcdName]Oo. = cms.ESPrefer("PoolDBESSource", "conditionsIn.oO[rcdName]Oo.")
42 """
43 
44 
45 
48 scriptTemplate="""#!/bin/bash
49 #init
50 #ulimit -v 3072000
51 #export STAGE_SVCCLASS=cmscafuser
52 #save path to the condor batch working directory (/pool/condor)
53 
54 export CONDORWORKDIR=`pwd -P`
55 echo CONDOR working directory is $CONDORWORKDIR
56 source /afs/cern.ch/cms/caf/setup.sh
57 export X509_USER_PROXY=.oO[scriptsdir]Oo./.user_proxy
58 cd .oO[CMSSW_BASE]Oo./src
59 export SCRAM_ARCH=.oO[SCRAM_ARCH]Oo.
60 eval `scramv1 ru -sh`
61 #mkdir -p .oO[datadir]Oo. &>! /dev/null
62 
63 #remove possible result file from previous runs
64 previous_results=$(ls /eos/cms/store/group/alca_trackeralign/AlignmentValidation/.oO[eosdir]Oo.)
65 for file in ${previous_results}
66 do
67  if [ ${file} = /eos/cms/store/group/alca_trackeralign/AlignmentValidation/.oO[eosdir]Oo./.oO[outputFile]Oo. ]
68  then
69  xrdcp -f root://eoscms//eos/cms${file} root://eoscms//eos/cms${file}.bak
70  fi
71 done
72 
73 if [[ $HOSTNAME = lxplus[0-9]*[.a-z0-9]* ]] # check for interactive mode
74 then
75  mkdir -p .oO[workdir]Oo.
76  rm -f .oO[workdir]Oo./*
77  cd .oO[workdir]Oo.
78 else
79  mkdir -p $CONDORWORKDIR/TkAllInOneTool
80  cd $CONDORWORKDIR/TkAllInOneTool
81 fi
82 
83 # rm -f .oO[workdir]Oo./*
84 # cd .oO[workdir]Oo.
85 
86 #run
87 pwd
88 df -h .
89 which cmsRun
90 .oO[CommandLine]Oo.
91 echo "----"
92 echo "List of files in $(pwd):"
93 ls -ltr
94 echo "----"
95 echo ""
96 
97 
98 #retrieve
99 mkdir -p .oO[logdir]Oo. >&! /dev/null
100 gzip -f LOGFILE_*_.oO[name]Oo..log
101 find . -maxdepth 1 -name "LOGFILE*.oO[alignmentName]Oo.*" -print | xargs -I {} bash -c "cp {} .oO[logdir]Oo."
102 
103 #copy root files to eos
104 mkdir -p /eos/cms/store/group/alca_trackeralign/AlignmentValidation/.oO[eosdir]Oo.
105 if [ .oO[parallelJobs]Oo. -eq 1 ]
106 then
107  root_files=$(ls --color=never -d *.oO[alignmentName]Oo.*.root)
108 else
109  root_files=$(ls --color=never -d *.oO[alignmentName]Oo._.oO[nIndex]Oo.*.root)
110 fi
111 echo ${root_files}
112 
113 for file in ${root_files}
114 do
115  xrdcp -f ${file} root://eoscms//eos/cms/store/group/alca_trackeralign/AlignmentValidation/.oO[eosdir]Oo.
116  echo ${file}
117 done
118 
119 #cleanup
120 if [[ $HOSTNAME = lxplus[0-9]*[.a-z0-9]* ]] # check for interactive mode
121 then
122  rm -rf .oO[workdir]Oo.
123 fi
124 echo "done."
125 """
126 
127 
128 
130 cfgTemplate="""
131 import FWCore.ParameterSet.Config as cms
132 
133 process = cms.Process(".oO[ProcessName]Oo.")
134 
135 .oO[datasetDefinition]Oo.
136 .oO[Bookkeeping]Oo.
137 .oO[LoadBasicModules]Oo.
138 .oO[TrackSelectionRefitting]Oo.
139 .oO[LoadGlobalTagTemplate]Oo.
140 .oO[condLoad]Oo.
141 .oO[ValidationConfig]Oo.
142 .oO[FileOutputTemplate]Oo.
143 
144 .oO[DefinePath]Oo.
145 
146 print("Done")
147 """
148 
149 
150 
152 Bookkeeping = """
153 process.options = cms.untracked.PSet(
154  wantSummary = cms.untracked.bool(False),
155  Rethrow = cms.untracked.vstring("ProductNotFound"), # make this exception fatal
156  fileMode = cms.untracked.string('NOMERGE') # no ordering needed, but calls endRun/beginRun etc. at file boundaries
157 )
158 
159 process.load("FWCore.MessageLogger.MessageLogger_cfi")
160 process.MessageLogger.cerr.FwkReport.reportEvery = 1000
161 process.MessageLogger.cout.enableStatistics = cms.untracked.bool(True)
162 """
163 
164 
165 
167 CommonTrackSelectionRefitting = """
168 import Alignment.CommonAlignment.tools.trackselectionRefitting as trackselRefit
169 process.seqTrackselRefit = trackselRefit.getSequence(process, '.oO[trackcollection]Oo.',
170  isPVValidation=.oO[ispvvalidation]Oo.,
171  TTRHBuilder='.oO[ttrhbuilder]Oo.',
172  usePixelQualityFlag=.oO[usepixelqualityflag]Oo.,
173  openMassWindow=.oO[openmasswindow]Oo.,
174  cosmicsDecoMode=.oO[cosmicsdecomode]Oo.,
175  cosmicsZeroTesla=.oO[cosmics0T]Oo.,
176  momentumConstraint=.oO[momentumconstraint]Oo.,
177  cosmicTrackSplitting=.oO[istracksplitting]Oo.,
178  use_d0cut=.oO[use_d0cut]Oo.,
179  )
180 
181 .oO[trackhitfiltercommands]Oo.
182 """
183 
184 
185 
187 SingleTrackRefitter = """
188 process.load("RecoTracker.TrackProducer.TrackRefitters_cff")
189 process.TrackRefitter.src = ".oO[TrackCollection]Oo."
190 process.TrackRefitter.TTRHBuilder = ".oO[ttrhbuilder]Oo."
191 process.TrackRefitter.NavigationSchool = ""
192 """
193 
194 
195 
197 LoadBasicModules = """
198 process.load("RecoVertex.BeamSpotProducer.BeamSpot_cff")
199 process.load("Configuration.Geometry.GeometryDB_cff")
200 process.load('Configuration.StandardSequences.Services_cff')
201 process.load("Configuration.StandardSequences..oO[magneticField]Oo._cff")
202 """
203 
204 
205 
207 FileOutputTemplate = """
208 process.TFileService = cms.Service("TFileService",
209  fileName = cms.string('.oO[outputFile]Oo.')
210 )
211 """
212 
213 
214 
216 DefinePath_CommonSelectionRefitting = """
217 process.p = cms.Path(
218 process.seqTrackselRefit*.oO[ValidationSequence]Oo.)
219 """
220 
221 
223 mergeTemplate="""#!/bin/bash
224 CWD=`pwd -P`
225 cd .oO[CMSSW_BASE]Oo./src
226 export SCRAM_ARCH=.oO[SCRAM_ARCH]Oo.
227 eval `scramv1 ru -sh`
228 
229 
230 .oO[createResultsDirectory]Oo.
231 
232 if [[ $HOSTNAME = lxplus[0-9]*[.a-z0-9]* ]] # check for interactive mode
233 then
234  mkdir -p .oO[workdir]Oo.
235  cd .oO[workdir]Oo.
236 else
237  cd $CWD
238 fi
239 echo "Working directory: $(pwd -P)"
240 
241 ###############################################################################
242 # download root files from eos
243 root_files=$(ls /eos/cms/store/group/alca_trackeralign/AlignmentValidation/.oO[eosdir]Oo. \
244  | grep ".root$" | grep -v "result.root$")
245 #for file in ${root_files}
246 #do
247 # xrdcp -f root://eoscms//eos/cms/store/group/alca_trackeralign/AlignmentValidation/.oO[eosdir]Oo./${file} .
248 # echo ${file}
249 #done
250 
251 
252 #run
253 .oO[DownloadData]Oo.
254 .oO[CompareAlignments]Oo.
255 
256 .oO[RunValidationPlots]Oo.
257 
258 # clean-up
259 # ls -l *.root
260 rm -f *.root
261 
262 #zip stdout and stderr from the farm jobs
263 cd .oO[logdir]Oo.
264 find . -name "*.stderr" -exec gzip -f {} \;
265 find . -name "*.stdout" -exec gzip -f {} \;
266 """
267 
268 
269 
270 
272 mergeParallelOfflineTemplate="""#!/bin/bash
273 CWD=`pwd -P`
274 cd .oO[CMSSW_BASE]Oo./src
275 export SCRAM_ARCH=.oO[SCRAM_ARCH]Oo.
276 eval `scramv1 ru -sh`
277 
278 if [[ $HOSTNAME = lxplus[0-9]*[.a-z0-9]* ]] # check for interactive mode
279 then
280  mkdir -p .oO[workdir]Oo.
281  cd .oO[workdir]Oo.
282 else
283  cd $CWD
284 fi
285 echo "Working directory: $(pwd -P)"
286 
287 ###############################################################################
288 # download root files from eos
289 root_files=$(ls /eos/cms/store/group/alca_trackeralign/AlignmentValidation/.oO[eosdir]Oo. \
290  | grep ".root$" | grep -v "result.root$")
291 #for file in ${root_files}
292 #do
293 # xrdcp -f root://eoscms//eos/cms/store/group/alca_trackeralign/AlignmentValidation/.oO[eosdir]Oo./${file} .
294 # echo ${file}
295 #done
296 
297 
298 #run
299 .oO[DownloadData]Oo.
300 """
301 
302 
304 createResultsDirectoryTemplate="""
305 #create results-directory and copy used configuration there
306 mkdir -p .oO[datadir]Oo.
307 cp .oO[logdir]Oo./usedConfiguration.ini .oO[datadir]Oo.
308 """
309 
310 
311 
313 mergeParallelResults="""
314 
315 .oO[beforeMerge]Oo.
316 .oO[doMerge]Oo.
317 
318 # create log file
319 ls -al .oO[mergeParallelFilePrefixes]Oo. > .oO[datadir]Oo./log_rootfilelist.txt
320 
321 # Remove parallel job files
322 .oO[rmUnmerged]Oo.
323 """
324 
325 
326 
328 compareAlignmentsExecution="""
329 #merge for .oO[validationId]Oo. if it does not exist or is not up-to-date
330 echo -e "\n\nComparing validations"
331 mkdir -p /eos/cms/store/group/alca_trackeralign/AlignmentValidation/.oO[eosdir]Oo./
332 cp .oO[Alignment/OfflineValidation]Oo./scripts/compareFileAges.C .
333 root -x -q -b -l "compareFileAges.C(\\\"root://eoscms.cern.ch//eos/cms/store/group/alca_trackeralign/AlignmentValidation/.oO[eosdir]Oo./.oO[validationId]Oo._result.root\\\", \\\".oO[compareStringsPlain]Oo.\\\")"
334 comparisonNeeded=${?}
335 
336 if [[ ${comparisonNeeded} -eq 1 ]]
337 then
338  cp .oO[compareAlignmentsPath]Oo. .
339  root -x -q -b -l '.oO[compareAlignmentsName]Oo.++(\".oO[compareStrings]Oo.\", ".oO[legendheader]Oo.", ".oO[customtitle]Oo.", ".oO[customrighttitle]Oo.", .oO[bigtext]Oo.)'
340  mv result.root .oO[validationId]Oo._result.root
341  xrdcp -f .oO[validationId]Oo._result.root root://eoscms//eos/cms/store/group/alca_trackeralign/AlignmentValidation/.oO[eosdir]Oo.
342 else
343  echo ".oO[validationId]Oo._result.root is up-to-date, no need to compare again."
344  xrdcp -f root://eoscms//eos/cms/store/group/alca_trackeralign/AlignmentValidation/.oO[eosdir]Oo./.oO[validationId]Oo._result.root .
345 fi
346 """
347 
348 
349 
351 crabCfgTemplate="""
352 [CRAB]
353 jobtype = cmssw
354 scheduler = caf
355 use_server = 0
356 
357 [CMSSW]
358 datasetpath = .oO[dataset]Oo.
359 pset = .oO[cfgFile]Oo.
360 total_number_of_.oO[McOrData]Oo.
361 number_of_jobs = .oO[numberOfJobs]Oo.
362 output_file = .oO[outputFile]Oo.
363 runselection = .oO[runRange]Oo.
364 lumi_mask = .oO[JSON]Oo.
365 
366 [USER]
367 return_data = 0
368 copy_data = 1
369 storage_element = T2_CH_CERN
370 user_remote_dir = .oO[eosdir]Oo.
371 ui_working_dir = .oO[crabWorkingDir]Oo.
372 # script_exe = .oO[script]Oo.
373 # .oO[email]Oo.
374 
375 [CAF]
376 queue = .oO[queue]Oo.
377 """
378 
379 
380 
381 
382 
389 
390 
391 def alternateTemplate( templateName, alternateTemplateName ):
392 
393  if not templateName in globals().keys():
394  msg = "unknown template to replace %s"%templateName
395  raise AllInOneError(msg)
396  if not alternateTemplateName in globals().keys():
397  msg = "unknown template to replace %s"%alternateTemplateName
398  raise AllInOneError(msg)
399  globals()[ templateName ] = globals()[ alternateTemplateName ]
400  # = eval("configTemplates.%s"%"alternateTemplate")
def alternateTemplate(templateName, alternateTemplateName)
Alternate Templates ###