1 PrimaryVertexResolutionTemplate=
""" 3 HLTSel = .oO[doTriggerSelection]Oo. 5 ################################################################### 7 ################################################################### 8 runboundary = .oO[runboundary]Oo. 10 if(isinstance(runboundary, (list, tuple))): 12 print("Multiple Runs are selected") 15 process.source.firstRun = cms.untracked.uint32(int(runboundary[0])) 17 process.source.firstRun = cms.untracked.uint32(int(runboundary)) 20 ################################################################### 21 # The trigger filter module 22 ################################################################### 23 from HLTrigger.HLTfilters.triggerResultsFilter_cfi import * 24 process.theHLTFilter = triggerResultsFilter.clone( 25 triggerConditions = cms.vstring(.oO[triggerBits]Oo.), 26 hltResults = cms.InputTag( "TriggerResults", "", "HLT" ), 27 l1tResults = cms.InputTag( "" ), 28 throw = cms.bool(False) 31 ################################################################### 33 ################################################################### 34 process.load("TrackingTools.TransientTrack.TransientTrackBuilder_cfi") 36 from RecoVertex.PrimaryVertexProducer.OfflinePrimaryVertices_cfi import offlinePrimaryVertices 37 process.offlinePrimaryVerticesFromRefittedTrks = offlinePrimaryVertices.clone() 38 process.offlinePrimaryVerticesFromRefittedTrks.TrackLabel = cms.InputTag("TrackRefitter") 39 process.offlinePrimaryVerticesFromRefittedTrks.vertexCollections.maxDistanceToBeam = 1 40 process.offlinePrimaryVerticesFromRefittedTrks.TkFilterParameters.maxNormalizedChi2 = 20 41 process.offlinePrimaryVerticesFromRefittedTrks.TkFilterParameters.minSiliconLayersWithHits = 5 42 process.offlinePrimaryVerticesFromRefittedTrks.TkFilterParameters.maxD0Significance = 5.0 43 # as it was prior to https://github.com/cms-sw/cmssw/commit/c8462ae4313b6be3bbce36e45373aa6e87253c59 44 process.offlinePrimaryVerticesFromRefittedTrks.TkFilterParameters.maxD0Error = 1.0 45 process.offlinePrimaryVerticesFromRefittedTrks.TkFilterParameters.maxDzError = 1.0 46 process.offlinePrimaryVerticesFromRefittedTrks.TkFilterParameters.minPixelLayersWithHits = 2 48 # Use compressions settings of TFile 49 # see https://root.cern.ch/root/html534/TFile.html#TFile:SetCompressionSettings 50 # settings = 100 * algorithm + level 51 # level is from 1 (small) to 9 (large compression) 52 # algo: 1 (ZLIB), 2 (LMZA) 53 # see more about compression & performance: https://root.cern.ch/root/html534/guides/users-guide/InputOutput.html#compression-and-performance 54 compressionSettings = 207 56 ################################################################### 57 # The PV resolution module 58 ################################################################### 59 process.PrimaryVertexResolution = cms.EDAnalyzer('SplitVertexResolution', 60 compressionSettings = cms.untracked.int32(compressionSettings), 61 storeNtuple = cms.bool(False), 62 vtxCollection = cms.InputTag("offlinePrimaryVerticesFromRefittedTrks"), 63 trackCollection = cms.InputTag("TrackRefitter"), 64 minVertexNdf = cms.untracked.double(10.), 65 minVertexMeanWeight = cms.untracked.double(0.5), 66 runControl = cms.untracked.bool(.oO[runControl]Oo.), 67 runControlNumber = cms.untracked.vuint32(runboundary), 68 sumpTStartScale = cms.untracked.double(.oO[startScale]Oo.), 69 sumpTEndScale = cms.untracked.double(.oO[endScale]Oo.), 70 nTrackBins = cms.untracked.double(.oO[nTracksBins]Oo.), 71 nVtxBins = cms.untracked.double(.oO[nVtxBins]Oo.) 79 process.theValidSequence = cms.Sequence(process.offlineBeamSpot + 80 process.TrackRefitter + 81 process.offlinePrimaryVerticesFromRefittedTrks + 82 process.PrimaryVertexResolution) 84 process.p = cms.Path(process.theHLTFilter + process.theValidSequence) 86 process.p = cms.Path(process.theValidSequence) 91 PVResolutionScriptTemplate=
"""#!/bin/bash 92 source /afs/cern.ch/cms/caf/setup.sh 93 export X509_USER_PROXY=.oO[scriptsdir]Oo./.user_proxy 95 source /afs/cern.ch/cms/caf/setup.sh 97 echo ----------------------- 98 echo Job started at `date` 99 echo ----------------------- 101 export theLabel=.oO[alignmentName]Oo. 102 export theDate=.oO[runboundary]Oo. 105 cd .oO[CMSSW_BASE]Oo./src 106 export SCRAM_ARCH=.oO[SCRAM_ARCH]Oo. 107 eval `scram runtime -sh` 110 mkdir -p .oO[datadir]Oo. 111 mkdir -p .oO[workingdir]Oo. 112 mkdir -p .oO[logdir]Oo. 113 rm -f .oO[logdir]Oo./*.stdout 114 rm -f .oO[logdir]Oo./*.stderr 116 if [[ $HOSTNAME = lxplus[0-9]*[.a-z0-9]* ]] # check for interactive mode 118 mkdir -p .oO[workdir]Oo. 119 rm -f .oO[workdir]Oo./* 122 mkdir -p $cwd/TkAllInOneTool 123 cd $cwd/TkAllInOneTool 130 eos mkdir -p /store/group/alca_trackeralign/AlignmentValidation/.oO[eosdir]Oo./plots/ 132 for RootOutputFile in $(ls *root ) 134 xrdcp -f ${RootOutputFile} root://eoscms//eos/cms/store/group/alca_trackeralign/AlignmentValidation/.oO[eosdir]Oo./${RootOutputFile} 135 cp ${RootOutputFile} .oO[workingdir]Oo. 138 cp .oO[Alignment/OfflineValidation]Oo./macros/FitPVResolution.C . 139 cp .oO[Alignment/OfflineValidation]Oo./macros/CMS_lumi.C . 140 cp .oO[Alignment/OfflineValidation]Oo./macros/CMS_lumi.h . 142 if [[ .oO[pvresolutionreference]Oo. == *store* ]]; then xrdcp -f .oO[pvresolutionreference]Oo. PVValidation_reference.root; else ln -fs .oO[pvresolutionreference]Oo. ./PVResolution_reference.root; fi 144 root -b -q "FitPVResolution.C(\\"${PWD}/${RootOutputFile}=${theLabel},${PWD}/PVValidation_reference.root=Design simulation\\",\\"$theDate\\")" 146 mkdir -p .oO[plotsdir]Oo. 147 for PngOutputFile in $(ls *png ); do 148 xrdcp -f ${PngOutputFile} root://eoscms//eos/cms/store/group/alca_trackeralign/AlignmentValidation/.oO[eosdir]Oo./plots/${PngOutputFile} 149 cp ${PngOutputFile} .oO[plotsdir]Oo. 152 for PdfOutputFile in $(ls *pdf ); do 153 xrdcp -f ${PdfOutputFile} root://eoscms//eos/cms/store/group/alca_trackeralign/AlignmentValidation/.oO[eosdir]Oo./plots/${PdfOutputFile} 154 cp ${PdfOutputFile} .oO[plotsdir]Oo. 157 echo ----------------------- 158 echo Job ended at `date` 159 echo ----------------------- 166 PVResolutionPlotExecution=
""" 167 #make primary vertex validation plots 169 cp .oO[plottingscriptpath]Oo. . 170 root -x -b -q .oO[plottingscriptname]Oo.++ 172 for PdfOutputFile in $(ls *pdf ); do 173 xrdcp -f ${PdfOutputFile} root://eoscms//eos/cms/store/group/alca_trackeralign/AlignmentValidation/.oO[eosdir]Oo./plots/${PdfOutputFile} 174 cp ${PdfOutputFile} .oO[datadir]Oo./.oO[PlotsDirName]Oo. 177 for PngOutputFile in $(ls *png ); do 178 xrdcp -f ${PngOutputFile} root://eoscms//eos/cms/store/group/alca_trackeralign/AlignmentValidation/.oO[eosdir]Oo./plots/${PngOutputFile} 179 cp ${PngOutputFile} .oO[datadir]Oo./.oO[PlotsDirName]Oo. 187 PVResolutionPlotTemplate=
""" 188 /**************************************** 189 This can be run directly in root, or you 190 can run ./TkAlMerge.sh in this directory 191 ****************************************/ 193 #include "Alignment/OfflineValidation/macros/FitPVResolution.C" 195 void TkAlPrimaryVertexResolutionPlot() 198 // initialize the plot y-axis ranges 199 .oO[PlottingInstantiation]Oo. 200 FitPVResolution("","");