28 m_disableAllWeights(false),
29 m_constraintcutoff(9.),
37 declareProperty(
"disableAllWeights", m_disableAllWeights);
38 declareProperty(
"constrainttemp", m_constrainttemp);
39 declareProperty(
"constraintcutoff", m_constraintcutoff);
40 declareProperty(
"UsePt", m_usePt);
41 declareProperty(
"ExpPt", m_expPt);
42 declareProperty(
"UseLogPt", m_useLogPt);
43 declareProperty(
"MinPt", m_minPt);
44 declareProperty(
"CacheWeights", m_cacheWeights);
57 return StatusCode::FAILURE;
66 ATH_MSG_FATAL(
"At most one of Pt and LogPt weighting may be selected");
67 return StatusCode::FAILURE;
71 return StatusCode::SUCCESS;
77 return StatusCode::SUCCESS;
84 std::vector<const TrackParameters*> perigeeList;
86 std::vector<const Trk::Track*>::const_iterator
begin=VectorTrk.begin();
87 std::vector<const Trk::Track*>::const_iterator
end=VectorTrk.end();
89 for (std::vector<const Trk::Track*>::const_iterator iter=
begin;
92 if (std::isnan((*iter)->perigeeParameters()->parameters()[
Trk::d0]))
96 perigeeList.push_back((*iter)->perigeeParameters());
100 return findSeed(perigeeList,constraint);
108 std::vector<Trk::DoubleAndWeight> ZPositions;
116 if ( !ZPositions.empty() )
119 ATH_MSG_DEBUG(
"Resulting mean Z position found: " << ZResult);
123 ATH_MSG_DEBUG(
"No tracks with sufficient weight; return z position = 0");
135 std::vector<Trk::DoubleAndWeight>
139 std::vector<Trk::DoubleAndWeight> ZPositions;
146 ATH_MSG_WARNING(
"Neutrals not supported for seeding. Rejecting track...");
150 std::pair<double, double> z0AndWeight =
153 " with weight " << z0AndWeight.second);
155 if (z0AndWeight.second >= 0.01)
157 ZPositions.push_back(z0AndWeight);
165 std::vector<Trk::DoubleAndWeight>
169 const EventContext& ctx = Gaudi::Hive::currentContext();
170 Cache& cache = *m_cache;
174 constraintkey.x() = constraint->
position().x();
175 constraintkey.y() = constraint->
position().y();
182 std::vector<Trk::DoubleAndWeight> ZPositions;
184 std::lock_guard<std::mutex> lock (cache.
m_mutex);
185 if (ctx.evt() != cache.
m_evt) {
194 ATH_MSG_WARNING(
"Neutrals not supported for seeding. Rejecting track...");
203 " with weight " <<
it->second.second);
206 if (
it->second.second >= 0.01)
208 ZPositions.push_back (
it->second);
219 std::pair<double, double>
226 std::unique_ptr<const Trk::ImpactParametersAndSigma> ipas;
227 if (constraint !=
nullptr && constraint->covariancePosition()(0,0)!=0) {
228 ipas = std::unique_ptr<const Trk::ImpactParametersAndSigma> (
m_IPEstimator->estimate (&iTrk, constraint));
231 std::pair<double, double> z0AndWeight;
232 if (ipas !=
nullptr && ipas->
sigmad0 > 0)
234 z0AndWeight.first = ipas->
IPz0 + constraint->
position().z();
243 z0AndWeight.second = 1.;
248 if (constraint !=
nullptr)
ATH_MSG_WARNING(
"Unable to compute impact parameter significance; setting IPWeight = 1");
249 z0AndWeight.first = iTrk.position()[
Trk::z];
250 z0AndWeight.second = 1.;
274 ATH_MSG_WARNING(
"Multi-seeding requested but seed finder not able to operate in that mode, returning no seeds");
275 return std::vector<Amg::Vector3D>(0);
283 ATH_MSG_WARNING(
"Multi-seeding requested but seed finder not able to operate in that mode, returning no seeds");
284 return std::vector<Amg::Vector3D>(0);