72 LogTrace(
"Muon|RecoMuon|L2MuonProducer") <<
"constructor called" << endl;
88 theService = std::make_unique<MuonServiceProxy>(serviceParameters, consumesCollector());
90 std::unique_ptr<MuonTrajectoryBuilder> trajectoryBuilder =
nullptr;
95 if (typeOfBuilder ==
"StandAloneMuonTrajectoryBuilder" || typeOfBuilder.empty())
97 std::make_unique<StandAloneMuonTrajectoryBuilder>(trajectoryBuilderParameters,
theService.get(), iC);
98 else if (typeOfBuilder ==
"Exhaustive")
100 std::make_unique<ExhaustiveMuonTrajectoryBuilder>(trajectoryBuilderParameters,
theService.get(), iC);
103 <<
"No Trajectory builder associated with " << typeOfBuilder
104 <<
". Falling down to the default (StandAloneMuonTrajectoryBuilder)";
106 std::make_unique<StandAloneMuonTrajectoryBuilder>(trajectoryBuilderParameters,
theService.get(), iC);
109 std::make_unique<MuonTrackFinder>(
std::move(trajectoryBuilder),
110 std::make_unique<MuonTrackLoader>(trackLoaderParameters, iC,
theService.get()),
111 std::make_unique<MuonTrajectoryCleaner>(
true),
114 produces<TrackingRecHitCollection>();
115 produces<reco::TrackExtraCollection>();
119 produces<reco::TrackCollection>();
120 produces<reco::TrackCollection>(
"UpdatedAtVtx");
121 produces<reco::TrackToTrackMap>();
123 produces<std::vector<Trajectory>>();
124 produces<TrajTrackAssociationCollection>();
126 produces<edm::AssociationMap<edm::OneToMany<std::vector<L2MuonTrajectorySeed>, std::vector<L2MuonTrajectorySeed>>>>();
131 LogTrace(
"Muon|RecoMuon|L2eMuonProducer") <<
"L2MuonProducer destructor called" << endl;
154 <<
"================================" << endl
162 psd0.
addUntracked<std::vector<std::string>>(
"Propagators",
164 "hltESPFastSteppingHelixPropagatorAny" 165 "hltESPFastSteppingHelixPropagatorOpposite",
167 psd0.
add<
bool>(
"RPCLayers",
true);
175 psd0.
add<
std::string>(
"Fitter",
"hltESPKFFittingSmootherForL2Muon");
176 psd0.
add<
std::string>(
"MuonRecHitBuilder",
"hltESPMuonTransientTrackingRecHitBuilder");
177 psd0.
add<
unsigned int>(
"NMinRecHits", 2);
178 psd0.
add<
bool>(
"UseSubRecHits",
false);
179 psd0.
add<
std::string>(
"Propagator",
"hltESPFastSteppingHelixPropagatorAny");
180 psd0.
add<
double>(
"RescaleError", 100.0);
186 psd0.
add<
bool>(
"DoRefit",
false);
187 psd0.
add<
std::string>(
"SeedPropagator",
"hltESPFastSteppingHelixPropagatorAny");
190 psd1.
add<
double>(
"NumberOfSigma", 3.0);
193 psd1.
add<
double>(
"MaxChi2", 1000.0);
196 psd2.
add<
double>(
"MaxChi2", 25.0);
197 psd2.
add<
double>(
"RescaleErrorFactor", 100.0);
198 psd2.
add<
int>(
"Granularity", 0);
199 psd2.
add<
bool>(
"ExcludeRPCFromFit",
false);
200 psd2.
add<
bool>(
"UseInvalidHits",
true);
201 psd2.
add<
bool>(
"RescaleError",
false);
204 psd1.
add<
bool>(
"EnableRPCMeasurement",
true);
206 psd1.
add<
bool>(
"EnableDTMeasurement",
true);
208 psd1.
add<
std::string>(
"Propagator",
"hltESPFastSteppingHelixPropagatorAny");
209 psd1.
add<
bool>(
"EnableGEMMeasurement",
false);
211 psd1.
add<
bool>(
"EnableME0Measurement",
false);
213 psd1.
add<
bool>(
"EnableCSCMeasurement",
true);
219 psd1.
add<
std::string>(
"Fitter",
"hltESPKFFittingSmootherForL2Muon");
220 psd1.
add<
std::string>(
"MuonRecHitBuilder",
"hltESPMuonTransientTrackingRecHitBuilder");
221 psd1.
add<
unsigned int>(
"NMinRecHits", 2);
222 psd1.
add<
bool>(
"UseSubRecHits",
false);
223 psd1.
add<
std::string>(
"Propagator",
"hltESPFastSteppingHelixPropagatorAny");
224 psd1.
add<
double>(
"RescaleError", 100.0);
227 psd0.
add<
bool>(
"DoBackwardFilter",
true);
231 psd1.
add<
double>(
"NumberOfSigma", 3.0);
235 psd1.
add<
double>(
"MaxChi2", 100.0);
238 psd2.
add<
double>(
"MaxChi2", 25.0);
239 psd2.
add<
double>(
"RescaleErrorFactor", 100.0);
240 psd2.
add<
int>(
"Granularity", 0);
241 psd2.
add<
bool>(
"ExcludeRPCFromFit",
false);
242 psd2.
add<
bool>(
"UseInvalidHits",
true);
243 psd2.
add<
bool>(
"RescaleError",
false);
246 psd1.
add<
bool>(
"EnableRPCMeasurement",
true);
248 psd1.
add<
bool>(
"EnableDTMeasurement",
true);
250 psd1.
add<
std::string>(
"Propagator",
"hltESPFastSteppingHelixPropagatorAny");
251 psd1.
add<
bool>(
"EnableGEMMeasurement",
false);
253 psd1.
add<
bool>(
"EnableME0Measurement",
false);
255 psd1.
add<
bool>(
"EnableCSCMeasurement",
true);
258 psd0.
add<
bool>(
"DoSeedRefit",
false);
261 desc.add<
bool>(
"DoSeedRefit",
false);
264 psd0.
add<
std::string>(
"Smoother",
"hltESPKFTrajectorySmootherForMuonTrackLoader");
265 psd0.
add<
bool>(
"DoSmoothing",
false);
269 psd1.
add<
double>(
"MaxChi2", 1000000.0);
270 psd1.
add<std::vector<double>>(
"BeamSpotPosition",
276 psd1.
add<
std::string>(
"Propagator",
"hltESPFastSteppingHelixPropagatorOpposite");
277 psd1.
add<std::vector<double>>(
"BeamSpotPositionErrors",
285 psd0.
add<
bool>(
"VertexConstraint",
true);
286 psd0.
add<
std::string>(
"TTRHBuilder",
"hltESPTTRHBWithTrackAngle");
290 descriptions.
add(
"L2MuonProducer",
desc);
T getParameter(std::string const &) const
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
std::unique_ptr< MuonServiceProxy > theService
the event setup proxy, it takes care the services update
const std::string metname
#define DEFINE_FWK_MODULE(type)
ParameterSet const & parameterSet(StableProvenance const &provenance, ProcessHistory const &history)
edm::EDGetTokenT< edm::View< TrajectorySeed > > seedsToken
void produce(edm::Event &, const edm::EventSetup &) override
reconstruct muons
edm::InputTag theSeedCollectionLabel
ParameterDescriptionBase * add(U const &iLabel, T const &value)
L2MuonProducer(const edm::ParameterSet &)
constructor with config
void add(std::string const &label, ParameterSetDescription const &psetDescription)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Log< level::Warning, false > LogWarning
~L2MuonProducer() override
destructor
std::unique_ptr< MuonTrackFinder > theTrackFinder
the track finder