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");
215 psd1.
add<std::vector<int>>(
"DYTthrs", {
219 psd1.
add<
double>(
"Chi2CutCSC", 150.0);
220 psd1.
add<
double>(
"Chi2CutDT", 10.0);
221 psd1.
add<
double>(
"Chi2CutGEM", 1.0);
222 psd1.
add<
bool>(
"RefitRPCHits",
true);
225 psd1.
add<
int>(
"TrackerSkipSystem", -1);
228 psd0.
add<
double>(
"tkTrajMaxChi2", 9999.0);
229 psd0.
add<
double>(
"ScaleTECxFactor", -1.0);
230 psd0.
add<
std::string>(
"TrackerRecHitBuilder",
"hltESPTTRHBWithTrackAngle");
232 psd0.
add<
std::string>(
"MuonRecHitBuilder",
"hltESPMuonTransientTrackingRecHitBuilder");
233 psd0.
add<
double>(
"tkTrajMaxDXYBeamSpot", 9999.0);
234 psd0.
add<
std::string>(
"TrackerPropagator",
"SteppingHelixPropagatorAny");
237 psd1.
add<
bool>(
"precise",
true);
238 psd1.
add<
bool>(
"Eta_fixed",
true);
239 psd1.
add<
double>(
"Eta_min", 0.1);
240 psd1.
add<
bool>(
"Z_fixed",
false);
242 psd1.
add<
int>(
"maxRegions", 2);
243 psd1.
add<
double>(
"Pt_min", 3.0);
244 psd1.
add<
double>(
"Rescale_Dz", 4.0);
245 psd1.
add<
double>(
"PhiR_UpperLimit_Par1", 0.6);
246 psd1.
add<
double>(
"PhiR_UpperLimit_Par2", 0.2);
248 psd1.
add<
bool>(
"Phi_fixed",
true);
250 psd1.
add<
double>(
"DeltaR", 0.025);
251 psd1.
add<
int>(
"OnDemand", -1);
252 psd1.
add<
double>(
"DeltaZ", 24.2);
253 psd1.
add<
double>(
"Rescale_phi", 3.0);
254 psd1.
add<
double>(
"Rescale_eta", 3.0);
255 psd1.
add<
double>(
"DeltaEta", 0.04);
256 psd1.
add<
double>(
"DeltaPhi", 0.15);
257 psd1.
add<
double>(
"Phi_min", 0.1);
258 psd1.
add<
bool>(
"UseVertex",
false);
259 psd1.
add<
double>(
"EtaR_UpperLimit_Par1", 0.25);
260 psd1.
add<
double>(
"EtaR_UpperLimit_Par2", 0.15);
262 psd1.
add<
double>(
"EscapePt", 3.0);
263 psd1.
add<
bool>(
"Pt_fixed",
false);
266 psd0.
add<
bool>(
"RefitRPCHits",
true);
267 psd0.
add<
double>(
"PCut", 2.5);
270 psd1.
add<
bool>(
"DoPredictionsOnly",
false);
272 psd1.
add<
std::string>(
"TrackerRecHitBuilder",
"hltESPTTRHBWithTrackAngle");
273 psd1.
add<
std::string>(
"Smoother",
"hltESPKFTrajectorySmootherForMuonTrackLoader");
274 psd1.
add<
std::string>(
"MuonRecHitBuilder",
"hltESPMuonTransientTrackingRecHitBuilder");
276 psd1.
add<
bool>(
"RefitRPCHits",
true);
282 psd1.
add<
double>(
"Quality_3", 7.0);
283 psd1.
add<
double>(
"DeltaRCut_1", 0.1);
284 psd1.
add<
double>(
"MinP", 2.5);
285 psd1.
add<
double>(
"MinPt", 1.0);
286 psd1.
add<
double>(
"Quality_2", 15.0);
287 psd1.
add<
double>(
"Pt_threshold2", 999999999.0);
288 psd1.
add<
double>(
"LocChi2Cut", 0.001);
289 psd1.
add<
double>(
"Eta_threshold", 1.2);
290 psd1.
add<
double>(
"Pt_threshold1", 0.0);
291 psd1.
add<
double>(
"Chi2Cut_1", 50.0);
292 psd1.
add<
double>(
"Quality_1", 20.0);
293 psd1.
add<
double>(
"Chi2Cut_3", 200.0);
294 psd1.
add<
double>(
"DeltaRCut_3", 1.0);
295 psd1.
add<
double>(
"DeltaRCut_2", 0.2);
296 psd1.
add<
double>(
"DeltaDCut_1", 40.0);
297 psd1.
add<
double>(
"DeltaDCut_2", 10.0);
298 psd1.
add<
double>(
"DeltaDCut_3", 15.0);
299 psd1.
add<
double>(
"Chi2Cut_2", 50.0);
303 psd0.
add<
double>(
"PtCut", 1.0);
304 psd0.
add<
bool>(
"matchToSeeds",
true);
308 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 std::string metname
key_type key() const
Accessor for product key.
virtual ~L3MuonProducer()
destructor
ParameterDescriptionBase * add(U const &iLabel, T const &value)
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
L3MuonProducer(const edm::ParameterSet &)
constructor with config
void add(std::string const &label, ParameterSetDescription const &psetDescription)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
virtual void produce(edm::Event &, const edm::EventSetup &)
reconstruct muons
ParameterSet const & parameterSet(Provenance const &provenance)