Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-04-17 02:42:09

0001 import FWCore.ParameterSet.Config as cms
0002 
0003 import FWCore.ParameterSet.VarParsing as VarParsing
0004 
0005 process = cms.Process("Reader")
0006 
0007 options = VarParsing.VarParsing("analysis")
0008 
0009 options.register ('logDestination',
0010                   "",
0011                   VarParsing.VarParsing.multiplicity.singleton, # singleton or list
0012                   VarParsing.VarParsing.varType.string,          # string, int, or float
0013                   "log file")
0014 options.register ('qualityLogDestination',
0015                   "",
0016                   VarParsing.VarParsing.multiplicity.singleton, # singleton or list
0017                   VarParsing.VarParsing.varType.string,          # string, int, or float
0018                   "quality log file")
0019 options.register ('cablingLogDestination',
0020                   "",
0021                   VarParsing.VarParsing.multiplicity.singleton, # singleton or list
0022                   VarParsing.VarParsing.varType.string,          # string, int, or float
0023                   "cabling log file")
0024 options.register ('condLogDestination',
0025                   "",
0026                   VarParsing.VarParsing.multiplicity.singleton, # singleton or list
0027                   VarParsing.VarParsing.varType.string,          # string, int, or float
0028                   "conditions log file")
0029 options.register ('outputRootFile',
0030                   "",
0031                   VarParsing.VarParsing.multiplicity.singleton, # singleton or list
0032                   VarParsing.VarParsing.varType.string,          # string, int, or float
0033                   "output root file")
0034 options.register ('connectionString',
0035                   "",
0036                   VarParsing.VarParsing.multiplicity.singleton, # singleton or list
0037                   VarParsing.VarParsing.varType.string,          # string, int, or float
0038                   "connection string")
0039 options.register ('recordName',
0040                   "",
0041                   VarParsing.VarParsing.multiplicity.singleton, # singleton or list
0042                   VarParsing.VarParsing.varType.string,          # string, int, or float
0043                   "record name")
0044 options.register ('recordForQualityName',
0045                   "SiStripDetCablingRcd",
0046                   VarParsing.VarParsing.multiplicity.singleton, # singleton or list
0047                   VarParsing.VarParsing.varType.string,          # string, int, or float
0048                   "record name")
0049 options.register ('tagName',
0050                   "",
0051                   VarParsing.VarParsing.multiplicity.singleton, # singleton or list
0052                   VarParsing.VarParsing.varType.string,          # string, int, or float
0053                   "tag name")
0054 options.register ('runNumber',
0055                   0,
0056                   VarParsing.VarParsing.multiplicity.singleton, # singleton or list
0057                   VarParsing.VarParsing.varType.int,          # string, int, or float
0058                   "run number")
0059 options.register ('LatencyMon',
0060                   False,
0061                   VarParsing.VarParsing.multiplicity.singleton, # singleton or list
0062                   VarParsing.VarParsing.varType.bool,          # string, int, or float
0063                   "Monitor latency?")
0064 options.register ('ALCARecoTriggerBitsMon',
0065                   False,
0066                   VarParsing.VarParsing.multiplicity.singleton, # singleton or list
0067                   VarParsing.VarParsing.varType.bool,          # string, int, or float
0068                   "Monitor ALCAReco trigger bits")
0069 options.register ('ShiftAndCrosstalkMon',
0070                   False,
0071                   VarParsing.VarParsing.multiplicity.singleton, # singleton or list
0072                   VarParsing.VarParsing.varType.bool,          # string, int, or float
0073                   "Monitor shift and crosstalk?")
0074 options.register ('APVPhaseOffsetsMon',
0075                   False,
0076                   VarParsing.VarParsing.multiplicity.singleton, # singleton or list
0077                   VarParsing.VarParsing.varType.bool,          # string, int, or float
0078                   "Monitor APV phase offsets?")
0079 options.register ('PedestalMon',
0080                   False,
0081                   VarParsing.VarParsing.multiplicity.singleton, # singleton or list
0082                   VarParsing.VarParsing.varType.bool,          # string, int, or float
0083                   "Monitor pedestals?")
0084 options.register ('NoiseMon',
0085                   False,
0086                   VarParsing.VarParsing.multiplicity.singleton, # singleton or list
0087                   VarParsing.VarParsing.varType.bool,          # string, int, or float
0088                   "Monitor noise?")
0089 options.register ('QualityMon',
0090                   False,
0091                   VarParsing.VarParsing.multiplicity.singleton, # singleton or list
0092                   VarParsing.VarParsing.varType.bool,          # string, int, or float
0093                   "Monitor quality?")
0094 options.register ('CablingMon',
0095                   False,
0096                   VarParsing.VarParsing.multiplicity.singleton, # singleton or list
0097                   VarParsing.VarParsing.varType.bool,          # string, int, or float
0098                   "Monitor cabling?")
0099 options.register ('GainMon',
0100                   False,
0101                   VarParsing.VarParsing.multiplicity.singleton, # singleton or list
0102                   VarParsing.VarParsing.varType.bool,          # string, int, or float
0103                   "Monitor gain?")
0104 options.register ('LorentzAngleMon',
0105                   False,
0106                   VarParsing.VarParsing.multiplicity.singleton, # singleton or list
0107                   VarParsing.VarParsing.varType.bool,          # string, int, or float
0108                   "Monitor LA?")
0109 options.register ('BackPlaneCorrectionMon',
0110                   False,
0111                   VarParsing.VarParsing.multiplicity.singleton, # singleton or list
0112                   VarParsing.VarParsing.varType.bool,          # string, int, or float
0113                   "Monitor BP correction?")
0114 options.register ('ThresholdMon',
0115                   False,
0116                   VarParsing.VarParsing.multiplicity.singleton, # singleton or list
0117                   VarParsing.VarParsing.varType.bool,          # string, int, or float
0118                   "Monitor thresholds?")
0119 options.register ('MonitorCumulative',
0120                   False,
0121                   VarParsing.VarParsing.multiplicity.singleton, # singleton or list
0122                   VarParsing.VarParsing.varType.bool,          # string, int, or float
0123                   "Cumulative Monitoring?")
0124 options.register ('ActiveDetId',
0125                   False,
0126                   VarParsing.VarParsing.multiplicity.singleton, # singleton or list
0127                   VarParsing.VarParsing.varType.bool,          # string, int, or float
0128                   "Active detid?")
0129 
0130 options.parseArguments()
0131 
0132 
0133 process.MessageLogger = cms.Service("MessageLogger",
0134                                     debugModules = cms.untracked.vstring(''),
0135                                     destinations = cms.untracked.vstring(options.logDestination,
0136                                                                          options.qualityLogDestination,
0137                                                                          options.cablingLogDestination,
0138                                                                          options.condLogDestination,
0139                                                                          'cerr'
0140                                                                          ), #Reader, cout
0141                                     categories = cms.untracked.vstring('SiStripQualityStatistics',
0142                                                                        'SiStripQualityDQM',
0143                                                                        'SiStripFedCablingReader',
0144                                                                        'DummyCondObjContentPrinter',
0145                                                                        ),
0146                                     cerr = cms.untracked.PSet(threshold = cms.untracked.string('WARNING'))
0147 )
0148 setattr(process.MessageLogger,options.logDestination,cms.untracked.PSet(threshold = cms.untracked.string('INFO')))
0149 setattr(process.MessageLogger,options.qualityLogDestination,cms.untracked.PSet(
0150     threshold = cms.untracked.string('INFO'),
0151     default = cms.untracked.PSet(limit=cms.untracked.int32(0)),
0152     SiStripQualityStatistics = cms.untracked.PSet(limit=cms.untracked.int32(100000))
0153 #    SiStripQualityDQM = cms.untracked.PSet(limit=cms.untracked.int32(100000))
0154     )
0155         )
0156 setattr(process.MessageLogger,options.cablingLogDestination,cms.untracked.PSet(
0157     threshold = cms.untracked.string('INFO'),
0158     default = cms.untracked.PSet(limit=cms.untracked.int32(0)),
0159     SiStripFedCablingReader = cms.untracked.PSet(limit=cms.untracked.int32(100000))
0160     )
0161         )
0162 setattr(process.MessageLogger,options.condLogDestination,cms.untracked.PSet(
0163     threshold = cms.untracked.string('INFO'),
0164     default = cms.untracked.PSet(limit=cms.untracked.int32(0)),
0165     DummyCondObjContentPrinter = cms.untracked.PSet(limit=cms.untracked.int32(100000))
0166     )
0167         )
0168 
0169 process.maxEvents = cms.untracked.PSet(
0170     input = cms.untracked.int32(-1)
0171 )
0172 
0173 process.source = cms.Source("EmptyIOVSource",
0174     firstValue = cms.uint64(options.runNumber),
0175     lastValue = cms.uint64(options.runNumber),
0176     timetype = cms.string('runnumber'),
0177     interval = cms.uint64(1)
0178 )
0179 
0180 #process.load("Geometry.CMSCommonData.cmsIdealGeometryXML_cfi")
0181 process.load('Configuration.Geometry.GeometryExtended2018_cff')
0182 process.TrackerTopologyEP = cms.ESProducer("TrackerTopologyEP")
0183 process.load("Geometry.TrackerGeometryBuilder.trackerParameters_cfi")
0184 
0185 process.poolDBESSource = cms.ESSource("PoolDBESSource",
0186    DBParameters = cms.PSet(
0187         messageLevel = cms.untracked.int32(1),  # it used to be 2
0188         authenticationPath = cms.untracked.string('/afs/cern.ch/cms/DB/conddb')
0189     ),
0190     connect = cms.string(options.connectionString),
0191     toGet = cms.VPSet(cms.PSet(
0192         record = cms.string(options.recordName),
0193         tag = cms.string(options.tagName)
0194     ))
0195 )
0196 
0197 if options.LatencyMon == True:
0198     process.reader = cms.EDAnalyzer("SiStripLatencyDummyPrinter")
0199     process.p1 = cms.Path(process.reader)
0200 
0201 elif options.ShiftAndCrosstalkMon == True:
0202     process.reader = cms.EDAnalyzer("SiStripConfObjectDummyPrinter")
0203     process.p1 = cms.Path(process.reader)
0204 
0205 elif options.APVPhaseOffsetsMon == True:
0206     process.reader = cms.EDAnalyzer("SiStripConfObjectDummyPrinter")
0207     process.p1 = cms.Path(process.reader)
0208 
0209 elif options.ALCARecoTriggerBitsMon == True:
0210     process.AlCaRecoTriggerBitsRcdRead = cms.EDAnalyzer( "AlCaRecoTriggerBitsRcdRead"
0211                                                          , outputType  = cms.untracked.string( 'text' )
0212                                                          , rawFileName = cms.untracked.string( 'AlCaRecoTriggerBitsInfo_RuninsertRun' )
0213                                                          )
0214     process.p = cms.Path(process.AlCaRecoTriggerBitsRcdRead)
0215 
0216 else:
0217 
0218     process.DQMStore = cms.Service("DQMStore",
0219                                    verbose = cms.untracked.int32(1)
0220                                    )
0221 
0222     process.load("DQM.SiStripMonitorSummary.SiStripMonitorCondData_cfi")
0223 
0224     process.CondDataMonitoring.OutputFileName = options.outputRootFile
0225     process.CondDataMonitoring.MonitorSiStripPedestal      = options.PedestalMon
0226     process.CondDataMonitoring.MonitorSiStripNoise         = options.NoiseMon
0227     process.CondDataMonitoring.MonitorSiStripQuality       = options.QualityMon
0228     process.CondDataMonitoring.MonitorSiStripCabling       = options.CablingMon
0229     process.CondDataMonitoring.MonitorSiStripApvGain       = options.GainMon
0230     process.CondDataMonitoring.MonitorSiStripLorentzAngle  = options.LorentzAngleMon
0231     process.CondDataMonitoring.MonitorSiStripBackPlaneCorrection  = options.BackPlaneCorrectionMon
0232     process.CondDataMonitoring.MonitorSiStripLowThreshold  = options.ThresholdMon
0233     process.CondDataMonitoring.MonitorSiStripHighThreshold = options.ThresholdMon
0234     process.CondDataMonitoring.OutputMEsInRootFile         = True
0235     process.CondDataMonitoring.FillConditions_PSet.OutputSummaryAtLayerLevelAsImage           = True
0236     process.CondDataMonitoring.FillConditions_PSet.OutputSummaryProfileAtLayerLevelAsImage    = options.LorentzAngleMon or options.BackPlaneCorrectionMon # This should be saved only in case of LA (because for LA no SummaryAtLayerLevel is available)
0237     process.CondDataMonitoring.FillConditions_PSet.OutputCumulativeSummaryAtLayerLevelAsImage = options.MonitorCumulative
0238     process.CondDataMonitoring.FillConditions_PSet.HistoMaps_On     = False
0239     process.CondDataMonitoring.FillConditions_PSet.TkMap_On         = True # This is just for test until TkMap is included in all classes!!! Uncomment!!!!
0240     process.CondDataMonitoring.FillConditions_PSet.ActiveDetIds_On  = options.ActiveDetId # This should be set to False only for Lorentz Angle
0241     process.CondDataMonitoring.FillConditions_PSet.Mod_On           = False # Set to True if you want to have single module histograms
0242     
0243     process.CondDataMonitoring.SiStripPedestalsDQM_PSet.FillSummaryAtLayerLevel     = True
0244     process.CondDataMonitoring.SiStripNoisesDQM_PSet.FillSummaryAtLayerLevel        = True
0245     process.CondDataMonitoring.SiStripQualityDQM_PSet.FillSummaryAtLayerLevel       = True
0246     process.CondDataMonitoring.SiStripApvGainsDQM_PSet.FillSummaryAtLayerLevel      = True
0247     process.CondDataMonitoring.SiStripLowThresholdDQM_PSet.FillSummaryAtLayerLevel  = True
0248     process.CondDataMonitoring.SiStripHighThresholdDQM_PSet.FillSummaryAtLayerLevel = True
0249     
0250     process.CondDataMonitoring.SiStripCablingDQM_PSet.CondObj_fillId       = 'ProfileAndCumul'
0251     process.CondDataMonitoring.SiStripPedestalsDQM_PSet.CondObj_fillId     = 'onlyProfile'    # Use 'ProfileAndCumul' if you want to have single module histograms
0252     process.CondDataMonitoring.SiStripNoisesDQM_PSet.CondObj_fillId        = 'onlyCumul'      # Use 'ProfileAndCumul' if you want to have single module histograms
0253     process.CondDataMonitoring.SiStripQualityDQM_PSet.CondObj_fillId       = 'onlyProfile'
0254     process.CondDataMonitoring.SiStripApvGainsDQM_PSet.CondObj_fillId      = 'ProfileAndCumul'
0255     process.CondDataMonitoring.SiStripLorentzAngleDQM_PSet.CondObj_fillId  = 'ProfileAndCumul'
0256     process.CondDataMonitoring.SiStripBackPlaneCorrectionDQM_PSet.CondObj_fillId  = 'ProfileAndCumul'
0257     process.CondDataMonitoring.SiStripLowThresholdDQM_PSet.CondObj_fillId  = 'onlyProfile'
0258     process.CondDataMonitoring.SiStripHighThresholdDQM_PSet.CondObj_fillId = 'onlyProfile'
0259     
0260 ## --- TkMap specific Configurable options:
0261     
0262     process.CondDataMonitoring.SiStripQualityDQM_PSet.TkMap_On     = True
0263     process.CondDataMonitoring.SiStripQualityDQM_PSet.TkMapName    = 'QualityTkMap.png'
0264     process.CondDataMonitoring.SiStripQualityDQM_PSet.minValue     = 0.
0265     process.CondDataMonitoring.SiStripQualityDQM_PSet.maxValue     = 100. 
0266     
0267     process.CondDataMonitoring.SiStripCablingDQM_PSet.TkMap_On     = True
0268     process.CondDataMonitoring.SiStripCablingDQM_PSet.TkMapName    = 'CablingTkMap.png'
0269     process.CondDataMonitoring.SiStripCablingDQM_PSet.minValue     = 0.
0270     process.CondDataMonitoring.SiStripCablingDQM_PSet.maxValue     = 6.
0271     
0272     process.CondDataMonitoring.SiStripPedestalsDQM_PSet.TkMap_On     = True
0273     process.CondDataMonitoring.SiStripPedestalsDQM_PSet.TkMapName    = 'PedestalTkMap.png'
0274     process.CondDataMonitoring.SiStripPedestalsDQM_PSet.minValue     = 0.
0275     process.CondDataMonitoring.SiStripPedestalsDQM_PSet.maxValue     = 400.
0276     
0277     process.CondDataMonitoring.SiStripNoisesDQM_PSet.TkMap_On     = True
0278     process.CondDataMonitoring.SiStripNoisesDQM_PSet.TkMapName    = 'NoiseTkMap.png'
0279     process.CondDataMonitoring.SiStripNoisesDQM_PSet.minValue     = 3.
0280     process.CondDataMonitoring.SiStripNoisesDQM_PSet.maxValue     = 9.
0281     
0282     process.CondDataMonitoring.SiStripApvGainsDQM_PSet.TkMap_On     = True
0283     process.CondDataMonitoring.SiStripApvGainsDQM_PSet.TkMapName    = 'GainTkMap.png'
0284     process.CondDataMonitoring.SiStripApvGainsDQM_PSet.minValue     = 0.
0285     process.CondDataMonitoring.SiStripApvGainsDQM_PSet.maxValue     = 1.5
0286     
0287     process.CondDataMonitoring.SiStripLorentzAngleDQM_PSet.TkMap_On     = True
0288     process.CondDataMonitoring.SiStripLorentzAngleDQM_PSet.TkMapName    = 'LorentzAngleTkMap.png'
0289     process.CondDataMonitoring.SiStripLorentzAngleDQM_PSet.minValue     = 0.01
0290     process.CondDataMonitoring.SiStripLorentzAngleDQM_PSet.maxValue     = 0.03
0291     
0292     process.CondDataMonitoring.SiStripBackPlaneCorrectionDQM_PSet.TkMap_On     = True
0293     process.CondDataMonitoring.SiStripBackPlaneCorrectionDQM_PSet.TkMapName    = 'BackPlaneCorrectionTkMap.png'
0294     process.CondDataMonitoring.SiStripBackPlaneCorrectionDQM_PSet.minValue     = 0.00
0295     process.CondDataMonitoring.SiStripBackPlaneCorrectionDQM_PSet.maxValue     = 0.10
0296     
0297     process.CondDataMonitoring.SiStripLowThresholdDQM_PSet.TkMap_On     = True
0298     process.CondDataMonitoring.SiStripLowThresholdDQM_PSet.TkMapName     = 'LowThresholdTkMap.png'
0299     process.CondDataMonitoring.SiStripLowThresholdDQM_PSet.minValue     = 0.
0300     process.CondDataMonitoring.SiStripLowThresholdDQM_PSet.maxValue     = 10.
0301     
0302     process.CondDataMonitoring.SiStripHighThresholdDQM_PSet.TkMap_On     = True
0303     process.CondDataMonitoring.SiStripHighThresholdDQM_PSet.TkMapName     = 'HighThresholdTkMap.png'
0304     process.CondDataMonitoring.SiStripHighThresholdDQM_PSet.minValue     = 0.
0305     process.CondDataMonitoring.SiStripHighThresholdDQM_PSet.maxValue     = 10.
0306     
0307     
0308     process.p1 = cms.Path(process.CondDataMonitoring)
0309 
0310 # Additional analyzer if a bad channel tag has to be monitored
0311 if options.QualityMon == True:
0312     process.SiStripQualityESProducer = cms.ESProducer("SiStripQualityESProducer",
0313                                                       ReduceGranularity = cms.bool(False),
0314                                                       PrintDebugOutput = cms.bool(False),
0315                                                       UseEmptyRunInfo = cms.bool(False),
0316                                                       ListOfRecordToMerge = cms.VPSet(cms.PSet(
0317         record = cms.string(options.recordName),
0318         tag = cms.string('')
0319         ))
0320                                                       )
0321 
0322 # this module is almost useless since SiStripQualityDQM does all the job. If we want to remove it the log file has to be filled with SiStripQualityDQM
0323     from CalibTracker.SiStripQuality.siStripQualityStatistics_cfi import siStripQualityStatistics
0324     process.stat = siStripQualityStatistics.clone()
0325 
0326     process.e = cms.EndPath(process.stat)
0327 
0328 if options.CablingMon == True:
0329     process.SiStripQualityESProducer = cms.ESProducer("SiStripQualityESProducer",
0330                                                       ReduceGranularity = cms.bool(False),
0331                                                       PrintDebugOutput = cms.bool(False),
0332                                                       UseEmptyRunInfo = cms.bool(False),
0333                                                       ListOfRecordToMerge = cms.VPSet(cms.PSet(
0334         record = cms.string(options.recordForQualityName),
0335         tag = cms.string('')
0336         ))
0337                                                       )
0338 
0339     process.sistripconn = cms.ESProducer("SiStripConnectivity")
0340 
0341 
0342     from CalibTracker.SiStripQuality.siStripQualityStatistics_cfi import siStripQualityStatistics
0343     process.stat = siStripQualityStatistics.clone()
0344     
0345     process.reader = cms.EDAnalyzer("SiStripFedCablingReader")
0346     
0347     process.e = cms.EndPath(process.stat*process.reader)