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}),
71 if (not useApproxB_) {
73 <<
"TMTT Settings Error: module tilt angle unknown, so must set useApproxB = true";
87 magneticFieldInputTag_(iConfig.getParameter<edm::
ESInputTag>(
"magneticFieldInputTag")),
88 trackerGeometryInputTag_(iConfig.getParameter<edm::
ESInputTag>(
"trackerGeometryInputTag")),
89 trackerTopologyInputTag_(iConfig.getParameter<edm::
ESInputTag>(
"trackerTopologyInputTag")),
90 ttStubAlgoInputTag_(iConfig.getParameter<edm::
ESInputTag>(
"ttStubAlgoInputTag")),
92 stubInputTag_(iConfig.getParameter<edm::
InputTag>(
"stubInputTag")),
93 tpInputTag_(iConfig.getParameter<edm::
InputTag>(
"tpInputTag")),
94 stubTruthInputTag_(iConfig.getParameter<edm::
InputTag>(
"stubTruthInputTag")),
95 clusterTruthInputTag_(iConfig.getParameter<edm::
InputTag>(
"clusterTruthInputTag")),
96 genJetInputTag_(iConfig.getParameter<edm::
InputTag>(
"genJetInputTag")),
99 genCuts_(iConfig.getParameter<edm::
ParameterSet>(
"GenCuts")),
100 stubCuts_(iConfig.getParameter<edm::
ParameterSet>(
"StubCuts")),
101 stubDigitize_(iConfig.getParameter<edm::
ParameterSet>(
"StubDigitize")),
102 trackerModuleType_(iConfig.getParameter<edm::
ParameterSet>(
"TrackerModuleType")),
103 geometricProc_(iConfig.getParameter<edm::
ParameterSet>(
"GeometricProc")),
104 phiSectors_(iConfig.getParameter<edm::
ParameterSet>(
"PhiSectors")),
105 etaSectors_(iConfig.getParameter<edm::
ParameterSet>(
"EtaSectors")),
106 htArraySpecRphi_(iConfig.getParameter<edm::
ParameterSet>(
"HTArraySpecRphi")),
107 htFillingRphi_(iConfig.getParameter<edm::
ParameterSet>(
"HTFillingRphi")),
108 rzFilterOpts_(iConfig.getParameter<edm::
ParameterSet>(
"RZfilterOpts")),
109 l1TrackDef_(iConfig.getParameter<edm::
ParameterSet>(
"L1TrackDef")),
110 dupTrkRemoval_(iConfig.getParameter<edm::
ParameterSet>(
"DupTrkRemoval")),
111 trackMatchDef_(iConfig.getParameter<edm::
ParameterSet>(
"TrackMatchDef")),
112 trackFitSettings_(iConfig.getParameter<edm::
ParameterSet>(
"TrackFitSettings")),
113 deadModuleOpts_(iConfig.getParameter<edm::
ParameterSet>(
"DeadModuleOpts")),
114 trackDigi_(iConfig.getParameter<edm::
ParameterSet>(
"TrackDigi")),
118 enableMCtruth_(iConfig.getParameter<bool>(
"EnableMCtruth")),
119 enableHistos_(iConfig.getParameter<bool>(
"EnableHistos")),
120 enableOutputIntermediateTTTracks_(iConfig.getParameter<bool>(
"EnableOutputIntermediateTTTracks")),
124 genMinPt_(genCuts_.getParameter<double>(
"GenMinPt")),
125 genMaxAbsEta_(genCuts_.getParameter<double>(
"GenMaxAbsEta")),
126 genMaxVertR_(genCuts_.getParameter<double>(
"GenMaxVertR")),
127 genMaxVertZ_(genCuts_.getParameter<double>(
"GenMaxVertZ")),
128 genMaxD0_(genCuts_.getParameter<double>(
"GenMaxD0")),
129 genMaxZ0_(genCuts_.getParameter<double>(
"GenMaxZ0")),
130 genMinStubLayers_(genCuts_.getParameter<unsigned int>(
"GenMinStubLayers")),
134 degradeBendRes_(stubCuts_.getParameter<unsigned int>(
"DegradeBendRes")),
135 maxStubEta_(stubCuts_.getParameter<double>(
"MaxStubEta")),
136 killLowPtStubs_(stubCuts_.getParameter<bool>(
"KillLowPtStubs")),
137 printStubWindows_(stubCuts_.getParameter<bool>(
"PrintStubWindows")),
138 bendCut_(stubCuts_.getParameter<double>(
"BendCut")),
139 bendCutExtra_(stubCuts_.getParameter<double>(
"BendCutExtra")),
140 orderStubsByBend_(stubCuts_.getParameter<bool>(
"OrderStubsByBend")),
144 enableDigitize_(stubDigitize_.getParameter<bool>(
"EnableDigitize")),
147 phiSectorBits_(stubDigitize_.getParameter<unsigned int>(
"PhiSectorBits")),
148 phiSBits_(stubDigitize_.getParameter<unsigned int>(
"PhiSBits")),
149 phiSRange_(stubDigitize_.getParameter<double>(
"PhiSRange")),
150 rtBits_(stubDigitize_.getParameter<unsigned int>(
"RtBits")),
151 rtRange_(stubDigitize_.getParameter<double>(
"RtRange")),
152 zBits_(stubDigitize_.getParameter<unsigned int>(
"ZBits")),
153 zRange_(stubDigitize_.getParameter<double>(
"ZRange")),
155 phiNBits_(stubDigitize_.getParameter<unsigned int>(
"PhiNBits")),
156 phiNRange_(stubDigitize_.getParameter<double>(
"PhiNRange")),
157 bendBits_(stubDigitize_.getParameter<unsigned int>(
"BendBits")),
160 pitchVsType_(trackerModuleType_.getParameter<
vector<double>>(
"PitchVsType")),
161 spaceVsType_(trackerModuleType_.getParameter<
vector<double>>(
"SpaceVsType")),
162 barrelVsTypeTmp_(trackerModuleType_.getParameter<
vector<unsigned int>>(
"BarrelVsType")),
163 psVsTypeTmp_(trackerModuleType_.getParameter<
vector<unsigned int>>(
"PSVsType")),
164 tiltedVsTypeTmp_(trackerModuleType_.getParameter<
vector<unsigned int>>(
"TiltedVsType")),
167 useApproxB_(geometricProc_.getParameter<bool>(
"UseApproxB")),
168 bApprox_gradient_(geometricProc_.getParameter<double>(
"BApprox_gradient")),
169 bApprox_intercept_(geometricProc_.getParameter<double>(
"BApprox_intercept")),
172 numPhiNonants_(phiSectors_.getParameter<unsigned int>(
"NumPhiNonants")),
173 numPhiSectors_(phiSectors_.getParameter<unsigned int>(
"NumPhiSectors")),
174 chosenRofPhi_(phiSectors_.getParameter<double>(
"ChosenRofPhi")),
175 useStubPhi_(phiSectors_.getParameter<bool>(
"UseStubPhi")),
176 useStubPhiTrk_(phiSectors_.getParameter<bool>(
"UseStubPhiTrk")),
177 assumedPhiTrkRes_(phiSectors_.getParameter<double>(
"AssumedPhiTrkRes")),
178 calcPhiTrkRes_(phiSectors_.getParameter<bool>(
"CalcPhiTrkRes")),
181 etaRegions_(etaSectors_.getParameter<
vector<double>>(
"EtaRegions")),
182 chosenRofZ_(etaSectors_.getParameter<double>(
"ChosenRofZ")),
183 beamWindowZ_(etaSectors_.getParameter<double>(
"BeamWindowZ")),
184 allowOver2EtaSecs_(etaSectors_.getParameter<bool>(
"AllowOver2EtaSecs")),
187 houghMinPt_(htArraySpecRphi_.getParameter<double>(
"HoughMinPt")),
188 houghNbinsPt_(htArraySpecRphi_.getParameter<unsigned int>(
"HoughNbinsPt")),
189 houghNbinsPhi_(htArraySpecRphi_.getParameter<unsigned int>(
"HoughNbinsPhi")),
190 enableMerge2x2_(htArraySpecRphi_.getParameter<bool>(
"EnableMerge2x2")),
191 maxPtToMerge2x2_(htArraySpecRphi_.getParameter<double>(
"MaxPtToMerge2x2")),
192 numSubSecsEta_(htArraySpecRphi_.getParameter<unsigned int>(
"NumSubSecsEta")),
193 shape_(htArraySpecRphi_.getParameter<unsigned int>(
"Shape")),
194 miniHTstage_(htArraySpecRphi_.getParameter<bool>(
"MiniHTstage")),
195 miniHoughNbinsPt_(htArraySpecRphi_.getParameter<unsigned int>(
"MiniHoughNbinsPt")),
196 miniHoughNbinsPhi_(htArraySpecRphi_.getParameter<unsigned int>(
"MiniHoughNbinsPhi")),
197 miniHoughMinPt_(htArraySpecRphi_.getParameter<double>(
"MiniHoughMinPt")),
198 miniHoughDontKill_(htArraySpecRphi_.getParameter<bool>(
"MiniHoughDontKill")),
199 miniHoughDontKillMinPt_(htArraySpecRphi_.getParameter<double>(
"MiniHoughDontKillMinPt")),
200 miniHoughLoadBalance_(htArraySpecRphi_.getParameter<unsigned int>(
"MiniHoughLoadBalance")),
203 killSomeHTCellsRphi_(htFillingRphi_.getParameter<unsigned int>(
"KillSomeHTCellsRphi")),
204 useBendFilter_(htFillingRphi_.getParameter<bool>(
"UseBendFilter")),
205 maxStubsInCell_(htFillingRphi_.getParameter<unsigned int>(
"MaxStubsInCell")),
206 maxStubsInCellMiniHough_(htFillingRphi_.getParameter<unsigned int>(
"MaxStubsInCellMiniHough")),
207 busySectorKill_(htFillingRphi_.getParameter<bool>(
"BusySectorKill")),
208 busySectorNumStubs_(htFillingRphi_.getParameter<unsigned int>(
"BusySectorNumStubs")),
209 busySectorMbinRanges_(htFillingRphi_.getParameter<
vector<unsigned int>>(
"BusySectorMbinRanges")),
210 busySectorMbinOrder_(htFillingRphi_.getParameter<
vector<unsigned int>>(
"BusySectorMbinOrder")),
211 busyInputSectorKill_(htFillingRphi_.getParameter<bool>(
"BusyInputSectorKill")),
212 busyInputSectorNumStubs_(htFillingRphi_.getParameter<unsigned int>(
"BusyInputSectorNumStubs")),
213 muxOutputsHT_(htFillingRphi_.getParameter<unsigned int>(
"MuxOutputsHT")),
214 etaRegWhitelist_(htFillingRphi_.getParameter<
vector<unsigned int>>(
"EtaRegWhitelist")),
218 rzFilterName_(rzFilterOpts_.getParameter<
string>(
"RZFilterName")),
219 seedResCut_(rzFilterOpts_.getParameter<double>(
"SeedResCut")),
220 keepAllSeed_(rzFilterOpts_.getParameter<bool>(
"KeepAllSeed")),
221 maxSeedCombinations_(rzFilterOpts_.getParameter<unsigned int>(
"MaxSeedCombinations")),
222 maxGoodSeedCombinations_(rzFilterOpts_.getParameter<unsigned int>(
"MaxGoodSeedCombinations")),
223 maxSeedsPerStub_(rzFilterOpts_.getParameter<unsigned int>(
"MaxSeedsPerStub")),
224 zTrkSectorCheck_(rzFilterOpts_.getParameter<bool>(
"zTrkSectorCheck")),
225 minFilterLayers_(rzFilterOpts_.getParameter<unsigned int>(
"MinFilterLayers")),
229 minStubLayers_(l1TrackDef_.getParameter<unsigned int>(
"MinStubLayers")),
231 etaSecsReduceLayers_(l1TrackDef_.getParameter<
vector<unsigned int>>(
"EtaSecsReduceLayers")),
236 dupTrkAlgFit_(dupTrkRemoval_.getParameter<unsigned int>(
"DupTrkAlgFit")),
248 trackFitters_(trackFitSettings_.getParameter<
vector<std::
string>>(
"TrackFitters")),
249 useRZfilter_(trackFitSettings_.getParameter<
vector<std::
string>>(
"UseRZfilter")),
250 detailedFitOutput_(trackFitSettings_.getParameter<bool>(
"DetailedFitOutput")),
251 trackFitCheat_(trackFitSettings_.getParameter<bool>(
"TrackFitCheat")),
253 numTrackFitIterations_(trackFitSettings_.getParameter<unsigned int>(
"NumTrackFitIterations")),
254 killTrackFitWorstHit_(trackFitSettings_.getParameter<bool>(
"KillTrackFitWorstHit")),
255 generalResidualCut_(trackFitSettings_.getParameter<double>(
"GeneralResidualCut")),
256 killingResidualCut_(trackFitSettings_.getParameter<double>(
"KillingResidualCut")),
258 digitizeSLR_(trackFitSettings_.getParameter<bool>(
"DigitizeSLR")),
259 dividerBitsHelix_(trackFitSettings_.getParameter<unsigned int>(
"DividerBitsHelix")),
260 dividerBitsHelixZ_(trackFitSettings_.getParameter<unsigned int>(
"DividerBitsHelixZ")),
261 ShiftingBitsDenRPhi_(trackFitSettings_.getParameter<unsigned int>(
"ShiftingBitsDenRPhi")),
262 ShiftingBitsDenRZ_(trackFitSettings_.getParameter<unsigned int>(
"ShiftingBitsDenRZ")),
263 ShiftingBitsPt_(trackFitSettings_.getParameter<unsigned int>(
"ShiftingBitsPt")),
264 ShiftingBitsPhi_(trackFitSettings_.getParameter<unsigned int>(
"ShiftingBitsPhi")),
266 ShiftingBitsLambda_(trackFitSettings_.getParameter<unsigned int>(
"ShiftingBitsLambda")),
267 ShiftingBitsZ0_(trackFitSettings_.getParameter<unsigned int>(
"ShiftingBitsZ0")),
268 slr_chi2cut_(trackFitSettings_.getParameter<double>(
"SLR_chi2cut")),
269 residualCut_(trackFitSettings_.getParameter<double>(
"ResidualCut")),
271 kalmanDebugLevel_(trackFitSettings_.getParameter<unsigned int>(
"KalmanDebugLevel")),
272 kalmanMinNumStubs_(trackFitSettings_.getParameter<unsigned int>(
"KalmanMinNumStubs")),
273 kalmanMaxNumStubs_(trackFitSettings_.getParameter<unsigned int>(
"KalmanMaxNumStubs")),
291 kalmanHOtilted_(trackFitSettings_.getParameter<bool>(
"KalmanHOtilted")),
293 kalmanHOalpha_(trackFitSettings_.getParameter<unsigned int>(
"KalmanHOalpha")),
294 kalmanHOprojZcorr_(trackFitSettings_.getParameter<unsigned int>(
"KalmanHOprojZcorr")),
295 kalmanHOfw_(trackFitSettings_.getParameter<bool>(
"KalmanHOfw")),
299 killScenario_(deadModuleOpts_.getParameter<unsigned int>(
"KillScenario")),
300 killRecover_(deadModuleOpts_.getParameter<bool>(
"KillRecover")),
304 slr_skipTrackDigi_(trackDigi_.getParameter<bool>(
"SLR_skipTrackDigi")),
305 slr_oneOver2rBits_(trackDigi_.getParameter<unsigned int>(
"SLR_oneOver2rBits")),
306 slr_oneOver2rRange_(trackDigi_.getParameter<double>(
"SLR_oneOver2rRange")),
307 slr_d0Bits_(trackDigi_.getParameter<unsigned int>(
"SLR_d0Bits")),
308 slr_d0Range_(trackDigi_.getParameter<double>(
"SLR_d0Range")),
309 slr_phi0Bits_(trackDigi_.getParameter<unsigned int>(
"SLR_phi0Bits")),
310 slr_phi0Range_(trackDigi_.getParameter<double>(
"SLR_phi0Range")),
311 slr_z0Bits_(trackDigi_.getParameter<unsigned int>(
"SLR_z0Bits")),
312 slr_z0Range_(trackDigi_.getParameter<double>(
"SLR_z0Range")),
313 slr_tanlambdaBits_(trackDigi_.getParameter<unsigned int>(
"SLR_tanlambdaBits")),
314 slr_tanlambdaRange_(trackDigi_.getParameter<double>(
"SLR_tanlambdaRange")),
315 slr_chisquaredBits_(trackDigi_.getParameter<unsigned int>(
"SLR_chisquaredBits")),
316 slr_chisquaredRange_(trackDigi_.getParameter<double>(
"SLR_chisquaredRange")),
318 kf_skipTrackDigi_(trackDigi_.getParameter<bool>(
"KF_skipTrackDigi")),
319 kf_oneOver2rBits_(trackDigi_.getParameter<unsigned int>(
"KF_oneOver2rBits")),
320 kf_oneOver2rRange_(trackDigi_.getParameter<double>(
"KF_oneOver2rRange")),
321 kf_d0Bits_(trackDigi_.getParameter<unsigned int>(
"KF_d0Bits")),
322 kf_d0Range_(trackDigi_.getParameter<double>(
"KF_d0Range")),
323 kf_phi0Bits_(trackDigi_.getParameter<unsigned int>(
"KF_phi0Bits")),
324 kf_phi0Range_(trackDigi_.getParameter<double>(
"KF_phi0Range")),
325 kf_z0Bits_(trackDigi_.getParameter<unsigned int>(
"KF_z0Bits")),
326 kf_z0Range_(trackDigi_.getParameter<double>(
"KF_z0Range")),
327 kf_tanlambdaBits_(trackDigi_.getParameter<unsigned int>(
"KF_tanlambdaBits")),
328 kf_tanlambdaRange_(trackDigi_.getParameter<double>(
"KF_tanlambdaRange")),
329 kf_chisquaredBits_(trackDigi_.getParameter<unsigned int>(
"KF_chisquaredBits")),
330 kf_chisquaredRange_(trackDigi_.getParameter<double>(
"KF_chisquaredRange")),
331 kf_chisquaredBinEdges_(trackDigi_.getParameter<
vector<double>>(
"KF_chisquaredBinEdges")),
333 other_skipTrackDigi_(trackDigi_.getParameter<bool>(
"Other_skipTrackDigi")),
336 resPlotOpt_(iConfig.getParameter<bool>(
"ResPlotOpt")),
341 writeOutEdmFile_(iConfig.getUntrackedParameter<bool>(
"WriteOutEdmFile",
true)),
347 hybrid_(iConfig.getParameter<bool>(
"Hybrid")) {
349 vector<unsigned int> genPdgIdsUnsigned(
genCuts_.
getParameter<vector<unsigned int>>(
"GenPdgIds"));
350 if (genPdgIdsUnsigned.empty()) {
351 genPdgIdsUnsigned = {11, 13, 211, 321, 2212};
356 for (
unsigned int i = 0;
i < genPdgIdsUnsigned.size();
i++) {
363 vector<string> useRZfilterTmp;
366 useRZfilterTmp.push_back(
name);
368 useRZfilter_ = useRZfilterTmp;
381 <<
"Settings: Invalid cfg parameters - You cant set both UseStubPhi & useStubPhiTrk to false.";
385 <<
"Settings: Invalid cfg parameters - You are setting the minimum number of layers incorrectly : type A.";
388 <<
"Settings: Invalid cfg parameters - You are setting the minimum number of layers incorrectly : type B.";
391 <<
"Settings: Invalid cfg parameters - You are setting the minimum number of layers incorrectly : type C.";
398 <<
"Settings: Invalid cfg parameters - You are setting the minimum number of layers incorrectly : type D.";
401 <<
"Settings: Invalid cfg parameters - You are setting the minimum number of layers incorrectly : type E.";
404 constexpr
float verySmall = 0.1;
406 throw cms::Exception(
"BadConfig") <<
"Settings: Invalid cfg parameters -- HoughMinPt must be positive.";
411 throw cms::Exception(
"BadConfig") <<
"Settings: You specified an eta sector number in EtaSecsReduceLayers "
412 "which exceeds the total number of eta sectors! "
421 <<
"Settings: Invalid cfg parameters - BusySectorMbinOrder used by HT MUX contains wrong number of "
422 "elements. Unless you are optimising the MUX, suggest you configure it to an empty vector.";
423 set<unsigned int> mOrderCheck;
425 mOrderCheck.insert(
m);
429 <<
"Settings: Invalid cfg parameters - BusySectorMbinOrder used by HT MUX contains duplicate elements.";
430 unsigned int sum_nr = 0;
436 <<
"Settings: Invalid cfg parameters - Sum of entries in BusySectorMbinRanges is incorrect.";
442 <<
"Settings: it is not allowed to enable both MiniHTstage & EnableMerge2x2 options.";
446 <<
"Settings: Invalid cfg parameters - 2nd stage mini HT only allowed for square-shaped cells.";
448 throw cms::Exception(
"BadConfig") <<
"Settings: 2nd mini HT has so dar only been implemented in C++ for 2x2.";
454 <<
"Settings: it is not allowed to enable both MiniHTstage & EnableMerge2x2 options.";
458 <<
"Settings: Invalid cfg parameters - merging only allowed for square-shaped cells.";
464 <<
"Settings: Invalid cfg parameters - KalmanMaxNumStubs is less than KalmanMaxNumStubs.";
468 bool whitelisted =
true;
471 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_