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 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)