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));
93 produces<reco::TrackCollection>();
94 produces<reco::TrackCollection>(
"UpdatedAtVtx");
95 produces<TrackingRecHitCollection>();
96 produces<reco::TrackExtraCollection>();
97 produces<reco::TrackToTrackMap>();
99 produces<std::vector<Trajectory>>();
100 produces<TrajTrackAssociationCollection>();
102 produces<edm::AssociationMap<edm::OneToMany<std::vector<L2MuonTrajectorySeed>, std::vector<L2MuonTrajectorySeed>>>>();
107 LogTrace(
"Muon|RecoMuon|L2eMuonProducer") <<
"L2MuonProducer destructor called" << endl;
118 LogTrace(
metname) <<
"Taking the seeds: " << theSeedCollectionLabel.label() << endl;
120 event.getByToken(seedsToken,
seeds);
123 theService->update(eventSetup);
127 theTrackFinder->reconstruct(
seeds,
event, eventSetup);
130 <<
"================================" << endl
138 psd0.
addUntracked<std::vector<std::string>>(
"Propagators",
140 "hltESPFastSteppingHelixPropagatorAny"
141 "hltESPFastSteppingHelixPropagatorOpposite",
143 psd0.
add<
bool>(
"RPCLayers",
true);
151 psd0.
add<
std::string>(
"Fitter",
"hltESPKFFittingSmootherForL2Muon");
152 psd0.
add<
std::string>(
"MuonRecHitBuilder",
"hltESPMuonTransientTrackingRecHitBuilder");
153 psd0.
add<
unsigned int>(
"NMinRecHits", 2);
154 psd0.
add<
bool>(
"UseSubRecHits",
false);
155 psd0.
add<
std::string>(
"Propagator",
"hltESPFastSteppingHelixPropagatorAny");
156 psd0.
add<
double>(
"RescaleError", 100.0);
162 psd0.
add<
bool>(
"DoRefit",
false);
163 psd0.
add<
std::string>(
"SeedPropagator",
"hltESPFastSteppingHelixPropagatorAny");
166 psd1.
add<
double>(
"NumberOfSigma", 3.0);
169 psd1.
add<
double>(
"MaxChi2", 1000.0);
172 psd2.
add<
double>(
"MaxChi2", 25.0);
173 psd2.
add<
double>(
"RescaleErrorFactor", 100.0);
174 psd2.
add<
int>(
"Granularity", 0);
175 psd2.
add<
bool>(
"ExcludeRPCFromFit",
false);
176 psd2.
add<
bool>(
"UseInvalidHits",
true);
177 psd2.
add<
bool>(
"RescaleError",
false);
180 psd1.
add<
bool>(
"EnableRPCMeasurement",
true);
182 psd1.
add<
bool>(
"EnableDTMeasurement",
true);
184 psd1.
add<
std::string>(
"Propagator",
"hltESPFastSteppingHelixPropagatorAny");
185 psd1.
add<
bool>(
"EnableGEMMeasurement",
false);
187 psd1.
add<
bool>(
"EnableME0Measurement",
false);
189 psd1.
add<
bool>(
"EnableCSCMeasurement",
true);
195 psd1.
add<
std::string>(
"Fitter",
"hltESPKFFittingSmootherForL2Muon");
196 psd1.
add<
std::string>(
"MuonRecHitBuilder",
"hltESPMuonTransientTrackingRecHitBuilder");
197 psd1.
add<
unsigned int>(
"NMinRecHits", 2);
198 psd1.
add<
bool>(
"UseSubRecHits",
false);
199 psd1.
add<
std::string>(
"Propagator",
"hltESPFastSteppingHelixPropagatorAny");
200 psd1.
add<
double>(
"RescaleError", 100.0);
203 psd0.
add<
bool>(
"DoBackwardFilter",
true);
207 psd1.
add<
double>(
"NumberOfSigma", 3.0);
211 psd1.
add<
double>(
"MaxChi2", 100.0);
214 psd2.
add<
double>(
"MaxChi2", 25.0);
215 psd2.
add<
double>(
"RescaleErrorFactor", 100.0);
216 psd2.
add<
int>(
"Granularity", 0);
217 psd2.
add<
bool>(
"ExcludeRPCFromFit",
false);
218 psd2.
add<
bool>(
"UseInvalidHits",
true);
219 psd2.
add<
bool>(
"RescaleError",
false);
222 psd1.
add<
bool>(
"EnableRPCMeasurement",
true);
224 psd1.
add<
bool>(
"EnableDTMeasurement",
true);
226 psd1.
add<
std::string>(
"Propagator",
"hltESPFastSteppingHelixPropagatorAny");
227 psd1.
add<
bool>(
"EnableGEMMeasurement",
false);
229 psd1.
add<
bool>(
"EnableME0Measurement",
false);
231 psd1.
add<
bool>(
"EnableCSCMeasurement",
true);
234 psd0.
add<
bool>(
"DoSeedRefit",
false);
237 desc.
add<
bool>(
"DoSeedRefit",
false);
240 psd0.
add<
std::string>(
"Smoother",
"hltESPKFTrajectorySmootherForMuonTrackLoader");
241 psd0.
add<
bool>(
"DoSmoothing",
false);
245 psd1.
add<
double>(
"MaxChi2", 1000000.0);
246 psd1.
add<std::vector<double>>(
"BeamSpotPosition",
252 psd1.
add<
std::string>(
"Propagator",
"hltESPFastSteppingHelixPropagatorOpposite");
253 psd1.
add<std::vector<double>>(
"BeamSpotPositionErrors",
261 psd0.
add<
bool>(
"VertexConstraint",
true);
262 psd0.
add<
std::string>(
"TTRHBuilder",
"hltESPTTRHBWithTrackAngle");
266 descriptions.
add(
"L2MuonProducer", desc);