79 : theLayerMeasurements(nullptr),
80 theTrackTransformer(nullptr),
81 theRegionBuilder(nullptr),
83 theGlbRefitter(nullptr) {
175 if ((muonRecHits.size() > 1) &&
176 (muonRecHits.front()->globalPosition().mag() > muonRecHits.back()->globalPosition().mag())) {
180 for (
auto&& it : tkTrajs) {
182 LogTrace(
theCategory) <<
" Track p and pT " << it->trackerTrack()->p() <<
" " << it->trackerTrack()->pt();
183 if (it->trackerTrack()->p() <
thePCut || it->trackerTrack()->pt() <
thePtCut)
189 if (it->trackerTrack().isNonnull()) {
197 if (
std::abs(it->trackerTrack()->eta()) > 0.95 &&
std::abs(it->trackerTrack()->eta()) < 1.15 &&
198 it->trackerTrack()->pt() < 60) {
207 reverse(trackerRecHits.begin(), trackerRecHits.end());
213 if (it->trackerTrack()->seedRef().isAvailable())
214 tmpSeed = it->trackerTrack()->seedRef();
216 if (!innerTsos.isValid()) {
221 innerTsos.rescaleError(100.);
223 TC refitted0, refitted1;
224 std::unique_ptr<Trajectory> tkTrajectory;
227 if (!(it->trackerTrajectory() && it->trackerTrajectory()->isValid())) {
229 if (!refitted0.empty())
230 tkTrajectory = std::make_unique<Trajectory>(*(refitted0.begin()));
234 tkTrajectory = it->releaseTrackerTrajectory();
236 tkTrajectory->setSeedRef(tmpSeed);
240 allRecHits.insert(allRecHits.end(), muonRecHits.begin(), muonRecHits.end());
242 LogTrace(
theCategory) <<
" This track-sta refitted to " << refitted1.size() <<
" trajectories";
244 std::unique_ptr<Trajectory> glbTrajectory1;
245 if (!refitted1.empty())
246 glbTrajectory1 = std::make_unique<Trajectory>(*(refitted1.begin()));
250 glbTrajectory1->setSeedRef(tmpSeed);
252 if (glbTrajectory1 && tkTrajectory) {
253 refittedResult.emplace_back(std::make_unique<MuonCandidate>(
254 std::move(glbTrajectory1), it->muonTrack(), it->trackerTrack(),
std::move(tkTrajectory)));
258 if (it->trackerTrack()->seedRef().isAvailable())
259 tmpSeed = it->trackerTrack()->seedRef();
262 std::unique_ptr<Trajectory> tkTrajectory;
263 if (!(it->trackerTrajectory() && it->trackerTrajectory()->isValid())) {
265 if (!refitted0.empty()) {
266 tkTrajectory = std::make_unique<Trajectory>(*(refitted0.begin()));
270 tkTrajectory = it->releaseTrackerTrajectory();
271 std::unique_ptr<Trajectory> cpy;
273 tkTrajectory->setSeedRef(tmpSeed);
274 cpy = std::make_unique<Trajectory>(*tkTrajectory);
277 refittedResult.emplace_back(std::make_unique<MuonCandidate>(
284 std::unique_ptr<MuonCandidate> tmpCand;
287 for (
auto&&
cand : refittedResult) {
299 selectedResult.push_back(
std::move(tmpCand));
301 refittedResult.clear();
303 return selectedResult;
310 const TrackCand& staCand,
const std::vector<TrackCand>& tkTs) {
318 std::vector<TrackCand>
result;
320 double deltaR_max = 1.0;
322 for (
auto&& is : tkTs) {
324 static_cast<double>(regionOfInterest.
direction().
phi()),
330 if (deltaR_tmp < deltaR_max) {
332 result.push_back(tmpCand);
347 std::abs(region1->etaRange().max() - region1->etaRange().mean()));
352 region1->originRBound(),
353 region1->originZBound(),
355 region1->phiMargin());
364 if (
track.ndof() > 0 &&
track.chiSquared() > 0) {
376 for (
auto&& ir :
hits) {
377 if (!ir->isValid()) {
385 <<
" dimension = " << ir->dimension() <<
" " << ir->det()->geographicalId().det() <<
" "
386 << ir->det()->subDetector();
396 ConstRecHitContainer::const_iterator frontHit =
recHits.begin();
397 ConstRecHitContainer::const_iterator backHit =
recHits.end() - 1;
398 while (!(*frontHit)->isValid() && frontHit != backHit) {
401 while (!(*backHit)->isValid() && backHit != frontHit) {
405 double rFirst = (*frontHit)->globalPosition().mag();
406 double rLast = (*backHit)->globalPosition().mag();
410 else if (rFirst > rLast)
430 for (
auto&&
i :
all) {
451 ConstRecHitContainer::iterator lone_tec;
453 for (ConstRecHitContainer::iterator
i =
all.begin();
i !=
all.end();
i++) {
454 if (!(*i)->isValid())
462 if ((
i + 1) !=
all.end() && (*(
i + 1))->isValid() &&
474 int hitDet = (*lone_tec)->hit()->geographicalId().det();
475 int hitSubDet = (*lone_tec)->hit()->geographicalId().subdetId();
481 if ((*lone_tec)->detUnit()) {
482 const StripTopology*
topology = dynamic_cast<const StripTopology*>(&(*lone_tec)->detUnit()->topology());
488 LocalError scaledError(rotError.
xx() * scl_x * scl_x, 0, rotError.
yy() * scl_y * scl_y);
514 auto hitCloner = tkbuilder->cloner();
516 if ((*hit)->isValid()) {
517 DetId recoid = (*hit)->geographicalId();
519 if (!(*hit)->hasPositionAndError()) {
526 <<
"Could not get a tsos on the hit surface. We will miss a tracking hit.";
530 auto h = (**hit).cloneForFit(*tkbuilder->geometry()->idToDet((**hit).geographicalId()));
531 result.emplace_back(hitCloner.makeShared(
h, predTsos));
533 result.push_back((*hit)->cloneSH());
536 if ((*hit)->geographicalId().subdetId() == 3 && !
theRPCInTheFit) {