4 from genericValidation
import GenericValidation
5 from helperFunctions
import replaceByMap
6 from TkAlExceptions
import AllInOneError
11 Object representing a geometry comparison job.
13 def __init__( self, valName, alignment, referenceAlignment,
14 config, copyImages =
True, randomWorkdirPart =
None):
16 Constructor of the GeometryComparison class.
19 - `valName`: String which identifies individual validation instances
20 - `alignment`: `Alignment` instance to validate
21 - `referenceAlignment`: `Alignment` instance which is compared
23 - `config`: `BetterConfigParser` instance which includes the
24 configuration of the validations
25 - `copyImages`: Boolean which indicates whether png- and pdf-files
26 should be copied back from the batch farm
27 - `randomWorkDirPart`: If this option is ommitted a random number is
28 generated to create unique path names for the
29 individual validation instances.
31 mandatories = [
"levels",
"dbOutput"]
32 GenericValidation.__init__(self, valName, alignment, config,
"compare", addMandatories = mandatories)
33 if not randomWorkdirPart ==
None:
36 referenceName =
"IDEAL"
38 referenceName = self.referenceAlignment.name
40 allCompares = config.getCompares()
42 if valName
in allCompares:
43 self.
__compares[valName] = allCompares[valName]
45 msg = (
"Could not find compare section '%s' in '%s'"
46 %(valName, allCompares))
53 repMap = GenericValidation.getRepMap( self, alignment )
54 referenceName =
"IDEAL"
56 referenceName = self.referenceAlignment.name
59 "comparedGeometry": (
".oO[alignmentName]Oo."
61 "referenceGeometry":
"IDEAL",
63 "reference": referenceName
65 if not referenceName ==
"IDEAL":
66 repMap[
"referenceGeometry"] = (
".oO[reference]Oo."
68 repMap[
"name"] +=
"_vs_.oO[reference]Oo."
74 cfgFileName =
"TkAlCompareToNTuple.%s.%s_cfg.py"%(
76 cfgs = {cfgFileName: configTemplates.intoNTuplesTemplate}
77 repMaps = {cfgFileName: repMap}
80 cfgFileName =
"TkAlCompareToNTuple.%s.%s_cfg.py"%(
82 cfgs[cfgFileName] = configTemplates.intoNTuplesTemplate
83 repMaps[cfgFileName] = referenceRepMap
85 cfgSchedule = cfgs.keys()
87 repMap.update({
"common": common,
92 repMap[
"dbOutputService"] = configTemplates.dbOutputTemplate
94 repMap[
"dbOutputService"] =
""
95 cfgName =
replaceByMap((
"TkAlCompareCommon.oO[common]Oo.."
96 ".oO[name]Oo._cfg.py"),repMap)
97 cfgs[cfgName] = configTemplates.compareTemplate
98 repMaps[cfgName] = repMap
100 cfgSchedule.append( cfgName )
101 GenericValidation.createConfiguration(self, cfgs, path, cfgSchedule, repMaps = repMaps)
105 repMap[
"runComparisonScripts"] =
""
106 scriptName =
replaceByMap((
"TkAlGeomCompare.%s..oO[name]Oo..sh"
110 repMap[
"runComparisonScripts"] += \
111 (
"rfcp .oO[CMSSW_BASE]Oo./src/Alignment/OfflineValidation"
112 "/scripts/comparisonScript.C .\n"
113 "rfcp .oO[CMSSW_BASE]Oo./src/Alignment/OfflineValidation"
114 "/scripts/GeometryComparisonPlotter.h .\n"
115 "rfcp .oO[CMSSW_BASE]Oo./src/Alignment/OfflineValidation"
116 "/scripts/GeometryComparisonPlotter.cc .\n"
117 "root -b -q 'comparisonScript.C+(\""
118 ".oO[name]Oo..Comparison_common"+name+
".root\",\""
121 repMap[
"runComparisonScripts"] += \
122 (
"rfmkdir -p .oO[datadir]Oo./.oO[name]Oo."
123 ".Comparison_common"+name+
"_Images\n")
124 repMap[
"runComparisonScripts"] += \
125 (
"find . -maxdepth 1 -name \"*PXB*\" "
126 "-print | xargs -I {} bash -c \"rfcp {} .oO[datadir]Oo."
127 "/.oO[name]Oo..Comparison_common"+name+
"_Images/\" \n")
128 repMap[
"runComparisonScripts"] += \
129 (
"find . -maxdepth 1 -name \"*PXF*\" "
130 "-print | xargs -I {} bash -c \"rfcp {} .oO[datadir]Oo."
131 "/.oO[name]Oo..Comparison_common"+name+
"_Images/\" \n")
132 repMap[
"runComparisonScripts"] += \
133 (
"find . -maxdepth 1 -name \"*TIB*\" "
134 "-print | xargs -I {} bash -c \"rfcp {} .oO[datadir]Oo."
135 "/.oO[name]Oo..Comparison_common"+name+
"_Images/\" \n")
136 repMap[
"runComparisonScripts"] += \
137 (
"find . -maxdepth 1 -name \"*TID*\" "
138 "-print | xargs -I {} bash -c \"rfcp {} .oO[datadir]Oo."
139 "/.oO[name]Oo..Comparison_common"+name+
"_Images/\" \n")
140 repMap[
"runComparisonScripts"] += \
141 (
"find . -maxdepth 1 -name \"*TEC*\" "
142 "-print | xargs -I {} bash -c \"rfcp {} .oO[datadir]Oo."
143 "/.oO[name]Oo..Comparison_common"+name+
"_Images/\" \n")
144 repMap[
"runComparisonScripts"] += \
145 (
"find . -maxdepth 1 -name \"*TOB*\" "
146 "-print | xargs -I {} bash -c \"rfcp {} .oO[datadir]Oo."
147 "/.oO[name]Oo..Comparison_common"+name+
"_Images/\" \n")
148 repMap[
"runComparisonScripts"] += \
149 (
"find . -maxdepth 1 -name \"*tracker*\" "
150 "-print | xargs -I {} bash -c \"rfcp {} .oO[datadir]Oo."
151 "/.oO[name]Oo..Comparison_common"+name+
"_Images/\" \n")
152 repMap[
"runComparisonScripts"] += \
153 (
"find . -maxdepth 1 -name "
154 "\"TkMap_SurfDeform*.pdf\" -print | xargs -I {} bash -c"
155 " \"rfcp {} .oO[datadir]Oo./.oO[name]Oo."
156 ".Comparison_common"+name+
"_Images/\" \n")
157 repMap[
"runComparisonScripts"] += \
158 (
"find . -maxdepth 1 -name "
159 "\"TkMap_SurfDeform*.png\" -print | xargs -I {} bash -c"
160 " \"rfcp {} .oO[datadir]Oo./.oO[name]Oo."
161 ".Comparison_common"+name+
"_Images/\" \n")
162 repMap[
"runComparisonScripts"] += \
163 (
"if [[ $HOSTNAME = lxplus[0-9]*\.cern\.ch ]]\n"
165 " rfmkdir -p .oO[workdir]Oo./.oO[name]Oo.."+name
168 " mkdir -p $CWD/TkAllInOneTool/.oO[name]Oo.."+name
171 repMap[
"runComparisonScripts"] += \
172 (
"rfcp .oO[CMSSW_BASE]Oo./src/Alignment"
173 "/OfflineValidation/scripts/makeArrowPlots.C "
174 "$CWD/TkAllInOneTool\n"
175 "root -b -q 'makeArrowPlots.C(\""
176 ".oO[name]Oo..Comparison_common"+name
177 +
".root\",\".oO[name]Oo.."
178 +name+
"_ArrowPlots\")'\n")
179 repMap[
"runComparisonScripts"] += \
180 (
"rfmkdir -p .oO[datadir]Oo./.oO[name]Oo."
181 ".Comparison_common"+name+
"_Images/ArrowPlots\n")
182 repMap[
"runComparisonScripts"] += \
183 (
"find .oO[name]Oo.."+name+
"_ArrowPlots "
184 "-maxdepth 1 -name \"*.png\" -print | xargs -I {} bash "
185 "-c \"rfcp {} .oO[datadir]Oo./.oO[name]Oo."
186 ".Comparison_common"+name+
"_Images/ArrowPlots\"\n")
188 resultingFile =
replaceByMap((
"/store/caf/user/$USER/.oO[eosdir]Oo./compared%s_"
189 ".oO[name]Oo..root"%name), repMap)
190 resultingFile = os.path.expandvars( resultingFile )
191 resultingFile = os.path.abspath( resultingFile )
192 repMap[
"runComparisonScripts"] += \
193 (
"cmsStage -f OUTPUT_comparison.root %s\n"
197 repMap[
"CommandLine"]=
""
202 postProcess =
"rfcp *.db .oO[datadir]Oo.\n"
203 repMap[
"CommandLine"]+= \
204 repMap[
"CommandLineTemplate"]%{
"cfgFile":cfg,
205 "postProcess":postProcess}
206 repMap[
"CommandLine"]+= (
"# overall postprocessing\n"
207 ".oO[runComparisonScripts]Oo.\n"
210 scripts = {scriptName:
replaceByMap( configTemplates.scriptTemplate, repMap ) }
211 return GenericValidation.createScript(self, scripts, path)
214 msg = (
"Parallelization not supported for geometry comparison. Please "
215 "choose another 'jobmode'.")
def replaceByMap
— Helpers —############################