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 ###
2 # Default Templates
3 ###
4 
5 offlineTemplate = """
6 import FWCore.ParameterSet.Config as cms
7 
8 process = cms.Process("OfflineValidator")
9 
10 process.load("Alignment.OfflineValidation..oO[dataset]Oo._cff")
11 
12 process.options = cms.untracked.PSet(
13  wantSummary = cms.untracked.bool(False),
14  Rethrow = cms.untracked.vstring("ProductNotFound"), # make this exception fatal
15  fileMode = cms.untracked.string('NOMERGE') # no ordering needed, but calls endRun/beginRun etc. at file boundaries
16 )
17 
18  ##
19  ## Maximum number of Events
20  ##
21 process.maxEvents = cms.untracked.PSet(
22  input = cms.untracked.int32(.oO[nEvents]Oo.)
23  )
24 
25  ##
26  ## Messages & Convenience
27  ##
28 process.load("FWCore.MessageLogger.MessageLogger_cfi")
29 process.MessageLogger.cerr = cms.untracked.PSet(placeholder = cms.untracked.bool(True))
30 process.MessageLogger.cout = cms.untracked.PSet(INFO = cms.untracked.PSet(
31 reportEvery = cms.untracked.int32(1000) # every 1000th only
32 # limit = cms.untracked.int32(10) # or limit to 10 printouts...
33 ))
34 process.MessageLogger.statistics.append('cout')
35 
36 #############################################################
37 ##select trigger bits 40 OR 41
38 ##AND NOT (36 OR 37 OR 38 OR 39)
39 ##trigger bit 0 is selecting crossing bunches (not in MC)
40 ##########################################################
41 process.load('L1TriggerConfig.L1GtConfigProducers.L1GtTriggerMaskTechTrigConfig_cff')
42 process.load('HLTrigger/HLTfilters/hltLevel1GTSeed_cfi')
43 
44 #Good Bunch Crossings
45 process.bptxAnd = process.hltLevel1GTSeed.clone(L1TechTriggerSeeding = cms.bool(True), L1SeedsLogicalExpression = cms.string('0'))
46 #BSCNOBEAMHALO
47 process.bit40 = process.hltLevel1GTSeed.clone(L1TechTriggerSeeding = cms.bool(True), L1SeedsLogicalExpression = cms.string('(40 OR 41) AND NOT (36 OR 37 OR 38 OR 39) AND NOT ((42 AND NOT 43) OR (43 AND NOT 42))'))
48 
49 #Physics declared
50 process.load('HLTrigger.special.hltPhysicsDeclared_cfi')
51 process.hltPhysicsDeclared.L1GtReadoutRecordTag = 'gtDigis'
52 
53 
54 #############################################################
55 ##select only high purity tracks
56 ##has to run first as necessary information
57 ##is only available in initial track selection
58 ##(Quality information is thrown away by the tracker refitters)
59 ##########################################################
60 import Alignment.CommonAlignmentProducer.AlignmentTrackSelector_cfi
61 process.HighPuritySelector = Alignment.CommonAlignmentProducer.AlignmentTrackSelector_cfi.AlignmentTrackSelector.clone(
62  applyBasicCuts = True,
63  filter = True,
64  src = '.oO[TrackCollection]Oo.',
65  trackQualities = ["highPurity"]
66  )
67 
68 ###############################################################
69 ## Quality filters on the event (REAL DATA - FIRST COLLISIONS DEC09 ONLY!)
70 ## see https://twiki.cern.ch/twiki/bin/viewauth/CMS/TRKPromptFeedBack#Event_and_track_selection_recipe
71 ##NOT in PATH yet, to be commented in, if necessay
72 ##
73 #########################################################
74 process.oneGoodVertexFilter = cms.EDFilter("VertexSelector",
75  src = cms.InputTag("offlinePrimaryVertices"),
76  cut = cms.string("!isFake && ndof > 4 && abs(z) <= 15 && position.Rho <= 2"), # tracksSize() > 3 for the older cut
77  filter = cms.bool(True), # otherwise it won't filter the events, just produce an empty vertex collection.
78  )
79 
80 
81 process.noScraping= cms.EDFilter("FilterOutScraping",
82  src=cms.InputTag("ALCARECOTkAlMinBias"),
83  applyfilter = cms.untracked.bool(True),
84  debugOn = cms.untracked.bool(False), ## Or 'True' to get some per-event info
85  numtrack = cms.untracked.uint32(10),
86  thresh = cms.untracked.double(0.25)
87  )
88 ####################################
89 
90 
91 
92 
93 
94 #-- Track hit filter
95 # TrackerTrackHitFilter takes as input the tracks/trajectories coming out from TrackRefitter1
96 process.load("RecoTracker.FinalTrackSelectors.TrackerTrackHitFilter_cff")
97 process.TrackerTrackHitFilter.src = 'TrackRefitter1'
98 
99 #-- Alignment Track Selection
100 process.load("Alignment.CommonAlignmentProducer.AlignmentTrackSelector_cfi")
101 process.AlignmentTrackSelector.src = 'HitFilteredTracks'
102 process.AlignmentTrackSelector.filter = True
103 
104 .oO[TrackSelectionTemplate]Oo.
105 
106 #now we give the TrackCandidate coming out of the TrackerTrackHitFilter to the track producer
107 import RecoTracker.TrackProducer.CTFFinalFitWithMaterial_cff
108 process.HitFilteredTracks = RecoTracker.TrackProducer.CTFFinalFitWithMaterial_cff.ctfWithMaterialTracks.clone(
109  src = 'TrackerTrackHitFilter',
110  NavigationSchool = "",
111 
112 ### TrajectoryInEvent = True,
113  TTRHBuilder = "WithAngleAndTemplate"
114 )
115 
116  ##
117  ## Load and Configure TrackRefitter1
118  ##
119 
120 process.load("RecoTracker.TrackProducer.TrackRefitters_cff")
121 
122 #############
123 # parameters for TrackRefitter
124 #process.load("RecoTracker.TrackProducer.RefitterWithMaterial_cff")
125 import RecoTracker.TrackProducer.TrackRefitters_cff
126 process.TrackRefitter1 = process.TrackRefitter.clone(
127  src = 'HighPuritySelector',
128  TrajectoryInEvent = True,
129  TTRHBuilder = "WithAngleAndTemplate",
130  NavigationSchool = ""
131 )
132 process.TrackRefitter2 = process.TrackRefitter1.clone(
133 # src = 'HitFilteredTracks')
134  src = 'AlignmentTrackSelector'
135 )
136 
137 
138  ##
139  ## Get the BeamSpot
140  ##
141 process.load("RecoVertex.BeamSpotProducer.BeamSpot_cff")
142 
143  ##
144  ## GlobalTag Conditions (if needed)
145  ##
146 process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
147 process.GlobalTag.globaltag = ".oO[GlobalTag]Oo."
148 
149 
150 .oO[LorentzAngleTemplate]Oo.
151 
152  ##
153  ## Geometry
154  ##
155 process.load("Configuration.StandardSequences.Geometry_cff")
156 
157  ##
158  ## Magnetic Field
159  ##
160 process.load("Configuration/StandardSequences/MagneticField_38T_cff")
161 
162 .oO[dbLoad]Oo.
163 
164 .oO[APE]Oo.
165 
166 ## to apply misalignments
167 #TrackerDigiGeometryESModule.applyAlignment = True
168 
169  ##
170  ## Load and Configure OfflineValidation and Output File
171  ##
172 process.load("Alignment.OfflineValidation.TrackerOfflineValidation_.oO[offlineValidationMode]Oo._cff")
173 process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..Tracks = 'TrackRefitter2'
174 process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..trajectoryInput = 'TrackRefitter2'
175 process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..moduleLevelHistsTransient = .oO[offlineModuleLevelHistsTransient]Oo.
176 .oO[offlineValidationFileOutput]Oo.
177 
178  ##
179  ## PATH
180  ##
181 process.p = cms.Path(
182 process.triggerSelection*
183 process.offlineBeamSpot*process.HighPuritySelector*process.TrackRefitter1*process.TrackerTrackHitFilter*process.HitFilteredTracks
184 *process.AlignmentTrackSelector*process.TrackRefitter2*process.seqTrackerOfflineValidation.oO[offlineValidationMode]Oo.)
185 
186 """
187 
188 offlineStandaloneFileOutputTemplate = """
189 process.TFileService.fileName = '.oO[outputFile]Oo.'
190 """
191 
192 offlineDqmFileOutputTemplate = """
193 process.TrackerOfflineValidationSummary.oO[offlineValidationMode]Oo..removeModuleLevelHists = .oO[offlineModuleLevelHistsTransient]Oo.
194 process.DqmSaverTkAl.workflow = '.oO[workflow]Oo.'
195 process.DqmSaverTkAl.dirName = '.oO[workdir]Oo./.'
196 process.DqmSaverTkAl.forceRunNumber = .oO[firstRunNumber]Oo.
197 """
198 #offlineDqmFileOutputTemplate = """
199 #process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..workflow = .oO[workflow]Oo.
200 #process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..dirName = .oO[workdir]Oo./.
201 #process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..forceRunNumber = .oO[firstRunNumber]Oo.
202 #"""
203 
204 
205 LorentzAngleTemplate = "#use lorentz angle from global tag"
206 
207 TrackSelectionTemplate = """
208 #####default for MC tracks with now further corrections etc.
209 
210 process.AlignmentTrackSelector.applyBasicCuts = True
211 # Note that pMin is overridden and set to zero in
212 # the offlineTemplate0T
213 process.AlignmentTrackSelector.pMin = 3
214 process.AlignmentTrackSelector.pMax = 9999.
215 process.AlignmentTrackSelector.ptMin = 0.65
216 process.AlignmentTrackSelector.ptMax = 9999.
217 process.AlignmentTrackSelector.etaMin = -999.
218 process.AlignmentTrackSelector.etaMax = 999.
219 process.AlignmentTrackSelector.nHitMin = 8
220 process.AlignmentTrackSelector.nHitMin2D = 2
221 process.AlignmentTrackSelector.chi2nMax = 999.
222 process.AlignmentTrackSelector.applyMultiplicityFilter = False
223 process.AlignmentTrackSelector.maxMultiplicity = 1
224 process.AlignmentTrackSelector.applyNHighestPt = False
225 process.AlignmentTrackSelector.nHighestPt = 1
226 process.AlignmentTrackSelector.seedOnlyFrom = 0
227 process.AlignmentTrackSelector.applyIsolationCut = False
228 process.AlignmentTrackSelector.minHitIsolation = 0.8
229 process.AlignmentTrackSelector.applyChargeCheck = False
230 process.AlignmentTrackSelector.minHitChargeStrip = 50.
231 #process.AlignmentTrackSelector.trackQualities = ["highPurity"]
232 #process.AlignmentTrackSelector.iterativeTrackingSteps = ["iter1","iter2"]
233 
234 ##### For Hits:
235 process.TrackerTrackHitFilter.useTrajectories= True # this is needed only if you require some selections; but it will work even if you don't ask for them
236 process.TrackerTrackHitFilter.minimumHits = 8
237 process.TrackerTrackHitFilter.commands = cms.vstring("keep PXB","keep PXE","keep TIB","keep TID","keep TOB","keep TEC")
238 process.TrackerTrackHitFilter.detsToIgnore = [
239  # see https://hypernews.cern.ch/HyperNews/CMS/get/tracker-performance/484.html
240  # TIB / TID
241  #369136710, 369136714, 402668822,
242  # TOB
243  #436310989, 436310990, 436299301, 436299302,
244  # TEC
245  #470340521, 470063045, 470063046, 470114669, 470114670, 470161093, 470161094, 470164333, 470164334, 470312005, 470312006, 470312009, 470067405, 470067406, 470128813
246 ]
247 process.TrackerTrackHitFilter.replaceWithInactiveHits = True
248 process.TrackerTrackHitFilter.stripAllInvalidHits = False
249 process.TrackerTrackHitFilter.rejectBadStoNHits = True
250 process.TrackerTrackHitFilter.StoNcommands = cms.vstring("ALL 12.0")
251 process.TrackerTrackHitFilter.rejectLowAngleHits= True
252 process.TrackerTrackHitFilter.TrackAngleCut= 0.17 # in rads, starting from the module surface
253 process.TrackerTrackHitFilter.usePixelQualityFlag= True
254 
255 ##############
256 ##Trigger sequence
257 #############
258 #for MC only trigger bit 40 is simulated
259 #no triger on bunch crossing bit 0
260 
261 
262 process.triggerSelection=cms.Sequence(process.bit40)
263 
264 """
265 
266 intoNTuplesTemplate="""
267 import FWCore.ParameterSet.Config as cms
268 
269 process = cms.Process("ValidationIntoNTuples")
270 
271 # global tag
272 process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
273 process.GlobalTag.globaltag = ".oO[GlobalTag]Oo."
274 
275 process.load("Geometry.CMSCommonData.cmsIdealGeometryXML_cfi")
276 process.load("Geometry.TrackerNumberingBuilder.trackerNumberingGeometry_cfi")
277 process.load("Geometry.TrackerGeometryBuilder.trackerGeometry_cfi")
278 
279 #process.load("Alignment.CommonAlignmentProducer.GlobalPosition_Frontier_cff")
280 process.load("CondCore.DBCommon.CondDBSetup_cfi")
281 
282 process.MessageLogger = cms.Service("MessageLogger",
283  destinations = cms.untracked.vstring('detailedInfo',
284  'cout')
285 )
286 
287 #removed: APE
288 #removed: dbLoad
289 import CalibTracker.Configuration.Common.PoolDBESSource_cfi
290 process.GeomToComp = CalibTracker.Configuration.Common.PoolDBESSource_cfi.poolDBESSource.clone(
291 connect = cms.string('.oO[dbpath]Oo.'),
292 
293  toGet = cms.VPSet(cms.PSet(
294  record = cms.string('TrackerAlignmentRcd'),
295  tag = cms.string('.oO[tag]Oo.')
296  ))
297 
298 )
299 process.es_prefer_geom=cms.ESPrefer("PoolDBESSource","GeomToComp")
300 
301 from CondCore.DBCommon.CondDBSetup_cfi import *
302 
303 process.ZeroAPE = cms.ESSource("PoolDBESSource",CondDBSetup,
304  connect = cms.string('frontier://FrontierProd/CMS_COND_31X_FROM21X'),
305  timetype = cms.string("runnumber"),
306  toGet = cms.VPSet(
307  cms.PSet(
308  record = cms.string('TrackerAlignmentErrorRcd'),
309  tag = cms.string('TrackerIdealGeometryErrors210_mc')
310  ))
311  )
312 process.es_prefer_ZeroAPE = cms.ESPrefer("PoolDBESSource", "ZeroAPE")
313 
314 
315 process.source = cms.Source("EmptySource")
316 
317 process.maxEvents = cms.untracked.PSet(
318  input = cms.untracked.int32(1)
319 )
320 process.dump = cms.EDAnalyzer("TrackerGeometryIntoNtuples",
321  outputFile = cms.untracked.string('.oO[workdir]Oo./.oO[alignmentName]Oo.ROOTGeometry.root'),
322  outputTreename = cms.untracked.string('alignTree')
323 )
324 
325 process.p = cms.Path(process.dump)
326 """
327 
328 compareTemplate="""
329 import FWCore.ParameterSet.Config as cms
330 
331 process = cms.Process("validation")
332 
333 # global tag
334 process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
335 process.GlobalTag.globaltag = ".oO[GlobalTag]Oo."
336 process.load("Geometry.CMSCommonData.cmsIdealGeometryXML_cff")
337 
338 process.load("Geometry.TrackerNumberingBuilder.trackerNumberingGeometry_cfi")
339 
340 process.load("Geometry.TrackerGeometryBuilder.trackerGeometry_cfi")
341 
342 #process.load("Alignment.CommonAlignmentProducer.GlobalPosition_Frontier_cff")
343 # the input .GlobalPosition_Frontier_cff is providing the frontier://FrontierProd/CMS_COND_31X_ALIGNMENT in the release which does not provide the ideal geometry
344 #process.GlobalPosition.connect = 'frontier://FrontierProd/CMS_COND_31X_FROM21X'
345 
346 process.load("CondCore.DBCommon.CondDBSetup_cfi")
347 
348 process.MessageLogger = cms.Service("MessageLogger",
349  destinations = cms.untracked.vstring('detailedInfo',
350  'cout')
351 )
352 
353 process.source = cms.Source("EmptySource")
354 
355 process.maxEvents = cms.untracked.PSet(
356  input = cms.untracked.int32(1)
357 )
358 
359  # configuration of the Tracker Geometry Comparison Tool
360  # Tracker Geometry Comparison
361 process.load("Alignment.OfflineValidation.TrackerGeometryCompare_cfi")
362  # the input "IDEAL" is special indicating to use the ideal geometry of the release
363 
364 process.TrackerGeometryCompare.inputROOTFile1 = '.oO[referenceGeometry]Oo.'
365 process.TrackerGeometryCompare.inputROOTFile2 = '.oO[comparedGeometry]Oo.'
366 process.TrackerGeometryCompare.outputFile = ".oO[workdir]Oo./.oO[name]Oo..Comparison_common.oO[common]Oo..root"
367 process.TrackerGeometryCompare.levels = [ .oO[levels]Oo. ]
368 
369  ##FIXME!!!!!!!!!
370  ##replace TrackerGeometryCompare.writeToDB = .oO[dbOutput]Oo.
371  ##removed: dbOutputService
372 
373 process.p = cms.Path(process.TrackerGeometryCompare)
374 """
375 
376 dbOutputTemplate= """
377 //_________________________ db Output ____________________________
378  # setup for writing out to DB
379  include "CondCore/DBCommon/data/CondDBSetup.cfi"
380 # include "CondCore/DBCommon/data/CondDBCommon.cfi"
381 
382  service = PoolDBOutputService {
383  using CondDBSetup
384  VPSet toPut = {
385  { string record = "TrackerAlignmentRcd" string tag = ".oO[tag]Oo." },
386  { string record = "TrackerAlignmentErrorRcd" string tag = ".oO[errortag]Oo." }
387  }
388  string connect = "sqlite_file:.oO[workdir]Oo./.oO[name]Oo.Common.oO[common]Oo..db"
389  # untracked string catalog = "file:alignments.xml"
390  untracked string timetype = "runnumber"
391  }
392 """
393 
394 dbLoadTemplate="""
395 #from CondCore.DBCommon.CondDBSetup_cfi import *
396 from CalibTracker.Configuration.Common.PoolDBESSource_cfi import poolDBESSource
397 ##include private db object
398 ##
399 import CalibTracker.Configuration.Common.PoolDBESSource_cfi
400 process.trackerAlignment = CalibTracker.Configuration.Common.PoolDBESSource_cfi.poolDBESSource.clone(
401  connect = cms.string('.oO[dbpath]Oo.'),
402  timetype = cms.string("runnumber"),
403  toGet = cms.VPSet(cms.PSet(record = cms.string('TrackerAlignmentRcd'),
404  tag = cms.string('.oO[tag]Oo.')
405  ))
406  )
407 process.es_prefer_trackerAlignment = cms.ESPrefer("PoolDBESSource", "trackerAlignment")
408 
409 """
410 
411 APETemplate="""
412 from CondCore.DBCommon.CondDBSetup_cfi import *
413 process.APE = poolDBESSource.clone(
414  connect = cms.string('.oO[errordbpath]Oo.'),
415  timetype = cms.string("runnumber"),
416  toGet = cms.VPSet(cms.PSet(record = cms.string('TrackerAlignmentErrorRcd'),
417  tag = cms.string('.oO[errortag]Oo.')
418  ))
419  )
420 process.es_prefer_APE = cms.ESPrefer("PoolDBESSource", "APE")
421 """
422 
423 
424 
425 #batch job execution
426 scriptTemplate="""
427 #!/bin/bash
428 #init
429 ulimit -v 3072000
430 export STAGE_SVCCLASS=cmscafuser
431 source /afs/cern.ch/cms/sw/cmsset_default.sh
432 cd .oO[CMSSW_BASE]Oo./src
433 eval `scramv1 ru -sh`
434 rfmkdir -p .oO[workdir]Oo.
435 rfmkdir -p .oO[datadir]Oo.
436 
437 rm -f .oO[workdir]Oo./*
438 cd .oO[workdir]Oo.
439 
440 #run
441 pwd
442 df -h .
443 .oO[CommandLine]Oo.
444 echo "----"
445 echo "List of files in $(pwd):"
446 ls -ltr
447 echo "----"
448 echo ""
449 
450 
451 #retrive
452 rfmkdir -p .oO[logdir]Oo.
453 gzip LOGFILE_*_.oO[name]Oo..log
454 find .oO[workdir]Oo. -maxdepth 1 -name "LOGFILE*.oO[alignmentName]Oo.*" -print | xargs -I {} bash -c "rfcp {} .oO[logdir]Oo."
455 rfmkdir -p .oO[datadir]Oo.
456 find .oO[workdir]Oo. -maxdepth 1 -name "*.oO[alignmentName]Oo.*.root" -print | xargs -I {} bash -c "rfcp {} .oO[datadir]Oo."
457 #cleanup
458 rm -rf .oO[workdir]Oo.
459 echo "done."
460 """
461 
462 mergeTemplate="""
463 #!/bin/bash
464 #init
465 export STAGE_SVCCLASS=cmscafuser
466 source /afs/cern.ch/cms/sw/cmsset_default.sh
467 cd .oO[CMSSW_BASE]Oo./src
468 eval `scramv1 ru -sh`
469 rfmkdir -p .oO[workdir]Oo.
470 cd .oO[workdir]Oo.
471 
472 #run
473 .oO[DownloadData]Oo.
474 .oO[CompareAllignments]Oo.
475 
476 find ./ -maxdepth 1 -name "*_result.root" -print | xargs -I {} bash -c "rfcp {} .oO[datadir]Oo."
477 
478 .oO[RunExtendedOfflineValidation]Oo.
479 
480 #zip stdout and stderr from the farm jobs
481 gzip .oO[logdir]Oo./*.stderr
482 gzip .oO[logdir]Oo./*.stdout
483 
484 """
485 
486 compareAlignmentsExecution="""
487 #merge for .oO[validationId]Oo.
488 root -q -b '.oO[CMSSW_BASE]Oo./src/Alignment/OfflineValidation/scripts/compareAlignments.cc+(\".oO[compareStrings]Oo.\")'
489 mv result.root .oO[validationId]Oo._result.root
490 """
491 
492 extendedVaidationExecution="""
493 #run extended offline validation scripts
494 rfmkdir -p .oO[workdir]Oo./ExtendedOfflineValidation_Images
495 root -x -b -q .oO[extendeValScriptPath]Oo.
496 rfmkdir -p .oO[datadir]Oo./ExtendedOfflineValidation_Images
497 find .oO[workdir]Oo./ExtendedOfflineValidation_Images -maxdepth 1 -name \"*ps\" -print | xargs -I {} bash -c \"rfcp {} .oO[datadir]Oo./ExtendedOfflineValidation_Images\"
498 """
499 
500 extendedVaidationTemplate="""
501 void TkAlExtendedOfflineValidation()
502 {
503  // load framework lite just to find the CMSSW libs...
504  gSystem->Load("libFWCoreFWLite");
505  AutoLibraryLoader::enable();
506  //compile the makro
507  gROOT->ProcessLine(".L .oO[CMSSW_BASE]Oo./src/Alignment/OfflineValidation/macros/PlotAlignmentValidation.C++");
508 
509  .oO[extendedInstantiation]Oo.
510  gROOT->ProcessLine(".mkdir -p .oO[workdir]Oo./ExtendedOfflineValidation_Images/");
511  p.setOutputDir(".oO[workdir]Oo./ExtendedOfflineValidation_Images");
512  p.setTreeBaseDir(".oO[OfflineTreeBaseDir]Oo.");
513  p.plotDMR(".oO[DMRMethod]Oo.",.oO[DMRMinimum]Oo.);
514 }
515 """
516 
517 mcValidateTemplate="""
518 import FWCore.ParameterSet.Config as cms
519 
520 process = cms.Process("TkVal")
521 process.load("FWCore.MessageService.MessageLogger_cfi")
522 process.MessageLogger = cms.Service("MessageLogger",
523  destinations = cms.untracked.vstring('LOGFILE_McValidate_.oO[name]Oo.',
524  'cout')
525 )
526 
527 ### standard includes
528 process.load('Configuration/StandardSequences/GeometryPilot2_cff')
529 process.load("Configuration.StandardSequences.RawToDigi_cff")
530 process.load("Configuration.EventContent.EventContent_cff")
531 process.load("Configuration.StandardSequences.Reconstruction_cff")
532 process.load("Configuration.StandardSequences.MagneticField_cff")
533 process.load("SimGeneral.MixingModule.mixNoPU_cfi")
534 
535 ### conditions
536 process.load("Alignment.OfflineValidation.GlobalTag_cff")
537 process.GlobalTag.globaltag = '.oO[GlobalTag]Oo.'
538 
539 import CalibTracker.Configuration.Common.PoolDBESSource_cfi
540 
541 .oO[dbLoad]Oo.
542 
543 ### validation-specific includes
544 process.load("SimTracker.TrackAssociation.TrackAssociatorByHits_cfi")
545 process.load("Validation.RecoTrack.cuts_cff")
546 process.load("Validation.RecoTrack.MultiTrackValidator_cff")
547 process.load("SimGeneral.TrackingAnalysis.trackingParticles_cfi")
548 
549 ### configuration MultiTrackValidator ###
550 process.multiTrackValidator.outputFile = '.oO[outputFile]Oo.'
551 
552 process.multiTrackValidator.associators = ['TrackAssociatorByHits']
553 process.multiTrackValidator.UseAssociators = cms.bool(True)
554 process.multiTrackValidator.label = ['generalTracks']
555 
556 from Alignment.OfflineValidation..oO[RelValSample]Oo._cff import readFiles
557 from Alignment.OfflineValidation..oO[RelValSample]Oo._cff import secFiles
558 source = cms.Source ("PoolSource",
559  fileNames = readFiles,
560  secondaryFileNames = secFiles,
561  inputCommands = cms.untracked.vstring('keep *', 'drop *_MEtoEDMConverter_*_*') # hack to get rid of the memory consumption problem in 2_2_X and beond
562 )
563 
564 process.maxEvents = cms.untracked.PSet(
565  input = cms.untracked.int32(.oO[nEvents]Oo.)
566 )
567 
568 process.options = cms.untracked.PSet(
569  wantSummary = cms.untracked.bool(False),
570  Rethrow = cms.untracked.vstring("ProductNotFound"), # make this exception fatal
571  fileMode = cms.untracked.string('NOMERGE') # no ordering needed, but calls endRun/beginRun etc. at file boundaries
572 )
573 
574 process.source = source
575 
576 process.re_tracking_and_TP = cms.Sequence(process.mix*process.trackingParticles*
577  process.siPixelRecHits*process.siStripMatchedRecHits*
578  process.ckftracks*
579  process.cutsRecoTracks*
580  process.multiTrackValidator
581  )
582 
583 process.re_tracking = cms.Sequence(process.siPixelRecHits*process.siStripMatchedRecHits*
584  process.ckftracks*
585  process.cutsRecoTracks*
586  process.multiTrackValidator
587  )
588 
589 ### final path and endPath
590 process.p = cms.Path(process.re_tracking)
591 """
592 
593 TrackSplittingTemplate="""
594 import FWCore.ParameterSet.Config as cms
595 
596 process = cms.Process("splitter")
597 
598 # CMSSW.2.2.3
599 
600 # message logger
601 process.load("FWCore.MessageLogger.MessageLogger_cfi")
602 MessageLogger = cms.Service("MessageLogger",
603  destinations = cms.untracked.vstring('LOGFILE_TrackSplitting_.oO[name]Oo.',
604  'cout')
605 )
606 ## report only every 100th record
607 process.MessageLogger.cerr.FwkReport.reportEvery = 100
608 
609 process.load('Configuration.StandardSequences.Services_cff')
610 process.load('Configuration.StandardSequences.Geometry_cff')
611 
612 # including global tag
613 process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cfi")
614 # setting global tag
615 #process.GlobalTag.connect = "frontier://FrontierProd/CMS_COND_21X_GLOBALTAG"
616 process.GlobalTag.connect="frontier://FrontierProd/CMS_COND_31X_GLOBALTAG"
617 process.GlobalTag.globaltag = ".oO[GlobalTag]Oo."
618 
619 
620 ###########################################
621 ##necessary fix for the moment to avoid
622 ##Assymmetric forward layers in TrackerException going through path p
623 ##---- ScheduleExecutionFailure END
624 ##an exception occurred during current event processing
625 ##cms::Exception caught in EventProcessor and rethrown
626 ##---- EventProcessorFailure END
627 ############################################
628 #import CalibTracker.Configuration.Common.PoolDBESSource_cfi
629 from CondCore.DBCommon.CondDBSetup_cfi import *
630 #load the Global Position Rcd
631 process.globalPosition = cms.ESSource("PoolDBESSource", CondDBSetup,
632  toGet = cms.VPSet(cms.PSet(
633  record =cms.string('GlobalPositionRcd'),
634  tag= cms.string('IdealGeometry')
635  )),
636  connect = cms.string('frontier://FrontierProd/CMS_COND_31X_FROM21X')
637  )
638 process.es_prefer_GPRcd = cms.ESPrefer("PoolDBESSource","globalPosition")
639 ##########################################
640 
641 
642 # track selectors and refitting
643 process.load("Alignment.CommonAlignmentProducer.AlignmentTrackSelector_cfi")
644 process.load("RecoVertex.BeamSpotProducer.BeamSpot_cff")
645 process.load("RecoTracker.TrackProducer.TrackRefitters_cff")
646 
647 # including data...
648 process.load("Alignment.OfflineValidation..oO[superPointingDataset]Oo._cff")
649 
650 ## for craft SP skim v5
651 process.source.inputCommands = cms.untracked.vstring("keep *","drop *_*_*_FU","drop *_*_*_HLT","drop *_MEtoEDMConverter_*_*","drop *_lumiProducer_*_REPACKER")
652 process.source.dropDescendantsOfDroppedBranches = cms.untracked.bool( False )
653 
654 
655 process.maxEvents = cms.untracked.PSet(
656  input = cms.untracked.int32(.oO[nEvents]Oo.)
657 )
658 
659 
660 # magnetic field
661 process.load("Configuration.StandardSequences.MagneticField_38T_cff")
662 
663 # adding geometries
664 from CondCore.DBCommon.CondDBSetup_cfi import *
665 
666 # for craft
667 ## tracker alignment for craft...............................................................
668 .oO[dbLoad]Oo.
669 
670 .oO[APE]Oo.
671 
672 ## track hit filter.............................................................
673 
674 # refit tracks first
675 import RecoTracker.TrackProducer.TrackRefitters_cff
676 process.TrackRefitter1 = RecoTracker.TrackProducer.TrackRefitterP5_cfi.TrackRefitterP5.clone(
677  src = '.oO[TrackCollection]Oo.',
678  TrajectoryInEvent = True,
679  TTRHBuilder = "WithTrackAngle",
680  NavigationSchool = ""
681  )
682 
683 process.FittingSmootherRKP5.EstimateCut = -1
684 
685 # module configuration
686 # alignment track selector
687 process.AlignmentTrackSelector.src = "TrackRefitter1"
688 process.AlignmentTrackSelector.filter = True
689 process.AlignmentTrackSelector.applyBasicCuts = True
690 process.AlignmentTrackSelector.ptMin = 0.
691 process.AlignmentTrackSelector.pMin = 4.
692 process.AlignmentTrackSelector.ptMax = 9999.
693 process.AlignmentTrackSelector.pMax = 9999.
694 process.AlignmentTrackSelector.etaMin = -9999.
695 process.AlignmentTrackSelector.etaMax = 9999.
696 process.AlignmentTrackSelector.nHitMin = 10
697 process.AlignmentTrackSelector.nHitMin2D = 2
698 process.AlignmentTrackSelector.minHitsPerSubDet.inBPIX=4 ##skip tracks not passing the pixel
699 process.AlignmentTrackSelector.chi2nMax = 9999.
700 process.AlignmentTrackSelector.applyMultiplicityFilter = True
701 process.AlignmentTrackSelector.maxMultiplicity = 1
702 process.AlignmentTrackSelector.applyNHighestPt = False
703 process.AlignmentTrackSelector.nHighestPt = 1
704 process.AlignmentTrackSelector.seedOnlyFrom = 0
705 process.AlignmentTrackSelector.applyIsolationCut = False
706 process.AlignmentTrackSelector.minHitIsolation = 0.8
707 process.AlignmentTrackSelector.applyChargeCheck = False
708 process.AlignmentTrackSelector.minHitChargeStrip = 50.
709 process.AlignmentTrackSelector.minHitsPerSubDet.inBPIX = 2
710 #process.AlignmentTrackSelector.trackQualities = ["highPurity"]
711 #process.AlignmentTrackSelector.iterativeTrackingSteps = ["iter1","iter2"]
712 process.KFFittingSmootherWithOutliersRejectionAndRK.EstimateCut=30.0
713 process.KFFittingSmootherWithOutliersRejectionAndRK.MinNumberOfHits=4
714 #process.FittingSmootherRKP5.EstimateCut = 20.0
715 #process.FittingSmootherRKP5.MinNumberOfHits = 4
716 
717 # configuration of the track spitting module
718 # new cuts allow for cutting on the impact parameter of the original track
719 process.load("RecoTracker.FinalTrackSelectors.cosmicTrackSplitter_cfi")
720 process.cosmicTrackSplitter.tracks = 'AlignmentTrackSelector'
721 process.cosmicTrackSplitter.tjTkAssociationMapTag = 'TrackRefitter1'
722 #process.cosmicTrackSplitter.excludePixelHits = False
723 
724 #---------------------------------------------------------------------
725 # the output of the track hit filter are track candidates
726 # give them to the TrackProducer
727 process.load("RecoTracker.TrackProducer.CTFFinalFitWithMaterialP5_cff")
728 process.HitFilteredTracks = RecoTracker.TrackProducer.CTFFinalFitWithMaterialP5_cff.ctfWithMaterialTracksCosmics.clone(
729  src = 'cosmicTrackSplitter',
730  TrajectoryInEvent = True,
731  TTRHBuilder = "WithTrackAngle"
732 )
733 # second refit
734 process.TrackRefitter2 = process.TrackRefitter1.clone(
735  src = 'HitFilteredTracks'
736  )
737 
738 ### Now adding the construction of global Muons
739 # what Chang did...
740 process.load("Configuration.StandardSequences.ReconstructionCosmics_cff")
741 
742 process.cosmicValidation = cms.EDFilter("CosmicSplitterValidation",
743  ifSplitMuons = cms.bool(False),
744  ifTrackMCTruth = cms.bool(False),
745  checkIfGolden = cms.bool(False),
746  splitTracks = cms.InputTag("TrackRefitter2","","splitter"),
747  splitGlobalMuons = cms.InputTag("muons","","splitter"),
748  originalTracks = cms.InputTag("TrackRefitter1","","splitter"),
749  originalGlobalMuons = cms.InputTag("muons","","Rec")
750 )
751 
752 process.TFileService = cms.Service("TFileService",
753  fileName = cms.string('.oO[outputFile]Oo.')
754 )
755 
756 process.p = cms.Path(process.offlineBeamSpot*process.TrackRefitter1*process.AlignmentTrackSelector*process.cosmicTrackSplitter*process.HitFilteredTracks*process.TrackRefitter2*process.cosmicValidation)
757 """
758 
759 ###
760 # Alternate Templates
761 ###
762 
763 def alternateTemplate( templateName, alternateTemplateName ):
764 
765  if not templateName in globals().keys():
766  raise StandardError, "unkown template to replace %s"%templateName
767  if not alternateTemplateName in globals().keys():
768  raise StandardError, "unkown template to replace %s"%alternateTemplateName
769  globals()[ templateName ] = globals()[ alternateTemplateName ]
770  # = eval("configTemplates.%s"%"alternateTemplate")
771 
772 
773 LorentzAngleForDECO="""
774 process.stripLorentzAngle = cms.ESSource("PoolDBESSource",
775 # CondDBSetup,
776  DBParameters = cms.PSet(
777  messageLevel = cms.untracked.int32(2),
778  authenticationPath =
779  cms.untracked.string('/afs/cern.ch/cms/DB/conddb')
780  ),
781  connect = cms.string('sqlite_file:/afs/cern.ch/user/b/benhoob/public/LorentzAngle/SiStripLorentzAngle_Deco.db'),
782  toGet = cms.VPSet(cms.PSet(record = cms.string('SiStripLorentzAngleRcd'),
783  tag = cms.string('SiStripLorentzAngle_Deco') ))
784  )
785 
786 process.es_prefer_stripLorentzAngle = cms.ESPrefer("PoolDBESSource", "stripLorentzAngle")
787 """
788 ###
789 otherTemplate = """
790 schum schum
791 """
792 
793 yResidualsOfflineValidation="""
794 import FWCore.ParameterSet.Config as cms
795 
796 process = cms.Process("OfflineValidator")
797 
798 process.load("Alignment.OfflineValidation..oO[dataset]Oo._cff")
799 
800 process.source.inputCommands = cms.untracked.vstring('keep *', 'drop *_MEtoEDMConverter_*_*') # hack to get rid of the memory consumption problem in 2_2_X and beond
801 process.options = cms.untracked.PSet(
802  wantSummary = cms.untracked.bool(False),
803  Rethrow = cms.untracked.vstring("ProductNotFound"), # make this exception fatal
804  fileMode = cms.untracked.string('NOMERGE') # no ordering needed, but calls endRun/beginRun etc. at file boundaries
805 )
806 
807  ##
808  ## Maximum number of Events
809  ##
810 process.maxEvents = cms.untracked.PSet(
811  input = cms.untracked.int32(.oO[nEvents]Oo.)
812  )
813 
814  ##
815  ## Messages & Convenience
816  ##
817 process.load("FWCore.MessageLogger.MessageLogger_cfi")
818 process.MessageLogger = cms.Service("MessageLogger",
819  destinations = cms.untracked.vstring('LOGFILE_Offline_.oO[name]Oo.',
820  'cout')
821 )
822 
823  ## report only every 100th record
824  ##process.MessageLogger.cerr.FwkReport.reportEvery = 100
825 
826 
827  ##
828  ## Alignment Track Selection
829  ##
830 process.load("Alignment.CommonAlignmentProducer.AlignmentTrackSelector_cfi")
831 process.AlignmentTrackSelector.src = 'TrackRefitter1'
832 process.AlignmentTrackSelector.filter = True
833 process.AlignmentTrackSelector.applyBasicCuts = True
834 process.AlignmentTrackSelector.pMin = 4.
835 process.AlignmentTrackSelector.pMax = 9999.
836 process.AlignmentTrackSelector.ptMin = 0.
837 process.AlignmentTrackSelector.ptMax = 9999.
838 process.AlignmentTrackSelector.etaMin = -999.
839 process.AlignmentTrackSelector.etaMax = 999.
840 process.AlignmentTrackSelector.nHitMin = 8
841 process.AlignmentTrackSelector.nHitMin2D = 2
842 process.AlignmentTrackSelector.chi2nMax = 999.
843 process.AlignmentTrackSelector.applyMultiplicityFilter = False
844 process.AlignmentTrackSelector.maxMultiplicity = 1
845 process.AlignmentTrackSelector.applyNHighestPt = False
846 process.AlignmentTrackSelector.nHighestPt = 1
847 process.AlignmentTrackSelector.seedOnlyFrom = 0
848 process.AlignmentTrackSelector.applyIsolationCut = False
849 process.AlignmentTrackSelector.minHitIsolation = 0.8
850 process.AlignmentTrackSelector.applyChargeCheck = False
851 process.AlignmentTrackSelector.minHitChargeStrip = 50.
852 #process.AlignmentTrackSelector.trackQualities = ["highPurity"]
853 #process.AlignmentTrackSelector.iterativeTrackingSteps = ["iter1","iter2"]
854 
855 #### new FILTER
856 #-- new track hit filter
857 # TrackerTrackHitFilter takes as input the tracks/trajectories coming out from TrackRefitter1
858 process.load("RecoTracker.FinalTrackSelectors.TrackerTrackHitFilter_cff")
859 process.TrackerTrackHitFilter.src = 'TrackRefitter1'
860 process.TrackerTrackHitFilter.useTrajectories= True # this is needed only if you require some selections; but it will work even if you don't ask for them
861 process.TrackerTrackHitFilter.minimumHits = 8
862 process.TrackerTrackHitFilter.commands = cms.vstring("keep PXB","keep PXE","keep TIB","keep TID","keep TOB","keep TEC")
863 process.TrackerTrackHitFilter.detsToIgnore = [
864  # see https://hypernews.cern.ch/HyperNews/CMS/get/tracker-performance/484.html
865  # TIB / TID
866  369136710, 369136714, 402668822,
867  # TOB
868  436310989, 436310990, 436299301, 436299302,
869  # TEC
870  470340521, 470063045, 470063046, 470114669, 470114670, 470161093, 470161094, 470164333, 470164334, 470312005, 470312006, 470312009, 470067405, 470067406, 470128813
871 ]
872 process.TrackerTrackHitFilter.replaceWithInactiveHits = True
873 process.TrackerTrackHitFilter.stripAllInvalidHits = False
874 process.TrackerTrackHitFilter.rejectBadStoNHits = True
875 process.TrackerTrackHitFilter.StoNcommands = cms.vstring("ALL 14.0")
876 process.TrackerTrackHitFilter.rejectLowAngleHits= True
877 process.TrackerTrackHitFilter.TrackAngleCut= 0.35 # in rads, starting from the module surface
878 process.TrackerTrackHitFilter.usePixelQualityFlag= True
879 
880 #now we give the TrackCandidate coming out of the TrackerTrackHitFilter to the track producer
881 import RecoTracker.TrackProducer.CosmicFinalFitWithMaterialP5_cff
882 process.HitFilteredTracks = RecoTracker.TrackProducer.CosmicFinalFitWithMaterialP5_cff.cosmictrackfinderP5.clone(
883  src = 'TrackerTrackHitFilter'
884 )
885 
886  ##
887  ## Load and Configure TrackRefitter1
888  ##
889 
890 process.load("RecoTracker.TrackProducer.TrackRefitters_cff")
891 
892 process.TrackRefitter1 = RecoTracker.TrackProducer.TrackRefitterP5_cfi.TrackRefitterP5.clone(
893  src = '.oO[TrackCollection]Oo.',
894  TrajectoryInEvent = True,
895  TTRHBuilder = "WithTrackAngle",
896  NavigationSchool = ""
897 )
898 
899 process.TrackRefitter2 = process.TrackRefitter1.clone(
900  src = 'HitFilteredTracks')
901 
902 
903  ##
904  ## Get the BeamSpot
905  ##
906 process.load("RecoVertex.BeamSpotProducer.BeamSpot_cff")
907 
908  ##
909  ## GlobalTag Conditions (if needed)
910  ##
911 process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
912 process.GlobalTag.globaltag = ".oO[GlobalTag]Oo."
913 #process.GlobalTag.connect="frontier://FrontierProd/CMS_COND_21X_GLOBALTAG"
914 process.GlobalTag.connect="frontier://FrontierProd/CMS_COND_31X_GLOBALTAG"
915 
916 ## LAYERWISE Lorentz Angle ###################
917 
918 process.SiStripLorentzAngle = cms.ESSource("PoolDBESSource",
919  BlobStreamerName =
920 cms.untracked.string('TBufferBlobStreamingService'),
921  DBParameters = cms.PSet(
922  messageLevel = cms.untracked.int32(2),
923  authenticationPath =
924 cms.untracked.string('/afs/cern.ch/cms/DB/conddb')
925  ),
926  timetype = cms.string('runnumber'),
927  toGet = cms.VPSet(cms.PSet(
928  record = cms.string('SiStripLorentzAngleRcd'),
929  tag = cms.string('SiStripLA_CRAFT_layers')
930  )),
931  connect = cms.string('sqlite_file:/afs/cern.ch/user/j/jdraeger/public/LA_object/LA_CRAFT_layers.db')
932 )
933 process.es_prefer_SiStripLorentzAngle = cms.ESPrefer("PoolDBESSource","SiStripLorentzAngle")
934 
935  ##
936  ## Geometry
937  ##
938 process.load("Configuration.StandardSequences.Geometry_cff")
939 
940  ##
941  ## Magnetic Field
942  ##
943 process.load("Configuration/StandardSequences/MagneticField_38T_cff")
944 
945 .oO[APE]Oo.
946 
947 .oO[dbLoad]Oo.
948 
949 ## to apply misalignments
950 #TrackerDigiGeometryESModule.applyAlignment = True
951 
952  ##
953  ## Load and Configure OfflineValidation
954  ##
955 process.load("Alignment.OfflineValidation.TrackerOfflineValidation_.oO[offlineValidationMode]Oo._cff")
956 process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..Tracks = 'TrackRefitter2'
957 process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..trajectoryInput = 'TrackRefitter2'
958 process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..moduleLevelHistsTransient = cms.bool(.oO[offlineModuleLevelHistsTransient]Oo.)
959 process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..stripYResiduals = True
960 .oO[offlineValidationFileOutput]Oo.
961 
962  ##
963  ## PATH
964  ##
965 process.p = cms.Path(process.offlineBeamSpot*process.TrackRefitter1*process.TrackerTrackHitFilter*process.HitFilteredTracks
966  *process.TrackRefitter2*process.AlignmentTrackSelector*process.seqTrackerOfflineValidation.oO[offlineValidationMode]Oo.)
967 
968 """
969 
970 zeroAPETemplate="""
971 from CondCore.DBCommon.CondDBSetup_cfi import *
972 process.APE = cms.ESSource("PoolDBESSource",CondDBSetup,
973  connect = cms.string('frontier://FrontierProd/CMS_COND_31X_FROM21X'),
974  timetype = cms.string("runnumber"),
975  toGet = cms.VPSet(
976  cms.PSet(record = cms.string('TrackerAlignmentErrorRcd'),
977  tag = cms.string('TrackerIdealGeometryErrors210_mc')
978  ))
979  )
980 process.es_prefer_APE = cms.ESPrefer("PoolDBESSource", "APE")
981 """
982 
983 CosmicsOfflineValidation="""
984 import FWCore.ParameterSet.Config as cms
985 
986 process = cms.Process("OfflineValidator")
987 
988 process.load("Alignment.OfflineValidation..oO[dataset]Oo._cff")
989 
990 #process.source.inputCommands = cms.untracked.vstring('keep *', 'drop *_MEtoEDMConverter_*_*') # hack to get rid of the memory consumption problem in 2_2_X and beond
991 process.options = cms.untracked.PSet(
992  wantSummary = cms.untracked.bool(False),
993  Rethrow = cms.untracked.vstring("ProductNotFound"), # make this exception fatal
994  fileMode = cms.untracked.string('NOMERGE') # no ordering needed, but calls endRun/beginRun etc. at file boundaries
995 )
996 
997  ##
998  ## Maximum number of Events
999  ##
1000 process.maxEvents = cms.untracked.PSet(
1001  input = cms.untracked.int32(.oO[nEvents]Oo.)
1002  )
1003 
1004  ##
1005  ## Messages & Convenience
1006  ##
1007 process.load("FWCore.MessageLogger.MessageLogger_cfi")
1008 process.MessageLogger.cerr = cms.untracked.PSet(placeholder = cms.untracked.bool(True))
1009 process.MessageLogger.cout = cms.untracked.PSet(INFO = cms.untracked.PSet(
1010 reportEvery = cms.untracked.int32(1000) # every 1000th only
1011 # limit = cms.untracked.int32(10) # or limit to 10 printouts...
1012 ))
1013 process.MessageLogger.statistics.append('cout')
1014 
1015 
1016 #-- Track hit filter
1017 # TrackerTrackHitFilter takes as input the tracks/trajectories coming out from TrackRefitter1
1018 process.load("RecoTracker.FinalTrackSelectors.TrackerTrackHitFilter_cff")
1019 process.TrackerTrackHitFilter.src = 'TrackRefitter1'
1020 
1021 
1022 
1023 #-- Alignment Track Selection
1024 process.load("Alignment.CommonAlignmentProducer.AlignmentTrackSelector_cfi")
1025 process.AlignmentTrackSelector.src = 'HitFilteredTracks'
1026 process.AlignmentTrackSelector.filter = True
1027 
1028 .oO[TrackSelectionTemplate]Oo.
1029 
1030 #now we give the TrackCandidate coming out of the TrackerTrackHitFilter to the track producer
1031 import RecoTracker.TrackProducer.CTFFinalFitWithMaterialP5_cff
1032 process.HitFilteredTracks = RecoTracker.TrackProducer.CTFFinalFitWithMaterialP5_cff.ctfWithMaterialTracksCosmics.clone(
1033  src = 'TrackerTrackHitFilter',
1034 ### TrajectoryInEvent = True,
1035  NavigationSchool = '',
1036  TTRHBuilder = "WithAngleAndTemplate"
1037 )
1038 
1039  ##
1040  ## Load and Configure TrackRefitter1
1041  ##
1042 
1043 
1044 #############
1045 process.load("RecoTracker.TrackProducer.TrackRefitters_cff")
1046 
1047 process.TrackRefitter1 = process.TrackRefitterP5.clone(
1048  src = 'ALCARECOTkAlCosmicsCTF0T',
1049  TrajectoryInEvent = True,
1050  NavigationSchool = '',
1051  TTRHBuilder = "WithAngleAndTemplate"
1052 )
1053 process.TrackRefitter2 = process.TrackRefitter1.clone(
1054  src = 'AlignmentTrackSelector',
1055 
1056  )
1057 
1058 
1059  ##
1060  ## Get the BeamSpot
1061  ##
1062 process.load("RecoVertex.BeamSpotProducer.BeamSpot_cff")
1063 
1064  ##
1065  ## GlobalTag Conditions (if needed)
1066  ##
1067 process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
1068 process.GlobalTag.connect = "frontier://FrontierProd/CMS_COND_31X_GLOBALTAG"
1069 process.GlobalTag.globaltag = ".oO[GlobalTag]Oo."
1070 
1071 
1072 .oO[LorentzAngleTemplate]Oo.
1073 
1074  ##
1075  ## Geometry
1076  ##
1077 process.load("Configuration.StandardSequences.Geometry_cff")
1078 
1079  ##
1080  ## Magnetic Field
1081  ##
1082 process.load("Configuration/StandardSequences/MagneticField_38T_cff")
1083 
1084 .oO[dbLoad]Oo.
1085 
1086 .oO[APE]Oo.
1087 
1088 ## to apply misalignments
1089 #TrackerDigiGeometryESModule.applyAlignment = True
1090 
1091  ##
1092  ## Load and Configure OfflineValidation
1093  ##
1094 
1095 process.load("Alignment.OfflineValidation.TrackerOfflineValidation_.oO[offlineValidationMode]Oo._cff")
1096 process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..Tracks = 'TrackRefitter2'
1097 process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..trajectoryInput = 'TrackRefitter2'
1098 process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..moduleLevelHistsTransient = cms.bool(.oO[offlineModuleLevelHistsTransient]Oo.)
1099 process.TFileService.fileName = '.oO[outputFile]Oo.'
1100 
1101  ##
1102  ## PATH
1103  ##
1104 process.p = cms.Path(process.offlineBeamSpot*process.TrackRefitter1*process.TrackerTrackHitFilter*process.HitFilteredTracks
1105  *process.AlignmentTrackSelector*process.TrackRefitter2*process.seqTrackerOfflineValidation.oO[offlineValidationMode]Oo.)
1106 
1107 
1108 """
1109 
1110 
1111 CosmicsAt0TOfflineValidation="""
1112 import FWCore.ParameterSet.Config as cms
1113 
1114 process = cms.Process("OfflineValidator")
1115 
1116 process.load("Alignment.OfflineValidation..oO[dataset]Oo._cff")
1117 
1118 #process.source.inputCommands = cms.untracked.vstring('keep *', 'drop *_MEtoEDMConverter_*_*') # hack to get rid of the memory consumption problem in 2_2_X and beond
1119 process.options = cms.untracked.PSet(
1120  wantSummary = cms.untracked.bool(False),
1121  Rethrow = cms.untracked.vstring("ProductNotFound"), # make this exception fatal
1122  fileMode = cms.untracked.string('NOMERGE') # no ordering needed, but calls endRun/beginRun etc. at file boundaries
1123 )
1124 
1125  ##
1126  ## Maximum number of Events
1127  ##
1128 process.maxEvents = cms.untracked.PSet(
1129  input = cms.untracked.int32(.oO[nEvents]Oo.)
1130  )
1131 
1132  ##
1133  ## Messages & Convenience
1134  ##
1135 process.load("FWCore.MessageLogger.MessageLogger_cfi")
1136 process.MessageLogger.cerr = cms.untracked.PSet(placeholder = cms.untracked.bool(True))
1137 process.MessageLogger.cout = cms.untracked.PSet(INFO = cms.untracked.PSet(
1138 reportEvery = cms.untracked.int32(1000) # every 1000th only
1139 # limit = cms.untracked.int32(10) # or limit to 10 printouts...
1140 ))
1141 process.MessageLogger.statistics.append('cout')
1142 
1143 
1144 #-- Track hit filter
1145 # TrackerTrackHitFilter takes as input the tracks/trajectories coming out from TrackRefitter1
1146 process.load("RecoTracker.FinalTrackSelectors.TrackerTrackHitFilter_cff")
1147 process.TrackerTrackHitFilter.src = 'TrackRefitter1'
1148 
1149 #-- Alignment Track Selection
1150 process.load("Alignment.CommonAlignmentProducer.AlignmentTrackSelector_cfi")
1151 process.AlignmentTrackSelector.src = 'HitFilteredTracks'
1152 process.AlignmentTrackSelector.filter = True
1153 
1154 .oO[TrackSelectionTemplate]Oo.
1155 # Override the pmin setting since not meaningful with B=0T
1156 process.AlignmentTrackSelector.pMin = 4.
1157 
1158 #### momentum constraint for 0T
1159 # First momentum constraint
1160 process.load("RecoTracker.TrackProducer.MomentumConstraintProducer_cff")
1161 import RecoTracker.TrackProducer.MomentumConstraintProducer_cff
1162 process.AliMomConstraint1 = RecoTracker.TrackProducer.MomentumConstraintProducer_cff.MyMomConstraint.clone()
1163 process.AliMomConstraint1.src = '.oO[TrackCollection]Oo.'
1164 process.AliMomConstraint1.fixedMomentum = 5.0
1165 process.AliMomConstraint1.fixedMomentumError = 0.005
1166 
1167 # Second momentum constraint
1168 #process.load("RecoTracker.TrackProducer.MomentumConstraintProducer_cff")
1169 #import RecoTracker.TrackProducer.MomentumConstraintProducer_cff
1170 #process.AliMomConstraint2 = RecoTracker.TrackProducer.MomentumConstraintProducer_cff.MyMomConstraint.clone()
1171 #process.AliMomConstraint2.src = 'AlignmentTrackSelector'
1172 #process.AliMomConstraint2.fixedMomentum = 5.0
1173 #process.AliMomConstraint2.fixedMomentumError = 0.005
1174 
1175 
1176 
1177 #now we give the TrackCandidate coming out of the TrackerTrackHitFilter to the track producer
1178 import RecoTracker.TrackProducer.CTFFinalFitWithMaterialP5_cff
1179 process.HitFilteredTracks = RecoTracker.TrackProducer.CTFFinalFitWithMaterialP5_cff.ctfWithMaterialTracksCosmics.clone(
1180  src = 'TrackerTrackHitFilter'
1181 ### ,
1182 ### TrajectoryInEvent = True,
1183 ### TTRHBuilder = "WithAngleAndTemplate"
1184 )
1185 
1186  ##
1187  ## Load and Configure TrackRefitter1
1188  ##
1189 
1190 process.load("RecoTracker.TrackProducer.TrackRefitters_cff")
1191 
1192 #############
1193 # parameters for TrackRefitter
1194 #process.load("RecoTracker.TrackProducer.RefitterWithMaterial_cff")
1195 import RecoTracker.TrackProducer.TrackRefitters_cff
1196 process.TrackRefitter1 = process.TrackRefitterP5.clone(
1197  src = '.oO[TrackCollection]Oo.'#'AliMomConstraint1',
1198  TrajectoryInEvent = True,
1199  TTRHBuilder = "WithAngleAndTemplate",
1200  NavigationSchool = "",
1201  constraint = 'momentum', ### SPECIFIC FOR CRUZET
1202  srcConstr='AliMomConstraint1' ### SPECIFIC FOR CRUZET$works only with tag V02-10-02 TrackingTools/PatternTools / or CMSSW >=31X
1203 )
1204 
1205 process.TrackRefitter2 = process.TrackRefitter1.clone(
1206  src = 'AlignmentTrackSelector',
1207  srcConstr='AliMomConstraint1',
1208  constraint = 'momentum' ### SPECIFIC FOR CRUZET
1209 )
1210 
1211 
1212  ##
1213  ## Get the BeamSpot
1214  ##
1215 process.load("RecoVertex.BeamSpotProducer.BeamSpot_cff")
1216 
1217  ##
1218  ## GlobalTag Conditions (if needed)
1219  ##
1220 process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
1221 process.GlobalTag.globaltag = ".oO[GlobalTag]Oo."
1222 process.GlobalTag.connect="frontier://FrontierProd/CMS_COND_31X_GLOBALTAG"
1223 
1224 .oO[LorentzAngleTemplate]Oo.
1225 
1226  ##
1227  ## Geometry
1228  ##
1229 process.load("Configuration.StandardSequences.Geometry_cff")
1230 
1231  ##
1232  ## Magnetic Field
1233  ##
1234 #process.load("Configuration/StandardSequences/MagneticField_38T_cff")
1235 process.load("Configuration.StandardSequences.MagneticField_0T_cff") # 0T runs
1236 
1237 .oO[dbLoad]Oo.
1238 
1239 .oO[APE]Oo.
1240 
1241 ## to apply misalignments
1242 #TrackerDigiGeometryESModule.applyAlignment = True
1243 
1244  ##
1245  ## Load and Configure OfflineValidation
1246  ##
1247 process.load("Alignment.OfflineValidation.TrackerOfflineValidation_.oO[offlineValidationMode]Oo._cff")
1248 process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..Tracks = 'TrackRefitter2'
1249 process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..trajectoryInput = 'TrackRefitter2'
1250 process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..moduleLevelHistsTransient = cms.bool(.oO[offlineModuleLevelHistsTransient]Oo.)
1251 process.TFileService.fileName = '.oO[outputFile]Oo.'
1252 
1253  ##
1254  ## PATH
1255  ##
1256 
1257 process.p = cms.Path(process.offlineBeamSpot*process.AliMomConstraint1*process.TrackRefitter1*process.TrackerTrackHitFilter*process.HitFilteredTracks
1258  *process.AlignmentTrackSelector*process.TrackRefitter2*process.seqTrackerOfflineValidation.oO[offlineValidationMode]Oo.)
1259 
1260 
1261 """
1262 TrackSelectionCosmicsData = """
1263 ##### For Tracks:
1264 process.AlignmentTrackSelector.applyBasicCuts = True
1265 # Note that pMin is overridden and set to zero in
1266 # the offlineTemplate0T
1267 process.AlignmentTrackSelector.pMin = 4.
1268 process.AlignmentTrackSelector.pMax = 9999.
1269 process.AlignmentTrackSelector.ptMin = 0.
1270 process.AlignmentTrackSelector.ptMax = 9999.
1271 process.AlignmentTrackSelector.etaMin = -999.
1272 process.AlignmentTrackSelector.etaMax = 999.
1273 process.AlignmentTrackSelector.nHitMin = 8
1274 process.AlignmentTrackSelector.nHitMin2D = 2
1275 process.AlignmentTrackSelector.chi2nMax = 999.
1276 process.AlignmentTrackSelector.applyMultiplicityFilter = False
1277 process.AlignmentTrackSelector.maxMultiplicity = 1
1278 process.AlignmentTrackSelector.applyNHighestPt = False
1279 process.AlignmentTrackSelector.nHighestPt = 1
1280 process.AlignmentTrackSelector.seedOnlyFrom = 0
1281 process.AlignmentTrackSelector.applyIsolationCut = False
1282 process.AlignmentTrackSelector.minHitIsolation = 0.8
1283 process.AlignmentTrackSelector.applyChargeCheck = False
1284 process.AlignmentTrackSelector.minHitChargeStrip = 50.
1285 #process.AlignmentTrackSelector.trackQualities = ["highPurity"]
1286 #process.AlignmentTrackSelector.iterativeTrackingSteps = ["iter1","iter2"]
1287 
1288 ##### For Hits:
1289 process.TrackerTrackHitFilter.useTrajectories= True # this is needed only if you require some selections; but it will work even if you don't ask for them
1290 process.TrackerTrackHitFilter.minimumHits = 8
1291 process.TrackerTrackHitFilter.commands = cms.vstring("keep PXB","keep PXE","keep TIB","keep TID","keep TOB","keep TEC")
1292 process.TrackerTrackHitFilter.detsToIgnore = [
1293  # see https://hypernews.cern.ch/HyperNews/CMS/get/tracker-performance/484.html
1294  # TIB / TID
1295  #369136710, 369136714, 402668822,
1296  # TOB
1297  #436310989, 436310990, 436299301, 436299302,
1298  # TEC
1299  #470340521, 470063045, 470063046, 470114669, 470114670, 470161093, 470161094, 470164333, 470164334, 470312005, 470312006, 470312009, 470067405, 470067406, 470128813
1300 ]
1301 process.TrackerTrackHitFilter.replaceWithInactiveHits = True
1302 process.TrackerTrackHitFilter.stripAllInvalidHits = False
1303 process.TrackerTrackHitFilter.rejectBadStoNHits = True
1304 process.TrackerTrackHitFilter.StoNcommands = cms.vstring("ALL 18.0")
1305 process.TrackerTrackHitFilter.rejectLowAngleHits= True
1306 process.TrackerTrackHitFilter.TrackAngleCut= 0.35 # in rads, starting from the module surface
1307 process.TrackerTrackHitFilter.usePixelQualityFlag= True
1308 """
1309 
1310 TrackSelectionMinBiasData = """
1311 ##### For Tracks:collisions taken in deco mode
1312 
1313 process.AlignmentTrackSelector.applyBasicCuts = True
1314 # Note that pMin is overridden and set to zero in
1315 # the offlineTemplate0T
1316 process.AlignmentTrackSelector.pMin = 3
1317 process.AlignmentTrackSelector.pMax = 9999.
1318 process.AlignmentTrackSelector.ptMin = 0.65
1319 process.AlignmentTrackSelector.ptMax = 9999.
1320 process.AlignmentTrackSelector.etaMin = -999.
1321 process.AlignmentTrackSelector.etaMax = 999.
1322 process.AlignmentTrackSelector.nHitMin = 8
1323 process.AlignmentTrackSelector.nHitMin2D = 2
1324 process.AlignmentTrackSelector.chi2nMax = 999.
1325 process.AlignmentTrackSelector.applyMultiplicityFilter = False
1326 process.AlignmentTrackSelector.maxMultiplicity = 1
1327 process.AlignmentTrackSelector.applyNHighestPt = False
1328 process.AlignmentTrackSelector.nHighestPt = 1
1329 process.AlignmentTrackSelector.seedOnlyFrom = 0
1330 process.AlignmentTrackSelector.applyIsolationCut = False
1331 process.AlignmentTrackSelector.minHitIsolation = 0.8
1332 process.AlignmentTrackSelector.applyChargeCheck = False
1333 process.AlignmentTrackSelector.minHitChargeStrip = 50.
1334 #process.AlignmentTrackSelector.trackQualities = ["highPurity"]
1335 #process.AlignmentTrackSelector.iterativeTrackingSteps = ["iter1","iter2"]
1336 
1337 ##### For Hits:
1338 process.TrackerTrackHitFilter.useTrajectories= True # this is needed only if you require some selections; but it will work even if you don't ask for them
1339 process.TrackerTrackHitFilter.minimumHits = 8
1340 process.TrackerTrackHitFilter.commands = cms.vstring("keep PXB","keep PXE","keep TIB","keep TID","keep TOB","keep TEC")
1341 process.TrackerTrackHitFilter.detsToIgnore = [
1342  # see https://hypernews.cern.ch/HyperNews/CMS/get/tracker-performance/484.html
1343  # TIB / TID
1344  #369136710, 369136714, 402668822,
1345  # TOB
1346  #436310989, 436310990, 436299301, 436299302,
1347  # TEC
1348  #470340521, 470063045, 470063046, 470114669, 470114670, 470161093, 470161094, 470164333, 470164334, 470312005, 470312006, 470312009, 470067405, 470067406, 470128813
1349 ]
1350 process.TrackerTrackHitFilter.replaceWithInactiveHits = True
1351 process.TrackerTrackHitFilter.stripAllInvalidHits = False
1352 process.TrackerTrackHitFilter.rejectBadStoNHits = True
1353 process.TrackerTrackHitFilter.StoNcommands = cms.vstring("ALL 12.0")
1354 process.TrackerTrackHitFilter.rejectLowAngleHits= True
1355 process.TrackerTrackHitFilter.TrackAngleCut= 0.17 # in rads, starting from the module surface
1356 process.TrackerTrackHitFilter.usePixelQualityFlag= True
1357 
1358 ##############
1359 ##Trigger sequence
1360 #############
1361 #bit 0 is selecting bunch crossing
1362 #bit 40 MinBias trigger
1363 
1364 
1365 process.triggerSelection=cms.Sequence(process.bptxAnd*process.bit40)
1366 
1367 """
def alternateTemplate
Alternate Templates.