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 *
23 loadGlobalTagTemplate=
"""
25 process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
26 from Configuration.AlCa.GlobalTag import GlobalTag
27 process.GlobalTag = GlobalTag(process.GlobalTag,".oO[GlobalTag]Oo.")
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.')
41 process.prefer_conditionsIn.oO[rcdName]Oo. = cms.ESPrefer("PoolDBESSource", "conditionsIn.oO[rcdName]Oo.")
48 scriptTemplate=
"""#!/bin/bash
51 #export STAGE_SVCCLASS=cmscafuser
52 #save path to the condor batch working directory (/pool/condor)
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.
61 #mkdir -p .oO[datadir]Oo. &>! /dev/null
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}
67 if [ ${file} = /eos/cms/store/group/alca_trackeralign/AlignmentValidation/.oO[eosdir]Oo./.oO[outputFile]Oo. ]
69 xrdcp -f root://eoscms//eos/cms${file} root://eoscms//eos/cms${file}.bak
73 if [[ $HOSTNAME = lxplus[0-9]*[.a-z0-9]* ]] # check for interactive mode
75 mkdir -p .oO[workdir]Oo.
76 rm -f .oO[workdir]Oo./*
79 mkdir -p $CONDORWORKDIR/TkAllInOneTool
80 cd $CONDORWORKDIR/TkAllInOneTool
83 # rm -f .oO[workdir]Oo./*
92 echo "List of files in $(pwd):"
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."
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 ]
107 root_files=$(ls --color=never -d *.oO[alignmentName]Oo.*.root)
109 root_files=$(ls --color=never -d *.oO[alignmentName]Oo._.oO[nIndex]Oo.*.root)
113 for file in ${root_files}
115 xrdcp -f ${file} root://eoscms//eos/cms/store/group/alca_trackeralign/AlignmentValidation/.oO[eosdir]Oo.
120 if [[ $HOSTNAME = lxplus[0-9]*[.a-z0-9]* ]] # check for interactive mode
122 rm -rf .oO[workdir]Oo.
131 import FWCore.ParameterSet.Config as cms
133 process = cms.Process(".oO[ProcessName]Oo.")
135 .oO[datasetDefinition]Oo.
137 .oO[LoadBasicModules]Oo.
138 .oO[TrackSelectionRefitting]Oo.
139 .oO[LoadGlobalTagTemplate]Oo.
141 .oO[ValidationConfig]Oo.
142 .oO[FileOutputTemplate]Oo.
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
159 process.load("FWCore.MessageLogger.MessageLogger_cfi")
160 process.MessageLogger.destinations = ['cout', 'cerr']
161 process.MessageLogger.cerr.FwkReport.reportEvery = 1000
162 process.MessageLogger.statistics.append('cout')
168 CommonTrackSelectionRefitting =
"""
169 import Alignment.CommonAlignment.tools.trackselectionRefitting as trackselRefit
170 process.seqTrackselRefit = trackselRefit.getSequence(process, '.oO[trackcollection]Oo.',
171 isPVValidation=.oO[ispvvalidation]Oo.,
172 TTRHBuilder='.oO[ttrhbuilder]Oo.',
173 usePixelQualityFlag=.oO[usepixelqualityflag]Oo.,
174 openMassWindow=.oO[openmasswindow]Oo.,
175 cosmicsDecoMode=.oO[cosmicsdecomode]Oo.,
176 cosmicsZeroTesla=.oO[cosmics0T]Oo.,
177 momentumConstraint=.oO[momentumconstraint]Oo.,
178 cosmicTrackSplitting=.oO[istracksplitting]Oo.,
179 use_d0cut=.oO[use_d0cut]Oo.,
182 .oO[trackhitfiltercommands]Oo.
188 SingleTrackRefitter =
"""
189 process.load("RecoTracker.TrackProducer.TrackRefitters_cff")
190 process.TrackRefitter.src = ".oO[TrackCollection]Oo."
191 process.TrackRefitter.TTRHBuilder = ".oO[ttrhbuilder]Oo."
192 process.TrackRefitter.NavigationSchool = ""
198 LoadBasicModules =
"""
199 process.load("RecoVertex.BeamSpotProducer.BeamSpot_cff")
200 process.load("Configuration.Geometry.GeometryDB_cff")
201 process.load('Configuration.StandardSequences.Services_cff')
202 process.load("Configuration.StandardSequences..oO[magneticField]Oo._cff")
208 FileOutputTemplate =
"""
209 process.TFileService = cms.Service("TFileService",
210 fileName = cms.string('.oO[outputFile]Oo.')
217 DefinePath_CommonSelectionRefitting =
"""
218 process.p = cms.Path(
219 process.seqTrackselRefit*.oO[ValidationSequence]Oo.)
224 mergeTemplate=
"""#!/bin/bash
226 cd .oO[CMSSW_BASE]Oo./src
227 export SCRAM_ARCH=.oO[SCRAM_ARCH]Oo.
228 eval `scramv1 ru -sh`
231 .oO[createResultsDirectory]Oo.
233 if [[ $HOSTNAME = lxplus[0-9]*[.a-z0-9]* ]] # check for interactive mode
235 mkdir -p .oO[workdir]Oo.
240 echo "Working directory: $(pwd -P)"
242 ###############################################################################
243 # download root files from eos
244 root_files=$(ls /eos/cms/store/group/alca_trackeralign/AlignmentValidation/.oO[eosdir]Oo. \
245 | grep ".root$" | grep -v "result.root$")
246 #for file in ${root_files}
248 # xrdcp -f root://eoscms//eos/cms/store/group/alca_trackeralign/AlignmentValidation/.oO[eosdir]Oo./${file} .
255 .oO[CompareAlignments]Oo.
257 .oO[RunValidationPlots]Oo.
263 #zip stdout and stderr from the farm jobs
265 find . -name "*.stderr" -exec gzip -f {} \;
266 find . -name "*.stdout" -exec gzip -f {} \;
273 mergeParallelOfflineTemplate=
"""#!/bin/bash
275 cd .oO[CMSSW_BASE]Oo./src
276 export SCRAM_ARCH=.oO[SCRAM_ARCH]Oo.
277 eval `scramv1 ru -sh`
279 if [[ $HOSTNAME = lxplus[0-9]*[.a-z0-9]* ]] # check for interactive mode
281 mkdir -p .oO[workdir]Oo.
286 echo "Working directory: $(pwd -P)"
288 ###############################################################################
289 # download root files from eos
290 root_files=$(ls /eos/cms/store/group/alca_trackeralign/AlignmentValidation/.oO[eosdir]Oo. \
291 | grep ".root$" | grep -v "result.root$")
292 #for file in ${root_files}
294 # xrdcp -f root://eoscms//eos/cms/store/group/alca_trackeralign/AlignmentValidation/.oO[eosdir]Oo./${file} .
305 createResultsDirectoryTemplate=
"""
306 #create results-directory and copy used configuration there
307 mkdir -p .oO[datadir]Oo.
308 cp .oO[logdir]Oo./usedConfiguration.ini .oO[datadir]Oo.
314 mergeParallelResults=
"""
320 ls -al .oO[mergeParallelFilePrefixes]Oo. > .oO[datadir]Oo./log_rootfilelist.txt
322 # Remove parallel job files
329 compareAlignmentsExecution=
"""
330 #merge for .oO[validationId]Oo. if it does not exist or is not up-to-date
331 echo -e "\n\nComparing validations"
332 mkdir -p /eos/cms/store/group/alca_trackeralign/AlignmentValidation/.oO[eosdir]Oo./
333 cp .oO[Alignment/OfflineValidation]Oo./scripts/compareFileAges.C .
334 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.\\\")"
335 comparisonNeeded=${?}
337 if [[ ${comparisonNeeded} -eq 1 ]]
339 cp .oO[compareAlignmentsPath]Oo. .
340 root -x -q -b -l '.oO[compareAlignmentsName]Oo.++(\".oO[compareStrings]Oo.\", ".oO[legendheader]Oo.", ".oO[customtitle]Oo.", ".oO[customrighttitle]Oo.", .oO[bigtext]Oo.)'
341 mv result.root .oO[validationId]Oo._result.root
342 xrdcp -f .oO[validationId]Oo._result.root root://eoscms//eos/cms/store/group/alca_trackeralign/AlignmentValidation/.oO[eosdir]Oo.
344 echo ".oO[validationId]Oo._result.root is up-to-date, no need to compare again."
345 xrdcp -f root://eoscms//eos/cms/store/group/alca_trackeralign/AlignmentValidation/.oO[eosdir]Oo./.oO[validationId]Oo._result.root .
359 datasetpath = .oO[dataset]Oo.
360 pset = .oO[cfgFile]Oo.
361 total_number_of_.oO[McOrData]Oo.
362 number_of_jobs = .oO[numberOfJobs]Oo.
363 output_file = .oO[outputFile]Oo.
364 runselection = .oO[runRange]Oo.
365 lumi_mask = .oO[JSON]Oo.
370 storage_element = T2_CH_CERN
371 user_remote_dir = .oO[eosdir]Oo.
372 ui_working_dir = .oO[crabWorkingDir]Oo.
373 # script_exe = .oO[script]Oo.
377 queue = .oO[queue]Oo.
394 if not templateName
in globals().
keys():
395 msg =
"unknown template to replace %s"%templateName
397 if not alternateTemplateName
in globals().
keys():
398 msg =
"unknown template to replace %s"%alternateTemplateName
400 globals()[ templateName ] = globals()[ alternateTemplateName ]