Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162
import FWCore.ParameterSet.Config as cms

# process declaration
process = cms.Process('SiStripOnline')


#############################################
# General setup
#############################################

# message logger
process.load('DQM.SiStripCommissioningSources.OnlineMessageLogger_cff')

# DQM service
process.load('DQM.SiStripCommissioningSources.OnlineDQM_cff')

# config db settings
process.load('DQM.SiStripCommissioningSources.OnlineSiStripConfigDb_cff')

# input source
process.load('DQM.SiStripCommissioningSources.OnlineSource_cfi')


##############################################
# modules & path for analysis without tracking
##############################################

# tracker digi producer
process.load('EventFilter.SiStripRawToDigi.FedChannelDigis_cfi')

# filter to distinguish between runs not needing or needing tracking
process.load('DQM.SiStripCommissioningSources.TrackingRunTypeFilter_cfi')

# Commissioning source file production
process.load('DQM.SiStripCommissioningSources.CommissioningHistos_cfi')
process.CommissioningHistos.CommissioningTask = 'UNDEFINED'  # <-- run type taken from event data, but can be overriden

# the path to run for analysis without tracking
process.p1 = cms.Path(
    process.FedChannelDigis *
    ~process.trackingRunTypeFilter *
    process.CommissioningHistos
)


#############################################
# setup to prepare tracking
#############################################

# reco inclusion ; cleanup? // was: I'd love to include less, but I fail...
process.load('Configuration.StandardSequences.Reconstruction_cff')
# geometry
process.load('DQM.SiStripCommissioningSources.P5Geometry_cff')
# magnetic field (0T by default)
process.load('MagneticField.Engine.uniformMagneticField_cfi')

# fake global position
process.load('Alignment.CommonAlignmentProducer.GlobalPosition_Fake_cff')
# fake conditions for gain
process.load('CalibTracker.Configuration.SiStripGain.SiStripGain_Fake_cff')
# empty quality fake, avoiding RunIfoRcd from DB
process.load("CalibTracker.SiStripESProducers.SiStripQualityESProducer_cfi")
process.siStripQualityESProducer.UseEmptyRunInfo = cms.bool(True)
process.siStripQualityESProducer.ListOfRecordToMerge = cms.VPSet()
# fake LA conditions
process.load('CalibTracker.SiStripESProducers.fake.SiStripLorentzAngleFakeESSource_cfi')
# fake conditions for threshold
process.load('CalibTracker.SiStripESProducers.fake.SiStripThresholdFakeESSource_cfi')
process.load('CalibTracker.SiPixelESProducers.SiPixelFakeLorentzAngleESSource_cfi')
# beam spot fake conditions
process.load('RecoVertex.BeamSpotProducer.BeamSpotFakeConditionsNominalCollision_cfi')

# rechit matcher
process.load('RecoLocalTracker.SiStripRecHitConverter.SiStripRecHitMatcher_cfi')
# CPEs
process.load('RecoLocalTracker.SiStripRecHitConverter.StripCPEfromTrackAngle_cfi')
# TransientTrackingBuilder
process.load('RecoTracker.TransientTrackingRecHit.TransientTrackingRecHitBuilder_cfi')
process.ttrhbwr.PixelCPE = cms.string('PixelCPEfromTrackAngle')
# MeasurementTracker
process.load('RecoTracker.MeasurementDet.MeasurementTrackerESProducer_cff')
process.MeasurementTracker.StripCPE = cms.string('StripCPEfromTrackAngle')
process.MeasurementTracker.PixelCPE = cms.string('PixelCPEfromTrackAngle')
process.MeasurementTracker.UseStripModuleQualityDB = cms.bool(False)   # read Module status from SiStripQuality
process.MeasurementTracker.UseStripAPVFiberQualityDB = cms.bool(False) # read APV and Fiber status from SiStripQuality
process.MeasurementTracker.UseStripStripQualityDB = cms.bool(False)    # read Strip status from SiStripQuality


#############################################
# modules & path for analysis with tracking
#############################################

# strips digi zero suppression
process.load('RecoLocalTracker.SiStripZeroSuppression.SiStripZeroSuppression_cfi')
process.siStripZeroSuppression.RawDigiProducersList = cms.VInputTag(
    cms.InputTag('FedChannelDigis','VirginRaw'), 
    cms.InputTag('FedChannelDigis','ProcessedRaw'),
    cms.InputTag('FedChannelDigis','ScopeMode')
)

# produce clusters from zero suppressed digis
process.load('RecoLocalTracker.SiStripClusterizer.SiStripClusterizer_cfi')
process.siStripClusters.DigiProducersList = cms.VInputTag(
    cms.InputTag('FedChannelDigis','ZeroSuppressed'),
    cms.InputTag('siStripZeroSuppression','VirginRaw'),
    cms.InputTag('siStripZeroSuppression','ProcessedRaw'),
    cms.InputTag('siStripZeroSuppression','ScopeMode')
)

# produce the rechits
process.load('RecoLocalTracker.SiStripRecHitConverter.SiStripRecHitConverter_cfi')

# find the seeds
process.load('DQM.SiStripCommissioningSources.P5SeedGenerator_cff')

# reconstruct track candidates
process.load('DQM.SiStripCommissioningSources.P5CosmicCandidateFinder_cff')

# reconstruct tracks
process.load('RecoTracker.TrackProducer.TrackProducer_cfi')
process.TrackProducer.src = cms.InputTag('cosmicCandidateFinder')
process.TrackProducer.Fitter = cms.string('RKFittingSmoother')
process.TrackProducer.TrajectoryInEvent = cms.bool(True)
process.TrackProducer.TTRHBuilder = cms.string('WithTrackAngle')
process.TrackProducer.AlgorithmName = cms.string('cosmic')
process.TrackProducer.alias=('') # can we drop this?

# do the fine delay analysis
process.load('DQM.SiStripCommissioningSources.SiStripFineDelayHit_cfi')

# Commissioning source file production
process.CommissioningHistosWithTracking = process.CommissioningHistos.clone(
    InputModuleLabel = 'siStripFineDelayHit',
    SignalToNoiseCut = cms.double(3.0)
)

# the path to run for analysis with tracking
process.p2 = cms.Path(
    process.FedChannelDigis *
    process.trackingRunTypeFilter *
    process.offlineBeamSpot *
    process.siStripZeroSuppression *
    process.siStripClusters *
    process.siStripMatchedRecHits *
    process.cosmicseedfinder *
    process.cosmicCandidateFinder *
    process.TrackProducer *
    process.siStripFineDelayHit *
    process.CommissioningHistosWithTracking
)


#############################################
# output
#############################################

#process.load('DQM.SiStripCommissioningSources.OnlineOutput_cfi')
#process.outpath = cms.EndPath( process.consumer )


#############################################