CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC2_patch1/src/Alignment/OfflineValidation/scripts/offlineValidationTemplates.py

Go to the documentation of this file.
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 #offlineDqmFileOutputTemplate = """
00471 #process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..workflow =  .oO[workflow]Oo.
00472 #process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..dirName = .oO[workdir]Oo./.
00473 #process.TrackerOfflineValidation.oO[offlineValidationMode]Oo..forceRunNumber = .oO[firstRunNumber]Oo.
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