File indexing completed on 2025-06-11 03:00:13
0001 #include "FWCore/Framework/interface/ESProducer.h"
0002 #include "FWCore/Framework/interface/ModuleFactory.h"
0003 #include "FWCore/Framework/interface/ESHandle.h"
0004 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0005 #include "FWCore/Utilities/interface/ESGetToken.h"
0006 #include "L1Trigger/TrackTrigger/interface/Setup.h"
0007
0008 #include <memory>
0009
0010 namespace tt {
0011
0012
0013
0014
0015
0016
0017 class ProducerSetup : public edm::ESProducer {
0018 public:
0019 ProducerSetup(const edm::ParameterSet& iConfig);
0020 ~ProducerSetup() override = default;
0021 std::unique_ptr<Setup> produce(const SetupRcd& setupRcd);
0022
0023 private:
0024 Setup::Config iConfig_;
0025 edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> getTokenTrackerGeometry_;
0026 edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> getTokenTrackerTopology_;
0027 edm::ESGetToken<TrackerDetToDTCELinkCablingMap, TrackerDetToDTCELinkCablingMapRcd> getTokenCablingMap_;
0028 edm::ESGetToken<StubAlgorithm, TTStubAlgorithmRecord> getTokenTTStubAlgorithm_;
0029 };
0030
0031 ProducerSetup::ProducerSetup(const edm::ParameterSet& iConfig) {
0032 auto cc = setWhatProduced(this);
0033 getTokenTrackerGeometry_ = cc.consumes();
0034 getTokenTrackerTopology_ = cc.consumes();
0035 getTokenCablingMap_ = cc.consumes();
0036 getTokenTTStubAlgorithm_ = cc.consumes();
0037 const edm::ParameterSet& pSetTF = iConfig.getParameter<edm::ParameterSet>("TrackFinding");
0038 iConfig_.beamWindowZ_ = pSetTF.getParameter<double>("BeamWindowZ");
0039 iConfig_.minPt_ = pSetTF.getParameter<double>("MinPt");
0040 iConfig_.minPtCand_ = pSetTF.getParameter<double>("MinPtCand");
0041 iConfig_.maxEta_ = pSetTF.getParameter<double>("MaxEta");
0042 iConfig_.maxD0_ = pSetTF.getParameter<double>("MaxD0");
0043 iConfig_.chosenRofPhi_ = pSetTF.getParameter<double>("ChosenRofPhi");
0044 iConfig_.numLayers_ = pSetTF.getParameter<int>("NumLayers");
0045 iConfig_.minLayers_ = pSetTF.getParameter<int>("MinLayers");
0046 const edm::ParameterSet& pSetTMTT = iConfig.getParameter<edm::ParameterSet>("TMTT");
0047 iConfig_.tmttWidthR_ = pSetTMTT.getParameter<int>("WidthR");
0048 iConfig_.tmttWidthPhi_ = pSetTMTT.getParameter<int>("WidthPhi");
0049 iConfig_.tmttWidthZ_ = pSetTMTT.getParameter<int>("WidthZ");
0050 const edm::ParameterSet& pSetHybrid = iConfig.getParameter<edm::ParameterSet>("Hybrid");
0051 iConfig_.hybridNumLayers_ = pSetHybrid.getParameter<int>("NumLayers");
0052 iConfig_.hybridNumRingsPS_ = pSetHybrid.getParameter<std::vector<int>>("NumRingsPS");
0053 iConfig_.hybridWidthsR_ = pSetHybrid.getParameter<std::vector<int>>("WidthsR");
0054 iConfig_.hybridWidthsZ_ = pSetHybrid.getParameter<std::vector<int>>("WidthsZ");
0055 iConfig_.hybridWidthsPhi_ = pSetHybrid.getParameter<std::vector<int>>("WidthsPhi");
0056 iConfig_.hybridWidthsAlpha_ = pSetHybrid.getParameter<std::vector<int>>("WidthsAlpha");
0057 iConfig_.hybridWidthsBend_ = pSetHybrid.getParameter<std::vector<int>>("WidthsBend");
0058 iConfig_.hybridRangesR_ = pSetHybrid.getParameter<std::vector<double>>("RangesR");
0059 iConfig_.hybridRangesZ_ = pSetHybrid.getParameter<std::vector<double>>("RangesZ");
0060 iConfig_.hybridRangesAlpha_ = pSetHybrid.getParameter<std::vector<double>>("RangesAlpha");
0061 iConfig_.hybridLayerRs_ = pSetHybrid.getParameter<std::vector<double>>("LayerRs");
0062 iConfig_.hybridDiskZs_ = pSetHybrid.getParameter<std::vector<double>>("DiskZs");
0063 iConfig_.hybridDisk2SRsSet_ = pSetHybrid.getParameter<std::vector<edm::ParameterSet>>("Disk2SRsSet");
0064 iConfig_.tbBarrelHalfLength_ = pSetHybrid.getParameter<double>("BarrelHalfLength");
0065 iConfig_.tbInnerRadius_ = pSetHybrid.getParameter<double>("InnerRadius");
0066 iConfig_.tbWidthsR_ = pSetHybrid.getParameter<std::vector<int>>("WidthsRTB");
0067 const edm::ParameterSet& pSetFW = iConfig.getParameter<edm::ParameterSet>("Firmware");
0068 iConfig_.enableTruncation_ = pSetFW.getParameter<bool>("EnableTruncation");
0069 iConfig_.useHybrid_ = pSetFW.getParameter<bool>("UseHybrid");
0070 iConfig_.widthDSPa_ = pSetFW.getParameter<int>("WidthDSPa");
0071 iConfig_.widthDSPb_ = pSetFW.getParameter<int>("WidthDSPb");
0072 iConfig_.widthDSPc_ = pSetFW.getParameter<int>("WidthDSPc");
0073 iConfig_.widthAddrBRAM36_ = pSetFW.getParameter<int>("WidthAddrBRAM36");
0074 iConfig_.widthAddrBRAM18_ = pSetFW.getParameter<int>("WidthAddrBRAM18");
0075 iConfig_.numFramesInfra_ = pSetFW.getParameter<int>("NumFramesInfra");
0076 iConfig_.freqLHC_ = pSetFW.getParameter<double>("FreqLHC");
0077 iConfig_.freqBEHigh_ = pSetFW.getParameter<double>("FreqBEHigh");
0078 iConfig_.freqBELow_ = pSetFW.getParameter<double>("FreqBELow");
0079 iConfig_.tmpFE_ = pSetFW.getParameter<int>("TMP_FE");
0080 iConfig_.tmpTFP_ = pSetFW.getParameter<int>("TMP_TFP");
0081 iConfig_.speedOfLight_ = pSetFW.getParameter<double>("SpeedOfLight");
0082 const edm::ParameterSet& pSetOT = iConfig.getParameter<edm::ParameterSet>("Tracker");
0083 iConfig_.bField_ = pSetOT.getParameter<double>("BField");
0084 iConfig_.bFieldError_ = pSetOT.getParameter<double>("BFieldError");
0085 iConfig_.outerRadius_ = pSetOT.getParameter<double>("OuterRadius");
0086 iConfig_.innerRadius_ = pSetOT.getParameter<double>("InnerRadius");
0087 iConfig_.halfLength_ = pSetOT.getParameter<double>("HalfLength");
0088 iConfig_.tiltApproxSlope_ = pSetOT.getParameter<double>("TiltApproxSlope");
0089 iConfig_.tiltApproxIntercept_ = pSetOT.getParameter<double>("TiltApproxIntercept");
0090 iConfig_.tiltUncertaintyR_ = pSetOT.getParameter<double>("TiltUncertaintyR");
0091 iConfig_.scattering_ = pSetOT.getParameter<double>("Scattering");
0092 iConfig_.pitchRow2S_ = pSetOT.getParameter<double>("PitchRow2S");
0093 iConfig_.pitchRowPS_ = pSetOT.getParameter<double>("PitchRowPS");
0094 iConfig_.pitchCol2S_ = pSetOT.getParameter<double>("PitchCol2S");
0095 iConfig_.pitchColPS_ = pSetOT.getParameter<double>("PitchColPS");
0096 iConfig_.limitPSBarrel_ = pSetOT.getParameter<double>("LimitPSBarrel");
0097 iConfig_.limitsTiltedR_ = pSetOT.getParameter<std::vector<double>>("LimitsTiltedR");
0098 iConfig_.limitsTiltedZ_ = pSetOT.getParameter<std::vector<double>>("LimitsTiltedZ");
0099 iConfig_.limitsPSDiksZ_ = pSetOT.getParameter<std::vector<double>>("LimitsPSDiksZ");
0100 iConfig_.limitsPSDiksR_ = pSetOT.getParameter<std::vector<double>>("LimitsPSDiksR");
0101 iConfig_.tiltedLayerLimitsZ_ = pSetOT.getParameter<std::vector<double>>("TiltedLayerLimitsZ");
0102 iConfig_.psDiskLimitsR_ = pSetOT.getParameter<std::vector<double>>("PSDiskLimitsR");
0103 const edm::ParameterSet& pSetFE = iConfig.getParameter<edm::ParameterSet>("FrontEnd");
0104 iConfig_.widthBend_ = pSetFE.getParameter<int>("WidthBend");
0105 iConfig_.widthCol_ = pSetFE.getParameter<int>("WidthCol");
0106 iConfig_.widthRow_ = pSetFE.getParameter<int>("WidthRow");
0107 iConfig_.baseBend_ = pSetFE.getParameter<double>("BaseBend");
0108 iConfig_.baseCol_ = pSetFE.getParameter<double>("BaseCol");
0109 iConfig_.baseRow_ = pSetFE.getParameter<double>("BaseRow");
0110 iConfig_.baseWindowSize_ = pSetFE.getParameter<double>("BaseWindowSize");
0111 iConfig_.bendCut_ = pSetFE.getParameter<double>("BendCut");
0112 const edm::ParameterSet& pSetDTC = iConfig.getParameter<edm::ParameterSet>("DTC");
0113 iConfig_.numRegions_ = pSetDTC.getParameter<int>("NumRegions");
0114 iConfig_.numOverlappingRegions_ = pSetDTC.getParameter<int>("NumOverlappingRegions");
0115 iConfig_.numATCASlots_ = pSetDTC.getParameter<int>("NumATCASlots");
0116 iConfig_.numDTCsPerRegion_ = pSetDTC.getParameter<int>("NumDTCsPerRegion");
0117 iConfig_.numModulesPerDTC_ = pSetDTC.getParameter<int>("NumModulesPerDTC");
0118 iConfig_.dtcNumRoutingBlocks_ = pSetDTC.getParameter<int>("NumRoutingBlocks");
0119 iConfig_.dtcDepthMemory_ = pSetDTC.getParameter<int>("DepthMemory");
0120 iConfig_.dtcWidthRowLUT_ = pSetDTC.getParameter<int>("WidthRowLUT");
0121 iConfig_.dtcWidthInv2R_ = pSetDTC.getParameter<int>("WidthInv2R");
0122 iConfig_.offsetDetIdDSV_ = pSetDTC.getParameter<int>("OffsetDetIdDSV");
0123 iConfig_.offsetDetIdTP_ = pSetDTC.getParameter<int>("OffsetDetIdTP");
0124 iConfig_.offsetLayerDisks_ = pSetDTC.getParameter<int>("OffsetLayerDisks");
0125 iConfig_.offsetLayerId_ = pSetDTC.getParameter<int>("OffsetLayerId");
0126 iConfig_.numBarrelLayer_ = pSetDTC.getParameter<int>("NumBarrelLayer");
0127 iConfig_.numBarrelLayerPS_ = pSetDTC.getParameter<int>("NumBarrelLayerPS");
0128 iConfig_.slotLimitPS_ = pSetDTC.getParameter<int>("SlotLimitPS");
0129 iConfig_.slotLimit10gbps_ = pSetDTC.getParameter<int>("SlotLimit10gbps");
0130 const edm::ParameterSet& pSetTFP = iConfig.getParameter<edm::ParameterSet>("TFP");
0131 iConfig_.tfpWidthPhi0_ = pSetTFP.getParameter<int>("WidthPhi0");
0132 iConfig_.tfpWidthInvR_ = pSetTFP.getParameter<int>("WidthInvR");
0133 iConfig_.tfpWidthCot_ = pSetTFP.getParameter<int>("WidthCot");
0134 iConfig_.tfpWidthZ0_ = pSetTFP.getParameter<int>("WidthZ0");
0135 iConfig_.tfpNumChannel_ = pSetTFP.getParameter<int>("NumChannel");
0136 const edm::ParameterSet& pSetGP = iConfig.getParameter<edm::ParameterSet>("GeometricProcessor");
0137 iConfig_.gpNumBinsPhiT_ = pSetGP.getParameter<int>("NumBinsPhiT");
0138 iConfig_.gpNumBinsZT_ = pSetGP.getParameter<int>("NumBinsZT");
0139 iConfig_.chosenRofZ_ = pSetGP.getParameter<double>("ChosenRofZ");
0140 iConfig_.gpDepthMemory_ = pSetGP.getParameter<int>("DepthMemory");
0141 iConfig_.gpWidthModule_ = pSetGP.getParameter<int>("WidthModule");
0142 iConfig_.gpPosPS_ = pSetGP.getParameter<int>("PosPS");
0143 iConfig_.gpPosBarrel_ = pSetGP.getParameter<int>("PosBarrel");
0144 iConfig_.gpPosTilted_ = pSetGP.getParameter<int>("PosTilted");
0145 const edm::ParameterSet& pSetHT = iConfig.getParameter<edm::ParameterSet>("HoughTransform");
0146 iConfig_.htNumBinsInv2R_ = pSetHT.getParameter<int>("NumBinsInv2R");
0147 iConfig_.htNumBinsPhiT_ = pSetHT.getParameter<int>("NumBinsPhiT");
0148 iConfig_.htMinLayers_ = pSetHT.getParameter<int>("MinLayers");
0149 iConfig_.htDepthMemory_ = pSetHT.getParameter<int>("DepthMemory");
0150 const edm::ParameterSet& pSetCTB = iConfig.getParameter<edm::ParameterSet>("CleanTrackBuilder");
0151 iConfig_.ctbNumBinsInv2R_ = pSetCTB.getParameter<int>("NumBinsInv2R");
0152 iConfig_.ctbNumBinsPhiT_ = pSetCTB.getParameter<int>("NumBinsPhiT");
0153 iConfig_.ctbNumBinsCot_ = pSetCTB.getParameter<int>("NumBinsCot");
0154 iConfig_.ctbNumBinsZT_ = pSetCTB.getParameter<int>("NumBinsZT");
0155 iConfig_.ctbMinLayers_ = pSetCTB.getParameter<int>("MinLayers");
0156 iConfig_.ctbMaxTracks_ = pSetCTB.getParameter<int>("MaxTracks");
0157 iConfig_.ctbMaxStubs_ = pSetCTB.getParameter<int>("MaxStubs");
0158 iConfig_.ctbDepthMemory_ = pSetCTB.getParameter<int>("DepthMemory");
0159 const edm::ParameterSet& pSetKF = iConfig.getParameter<edm::ParameterSet>("KalmanFilter");
0160 iConfig_.kfUse5ParameterFit_ = pSetKF.getParameter<bool>("Use5ParameterFit");
0161 iConfig_.kfUseSimmulation_ = pSetKF.getParameter<bool>("UseSimmulation");
0162 iConfig_.kfUseTTStubResiduals_ = pSetKF.getParameter<bool>("UseTTStubResiduals");
0163 iConfig_.kfUseTTStubParameters_ = pSetKF.getParameter<bool>("UseTTStubParameters");
0164 iConfig_.kfApplyNonLinearCorrection_ = pSetKF.getParameter<bool>("ApplyNonLinearCorrection");
0165 iConfig_.kfNumWorker_ = pSetKF.getParameter<int>("NumWorker");
0166 iConfig_.kfMaxTracks_ = pSetKF.getParameter<int>("MaxTracks");
0167 iConfig_.kfMinLayers_ = pSetKF.getParameter<int>("MinLayers");
0168 iConfig_.kfMinLayersPS_ = pSetKF.getParameter<int>("MinLayersPS");
0169 iConfig_.kfMaxLayers_ = pSetKF.getParameter<int>("MaxLayers");
0170 iConfig_.kfMaxGaps_ = pSetKF.getParameter<int>("MaxGaps");
0171 iConfig_.kfMaxSeedingLayer_ = pSetKF.getParameter<int>("MaxSeedingLayer");
0172 iConfig_.kfNumSeedStubs_ = pSetKF.getParameter<int>("NumSeedStubs");
0173 iConfig_.kfMinSeedDeltaR_ = pSetKF.getParameter<double>("MinSeedDeltaR");
0174 iConfig_.kfRangeFactor_ = pSetKF.getParameter<double>("RangeFactor");
0175 iConfig_.kfShiftInitialC00_ = pSetKF.getParameter<int>("ShiftInitialC00");
0176 iConfig_.kfShiftInitialC11_ = pSetKF.getParameter<int>("ShiftInitialC11");
0177 iConfig_.kfShiftInitialC22_ = pSetKF.getParameter<int>("ShiftInitialC22");
0178 iConfig_.kfShiftInitialC33_ = pSetKF.getParameter<int>("ShiftInitialC33");
0179 iConfig_.kfShiftChi20_ = pSetKF.getParameter<int>("ShiftChi20");
0180 iConfig_.kfShiftChi21_ = pSetKF.getParameter<int>("ShiftChi21");
0181 iConfig_.kfCutChi2_ = pSetKF.getParameter<double>("CutChi2");
0182 iConfig_.kfWidthChi2_ = pSetKF.getParameter<int>("WidthChi2");
0183 const edm::ParameterSet& pSetDR = iConfig.getParameter<edm::ParameterSet>("DuplicateRemoval");
0184 iConfig_.drDepthMemory_ = pSetDR.getParameter<int>("DepthMemory");
0185 const edm::ParameterSet& pSetTQ = iConfig.getParameter<edm::ParameterSet>("TrackQuality");
0186 iConfig_.tqNumChannel_ = pSetTQ.getParameter<int>("NumChannel");
0187 }
0188
0189 std::unique_ptr<Setup> ProducerSetup::produce(const SetupRcd& setupRcd) {
0190 const TrackerGeometry& trackerGeometry = setupRcd.get(getTokenTrackerGeometry_);
0191 const TrackerTopology& trackerTopology = setupRcd.get(getTokenTrackerTopology_);
0192 const TrackerDetToDTCELinkCablingMap& cablingMap = setupRcd.get(getTokenCablingMap_);
0193 const edm::ESHandle<StubAlgorithm> handleStubAlgorithm = setupRcd.getHandle(getTokenTTStubAlgorithm_);
0194 const StubAlgorithmOfficial& stubAlgoritm =
0195 *dynamic_cast<const StubAlgorithmOfficial*>(&setupRcd.get(getTokenTTStubAlgorithm_));
0196 const edm::ParameterSet& pSetStubAlgorithm = getParameterSet(handleStubAlgorithm.description()->pid_);
0197 return std::make_unique<Setup>(
0198 iConfig_, trackerGeometry, trackerTopology, cablingMap, stubAlgoritm, pSetStubAlgorithm);
0199 }
0200 }
0201
0202 DEFINE_FWK_EVENTSETUP_MODULE(tt::ProducerSetup);