35 LogTrace(
"L3MuonProducer") <<
"constructor called" << endl;
42 l2MuonToken_ = consumes<reco::TrackCollection>(theL2CollectionLabel);
43 l2MuonTrajToken_ = consumes<std::vector<Trajectory>>(theL2CollectionLabel.label());
44 l2AssoMapToken_ = consumes<TrajTrackAssociationCollection>(theL2CollectionLabel.label());
45 updatedL2AssoMapToken_ = consumes<reco::TrackToTrackMap>(theL2CollectionLabel.label());
54 theService = std::make_unique<MuonServiceProxy>(serviceParameters, consumesCollector());
58 auto mtl = std::make_unique<MuonTrackLoader>(trackLoaderParameters, iC, theService.get());
59 auto l3mtb = std::make_unique<L3MuonTrajectoryBuilder>(trajectoryBuilderParameters, theService.get(), iC);
60 theTrackFinder = std::make_unique<MuonTrackFinder>(
std::move(l3mtb),
std::move(mtl), iC);
65 produces<TrackingRecHitCollection>(theL2SeededTkLabel);
66 produces<reco::TrackExtraCollection>(theL2SeededTkLabel);
70 produces<reco::TrackCollection>(theL2SeededTkLabel);
71 produces<vector<Trajectory>>(theL2SeededTkLabel);
72 produces<TrajTrackAssociationCollection>(theL2SeededTkLabel);
74 produces<TrackingRecHitCollection>();
75 produces<reco::TrackExtraCollection>();
79 produces<reco::TrackCollection>();
80 produces<vector<Trajectory>>();
81 produces<TrajTrackAssociationCollection>();
83 produces<reco::MuonTrackLinksCollection>();
95 const string metname =
"Muon|RecoMuon|L3MuonProducer";
99 typedef vector<Trajectory> TrajColl;
105 LogTrace(
metname) <<
"Taking the L2 Muons " << theL2CollectionLabel << endl;
108 event.getByToken(l2MuonToken_,
L2Muons);
111 vector<MuonTrajectoryBuilder::TrackCand> L2TrackCands;
113 event.getByToken(l2MuonTrajToken_, L2MuonsTraj);
116 event.getByToken(l2AssoMapToken_, L2AssoMap);
119 event.getByToken(updatedL2AssoMapToken_, updatedL2AssoMap);
127 if (theL2CollectionLabel.instance() ==
"UpdatedAtVtx") {
128 iEnd = updatedL2AssoMap->
end();
129 iii = updatedL2AssoMap->
find(
it->val);
131 tkUpdated = (*updatedL2AssoMap)[
it->val];
138 L2Cand.first = &*traj;
139 L2TrackCands.push_back(L2Cand);
145 <<
"================================" << endl
153 psd0.
addUntracked<std::vector<std::string>>(
"Propagators",
155 "hltESPSmartPropagatorAny",
156 "SteppingHelixPropagatorAny",
157 "hltESPSmartPropagator",
158 "hltESPSteppingHelixPropagatorOpposite",
160 psd0.
add<
bool>(
"RPCLayers",
true);
168 psd0.
add<
std::string>(
"TTRHBuilder",
"hltESPTTRHBWithTrackAngle");
172 psd0.
add<
std::string>(
"Smoother",
"hltESPKFTrajectorySmootherForMuonTrackLoader");
175 psd1.
add<
double>(
"MaxChi2", 1000000.0);
176 psd1.
add<
std::string>(
"Propagator",
"hltESPSteppingHelixPropagatorOpposite");
177 psd1.
add<std::vector<double>>(
"BeamSpotPositionErrors",
185 psd0.
add<
bool>(
"VertexConstraint",
false);
186 psd0.
add<
bool>(
"DoSmoothing",
false);
191 psd0.
add<
double>(
"ScaleTECyFactor", -1.0);
193 psd0.
add<
bool>(
"tkTrajUseVertex",
false);
196 psd1.
add<
int>(
"TrackerSkipSection", -1);
197 psd1.
add<
bool>(
"DoPredictionsOnly",
false);
198 psd1.
add<
bool>(
"PropDirForCosmics",
false);
199 psd1.
add<
int>(
"HitThreshold", 1);
200 psd1.
add<
int>(
"MuonHitsOption", 1);
201 psd1.
add<
bool>(
"RefitFlag",
true);
203 psd1.
add<
int>(
"SkipStation", -1);
204 psd1.
add<
std::string>(
"TrackerRecHitBuilder",
"hltESPTTRHBWithTrackAngle");
205 psd1.
add<
double>(
"Chi2CutRPC", 1.0);
206 psd1.
add<
std::string>(
"MuonRecHitBuilder",
"hltESPMuonTransientTrackingRecHitBuilder");
211 psd1.
add<std::vector<int>>(
"DYTthrs",
216 psd1.
add<
int>(
"DYTselector", 1);
217 psd1.
add<
bool>(
"DYTupdator",
false);
218 psd1.
add<
bool>(
"DYTuseAPE",
false);
219 psd1.
add<
bool>(
"DYTuseThrsParametrization",
true);
222 psd2.
add<std::vector<double>>(
"eta0p8", {1, -0.919853, 0.990742});
223 psd2.
add<std::vector<double>>(
"eta1p2", {1, -0.897354, 0.987738});
224 psd2.
add<std::vector<double>>(
"eta2p0", {1, -0.986855, 0.998516});
225 psd2.
add<std::vector<double>>(
"eta2p2", {1, -0.940342, 0.992955});
226 psd2.
add<std::vector<double>>(
"eta2p4", {1, -0.947633, 0.993762});
229 psd1.
add<
double>(
"Chi2CutCSC", 150.0);
230 psd1.
add<
double>(
"Chi2CutDT", 10.0);
231 psd1.
add<
double>(
"Chi2CutGEM", 1.0);
232 psd1.
add<
double>(
"Chi2CutME0", 1.0);
233 psd1.
add<
bool>(
"RefitRPCHits",
true);
236 psd1.
add<
int>(
"TrackerSkipSystem", -1);
239 psd0.
add<
double>(
"tkTrajMaxChi2", 9999.0);
240 psd0.
add<
double>(
"ScaleTECxFactor", -1.0);
241 psd0.
add<
std::string>(
"TrackerRecHitBuilder",
"hltESPTTRHBWithTrackAngle");
243 psd0.
add<
std::string>(
"MuonRecHitBuilder",
"hltESPMuonTransientTrackingRecHitBuilder");
244 psd0.
add<
double>(
"tkTrajMaxDXYBeamSpot", 9999.0);
245 psd0.
add<
std::string>(
"TrackerPropagator",
"SteppingHelixPropagatorAny");
248 psd1.
add<
bool>(
"precise",
true);
249 psd1.
add<
bool>(
"Eta_fixed",
true);
250 psd1.
add<
double>(
"Eta_min", 0.1);
251 psd1.
add<
bool>(
"Z_fixed",
false);
253 psd1.
add<
int>(
"maxRegions", 2);
254 psd1.
add<
double>(
"Pt_min", 3.0);
255 psd1.
add<
double>(
"Rescale_Dz", 4.0);
256 psd1.
add<
double>(
"PhiR_UpperLimit_Par1", 0.6);
257 psd1.
add<
double>(
"PhiR_UpperLimit_Par2", 0.2);
259 psd1.
add<
bool>(
"Phi_fixed",
true);
261 psd1.
add<
double>(
"DeltaR", 0.025);
262 psd1.
add<
int>(
"OnDemand", -1);
263 psd1.
add<
double>(
"DeltaZ", 24.2);
264 psd1.
add<
double>(
"Rescale_phi", 3.0);
265 psd1.
add<
double>(
"Rescale_eta", 3.0);
266 psd1.
add<
double>(
"DeltaEta", 0.04);
267 psd1.
add<
double>(
"DeltaPhi", 0.15);
268 psd1.
add<
double>(
"Phi_min", 0.1);
269 psd1.
add<
bool>(
"UseVertex",
false);
270 psd1.
add<
double>(
"EtaR_UpperLimit_Par1", 0.25);
271 psd1.
add<
double>(
"EtaR_UpperLimit_Par2", 0.15);
273 psd1.
add<
bool>(
"Pt_fixed",
false);
276 psd0.
add<
bool>(
"RefitRPCHits",
true);
277 psd0.
add<
double>(
"PCut", 2.5);
282 "hltESPL3MuKFTrajectoryFitter",
283 "hltESPKFTrajectorySmootherForMuonTrackLoader",
284 "hltESPSmartPropagatorAny",
287 "hltESPTTRHBWithTrackAngle",
288 "hltESPMuonTransientTrackingRecHitBuilder" 294 psd1.
add<
double>(
"Quality_3", 7.0);
295 psd1.
add<
double>(
"DeltaRCut_1", 0.1);
296 psd1.
add<
double>(
"MinP", 2.5);
297 psd1.
add<
double>(
"MinPt", 1.0);
298 psd1.
add<
double>(
"Quality_2", 15.0);
299 psd1.
add<
double>(
"Pt_threshold2", 999999999.0);
300 psd1.
add<
double>(
"LocChi2Cut", 0.001);
301 psd1.
add<
double>(
"Eta_threshold", 1.2);
302 psd1.
add<
double>(
"Pt_threshold1", 0.0);
303 psd1.
add<
double>(
"Chi2Cut_1", 50.0);
304 psd1.
add<
double>(
"Quality_1", 20.0);
305 psd1.
add<
double>(
"Chi2Cut_3", 200.0);
306 psd1.
add<
double>(
"DeltaRCut_3", 1.0);
307 psd1.
add<
double>(
"DeltaRCut_2", 0.2);
308 psd1.
add<
double>(
"DeltaDCut_1", 40.0);
309 psd1.
add<
double>(
"DeltaDCut_2", 10.0);
310 psd1.
add<
double>(
"DeltaDCut_3", 15.0);
311 psd1.
add<
double>(
"Chi2Cut_2", 50.0);
315 psd0.
add<
double>(
"PtCut", 1.0);
316 psd0.
add<
bool>(
"matchToSeeds",
true);
320 descriptions.
add(
"L3MuonProducer",
desc);
T getParameter(std::string const &) const
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
std::pair< const Trajectory *, reco::TrackRef > TrackCand
const std::string metname
bool isNonnull() const
Checks for non-null.
ParameterSet const & parameterSet(StableProvenance const &provenance, ProcessHistory const &history)
const_iterator find(const key_type &k) const
find element with specified reference key
const_iterator end() const
last iterator over the map (read only)
void produce(edm::Event &, const edm::EventSetup &) override
reconstruct muons
ParameterDescriptionBase * add(U const &iLabel, T const &value)
L3MuonProducer(const edm::ParameterSet &)
constructor with config
void add(std::string const &label, ParameterSetDescription const &psetDescription)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
const_iterator begin() const
first iterator over the map (read only)
~L3MuonProducer() override
destructor