File indexing completed on 2025-06-03 00:12:28
0001 #ifndef L1Trigger_TrackTrigger_Setup_h
0002 #define L1Trigger_TrackTrigger_Setup_h
0003
0004 #include "FWCore/Framework/interface/data_default_record_trait.h"
0005 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0006 #include "FWCore/ParameterSet/interface/Registry.h"
0007 #include "DataFormats/DetId/interface/DetId.h"
0008 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
0009 #include "DataFormats/Math/interface/deltaPhi.h"
0010 #include "DataFormats/TrackerCommon/interface/TrackerTopology.h"
0011 #include "DataFormats/SiStripDetId/interface/StripSubdetector.h"
0012 #include "Geometry/CommonTopologies/interface/PixelGeomDetUnit.h"
0013 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
0014 #include "L1Trigger/TrackTrigger/interface/TTStubAlgorithm_official.h"
0015 #include "CondFormats/SiPhase2TrackerObjects/interface/TrackerDetToDTCELinkCablingMap.h"
0016 #include "SimTracker/Common/interface/TrackingParticleSelector.h"
0017
0018 #include "SimDataFormats/Associations/interface/TTTypes.h"
0019 #include "DataFormats/L1TrackTrigger/interface/TTDTC.h"
0020 #include "L1Trigger/TrackTrigger/interface/SensorModule.h"
0021 #include "L1Trigger/TrackTrigger/interface/SetupRcd.h"
0022
0023 #include <vector>
0024 #include <set>
0025 #include <unordered_map>
0026
0027 namespace tt {
0028
0029 typedef TTStubAlgorithm<Ref_Phase2TrackerDigi_> StubAlgorithm;
0030 typedef TTStubAlgorithm_official<Ref_Phase2TrackerDigi_> StubAlgorithmOfficial;
0031
0032 inline double deltaPhi(double lhs, double rhs = 0.) { return reco::deltaPhi(lhs, rhs); }
0033
0034
0035
0036
0037
0038
0039 class Setup {
0040 public:
0041
0042 struct Config {
0043 double beamWindowZ_;
0044 double minPt_;
0045 double minPtCand_;
0046 double maxEta_;
0047 double maxD0_;
0048 double chosenRofPhi_;
0049 int numLayers_;
0050 int minLayers_;
0051 int tmttWidthR_;
0052 int tmttWidthPhi_;
0053 int tmttWidthZ_;
0054 int hybridNumLayers_;
0055 std::vector<int> hybridNumRingsPS_;
0056 std::vector<int> hybridWidthsR_;
0057 std::vector<int> hybridWidthsZ_;
0058 std::vector<int> hybridWidthsPhi_;
0059 std::vector<int> hybridWidthsAlpha_;
0060 std::vector<int> hybridWidthsBend_;
0061 std::vector<double> hybridRangesR_;
0062 std::vector<double> hybridRangesZ_;
0063 std::vector<double> hybridRangesAlpha_;
0064 std::vector<double> hybridLayerRs_;
0065 std::vector<double> hybridDiskZs_;
0066 std::vector<edm::ParameterSet> hybridDisk2SRsSet_;
0067 double hybridRangePhi_;
0068 double tbBarrelHalfLength_;
0069 double tbInnerRadius_;
0070 std::vector<int> tbWidthsR_;
0071 int enableTruncation_;
0072 bool useHybrid_;
0073 int widthDSPa_;
0074 int widthDSPab_;
0075 int widthDSPau_;
0076 int widthDSPb_;
0077 int widthDSPbb_;
0078 int widthDSPbu_;
0079 int widthDSPc_;
0080 int widthDSPcb_;
0081 int widthDSPcu_;
0082 int widthAddrBRAM36_;
0083 int widthAddrBRAM18_;
0084 int numFramesInfra_;
0085 double freqLHC_;
0086 double freqBEHigh_;
0087 double freqBELow_;
0088 int tmpFE_;
0089 int tmpTFP_;
0090 double speedOfLight_;
0091 double bField_;
0092 double bFieldError_;
0093 double outerRadius_;
0094 double innerRadius_;
0095 double halfLength_;
0096 double maxPitchRow_;
0097 double maxPitchCol_;
0098 double tiltApproxSlope_;
0099 double tiltApproxIntercept_;
0100 double tiltUncertaintyR_;
0101 double scattering_;
0102 double pitchRow2S_;
0103 double pitchRowPS_;
0104 double pitchCol2S_;
0105 double pitchColPS_;
0106 double limitPSBarrel_;
0107 std::vector<double> limitsTiltedR_;
0108 std::vector<double> limitsTiltedZ_;
0109 std::vector<double> limitsPSDiksZ_;
0110 std::vector<double> limitsPSDiksR_;
0111 std::vector<double> tiltedLayerLimitsZ_;
0112 std::vector<double> psDiskLimitsR_;
0113 int widthBend_;
0114 int widthCol_;
0115 int widthRow_;
0116 double baseBend_;
0117 double baseCol_;
0118 double baseRow_;
0119 double baseWindowSize_;
0120 double bendCut_;
0121 int numRegions_;
0122 int numOverlappingRegions_;
0123 int numATCASlots_;
0124 int numDTCsPerRegion_;
0125 int numModulesPerDTC_;
0126 int dtcNumRoutingBlocks_;
0127 int dtcDepthMemory_;
0128 int dtcWidthRowLUT_;
0129 int dtcWidthInv2R_;
0130 int offsetDetIdDSV_;
0131 int offsetDetIdTP_;
0132 int offsetLayerDisks_;
0133 int offsetLayerId_;
0134 int numBarrelLayer_;
0135 int numBarrelLayerPS_;
0136 int dtcNumStreams_;
0137 int slotLimitPS_;
0138 int slotLimit10gbps_;
0139 int tfpWidthPhi0_;
0140 int tfpWidthInvR_;
0141 int tfpWidthCot_;
0142 int tfpWidthZ0_;
0143 int tfpNumChannel_;
0144 int gpNumBinsPhiT_;
0145 int gpNumBinsZT_;
0146 double chosenRofZ_;
0147 int gpDepthMemory_;
0148 int gpWidthModule_;
0149 int gpPosPS_;
0150 int gpPosBarrel_;
0151 int gpPosTilted_;
0152 int htNumBinsInv2R_;
0153 int htNumBinsPhiT_;
0154 int htMinLayers_;
0155 int htDepthMemory_;
0156 int ctbNumBinsInv2R_;
0157 int ctbNumBinsPhiT_;
0158 int ctbNumBinsCot_;
0159 int ctbNumBinsZT_;
0160 int ctbMinLayers_;
0161 int ctbMaxTracks_;
0162 int ctbMaxStubs_;
0163 int ctbDepthMemory_;
0164 bool kfUse5ParameterFit_;
0165 bool kfUseSimmulation_;
0166 bool kfUseTTStubResiduals_;
0167 bool kfUseTTStubParameters_;
0168 bool kfApplyNonLinearCorrection_;
0169 int kfNumWorker_;
0170 int kfMaxTracks_;
0171 int kfMinLayers_;
0172 int kfMinLayersPS_;
0173 int kfMaxLayers_;
0174 int kfMaxGaps_;
0175 int kfMaxSeedingLayer_;
0176 int kfNumSeedStubs_;
0177 double kfMinSeedDeltaR_;
0178 double kfRangeFactor_;
0179 int kfShiftInitialC00_;
0180 int kfShiftInitialC11_;
0181 int kfShiftInitialC22_;
0182 int kfShiftInitialC33_;
0183 int kfShiftChi20_;
0184 int kfShiftChi21_;
0185 double kfCutChi2_;
0186 int kfWidthChi2_;
0187 int drDepthMemory_;
0188 int tqNumChannel_;
0189 };
0190 Setup() {}
0191 Setup(const Config& iConfig,
0192 const TrackerGeometry& trackerGeometry,
0193 const TrackerTopology& trackerTopology,
0194 const TrackerDetToDTCELinkCablingMap& cablingMap,
0195 const StubAlgorithmOfficial& stubAlgorithm,
0196 const edm::ParameterSet& pSetStubAlgorithm);
0197 ~Setup() = default;
0198
0199
0200 int dtcId(int tklId) const;
0201
0202 int tkLayoutId(int dtcId) const;
0203
0204 int dtcId(int tfpRegion, int tfpChannel) const;
0205
0206 bool psModule(int dtcId) const;
0207
0208 bool gbps10(int dtcId) const;
0209
0210 bool side(int dtcId) const;
0211
0212 int slot(int dtcId) const;
0213
0214 SensorModule* sensorModule(const DetId& detId) const;
0215
0216 SensorModule* sensorModule(const TTStubRef& ttStubRef) const;
0217
0218 const TrackerGeometry* trackerGeometry() const { return trackerGeometry_; }
0219
0220 const TrackerTopology* trackerTopology() const { return trackerTopology_; }
0221
0222 GlobalPoint stubPos(const TTStubRef& ttStubRef) const;
0223
0224 double stubR(const TTBV& hw, const TTStubRef& ttStubRef) const;
0225
0226 GlobalPoint stubPos(const tt::FrameStub& frame, int region) const;
0227
0228 TTDTC ttDTC() const { return TTDTC(numRegions_, numOverlappingRegions_, numDTCsPerRegion_); }
0229
0230 int layerId(const TTStubRef& ttStubRef) const;
0231
0232 int trackletLayerId(const TTStubRef& ttStubRef) const;
0233
0234 int indexLayerId(const TTStubRef& ttStubRef) const;
0235
0236 bool barrel(const TTStubRef& ttStubRef) const;
0237
0238 bool psModule(const TTStubRef& ttStubRef) const;
0239
0240 SensorModule::Type type(const TTStubRef& ttStubRef) const;
0241
0242 bool reconstructable(const std::vector<TTStubRef>& ttStubRefs) const;
0243
0244 TTBV layerMap(const std::vector<int>& ints) const;
0245
0246 TTBV layerMap(const TTBV& hitPattern, const std::vector<int>& ints) const;
0247
0248 std::vector<int> layerMap(const TTBV& hitPattern, const TTBV& ttBV) const;
0249
0250 std::vector<int> layerMap(const TTBV& ttBV) const;
0251
0252 double dPhi(const TTStubRef& ttStubRef, double inv2R) const;
0253
0254 double dZ(const TTStubRef& ttStubRef) const;
0255
0256 double v0(const TTStubRef& ttStubRef, double inv2R) const;
0257
0258 double v1(const TTStubRef& ttStubRef, double cot) const;
0259
0260 const std::vector<SensorModule>& sensorModules() const { return sensorModules_; }
0261
0262 TTBV module(double r, double z) const;
0263
0264 bool ps(const TTBV& module) const { return module[gpPosPS_]; }
0265
0266 bool barrel(const TTBV& module) const { return module[gpPosBarrel_]; }
0267
0268 bool tilted(const TTBV& module) const { return module[gpPosTilted_]; }
0269
0270 double dPhi(const TTBV& module, double r, double inv2R) const;
0271
0272
0273
0274
0275 int enableTruncation() const { return enableTruncation_; }
0276
0277 bool useHybrid() const { return useHybrid_; }
0278
0279 int widthDSPa() const { return widthDSPa_; }
0280
0281 int widthDSPab() const { return widthDSPab_; }
0282
0283 int widthDSPau() const { return widthDSPau_; }
0284
0285 int widthDSPb() const { return widthDSPb_; }
0286
0287 int widthDSPbb() const { return widthDSPbb_; }
0288
0289 int widthDSPbu() const { return widthDSPbu_; }
0290
0291 int widthDSPc() const { return widthDSPc_; }
0292
0293 int widthDSPcb() const { return widthDSPcb_; }
0294
0295 int widthDSPcu() const { return widthDSPcu_; }
0296
0297 int widthAddrBRAM36() const { return widthAddrBRAM36_; }
0298
0299 int widthAddrBRAM18() const { return widthAddrBRAM18_; }
0300
0301 int numFramesHigh() const { return numFramesHigh_; }
0302
0303 int numFramesLow() const { return numFramesLow_; }
0304
0305 int numFramesInfra() const { return numFramesInfra_; }
0306
0307 int numFramesIOHigh() const { return numFramesIOHigh_; }
0308
0309 int numFramesIOLow() const { return numFramesIOLow_; }
0310
0311 int numFramesFE() const { return numFramesFE_; }
0312
0313
0314
0315
0316 double pitchRow2S() const { return pitchRow2S_; }
0317
0318 double pitchRowPS() const { return pitchRowPS_; }
0319
0320 double pitchCol2S() const { return pitchCol2S_; }
0321
0322 double pitchColPS() const { return pitchColPS_; }
0323
0324 double bField() const { return bField_; }
0325
0326 double outerRadius() const { return outerRadius_; }
0327
0328 double innerRadius() const { return innerRadius_; }
0329
0330 double halfLength() const { return halfLength_; }
0331
0332 double maxPitchCol() const { return maxPitchCol_; }
0333
0334 double tiltApproxSlope() const { return tiltApproxSlope_; }
0335
0336 double tiltApproxIntercept() const { return tiltApproxIntercept_; }
0337
0338 double tiltUncertaintyR() const { return tiltUncertaintyR_; }
0339
0340 double scattering() const { return scattering_; }
0341
0342 double tiltedLayerLimitZ(int layer) const { return tiltedLayerLimitsZ_.at(layer); }
0343
0344 double psDiskLimitR(int layer) const { return psDiskLimitsR_.at(layer); }
0345
0346
0347
0348
0349 double beamWindowZ() const { return beamWindowZ_; }
0350
0351 double invPtToDphi() const { return invPtToDphi_; }
0352
0353 double baseRegion() const { return baseRegion_; }
0354
0355 double maxCot() const { return maxCot_; }
0356
0357 double minPt() const { return minPt_; }
0358
0359 double minPtCand() const { return minPtCand_; }
0360
0361 double maxEta() const { return maxEta_; }
0362
0363 double maxD0() const { return maxD0_; }
0364
0365 double chosenRofPhi() const { return chosenRofPhi_; }
0366
0367 int numLayers() const { return numLayers_; }
0368
0369
0370
0371
0372 int tmttWidthR() const { return tmttWidthR_; }
0373
0374 int tmttWidthPhi() const { return tmttWidthPhi_; }
0375
0376 int tmttWidthZ() const { return tmttWidthZ_; }
0377
0378 int tmttWidthLayer() const { return tmttWidthLayer_; }
0379
0380 int tmttWidthSectorEta() const { return tmttWidthSectorEta_; }
0381
0382 int tmttWidthInv2R() const { return tmttWidthInv2R_; }
0383
0384 double tmttBaseR() const { return tmttBaseR_; }
0385
0386 double tmttBaseZ() const { return tmttBaseZ_; }
0387
0388 double tmttBasePhi() const { return tmttBasePhi_; }
0389
0390 double tmttBaseInv2R() const { return tmttBaseInv2R_; }
0391
0392 double tmttBasePhiT() const { return tmttBasePhiT_; }
0393
0394 int tmttNumUnusedBits() const { return tmttNumUnusedBits_; }
0395
0396
0397
0398
0399 double hybridNumLayers() const { return hybridNumLayers_; }
0400
0401 int hybridWidthR(SensorModule::Type type) const { return hybridWidthsR_.at(type); }
0402
0403 int hybridWidthZ(SensorModule::Type type) const { return hybridWidthsZ_.at(type); }
0404
0405 int hybridWidthPhi(SensorModule::Type type) const { return hybridWidthsPhi_.at(type); }
0406
0407 int hybridWidthAlpha(SensorModule::Type type) const { return hybridWidthsAlpha_.at(type); }
0408
0409 int hybridWidthBend(SensorModule::Type type) const { return hybridWidthsBend_.at(type); }
0410
0411 int hybridWidthLayerId() const { return hybridWidthLayerId_; }
0412
0413 double hybridBaseR(SensorModule::Type type) const { return hybridBasesR_.at(type); }
0414 double hybridBaseR() const { return hybridBaseR_; }
0415
0416 double hybridBasePhi(SensorModule::Type type) const { return hybridBasesPhi_.at(type); }
0417 double hybridBasePhi() const { return hybridBasePhi_; }
0418
0419 double hybridBaseZ(SensorModule::Type type) const { return hybridBasesZ_.at(type); }
0420 double hybridBaseZ() const { return hybridBaseZ_; }
0421
0422 double hybridBaseAlpha(SensorModule::Type type) const { return hybridBasesAlpha_.at(type); }
0423
0424 int hybridNumUnusedBits(SensorModule::Type type) const { return hybridNumsUnusedBits_.at(type); }
0425
0426 double hybridMaxCot() const { return hybridMaxCot_; }
0427
0428 int hybridNumRingsPS(int layerId) const { return hybridNumRingsPS_.at(layerId); }
0429
0430 double hybridLayerR(int layerId) const { return hybridLayerRs_.at(layerId); }
0431
0432 double hybridDiskZ(int layerId) const { return hybridDiskZs_.at(layerId); }
0433
0434 double hybridRangePhi() const { return hybridRangePhi_; }
0435
0436 double hybridRangeR() const { return hybridRangesR_[SensorModule::DiskPS]; }
0437
0438 double tbBarrelHalfLength() const { return tbBarrelHalfLength_; }
0439
0440 double tbInnerRadius() const { return tbInnerRadius_; }
0441
0442 double disk2SR(int layerId, int r) const { return disk2SRs_.at(layerId).at(r); }
0443
0444 int tbWidthR(SensorModule::Type type) const { return tbWidthsR_.at(type); }
0445
0446
0447
0448
0449 double numTiltedLayerRing(int layerId) const { return numTiltedLayerRings_.at(layerId); };
0450
0451 double windowSizeBarrelLayer(int layerId) const { return windowSizeBarrelLayers_.at(layerId); };
0452
0453 double windowSizeTiltedLayerRing(int layerId, int ring) const {
0454 return windowSizeTiltedLayerRings_.at(layerId).at(ring);
0455 };
0456
0457 double windowSizeEndcapDisksRing(int layerId, int ring) const {
0458 return windowSizeEndcapDisksRings_.at(layerId).at(ring);
0459 };
0460
0461 double baseWindowSize() const { return baseWindowSize_; }
0462
0463 const std::vector<double>& encodingBend(int windowSize, bool psModule) const;
0464
0465 const StubAlgorithmOfficial* stubAlgorithm() const { return stubAlgorithm_; }
0466
0467
0468
0469
0470 int widthBend() const { return widthBend_; }
0471
0472 int widthCol() const { return widthCol_; }
0473
0474 int widthRow() const { return widthRow_; }
0475
0476 double baseBend() const { return baseBend_; }
0477
0478 double baseCol() const { return baseCol_; }
0479
0480 double baseRow() const { return baseRow_; }
0481
0482 double bendCut() const { return bendCut_; }
0483
0484
0485
0486
0487 int numRegions() const { return numRegions_; }
0488
0489 int numOverlappingRegions() const { return numOverlappingRegions_; }
0490
0491 int numATCASlots() const { return numATCASlots_; }
0492
0493 int numDTCsPerRegion() const { return numDTCsPerRegion_; }
0494
0495 int numModulesPerDTC() const { return numModulesPerDTC_; }
0496
0497 int dtcNumRoutingBlocks() const { return dtcNumRoutingBlocks_; }
0498
0499 int dtcDepthMemory() const { return dtcDepthMemory_; }
0500
0501 int dtcWidthRowLUT() const { return dtcWidthRowLUT_; }
0502
0503 int dtcWidthInv2R() const { return dtcWidthInv2R_; }
0504
0505 int offsetDetIdDSV() const { return offsetDetIdDSV_; }
0506
0507 int offsetDetIdTP() const { return offsetDetIdTP_; }
0508
0509 int offsetLayerDisks() const { return offsetLayerDisks_; }
0510
0511 int offsetLayerId() const { return offsetLayerId_; }
0512
0513 int numBarrelLayer() const { return numBarrelLayer_; }
0514
0515 int numBarrelLayerPS() const { return numBarrelLayerPS_; }
0516
0517 int numDTCs() const { return numDTCs_; }
0518
0519 int numDTCsPerTFP() const { return numDTCsPerTFP_; }
0520
0521 int numModules() const { return numModules_; }
0522
0523 int dtcNumModulesPerRoutingBlock() const { return dtcNumModulesPerRoutingBlock_; }
0524
0525 int dtcNumMergedRows() const { return dtcNumMergedRows_; }
0526
0527 int dtcWidthM() const { return dtcWidthM_; }
0528
0529 double dtcBaseInv2R() const { return dtcBaseInv2R_; }
0530
0531 double dtcBaseM() const { return dtcBaseM_; }
0532
0533 const std::vector<SensorModule*>& dtcModules(int dtcId) const { return dtcModules_.at(dtcId); }
0534
0535 int dtcNumStreams() const { return dtcNumStreams_; }
0536
0537
0538
0539
0540 int tfpWidthPhi0() const { return tfpWidthPhi0_; }
0541
0542 int tfpWidthInvR() const { return tfpWidthInvR_; }
0543
0544 int tfpWidthCot() const { return tfpWidthCot_; }
0545
0546 int tfpWidthZ0() const { return tfpWidthZ0_; }
0547
0548 int tfpNumChannel() const { return tfpNumChannel_; }
0549
0550
0551
0552
0553 int gpNumBinsPhiT() const { return gpNumBinsPhiT_; }
0554
0555 int gpNumBinsZT() const { return gpNumBinsZT_; }
0556
0557 double chosenRofZ() const { return chosenRofZ_; }
0558
0559 int gpDepthMemory() const { return gpDepthMemory_; }
0560
0561 int gpWidthModule() const { return gpWidthModule_; }
0562
0563 double baseSector() const { return baseSector_; }
0564
0565 int numSectors() const { return numSectors_; }
0566
0567 double maxRphi() const { return maxRphi_; }
0568
0569 double maxRz() const { return maxRz_; }
0570
0571
0572
0573
0574 int htNumBinsInv2R() const { return htNumBinsInv2R_; }
0575
0576 int htNumBinsPhiT() const { return htNumBinsPhiT_; }
0577
0578 int htMinLayers() const { return htMinLayers_; }
0579
0580 int htDepthMemory() const { return htDepthMemory_; }
0581
0582
0583
0584
0585 int ctbNumBinsInv2R() const { return ctbNumBinsInv2R_; }
0586
0587 int ctbNumBinsPhiT() const { return ctbNumBinsPhiT_; }
0588
0589 int ctbNumBinsCot() const { return ctbNumBinsCot_; }
0590
0591 int ctbNumBinsZT() const { return ctbNumBinsZT_; }
0592
0593 int ctbMinLayers() const { return ctbMinLayers_; }
0594
0595 int ctbMaxTracks() const { return ctbMaxTracks_; }
0596
0597 int ctbMaxStubs() const { return ctbMaxStubs_; }
0598
0599 int ctbDepthMemory() const { return ctbDepthMemory_; }
0600
0601
0602
0603
0604 bool kfUse5ParameterFit() const { return kfUse5ParameterFit_; }
0605
0606 bool kfUseSimmulation() const { return kfUseSimmulation_; }
0607
0608 bool kfUseTTStubResiduals() const { return kfUseTTStubResiduals_; }
0609
0610 bool kfUseTTStubParameters() const { return kfUseTTStubParameters_; }
0611
0612 bool kfApplyNonLinearCorrection() const { return kfApplyNonLinearCorrection_; }
0613
0614 int kfNumWorker() const { return kfNumWorker_; }
0615
0616 int kfMaxTracks() const { return kfMaxTracks_; }
0617
0618 int kfMinLayers() const { return kfMinLayers_; }
0619
0620 int kfMinLayersPS() const { return kfMinLayersPS_; }
0621
0622 int kfMaxLayers() const { return kfMaxLayers_; }
0623
0624 int kfMaxGaps() const { return kfMaxGaps_; }
0625
0626 int kfMaxSeedingLayer() const { return kfMaxSeedingLayer_; }
0627
0628 int kfNumSeedStubs() const { return kfNumSeedStubs_; }
0629
0630 double kfMinSeedDeltaR() const { return kfMinSeedDeltaR_; }
0631
0632 double kfRangeFactor() const { return kfRangeFactor_; }
0633
0634 int kfShiftInitialC00() const { return kfShiftInitialC00_; }
0635
0636 int kfShiftInitialC11() const { return kfShiftInitialC11_; }
0637
0638 int kfShiftInitialC22() const { return kfShiftInitialC22_; }
0639
0640 int kfShiftInitialC33() const { return kfShiftInitialC33_; }
0641
0642 int kfShiftChi20() const { return kfShiftChi20_; }
0643
0644 int kfShiftChi21() const { return kfShiftChi21_; }
0645
0646 double kfCutChi2() const { return kfCutChi2_; }
0647
0648 int kfWidthChi2() const { return kfWidthChi2_; }
0649
0650
0651
0652
0653 int drDepthMemory() const { return drDepthMemory_; }
0654
0655
0656
0657
0658 int tqNumChannel() const { return tqNumChannel_; }
0659
0660 private:
0661
0662 void checkHistory(const edm::ProcessHistory&,
0663 const edm::pset::Registry*,
0664 const std::string&,
0665 const edm::ParameterSetID&) const;
0666
0667 std::string dumpDiff(const edm::ParameterSet& pSetHistory, const edm::ParameterSet& pSetProcess) const;
0668
0669 void calculateConstants();
0670
0671 void consumeStubAlgorithm();
0672
0673 void encodeBend(std::vector<std::vector<double>>&, bool) const;
0674
0675 void produceSensorModules();
0676
0677 void checkDTCId(int dtcId) const;
0678
0679 void checkTKLayoutId(int tkLayoutId) const;
0680
0681 void checkTFPIdentifier(int tfpRegion, int tfpChannel) const;
0682
0683 void configureTPSelector();
0684
0685
0686 const TrackerGeometry* trackerGeometry_;
0687
0688 const TrackerTopology* trackerTopology_;
0689
0690 const TrackerDetToDTCELinkCablingMap* cablingMap_;
0691
0692 const StubAlgorithmOfficial* stubAlgorithm_;
0693
0694 const edm::ParameterSet* pSetSA_;
0695
0696
0697 double beamWindowZ_;
0698
0699 double minPt_;
0700
0701 double minPtCand_;
0702
0703 double maxEta_;
0704
0705 double maxD0_;
0706
0707 double chosenRofPhi_;
0708
0709 int numLayers_;
0710
0711 int minLayers_;
0712
0713
0714 int tmttWidthR_;
0715
0716 int tmttWidthPhi_;
0717
0718 int tmttWidthZ_;
0719
0720
0721 int hybridNumLayers_;
0722
0723 std::vector<int> hybridNumRingsPS_;
0724
0725 std::vector<int> hybridWidthsR_;
0726
0727 std::vector<int> hybridWidthsZ_;
0728
0729 std::vector<int> hybridWidthsPhi_;
0730
0731 std::vector<int> hybridWidthsAlpha_;
0732
0733 std::vector<int> hybridWidthsBend_;
0734
0735 std::vector<double> hybridRangesR_;
0736
0737 std::vector<double> hybridRangesZ_;
0738
0739 std::vector<double> hybridRangesAlpha_;
0740
0741 std::vector<double> hybridLayerRs_;
0742
0743 std::vector<double> hybridDiskZs_;
0744
0745 std::vector<edm::ParameterSet> hybridDisk2SRsSet_;
0746
0747 double hybridRangePhi_;
0748
0749 double tbBarrelHalfLength_;
0750
0751 double tbInnerRadius_;
0752
0753 std::vector<int> tbWidthsR_;
0754
0755
0756 int enableTruncation_;
0757
0758 bool useHybrid_;
0759
0760 int widthDSPa_;
0761
0762 int widthDSPab_;
0763
0764 int widthDSPau_;
0765
0766 int widthDSPb_;
0767
0768 int widthDSPbb_;
0769
0770 int widthDSPbu_;
0771
0772 int widthDSPc_;
0773
0774 int widthDSPcb_;
0775
0776 int widthDSPcu_;
0777
0778 int widthAddrBRAM36_;
0779
0780 int widthAddrBRAM18_;
0781
0782 int numFramesInfra_;
0783
0784 double freqLHC_;
0785
0786 double freqBEHigh_;
0787
0788 double freqBELow_;
0789
0790 int tmpFE_;
0791
0792 int tmpTFP_;
0793
0794 double speedOfLight_;
0795
0796
0797 double bField_;
0798
0799 double bFieldError_;
0800
0801 double outerRadius_;
0802
0803 double innerRadius_;
0804
0805 double halfLength_;
0806
0807 double maxPitchRow_;
0808
0809 double maxPitchCol_;
0810
0811 double tiltApproxSlope_;
0812
0813 double tiltApproxIntercept_;
0814
0815 double tiltUncertaintyR_;
0816
0817 double scattering_;
0818
0819 double pitchRow2S_;
0820
0821 double pitchRowPS_;
0822
0823 double pitchCol2S_;
0824
0825 double pitchColPS_;
0826
0827 double limitPSBarrel_;
0828
0829 std::vector<double> limitsTiltedR_;
0830
0831 std::vector<double> limitsTiltedZ_;
0832
0833 std::vector<double> limitsPSDiksZ_;
0834
0835 std::vector<double> limitsPSDiksR_;
0836
0837 std::vector<double> tiltedLayerLimitsZ_;
0838
0839 std::vector<double> psDiskLimitsR_;
0840
0841
0842 int widthBend_;
0843
0844 int widthCol_;
0845
0846 int widthRow_;
0847
0848 double baseBend_;
0849
0850 double baseCol_;
0851
0852 double baseRow_;
0853
0854 double baseWindowSize_;
0855
0856 double bendCut_;
0857
0858
0859 int numRegions_;
0860
0861 int numOverlappingRegions_;
0862
0863 int numATCASlots_;
0864
0865 int numDTCsPerRegion_;
0866
0867 int numModulesPerDTC_;
0868
0869 int dtcNumRoutingBlocks_;
0870
0871 int dtcDepthMemory_;
0872
0873 int dtcWidthRowLUT_;
0874
0875 int dtcWidthInv2R_;
0876
0877 int offsetDetIdDSV_;
0878
0879 int offsetDetIdTP_;
0880
0881 int offsetLayerDisks_;
0882
0883 int offsetLayerId_;
0884
0885 int numBarrelLayer_;
0886
0887 int numBarrelLayerPS_;
0888
0889 int dtcNumStreams_;
0890
0891 int slotLimitPS_;
0892
0893 int slotLimit10gbps_;
0894
0895
0896 int tfpWidthPhi0_;
0897
0898 int tfpWidthInvR_;
0899
0900 int tfpWidthCot_;
0901
0902 int tfpWidthZ0_;
0903
0904 int tfpNumChannel_;
0905
0906
0907 int gpNumBinsPhiT_;
0908
0909 int gpNumBinsZT_;
0910
0911 double chosenRofZ_;
0912
0913 int gpDepthMemory_;
0914
0915 int gpWidthModule_;
0916
0917 int gpPosPS_;
0918
0919 int gpPosBarrel_;
0920
0921 int gpPosTilted_;
0922
0923
0924 int htNumBinsInv2R_;
0925
0926 int htNumBinsPhiT_;
0927
0928 int htMinLayers_;
0929
0930 int htDepthMemory_;
0931
0932
0933 int ctbNumBinsInv2R_;
0934
0935 int ctbNumBinsPhiT_;
0936
0937 int ctbNumBinsCot_;
0938
0939 int ctbNumBinsZT_;
0940
0941 int ctbMinLayers_;
0942
0943 int ctbMaxTracks_;
0944
0945 int ctbMaxStubs_;
0946
0947 int ctbDepthMemory_;
0948
0949
0950 bool kfUse5ParameterFit_;
0951
0952 bool kfUseSimmulation_;
0953
0954 bool kfUseTTStubResiduals_;
0955
0956 bool kfUseTTStubParameters_;
0957
0958 bool kfApplyNonLinearCorrection_;
0959
0960 int kfNumWorker_;
0961
0962 int kfMaxTracks_;
0963
0964 int kfMinLayers_;
0965
0966 int kfMinLayersPS_;
0967
0968 int kfMaxLayers_;
0969
0970 int kfMaxGaps_;
0971
0972 int kfMaxSeedingLayer_;
0973
0974 int kfNumSeedStubs_;
0975
0976 double kfMinSeedDeltaR_;
0977
0978 double kfRangeFactor_;
0979
0980 int kfShiftInitialC00_;
0981
0982 int kfShiftInitialC11_;
0983
0984 int kfShiftInitialC22_;
0985
0986 int kfShiftInitialC33_;
0987
0988 int kfShiftChi20_;
0989
0990 int kfShiftChi21_;
0991
0992 double kfCutChi2_;
0993
0994 int kfWidthChi2_;
0995
0996
0997 int drDepthMemory_;
0998
0999
1000 int tqNumChannel_;
1001
1002
1003
1004
1005
1006
1007
1008
1009 std::vector<double> numTiltedLayerRings_;
1010
1011 std::vector<double> windowSizeBarrelLayers_;
1012
1013 std::vector<std::vector<double>> windowSizeTiltedLayerRings_;
1014
1015 std::vector<std::vector<double>> windowSizeEndcapDisksRings_;
1016
1017 int maxWindowSize_;
1018
1019
1020
1021
1022 int numFramesHigh_;
1023
1024 int numFramesLow_;
1025
1026 int numFramesIOHigh_;
1027
1028 int numFramesIOLow_;
1029
1030 int numFramesFE_;
1031
1032 double invPtToDphi_;
1033
1034 double baseRegion_;
1035
1036 double maxCot_;
1037
1038
1039
1040
1041 int widthLayerId_;
1042
1043 double tmttBaseR_;
1044
1045 double tmttBaseZ_;
1046
1047 double tmttBasePhi_;
1048
1049 double tmttBaseInv2R_;
1050
1051 double tmttBasePhiT_;
1052
1053 int dtcNumUnusedBits_;
1054
1055 int tmttWidthLayer_;
1056
1057 int tmttWidthSectorEta_;
1058
1059 int tmttWidthInv2R_;
1060
1061 int tmttNumUnusedBits_;
1062
1063
1064
1065
1066 int hybridWidthLayerId_;
1067
1068 std::vector<double> hybridBasesR_;
1069
1070 std::vector<double> hybridBasesPhi_;
1071
1072 std::vector<double> hybridBasesZ_;
1073
1074 std::vector<double> hybridBasesAlpha_;
1075
1076 double hybridBaseZ_;
1077
1078 double hybridBaseR_;
1079
1080 double hybridBasePhi_;
1081
1082 double hybridMaxCot_;
1083
1084 std::vector<int> hybridNumsUnusedBits_;
1085
1086 std::vector<std::vector<double>> disk2SRs_;
1087
1088
1089
1090
1091 int numDTCs_;
1092
1093 int numDTCsPerTFP_;
1094
1095 int numModules_;
1096
1097 int dtcNumModulesPerRoutingBlock_;
1098
1099 int dtcNumMergedRows_;
1100
1101 int dtcWidthM_;
1102
1103 double dtcBaseInv2R_;
1104
1105 double dtcBaseM_;
1106
1107 std::vector<std::vector<double>> encodingsBendPS_;
1108
1109 std::vector<std::vector<double>> encodingsBend2S_;
1110
1111 std::vector<SensorModule> sensorModules_;
1112
1113 std::vector<std::vector<SensorModule*>> dtcModules_;
1114
1115 std::unordered_map<DetId, SensorModule*> detIdToSensorModule_;
1116
1117
1118
1119
1120 double baseSector_;
1121
1122 double maxRphi_;
1123
1124 double maxRz_;
1125
1126 int numSectors_;
1127
1128
1129
1130
1131 int ctbWidthLayerCount_;
1132
1133
1134
1135
1136 std::vector<int> kfoutdPhiBins_;
1137
1138 std::vector<int> kfoutdZBins_;
1139
1140 std::vector<int> kfoutv0Bins_;
1141
1142 std::vector<int> kfoutv1Bins_;
1143 };
1144
1145 }
1146
1147 EVENTSETUP_DATA_DEFAULT_RECORD(tt::Setup, tt::SetupRcd);
1148
1149 #endif