CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
configTemplates.py
Go to the documentation of this file.
1 from alternateValidationTemplates import *
2 from offlineValidationTemplates import *
3 from geometryComparisonTemplates import *
4 from monteCarloValidationTemplates import *
5 from trackSplittingValidationTemplates import *
6 from zMuMuValidationTemplates import *
7 from TkAlExceptions import AllInOneError
8 
9 
10 ######################################################################
11 ######################################################################
12 ### ###
13 ### General Templates ###
14 ### ###
15 ######################################################################
16 ######################################################################
17 
18 ######################################################################
19 ######################################################################
20 conditionsTemplate="""
21 process.conditionsIn.oO[rcdName]Oo. = CalibTracker.Configuration.Common.PoolDBESSource_cfi.poolDBESSource.clone(
22  connect = cms.string('.oO[connectString]Oo.'),
23  toGet = cms.VPSet(cms.PSet(record = cms.string('.oO[rcdName]Oo.'),
24  tag = cms.string('.oO[tagName]Oo.')
25  )
26  )
27  )
28 process.prefer_conditionsIn.oO[rcdName]Oo. = cms.ESPrefer("PoolDBESSource", "conditionsIn.oO[rcdName]Oo.")
29 """
30 
31 
32 ######################################################################
33 ######################################################################
34 #batch job execution
35 scriptTemplate="""
36 #!/bin/bash
37 CWD=`pwd -P`
38 source /afs/cern.ch/cms/caf/setup.sh
39 cd .oO[CMSSW_BASE]Oo./src
40 export SCRAM_ARCH=.oO[SCRAM_ARCH]Oo.
41 eval `scramv1 ru -sh`
42 # rfmkdir -p .oO[workdir]Oo.
43 # rfmkdir -p .oO[datadir]Oo.
44 
45 if [[ $HOSTNAME = lxplus[0-9]*\.cern\.ch ]] # check for interactive mode
46 then
47  rfmkdir -p .oO[workdir]Oo.
48  rm -f .oO[workdir]Oo./*
49  cd .oO[workdir]Oo.
50 else
51  mkdir -p $CWD/TkAllInOneTool
52  cd $CWD/TkAllInOneTool
53 fi
54 
55 # rm -f .oO[workdir]Oo./*
56 # cd .oO[workdir]Oo.
57 
58 #run
59 pwd
60 df -h .
61 .oO[CommandLine]Oo.
62 echo "----"
63 echo "List of files in $(pwd):"
64 ls -ltr
65 echo "----"
66 echo ""
67 
68 
69 #retrieve
70 rfmkdir -p .oO[logdir]Oo. >&! /dev/null
71 gzip -f LOGFILE_*_.oO[name]Oo..log
72 find .oO[workdir]Oo. -maxdepth 1 -name "LOGFILE*.oO[alignmentName]Oo.*" -print | xargs -I {} bash -c "rfcp {} .oO[logdir]Oo."
73 
74 #copy root files to eos
75 cmsMkdir /store/caf/user/$USER/.oO[eosdir]Oo.
76 root_files=$(ls --color=never -d *.oO[alignmentName]Oo.*.root)
77 echo ${root_files}
78 
79 for file in ${root_files}
80 do
81  cmsStage -f ${file} /store/caf/user/$USER/.oO[eosdir]Oo.
82  echo ${file}
83 done
84 
85 #cleanup
86 if [[ $HOSTNAME = lxplus[0-9]*\.cern\.ch ]] # check for interactive mode
87 then
88  rm -rf .oO[workdir]Oo.
89 fi
90 echo "done."
91 """
92 
93 
94 ######################################################################
95 ######################################################################
96 #batch job execution
97 parallelScriptTemplate="""
98 #!/bin/bash
99 #init
100 #ulimit -v 3072000
101 #export STAGE_SVCCLASS=cmscafuser
102 #save path to the LSF batch working directory (/pool/lsf)
103 export LSFWORKDIR=$PWD
104 echo LSF working directory is $LSFWORKDIR
105 source /afs/cern.ch/cms/caf/setup.sh
106 # source /afs/cern.ch/cms/sw/cmsset_default.sh
107 cd .oO[CMSSW_BASE]Oo./src
108 # export SCRAM_ARCH=slc5_amd64_gcc462
109 export SCRAM_ARCH=.oO[SCRAM_ARCH]Oo.
110 eval `scramv1 ru -sh`
111 #rfmkdir -p ${LSFWORKDIR}
112 
113 # make rfmkdir silent in case directory already exists
114 rfmkdir -p .oO[datadir]Oo. >&! /dev/null
115 cmsMkdir /store/caf/user/$USER/.oO[eosdir]Oo.
116 
117 #remove possible result file from previous runs
118 previous_results=$(cmsLs -l /store/caf/user/$USER/.oO[eosdir]Oo. | awk '{print $5}')
119 for file in ${previous_results}
120 do
121  # if [ ${file} = *.oO[datadir]Oo./*.oO[alignmentName]Oo.*.root ]
122  if [ ${file} = /store/caf/user/$USER/.oO[eosdir]Oo./.oO[outputFile]Oo. ]
123  then
124  cmsStage -f ${file} ${file}.bak
125  fi
126 done
127 
128 #rm -f ${LSFWORKDIR}/*
129 cd ${LSFWORKDIR}
130 
131 #run
132 pwd
133 df -h .
134 .oO[CommandLine]Oo.
135 echo "----"
136 echo "List of files in $(pwd):"
137 ls -ltr
138 echo "----"
139 echo ""
140 
141 
142 #retrieve
143 rfmkdir -p .oO[logdir]Oo. >&! /dev/null
144 gzip LOGFILE_*_.oO[name]Oo..log
145 find ${LSFWORKDIR} -maxdepth 1 -name "LOGFILE*.oO[alignmentName]Oo.*" -print | xargs -I {} bash -c "rfcp {} .oO[logdir]Oo."
146 
147 #copy root files to eos
148 cmsMkdir /store/caf/user/$USER/.oO[eosdir]Oo.
149 root_files=$(ls --color=never -d ${LSFWORKDIR}/*.oO[alignmentName]Oo._.oO[nIndex]Oo.*.root)
150 echo "ls"
151 ls
152 echo "\${root_files}:"
153 echo ${root_files}
154 for file in ${root_files}
155 do
156  # echo "cmsStage -f ${file} /store/caf/user/$USER/.oO[eosdir]Oo."
157  cmsStage -f ${file} /store/caf/user/$USER/.oO[eosdir]Oo.
158  # echo ${file}
159 done
160 
161 #cleanup - do not remove workdir, since another parallel job might be running in the same node
162 find ${LSFWORKDIR} -maxdepth 1 -name "*.oO[alignmentName]Oo._.oO[nIndex]Oo.*.root" -print | xargs -I {} bash -c "rm {}"
163 echo "done."
164 """
165 
166 
167 ######################################################################
168 ######################################################################
169 mergeTemplate="""
170 #!/bin/bash
171 CWD=`pwd -P`
172 cd .oO[CMSSW_BASE]Oo./src
173 export SCRAM_ARCH=.oO[SCRAM_ARCH]Oo.
174 eval `scramv1 ru -sh`
175 
176 if [[ $HOSTNAME = lxplus[0-9]*\.cern\.ch ]] # check for interactive mode
177 then
178  mkdir -p .oO[workdir]Oo.
179  cd .oO[workdir]Oo.
180 else
181  cd $CWD
182 fi
183 echo "Working directory: $(pwd -P)"
184 
185 ###############################################################################
186 # download root files from eos
187 root_files=$(cmsLs -l /store/caf/user/$USER/.oO[eosdir]Oo. | awk '{print $5}' \
188  | grep ".root$" | grep -v "result.root$")
189 for file in ${root_files}
190 do
191  cmsStage -f ${file} .
192  # echo ${file}
193 done
194 
195 
196 #run
197 .oO[DownloadData]Oo.
198 .oO[CompareAlignments]Oo.
199 
200 .oO[RunExtendedOfflineValidation]Oo.
201 
202 for file in $(ls -d --color=never *_result.root)
203 do
204  cmsStage -f ${file} /store/caf/user/$USER/.oO[eosdir]Oo.
205 done
206 
207 # clean-up
208 # ls -l *.root
209 rm -f *.root
210 
211 #zip stdout and stderr from the farm jobs
212 cd .oO[logdir]Oo.
213 find . -name "*.stderr" -exec gzip -f {} \;
214 find . -name "*.stdout" -exec gzip -f {} \;
215 """
216 
217 
218 ######################################################################
219 ######################################################################
220 compareAlignmentsExecution="""
221 #merge for .oO[validationId]Oo.
222 cp .oO[CMSSW_BASE]Oo./src/Alignment/OfflineValidation/scripts/compareAlignments.cc .
223 root -q -b 'compareAlignments.cc++(\".oO[compareStrings]Oo.\")'
224 mv result.root .oO[validationId]Oo._result.root
225 """
226 
227 
228 ######################################################################
229 ######################################################################
230 extendedValidationExecution="""
231 #run extended offline validation scripts
232 if [[ $HOSTNAME = lxplus[0-9]*\.cern\.ch ]] # check for interactive mode
233 then
234  rfmkdir -p .oO[workdir]Oo./ExtendedOfflineValidation_Images
235 else
236  mkdir -p ExtendedOfflineValidation_Images
237 fi
238 
239 rfcp .oO[extendeValScriptPath]Oo. .
240 rfcp .oO[CMSSW_BASE]Oo./src/Alignment/OfflineValidation/macros/PlotAlignmentValidation.C .
241 root -x -b -q TkAlExtendedOfflineValidation.C
242 rfmkdir -p .oO[datadir]Oo./ExtendedOfflineValidation_Images
243 
244 if [[ $HOSTNAME = lxplus[0-9]*\.cern\.ch ]] # check for interactive mode
245 then
246  image_files=$(ls --color=never .oO[workdir]Oo./ExtendedOfflineValidation_Images/*ps)
247  echo ${image_files}
248  ls .oO[workdir]Oo./ExtendedOfflineValidation_Images
249 else
250  image_files=$(ls --color=never ExtendedOfflineValidation_Images/*ps)
251  echo ${image_files}
252  ls ExtendedOfflineValidation_Images
253 fi
254 
255 for image in ${image_files}
256 do
257  cp ${image} .oO[datadir]Oo./ExtendedOfflineValidation_Images
258 done
259 """
260 
261 
262 ######################################################################
263 ######################################################################
264 extendedValidationTemplate="""
265 void TkAlExtendedOfflineValidation()
266 {
267  // load framework lite just to find the CMSSW libs...
268  gSystem->Load("libFWCoreFWLite");
269  AutoLibraryLoader::enable();
270  //compile the makro
271  gROOT->ProcessLine(".L .oO[CMSSW_BASE]Oo./src/Alignment/OfflineValidation/macros/PlotAlignmentValidation.C++");
272  // gROOT->ProcessLine(".L ./PlotAlignmentValidation.C++");
273 
274  .oO[extendedInstantiation]Oo.
275  p.setOutputDir("./ExtendedOfflineValidation_Images");
276  p.setTreeBaseDir(".oO[OfflineTreeBaseDir]Oo.");
277  p.plotDMR(".oO[DMRMethod]Oo.",.oO[DMRMinimum]Oo.,".oO[DMROptions]Oo.");
278  p.plotSurfaceShapes(".oO[SurfaceShapes]Oo.");
279 }
280 """
281 
282 
283 ######################################################################
284 ######################################################################
285 crabCfgTemplate="""
286 [CRAB]
287 jobtype = cmssw
288 scheduler = caf
289 use_server = 0
290 
291 [CMSSW]
292 datasetpath = .oO[dataset]Oo.
293 pset = .oO[cfgFile]Oo.
294 total_number_of_.oO[McOrData]Oo.
295 number_of_jobs = .oO[numberOfJobs]Oo.
296 output_file = .oO[outputFile]Oo.
297 runselection = .oO[runRange]Oo.
298 lumi_mask = .oO[JSON]Oo.
299 
300 [USER]
301 return_data = 0
302 copy_data = 1
303 storage_element = T2_CH_CERN
304 user_remote_dir = .oO[eosdir]Oo.
305 ui_working_dir = .oO[crabWorkingDir]Oo.
306 # script_exe = .oO[script]Oo.
307 # .oO[email]Oo.
308 
309 [CAF]
310 queue = .oO[queue]Oo.
311 """
312 
313 
314 
315 
316 ######################################################################
317 ######################################################################
318 ### ###
319 ### Alternate Templates ###
320 ### ###
321 ######################################################################
322 ######################################################################
323 
324 
325 def alternateTemplate( templateName, alternateTemplateName ):
326 
327  if not templateName in globals().keys():
328  msg = "unkown template to replace %s"%templateName
329  raise AllInOneError(msg)
330  if not alternateTemplateName in globals().keys():
331  msg = "unkown template to replace %s"%alternateTemplateName
332  raise AllInOneError(msg)
333  globals()[ templateName ] = globals()[ alternateTemplateName ]
334  # = eval("configTemplates.%s"%"alternateTemplate")
def alternateTemplate
### Alternate Templates ###