CMS 3D CMS Logo

ProducerSetup_cfi.py
Go to the documentation of this file.
1 import FWCore.ParameterSet.Config as cms
2 
3 TrackTrigger_params = cms.PSet (
4 
5  fromDD4hep = cms.bool(False),
6 
7  # Parameter to check if configured Tracker Geometry is supported
8  # this refers to files included by Configuration/Geometry/python/GeometryExtended*_cff.py
9  UnSupportedGeometry = cms.PSet (
10  XMLLabel = cms.string ("geomXMLFiles" ), # label of ESProducer/ESSource
11  XMLPath = cms.string ("Geometry/TrackerCommonData/data/PhaseII/" ), # compared path
12  XMLFile = cms.string ("tracker.xml" ), # compared filen ame
13  XMLVersions = cms.vstring() # list of unsupported versions
14  ),
15 
16  # Parameter to check if Process History is consistent with process configuration
17  ProcessHistory = cms.PSet (
18  GeometryConfiguration = cms.string( "XMLIdealGeometryESSource@" ), # label of compared GeometryConfiguration
19  TTStubAlgorithm = cms.string( "TTStubAlgorithm_official_Phase2TrackerDigi_@" ) # label of compared TTStubAlgorithm
20  ),
21 
22  # Common track finding parameter
23  TrackFinding = cms.PSet (
24  BeamWindowZ = cms.double( 15. ), # half lumi region size in cm
25  MatchedLayers = cms.int32 ( 4 ), # required number of layers a found track has to have in common with a TP to consider it matched to it
26  MatchedLayersPS = cms.int32 ( 0 ), # required number of ps layers a found track has to have in common with a TP to consider it matched to it
27  UnMatchedStubs = cms.int32 ( 1 ), # allowed number of stubs a found track may have not in common with its matched TP
28  UnMatchedStubsPS = cms.int32 ( 0 ), # allowed number of PS stubs a found track may have not in common with its matched TP
29  Scattering = cms.double( 0.131283 ) # additional radial uncertainty in cm used to calculate stub phi residual uncertainty to take multiple scattering into account
30  ),
31 
32  # TMTT specific parameter
33  TMTT = cms.PSet (
34  MinPt = cms.double( 3. ), # cut on stub in GeV, also defines region overlap shape
35  MaxEta = cms.double( 2.4 ), # cut on stub eta
36  ChosenRofPhi = cms.double( 67.24 ), # critical radius defining region overlap shape in cm
37  NumLayers = cms.int32 ( 7 ), # number of detector layers a reconstructbale particle may cross, reduced to 7, 8th layer almost never corssed
38  WidthR = cms.int32 ( 12 ), # number of bits used for stub r - ChosenRofPhi
39  WidthPhi = cms.int32 ( 15 ), # number of bits used for stub phi w.r.t. phi region centre
40  WidthZ = cms.int32 ( 14 ) # number of bits used for stub z
41  ),
42 
43  # Hybrid specific parameter
44  Hybrid = cms.PSet (
45  MinPtStub = cms.double( 2.0 ), # cut on stub pt in GeV, also defines region overlap shape
46  MinPtCand = cms.double( 1.34 ), # cut on candidate pt in GeV
47  MaxEta = cms.double( 2.5 ), # cut on stub eta
48  ChosenRofPhi = cms.double( 55. ), # critical radius defining region overlap shape in cm
49  NumLayers = cms.int32 ( 4 ), # max number of detector layer connected to one DTC
50  NumRingsPS = cms.vint32 ( 11, 11, 8, 8, 8 ), # number of outer PS rings for disk 1, 2, 3, 4, 5
51  WidthsR = cms.vint32 ( 7, 7, 12, 7 ), # number of bits used for stub r w.r.t layer/disk centre for module types (barrelPS, barrel2S, diskPS, disk2S)
52  WidthsZ = cms.vint32 ( 12, 8, 7, 7 ), # number of bits used for stub z w.r.t layer/disk centre for module types (barrelPS, barrel2S, diskPS, disk2S)
53  WidthsPhi = cms.vint32 ( 14, 17, 14, 14 ), # number of bits used for stub phi w.r.t. region centre for module types (barrelPS, barrel2S, diskPS, disk2S)
54  WidthsAlpha = cms.vint32 ( 0, 0, 0, 4 ), # number of bits used for stub row number for module types (barrelPS, barrel2S, diskPS, disk2S)
55  WidthsBend = cms.vint32 ( 3, 4, 3, 4 ), # number of bits used for stub bend number for module types (barrelPS, barrel2S, diskPS, disk2S)
56  RangesR = cms.vdouble( 7.5, 7.5, 120. , 0. ), # range in stub r which needs to be covered for module types (barrelPS, barrel2S, diskPS, disk2S)
57  RangesZ = cms.vdouble( 240., 240., 7.5, 7.5 ), # range in stub z which needs to be covered for module types (barrelPS, barrel2S, diskPS, disk2S)
58  RangesAlpha = cms.vdouble( 0., 0., 0., 2048. ), # range in stub row which needs to be covered for module types (barrelPS, barrel2S, diskPS, disk2S)
59  LayerRs = cms.vdouble( 24.9316, 37.1777, 52.2656, 68.7598, 86.0156, 108.3105 ), # mean radius of outer tracker barrel layer
60  DiskZs = cms.vdouble( 131.1914, 154.9805, 185.3320, 221.6016, 265.0195 ), # mean z of outer tracker endcap disks
61  Disk2SRsSet = cms.VPSet( # center radius of outer tracker endcap 2S diks strips
62  cms.PSet( Disk2SRs = cms.vdouble( 66.4391, 71.4391, 76.2750, 81.2750, 82.9550, 87.9550, 93.8150, 98.8150, 99.8160, 104.8160 ) ), # disk 1
63  cms.PSet( Disk2SRs = cms.vdouble( 66.4391, 71.4391, 76.2750, 81.2750, 82.9550, 87.9550, 93.8150, 98.8150, 99.8160, 104.8160 ) ), # disk 2
64  cms.PSet( Disk2SRs = cms.vdouble( 63.9903, 68.9903, 74.2750, 79.2750, 81.9562, 86.9562, 92.4920, 97.4920, 99.8160, 104.8160 ) ), # disk 3
65  cms.PSet( Disk2SRs = cms.vdouble( 63.9903, 68.9903, 74.2750, 79.2750, 81.9562, 86.9562, 92.4920, 97.4920, 99.8160, 104.8160 ) ), # disk 4
66  cms.PSet( Disk2SRs = cms.vdouble( 63.9903, 68.9903, 74.2750, 79.2750, 81.9562, 86.9562, 92.4920, 97.4920, 99.8160, 104.8160 ) ) # disk 5
67  ),
68  InnerRadius = cms.double( 19.6 ), # smallest stub radius after TrackBuilder in cm
69  ),
70 
71  # Parameter specifying TrackingParticle used for Efficiency measurements
72  TrackingParticle = cms.PSet (
73  MinPt = cms.double( 2. ), # pt cut in GeV
74  MaxEta = cms.double( 2.4 ), # eta cut
75  MaxVertR = cms.double( 1. ), # cut on vertex pos r in cm
76  MaxVertZ = cms.double( 30. ), # cut on vertex pos z in cm
77  MaxD0 = cms.double( 5. ), # cut on impact parameter in cm
78  MinLayers = cms.int32 ( 4 ), # required number of associated layers to a TP to consider it reconstruct-able and to match it with TTTrack
79  MinLayersPS = cms.int32 ( 0 ), # required number of associated ps layers to a TP to consider it reconstruct-able
80  MaxBadStubs2S = cms.int32 ( 1 ), # max number of unassociated 2S stubs allowed to still associate TTTrack with TP
81  MaxBadStubsPS = cms.int32 ( 0 ) # max number of unassociated PS stubs allowed to still associate TTTrack with TP
82  ),
83 
84  # Fimrware specific Parameter
85  Firmware = cms.PSet (
86  WidthDSPa = cms.int32( 27 ), # width of the 'A' port of an DSP slice
87  WidthDSPb = cms.int32( 18 ), # width of the 'B' port of an DSP slice
88  WidthDSPc = cms.int32( 48 ), # width of the 'C' port of an DSP slice
89  WidthAddrBRAM36 = cms.int32( 9 ), # smallest address width of an BRAM36 configured as broadest simple dual port memory
90  WidthAddrBRAM18 = cms.int32( 10 ), # smallest address width of an BRAM18 configured as broadest simple dual port memory
91  NumFramesInfra = cms.int32 ( 6 ), # needed gap between events of emp-infrastructure firmware
92  FreqLHC = cms.double( 40. ), # LHC bunch crossing rate in MHz
93  FreqBE = cms.double( 360. ), # processing Frequency of DTC, KF & TFP in MHz, has to be integer multiple of FreqLHC
94  TMP_FE = cms.int32 ( 8 ), # number of events collected in front-end
95  TMP_TFP = cms.int32 ( 18 ), # time multiplexed period of track finding processor
96  SpeedOfLight = cms.double( 2.99792458 ), # in e8 m/s
97  BField = cms.double( 3.81120228767395 ), # in T
98  BFieldError = cms.double( 1.e-6 ), # accepted difference to EventSetup in T
99  OuterRadius = cms.double( 112.7 ), # outer radius of outer tracker in cm
100  InnerRadius = cms.double( 21.8 ), # inner radius of outer tracker in cm
101  HalfLength = cms.double( 270. ), # half length of outer tracker in cm
102  TiltApproxSlope = cms.double( 0.884 ), # In tilted barrel, grad*|z|/r + int approximates |cosTilt| + |sinTilt * cotTheta|
103  TiltApproxIntercept = cms.double( 0.507 ), # In tilted barrel, grad*|z|/r + int approximates |cosTilt| + |sinTilt * cotTheta|
104  TiltUncertaintyR = cms.double( 0.12 ), # In tilted barrel, constant assumed stub radial uncertainty * sqrt(12) in cm
105  MindPhi = cms.double( 0.0001 ), # minimum representable stub phi uncertainty * sqrt(12) + additional terms in rad
106  MaxdPhi = cms.double( 0.02 ), # maximum representable stub phi uncertainty * sqrt(12) + additional terms in rad
107  MindZ = cms.double( 0.1 ), # minimum representable stub z uncertainty * sqrt(12) + additional terms in cm
108  MaxdZ = cms.double( 30. ), # maximum representable stub z uncertainty * sqrt(12) + additional terms in cm
109  Pitch2S = cms.double( 0.009 ), # strip pitch of outer tracker sensors in cm
110  PitchPS = cms.double( 0.01 ), # pixel pitch of outer tracker sensors in cm
111  Length2S = cms.double( 5.025 ), # strip length of outer tracker sensors in cm
112  LengthPS = cms.double( 0.1467 ), # pixel length of outer tracker sensors in cm
113  TiltedLayerLimitsZ = cms.vdouble( 15.5, 24.9, 34.3, -1., -1., -1. ), # barrel layer limit |z| value to partition into tilted and untilted region
114  PSDiskLimitsR = cms.vdouble( 66.4, 66.4, 64.55, 64.55, 64.55 ), # endcap disk limit r value to partition into PS and 2S region
115  ),
116 
117  # Parmeter specifying front-end
118  FrontEnd = cms.PSet (
119  WidthBend = cms.int32 ( 6 ), # number of bits used for internal stub bend
120  WidthCol = cms.int32 ( 5 ), # number of bits used for internal stub column
121  WidthRow = cms.int32 ( 11 ), # number of bits used for internal stub row
122  BaseBend = cms.double( .25 ), # precision of internal stub bend in pitch units
123  BaseCol = cms.double( 1. ), # precision of internal stub column in pitch units
124  BaseRow = cms.double( .5 ), # precision of internal stub row in pitch units
125  BaseWindowSize = cms.double( .5 ), # precision of window sizes in pitch units
126  BendCut = cms.double( 1.3125 ) # used stub bend uncertainty in pitch units
127  ),
128 
129  # Parmeter specifying DTC
130  DTC = cms.PSet (
131  NumRegions = cms.int32( 9 ), # number of phi slices the outer tracker readout is organized in
132  NumOverlappingRegions = cms.int32( 2 ), # number of regions a reconstructable particles may cross
133  NumATCASlots = cms.int32( 12 ), # number of Slots in used ATCA crates
134  NumDTCsPerRegion = cms.int32( 24 ), # number of DTC boards used to readout a detector region, likely constructed to be an integerer multiple of NumSlots_
135  NumModulesPerDTC = cms.int32( 72 ), # max number of sensor modules connected to one DTC board
136  NumRoutingBlocks = cms.int32( 2 ), # number of systiloic arrays in stub router firmware
137  DepthMemory = cms.int32( 64 ), # fifo depth in stub router firmware
138  WidthRowLUT = cms.int32( 4 ), # number of row bits used in look up table
139  WidthInv2R = cms.int32( 9 ), # number of bits used for stub inv2R. lut addr is col + bend = 11 => 1 BRAM -> 18 bits for min and max val -> 9
140  OffsetDetIdDSV = cms.int32( 1 ), # tk layout det id minus DetSetVec->detId
141  OffsetDetIdTP = cms.int32( -1 ), # tk layout det id minus TrackerTopology lower det id
142  OffsetLayerDisks = cms.int32( 10 ), # offset in layer ids between barrel layer and endcap disks
143  OffsetLayerId = cms.int32( 1 ), # offset between 0 and smallest layer id (barrel layer 1)
144  NumBarrelLayer = cms.int32( 6 ), #
145  SlotLimitPS = cms.int32( 6 ), # slot number changing from PS to 2S
146  SlotLimit10gbps = cms.int32( 3 ) # slot number changing from 10 gbps to 5gbps
147  ),
148 
149  # Parmeter specifying TFP
150  TFP = cms.PSet (
151  WidthPhi0 = cms.int32( 12 ), # number of bist used for phi0
152  WidthInv2R = cms.int32( 15 ), # number of bist used for inv2R
153  WidthCot = cms.int32( 16 ), # number of bist used for cot(theta)
154  WidthZ0 = cms.int32( 12 ), # number of bist used for z0
155  NumChannel = cms.int32( 2 ) # number of output links
156  ),
157 
158  # Parmeter specifying GeometricProcessor
159  GeometricProcessor = cms.PSet (
160  NumSectorsPhi = cms.int32 ( 2 ), # number of phi sectors used in hough transform
161  ChosenRofZ = cms.double( 50. ), # critical radius defining r-z sector shape in cm
162  RangeChiZ = cms.double( 160. ), # range of stub z residual w.r.t. sector center which needs to be covered
163  DepthMemory = cms.int32 ( 64 ), # fifo depth in stub router firmware
164  #BoundariesEta = cms.vdouble( -2.40, -2.08, -1.68, -1.26, -0.90, -0.62, -0.41, -0.20, 0.0, 0.20, 0.41, 0.62, 0.90, 1.26, 1.68, 2.08, 2.40 ) # defining r-z sector shape
165  BoundariesEta = cms.vdouble( -2.50, -2.23, -1.88, -1.36, -0.90, -0.62, -0.41, -0.20, 0.0, 0.20, 0.41, 0.62, 0.90, 1.36, 1.88, 2.23, 2.50 ) # defining r-z sector shape
166  ),
167 
168  # Parmeter specifying HoughTransform
169  HoughTransform = cms.PSet (
170  NumBinsInv2R = cms.int32( 16 ), # number of used inv2R bins
171  NumBinsPhiT = cms.int32( 32 ), # number of used phiT bins
172  MinLayers = cms.int32( 5 ), # required number of stub layers to form a candidate
173  DepthMemory = cms.int32( 32 ) # internal fifo depth
174  ),
175 
176  # Parmeter specifying MiniHoughTransform
177  MiniHoughTransform = cms.PSet (
178  NumBinsInv2R = cms.int32( 2 ), # number of finer inv2R bins inside HT bin
179  NumBinsPhiT = cms.int32( 2 ), # number of finer phiT bins inside HT bin
180  NumDLBs = cms.int32( 2 ), # number of dynamic load balancing steps
181  NumDLBNodes = cms.int32( 8 ), # number of units per dynamic load balancing step
182  NumDLBChannel = cms.int32( 2 ), # number of inputs per dynamic load balancing unit
183  MinLayers = cms.int32( 5 ) # required number of stub layers to form a candidate
184  ),
185 
186  # Parmeter specifying ZHoughTransform
187  ZHoughTransform = cms.PSet (
188  NumBinsZT = cms.int32( 2 ), #
189  NumBinsCot = cms.int32( 2 ), #
190  NumStages = cms.int32( 5 ), #
191  MinLayers = cms.int32( 4 ), # required number of stub layers to form a candidate
192  MaxTracks = cms.int32( 16 ), # max number of output tracks per node
193  MaxStubsPerLayer = cms.int32( 4 ) # cut on number of stub per layer for input candidates
194  ),
195 
196  # Parmeter specifying KalmanFilter Input Formatter
197 
198  KalmanFilterIn = cms.PSet (
199  ShiftRangePhi = cms.int32( 2 ), # power of 2 multiplier of stub phi residual range
200  ShiftRangeZ = cms.int32( 1 ) # power of 2 multiplier of stub z residual range
201  ),
202 
203  # Parmeter specifying KalmanFilter
204  KalmanFilter = cms.PSet (
205  NumWorker = cms.int32 ( 2 ), # number of kf worker
206  RangeFactor = cms.double( 2.0 ), # search window of each track parameter in initial uncertainties
207  MinLayers = cms.int32 ( 4 ), # required number of stub layers to form a track
208  MaxLayers = cms.int32 ( 7 ) # maximum number of layers added to a track
209  ),
210 
211  # Parmeter specifying KalmanFilter Output Formatter
212  KalmanFilterOut = cms.PSet (
213  chi2rphiBins = cms.vdouble( 0, 0.25, 0.5, 1, 2, 3, 5, 7, 10, 20, 40, 100, 200, 500, 1000, 3000,6000 ), # Final Chi2rphi digitization TODO extract from TTTrack Word
214  chi2rzBins = cms.vdouble( 0, 0.25, 0.5, 1, 2, 3, 5, 7, 10, 20, 40, 100, 200, 500, 1000, 3000,6000 ), # Final Chi2rz digitization TODO extract from TTTrack Word
215 
216  chi2rphiConv = cms.int32 ( 3 ), # Conversion factor between dphi^2/weight and chi2rphi
217  chi2rzConv = cms.int32 ( 13 ), # Conversion factor between dz^2/weight and chi2rz
218 
219  WeightBinFraction = cms.int32( 0 ), # Number of bits dropped from dphi and dz for v0 and v1 LUTs
220 
221  TTTrackBits = cms.int32( 96 ) # Number of bits for the tttrack word TODO extract from TTTrack_word dataformat
222  ),
223 
224  # Parmeter specifying DuplicateRemoval
225  DuplicateRemoval = cms.PSet (
226  DepthMemory = cms.int32( 16 ) # internal memory depth
227  )
228 
229 )