Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-11-27 03:17:54

0001 #
0002 # L1 Pattern Generator
0003 # ====================
0004 #
0005 # Generate a pattern file from RAW data by
0006 #  - extracting the GT inputs from the GCT and GT readout
0007 #  - Re-running the GT emulator with a different trigger menu
0008 # 
0009 
0010 import FWCore.ParameterSet.Config as cms
0011 import sys
0012 
0013 # 
0014 processName = "L1GtPatternGenerator"
0015 process = cms.Process(processName)
0016 
0017 
0018 # choose one (and only one) of the following source
0019 # usually the global tag must be used
0020 
0021 # data or RelVal
0022 useRelValSample = True
0023 useRelValSample = False
0024 
0025 # Frontier GlobalTag to use for EventSetup, should match source data
0026 
0027 if useRelValSample == True :
0028     globalTag = 'auto:startup'
0029 else :
0030     globalTag = 'auto:com10'        # GR_R_*
0031 
0032 
0033 # L1 menu selection via L1Trigger_custom  - if True, modify correspondingly L1Trigger_custom
0034 
0035 customL1Menu = True
0036 customL1Menu = False
0037 
0038 if customL1Menu == True :
0039     from L1Trigger.Configuration.L1Trigger_custom import customiseL1Menu
0040     process=customiseL1Menu(process)
0041 
0042 # reset all prescale factors and masks
0043 from L1Trigger.Configuration.L1Trigger_custom import customiseResetPrescalesAndMasks
0044 process = customiseResetPrescalesAndMasks(process)
0045 
0046 
0047 # Input files
0048 
0049 # initialize list of selected events and luminosity segments
0050 selectedEvents = cms.untracked.VEventRange()
0051 selectedLumis= cms.untracked.VLuminosityBlockRange()
0052 
0053 if useRelValSample == True :
0054     
0055     dataFiles = [
0056        '/store/relval/CMSSW_5_2_3/RelValTTbar/GEN-SIM-DIGI-RAW-HLTDEBUG/START52_V5-v1/0043/0ABED808-FE79-E111-A8CB-003048FFCBFC.root',
0057        '/store/relval/CMSSW_5_2_3/RelValTTbar/GEN-SIM-DIGI-RAW-HLTDEBUG/START52_V5-v1/0043/1ED8ACDC-FF79-E111-BEB8-0018F3D096C6.root',
0058        '/store/relval/CMSSW_5_2_3/RelValTTbar/GEN-SIM-DIGI-RAW-HLTDEBUG/START52_V5-v1/0043/38A7298B-FF79-E111-8E7D-003048FFD736.root',
0059        '/store/relval/CMSSW_5_2_3/RelValTTbar/GEN-SIM-DIGI-RAW-HLTDEBUG/START52_V5-v1/0043/48D6CA06-FE79-E111-8A08-001A92811716.root',
0060        '/store/relval/CMSSW_5_2_3/RelValTTbar/GEN-SIM-DIGI-RAW-HLTDEBUG/START52_V5-v1/0043/521004DD-FF79-E111-860D-003048679150.root',
0061        '/store/relval/CMSSW_5_2_3/RelValTTbar/GEN-SIM-DIGI-RAW-HLTDEBUG/START52_V5-v1/0043/52389B0B-FE79-E111-81E4-003048FFCBA4.root',
0062        '/store/relval/CMSSW_5_2_3/RelValTTbar/GEN-SIM-DIGI-RAW-HLTDEBUG/START52_V5-v1/0043/54738A02-FE79-E111-B495-0030486790B0.root',
0063        '/store/relval/CMSSW_5_2_3/RelValTTbar/GEN-SIM-DIGI-RAW-HLTDEBUG/START52_V5-v1/0043/5A921406-007A-E111-BFE5-003048FFD736.root',
0064        '/store/relval/CMSSW_5_2_3/RelValTTbar/GEN-SIM-DIGI-RAW-HLTDEBUG/START52_V5-v1/0043/5E86D805-FE79-E111-9EC4-003048FFD7A2.root',
0065        '/store/relval/CMSSW_5_2_3/RelValTTbar/GEN-SIM-DIGI-RAW-HLTDEBUG/START52_V5-v1/0043/66FCF29D-FF79-E111-9DCE-0018F3D096C6.root',
0066        '/store/relval/CMSSW_5_2_3/RelValTTbar/GEN-SIM-DIGI-RAW-HLTDEBUG/START52_V5-v1/0043/6C7BB304-FE79-E111-8FAC-001A92810AEE.root',
0067        '/store/relval/CMSSW_5_2_3/RelValTTbar/GEN-SIM-DIGI-RAW-HLTDEBUG/START52_V5-v1/0043/784AC1AB-FF79-E111-9C08-003048679150.root',
0068        '/store/relval/CMSSW_5_2_3/RelValTTbar/GEN-SIM-DIGI-RAW-HLTDEBUG/START52_V5-v1/0043/929ACBC3-FF79-E111-805A-003048FFD736.root',
0069        '/store/relval/CMSSW_5_2_3/RelValTTbar/GEN-SIM-DIGI-RAW-HLTDEBUG/START52_V5-v1/0043/A0D7350B-FE79-E111-8E0D-003048FFCC2C.root',
0070        '/store/relval/CMSSW_5_2_3/RelValTTbar/GEN-SIM-DIGI-RAW-HLTDEBUG/START52_V5-v1/0043/C268AF61-FD79-E111-AB3D-00261894397D.root',
0071        '/store/relval/CMSSW_5_2_3/RelValTTbar/GEN-SIM-DIGI-RAW-HLTDEBUG/START52_V5-v1/0043/D237D303-FE79-E111-B38B-001BFCDBD100.root',
0072        '/store/relval/CMSSW_5_2_3/RelValTTbar/GEN-SIM-DIGI-RAW-HLTDEBUG/START52_V5-v1/0043/D428BF06-FE79-E111-8445-003048678FEA.root',
0073        '/store/relval/CMSSW_5_2_3/RelValTTbar/GEN-SIM-DIGI-RAW-HLTDEBUG/START52_V5-v1/0043/EEB8C84A-FC79-E111-9BBB-002618943985.root' ]
0074 
0075 
0076 else :
0077     # run 143657
0078     
0079     #dataType = 'RAW'
0080     #dataFiles = [
0081     #        '/store/data/Run2010A/MinimumBias/RAW/v1/000/143/657/00FB1636-91AE-DF11-B177-001D09F248F8.root',
0082     #        '/store/data/Run2010A/MinimumBias/RAW/v1/000/143/657/023EB128-51AE-DF11-96D3-001D09F24682.root'                 
0083     #        ]
0084     
0085     # run 160413
0086     #dataType = 'RAW'
0087     #dataFiles = [
0088     #        '/store/data/Run2011A/MinimumBias/RAW/v1/000/160/413/FE56EB13-BD4D-E011-B853-0030487C90D4.root',
0089     #        '/store/data/Run2011A/MinimumBias/RAW/v1/000/160/413/FCE828F2-AC4D-E011-B38A-0030487CD6B4.root',
0090     #        '/store/data/Run2011A/MinimumBias/RAW/v1/000/160/413/FC956724-CB4D-E011-8EC8-0030487CAF5E.root',
0091     #        '/store/data/Run2011A/MinimumBias/RAW/v1/000/160/413/FC8C6308-C24D-E011-85E8-0030487C7392.root',
0092     #        '/store/data/Run2011A/MinimumBias/RAW/v1/000/160/413/F8D4B148-B34D-E011-83DF-0030487CD812.root',
0093     #        '/store/data/Run2011A/MinimumBias/RAW/v1/000/160/413/F6F1F3D7-CB4D-E011-BAA7-0030487A195C.root'
0094     #        ]
0095 
0096 #    # run 165514
0097 #    dataType = 'RAW'
0098 #    dataFiles = [
0099 #                 '/store/data/Run2011A/MinimumBias/RAW/v1/000/165/514/28C65E11-E584-E011-AED9-0030487CD700.root',
0100 #                 '/store/data/Run2011A/MinimumBias/RAW/v1/000/165/514/44C0FC26-EE84-E011-B657-003048F1C424.root',
0101 #                 '/store/data/Run2011A/MinimumBias/RAW/v1/000/165/514/48379944-F084-E011-8022-0030487CD178.root',
0102 #                 '/store/data/Run2011A/MinimumBias/RAW/v1/000/165/514/4A1297CC-EC84-E011-BCF8-0030487CD6E6.root'
0103 #                 ]
0104     
0105     # sample '205666.A.storageManager'
0106     dataType = 'StreamFile'
0107     dataFiles = [
0108 #            'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0001.A.storageManager.00.0000.dat',
0109 #            'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0021.A.storageManager.01.0000.dat',
0110 #            'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0041.A.storageManager.02.0000.dat',
0111 #            'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0061.A.storageManager.03.0000.dat',
0112 #            'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0081.A.storageManager.04.0000.dat',
0113             'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0101.A.storageManager.05.0000.dat',
0114 #            'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0121.A.storageManager.06.0000.dat',
0115 #            'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0141.A.storageManager.07.0000.dat',
0116             'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0161.A.storageManager.08.0000.dat',
0117 #            'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0181.A.storageManager.09.0000.dat',                   
0118 #            'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0201.A.storageManager.10.0000.dat',                   
0119 #            'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0221.A.storageManager.11.0000.dat',                   
0120 #            'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0241.A.storageManager.12.0000.dat',                   
0121 #            'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0261.A.storageManager.13.0000.dat',
0122             'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0281.A.storageManager.14.0000.dat',
0123 #            'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0301.A.storageManager.15.0000.dat',
0124 #            'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0321.A.storageManager.00.0000.dat',
0125             'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0341.A.storageManager.01.0000.dat',
0126             'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0361.A.storageManager.02.0000.dat',
0127 #            'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0381.A.storageManager.03.0000.dat',
0128 #            'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0401.A.storageManager.04.0000.dat',
0129 #            'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0421.A.storageManager.05.0000.dat',
0130 #            'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0441.A.storageManager.06.0000.dat',
0131 #            'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0461.A.storageManager.07.0000.dat',
0132 #            'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0481.A.storageManager.08.0000.dat',
0133 #            'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0501.A.storageManager.09.0000.dat',
0134 #            'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0521.A.storageManager.10.0000.dat',
0135 #            'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0541.A.storageManager.11.0000.dat',
0136 #            'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0561.A.storageManager.12.0000.dat',
0137 #            'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0581.A.storageManager.13.0000.dat',
0138 #            'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0601.A.storageManager.14.0000.dat',
0139 #            'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0621.A.storageManager.15.0000.dat',
0140 #            'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0641.A.storageManager.00.0000.dat',
0141 #            'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0661.A.storageManager.01.0000.dat',
0142             'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0681.A.storageManager.02.0000.dat',
0143             'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0701.A.storageManager.03.0000.dat',
0144             'file:/afs/cern.ch/user/g/ghete/work/L1Trigger/data/Data.00205666.0721.A.storageManager.04.0000.dat'                     
0145                  ]
0146  
0147     selectedEvents = cms.untracked.VEventRange(
0148                                     '205666:101:125069341',
0149                                     '205666:161:238160322',
0150                                     '205666:281:443371795',
0151                                     '205666:341:537654884',
0152                                     '205666:361:567121052', 
0153                                     '205666:361:567121053-205666:721:MAX'
0154                                     )
0155             
0156 
0157 
0158 # FEDRawDataCollection label
0159 fedLabel='rawDataCollector'
0160    
0161 
0162 ###############
0163 # Process setup
0164 ###############
0165 
0166 # Run on one orbit of events at most - more doesn't make sense
0167 # because the pattern file can contain at most 3564 lines.
0168 process.maxEvents = cms.untracked.PSet ( 
0169   input = cms.untracked.int32(3564),
0170 )
0171 
0172 # input source according to data type
0173 if dataType == 'StreamFile' :
0174     process.source = cms.Source("NewEventStreamFileReader", 
0175                                 fileNames=cms.untracked.vstring(dataFiles),
0176                                 lumisToProcess = selectedLumis,
0177                                 eventsToProcess = selectedEvents
0178                                 )
0179 else :        
0180     process.source = cms.Source ('PoolSource', 
0181                                  fileNames=cms.untracked.vstring(dataFiles), 
0182                                  lumisToProcess = selectedLumis,
0183                                  eventsToProcess = selectedEvents
0184                                  )
0185 
0186 
0187 # Load and configure modules via global tag
0188 process.load('Configuration.StandardSequences.GeometryDB_cff')
0189 process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
0190 
0191 if globalTag.count('auto') :
0192     from Configuration.AlCa.autoCond import autoCond
0193     useGlobalTag = autoCond[globalTag.replace('auto:', '')]
0194 else :
0195     useGlobalTag = globalTag    
0196 process.GlobalTag.globaltag = useGlobalTag
0197 
0198 # Global Trigger unpacker - produce decision & regional muons from readout record
0199 process.load("EventFilter.L1GlobalTriggerRawToDigi.l1GtUnpack_cfi")
0200 process.l1GtUnpack.DaqGtInputTag = cms.InputTag(fedLabel)
0201 
0202 # GCT unpacker - produce egamma objects / jets / etc from readout
0203 process.load("EventFilter.GctRawToDigi.l1GctHwDigis_cfi")
0204 process.l1GctHwDigis.inputLabel = cms.InputTag(fedLabel)
0205 
0206 # Load and configure Pattern Generator
0207 process.load("L1Trigger.GlobalTriggerAnalyzer.l1GtPatternGenerator_cfi")
0208 
0209 # Take GCT and GMT data from unpackers
0210 gctLabel = 'l1GctHwDigis'
0211 gmtLabel = 'l1GtUnpack'
0212 process.l1GtPatternGenerator.GctInputTag = gctLabel
0213 process.l1GtPatternGenerator.GmtInputTag = gmtLabel
0214 process.l1GtPatternGenerator.CscInputTag = cms.InputTag(gmtLabel, "CSC")
0215 process.l1GtPatternGenerator.DtInputTag = cms.InputTag(gmtLabel, "DT")
0216 process.l1GtPatternGenerator.RpcbInputTag = cms.InputTag(gmtLabel, "RPCb")
0217 process.l1GtPatternGenerator.RpcfInputTag = cms.InputTag(gmtLabel, "RPCf")
0218 
0219 ## enable detailed output (event no/bx per line, item tracing)
0220 #process.l1GtPatternGenerator.DebugOutput = cms.bool(True)
0221 
0222 # Global Trigger emulator - take input data from 
0223 # the same sources as the pattern writer
0224 process.load("L1Trigger.GlobalTrigger.gtDigis_cfi")
0225 process.gtDigis.GmtInputTag = gmtLabel
0226 process.gtDigis.GctInputTag = gctLabel
0227 process.gtDigis.ProduceL1GtEvmRecord = False
0228 process.gtDigis.ProduceL1GtObjectMapRecord = False
0229 process.gtDigis.WritePsbL1GtDaqRecord = False
0230 process.gtDigis.EmulateBxInEvent = -1
0231 
0232 # temporary fix for L1 GT emulator configuration in hardware validation
0233 process.gtDigis.RecordLength = cms.vint32(3, 5)
0234 process.gtDigis.AlternativeNrBxBoardDaq = 0x101
0235 process.gtDigis.AlternativeNrBxBoardEvm = 0x2
0236 
0237 # switch on verbosity in L1 GT emulator
0238 #process.gtDigis.Verbosity = cms.untracked.int32(1)
0239 
0240 
0241 
0242 # Global Trigger report (emulator)
0243 import L1Trigger.GlobalTriggerAnalyzer.l1GtTrigReport_cfi
0244 process.l1GtTrigReportEmul = L1Trigger.GlobalTriggerAnalyzer.l1GtTrigReport_cfi.l1GtTrigReport.clone()
0245 process.l1GtTrigReportEmul.L1GtRecordInputTag = 'gtDigis'
0246 # Report pass/fail for each trigger
0247 process.l1GtTrigReportEmul.PrintVerbosity = 10
0248 
0249 # path to be run
0250 # - the pattern generator depends on the decision records produced by the GT emulator
0251 process.p = cms.Path(process.l1GtUnpack * process.l1GctHwDigis * process.gtDigis * process.l1GtPatternGenerator * process.l1GtTrigReportEmul)
0252 
0253 # services
0254 
0255 # Message Logger
0256 process.load('FWCore.MessageService.MessageLogger_cfi')
0257 process.MessageLogger.debugModules = ['l1GtPatternGenerator', 'gtDigis']
0258 
0259 process.MessageLogger.cerr.enable = False
0260 process.MessageLogger.cerr.default.limit = 0
0261 process.MessageLogger.cerr.FwkReport.limit = 0
0262 process.MessageLogger.cerr.FwkSummary.limit = 0
0263 
0264 process.MessageLogger.files.L1GtPatternGenerator_debug = cms.untracked.PSet( 
0265         threshold = cms.untracked.string('DEBUG'),
0266         DEBUG = cms.untracked.PSet( limit = cms.untracked.int32(0) ),
0267         INFO = cms.untracked.PSet( limit = cms.untracked.int32(0) ),
0268         WARNING = cms.untracked.PSet( limit = cms.untracked.int32(0) ),
0269         ERROR = cms.untracked.PSet( limit = cms.untracked.int32(0) ),
0270         L1GtPatternGenerator = cms.untracked.PSet( limit = cms.untracked.int32(-1) ),
0271         L1GtTrigReport = cms.untracked.PSet( limit = cms.untracked.int32(0) ) 
0272         )
0273 
0274 process.MessageLogger.files.L1GtPatternGenerator_info = cms.untracked.PSet( 
0275         threshold = cms.untracked.string('INFO'),
0276         INFO = cms.untracked.PSet( limit = cms.untracked.int32(0) ),
0277         WARNING = cms.untracked.PSet( limit = cms.untracked.int32(0) ),
0278         ERROR = cms.untracked.PSet( limit = cms.untracked.int32(0) ),
0279         L1GtPatternGenerator = cms.untracked.PSet( limit = cms.untracked.int32(-1) ),
0280         L1GtTrigReport = cms.untracked.PSet( limit = cms.untracked.int32(-1) ) 
0281         )
0282 
0283 process.MessageLogger.files.L1GtPatternGenerator_warning = cms.untracked.PSet( 
0284         threshold = cms.untracked.string('WARNING'),
0285         WARNING = cms.untracked.PSet( limit = cms.untracked.int32(0) ),
0286         ERROR = cms.untracked.PSet( limit = cms.untracked.int32(0) ),
0287         L1GtPatternGenerator = cms.untracked.PSet( limit = cms.untracked.int32(-1) ),
0288         L1GtTrigReport = cms.untracked.PSet( limit = cms.untracked.int32(0) ) 
0289         )
0290 
0291 process.MessageLogger.files.L1GtPatternGenerator_error = cms.untracked.PSet( 
0292         threshold = cms.untracked.string('ERROR'),
0293         ERROR = cms.untracked.PSet( limit = cms.untracked.int32(-1) ),
0294         L1GtPatternGenerator = cms.untracked.PSet( limit = cms.untracked.int32(-1) ),
0295         L1GtTrigReport = cms.untracked.PSet( limit = cms.untracked.int32(-1) ) 
0296        )
0297 
0298 print("Setup complete.")
0299 
0300 ## output - disabled by default, the pattern generator writes to a text file
0301 #process.outputL1GtPatternGen = cms.OutputModule("PoolOutputModule",
0302 #    fileName = cms.untracked.string('testGt_PatternGenerator_output.root')
0303 #)
0304 
0305 #process.outpath = cms.EndPath(process.outputL1GtPatternGen)