144 auto out = std::make_unique<std::vector<TrajectorySeed>>();
158 int sizeBefore =
out->size();
159 if (
debug_)
LogDebug(
"OutsideInMuonSeeder") <<
"\n\n\nSeeding for muon of pt " << mu.
pt() <<
", eta " << mu.
eta() <<
", phi " << mu.
phi() << std::endl;
171 std::vector< BarrelDetLayer const* >
const & tob = measurementTracker->geometricSearchTracker()->tobLayers();
173 int iLayer = tob.size();
174 if(iLayer==0)
LogError(
"OutsideInMuonSeeder") <<
"TOB has no layers." ;
176 for (
auto it = tob.rbegin(), ed = tob.rend(); it != ed; ++it, --iLayer) {
177 if (
debug_)
LogDebug(
"OutsideInMuonSeeder") <<
"\n ==== Trying TOB " << iLayer <<
" ====" << std::endl;
179 *(pmuon_cloned.get()),
180 *(ptracker_cloned.get()),
181 *measurementTracker)) {
188 measurementTracker->geometricSearchTracker()->posTidLayers() : measurementTracker->geometricSearchTracker()->posTecLayers();
190 LogDebug(
"OutsideInMuonSeeder") <<
"\n We are using the Phase2 Outer Tracker (defined as a TID+). ";
192 LogTrace(
"OutsideInMuonSeeder") <<
"\n ==== TEC+ tot layers " << forwLayers.size() <<
" ====" << std::endl;
194 int iLayer = forwLayers.size();
195 if(iLayer==0)
LogError(
"OutsideInMuonSeeder") <<
"TEC+ has no layers." ;
197 if (
debug_)
LogDebug(
"OutsideInMuonSeeder") <<
"\n ==== Tot layers " << forwLayers.size() <<
" ====" << std::endl;
198 for (
auto it = forwLayers.rbegin(), ed = forwLayers.rend(); it != ed; ++it, --iLayer) {
199 if (
debug_)
LogDebug(
"OutsideInMuonSeeder") <<
"\n ==== Trying Forward Layer +" << +iLayer <<
" ====" << std::endl;
201 *(pmuon_cloned.get()),
202 *(ptracker_cloned.get()),
203 *measurementTracker)) {
210 measurementTracker->geometricSearchTracker()->negTidLayers() : measurementTracker->geometricSearchTracker()->negTecLayers();
212 LogDebug(
"OutsideInMuonSeeder") <<
"\n We are using the Phase2 Outer Tracker (defined as a TID-). ";
214 LogTrace(
"OutsideInMuonSeeder") <<
"\n ==== TEC- tot layers " << forwLayers.size() <<
" ====" << std::endl;
216 int iLayer = forwLayers.size();
217 if(iLayer==0)
LogError(
"OutsideInMuonSeeder") <<
"TEC- has no layers." ;
219 if (
debug_)
LogDebug(
"OutsideInMuonSeeder") <<
"\n ==== Tot layers " << forwLayers.size() <<
" ====" << std::endl;
220 for (
auto it = forwLayers.rbegin(), ed = forwLayers.rend(); it != ed; ++it, --iLayer) {
221 if (
debug_)
LogDebug(
"OutsideInMuonSeeder") <<
"\n ==== Trying Forward Layer -" << -iLayer <<
" ====" << std::endl;
223 *(pmuon_cloned.get()),
224 *(ptracker_cloned.get()),
225 *measurementTracker)) {
230 if (
debug_)
LogDebug(
"OutsideInMuonSeeder") <<
"Outcome of seeding for muon of pt " << mu.
pt() <<
", eta " << mu.
eta() <<
", phi " << mu.
phi() <<
": found " << (
out->size() - sizeBefore) <<
" seeds."<< std::endl;
virtual double pt() const final
transverse momentum
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
bool isNonnull() const
Checks for non-null.
virtual double eta() const final
momentum pseudorapidity
virtual TrackRef innerTrack() const
bool getByToken(EDGetToken token, Handle< PROD > &result) const
edm::ESHandle< Chi2MeasurementEstimatorBase > estimator_
edm::ESHandle< MagneticField > magfield_
edm::ESHandle< GlobalTrackingGeometry > geometry_
edm::ESHandle< Propagator > trackerPropagator_
edm::ESHandle< TrajectoryStateUpdator > updator_
int doLayer(const GeometricSearchDet &layer, const TrajectoryStateOnSurface &state, std::vector< TrajectorySeed > &out, const Propagator &muon_propagator, const Propagator &tracker_propagator, const MeasurementTrackerEvent &mte) const
bool isThere(GeomDetEnumerators::SubDetector subdet) const
virtual double phi() const final
momentum azimuthal angle
std::unique_ptr< Propagator > SetPropagationDirection(Propagator const &iprop, PropagationDirection dir)
std::string trackerPropagatorName_
double eta() const
pseudorapidity of momentum vector
bool debug_
Dump deug information.
std::string muonPropagatorName_
std::string estimatorName_
Abs< T >::type abs(const T &t)
bool isNull() const
Checks for null.
virtual TrackRef outerTrack() const
reference to Track reconstructed in the muon detector only
edm::ESHandle< Propagator > muonPropagator_
GlobalPoint position() const
int layersToTry_
How many layers to try.
StringCutObjectSelector< reco::Muon > selector_
Muon selection.
edm::EDGetTokenT< edm::View< reco::Muon > > src_
Labels for input collections.
void doDebug(const reco::Track &tk) const
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
edm::EDGetTokenT< MeasurementTrackerEvent > measurementTrackerTag_
Plane::PlanePointer dummyPlane_
Surface used to make a TSOS at the PCA to the beamline.
T const * product() const
bool fromVertex_
Do inside-out.