51 LogTrace(
"Muon|RecoMuon|L2MuonProducer") <<
"constructor called" << endl;
58 seedsToken = consumes<edm::View<TrajectorySeed>>(theSeedCollectionLabel);
66 theService = std::make_unique<MuonServiceProxy>(serviceParameters, consumesCollector());
68 std::unique_ptr<MuonTrajectoryBuilder> trajectoryBuilder =
nullptr;
74 :
"StandAloneMuonTrajectoryBuilder";
75 if (typeOfBuilder ==
"StandAloneMuonTrajectoryBuilder" || typeOfBuilder.empty())
77 std::make_unique<StandAloneMuonTrajectoryBuilder>(trajectoryBuilderParameters, theService.get(), iC);
78 else if (typeOfBuilder ==
"Exhaustive")
80 std::make_unique<ExhaustiveMuonTrajectoryBuilder>(trajectoryBuilderParameters, theService.get(), iC);
82 LogWarning(
"Muon|RecoMuon|StandAloneMuonProducer")
83 <<
"No Trajectory builder associated with " << typeOfBuilder
84 <<
". Falling down to the default (StandAloneMuonTrajectoryBuilder)";
86 std::make_unique<StandAloneMuonTrajectoryBuilder>(trajectoryBuilderParameters, theService.get(), iC);
89 std::make_unique<MuonTrackFinder>(
std::move(trajectoryBuilder),
90 std::make_unique<MuonTrackLoader>(trackLoaderParameters, iC, theService.get()),
91 std::make_unique<MuonTrajectoryCleaner>(
true),
94 produces<reco::TrackCollection>();
95 produces<reco::TrackCollection>(
"UpdatedAtVtx");
96 produces<TrackingRecHitCollection>();
97 produces<reco::TrackExtraCollection>();
98 produces<reco::TrackToTrackMap>();
100 produces<std::vector<Trajectory>>();
101 produces<TrajTrackAssociationCollection>();
103 produces<edm::AssociationMap<edm::OneToMany<std::vector<L2MuonTrajectorySeed>, std::vector<L2MuonTrajectorySeed>>>>();
108 LogTrace(
"Muon|RecoMuon|L2eMuonProducer") <<
"L2MuonProducer destructor called" << endl;
119 LogTrace(
metname) <<
"Taking the seeds: " << theSeedCollectionLabel.label() << endl;
121 event.getByToken(seedsToken,
seeds);
124 theService->update(eventSetup);
128 theTrackFinder->reconstruct(
seeds,
event, eventSetup);
131 <<
"================================" << endl
139 psd0.
addUntracked<std::vector<std::string>>(
"Propagators",
141 "hltESPFastSteppingHelixPropagatorAny"
142 "hltESPFastSteppingHelixPropagatorOpposite",
144 psd0.
add<
bool>(
"RPCLayers",
true);
152 psd0.
add<
std::string>(
"Fitter",
"hltESPKFFittingSmootherForL2Muon");
153 psd0.
add<
std::string>(
"MuonRecHitBuilder",
"hltESPMuonTransientTrackingRecHitBuilder");
154 psd0.
add<
unsigned int>(
"NMinRecHits", 2);
155 psd0.
add<
bool>(
"UseSubRecHits",
false);
156 psd0.
add<
std::string>(
"Propagator",
"hltESPFastSteppingHelixPropagatorAny");
157 psd0.
add<
double>(
"RescaleError", 100.0);
163 psd0.
add<
bool>(
"DoRefit",
false);
164 psd0.
add<
std::string>(
"SeedPropagator",
"hltESPFastSteppingHelixPropagatorAny");
167 psd1.
add<
double>(
"NumberOfSigma", 3.0);
170 psd1.
add<
double>(
"MaxChi2", 1000.0);
173 psd2.
add<
double>(
"MaxChi2", 25.0);
174 psd2.
add<
double>(
"RescaleErrorFactor", 100.0);
175 psd2.
add<
int>(
"Granularity", 0);
176 psd2.
add<
bool>(
"ExcludeRPCFromFit",
false);
177 psd2.
add<
bool>(
"UseInvalidHits",
true);
178 psd2.
add<
bool>(
"RescaleError",
false);
181 psd1.
add<
bool>(
"EnableRPCMeasurement",
true);
183 psd1.
add<
bool>(
"EnableDTMeasurement",
true);
185 psd1.
add<
std::string>(
"Propagator",
"hltESPFastSteppingHelixPropagatorAny");
186 psd1.
add<
bool>(
"EnableGEMMeasurement",
false);
188 psd1.
add<
bool>(
"EnableME0Measurement",
false);
190 psd1.
add<
bool>(
"EnableCSCMeasurement",
true);
196 psd1.
add<
std::string>(
"Fitter",
"hltESPKFFittingSmootherForL2Muon");
197 psd1.
add<
std::string>(
"MuonRecHitBuilder",
"hltESPMuonTransientTrackingRecHitBuilder");
198 psd1.
add<
unsigned int>(
"NMinRecHits", 2);
199 psd1.
add<
bool>(
"UseSubRecHits",
false);
200 psd1.
add<
std::string>(
"Propagator",
"hltESPFastSteppingHelixPropagatorAny");
201 psd1.
add<
double>(
"RescaleError", 100.0);
204 psd0.
add<
bool>(
"DoBackwardFilter",
true);
208 psd1.
add<
double>(
"NumberOfSigma", 3.0);
212 psd1.
add<
double>(
"MaxChi2", 100.0);
215 psd2.
add<
double>(
"MaxChi2", 25.0);
216 psd2.
add<
double>(
"RescaleErrorFactor", 100.0);
217 psd2.
add<
int>(
"Granularity", 0);
218 psd2.
add<
bool>(
"ExcludeRPCFromFit",
false);
219 psd2.
add<
bool>(
"UseInvalidHits",
true);
220 psd2.
add<
bool>(
"RescaleError",
false);
223 psd1.
add<
bool>(
"EnableRPCMeasurement",
true);
225 psd1.
add<
bool>(
"EnableDTMeasurement",
true);
227 psd1.
add<
std::string>(
"Propagator",
"hltESPFastSteppingHelixPropagatorAny");
228 psd1.
add<
bool>(
"EnableGEMMeasurement",
false);
230 psd1.
add<
bool>(
"EnableME0Measurement",
false);
232 psd1.
add<
bool>(
"EnableCSCMeasurement",
true);
235 psd0.
add<
bool>(
"DoSeedRefit",
false);
238 desc.add<
bool>(
"DoSeedRefit",
false);
241 psd0.
add<
std::string>(
"Smoother",
"hltESPKFTrajectorySmootherForMuonTrackLoader");
242 psd0.
add<
bool>(
"DoSmoothing",
false);
246 psd1.
add<
double>(
"MaxChi2", 1000000.0);
247 psd1.
add<std::vector<double>>(
"BeamSpotPosition",
253 psd1.
add<
std::string>(
"Propagator",
"hltESPFastSteppingHelixPropagatorOpposite");
254 psd1.
add<std::vector<double>>(
"BeamSpotPositionErrors",
262 psd0.
add<
bool>(
"VertexConstraint",
true);
263 psd0.
add<
std::string>(
"TTRHBuilder",
"hltESPTTRHBWithTrackAngle");
267 descriptions.
add(
"L2MuonProducer",
desc);