Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-06-03 00:12:28

0001 # configuration for TrackTriggerSetup
0002 
0003 import FWCore.ParameterSet.Config as cms
0004 
0005 TrackTrigger_params = cms.PSet (
0006 
0007   # Parameter to check if Process History is consistent with process configuration
0008   ProcessHistory = cms.PSet (
0009     GeometryConfiguration = cms.string( "XMLIdealGeometryESSource@"                    ), # label of compared GeometryConfiguration
0010     TTStubAlgorithm       = cms.string( "TTStubAlgorithm_official_Phase2TrackerDigi_@" )  # label of compared TTStubAlgorithm
0011   ),
0012 
0013   # Common track finding parameter
0014   TrackFinding = cms.PSet (
0015     BeamWindowZ  = cms.double( 15.      ), # half lumi region size in cm
0016     NumLayers    = cms.int32 (  8       ), # TMTT: number of detector layers a reconstructbale particle may cross, reduced to 7, 8th layer almost never corssed
0017     MinLayers    = cms.int32 (  4       ), # required number of stub layers to form a track
0018     MinPt        = cms.double(  2.0     ), # min track pt in GeV, also defines region overlap shape
0019     MinPtCand    = cms.double(  1.34    ), # min candiate pt in GeV
0020     MaxEta       = cms.double(  2.5     ), # cut on stub eta
0021     MaxD0        = cms.double(  5.0     ), # in cm, constraints track reconstruction phase space
0022     ChosenRofPhi = cms.double( 55.      ), # critical radius defining region overlap shape in cm
0023   ),
0024 
0025   # TMTT specific parameter
0026   TMTT = cms.PSet (
0027     WidthR   = cms.int32 ( 12 ), # number of bits used for stub r - ChosenRofPhi
0028     WidthPhi = cms.int32 ( 15 ), # number of bits used for stub phi w.r.t. phi region centre
0029     WidthZ   = cms.int32 ( 14 )  # number of bits used for stub z
0030   ),
0031 
0032   # Hybrid specific parameter
0033   Hybrid = cms.PSet (
0034     NumLayers    = cms.int32  (  4   ),                        # max number of layer connected to one DTC
0035     NumRingsPS   = cms.vint32 ( 11, 11, 8, 8, 8 ),             # number of outer PS rings for disk 1, 2, 3, 4, 5
0036     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)
0037     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)
0038     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)
0039     WidthsAlpha  = cms.vint32 (   0,     0,     0,      4   ), # number of bits used for stub row number for module types (barrelPS, barrel2S, diskPS, disk2S)
0040     WidthsBend   = cms.vint32 (   3,     4,     3,      4   ), # number of bits used for stub bend number for module types (barrelPS, barrel2S, diskPS, disk2S)
0041     WidthsRTB    = cms.vint32 (   7,     7,    12,     12   ), # number of bits used for stub r w.r.t layer/disk centre for module types (barrelPS, barrel2S, diskPS, disk2S) at TB output
0042     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)
0043     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)
0044     RangesAlpha  = cms.vdouble(   0.,    0.,    0.,  2048.  ), # range in stub row which needs to be covered for module types (barrelPS, barrel2S, diskPS, disk2S)
0045     LayerRs      = cms.vdouble(  24.9316,  37.1777,  52.2656,  68.7598,  86.0156, 108.3105 ), # mean radius of outer tracker barrel layer
0046     DiskZs       = cms.vdouble( 131.1914, 154.9805, 185.3320, 221.6016, 265.0195           ), # mean z of outer tracker endcap disks
0047     Disk2SRsSet  = cms.VPSet(                                                                 # center radius of outer tracker endcap 2S diks strips
0048       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
0049       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
0050       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
0051       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
0052       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
0053     ),
0054     BarrelHalfLength   = cms.double( 120.0 ), # biggest barrel stub z position after TrackBuilder in cm
0055     InnerRadius        = cms.double(  19.6 ), # smallest stub radius after TrackBuilder in cm
0056   ),
0057 
0058   # Fimrware specific Parameter
0059   Firmware = cms.PSet (
0060     EnableTruncation = cms.bool  ( True         ), # enable emulation of truncation for TM, DR, KF, TQ and TFP
0061     UseHybrid        = cms.bool  ( True         ), # use Hybrid or TMTT as TT algorithm
0062     WidthDSPa        = cms.int32 (  27          ), # width of the 'A' port of an DSP slice
0063     WidthDSPb        = cms.int32 (  18          ), # width of the 'B' port of an DSP slice
0064     WidthDSPc        = cms.int32 (  48          ), # width of the 'C' port of an DSP slice
0065     WidthAddrBRAM36  = cms.int32 (   9          ), # smallest address width of an BRAM36 configured as broadest simple dual port memory
0066     WidthAddrBRAM18  = cms.int32 (  10          ), # smallest address width of an BRAM18 configured as broadest simple dual port memory
0067     NumFramesInfra   = cms.int32 (   6          ), # needed gap between events of emp-infrastructure firmware
0068     FreqLHC          = cms.double(  40.         ), # LHC bunch crossing rate in MHz
0069     FreqBEHigh       = cms.double( 360.         ), # processing Frequency of DTC, KF & TFP in MHz, has to be integer multiple of FreqLHC
0070     FreqBELow        = cms.double( 240.         ), # processing Frequency of DTC, KF & TFP in MHz, has to be integer multiple of FreqLHC
0071     TMP_FE           = cms.int32 (   8          ), # number of events collected in front-end
0072     TMP_TFP          = cms.int32 (  18          ), # time multiplexed period of track finding processor
0073     SpeedOfLight     = cms.double(   2.99792458 ), # in e8 m/s
0074   ),
0075 
0076   # Parameter specifying outer tracker
0077   Tracker = cms.PSet (
0078     BField              = cms.double (   3.81120228767395 ), # in T
0079     BFieldError         = cms.double (   1.e-6            ), # accepted difference to EventSetup in T
0080     OuterRadius         = cms.double ( 112.7              ), # outer radius of outer tracker in cm
0081     InnerRadius         = cms.double (  21.8              ), # inner radius of outer tracker in cm
0082     HalfLength          = cms.double ( 270.               ), # half length of outer tracker in cm
0083     TiltApproxSlope     = cms.double (   0.884            ), # In tilted barrel, grad*|z|/r + int approximates |cosTilt| + |sinTilt * cotTheta|
0084     TiltApproxIntercept = cms.double (   0.507            ), # In tilted barrel, grad*|z|/r + int approximates |cosTilt| + |sinTilt * cotTheta|
0085     TiltUncertaintyR    = cms.double (   0.12             ), # In tilted barrel, constant assumed stub radial uncertainty * sqrt(12) in cm
0086     Scattering          = cms.double (   0.131283         ), # additional radial uncertainty in cm used to calculate stub phi residual uncertainty to take multiple scattering into account
0087     PitchRow2S          = cms.double (   0.009            ), # strip pitch of outer tracker sensors in cm
0088     PitchRowPS          = cms.double (   0.01             ), # pixel pitch of outer tracker sensors in cm
0089     PitchCol2S          = cms.double (   5.025            ), # strip length of outer tracker sensors in cm
0090     PitchColPS          = cms.double (   0.1467           ), # pixel length of outer tracker sensors in cm
0091     LimitPSBarrel       = cms.double ( 125.0              ), # barrel layer limit r value to partition into PS and 2S region
0092     LimitsTiltedR       = cms.vdouble( 30.0, 45.0, 60.0   ), # barrel layer limit r value to partition into tilted and untilted region
0093     LimitsTiltedZ       = cms.vdouble( 15.5, 25.0, 34.3   ), # barrel layer limit |z| value to partition into tilted and untilted region
0094     LimitsPSDiksZ       = cms.vdouble( 125.0, 150.0, 175.0, 200.0, 250.0 ), # endcap disk limit |z| value to partition into PS and 2S region
0095     LimitsPSDiksR       = cms.vdouble(  66.0,  66.0,  63.0,  63.0,  63.0 ), # endcap disk limit r value to partition into PS and 2S region
0096     TiltedLayerLimitsZ  = cms.vdouble( 15.5, 24.9, 34.3, -1., -1., -1. ), # barrel layer limit |z| value to partition into tilted and untilted region
0097     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
0098   ),
0099 
0100   # Parmeter specifying front-end
0101   FrontEnd = cms.PSet (
0102     WidthBend      = cms.int32 (  6      ), # number of bits used for internal stub bend
0103     WidthCol       = cms.int32 (  5      ), # number of bits used for internal stub column
0104     WidthRow       = cms.int32 ( 11      ), # number of bits used for internal stub row
0105     BaseBend       = cms.double(   .25   ), # precision of internal stub bend in pitch units
0106     BaseCol        = cms.double(  1.     ), # precision of internal stub column in pitch units
0107     BaseRow        = cms.double(   .5    ), # precision of internal stub row in pitch units
0108     BaseWindowSize = cms.double(   .5    ), # precision of window sizes in pitch units
0109     BendCut        = cms.double(  1.3125 )  # used stub bend uncertainty in pitch units
0110   ),
0111 
0112   # Parmeter specifying DTC 
0113   DTC = cms.PSet (
0114     NumRegions            = cms.int32(  9 ), # number of phi slices the outer tracker readout is organized in
0115     NumOverlappingRegions = cms.int32(  2 ), # number of regions a reconstructable particles may cross
0116     NumATCASlots          = cms.int32( 12 ), # number of Slots in used ATCA crates
0117     NumDTCsPerRegion      = cms.int32( 24 ), # number of DTC boards used to readout a detector region, likely constructed to be an integerer multiple of NumSlots_
0118     NumModulesPerDTC      = cms.int32( 72 ), # max number of sensor modules connected to one DTC board
0119     NumRoutingBlocks      = cms.int32(  2 ), # number of systiloic arrays in stub router firmware
0120     DepthMemory           = cms.int32( 64 ), # fifo depth in stub router firmware
0121     WidthRowLUT           = cms.int32(  4 ), # number of row bits used in look up table
0122     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
0123     OffsetDetIdDSV        = cms.int32(  1 ), # tk layout det id minus DetSetVec->detId
0124     OffsetDetIdTP         = cms.int32( -1 ), # tk layout det id minus TrackerTopology lower det id
0125     OffsetLayerDisks      = cms.int32( 10 ), # offset in layer ids between barrel layer and endcap disks
0126     OffsetLayerId         = cms.int32(  1 ), # offset between 0 and smallest layer id (barrel layer 1)
0127     NumBarrelLayer        = cms.int32(  6 ), # number of barrel layer
0128     NumBarrelLayerPS      = cms.int32(  3 ), # number of barrel ps layer
0129     SlotLimitPS           = cms.int32(  6 ), # slot number changing from PS to 2S
0130     SlotLimit10gbps       = cms.int32(  3 )  # slot number changing from 10 gbps to 5gbps
0131   ),
0132 
0133   # Parmeter specifying TFP 
0134   TFP = cms.PSet (
0135     WidthPhi0  = cms.int32( 12 ), # number of bist used for phi0
0136     WidthInvR  = cms.int32( 15 ), # number of bist used for invR
0137     WidthCot   = cms.int32( 16 ), # number of bist used for cot(theta)
0138     WidthZ0    = cms.int32( 12 ), # number of bist used for z0
0139     NumChannel = cms.int32(  2 )  # number of output links
0140   ),
0141 
0142   # Parmeter specifying GeometricProcessor
0143   GeometricProcessor = cms.PSet (
0144     NumBinsPhiT = cms.int32 (   2    ), # number of phi sectors used in hough transform
0145     NumBinsZT   = cms.int32 (  32    ), # number of eta sectors used in hough transform
0146     ChosenRofZ  = cms.double(  57.76 ), # critical radius defining r-z sector shape in cm
0147     DepthMemory = cms.int32 (  32    ), # fifo depth in stub router firmware
0148     WidthModule = cms.int32 (   3    ), #
0149     PosPS       = cms.int32 (   2    ), #
0150     PosBarrel   = cms.int32 (   1    ), #
0151     PosTilted   = cms.int32 (   0    )  #
0152   ),
0153 
0154   # Parmeter specifying HoughTransform
0155   HoughTransform = cms.PSet (
0156     NumBinsInv2R = cms.int32( 16 ), # number of used inv2R bins
0157     NumBinsPhiT  = cms.int32( 32 ), # number of used phiT bins
0158     MinLayers    = cms.int32(  5 ), # required number of stub layers to form a candidate
0159     DepthMemory  = cms.int32( 32 )  # internal fifo depth
0160   ),
0161 
0162   # Parmeter specifying Clean Track Builder
0163 
0164   CleanTrackBuilder = cms.PSet (
0165     NumBinsInv2R = cms.int32(  4 ), # number of inv2R bins
0166     NumBinsPhiT  = cms.int32(  4 ), # number of phiT bins
0167     NumBinsCot   = cms.int32(  4 ), # number of cot bins
0168     NumBinsZT    = cms.int32(  4 ), # number of zT bins
0169     MinLayers    = cms.int32(  4 ), # required number of stub layers to form a candidate
0170     MaxTracks    = cms.int32( 16 ), # max number of output tracks per node
0171     MaxStubs     = cms.int32(  4 ), # cut on number of stub per layer for input candidates
0172     DepthMemory  = cms.int32( 16 )  # internal fifo depth
0173   ),
0174 
0175   # Parmeter specifying KalmanFilter
0176   KalmanFilter = cms.PSet (
0177     Use5ParameterFit         = cms.bool  ( False ), # double precision simulation of 5 parameter fit instead of bit accurate emulation of 4 parameter fit
0178     UseSimmulation           = cms.bool  ( False ), # simulate KF instead of emulate
0179     UseTTStubResiduals       = cms.bool  ( True  ), # stub residuals and radius are recalculated from seed parameter and TTStub position
0180     UseTTStubParameters      = cms.bool  ( True  ), # track parameter are recalculated from seed TTStub positions
0181     ApplyNonLinearCorrection = cms.bool  ( True  ), # aplly correction to stub position making trajectory appear linear
0182     NumWorker                = cms.int32 (   1   ), # number of kf worker
0183     MaxTracks                = cms.int32 (  63   ), # max number of tracks a kf worker can process
0184     RangeFactor              = cms.double(   3.0 ), # search window of each track parameter in initial uncertainties
0185     MinLayers                = cms.int32 (   4   ), # required number of stub layers to form a track
0186     MinLayersPS              = cms.int32 (   0   ), # required number of ps stub layers to form a track
0187     MaxLayers                = cms.int32 (   8   ), # maximum number of  layers added to a track
0188     MaxGaps                  = cms.int32 (   4   ), # maximum number of layer gaps allowed during cominatorical track building
0189     MaxSeedingLayer          = cms.int32 (   4   ), # perform seeding in layers 0 to this
0190     NumSeedStubs             = cms.int32 (   2   ), # number of stubs forming a seed
0191     MinSeedDeltaR            = cms.double(   1.6 ), # don't build seeds with smaller radial difference as this in cm
0192     ShiftInitialC00          = cms.int32 (   0   ), # initial C00 is given by inv2R uncertainty squared times this power of 2
0193     ShiftInitialC11          = cms.int32 (   0   ), # initial C11 is given by phiT uncertainty squared times this power of 2
0194     ShiftInitialC22          = cms.int32 (   0   ), # initial C22 is given by cot uncertainty squared times this power of 2
0195     ShiftInitialC33          = cms.int32 (   0   ), # initial C33 is given by zT uncertainty squared times this power of 2
0196     ShiftChi20               = cms.int32 (  -1   ), # shiting chi2 in r-phi plane by power of two when caliclating chi2
0197     ShiftChi21               = cms.int32 (  -5   ), # shiting chi2 in r-z plane by power of two when caliclating chi2
0198     CutChi2                  = cms.double(   2.0 ), # cut on chi2 over degree of freedom
0199     WidthChi2                = cms.int32 (   8   )  # number of bits used to represent chi2 over degree of freedom
0200   ),
0201 
0202   # Parmeter specifying DuplicateRemoval
0203   DuplicateRemoval = cms.PSet (
0204     DepthMemory  = cms.int32( 16 ) # internal memory depth
0205   ),
0206 
0207   # Parmeter specifying Track Quality
0208   TrackQuality = cms.PSet (
0209     NumChannel = cms.int32( 2 ) # number of output channel
0210   )
0211 
0212 )