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<
double>(
"Chi2CutCSC", 150.0);
221 psd1.
add<
double>(
"Chi2CutDT", 10.0);
222 psd1.
add<
double>(
"Chi2CutGEM", 1.0);
223 psd1.
add<
double>(
"Chi2CutME0", 1.0);
224 psd1.
add<
bool>(
"RefitRPCHits",
true);
227 psd1.
add<
int>(
"TrackerSkipSystem", -1);
230 psd0.
add<
double>(
"tkTrajMaxChi2", 9999.0);
231 psd0.
add<
double>(
"ScaleTECxFactor", -1.0);
232 psd0.
add<
std::string>(
"TrackerRecHitBuilder",
"hltESPTTRHBWithTrackAngle");
234 psd0.
add<
std::string>(
"MuonRecHitBuilder",
"hltESPMuonTransientTrackingRecHitBuilder");
235 psd0.
add<
double>(
"tkTrajMaxDXYBeamSpot", 9999.0);
236 psd0.
add<
std::string>(
"TrackerPropagator",
"SteppingHelixPropagatorAny");
239 psd1.
add<
bool>(
"precise",
true);
240 psd1.
add<
bool>(
"Eta_fixed",
true);
241 psd1.
add<
double>(
"Eta_min", 0.1);
242 psd1.
add<
bool>(
"Z_fixed",
false);
244 psd1.
add<
int>(
"maxRegions", 2);
245 psd1.
add<
double>(
"Pt_min", 3.0);
246 psd1.
add<
double>(
"Rescale_Dz", 4.0);
247 psd1.
add<
double>(
"PhiR_UpperLimit_Par1", 0.6);
248 psd1.
add<
double>(
"PhiR_UpperLimit_Par2", 0.2);
250 psd1.
add<
bool>(
"Phi_fixed",
true);
252 psd1.
add<
double>(
"DeltaR", 0.025);
253 psd1.
add<
int>(
"OnDemand", -1);
254 psd1.
add<
double>(
"DeltaZ", 24.2);
255 psd1.
add<
double>(
"Rescale_phi", 3.0);
256 psd1.
add<
double>(
"Rescale_eta", 3.0);
257 psd1.
add<
double>(
"DeltaEta", 0.04);
258 psd1.
add<
double>(
"DeltaPhi", 0.15);
259 psd1.
add<
double>(
"Phi_min", 0.1);
260 psd1.
add<
bool>(
"UseVertex",
false);
261 psd1.
add<
double>(
"EtaR_UpperLimit_Par1", 0.25);
262 psd1.
add<
double>(
"EtaR_UpperLimit_Par2", 0.15);
264 psd1.
add<
double>(
"EscapePt", 3.0);
265 psd1.
add<
bool>(
"Pt_fixed",
false);
268 psd0.
add<
bool>(
"RefitRPCHits",
true);
269 psd0.
add<
double>(
"PCut", 2.5);
272 psd1.
add<
bool>(
"DoPredictionsOnly",
false);
274 psd1.
add<
std::string>(
"TrackerRecHitBuilder",
"hltESPTTRHBWithTrackAngle");
275 psd1.
add<
std::string>(
"Smoother",
"hltESPKFTrajectorySmootherForMuonTrackLoader");
276 psd1.
add<
std::string>(
"MuonRecHitBuilder",
"hltESPMuonTransientTrackingRecHitBuilder");
278 psd1.
add<
bool>(
"RefitRPCHits",
true);
284 psd1.
add<
double>(
"Quality_3", 7.0);
285 psd1.
add<
double>(
"DeltaRCut_1", 0.1);
286 psd1.
add<
double>(
"MinP", 2.5);
287 psd1.
add<
double>(
"MinPt", 1.0);
288 psd1.
add<
double>(
"Quality_2", 15.0);
289 psd1.
add<
double>(
"Pt_threshold2", 999999999.0);
290 psd1.
add<
double>(
"LocChi2Cut", 0.001);
291 psd1.
add<
double>(
"Eta_threshold", 1.2);
292 psd1.
add<
double>(
"Pt_threshold1", 0.0);
293 psd1.
add<
double>(
"Chi2Cut_1", 50.0);
294 psd1.
add<
double>(
"Quality_1", 20.0);
295 psd1.
add<
double>(
"Chi2Cut_3", 200.0);
296 psd1.
add<
double>(
"DeltaRCut_3", 1.0);
297 psd1.
add<
double>(
"DeltaRCut_2", 0.2);
298 psd1.
add<
double>(
"DeltaDCut_1", 40.0);
299 psd1.
add<
double>(
"DeltaDCut_2", 10.0);
300 psd1.
add<
double>(
"DeltaDCut_3", 15.0);
301 psd1.
add<
double>(
"Chi2Cut_2", 50.0);
305 psd0.
add<
double>(
"PtCut", 1.0);
306 psd0.
add<
bool>(
"matchToSeeds",
true);
310 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)