00001
00002
00003 offlineTemplate = """
00004 import FWCore.ParameterSet.Config as cms
00005
00006 process = cms.Process("OfflineValidator")
00007
00008 process.load("Alignment.OfflineValidation..oO[dataset]Oo._cff")
00009
00010 process.options = cms.untracked.PSet(
00011 wantSummary = cms.untracked.bool(False),
00012 Rethrow = cms.untracked.vstring("ProductNotFound"), # make this exception fatal
00013 fileMode = cms.untracked.string('NOMERGE') # no ordering needed, but calls endRun/beginRun etc. at file boundaries
00014 )
00015
00016 ##
00017 ## Maximum number of Events
00018 ##
00019 process.maxEvents = cms.untracked.PSet(
00020 input = cms.untracked.int32(.oO[nEvents]Oo.)
00021 )
00022
00023 ##
00024 ## Messages & Convenience
00025 ##
00026 process.load("FWCore.MessageLogger.MessageLogger_cfi")
00027 process.MessageLogger.cerr = cms.untracked.PSet(placeholder = cms.untracked.bool(True))
00028 process.MessageLogger.cout = cms.untracked.PSet(INFO = cms.untracked.PSet(
00029 reportEvery = cms.untracked.int32(1000) # every 1000th only
00030 # limit = cms.untracked.int32(10) # or limit to 10 printouts...
00031 ))
00032 process.MessageLogger.statistics.append('cout')
00033
00034 #############################################################
00035 ##select trigger bits 40 OR 41
00036 ##AND NOT (36 OR 37 OR 38 OR 39)
00037 ##trigger bit 0 is selecting crossing bunches (not in MC)
00038 ##########################################################
00039 process.load('L1TriggerConfig.L1GtConfigProducers.L1GtTriggerMaskTechTrigConfig_cff')
00040 process.load('HLTrigger/HLTfilters/hltLevel1GTSeed_cfi')
00041
00042 #Good Bunch Crossings
00043 process.bptxAnd = process.hltLevel1GTSeed.clone(L1TechTriggerSeeding = cms.bool(True), L1SeedsLogicalExpression = cms.string('0'))
00044 #BSCNOBEAMHALO
00045 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))'))
00046
00047 #Physics declared
00048 process.load('HLTrigger.special.hltPhysicsDeclared_cfi')
00049 process.hltPhysicsDeclared.L1GtReadoutRecordTag = 'gtDigis'
00050
00051
00052 #############################################################
00053 ##select only high purity tracks
00054 ##has to run first as necessary information
00055 ##is only available in initial track selection
00056 ##(Quality information is thrown away by the tracker refitters)
00057 ##########################################################
00058 import Alignment.CommonAlignmentProducer.AlignmentTrackSelector_cfi
00059 process.HighPuritySelector = Alignment.CommonAlignmentProducer.AlignmentTrackSelector_cfi.AlignmentTrackSelector.clone(
00060 applyBasicCuts = True,
00061 filter = True,
00062 src = '.oO[TrackCollection]Oo.',
00063 trackQualities = ["highPurity"]
00064 )
00065
00066 ###############################################################
00067 ## Quality filters on the event (REAL DATA - FIRST COLLISIONS DEC09 ONLY!)
00068 ## see https://twiki.cern.ch/twiki/bin/viewauth/CMS/TRKPromptFeedBack#Event_and_track_selection_recipe
00069 ##NOT in PATH yet, to be commented in, if necessay
00070 ##
00071 #########################################################
00072 ############################################################################
00073 ##Produce Primary Vertex Collection needed for later analysis
00074 ############################################################################
00075 #process.load('TrackingTools/TransientTrack/TransientTrackBuilder_cfi')
00076 #process.load("RecoVertex.PrimaryVertexProducer.OfflinePrimaryVertices_cfi")
00077 #process.offlinePrimaryVertices.TrackLabel = 'ALCARECOTkAlMinBias'
00078
00079 process.oneGoodVertexFilter = cms.EDFilter("VertexSelector",
00080 src = cms.InputTag("offlinePrimaryVertices"),
00081 cut = cms.string("!isFake && ndof > 4 && abs(z) <= 15 && position.Rho <= 2"), # tracksSize() > 3 for the older cut
00082 filter = cms.bool(True), # otherwise it won't filter the events, just produce an empty vertex collection.
00083 )
00084
00085
00086
00087 process.FilterGoodEvents=cms.Sequence(#process.HighPuritySelector*
00088 process.oneGoodVertexFilter)
00089
00090
00091 process.noScraping= cms.EDFilter("FilterOutScraping",
00092 src=cms.InputTag("ALCARECOTkAlMinBias"),
00093 applyfilter = cms.untracked.bool(True),
00094 debugOn = cms.untracked.bool(False), ## Or 'True' to get some per-event info
00095 numtrack = cms.untracked.uint32(10),
00096 thresh = cms.untracked.double(0.25)
00097 )
00098 ####################################
00099
00100
00101
00102
00103
00104 #-- Track hit filter
00105 # TrackerTrackHitFilter takes as input the tracks/trajectories coming out from TrackRefitter1
00106 process.load("RecoTracker.FinalTrackSelectors.TrackerTrackHitFilter_cff")
00107 process.TrackerTrackHitFilter.src = 'TrackRefitter1'
00108
00109 #-- Alignment Track Selection
00110 process.load("Alignment.CommonAlignmentProducer.AlignmentTrackSelector_cfi")
00111 process.AlignmentTrackSelector.src = 'HitFilteredTracks'
00112 process.AlignmentTrackSelector.filter = True
00113
00114 .oO[TrackSelectionTemplate]Oo.
00115
00116 #now we give the TrackCandidate coming out of the TrackerTrackHitFilter to the track producer
00117 import RecoTracker.TrackProducer.CTFFinalFitWithMaterial_cff
00118 process.HitFilteredTracks = RecoTracker.TrackProducer.CTFFinalFitWithMaterial_cff.ctfWithMaterialTracks.clone(
00119 src = 'TrackerTrackHitFilter',
00120 NavigationSchool = "",
00121
00122 ### TrajectoryInEvent = True,
00123 TTRHBuilder = "WithAngleAndTemplate"
00124 )
00125
00126 ##
00127 ## Load and Configure TrackRefitter1
00128 ##
00129
00130 process.load("RecoTracker.TrackProducer.TrackRefitters_cff")
00131
00132 #############
00133 # parameters for TrackRefitter
00134 #process.load("RecoTracker.TrackProducer.RefitterWithMaterial_cff")
00135 import RecoTracker.TrackProducer.TrackRefitters_cff
00136 process.TrackRefitter1 = process.TrackRefitter.clone(
00137 src = 'HighPuritySelector',
00138 TrajectoryInEvent = True,
00139 TTRHBuilder = "WithAngleAndTemplate",
00140 NavigationSchool = ""
00141 )
00142 process.TrackRefitter2 = process.TrackRefitter1.clone(
00143 # src = 'HitFilteredTracks')
00144 src = 'AlignmentTrackSelector'
00145 )
00146
00147
00148 ##
00149 ## Get the BeamSpot
00150 ##
00151 process.load("RecoVertex.BeamSpotProducer.BeamSpot_cff")
00152
00153 ##
00154 ## GlobalTag Conditions (if needed)
00155 ##
00156 process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
00157 process.GlobalTag.globaltag = ".oO[GlobalTag]Oo."
00158
00159
00160 .oO[LorentzAngleTemplate]Oo.
00161
00162 ##
00163 ## Geometry
00164 ##
00165 process.load("Configuration.StandardSequences.Geometry_cff")
00166
00167 ##
00168 ## Magnetic Field
00169 ##
00170 process.load("Configuration/StandardSequences/MagneticField_38T_cff")
00171
00172 .oO[dbLoad]Oo.
00173
00174 .oO[condLoad]Oo.
00175
00176 .oO[APE]Oo.
00177
00178 ## to apply misalignments
00179 #TrackerDigiGeometryESModule.applyAlignment = True
00180
00181 ##
00182 ## Load and Configure OfflineValidation and Output File
00183 ##
00184 process.load("Alignment.OfflineValidation.TrackerOfflineValidation_.oO[offlineValidationMode]Oo._cff")
00185 process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..Tracks = 'TrackRefitter2'
00186 process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..trajectoryInput = 'TrackRefitter2'
00187 process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..moduleLevelHistsTransient = .oO[offlineModuleLevelHistsTransient]Oo.
00188 process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..moduleLevelProfiles = .oO[offlineModuleLevelProfiles]Oo.
00189 .oO[offlineValidationFileOutput]Oo.
00190
00191 ##
00192 ## PATH
00193 ##
00194 process.p = cms.Path(
00195 process.triggerSelection*
00196 process.offlineBeamSpot*process.HighPuritySelector*process.TrackRefitter1*process.TrackerTrackHitFilter*process.HitFilteredTracks
00197 *process.AlignmentTrackSelector*process.TrackRefitter2*process.seqTrackerOfflineValidation.oO[offlineValidationMode]Oo.)
00198
00199 """
00200
00201
00202
00203
00204 offlineParallelTemplate = """
00205 import FWCore.ParameterSet.Config as cms
00206
00207 process = cms.Process("OfflineValidator")
00208
00209 process.load("Alignment.OfflineValidation..oO[dataset]Oo._cff")
00210
00211 process.options = cms.untracked.PSet(
00212 wantSummary = cms.untracked.bool(False),
00213 Rethrow = cms.untracked.vstring("ProductNotFound"), # make this exception fatal
00214 fileMode = cms.untracked.string('NOMERGE') # no ordering needed, but calls endRun/beginRun etc. at file boundaries
00215 )
00216
00217 ##
00218 ## Maximum number of Events
00219 ## and number of events to be skipped
00220 ## in case of parallel job nIndex
00221 ## .oO[nIndex]Oo * .oO[nEvents]Oo/.oO[nJobs]Oo
00222 ##
00223 process.maxEvents = cms.untracked.PSet(
00224 input = cms.untracked.int32(.oO[nEvents]Oo./.oO[nJobs]Oo.)
00225 )
00226 process.source.skipEvents=cms.untracked.uint32(.oO[nIndex]Oo.*.oO[nEvents]Oo./.oO[nJobs]Oo.)
00227
00228 ##
00229 ## Messages & Convenience
00230 ##
00231 process.load("FWCore.MessageLogger.MessageLogger_cfi")
00232 process.MessageLogger.cerr = cms.untracked.PSet(placeholder = cms.untracked.bool(True))
00233 process.MessageLogger.cout = cms.untracked.PSet(INFO = cms.untracked.PSet(
00234 reportEvery = cms.untracked.int32(1000) # every 1000th only
00235 # limit = cms.untracked.int32(10) # or limit to 10 printouts...
00236 ))
00237 process.MessageLogger.statistics.append('cout')
00238
00239 #############################################################
00240 ##select trigger bits 40 OR 41
00241 ##AND NOT (36 OR 37 OR 38 OR 39)
00242 ##trigger bit 0 is selecting crossing bunches (not in MC)
00243 ##########################################################
00244 process.load('L1TriggerConfig.L1GtConfigProducers.L1GtTriggerMaskTechTrigConfig_cff')
00245 process.load('HLTrigger/HLTfilters/hltLevel1GTSeed_cfi')
00246
00247 #Good Bunch Crossings
00248 process.bptxAnd = process.hltLevel1GTSeed.clone(L1TechTriggerSeeding = cms.bool(True), L1SeedsLogicalExpression = cms.string('0'))
00249 #BSCNOBEAMHALO
00250 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))'))
00251
00252 #Physics declared
00253 process.load('HLTrigger.special.hltPhysicsDeclared_cfi')
00254 process.hltPhysicsDeclared.L1GtReadoutRecordTag = 'gtDigis'
00255
00256
00257 #############################################################
00258 ##select only high purity tracks
00259 ##has to run first as necessary information
00260 ##is only available in initial track selection
00261 ##(Quality information is thrown away by the tracker refitters)
00262 ##########################################################
00263 import Alignment.CommonAlignmentProducer.AlignmentTrackSelector_cfi
00264 process.HighPuritySelector = Alignment.CommonAlignmentProducer.AlignmentTrackSelector_cfi.AlignmentTrackSelector.clone(
00265 applyBasicCuts = True,
00266 filter = True,
00267 src = '.oO[TrackCollection]Oo.',
00268 trackQualities = ["highPurity"]
00269 )
00270
00271 ###############################################################
00272 ## Quality filters on the event (REAL DATA - FIRST COLLISIONS DEC09 ONLY!)
00273 ## see https://twiki.cern.ch/twiki/bin/viewauth/CMS/TRKPromptFeedBack#Event_and_track_selection_recipe
00274 ##NOT in PATH yet, to be commented in, if necessay
00275 ##
00276 #########################################################
00277 ############################################################################
00278 ##Produce Primary Vertex Collection needed for later analysis
00279 ############################################################################
00280 #process.load('TrackingTools/TransientTrack/TransientTrackBuilder_cfi')
00281 #process.load("RecoVertex.PrimaryVertexProducer.OfflinePrimaryVertices_cfi")
00282 #process.offlinePrimaryVertices.TrackLabel = 'ALCARECOTkAlMinBias'
00283
00284 process.oneGoodVertexFilter = cms.EDFilter("VertexSelector",
00285 src = cms.InputTag("offlinePrimaryVertices"),
00286 cut = cms.string("!isFake && ndof > 4 && abs(z) <= 15 && position.Rho <= 2"), # tracksSize() > 3 for the older cut
00287 filter = cms.bool(True), # otherwise it won't filter the events, just produce an empty vertex collection.
00288 )
00289
00290
00291
00292 process.FilterGoodEvents=cms.Sequence(#process.HighPuritySelector*
00293 process.oneGoodVertexFilter)
00294
00295
00296 process.noScraping= cms.EDFilter("FilterOutScraping",
00297 src=cms.InputTag("ALCARECOTkAlMinBias"),
00298 applyfilter = cms.untracked.bool(True),
00299 debugOn = cms.untracked.bool(False), ## Or 'True' to get some per-event info
00300 numtrack = cms.untracked.uint32(10),
00301 thresh = cms.untracked.double(0.25)
00302 )
00303 ####################################
00304
00305
00306
00307
00308
00309 #-- Track hit filter
00310 # TrackerTrackHitFilter takes as input the tracks/trajectories coming out from TrackRefitter1
00311 process.load("RecoTracker.FinalTrackSelectors.TrackerTrackHitFilter_cff")
00312 process.TrackerTrackHitFilter.src = 'TrackRefitter1'
00313
00314 #-- Alignment Track Selection
00315 process.load("Alignment.CommonAlignmentProducer.AlignmentTrackSelector_cfi")
00316 process.AlignmentTrackSelector.src = 'HitFilteredTracks'
00317 process.AlignmentTrackSelector.filter = True
00318
00319 .oO[TrackSelectionTemplate]Oo.
00320
00321 #now we give the TrackCandidate coming out of the TrackerTrackHitFilter to the track producer
00322 import RecoTracker.TrackProducer.CTFFinalFitWithMaterial_cff
00323 process.HitFilteredTracks = RecoTracker.TrackProducer.CTFFinalFitWithMaterial_cff.ctfWithMaterialTracks.clone(
00324 src = 'TrackerTrackHitFilter',
00325 NavigationSchool = "",
00326
00327 ### TrajectoryInEvent = True,
00328 TTRHBuilder = "WithAngleAndTemplate"
00329 )
00330
00331 ##
00332 ## Load and Configure TrackRefitter1
00333 ##
00334
00335 process.load("RecoTracker.TrackProducer.TrackRefitters_cff")
00336
00337 #############
00338 # parameters for TrackRefitter
00339 #process.load("RecoTracker.TrackProducer.RefitterWithMaterial_cff")
00340 import RecoTracker.TrackProducer.TrackRefitters_cff
00341 process.TrackRefitter1 = process.TrackRefitter.clone(
00342 src = 'HighPuritySelector',
00343 TrajectoryInEvent = True,
00344 TTRHBuilder = "WithAngleAndTemplate",
00345 NavigationSchool = ""
00346 )
00347 process.TrackRefitter2 = process.TrackRefitter1.clone(
00348 # src = 'HitFilteredTracks')
00349 src = 'AlignmentTrackSelector'
00350 )
00351
00352
00353 ##
00354 ## Get the BeamSpot
00355 ##
00356 process.load("RecoVertex.BeamSpotProducer.BeamSpot_cff")
00357
00358 ##
00359 ## GlobalTag Conditions (if needed)
00360 ##
00361 process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
00362 process.GlobalTag.globaltag = ".oO[GlobalTag]Oo."
00363
00364
00365 .oO[LorentzAngleTemplate]Oo.
00366
00367 ##
00368 ## Geometry
00369 ##
00370 process.load("Configuration.StandardSequences.Geometry_cff")
00371
00372 ##
00373 ## Magnetic Field
00374 ##
00375 process.load("Configuration/StandardSequences/MagneticField_38T_cff")
00376
00377 .oO[dbLoad]Oo.
00378
00379 .oO[condLoad]Oo.
00380
00381 .oO[APE]Oo.
00382
00383 ## to apply misalignments
00384 #TrackerDigiGeometryESModule.applyAlignment = True
00385
00386 ##
00387 ## Load and Configure OfflineValidation and Output File
00388 ##
00389 process.load("Alignment.OfflineValidation.TrackerOfflineValidation_.oO[offlineValidationMode]Oo._cff")
00390 process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..Tracks = 'TrackRefitter2'
00391 process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..trajectoryInput = 'TrackRefitter2'
00392 process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..moduleLevelHistsTransient = .oO[offlineModuleLevelHistsTransient]Oo.
00393 process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..moduleLevelProfiles = .oO[offlineModuleLevelProfiles]Oo.
00394 .oO[offlineValidationFileOutput]Oo.
00395
00396 ##
00397 ## PATH
00398 ##
00399 process.p = cms.Path(
00400 process.triggerSelection*
00401 process.offlineBeamSpot*process.HighPuritySelector*process.TrackRefitter1*process.TrackerTrackHitFilter*process.HitFilteredTracks
00402 *process.AlignmentTrackSelector*process.TrackRefitter2*process.seqTrackerOfflineValidation.oO[offlineValidationMode]Oo.)
00403
00404 """
00405
00406
00407
00408
00409 mergeOfflineParallelResults="""
00410
00411 # Merging works also if there is only one file to merge
00412 # if merged file already exists it will be moved to a backup file (~)
00413
00414 # run TkAlOfflinejobs.C
00415 echo "Merging results from parallel jobs with TkAlOfflineJobsMerge.C"
00416 root -x -b -q .oO[logdir]Oo./TkAlOfflineJobsMerge.C
00417
00418 # todo do not use /tmp; in case use of /tmp fails, no merged file is obtained
00419
00420 # move output file to datadir, backup existing files
00421 mv -b /tmp/$USER/AlignmentValidation*.root .oO[datadir]Oo./
00422
00423 # create log file
00424 ls -al .oO[datadir]Oo./AlignmentValidation*.root > .oO[datadir]Oo./log_rootfilelist.txt
00425
00426 # Remove parallel job files if merged file exists
00427 for file in .oO[datadir]Oo./AlignmentValidation*root; do
00428 rm -f .oO[datadir]Oo./`basename $file .root`_[0-9]*.root;
00429 done
00430
00431 """
00432
00433
00434
00435
00436 mergeOfflineParJobsTemplate="""
00437 void TkAlOfflineJobsMerge()
00438 {
00439 // load framework lite just to find the CMSSW libs...
00440 gSystem->Load("libFWCoreFWLite");
00441 AutoLibraryLoader::enable();
00442 //compile the makro
00443 gROOT->ProcessLine(".L .oO[CMSSW_BASE]Oo./src/Alignment/OfflineValidation/scripts/merge_TrackerOfflineValidation.C++");
00444
00445 .oO[mergeOfflinParJobsInstantiation]Oo.
00446 }
00447 """
00448
00449
00450
00451
00452 offlineStandaloneFileOutputTemplate = """
00453 process.TFileService.fileName = '.oO[outputFile]Oo.'
00454 """
00455
00456
00457
00458 offlineParallelFileOutputTemplate = """
00459 process.TFileService.fileName = '.oO[outputFile]Oo.'
00460 """
00461
00462
00463
00464 offlineDqmFileOutputTemplate = """
00465 process.TrackerOfflineValidationSummary.oO[offlineValidationMode]Oo..removeModuleLevelHists = .oO[offlineModuleLevelHistsTransient]Oo.
00466 process.DqmSaverTkAl.workflow = '.oO[workflow]Oo.'
00467 process.DqmSaverTkAl.dirName = '.oO[workdir]Oo./.'
00468 process.DqmSaverTkAl.forceRunNumber = .oO[firstRunNumber]Oo.
00469 """
00470
00471
00472
00473
00474
00475
00476
00477
00478
00479 LorentzAngleTemplate = "#use lorentz angle from global tag"
00480
00481
00482
00483
00484 TrackSelectionTemplate = """
00485 .oO[kinksAndBows]Oo.
00486
00487 #####default for MC tracks with now further corrections etc.
00488
00489 process.AlignmentTrackSelector.applyBasicCuts = True
00490 # Note that pMin is overridden and set to zero in
00491 # the offlineTemplate0T
00492 process.AlignmentTrackSelector.pMin = 3
00493 process.AlignmentTrackSelector.pMax = 9999.
00494 process.AlignmentTrackSelector.ptMin = 0.65
00495 process.AlignmentTrackSelector.ptMax = 9999.
00496 process.AlignmentTrackSelector.etaMin = -999.
00497 process.AlignmentTrackSelector.etaMax = 999.
00498 process.AlignmentTrackSelector.nHitMin = 8
00499 process.AlignmentTrackSelector.nHitMin2D = 2
00500 process.AlignmentTrackSelector.chi2nMax = 999.
00501 process.AlignmentTrackSelector.applyMultiplicityFilter = False
00502 process.AlignmentTrackSelector.maxMultiplicity = 1
00503 process.AlignmentTrackSelector.applyNHighestPt = False
00504 process.AlignmentTrackSelector.nHighestPt = 1
00505 process.AlignmentTrackSelector.seedOnlyFrom = 0
00506 process.AlignmentTrackSelector.applyIsolationCut = False
00507 process.AlignmentTrackSelector.minHitIsolation = 0.8
00508 process.AlignmentTrackSelector.applyChargeCheck = False
00509 process.AlignmentTrackSelector.minHitChargeStrip = 50.
00510 #process.AlignmentTrackSelector.trackQualities = ["highPurity"]
00511 #process.AlignmentTrackSelector.iterativeTrackingSteps = ["iter1","iter2"]
00512
00513 ##### For Hits:
00514 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
00515 process.TrackerTrackHitFilter.minimumHits = 8
00516 process.TrackerTrackHitFilter.commands = cms.vstring("keep PXB","keep PXE","keep TIB","keep TID","keep TOB","keep TEC")
00517 process.TrackerTrackHitFilter.detsToIgnore = [
00518 # see https://hypernews.cern.ch/HyperNews/CMS/get/tracker-performance/484.html
00519 # TIB / TID
00520 #369136710, 369136714, 402668822,
00521 # TOB
00522 #436310989, 436310990, 436299301, 436299302,
00523 # TEC
00524 #470340521, 470063045, 470063046, 470114669, 470114670, 470161093, 470161094, 470164333, 470164334, 470312005, 470312006, 470312009, 470067405, 470067406, 470128813
00525 ]
00526 process.TrackerTrackHitFilter.replaceWithInactiveHits = True
00527 process.TrackerTrackHitFilter.stripAllInvalidHits = False
00528 process.TrackerTrackHitFilter.rejectBadStoNHits = True
00529 process.TrackerTrackHitFilter.StoNcommands = cms.vstring("ALL 12.0")
00530 process.TrackerTrackHitFilter.rejectLowAngleHits= True
00531 process.TrackerTrackHitFilter.TrackAngleCut= 0.17 # in rads, starting from the module surface
00532 process.TrackerTrackHitFilter.usePixelQualityFlag= True
00533
00534 ##############
00535 ##Trigger sequence
00536 #############
00537 #for MC only trigger bit 40 is simulated
00538 #no triger on bunch crossing bit 0
00539
00540
00541 process.triggerSelection=cms.Sequence(process.bit40)
00542
00543 """
00544