37 LogTrace(
"L3MuonProducer") <<
"constructor called" << endl;
44 l2MuonToken_ = consumes<reco::TrackCollection>(theL2CollectionLabel);
45 l2MuonTrajToken_ = consumes<std::vector<Trajectory> >(theL2CollectionLabel.label());
46 l2AssoMapToken_ = consumes<TrajTrackAssociationCollection>(theL2CollectionLabel.label());
47 updatedL2AssoMapToken_ = consumes<reco::TrackToTrackMap>(theL2CollectionLabel.label());
64 theL2SeededTkLabel = trackLoaderParameters.getUntrackedParameter<
std::string>(
"MuonSeededTracksInstance",
std::string());
66 produces<reco::TrackCollection>(theL2SeededTkLabel);
67 produces<TrackingRecHitCollection>(theL2SeededTkLabel);
68 produces<reco::TrackExtraCollection>(theL2SeededTkLabel);
69 produces<vector<Trajectory> >(theL2SeededTkLabel) ;
70 produces<TrajTrackAssociationCollection>(theL2SeededTkLabel);
72 produces<reco::TrackCollection>();
73 produces<TrackingRecHitCollection>();
74 produces<reco::TrackExtraCollection>();
75 produces<vector<Trajectory> >() ;
76 produces<TrajTrackAssociationCollection>();
78 produces<reco::MuonTrackLinksCollection>();
88 LogTrace(
"L3MuonProducer") <<
"destructor called" << endl;
89 if (theService)
delete theService;
90 if (theTrackFinder)
delete theTrackFinder;
99 const string metname =
"Muon|RecoMuon|L3MuonProducer";
100 LogTrace(metname)<<endl<<endl<<endl;
101 LogTrace(metname)<<
"L3 Muon Reconstruction started"<<endl;
103 typedef vector<Trajectory> TrajColl;
106 theService->update(eventSetup);
109 LogTrace(metname)<<
"Taking the L2 Muons "<<theL2CollectionLabel<<endl;
113 event.getByToken(l2MuonToken_,L2Muons);
116 vector<MuonTrajectoryBuilder::TrackCand> L2TrackCands;
119 event.getByToken(l2MuonTrajToken_, L2MuonsTraj);
122 event.getByToken(l2AssoMapToken_,L2AssoMap);
125 event.getByToken(updatedL2AssoMapToken_,updatedL2AssoMap);
135 if ( theL2CollectionLabel.instance() ==
"UpdatedAtVtx") {
136 iEnd = updatedL2AssoMap->
end();
137 iii = updatedL2AssoMap->
find(it->val);
138 if (iii != iEnd ) tkUpdated = (*updatedL2AssoMap)[it->val] ;
144 if( traj->isValid() ) L2Cand.first = &*traj ;
145 L2TrackCands.push_back(L2Cand);
148 theTrackFinder->reconstruct(L2TrackCands, event, eventSetup);
151 <<
"================================" 160 psd0.
addUntracked<std::vector<std::string>>(
"Propagators", {
161 "hltESPSmartPropagatorAny",
162 "SteppingHelixPropagatorAny",
163 "hltESPSmartPropagator",
164 "hltESPSteppingHelixPropagatorOpposite",
166 psd0.
add<
bool>(
"RPCLayers",
true);
174 psd0.
add<
std::string>(
"TTRHBuilder",
"hltESPTTRHBWithTrackAngle");
178 psd0.
add<
std::string>(
"Smoother",
"hltESPKFTrajectorySmootherForMuonTrackLoader");
181 psd1.
add<
double>(
"MaxChi2", 1000000.0);
182 psd1.
add<
std::string>(
"Propagator",
"hltESPSteppingHelixPropagatorOpposite");
183 psd1.
add<std::vector<double>>(
"BeamSpotPositionErrors", {
190 psd0.
add<
bool>(
"VertexConstraint",
false);
191 psd0.
add<
bool>(
"DoSmoothing",
false);
196 psd0.
add<
double>(
"ScaleTECyFactor", -1.0);
198 psd0.
add<
bool>(
"tkTrajUseVertex",
false);
201 psd1.
add<
int>(
"TrackerSkipSection", -1);
202 psd1.
add<
bool>(
"DoPredictionsOnly",
false);
203 psd1.
add<
bool>(
"PropDirForCosmics",
false);
204 psd1.
add<
int>(
"HitThreshold", 1);
205 psd1.
add<
int>(
"MuonHitsOption", 1);
206 psd1.
add<
bool>(
"RefitFlag",
true);
208 psd1.
add<
int>(
"SkipStation", -1);
209 psd1.
add<
std::string>(
"TrackerRecHitBuilder",
"hltESPTTRHBWithTrackAngle");
210 psd1.
add<
double>(
"Chi2CutRPC", 1.0);
211 psd1.
add<
std::string>(
"MuonRecHitBuilder",
"hltESPMuonTransientTrackingRecHitBuilder");
216 psd1.
add<std::vector<int>>(
"DYTthrs", {
220 psd1.
add<
int>(
"DYTselector",1);
221 psd1.
add<
bool>(
"DYTupdator",
false);
222 psd1.
add<
bool>(
"DYTuseAPE",
false );
223 psd1.
add<
bool>(
"DYTuseThrsParametrization",
true);
226 psd2.
add<std::vector<double>>(
"eta0p8", {1,-0.919853, 0.990742});
227 psd2.
add<std::vector<double>>(
"eta1p2", {1,-0.897354, 0.987738});
228 psd2.
add<std::vector<double>>(
"eta2p0", {1,-0.986855, 0.998516});
229 psd2.
add<std::vector<double>>(
"eta2p2", {1,-0.940342, 0.992955});
230 psd2.
add<std::vector<double>>(
"eta2p4", {1,-0.947633, 0.993762});
233 psd1.
add<
double>(
"Chi2CutCSC", 150.0);
234 psd1.
add<
double>(
"Chi2CutDT", 10.0);
235 psd1.
add<
double>(
"Chi2CutGEM", 1.0);
236 psd1.
add<
double>(
"Chi2CutME0", 1.0);
237 psd1.
add<
bool>(
"RefitRPCHits",
true);
240 psd1.
add<
int>(
"TrackerSkipSystem", -1);
243 psd0.
add<
double>(
"tkTrajMaxChi2", 9999.0);
244 psd0.
add<
double>(
"ScaleTECxFactor", -1.0);
245 psd0.
add<
std::string>(
"TrackerRecHitBuilder",
"hltESPTTRHBWithTrackAngle");
247 psd0.
add<
std::string>(
"MuonRecHitBuilder",
"hltESPMuonTransientTrackingRecHitBuilder");
248 psd0.
add<
double>(
"tkTrajMaxDXYBeamSpot", 9999.0);
249 psd0.
add<
std::string>(
"TrackerPropagator",
"SteppingHelixPropagatorAny");
252 psd1.
add<
bool>(
"precise",
true);
253 psd1.
add<
bool>(
"Eta_fixed",
true);
254 psd1.
add<
double>(
"Eta_min", 0.1);
255 psd1.
add<
bool>(
"Z_fixed",
false);
257 psd1.
add<
int>(
"maxRegions", 2);
258 psd1.
add<
double>(
"Pt_min", 3.0);
259 psd1.
add<
double>(
"Rescale_Dz", 4.0);
260 psd1.
add<
double>(
"PhiR_UpperLimit_Par1", 0.6);
261 psd1.
add<
double>(
"PhiR_UpperLimit_Par2", 0.2);
263 psd1.
add<
bool>(
"Phi_fixed",
true);
265 psd1.
add<
double>(
"DeltaR", 0.025);
266 psd1.
add<
int>(
"OnDemand", -1);
267 psd1.
add<
double>(
"DeltaZ", 24.2);
268 psd1.
add<
double>(
"Rescale_phi", 3.0);
269 psd1.
add<
double>(
"Rescale_eta", 3.0);
270 psd1.
add<
double>(
"DeltaEta", 0.04);
271 psd1.
add<
double>(
"DeltaPhi", 0.15);
272 psd1.
add<
double>(
"Phi_min", 0.1);
273 psd1.
add<
bool>(
"UseVertex",
false);
274 psd1.
add<
double>(
"EtaR_UpperLimit_Par1", 0.25);
275 psd1.
add<
double>(
"EtaR_UpperLimit_Par2", 0.15);
277 psd1.
add<
double>(
"EscapePt", 3.0);
278 psd1.
add<
bool>(
"Pt_fixed",
false);
281 psd0.
add<
bool>(
"RefitRPCHits",
true);
282 psd0.
add<
double>(
"PCut", 2.5);
287 "hltESPL3MuKFTrajectoryFitter",
288 "hltESPKFTrajectorySmootherForMuonTrackLoader",
289 "hltESPSmartPropagatorAny",
292 "hltESPTTRHBWithTrackAngle",
293 "hltESPMuonTransientTrackingRecHitBuilder" 299 psd1.
add<
double>(
"Quality_3", 7.0);
300 psd1.
add<
double>(
"DeltaRCut_1", 0.1);
301 psd1.
add<
double>(
"MinP", 2.5);
302 psd1.
add<
double>(
"MinPt", 1.0);
303 psd1.
add<
double>(
"Quality_2", 15.0);
304 psd1.
add<
double>(
"Pt_threshold2", 999999999.0);
305 psd1.
add<
double>(
"LocChi2Cut", 0.001);
306 psd1.
add<
double>(
"Eta_threshold", 1.2);
307 psd1.
add<
double>(
"Pt_threshold1", 0.0);
308 psd1.
add<
double>(
"Chi2Cut_1", 50.0);
309 psd1.
add<
double>(
"Quality_1", 20.0);
310 psd1.
add<
double>(
"Chi2Cut_3", 200.0);
311 psd1.
add<
double>(
"DeltaRCut_3", 1.0);
312 psd1.
add<
double>(
"DeltaRCut_2", 0.2);
313 psd1.
add<
double>(
"DeltaDCut_1", 40.0);
314 psd1.
add<
double>(
"DeltaDCut_2", 10.0);
315 psd1.
add<
double>(
"DeltaDCut_3", 15.0);
316 psd1.
add<
double>(
"Chi2Cut_2", 50.0);
320 psd0.
add<
double>(
"PtCut", 1.0);
321 psd0.
add<
bool>(
"matchToSeeds",
true);
325 descriptions.
add(
"L3MuonProducer", desc);
T getParameter(std::string const &) const
bool isNonnull() const
Checks for non-null.
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
std::pair< const Trajectory *, reco::TrackRef > TrackCand
friend struct const_iterator
const_iterator end() const
last iterator over the map (read only)
const std::string metname
const_iterator find(const key_type &k) const
find element with specified reference key
key_type key() const
Accessor for product key.
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
ParameterSet const & parameterSet(Provenance const &provenance)