CMS 3D CMS Logo

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  # Input collections
20  # Three options for CSCInput
21  # * 'simCscTriggerPrimitiveDigis','MPCSORTED' : simulated trigger primitives (LCTs) from re-emulating CSC digis
22  # * 'csctfDigis' : real trigger primitives as received by CSCTF (legacy trigger), available only in 2016 data
23  # * 'emtfStage2Digis' : real trigger primitives as received by EMTF, unpacked in EventFilter/L1TRawToDigi/
24  CSCInput = cms.InputTag('simCscTriggerPrimitiveDigis','MPCSORTED'),
25  RPCInput = cms.InputTag('simMuonRPCDigis'),
26  CPPFInput = cms.InputTag('simCPPFDigis'), ## Cannot use in MC workflow, does not exist yet. CPPFEnable set to False - AWB 01.06.18
27  GEMInput = cms.InputTag('simMuonGEMPadDigis'),
28 
29  # Run with CSC, RPC, GEM
30  CSCEnable = cms.bool(True), # Use CSC LCTs from the MPCs in track-building
31  RPCEnable = cms.bool(True), # Use clustered RPC hits from CPPF in track-building
32  CPPFEnable = cms.bool(False), # Use CPPF-emulated clustered RPC hits from CPPF as the RPC hits
33  GEMEnable = cms.bool(False), # Use hits from GEMs in track-building
34 
35  # Era (options: 'Run2_2016', 'Run2_2017', 'Run2_2018')
36  Era = cms.string('Run2_2018'),
37 
38  # BX
39  MinBX = cms.int32(-3), # Minimum BX considered
40  MaxBX = cms.int32(+3), # Maximum BX considered
41  BXWindow = cms.int32(2), # Number of BX whose primitives can be included in the same track
42 
43  # CSC LCT BX offset correction
44  CSCInputBXShift = cms.int32(-8), # Shift applied to input CSC LCT primitives, to center at BX = 0
45  RPCInputBXShift = cms.int32(0),
46  GEMInputBXShift = cms.int32(0),
47 
48  # Sector processor primitive-conversion parameters
49  spPCParams16 = cms.PSet(
50  PrimConvLUT = cms.int32(2), # v0, v1, and v2 LUTs used at different times, "-1" for local CPPF files (only works if FWConfig = False)
51  ZoneBoundaries = cms.vint32(0,41,49,87,127), # Vertical boundaries of track-building zones, in integer theta (5 for 4 zones)
52  # ZoneBoundaries = cms.vint32(0,36,54,96,127), # New proposed zone boundaries
53  ZoneOverlap = cms.int32(2), # Overlap between zones
54  IncludeNeighbor = cms.bool(True), # Include primitives from neighbor chambers in track-building
55  DuplicateTheta = cms.bool(True), # Use up to 4 theta/phi positions for two LCTs in the same chamber
56  FixZonePhi = cms.bool(True), # Pattern phi slightly offset from true LCT phi; also ME3/4 pattern width off
57  UseNewZones = cms.bool(False), # Improve high-quality pattern finding near ring 1-2 gap in ME3/4
58  FixME11Edges = cms.bool(True), # Improved small fraction of buggy LCT coordinate transformations
59  ),
60 
61  # Sector processor pattern-recognition parameters
62  spPRParams16 = cms.PSet(
63  PatternDefinitions = cms.vstring(
64  # straightness, hits in ME1, hits in ME2, hits in ME3, hits in ME4
65  # ME1 vaues centered at 15, range from 0 - 30
66  # ME2,3,4 values centered at 7, range from 0 - 14
67  "4,15:15,7:7,7:7,7:7",
68  "3,16:16,7:7,7:6,7:6",
69  "3,14:14,7:7,8:7,8:7",
70  "2,18:17,7:7,7:5,7:5", # should be 7:4 in ME3,4 (FW bug)
71  "2,13:12,7:7,10:7,10:7",
72  "1,22:19,7:7,7:0,7:0",
73  "1,11:8,7:7,14:7,14:7",
74  "0,30:23,7:7,7:0,7:0",
75  "0,7:0,7:7,14:7,14:7",
76  ),
77  SymPatternDefinitions = cms.vstring(
78  # straightness, hits in ME1, hits in ME2, hits in ME3, hits in ME4
79  "4,15:15:15:15,7:7:7:7,7:7:7:7,7:7:7:7",
80  "3,16:16:14:14,7:7:7:7,8:7:7:6,8:7:7:6",
81  "2,18:17:13:12,7:7:7:7,10:7:7:4,10:7:7:4",
82  "1,22:19:11:8,7:7:7:7,14:7:7:0,14:7:7:0",
83  "0,30:23:7:0,7:7:7:7,14:7:7:0,14:7:7:0",
84  ),
85  UseSymmetricalPatterns = cms.bool(True), # 5 symmetric patterns instead of 9 asymmetric for track building
86  ),
87 
88  # Sector processor track-building parameters
89  spTBParams16 = cms.PSet(
90  ThetaWindow = cms.int32(8), # Maximum dTheta between primitives in the same track
91  ThetaWindowZone0 = cms.int32(4), # Maximum dTheta between primitives in the same track in Zone 0 (ring 1)
92  UseSingleHits = cms.bool(False), # Build "tracks" from single LCTs in ME1/1
93  BugSt2PhDiff = cms.bool(False), # Reduced LCT matching window in station 2, resulting in demoted tracks and inefficiency
94  BugME11Dupes = cms.bool(False), # LCTs matched to track may take theta value from other LCT in the same chamber
95  BugAmbigThetaWin = cms.bool(False), # Can allow dThetas outside window when there are 2 LCTs in the same chamber
96  TwoStationSameBX = cms.bool(True), # Requires the hits in two-station tracks to have the same BX
97  ),
98 
99  # Sector processor ghost-cancellation parameters
100  spGCParams16 = cms.PSet(
101  MaxRoadsPerZone = cms.int32(3), # Number of patterns that can be built per theta zone
102  MaxTracks = cms.int32(3), # Number of tracks that can be sent from each sector
103  UseSecondEarliest = cms.bool(True), # Second-earliest LCT used to assign BX, tracks cancel over 3 BX, improved LCT recovery
104  BugSameSectorPt0 = cms.bool(False), # Only highest-quality track in a sector assigned pT; others assigned pT = 0
105  ),
106 
107  # Sector processor pt-assignment parameters
108  spPAParams16 = cms.PSet(
109  ReadPtLUTFile = cms.bool(False),
110  FixMode15HighPt = cms.bool(True), # High-pT fix puts outlier LCTs in mode 15 tracks back in a straight line
111  Bug9BitDPhi = cms.bool(False), # dPhi wrap-around in modes 3, 5, 6, 9, 10, 12
112  BugMode7CLCT = cms.bool(False), # pT LUT written with incorrect values for mode 7 CLCT, mode 10 random offset
113  BugNegPt = cms.bool(False), # In all modes negative (1/pT) set to 3 instead of 511
114  BugGMTPhi = cms.bool(False), # Some drift in uGMT phi conversion, off by up to a few degrees
115  PromoteMode7 = cms.bool(False), # Assign station 2-3-4 tracks with |eta| > 1.6 SingleMu quality
116  ModeQualVer = cms.int32(2), # Version 2 contains modified mode-quality mapping for 2018
117  ),
118 
119 )
120 
121 simEmtfDigisData = simEmtfDigisMC.clone(
122  CSCInput = cms.InputTag('emtfStage2Digis'),
123  RPCInput = cms.InputTag('muonRPCDigis'),
124  CPPFInput = cms.InputTag('emtfStage2Digis'),
125  GEMInput = cms.InputTag('muonGEMPadDigis'),
126 
127  CPPFEnable = cms.bool(True), # Use CPPF-emulated clustered RPC hits from CPPF as the RPC hits
128 
129 )
130 
131 simEmtfDigis = simEmtfDigisMC.clone()
132 
133 
134 ## Load "Era" modules to adjust RPCEnable and Era (which controls the choice of PtAssignmentEngine)
135 ## If neither 'Run2_2016' nor 'Run2_2017' are invoked, default 2018 settings are used
136 ## Era configuration files are located in Configuration/Eras/python
137 
138 ## Era: Run2_2016
139 from Configuration.Eras.Modifier_stage2L1Trigger_EMTF2016_cff import stage2L1Trigger_EMTF2016
140 stage2L1Trigger_EMTF2016.toModify(simEmtfDigis, RPCEnable = cms.bool(False), Era = cms.string('Run2_2016'))
141 
142 # ## Era: Run2_2017
143 # ## Run2_2017 fix disabled for UL2016 processing with CMSSW_10_6_X
144 # from Configuration.Eras.Modifier_stage2L1Trigger_2017_cff import stage2L1Trigger_2017
145 # stage2L1Trigger_2017.toModify(simEmtfDigis, RPCEnable = cms.bool(True), Era = cms.string('Run2_2017'))