20 enableDigitize_(
false),
22 bApprox_gradient_(0.886454),
23 bApprox_intercept_(0.504148),
28 {-2.4, -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.4}),
70 if (not useApproxB_) {
72 <<
"TMTT Settings Error: module tilt angle unknown, so must set useApproxB = true";
86 magneticFieldInputTag_(iConfig.getParameter<edm::
ESInputTag>(
"magneticFieldInputTag")),
87 trackerGeometryInputTag_(iConfig.getParameter<edm::
ESInputTag>(
"trackerGeometryInputTag")),
88 trackerTopologyInputTag_(iConfig.getParameter<edm::
ESInputTag>(
"trackerTopologyInputTag")),
89 ttStubAlgoInputTag_(iConfig.getParameter<edm::
ESInputTag>(
"ttStubAlgoInputTag")),
91 stubInputTag_(iConfig.getParameter<edm::
InputTag>(
"stubInputTag")),
92 tpInputTag_(iConfig.getParameter<edm::
InputTag>(
"tpInputTag")),
93 stubTruthInputTag_(iConfig.getParameter<edm::
InputTag>(
"stubTruthInputTag")),
94 clusterTruthInputTag_(iConfig.getParameter<edm::
InputTag>(
"clusterTruthInputTag")),
95 genJetInputTag_(iConfig.getParameter<edm::
InputTag>(
"genJetInputTag")),
98 genCuts_(iConfig.getParameter<edm::
ParameterSet>(
"GenCuts")),
99 stubCuts_(iConfig.getParameter<edm::
ParameterSet>(
"StubCuts")),
100 stubDigitize_(iConfig.getParameter<edm::
ParameterSet>(
"StubDigitize")),
101 trackerModuleType_(iConfig.getParameter<edm::
ParameterSet>(
"TrackerModuleType")),
102 geometricProc_(iConfig.getParameter<edm::
ParameterSet>(
"GeometricProc")),
103 phiSectors_(iConfig.getParameter<edm::
ParameterSet>(
"PhiSectors")),
104 etaSectors_(iConfig.getParameter<edm::
ParameterSet>(
"EtaSectors")),
105 htArraySpecRphi_(iConfig.getParameter<edm::
ParameterSet>(
"HTArraySpecRphi")),
106 htFillingRphi_(iConfig.getParameter<edm::
ParameterSet>(
"HTFillingRphi")),
107 rzFilterOpts_(iConfig.getParameter<edm::
ParameterSet>(
"RZfilterOpts")),
108 l1TrackDef_(iConfig.getParameter<edm::
ParameterSet>(
"L1TrackDef")),
109 dupTrkRemoval_(iConfig.getParameter<edm::
ParameterSet>(
"DupTrkRemoval")),
110 trackMatchDef_(iConfig.getParameter<edm::
ParameterSet>(
"TrackMatchDef")),
111 trackFitSettings_(iConfig.getParameter<edm::
ParameterSet>(
"TrackFitSettings")),
112 deadModuleOpts_(iConfig.getParameter<edm::
ParameterSet>(
"DeadModuleOpts")),
113 trackDigi_(iConfig.getParameter<edm::
ParameterSet>(
"TrackDigi")),
117 enableMCtruth_(iConfig.getParameter<bool>(
"EnableMCtruth")),
118 enableHistos_(iConfig.getParameter<bool>(
"EnableHistos")),
119 enableOutputIntermediateTTTracks_(iConfig.getParameter<bool>(
"EnableOutputIntermediateTTTracks")),
123 genMinPt_(genCuts_.getParameter<double>(
"GenMinPt")),
124 genMaxAbsEta_(genCuts_.getParameter<double>(
"GenMaxAbsEta")),
125 genMaxVertR_(genCuts_.getParameter<double>(
"GenMaxVertR")),
126 genMaxVertZ_(genCuts_.getParameter<double>(
"GenMaxVertZ")),
127 genMaxD0_(genCuts_.getParameter<double>(
"GenMaxD0")),
128 genMaxZ0_(genCuts_.getParameter<double>(
"GenMaxZ0")),
129 genMinStubLayers_(genCuts_.getParameter<unsigned int>(
"GenMinStubLayers")),
133 degradeBendRes_(stubCuts_.getParameter<unsigned int>(
"DegradeBendRes")),
134 maxStubEta_(stubCuts_.getParameter<double>(
"MaxStubEta")),
135 killLowPtStubs_(stubCuts_.getParameter<bool>(
"KillLowPtStubs")),
136 printStubWindows_(stubCuts_.getParameter<bool>(
"PrintStubWindows")),
137 bendCut_(stubCuts_.getParameter<double>(
"BendCut")),
138 bendCutExtra_(stubCuts_.getParameter<double>(
"BendCutExtra")),
139 orderStubsByBend_(stubCuts_.getParameter<bool>(
"OrderStubsByBend")),
143 enableDigitize_(stubDigitize_.getParameter<bool>(
"EnableDigitize")),
146 phiSectorBits_(stubDigitize_.getParameter<unsigned int>(
"PhiSectorBits")),
147 phiSBits_(stubDigitize_.getParameter<unsigned int>(
"PhiSBits")),
148 phiSRange_(stubDigitize_.getParameter<double>(
"PhiSRange")),
149 rtBits_(stubDigitize_.getParameter<unsigned int>(
"RtBits")),
150 rtRange_(stubDigitize_.getParameter<double>(
"RtRange")),
151 zBits_(stubDigitize_.getParameter<unsigned int>(
"ZBits")),
152 zRange_(stubDigitize_.getParameter<double>(
"ZRange")),
154 phiNBits_(stubDigitize_.getParameter<unsigned int>(
"PhiNBits")),
155 phiNRange_(stubDigitize_.getParameter<double>(
"PhiNRange")),
156 bendBits_(stubDigitize_.getParameter<unsigned int>(
"BendBits")),
159 pitchVsType_(trackerModuleType_.getParameter<
vector<double>>(
"PitchVsType")),
160 spaceVsType_(trackerModuleType_.getParameter<
vector<double>>(
"SpaceVsType")),
161 barrelVsTypeTmp_(trackerModuleType_.getParameter<
vector<unsigned int>>(
"BarrelVsType")),
162 psVsTypeTmp_(trackerModuleType_.getParameter<
vector<unsigned int>>(
"PSVsType")),
163 tiltedVsTypeTmp_(trackerModuleType_.getParameter<
vector<unsigned int>>(
"TiltedVsType")),
166 useApproxB_(geometricProc_.getParameter<bool>(
"UseApproxB")),
167 bApprox_gradient_(geometricProc_.getParameter<double>(
"BApprox_gradient")),
168 bApprox_intercept_(geometricProc_.getParameter<double>(
"BApprox_intercept")),
171 numPhiNonants_(phiSectors_.getParameter<unsigned int>(
"NumPhiNonants")),
172 numPhiSectors_(phiSectors_.getParameter<unsigned int>(
"NumPhiSectors")),
173 chosenRofPhi_(phiSectors_.getParameter<double>(
"ChosenRofPhi")),
174 useStubPhi_(phiSectors_.getParameter<bool>(
"UseStubPhi")),
175 useStubPhiTrk_(phiSectors_.getParameter<bool>(
"UseStubPhiTrk")),
176 assumedPhiTrkRes_(phiSectors_.getParameter<double>(
"AssumedPhiTrkRes")),
177 calcPhiTrkRes_(phiSectors_.getParameter<bool>(
"CalcPhiTrkRes")),
180 etaRegions_(etaSectors_.getParameter<
vector<double>>(
"EtaRegions")),
181 chosenRofZ_(etaSectors_.getParameter<double>(
"ChosenRofZ")),
182 beamWindowZ_(etaSectors_.getParameter<double>(
"BeamWindowZ")),
183 allowOver2EtaSecs_(etaSectors_.getParameter<bool>(
"AllowOver2EtaSecs")),
186 houghMinPt_(htArraySpecRphi_.getParameter<double>(
"HoughMinPt")),
187 houghNbinsPt_(htArraySpecRphi_.getParameter<unsigned int>(
"HoughNbinsPt")),
188 houghNbinsPhi_(htArraySpecRphi_.getParameter<unsigned int>(
"HoughNbinsPhi")),
189 enableMerge2x2_(htArraySpecRphi_.getParameter<bool>(
"EnableMerge2x2")),
190 maxPtToMerge2x2_(htArraySpecRphi_.getParameter<double>(
"MaxPtToMerge2x2")),
191 numSubSecsEta_(htArraySpecRphi_.getParameter<unsigned int>(
"NumSubSecsEta")),
192 shape_(htArraySpecRphi_.getParameter<unsigned int>(
"Shape")),
193 miniHTstage_(htArraySpecRphi_.getParameter<bool>(
"MiniHTstage")),
194 miniHoughNbinsPt_(htArraySpecRphi_.getParameter<unsigned int>(
"MiniHoughNbinsPt")),
195 miniHoughNbinsPhi_(htArraySpecRphi_.getParameter<unsigned int>(
"MiniHoughNbinsPhi")),
196 miniHoughMinPt_(htArraySpecRphi_.getParameter<double>(
"MiniHoughMinPt")),
197 miniHoughDontKill_(htArraySpecRphi_.getParameter<bool>(
"MiniHoughDontKill")),
198 miniHoughDontKillMinPt_(htArraySpecRphi_.getParameter<double>(
"MiniHoughDontKillMinPt")),
199 miniHoughLoadBalance_(htArraySpecRphi_.getParameter<unsigned int>(
"MiniHoughLoadBalance")),
202 killSomeHTCellsRphi_(htFillingRphi_.getParameter<unsigned int>(
"KillSomeHTCellsRphi")),
203 useBendFilter_(htFillingRphi_.getParameter<bool>(
"UseBendFilter")),
204 maxStubsInCell_(htFillingRphi_.getParameter<unsigned int>(
"MaxStubsInCell")),
205 maxStubsInCellMiniHough_(htFillingRphi_.getParameter<unsigned int>(
"MaxStubsInCellMiniHough")),
206 busySectorKill_(htFillingRphi_.getParameter<bool>(
"BusySectorKill")),
207 busySectorNumStubs_(htFillingRphi_.getParameter<unsigned int>(
"BusySectorNumStubs")),
208 busySectorMbinRanges_(htFillingRphi_.getParameter<
vector<unsigned int>>(
"BusySectorMbinRanges")),
209 busySectorMbinOrder_(htFillingRphi_.getParameter<
vector<unsigned int>>(
"BusySectorMbinOrder")),
210 busyInputSectorKill_(htFillingRphi_.getParameter<bool>(
"BusyInputSectorKill")),
211 busyInputSectorNumStubs_(htFillingRphi_.getParameter<unsigned int>(
"BusyInputSectorNumStubs")),
212 muxOutputsHT_(htFillingRphi_.getParameter<unsigned int>(
"MuxOutputsHT")),
213 etaRegWhitelist_(htFillingRphi_.getParameter<
vector<unsigned int>>(
"EtaRegWhitelist")),
217 rzFilterName_(rzFilterOpts_.getParameter<
string>(
"RZFilterName")),
218 seedResCut_(rzFilterOpts_.getParameter<double>(
"SeedResCut")),
219 keepAllSeed_(rzFilterOpts_.getParameter<bool>(
"KeepAllSeed")),
220 maxSeedCombinations_(rzFilterOpts_.getParameter<unsigned int>(
"MaxSeedCombinations")),
221 maxGoodSeedCombinations_(rzFilterOpts_.getParameter<unsigned int>(
"MaxGoodSeedCombinations")),
222 maxSeedsPerStub_(rzFilterOpts_.getParameter<unsigned int>(
"MaxSeedsPerStub")),
223 zTrkSectorCheck_(rzFilterOpts_.getParameter<bool>(
"zTrkSectorCheck")),
224 minFilterLayers_(rzFilterOpts_.getParameter<unsigned int>(
"MinFilterLayers")),
228 minStubLayers_(l1TrackDef_.getParameter<unsigned int>(
"MinStubLayers")),
230 etaSecsReduceLayers_(l1TrackDef_.getParameter<
vector<unsigned int>>(
"EtaSecsReduceLayers")),
235 dupTrkAlgFit_(dupTrkRemoval_.getParameter<unsigned int>(
"DupTrkAlgFit")),
247 trackFitters_(trackFitSettings_.getParameter<
vector<std::
string>>(
"TrackFitters")),
248 useRZfilter_(trackFitSettings_.getParameter<
vector<std::
string>>(
"UseRZfilter")),
249 detailedFitOutput_(trackFitSettings_.getParameter<bool>(
"DetailedFitOutput")),
250 trackFitCheat_(trackFitSettings_.getParameter<bool>(
"TrackFitCheat")),
252 numTrackFitIterations_(trackFitSettings_.getParameter<unsigned int>(
"NumTrackFitIterations")),
253 killTrackFitWorstHit_(trackFitSettings_.getParameter<bool>(
"KillTrackFitWorstHit")),
254 generalResidualCut_(trackFitSettings_.getParameter<double>(
"GeneralResidualCut")),
255 killingResidualCut_(trackFitSettings_.getParameter<double>(
"KillingResidualCut")),
257 digitizeSLR_(trackFitSettings_.getParameter<bool>(
"DigitizeSLR")),
258 dividerBitsHelix_(trackFitSettings_.getParameter<unsigned int>(
"DividerBitsHelix")),
259 dividerBitsHelixZ_(trackFitSettings_.getParameter<unsigned int>(
"DividerBitsHelixZ")),
260 ShiftingBitsDenRPhi_(trackFitSettings_.getParameter<unsigned int>(
"ShiftingBitsDenRPhi")),
261 ShiftingBitsDenRZ_(trackFitSettings_.getParameter<unsigned int>(
"ShiftingBitsDenRZ")),
262 ShiftingBitsPt_(trackFitSettings_.getParameter<unsigned int>(
"ShiftingBitsPt")),
263 ShiftingBitsPhi_(trackFitSettings_.getParameter<unsigned int>(
"ShiftingBitsPhi")),
265 ShiftingBitsLambda_(trackFitSettings_.getParameter<unsigned int>(
"ShiftingBitsLambda")),
266 ShiftingBitsZ0_(trackFitSettings_.getParameter<unsigned int>(
"ShiftingBitsZ0")),
267 slr_chi2cut_(trackFitSettings_.getParameter<double>(
"SLR_chi2cut")),
268 residualCut_(trackFitSettings_.getParameter<double>(
"ResidualCut")),
270 kalmanDebugLevel_(trackFitSettings_.getParameter<unsigned int>(
"KalmanDebugLevel")),
271 kalmanMinNumStubs_(trackFitSettings_.getParameter<unsigned int>(
"KalmanMinNumStubs")),
272 kalmanMaxNumStubs_(trackFitSettings_.getParameter<unsigned int>(
"KalmanMaxNumStubs")),
290 kalmanHOtilted_(trackFitSettings_.getParameter<bool>(
"KalmanHOtilted")),
292 kalmanHOalpha_(trackFitSettings_.getParameter<unsigned int>(
"KalmanHOalpha")),
293 kalmanHOprojZcorr_(trackFitSettings_.getParameter<unsigned int>(
"KalmanHOprojZcorr")),
294 kalmanHOfw_(trackFitSettings_.getParameter<bool>(
"KalmanHOfw")),
298 killScenario_(deadModuleOpts_.getParameter<unsigned int>(
"KillScenario")),
299 killRecover_(deadModuleOpts_.getParameter<bool>(
"KillRecover")),
303 slr_skipTrackDigi_(trackDigi_.getParameter<bool>(
"SLR_skipTrackDigi")),
304 slr_oneOver2rBits_(trackDigi_.getParameter<unsigned int>(
"SLR_oneOver2rBits")),
305 slr_oneOver2rRange_(trackDigi_.getParameter<double>(
"SLR_oneOver2rRange")),
306 slr_d0Bits_(trackDigi_.getParameter<unsigned int>(
"SLR_d0Bits")),
307 slr_d0Range_(trackDigi_.getParameter<double>(
"SLR_d0Range")),
308 slr_phi0Bits_(trackDigi_.getParameter<unsigned int>(
"SLR_phi0Bits")),
309 slr_phi0Range_(trackDigi_.getParameter<double>(
"SLR_phi0Range")),
310 slr_z0Bits_(trackDigi_.getParameter<unsigned int>(
"SLR_z0Bits")),
311 slr_z0Range_(trackDigi_.getParameter<double>(
"SLR_z0Range")),
312 slr_tanlambdaBits_(trackDigi_.getParameter<unsigned int>(
"SLR_tanlambdaBits")),
313 slr_tanlambdaRange_(trackDigi_.getParameter<double>(
"SLR_tanlambdaRange")),
314 slr_chisquaredBits_(trackDigi_.getParameter<unsigned int>(
"SLR_chisquaredBits")),
315 slr_chisquaredRange_(trackDigi_.getParameter<double>(
"SLR_chisquaredRange")),
317 kf_skipTrackDigi_(trackDigi_.getParameter<bool>(
"KF_skipTrackDigi")),
318 kf_oneOver2rBits_(trackDigi_.getParameter<unsigned int>(
"KF_oneOver2rBits")),
319 kf_oneOver2rRange_(trackDigi_.getParameter<double>(
"KF_oneOver2rRange")),
320 kf_d0Bits_(trackDigi_.getParameter<unsigned int>(
"KF_d0Bits")),
321 kf_d0Range_(trackDigi_.getParameter<double>(
"KF_d0Range")),
322 kf_phi0Bits_(trackDigi_.getParameter<unsigned int>(
"KF_phi0Bits")),
323 kf_phi0Range_(trackDigi_.getParameter<double>(
"KF_phi0Range")),
324 kf_z0Bits_(trackDigi_.getParameter<unsigned int>(
"KF_z0Bits")),
325 kf_z0Range_(trackDigi_.getParameter<double>(
"KF_z0Range")),
326 kf_tanlambdaBits_(trackDigi_.getParameter<unsigned int>(
"KF_tanlambdaBits")),
327 kf_tanlambdaRange_(trackDigi_.getParameter<double>(
"KF_tanlambdaRange")),
328 kf_chisquaredBits_(trackDigi_.getParameter<unsigned int>(
"KF_chisquaredBits")),
329 kf_chisquaredRange_(trackDigi_.getParameter<double>(
"KF_chisquaredRange")),
330 kf_chisquaredBinEdges_(trackDigi_.getParameter<
vector<double>>(
"KF_chisquaredBinEdges")),
332 other_skipTrackDigi_(trackDigi_.getParameter<bool>(
"Other_skipTrackDigi")),
335 resPlotOpt_(iConfig.getParameter<bool>(
"ResPlotOpt")),
340 writeOutEdmFile_(iConfig.getUntrackedParameter<bool>(
"WriteOutEdmFile",
true)),
346 hybrid_(iConfig.getParameter<bool>(
"Hybrid")) {
348 vector<unsigned int> genPdgIdsUnsigned(
genCuts_.
getParameter<vector<unsigned int>>(
"GenPdgIds"));
349 if (genPdgIdsUnsigned.empty()) {
350 genPdgIdsUnsigned = {11, 13, 211, 321, 2212};
355 for (
unsigned int i = 0;
i < genPdgIdsUnsigned.size();
i++) {
362 vector<string> useRZfilterTmp;
365 useRZfilterTmp.push_back(
name);
367 useRZfilter_ = useRZfilterTmp;
380 <<
"Settings: Invalid cfg parameters - You cant set both UseStubPhi & useStubPhiTrk to false.";
384 <<
"Settings: Invalid cfg parameters - You are setting the minimum number of layers incorrectly : type A.";
387 <<
"Settings: Invalid cfg parameters - You are setting the minimum number of layers incorrectly : type B.";
390 <<
"Settings: Invalid cfg parameters - You are setting the minimum number of layers incorrectly : type C.";
397 <<
"Settings: Invalid cfg parameters - You are setting the minimum number of layers incorrectly : type D.";
400 <<
"Settings: Invalid cfg parameters - You are setting the minimum number of layers incorrectly : type E.";
403 constexpr
float verySmall = 0.1;
405 throw cms::Exception(
"BadConfig") <<
"Settings: Invalid cfg parameters -- HoughMinPt must be positive.";
410 throw cms::Exception(
"BadConfig") <<
"Settings: You specified an eta sector number in EtaSecsReduceLayers "
411 "which exceeds the total number of eta sectors! "
420 <<
"Settings: Invalid cfg parameters - BusySectorMbinOrder used by HT MUX contains wrong number of "
421 "elements. Unless you are optimising the MUX, suggest you configure it to an empty vector.";
422 set<unsigned int> mOrderCheck;
424 mOrderCheck.insert(
m);
428 <<
"Settings: Invalid cfg parameters - BusySectorMbinOrder used by HT MUX contains duplicate elements.";
429 unsigned int sum_nr = 0;
435 <<
"Settings: Invalid cfg parameters - Sum of entries in BusySectorMbinRanges is incorrect.";
441 <<
"Settings: it is not allowed to enable both MiniHTstage & EnableMerge2x2 options.";
445 <<
"Settings: Invalid cfg parameters - 2nd stage mini HT only allowed for square-shaped cells.";
447 throw cms::Exception(
"BadConfig") <<
"Settings: 2nd mini HT has so dar only been implemented in C++ for 2x2.";
453 <<
"Settings: it is not allowed to enable both MiniHTstage & EnableMerge2x2 options.";
457 <<
"Settings: Invalid cfg parameters - merging only allowed for square-shaped cells.";
463 <<
"Settings: Invalid cfg parameters - KalmanMaxNumStubs is less than KalmanMaxNumStubs.";
467 bool whitelisted =
true;
470 if (whitelist_enabled) {
kfLayerVsChiSq4_({999., 999., 10., 30., 80., 120., 160.})
std::vector< double > etaRegions_
unsigned int miniHoughNbinsPt_
kfLayerVsD0Cut5_({999., 999., 999., 10., 10., 10., 10.})
std::vector< bool > barrelVsType_
std::vector< unsigned int > barrelVsTypeTmp_
std::vector< unsigned int > psVsTypeTmp_
kalmanMaxSkipLayersHard_(1)
std::vector< std::string > useRZfilter_
edm::ParameterSet genCuts_
kfLayerVsPtToler_({999., 999., 0.1, 0.1, 0.05, 0.05, 0.05})
kalmanMaxSkipLayersEasy_(2)
std::vector< bool > tiltedVsType_
unsigned int miniHoughNbinsPhi_
kfLayerVsZ0Cut4_({999., 999., 15., 15., 15., 15., 15.})
std::vector< int > genPdgIds_
std::vector< unsigned int > etaSecsReduceLayers_
kalmanMaxStubsPerLayer_(4)
kalmanRemove2PScut_(true)
std::vector< std::string > trackFitters_
bool isHTRPhiEtaRegWhitelisted(unsigned const iEtaReg) const
kfLayerVsChiSq5_({999., 999., 10., 30., 80., 120., 160.})
unsigned int minStubLayers_
unsigned int houghNbinsPt_
std::vector< bool > psVsType_
minFracMatchStubsOnTP_(-99)
std::vector< unsigned int > etaRegWhitelist_
unsigned int minNumMatchLayers_
unsigned int genMinStubLayers_
T getParameter(std::string const &) const
std::vector< unsigned int > busySectorMbinRanges_
kalmanAddBeamConstr_(false)
unsigned int kalmanMinNumStubs_
minFracMatchStubsOnReco_(-99)
std::vector< unsigned int > busySectorMbinOrder_
minPtToReduceLayers_(99999.)
unsigned int kalmanMaxNumStubs_
kalmanMultiScattTerm_(0.00075)
kfLayerVsZ0Cut5_({999., 999., 25.5, 25.5, 25.5, 25.5, 25.5})
std::vector< unsigned int > tiltedVsTypeTmp_
double minPtToReduceLayers_