29 LogTrace(
"MultiRecHitCollector") <<
" Calling SimpleDAFHitCollector::recHits" << std::endl;
33 const vector<TrajectoryMeasurement>& meas = traj.
measurements();
34 unsigned int hitcounter = 1;
37 return vector<TrajectoryMeasurement>();
39 LogTrace(
"MultiRecHitCollector") <<
" Original measurements are:";
44 vector<TrajectoryMeasurement>
result;
45 for (vector<TrajectoryMeasurement>::const_reverse_iterator itrajmeas = meas.rbegin(); itrajmeas < meas.rend();
46 itrajmeas++, hitcounter++) {
47 DetId id = itrajmeas->recHit()->geographicalId();
51 std::vector<const TrackingRecHit*>
hits;
52 std::vector<std::unique_ptr<const TrackingRecHit>> hitsOwner;
61 LogTrace(
"MultiRecHitCollector") <<
"Something wrong! no valid TSOS found in current group ";
67 if (hitcounter == meas.size())
68 combtsos = predtsos_fwd;
69 else if (hitcounter == 1)
70 combtsos = predtsos_bwd;
72 combtsos =
combiner(predtsos_bwd, predtsos_fwd);
76 LogTrace(
"MultiRecHitCollector") <<
" Found " << tmps.
size() <<
" compatible measurements";
78 for (std::size_t
i = 0;
i != tmps.
size(); ++
i) {
79 DetId idtemps = tmps.
hits[
i]->geographicalId();
81 if (idtemps ==
id && tmps.
hits[
i]->hit()->isValid()) {
82 LogTrace(
"MultiRecHitCollector") <<
" This is valid with position " << tmps.
hits[
i]->hit()->localPosition()
83 <<
" and error " << tmps.
hits[
i]->hit()->localPositionError();
89 hits.push_back(hitsOwner.back().get());
98 LogTrace(
"MultiRecHitCollector") <<
" -> but no valid hits found in current group.";
108 if (!itrajmeas->recHit()->isValid())
110 <<
" -> " << hits.size() <<
" valid hits for this sensor. (IT WAS INVALID!!!)";
112 LogTrace(
"MultiRecHitCollector") <<
" -> " << hits.size() <<
" valid hits for this sensor.";
118 LogTrace(
"MultiRecHitCollector") <<
" No measurements found in current group.";
129 LogTrace(
"MultiRecHitCollector") <<
" Ending SimpleDAFHitCollector::recHits >> " << result.size();
136 if (result.size() > 2) {
139 for (vector<TrajectoryMeasurement>::const_iterator iimeas = result.begin(); iimeas != result.end(); ++iimeas) {
140 if (iimeas->recHit()->isValid())
147 return vector<TrajectoryMeasurement>();
151 return vector<TrajectoryMeasurement>();
void Debug(const std::vector< TrajectoryMeasurement > TM) const
const MeasurementEstimator * getEstimator() const
std::unique_ptr< TrackingRecHit > rightdimension(TrackingRecHit const &hit) const
virtual TransientTrackingRecHit::RecHitPointer buildMultiRecHit(const std::vector< const TrackingRecHit * > &rhv, const TrajectoryStateOnSurface &tsos, MeasurementDetWithData &measDet, float annealing=1.) const
virtual const GeomDet & geomDet() const
TrackingRecHit::ConstRecHitPointer makeShared(SiPixelRecHit const &hit, TrajectoryStateOnSurface const &tsos) const override
DataContainer const & measurements() const
std::shared_ptr< TrackingRecHit const > ConstRecHitPointer
const MeasurementDet & mdet() const
std::shared_ptr< TrackingRecHit const > RecHitPointer
virtual RecHitPointer build(const TrackingRecHit *p) const =0
build a tracking rechit from an existing rechit
TkClonerImpl theHitCloner
const TransientTrackingRecHitBuilder * getBuilder() const
bool measurements(const TrajectoryStateOnSurface &stateOnThisDet, const MeasurementEstimator &est, TempMeasurements &result) const
const SiTrackerMultiRecHitUpdator * theUpdator