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 #init
38 #ulimit -v 3072000
39 #export STAGE_SVCCLASS=cmscafuser
40 #save path to the LSF batch working directory (/pool/lsf)
41 
42 export LSFWORKDIR=`pwd -P`
43 echo LSF working directory is $LSFWORKDIR
44 source /afs/cern.ch/cms/caf/setup.sh
45 eos='/afs/cern.ch/project/eos/installation/cms/bin/eos.select'
46 cd .oO[CMSSW_BASE]Oo./src
47 export SCRAM_ARCH=.oO[SCRAM_ARCH]Oo.
48 eval `scramv1 ru -sh`
49 #rfmkdir -p .oO[datadir]Oo. &>! /dev/null
50 
51 #remove possible result file from previous runs
52 previous_results=$($eos ls /store/caf/user/$USER/.oO[eosdir]Oo.)
53 for file in ${previous_results}
54 do
55  if [ ${file} = /store/caf/user/$USER/.oO[eosdir]Oo./.oO[outputFile]Oo. ]
56  then
57  xrdcp -f root://eoscms//eos/cms${file} root://eoscms//eos/cms${file}.bak
58  fi
59 done
60 
61 if [[ $HOSTNAME = lxplus[0-9]*\.cern\.ch ]] # check for interactive mode
62 then
63  rfmkdir -p .oO[workdir]Oo.
64  rm -f .oO[workdir]Oo./*
65  cd .oO[workdir]Oo.
66 else
67  mkdir -p $LSFWORKDIR/TkAllInOneTool
68  cd $LSFWORKDIR/TkAllInOneTool
69 fi
70 
71 # rm -f .oO[workdir]Oo./*
72 # cd .oO[workdir]Oo.
73 
74 #run
75 pwd
76 df -h .
77 .oO[CommandLine]Oo.
78 echo "----"
79 echo "List of files in $(pwd):"
80 ls -ltr
81 echo "----"
82 echo ""
83 
84 
85 #retrieve
86 rfmkdir -p .oO[logdir]Oo. >&! /dev/null
87 gzip -f LOGFILE_*_.oO[name]Oo..log
88 find . -maxdepth 1 -name "LOGFILE*.oO[alignmentName]Oo.*" -print | xargs -I {} bash -c "rfcp {} .oO[logdir]Oo."
89 
90 #copy root files to eos
91 $eos mkdir -p /store/caf/user/$USER/.oO[eosdir]Oo.
92 if [ .oO[parallelJobs]Oo. -eq 1 ]
93 then
94  root_files=$(ls --color=never -d *.oO[alignmentName]Oo.*.root)
95 else
96  root_files=$(ls --color=never -d *.oO[alignmentName]Oo._.oO[nIndex]Oo.*.root)
97 fi
98 echo ${root_files}
99 
100 for file in ${root_files}
101 do
102  xrdcp -f ${file} root://eoscms//eos/cms/store/caf/user/$USER/.oO[eosdir]Oo.
103  echo ${file}
104 done
105 
106 #cleanup
107 if [[ $HOSTNAME = lxplus[0-9]*\.cern\.ch ]] # check for interactive mode
108 then
109  rm -rf .oO[workdir]Oo.
110 fi
111 echo "done."
112 """
113 
114 
115 ######################################################################
116 ######################################################################
117 mergeTemplate="""
118 #!/bin/bash
119 eos='/afs/cern.ch/project/eos/installation/cms/bin/eos.select'
120 CWD=`pwd -P`
121 cd .oO[CMSSW_BASE]Oo./src
122 export SCRAM_ARCH=.oO[SCRAM_ARCH]Oo.
123 eval `scramv1 ru -sh`
124 
125 #create results-directory and copy used configuration there
126 rfmkdir -p .oO[datadir]Oo.
127 rfcp .oO[logdir]Oo./usedConfiguration.ini .oO[datadir]Oo.
128 
129 if [[ $HOSTNAME = lxplus[0-9]*\.cern\.ch ]] # check for interactive mode
130 then
131  mkdir -p .oO[workdir]Oo.
132  cd .oO[workdir]Oo.
133 else
134  cd $CWD
135 fi
136 echo "Working directory: $(pwd -P)"
137 
138 ###############################################################################
139 # download root files from eos
140 root_files=$($eos ls /store/caf/user/$USER/.oO[eosdir]Oo. \
141  | grep ".root$" | grep -v "result.root$")
142 #for file in ${root_files}
143 #do
144 # xrdcp -f root://eoscms//eos/cms/store/caf/user/$USER/.oO[eosdir]Oo./${file} .
145 # echo ${file}
146 #done
147 
148 
149 #run
150 .oO[DownloadData]Oo.
151 .oO[CompareAlignments]Oo.
152 
153 .oO[RunExtendedOfflineValidation]Oo.
154 .oO[RunTrackSplitPlot]Oo.
155 .oO[MergeZmumuPlots]Oo.
156 
157 # clean-up
158 # ls -l *.root
159 rm -f *.root
160 
161 #zip stdout and stderr from the farm jobs
162 cd .oO[logdir]Oo.
163 find . -name "*.stderr" -exec gzip -f {} \;
164 find . -name "*.stdout" -exec gzip -f {} \;
165 """
166 
167 
168 ######################################################################
169 ######################################################################
170 mergeParallelResults="""
171 
172 .oO[copyMergeScripts]Oo.
173 .oO[haddLoop]Oo.
174 
175 # create log file
176 ls -al .oO[mergeParallelFilePrefixes]Oo. > .oO[datadir]Oo./log_rootfilelist.txt
177 
178 # Remove parallel job files
179 .oO[rmUnmerged]Oo.
180 """
181 
182 
183 ######################################################################
184 ######################################################################
185 compareAlignmentsExecution="""
186 #merge for .oO[validationId]Oo. if it does not exist or is not up-to-date
187 echo -e "\n\nComparing validations"
188 $eos mkdir -p /store/caf/user/$USER/.oO[eosdir]Oo./
189 cp .oO[CMSSW_BASE]Oo./src/Alignment/OfflineValidation/scripts/compareFileAges.C .
190 root -x -q -b -l "compareFileAges.C(\\\"root://eoscms.cern.ch//eos/cms/store/caf/user/$USER/.oO[eosdir]Oo./.oO[validationId]Oo._result.root\\\", \\\".oO[compareStringsPlain]Oo.\\\")"
191 comparisonNeeded=${?}
192 
193 if [[ ${comparisonNeeded} -eq 1 ]]
194 then
195  cp .oO[CMSSW_BASE]Oo./src/Alignment/OfflineValidation/scripts/compareAlignments.cc .
196  root -x -q -b -l 'compareAlignments.cc++(\".oO[compareStrings]Oo.\")'
197  mv result.root .oO[validationId]Oo._result.root
198  xrdcp -f .oO[validationId]Oo._result.root root://eoscms//eos/cms/store/caf/user/$USER/.oO[eosdir]Oo.
199 else
200  echo ".oO[validationId]Oo._result.root is up-to-date, no need to compare again."
201  xrdcp -f root://eoscms//eos/cms/store/caf/user/$USER/.oO[eosdir]Oo./.oO[validationId]Oo._result.root .
202 fi
203 """
204 
205 
206 ######################################################################
207 ######################################################################
208 extendedValidationExecution="""
209 #run extended offline validation scripts
210 echo -e "\n\nRunning extended offline validation"
211 
212 rfcp .oO[extendedValScriptPath]Oo. .
213 root -x -b -q -l TkAlExtendedOfflineValidation.C
214 
215 """
216 
217 
218 ######################################################################
219 ######################################################################
220 extendedValidationTemplate="""
221 #include ".oO[CMSSW_BASE]Oo./src/Alignment/OfflineValidation/macros/PlotAlignmentValidation.C"
222 void TkAlExtendedOfflineValidation()
223 {
224  // load framework lite just to find the CMSSW libs...
225  gSystem->Load("libFWCoreFWLite");
226  FWLiteEnabler::enable();
227 
228  .oO[extendedInstantiation]Oo.
229  p.setOutputDir(".oO[datadir]Oo./ExtendedOfflineValidation_Images");
230  p.setTreeBaseDir(".oO[OfflineTreeBaseDir]Oo.");
231  p.plotDMR(".oO[DMRMethod]Oo.",.oO[DMRMinimum]Oo.,".oO[DMROptions]Oo.");
232  p.plotSurfaceShapes(".oO[SurfaceShapes]Oo.");
233  p.plotChi2("root://eoscms//eos/cms/store/caf/user/$USER/.oO[eosdir]Oo./.oO[resultPlotFile]Oo._result.root");
234 }
235 """
236 
237 
238 ######################################################################
239 ######################################################################
240 crabCfgTemplate="""
241 [CRAB]
242 jobtype = cmssw
243 scheduler = caf
244 use_server = 0
245 
246 [CMSSW]
247 datasetpath = .oO[dataset]Oo.
248 pset = .oO[cfgFile]Oo.
249 total_number_of_.oO[McOrData]Oo.
250 number_of_jobs = .oO[numberOfJobs]Oo.
251 output_file = .oO[outputFile]Oo.
252 runselection = .oO[runRange]Oo.
253 lumi_mask = .oO[JSON]Oo.
254 
255 [USER]
256 return_data = 0
257 copy_data = 1
258 storage_element = T2_CH_CERN
259 user_remote_dir = .oO[eosdir]Oo.
260 ui_working_dir = .oO[crabWorkingDir]Oo.
261 # script_exe = .oO[script]Oo.
262 # .oO[email]Oo.
263 
264 [CAF]
265 queue = .oO[queue]Oo.
266 """
267 
268 
269 
270 
271 ######################################################################
272 ######################################################################
273 ### ###
274 ### Alternate Templates ###
275 ### ###
276 ######################################################################
277 ######################################################################
278 
279 
280 def alternateTemplate( templateName, alternateTemplateName ):
281 
282  if not templateName in globals().keys():
283  msg = "unknown template to replace %s"%templateName
284  raise AllInOneError(msg)
285  if not alternateTemplateName in globals().keys():
286  msg = "unknown template to replace %s"%alternateTemplateName
287  raise AllInOneError(msg)
288  globals()[ templateName ] = globals()[ alternateTemplateName ]
289  # = eval("configTemplates.%s"%"alternateTemplate")
def alternateTemplate
### Alternate Templates ###