4 process.oneGoodVertexFilter = cms.EDFilter("VertexSelector",
5 src = cms.InputTag("offlinePrimaryVertices"),
6 cut = cms.string("!isFake && ndof > 4 && abs(z) <= 15 && position.Rho <= 2"), # tracksSize() > 3 for the older cut
7 filter = cms.bool(True), # otherwise it won't filter the events, just produce an empty vertex collection.
12 process.FilterGoodEvents=cms.Sequence(process.oneGoodVertexFilter)
15 process.noScraping= cms.EDFilter("FilterOutScraping",
16 src=cms.InputTag(".oO[TrackCollection]Oo."),
17 applyfilter = cms.untracked.bool(True),
18 debugOn = cms.untracked.bool(False), ## Or 'True' to get some per-event info
19 numtrack = cms.untracked.uint32(10),
20 thresh = cms.untracked.double(0.25)
22 ####################################
24 # Use compressions settings of TFile
25 # see https://root.cern.ch/root/html534/TFile.html#TFile:SetCompressionSettings
26 # settings = 100 * algorithm + level
27 # level is from 1 (small) to 9 (large compression)
28 # algo: 1 (ZLIB), 2 (LMZA)
29 # see more about compression & performance: https://root.cern.ch/root/html534/guides/users-guide/InputOutput.html#compression-and-performance
30 compressionSettings = 207
33 ## Load and Configure OfflineValidation and Output File
35 process.load("Alignment.OfflineValidation.TrackerOfflineValidation_.oO[offlineValidationMode]Oo._cff")
36 process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..compressionSettings = compressionSettings
37 process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..Tracks = 'FinalTrackRefitter'
38 process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..trajectoryInput = 'FinalTrackRefitter'
39 process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..moduleLevelHistsTransient = .oO[offlineModuleLevelHistsTransient]Oo.
40 process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..moduleLevelProfiles = .oO[offlineModuleLevelProfiles]Oo.
41 process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..stripYResiduals = .oO[stripYResiduals]Oo.
42 process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..maxTracks = int(.oO[maxtracks]Oo./.oO[parallelJobs]Oo.)
43 process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..chargeCut = .oO[chargeCut]Oo.
46 OfflineValidationSequence =
"process.seqTrackerOfflineValidation.oO[offlineValidationMode]Oo."
51 mergeOfflineParJobsTemplate=
"""
52 #include "Alignment/OfflineValidation/scripts/merge_TrackerOfflineValidation.C"
54 int TkAlOfflineJobsMerge(TString pars, TString outFile)
56 // load framework lite just to find the CMSSW libs...
57 gSystem->Load("libFWCoreFWLite");
58 FWLiteEnabler::enable();
60 return hadd(pars, outFile);
67 offlineFileOutputTemplate =
"""
68 process.TFileService.fileName = '.oO[outputFile]Oo.'
74 offlineDqmFileOutputTemplate =
"""
75 process.DqmSaverTkAl.workflow = '.oO[workflow]Oo.'
76 process.DqmSaverTkAl.dirName = '.oO[workdir]Oo./.'
77 process.DqmSaverTkAl.forceRunNumber = .oO[firstRunNumber]Oo.
83 extendedValidationExecution=
"""
84 #run extended offline validation scripts
85 echo -e "\n\nRunning extended offline validation"
87 cp .oO[extendedValScriptPath]Oo. .
88 root -x -b -q -l TkAlExtendedOfflineValidation.C
95 extendedValidationTemplate=
"""
96 #include "Alignment/OfflineValidation/macros/PlotAlignmentValidation.C"
97 #include "FWCore/FWLite/interface/FWLiteEnabler.h"
99 void TkAlExtendedOfflineValidation()
101 TkAlStyle::legendheader = ".oO[legendheader]Oo.";
102 TkAlStyle::legendoptions = ".oO[legendoptions]Oo.";
103 TkAlStyle::set(.oO[publicationstatus]Oo., .oO[era]Oo., ".oO[customtitle]Oo.", ".oO[customrighttitle]Oo.");
104 bool bigtext = .oO[bigtext]Oo.;
105 gStyle->SetTitleH ( 0.07 );
106 gStyle->SetTitleW ( 1.00 );
107 gStyle->SetTitleFont ( 132 );
108 // load framework lite just to find the CMSSW libs...
109 gSystem->Load("libFWCoreFWLite");
110 FWLiteEnabler::enable();
112 PlotAlignmentValidation p(bigtext);
113 .oO[PlottingInstantiation]Oo.
114 p.setOutputDir(".oO[datadir]Oo./.oO[PlotsDirName]Oo.");
115 p.useFitForDMRplots(.oO[usefit]Oo.);
116 p.setTreeBaseDir(".oO[OfflineTreeBaseDir]Oo.");
117 p.plotDMR(".oO[DMRMethod]Oo.",.oO[DMRMinimum]Oo.,".oO[DMROptions]Oo.");
118 p.plotSurfaceShapes(".oO[SurfaceShapes]Oo.");
119 p.plotChi2("root://eoscms//eos/cms/store/group/alca_trackeralign/AlignmentValidation/.oO[eosdir]Oo./.oO[validationId]Oo._result.root");
120 vector<int> moduleids = {.oO[moduleid]Oo.};
121 for (auto moduleid : moduleids) {
122 p.residual_by_moduleID(moduleid);