36 LogTrace(
"L3MuonProducer") <<
"constructor called" << endl;
43 l2MuonToken_ = consumes<reco::TrackCollection>(theL2CollectionLabel);
44 l2MuonTrajToken_ = consumes<std::vector<Trajectory>>(theL2CollectionLabel.label());
45 l2AssoMapToken_ = consumes<TrajTrackAssociationCollection>(theL2CollectionLabel.label());
46 updatedL2AssoMapToken_ = consumes<reco::TrackToTrackMap>(theL2CollectionLabel.label());
55 theService = std::make_unique<MuonServiceProxy>(serviceParameters, consumesCollector());
59 auto mtl = std::make_unique<MuonTrackLoader>(trackLoaderParameters, iC, theService.get());
60 auto l3mtb = std::make_unique<L3MuonTrajectoryBuilder>(trajectoryBuilderParameters, theService.get(), iC);
61 theTrackFinder = std::make_unique<MuonTrackFinder>(
std::move(l3mtb),
std::move(mtl), iC);
66 produces<TrackingRecHitCollection>(theL2SeededTkLabel);
67 produces<reco::TrackExtraCollection>(theL2SeededTkLabel);
71 produces<reco::TrackCollection>(theL2SeededTkLabel);
72 produces<vector<Trajectory>>(theL2SeededTkLabel);
73 produces<TrajTrackAssociationCollection>(theL2SeededTkLabel);
75 produces<TrackingRecHitCollection>();
76 produces<reco::TrackExtraCollection>();
80 produces<reco::TrackCollection>();
81 produces<vector<Trajectory>>();
82 produces<TrajTrackAssociationCollection>();
84 produces<reco::MuonTrackLinksCollection>();
96 const string metname =
"Muon|RecoMuon|L3MuonProducer";
100 typedef vector<Trajectory> TrajColl;
106 LogTrace(
metname) <<
"Taking the L2 Muons " << theL2CollectionLabel << endl;
109 event.getByToken(l2MuonToken_,
L2Muons);
112 vector<MuonTrajectoryBuilder::TrackCand> L2TrackCands;
114 event.getByToken(l2MuonTrajToken_, L2MuonsTraj);
117 event.getByToken(l2AssoMapToken_, L2AssoMap);
120 event.getByToken(updatedL2AssoMapToken_, updatedL2AssoMap);
128 if (theL2CollectionLabel.instance() ==
"UpdatedAtVtx") {
129 iEnd = updatedL2AssoMap->
end();
130 iii = updatedL2AssoMap->
find(it->val);
132 tkUpdated = (*updatedL2AssoMap)[it->val];
139 L2Cand.first = &*traj;
140 L2TrackCands.push_back(L2Cand);
146 <<
"================================" << endl
154 psd0.
addUntracked<std::vector<std::string>>(
"Propagators",
156 "hltESPSmartPropagatorAny",
157 "SteppingHelixPropagatorAny",
158 "hltESPSmartPropagator",
159 "hltESPSteppingHelixPropagatorOpposite",
161 psd0.
add<
bool>(
"RPCLayers",
true);
169 psd0.
add<
std::string>(
"TTRHBuilder",
"hltESPTTRHBWithTrackAngle");
173 psd0.
add<
std::string>(
"Smoother",
"hltESPKFTrajectorySmootherForMuonTrackLoader");
176 psd1.
add<
double>(
"MaxChi2", 1000000.0);
177 psd1.
add<
std::string>(
"Propagator",
"hltESPSteppingHelixPropagatorOpposite");
178 psd1.
add<std::vector<double>>(
"BeamSpotPositionErrors",
186 psd0.
add<
bool>(
"VertexConstraint",
false);
187 psd0.
add<
bool>(
"DoSmoothing",
false);
192 psd0.
add<
double>(
"ScaleTECyFactor", -1.0);
194 psd0.
add<
bool>(
"tkTrajUseVertex",
false);
197 psd1.
add<
int>(
"TrackerSkipSection", -1);
198 psd1.
add<
bool>(
"DoPredictionsOnly",
false);
199 psd1.
add<
bool>(
"PropDirForCosmics",
false);
200 psd1.
add<
int>(
"HitThreshold", 1);
201 psd1.
add<
int>(
"MuonHitsOption", 1);
202 psd1.
add<
bool>(
"RefitFlag",
true);
204 psd1.
add<
int>(
"SkipStation", -1);
205 psd1.
add<
std::string>(
"TrackerRecHitBuilder",
"hltESPTTRHBWithTrackAngle");
206 psd1.
add<
double>(
"Chi2CutRPC", 1.0);
207 psd1.
add<
std::string>(
"MuonRecHitBuilder",
"hltESPMuonTransientTrackingRecHitBuilder");
212 psd1.
add<std::vector<int>>(
"DYTthrs",
217 psd1.
add<
int>(
"DYTselector", 1);
218 psd1.
add<
bool>(
"DYTupdator",
false);
219 psd1.
add<
bool>(
"DYTuseAPE",
false);
220 psd1.
add<
bool>(
"DYTuseThrsParametrization",
true);
223 psd2.
add<std::vector<double>>(
"eta0p8", {1, -0.919853, 0.990742});
224 psd2.
add<std::vector<double>>(
"eta1p2", {1, -0.897354, 0.987738});
225 psd2.
add<std::vector<double>>(
"eta2p0", {1, -0.986855, 0.998516});
226 psd2.
add<std::vector<double>>(
"eta2p2", {1, -0.940342, 0.992955});
227 psd2.
add<std::vector<double>>(
"eta2p4", {1, -0.947633, 0.993762});
230 psd1.
add<
double>(
"Chi2CutCSC", 150.0);
231 psd1.
add<
double>(
"Chi2CutDT", 10.0);
232 psd1.
add<
double>(
"Chi2CutGEM", 1.0);
233 psd1.
add<
double>(
"Chi2CutME0", 1.0);
234 psd1.
add<
bool>(
"RefitRPCHits",
true);
237 psd1.
add<
int>(
"TrackerSkipSystem", -1);
240 psd0.
add<
double>(
"tkTrajMaxChi2", 9999.0);
241 psd0.
add<
double>(
"ScaleTECxFactor", -1.0);
242 psd0.
add<
std::string>(
"TrackerRecHitBuilder",
"hltESPTTRHBWithTrackAngle");
244 psd0.
add<
std::string>(
"MuonRecHitBuilder",
"hltESPMuonTransientTrackingRecHitBuilder");
245 psd0.
add<
double>(
"tkTrajMaxDXYBeamSpot", 9999.0);
246 psd0.
add<
std::string>(
"TrackerPropagator",
"SteppingHelixPropagatorAny");
249 psd1.
add<
bool>(
"precise",
true);
250 psd1.
add<
bool>(
"Eta_fixed",
true);
251 psd1.
add<
double>(
"Eta_min", 0.1);
252 psd1.
add<
bool>(
"Z_fixed",
false);
254 psd1.
add<
int>(
"maxRegions", 2);
255 psd1.
add<
double>(
"Pt_min", 3.0);
256 psd1.
add<
double>(
"Rescale_Dz", 4.0);
257 psd1.
add<
double>(
"PhiR_UpperLimit_Par1", 0.6);
258 psd1.
add<
double>(
"PhiR_UpperLimit_Par2", 0.2);
260 psd1.
add<
bool>(
"Phi_fixed",
true);
262 psd1.
add<
double>(
"DeltaR", 0.025);
263 psd1.
add<
int>(
"OnDemand", -1);
264 psd1.
add<
double>(
"DeltaZ", 24.2);
265 psd1.
add<
double>(
"Rescale_phi", 3.0);
266 psd1.
add<
double>(
"Rescale_eta", 3.0);
267 psd1.
add<
double>(
"DeltaEta", 0.04);
268 psd1.
add<
double>(
"DeltaPhi", 0.15);
269 psd1.
add<
double>(
"Phi_min", 0.1);
270 psd1.
add<
bool>(
"UseVertex",
false);
271 psd1.
add<
double>(
"EtaR_UpperLimit_Par1", 0.25);
272 psd1.
add<
double>(
"EtaR_UpperLimit_Par2", 0.15);
274 psd1.
add<
bool>(
"Pt_fixed",
false);
277 psd0.
add<
bool>(
"RefitRPCHits",
true);
278 psd0.
add<
double>(
"PCut", 2.5);
283 "hltESPL3MuKFTrajectoryFitter",
284 "hltESPKFTrajectorySmootherForMuonTrackLoader",
285 "hltESPSmartPropagatorAny",
288 "hltESPTTRHBWithTrackAngle",
289 "hltESPMuonTransientTrackingRecHitBuilder" 295 psd1.
add<
double>(
"Quality_3", 7.0);
296 psd1.
add<
double>(
"DeltaRCut_1", 0.1);
297 psd1.
add<
double>(
"MinP", 2.5);
298 psd1.
add<
double>(
"MinPt", 1.0);
299 psd1.
add<
double>(
"Quality_2", 15.0);
300 psd1.
add<
double>(
"Pt_threshold2", 999999999.0);
301 psd1.
add<
double>(
"LocChi2Cut", 0.001);
302 psd1.
add<
double>(
"Eta_threshold", 1.2);
303 psd1.
add<
double>(
"Pt_threshold1", 0.0);
304 psd1.
add<
double>(
"Chi2Cut_1", 50.0);
305 psd1.
add<
double>(
"Quality_1", 20.0);
306 psd1.
add<
double>(
"Chi2Cut_3", 200.0);
307 psd1.
add<
double>(
"DeltaRCut_3", 1.0);
308 psd1.
add<
double>(
"DeltaRCut_2", 0.2);
309 psd1.
add<
double>(
"DeltaDCut_1", 40.0);
310 psd1.
add<
double>(
"DeltaDCut_2", 10.0);
311 psd1.
add<
double>(
"DeltaDCut_3", 15.0);
312 psd1.
add<
double>(
"Chi2Cut_2", 50.0);
316 psd0.
add<
double>(
"PtCut", 1.0);
317 psd0.
add<
bool>(
"matchToSeeds",
true);
321 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
friend struct const_iterator
const std::string metname
bool isNonnull() const
Checks for non-null.
ParameterSet const & parameterSet(StableProvenance const &provenance, ProcessHistory const &history)
key_type key() const
Accessor for product key.
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