CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
simEmtfDigis_cfi.py
Go to the documentation of this file.
1 import FWCore.ParameterSet.Config as cms
2 
3 # EMTF emulator configuration
4 
5 # Check that proper switches are implemented in L1Trigger/Configuration/python/customiseReEmul.py - AWB 02.06.17
6 
7 ###############################################################################################
8 ### IMPORTANT!!! Any changes to this file should be reflected in the 2016, 2017, and 2018 ###
9 ### configurations in configure_by_fw_version in src/SectorProcessor.cc ###
10 ###############################################################################################
11 
12 simEmtfDigisMC = cms.EDProducer("L1TMuonEndCapTrackProducer",
13  # Verbosity level
14  verbosity = cms.untracked.int32(0),
15 
16  # Configure by firmware version, which may be different than the default parameters in this file
17  FWConfig = cms.bool(True),
18 
19  # Era (options: 'Run2_2016', 'Run2_2017', 'Run2_2018')
20  Era = cms.string('Run2_2018'),
21 
22  # New Run 3 CSC TPs using CCLUT algorithm
23  UseRun3CCLUT_OTMB = cms.bool(False),
24  UseRun3CCLUT_TMB = cms.bool(False),
25 
26  # Input collections
27  # Three options for CSCInput
28  # * 'simCscTriggerPrimitiveDigis','MPCSORTED' : simulated trigger primitives (LCTs) from re-emulating CSC digis
29  # * 'csctfDigis' : real trigger primitives as received by CSCTF (legacy trigger), available only in 2016 data
30  # * 'emtfStage2Digis' : real trigger primitives as received by EMTF, unpacked in EventFilter/L1TRawToDigi/
31  DTPhiInput = cms.InputTag('simTwinMuxDigis'),
32  DTThetaInput = cms.InputTag('simDtTriggerPrimitiveDigis'),
33  CSCInput = cms.InputTag('simCscTriggerPrimitiveDigis','MPCSORTED'),
34  CSCComparatorInput = cms.InputTag('simMuonCSCDigis','MuonCSCComparatorDigi'),
35  RPCInput = cms.InputTag('simMuonRPCDigis'),
36  CPPFInput = cms.InputTag('simCPPFDigis'), ## Cannot use in MC workflow, does not exist yet. CPPFEnable set to False - AWB 01.06.18
37  GEMInput = cms.InputTag('simMuonGEMPadDigiClusters'),
38  ME0Input = cms.InputTag('me0TriggerConvertedPseudoDigis'),
39 
40  # Run with CSC, RPC, GEM
41  DTEnable = cms.bool(False),
42  CSCEnable = cms.bool(True), # Use CSC LCTs from the MPCs in track-building
43  RPCEnable = cms.bool(True), # Use clustered RPC hits from CPPF in track-building
44  IRPCEnable = cms.bool(False),
45  CPPFEnable = cms.bool(False), # Use CPPF-emulated clustered RPC hits from CPPF as the RPC hits
46  GEMEnable = cms.bool(False), # Use hits from GEMs in track-building
47  ME0Enable = cms.bool(False),
48 
49  # BX
50  MinBX = cms.int32(-3), # Minimum BX considered
51  MaxBX = cms.int32(+3), # Maximum BX considered
52  BXWindow = cms.int32(2), # Number of BX whose primitives can be included in the same track
53 
54  # CSC LCT BX offset correction
55  CSCInputBXShift = cms.int32(-8), # Shift applied to input CSC LCT primitives, to center at BX = 0
56  RPCInputBXShift = cms.int32(0),
57  GEMInputBXShift = cms.int32(0),
58  ME0InputBXShift = cms.int32(-8),
59 
60  # Sector processor primitive-conversion parameters
61  spPCParams16 = cms.PSet(
62  ZoneBoundaries = cms.vint32(0,41,49,87,127), # Vertical boundaries of track-building zones, in integer theta (5 for 4 zones)
63  # ZoneBoundaries = cms.vint32(0,36,54,96,127), # New proposed zone boundaries
64  ZoneOverlap = cms.int32(2), # Overlap between zones
65  IncludeNeighbor = cms.bool(True), # Include primitives from neighbor chambers in track-building
66  DuplicateTheta = cms.bool(True), # Use up to 4 theta/phi positions for two LCTs in the same chamber
67  FixZonePhi = cms.bool(True), # Pattern phi slightly offset from true LCT phi; also ME3/4 pattern width off
68  UseNewZones = cms.bool(False), # Improve high-quality pattern finding near ring 1-2 gap in ME3/4
69  FixME11Edges = cms.bool(True), # Improved small fraction of buggy LCT coordinate transformations
70  ),
71 
72  # Sector processor pattern-recognition parameters
73  spPRParams16 = cms.PSet(
74  PatternDefinitions = cms.vstring(
75  # straightness, hits in ME1, hits in ME2, hits in ME3, hits in ME4
76  # ME1 vaues centered at 15, range from 0 - 30
77  # ME2,3,4 values centered at 7, range from 0 - 14
78  "4,15:15,7:7,7:7,7:7",
79  "3,16:16,7:7,7:6,7:6",
80  "3,14:14,7:7,8:7,8:7",
81  "2,18:17,7:7,7:5,7:5", # should be 7:4 in ME3,4 (FW bug)
82  "2,13:12,7:7,10:7,10:7",
83  "1,22:19,7:7,7:0,7:0",
84  "1,11:8,7:7,14:7,14:7",
85  "0,30:23,7:7,7:0,7:0",
86  "0,7:0,7:7,14:7,14:7",
87  ),
88  SymPatternDefinitions = cms.vstring(
89  # straightness, hits in ME1, hits in ME2, hits in ME3, hits in ME4
90  "4,15:15:15:15,7:7:7:7,7:7:7:7,7:7:7:7",
91  "3,16:16:14:14,7:7:7:7,8:7:7:6,8:7:7:6",
92  "2,18:17:13:12,7:7:7:7,10:7:7:4,10:7:7:4",
93  "1,22:19:11:8,7:7:7:7,14:7:7:0,14:7:7:0",
94  "0,30:23:7:0,7:7:7:7,14:7:7:0,14:7:7:0",
95  ),
96  UseSymmetricalPatterns = cms.bool(True), # 5 symmetric patterns instead of 9 asymmetric for track building
97  ),
98 
99  # Sector processor track-building parameters
100  spTBParams16 = cms.PSet(
101  ThetaWindow = cms.int32(8), # Maximum dTheta between primitives in the same track
102  ThetaWindowZone0 = cms.int32(4), # Maximum dTheta between primitives in the same track in Zone 0 (ring 1)
103  UseSingleHits = cms.bool(False), # Build "tracks" from single LCTs in ME1/1
104  BugSt2PhDiff = cms.bool(False), # Reduced LCT matching window in station 2, resulting in demoted tracks and inefficiency
105  BugME11Dupes = cms.bool(False), # LCTs matched to track may take theta value from other LCT in the same chamber
106  BugAmbigThetaWin = cms.bool(False), # Can allow dThetas outside window when there are 2 LCTs in the same chamber
107  TwoStationSameBX = cms.bool(True), # Requires the hits in two-station tracks to have the same BX
108  ),
109 
110  # Sector processor ghost-cancellation parameters
111  spGCParams16 = cms.PSet(
112  MaxRoadsPerZone = cms.int32(3), # Number of patterns that can be built per theta zone
113  MaxTracks = cms.int32(3), # Number of tracks that can be sent from each sector
114  UseSecondEarliest = cms.bool(True), # Second-earliest LCT used to assign BX, tracks cancel over 3 BX, improved LCT recovery
115  BugSameSectorPt0 = cms.bool(False), # Only highest-quality track in a sector assigned pT; others assigned pT = 0
116  ),
117 
118  # Sector processor pt-assignment parameters
119  spPAParams16 = cms.PSet(
120  ReadPtLUTFile = cms.bool(False),
121  FixMode15HighPt = cms.bool(True), # High-pT fix puts outlier LCTs in mode 15 tracks back in a straight line
122  Bug9BitDPhi = cms.bool(False), # dPhi wrap-around in modes 3, 5, 6, 9, 10, 12
123  BugMode7CLCT = cms.bool(False), # pT LUT written with incorrect values for mode 7 CLCT, mode 10 random offset
124  BugNegPt = cms.bool(False), # In all modes negative (1/pT) set to 3 instead of 511
125  BugGMTPhi = cms.bool(False), # Some drift in uGMT phi conversion, off by up to a few degrees
126  PromoteMode7 = cms.bool(False), # Assign station 2-3-4 tracks with |eta| > 1.6 SingleMu quality
127  ModeQualVer = cms.int32(2), # Version 2 contains modified mode-quality mapping for 2018
128 
129  ProtobufFileName = cms.string('model_graph.displ.5.pb'), # Protobuf file name to be used by NN based pT assignment
130  ),
131 
132 )
133 
134 simEmtfDigisData = simEmtfDigisMC.clone(
135  DTPhiInput = cms.InputTag('bmtfDigis'),
136  DTThetaInput = cms.InputTag('bmtfDigis'),
137  CSCInput = cms.InputTag('emtfStage2Digis'),
138  CSCComparatorInput = cms.InputTag('muonCSCDigis','MuonCSCComparatorDigi'),
139  RPCInput = cms.InputTag('muonRPCDigis'),
140  CPPFInput = cms.InputTag('emtfStage2Digis'),
141 
142  CPPFEnable = cms.bool(True), # Use CPPF-emulated clustered RPC hits from CPPF as the RPC hits
143 
144 )
145 
146 simEmtfDigis = simEmtfDigisMC.clone()
147 
148 
149 ## Load "Era" modules to adjust RPCEnable and Era (which controls the choice of PtAssignmentEngine)
150 ## If neither 'Run2_2016' nor 'Run2_2017' are invoked, default 2018 settings are used
151 ## Era configuration files are located in Configuration/Eras/python
152 
153 ## Era: Run2_2016
154 from Configuration.Eras.Modifier_stage2L1Trigger_cff import stage2L1Trigger
155 stage2L1Trigger.toModify(simEmtfDigis, RPCEnable = cms.bool(False), Era = cms.string('Run2_2016'))
156 
157 ## Era: Run2_2017
158 from Configuration.Eras.Modifier_stage2L1Trigger_2017_cff import stage2L1Trigger_2017
159 stage2L1Trigger_2017.toModify(simEmtfDigis, RPCEnable = cms.bool(True), Era = cms.string('Run2_2017'))
160 
161 ## Era: Run2_2018
162 from Configuration.Eras.Modifier_stage2L1Trigger_2018_cff import stage2L1Trigger_2018
163 stage2L1Trigger_2018.toModify(simEmtfDigis, RPCEnable = cms.bool(True), Era = cms.string('Run2_2018'))
164 
165 ## Era: Run3_2021
166 from Configuration.Eras.Modifier_stage2L1Trigger_2021_cff import stage2L1Trigger_2021
167 stage2L1Trigger_2021.toModify(simEmtfDigis, RPCEnable = cms.bool(True), UseRun3CCLUT_OTMB = cms.bool(False), Era = cms.string('Run3_2021'))